{"id":"4886e27f55ed1bcb357163c14051c00d","_format":"hh-sol-build-info-1","solcVersion":"0.8.23","solcLongVersion":"0.8.23+commit.f704f362","input":{"language":"Solidity","sources":{"contracts/interfaces/ISwapERC20.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity 0.8.23;\n\ninterface ISwapERC20 {\n  struct OrderERC20 {\n    uint256 nonce; // Unique number per signatory per order\n    uint256 expiry; // Expiry time (seconds since unix epoch)\n    address signerWallet; // Party to the swap that sets terms\n    address signerToken; // ERC20 token address transferred from signer\n    uint256 signerAmount; // Amount of tokens transferred from signer\n    address senderWallet; // Party to the swap that accepts terms\n    address senderToken; // ERC20 token address transferred from sender\n    uint256 senderAmount; // Amount of tokens transferred from sender\n    uint8 v; // ECDSA\n    bytes32 r;\n    bytes32 s;\n  }\n\n  event SwapERC20(uint256 indexed nonce, address indexed signerWallet);\n\n  event Cancel(uint256 indexed nonce, address indexed signerWallet);\n  event Authorize(address indexed signer, address indexed signerWallet);\n  event Revoke(address indexed signer, address indexed signerWallet);\n  event SetProtocolFee(uint256 protocolFee);\n  event SetProtocolFeeLight(uint256 protocolFeeLight);\n  event SetProtocolFeeWallet(address indexed feeWallet);\n  event SetBonusScale(uint256 bonusScale);\n  event SetBonusMax(uint256 bonusMax);\n  event SetStaking(address indexed staking);\n\n  error MaxTooHigh();\n  error NonceAlreadyUsed(uint256);\n  error OrderExpired();\n  error ProtocolFeeInvalid();\n  error ProtocolFeeLightInvalid();\n  error ProtocolFeeWalletInvalid();\n  error ScaleTooHigh();\n  error SignatoryInvalid();\n  error SignatureInvalid();\n  error StakingInvalid();\n  error TransferFromFailed();\n\n  function swap(\n    address recipient,\n    uint256 nonce,\n    uint256 expiry,\n    address signerWallet,\n    address signerToken,\n    uint256 signerAmount,\n    address senderToken,\n    uint256 senderAmount,\n    uint8 v,\n    bytes32 r,\n    bytes32 s\n  ) external;\n\n  function swapAnySender(\n    address recipient,\n    uint256 nonce,\n    uint256 expiry,\n    address signerWallet,\n    address signerToken,\n    uint256 signerAmount,\n    address senderToken,\n    uint256 senderAmount,\n    uint8 v,\n    bytes32 r,\n    bytes32 s\n  ) external;\n\n  function swapLight(\n    uint256 nonce,\n    uint256 expiry,\n    address signerWallet,\n    address signerToken,\n    uint256 signerAmount,\n    address senderToken,\n    uint256 senderAmount,\n    uint8 v,\n    bytes32 r,\n    bytes32 s\n  ) external;\n\n  function authorize(address sender) external;\n\n  function revoke() external;\n\n  function cancel(uint256[] calldata nonces) external;\n\n  function check(\n    address senderWallet,\n    uint256 nonce,\n    uint256 expiry,\n    address signerWallet,\n    address signerToken,\n    uint256 signerAmount,\n    address senderToken,\n    uint256 senderAmount,\n    uint8 v,\n    bytes32 r,\n    bytes32 s\n  ) external view returns (bytes32[] memory);\n\n  function nonceUsed(address, uint256) external view returns (bool);\n\n  function authorized(address) external view returns (address);\n\n  function calculateProtocolFee(\n    address,\n    uint256\n  ) external view returns (uint256);\n}\n"},"contracts/SwapERC20.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity 0.8.23;\n\nimport { ECDSA } from \"solady/src/utils/ECDSA.sol\";\nimport { EIP712 } from \"solady/src/utils/EIP712.sol\";\nimport { ERC20 } from \"solady/src/tokens/ERC20.sol\";\nimport { Ownable } from \"solady/src/auth/Ownable.sol\";\nimport { SafeTransferLib } from \"solady/src/utils/SafeTransferLib.sol\";\nimport { SignatureCheckerLib } from \"solady/src/utils/SignatureCheckerLib.sol\";\n\nimport \"./interfaces/ISwapERC20.sol\";\n\n/**\n * @title AirSwap: Atomic ERC20 Token Swap\n * @notice https://www.airswap.io/\n */\ncontract SwapERC20 is ISwapERC20, Ownable, EIP712 {\n  bytes32 public immutable DOMAIN_SEPARATOR;\n\n  bytes32 public constant ORDER_TYPEHASH =\n    keccak256(\n      abi.encodePacked(\n        \"OrderERC20(uint256 nonce,uint256 expiry,address signerWallet,address signerToken,uint256 signerAmount,\",\n        \"uint256 protocolFee,address senderWallet,address senderToken,uint256 senderAmount)\"\n      )\n    );\n\n  uint256 public constant FEE_DIVISOR = 10000;\n  uint256 private constant MAX_ERROR_COUNT = 7;\n  uint256 private constant MAX_MAX = 100;\n  uint256 private constant MAX_SCALE = 77;\n\n  /**\n   * @notice Double mapping of signers to nonce groups to nonce states\n   * @dev The nonce group is computed as nonce / 256, so each group of 256 sequential nonces uses the same key\n   * @dev The nonce states are encoded as 256 bits, for each nonce in the group 0 means available and 1 means used\n   */\n  mapping(address => mapping(uint256 => uint256)) private _nonceGroups;\n\n  // Mapping of signer to authorized signatory\n  mapping(address => address) public override authorized;\n\n  uint256 public protocolFee;\n  uint256 public protocolFeeLight;\n  address public protocolFeeWallet;\n  uint256 public bonusScale;\n  uint256 public bonusMax;\n  address public stakingToken;\n\n  /**\n   * @notice SwapERC20 constructor\n   * @dev Sets domain and version for EIP712 signatures\n   * @param _protocolFee uin256 protocol fee to be assessed on swaps\n   * @param _protocolFeeWallet address destination for protocol fees\n   * @param _bonusScale uin256 scale factor for bonus\n   * @param _bonusMax uint256 max bonus percentage\n   */\n  constructor(\n    uint256 _protocolFee,\n    uint256 _protocolFeeLight,\n    address _protocolFeeWallet,\n    uint256 _bonusScale,\n    uint256 _bonusMax\n  ) {\n    if (_protocolFee >= FEE_DIVISOR) revert ProtocolFeeInvalid();\n    if (_protocolFeeLight >= FEE_DIVISOR) revert ProtocolFeeLightInvalid();\n    if (_protocolFeeWallet == address(0)) revert ProtocolFeeWalletInvalid();\n    if (_bonusMax > MAX_MAX) revert MaxTooHigh();\n    if (_bonusScale > MAX_SCALE) revert ScaleTooHigh();\n\n    _initializeOwner(msg.sender);\n\n    DOMAIN_SEPARATOR = _domainSeparator();\n\n    protocolFee = _protocolFee;\n    protocolFeeLight = _protocolFeeLight;\n    protocolFeeWallet = _protocolFeeWallet;\n    bonusMax = _bonusMax;\n    bonusScale = _bonusScale;\n  }\n\n  /**\n   * @notice Return EIP712 domain values\n   * @return name EIP712 domain name\n   * @return version EIP712 domain version\n   */\n  function _domainNameAndVersion()\n    internal\n    pure\n    override\n    returns (string memory name, string memory version)\n  {\n    name = \"SWAP_ERC20\";\n    version = \"4.3\";\n  }\n\n  /**\n   * @notice Atomic ERC20 Swap\n   * @param recipient address Wallet to receive sender proceeds\n   * @param nonce uint256 Unique and should be sequential\n   * @param expiry uint256 Expiry in seconds since 1 January 1970\n   * @param signerWallet address Wallet of the signer\n   * @param signerToken address ERC20 token transferred from the signer\n   * @param signerAmount uint256 Amount transferred from the signer\n   * @param senderToken address ERC20 token transferred from the sender\n   * @param senderAmount uint256 Amount transferred from the sender\n   * @param v uint8 \"v\" value of the ECDSA signature\n   * @param r bytes32 \"r\" value of the ECDSA signature\n   * @param s bytes32 \"s\" value of the ECDSA signature\n   */\n  function swap(\n    address recipient,\n    uint256 nonce,\n    uint256 expiry,\n    address signerWallet,\n    address signerToken,\n    uint256 signerAmount,\n    address senderToken,\n    uint256 senderAmount,\n    uint8 v,\n    bytes32 r,\n    bytes32 s\n  ) external override {\n    // Ensure the order is valid\n    _check(\n      nonce,\n      expiry,\n      signerWallet,\n      signerToken,\n      signerAmount,\n      msg.sender,\n      senderToken,\n      senderAmount,\n      v,\n      r,\n      s\n    );\n\n    // Transfer token from sender to signer\n    SafeTransferLib.safeTransferFrom(\n      senderToken,\n      msg.sender,\n      signerWallet,\n      senderAmount\n    );\n\n    // Transfer token from signer to recipient\n    SafeTransferLib.safeTransferFrom(\n      signerToken,\n      signerWallet,\n      recipient,\n      signerAmount\n    );\n\n    // Calculate and transfer protocol fee\n    _transferProtocolFee(signerToken, signerWallet, signerAmount);\n\n    // Emit event\n    emit SwapERC20(nonce, signerWallet);\n  }\n\n  /**\n   * @notice Atomic ERC20 Swap for Any Sender\n   * @param recipient address Wallet to receive sender proceeds\n   * @param nonce uint256 Unique and should be sequential\n   * @param expiry uint256 Expiry in seconds since 1 January 1970\n   * @param signerWallet address Wallet of the signer\n   * @param signerToken address ERC20 token transferred from the signer\n   * @param signerAmount uint256 Amount transferred from the signer\n   * @param senderToken address ERC20 token transferred from the sender\n   * @param senderAmount uint256 Amount transferred from the sender\n   * @param v uint8 \"v\" value of the ECDSA signature\n   * @param r bytes32 \"r\" value of the ECDSA signature\n   * @param s bytes32 \"s\" value of the ECDSA signature\n   */\n  function swapAnySender(\n    address recipient,\n    uint256 nonce,\n    uint256 expiry,\n    address signerWallet,\n    address signerToken,\n    uint256 signerAmount,\n    address senderToken,\n    uint256 senderAmount,\n    uint8 v,\n    bytes32 r,\n    bytes32 s\n  ) external override {\n    // Ensure the order is valid\n    _check(\n      nonce,\n      expiry,\n      signerWallet,\n      signerToken,\n      signerAmount,\n      address(0),\n      senderToken,\n      senderAmount,\n      v,\n      r,\n      s\n    );\n\n    // Transfer token from sender to signer\n    SafeTransferLib.safeTransferFrom(\n      senderToken,\n      msg.sender,\n      signerWallet,\n      senderAmount\n    );\n\n    // Transfer token from signer to recipient\n    SafeTransferLib.safeTransferFrom(\n      signerToken,\n      signerWallet,\n      recipient,\n      signerAmount\n    );\n\n    // Calculate and transfer protocol fee\n    _transferProtocolFee(signerToken, signerWallet, signerAmount);\n\n    // Emit event\n    emit SwapERC20(nonce, signerWallet);\n  }\n\n  /**\n   * @notice Swap Atomic ERC20 Swap (Minimal Gas)\n   * @dev No transfer checks. Only use with known tokens.\n   * @param nonce uint256 Unique and should be sequential\n   * @param expiry uint256 Expiry in seconds since 1 January 1970\n   * @param signerWallet address Wallet of the signer\n   * @param signerToken address ERC20 token transferred from the signer\n   * @param signerAmount uint256 Amount transferred from the signer\n   * @param senderToken address ERC20 token transferred from the sender\n   * @param senderAmount uint256 Amount transferred from the sender\n   * @param v uint8 \"v\" value of the ECDSA signature\n   * @param r bytes32 \"r\" value of the ECDSA signature\n   * @param s bytes32 \"s\" value of the ECDSA signature\n   */\n  function swapLight(\n    uint256 nonce,\n    uint256 expiry,\n    address signerWallet,\n    address signerToken,\n    uint256 signerAmount,\n    address senderToken,\n    uint256 senderAmount,\n    uint8 v,\n    bytes32 r,\n    bytes32 s\n  ) external override {\n    // Ensure the expiry is not passed\n    if (expiry <= block.timestamp) revert OrderExpired();\n\n    // Recover the signatory from the hash and signature\n    address signatory = ECDSA.tryRecover(\n      _hashTypedData(\n        keccak256(\n          abi.encode(\n            ORDER_TYPEHASH,\n            nonce,\n            expiry,\n            signerWallet,\n            signerToken,\n            signerAmount,\n            protocolFeeLight,\n            msg.sender,\n            senderToken,\n            senderAmount\n          )\n        )\n      ),\n      v,\n      r,\n      s\n    );\n    // Ensure the signatory is not null\n    if (signatory == address(0)) revert SignatureInvalid();\n\n    // Ensure the nonce is not yet used and if not mark it used\n    if (!_markNonceAsUsed(signatory, nonce)) revert NonceAlreadyUsed(nonce);\n\n    // Ensure signatory is authorized to sign\n    if (authorized[signerWallet] != address(0)) {\n      // If one is set by signer wallet, signatory must be authorized\n      if (signatory != authorized[signerWallet]) revert SignatureInvalid();\n    } else {\n      // Otherwise, signatory must be signer wallet\n      if (signatory != signerWallet) revert SignatureInvalid();\n    }\n\n    // Transfer token from sender to signer\n    SafeTransferLib.safeTransferFrom(\n      senderToken,\n      msg.sender,\n      signerWallet,\n      senderAmount\n    );\n\n    // Transfer token from signer to sender\n    SafeTransferLib.safeTransferFrom(\n      signerToken,\n      signerWallet,\n      msg.sender,\n      signerAmount\n    );\n\n    // Transfer protocol fee from signer to fee wallet\n    SafeTransferLib.safeTransferFrom(\n      signerToken,\n      signerWallet,\n      protocolFeeWallet,\n      (signerAmount * protocolFeeLight) / FEE_DIVISOR\n    );\n\n    // Emit event\n    emit SwapERC20(nonce, signerWallet);\n  }\n\n  /**\n   * @notice Set the protocol fee\n   * @param _protocolFee uint256 Value of the fee in basis points\n   */\n  function setProtocolFee(uint256 _protocolFee) external onlyOwner {\n    // Ensure the fee is less than divisor\n    if (_protocolFee >= FEE_DIVISOR) revert ProtocolFeeInvalid();\n    protocolFee = _protocolFee;\n    emit SetProtocolFee(_protocolFee);\n  }\n\n  /**\n   * @notice Set the light protocol fee\n   * @param _protocolFeeLight uint256 Value of the fee in basis points\n   */\n  function setProtocolFeeLight(uint256 _protocolFeeLight) external onlyOwner {\n    // Ensure the fee is less than divisor\n    if (_protocolFeeLight >= FEE_DIVISOR) revert ProtocolFeeLightInvalid();\n    protocolFeeLight = _protocolFeeLight;\n    emit SetProtocolFeeLight(_protocolFeeLight);\n  }\n\n  /**\n   * @notice Set the protocol fee wallet\n   * @param _protocolFeeWallet address Wallet to transfer fee to\n   */\n  function setProtocolFeeWallet(address _protocolFeeWallet) external onlyOwner {\n    // Ensure the new fee wallet is not null\n    if (_protocolFeeWallet == address(0)) revert ProtocolFeeWalletInvalid();\n    protocolFeeWallet = _protocolFeeWallet;\n    emit SetProtocolFeeWallet(_protocolFeeWallet);\n  }\n\n  /**\n   * @notice Set staking bonus max\n   * @dev Only owner\n   * @param _bonusMax uint256\n   */\n  function setBonusMax(uint256 _bonusMax) external onlyOwner {\n    if (_bonusMax > MAX_MAX) revert MaxTooHigh();\n    bonusMax = _bonusMax;\n    emit SetBonusMax(_bonusMax);\n  }\n\n  /**\n   * @notice Set staking bonus scale\n   * @dev Only owner\n   * @param _bonusScale uint256\n   */\n  function setBonusScale(uint256 _bonusScale) external onlyOwner {\n    if (_bonusScale > MAX_SCALE) revert ScaleTooHigh();\n    bonusScale = _bonusScale;\n    emit SetBonusScale(_bonusScale);\n  }\n\n  /**\n   * @notice Set staking token\n   * @param _stakingToken address Token to check balances on\n   */\n  function setStaking(address _stakingToken) external onlyOwner {\n    // Ensure the new staking token is not null\n    if (_stakingToken == address(0)) revert StakingInvalid();\n    stakingToken = _stakingToken;\n    emit SetStaking(_stakingToken);\n  }\n\n  /**\n   * @notice Authorize a signatory\n   * @param signatory address Wallet of the signatory to authorize\n   * @dev Emits an Authorize event\n   */\n  function authorize(address signatory) external override {\n    if (signatory == address(0)) revert SignatoryInvalid();\n    authorized[msg.sender] = signatory;\n    emit Authorize(signatory, msg.sender);\n  }\n\n  /**\n   * @notice Revoke the signatory\n   * @dev Emits a Revoke event\n   */\n  function revoke() external override {\n    address tmp = authorized[msg.sender];\n    delete authorized[msg.sender];\n    emit Revoke(tmp, msg.sender);\n  }\n\n  /**\n   * @notice Cancel one or more nonces\n   * @dev Cancelled nonces are marked as used\n   * @dev Emits a Cancel event\n   * @dev Out of gas may occur in arrays of length > 400\n   * @param nonces uint256[] List of nonces to cancel\n   */\n  function cancel(uint256[] calldata nonces) external override {\n    for (uint256 i; i < nonces.length; ) {\n      uint256 nonce = nonces[i];\n      if (_markNonceAsUsed(msg.sender, nonce)) {\n        emit Cancel(nonce, msg.sender);\n      }\n      unchecked {\n        ++i;\n      }\n    }\n  }\n\n  /**\n   * @notice Checks an order for errors\n   * @param senderWallet address Wallet that would send the order\n   * @param nonce uint256 Unique and should be sequential\n   * @param expiry uint256 Expiry in seconds since 1 January 1970\n   * @param signerWallet address Wallet of the signer\n   * @param signerToken address ERC20 token transferred from the signer\n   * @param signerAmount uint256 Amount transferred from the signer\n   * @param senderToken address ERC20 token transferred from the sender\n   * @param senderAmount uint256 Amount transferred from the sender\n   * @param v uint8 \"v\" value of the ECDSA signature\n   * @param r bytes32 \"r\" value of the ECDSA signature\n   * @param s bytes32 \"s\" value of the ECDSA signature\n   * @return bytes32[] errors\n   */\n  function check(\n    address senderWallet,\n    uint256 nonce,\n    uint256 expiry,\n    address signerWallet,\n    address signerToken,\n    uint256 signerAmount,\n    address senderToken,\n    uint256 senderAmount,\n    uint8 v,\n    bytes32 r,\n    bytes32 s\n  ) external view returns (bytes32[] memory) {\n    bytes32[] memory errors = new bytes32[](MAX_ERROR_COUNT);\n    uint256 count;\n\n    OrderERC20 memory order;\n    order.nonce = nonce;\n    order.expiry = expiry;\n    order.signerWallet = signerWallet;\n    order.signerToken = signerToken;\n    order.signerAmount = signerAmount;\n    order.senderToken = senderToken;\n    order.senderAmount = senderAmount;\n    order.v = v;\n    order.r = r;\n    order.s = s;\n    order.senderWallet = senderWallet;\n\n    // Validate as the authorized signatory if set\n    address signatory = order.signerWallet;\n    if (authorized[signatory] != address(0)) {\n      signatory = authorized[signatory];\n    }\n\n    if (\n      !SignatureCheckerLib.isValidSignatureNow(\n        signatory,\n        _getOrderHash(\n          order.nonce,\n          order.expiry,\n          order.signerWallet,\n          order.signerToken,\n          order.signerAmount,\n          order.senderWallet,\n          order.senderToken,\n          order.senderAmount\n        ),\n        abi.encodePacked(r, s, v)\n      )\n    ) {\n      errors[count++] = \"SignatureInvalid\";\n    } else if (nonceUsed(signatory, order.nonce)) {\n      errors[count++] = \"NonceAlreadyUsed\";\n    }\n\n    if (order.expiry < block.timestamp) {\n      errors[count++] = \"OrderExpired\";\n    }\n\n    if (order.senderWallet != address(0)) {\n      uint256 senderBalance = ERC20(order.senderToken).balanceOf(\n        order.senderWallet\n      );\n\n      uint256 senderAllowance = ERC20(order.senderToken).allowance(\n        order.senderWallet,\n        address(this)\n      );\n\n      if (senderAllowance < order.senderAmount) {\n        errors[count++] = \"SenderAllowanceLow\";\n      }\n\n      if (senderBalance < order.senderAmount) {\n        errors[count++] = \"SenderBalanceLow\";\n      }\n    }\n\n    uint256 signerBalance = ERC20(order.signerToken).balanceOf(\n      order.signerWallet\n    );\n\n    uint256 signerAllowance = ERC20(order.signerToken).allowance(\n      order.signerWallet,\n      address(this)\n    );\n\n    uint256 signerFeeAmount = (order.signerAmount * protocolFee) / FEE_DIVISOR;\n\n    if (signerAllowance < order.signerAmount + signerFeeAmount) {\n      errors[count++] = \"SignerAllowanceLow\";\n    }\n\n    if (signerBalance < order.signerAmount + signerFeeAmount) {\n      errors[count++] = \"SignerBalanceLow\";\n    }\n\n    // Truncate errors array to actual count\n    if (count != errors.length) {\n      assembly {\n        mstore(errors, count)\n      }\n    }\n\n    return errors;\n  }\n\n  /**\n   * @notice Calculates bonus from staking balance\n   * @param stakingBalance uint256\n   * @param feeAmount uint256\n   */\n  function calculateBonus(\n    uint256 stakingBalance,\n    uint256 feeAmount\n  ) public view returns (uint256) {\n    uint256 divisor = (uint256(10) ** bonusScale) + stakingBalance;\n    return (bonusMax * stakingBalance * feeAmount) / divisor / MAX_MAX;\n  }\n\n  /**\n   * @notice Calculates protocol fee for an account\n   * @param wallet address\n   * @param amount uint256\n   */\n  function calculateProtocolFee(\n    address wallet,\n    uint256 amount\n  ) external view override returns (uint256) {\n    // Transfer fee from signer to feeWallet\n    uint256 feeAmount = (amount * protocolFee) / FEE_DIVISOR;\n    if (stakingToken != address(0) && feeAmount > 0) {\n      uint256 bonusAmount = calculateBonus(\n        ERC20(stakingToken).balanceOf(wallet),\n        feeAmount\n      );\n      return feeAmount - bonusAmount;\n    }\n    return feeAmount;\n  }\n\n  /**\n   * @notice Returns true if the nonce has been used\n   * @param signer address Address of the signer\n   * @param nonce uint256 Nonce being checked\n   */\n  function nonceUsed(\n    address signer,\n    uint256 nonce\n  ) public view override returns (bool) {\n    uint256 groupKey = nonce / 256;\n    uint256 indexInGroup = nonce % 256;\n    return (_nonceGroups[signer][groupKey] >> indexInGroup) & 1 == 1;\n  }\n\n  /**\n   * @notice Marks a nonce as used for the given signer\n   * @param signer address Address of the signer for which to mark the nonce as used\n   * @param nonce uint256 Nonce to be marked as used\n   * @return bool True if the nonce was not marked as used already\n   */\n  function _markNonceAsUsed(\n    address signer,\n    uint256 nonce\n  ) private returns (bool) {\n    uint256 groupKey = nonce / 256;\n    uint256 indexInGroup = nonce % 256;\n    uint256 group = _nonceGroups[signer][groupKey];\n\n    // If it is already used, return false\n    if ((group >> indexInGroup) & 1 == 1) {\n      return false;\n    }\n\n    _nonceGroups[signer][groupKey] = group | (uint256(1) << indexInGroup);\n\n    return true;\n  }\n\n  /**\n   * @notice Checks order and reverts on error\n   * @param nonce uint256 Unique and should be sequential\n   * @param expiry uint256 Expiry in seconds since 1 January 1970\n   * @param signerWallet address Wallet of the signer\n   * @param signerToken address ERC20 token transferred from the signer\n   * @param signerAmount uint256 Amount transferred from the signer\n   * @param senderToken address ERC20 token transferred from the sender\n   * @param senderAmount uint256 Amount transferred from the sender\n   * @param v uint8 \"v\" value of the ECDSA signature\n   * @param r bytes32 \"r\" value of the ECDSA signature\n   * @param s bytes32 \"s\" value of the ECDSA signature\n   */\n  function _check(\n    uint256 nonce,\n    uint256 expiry,\n    address signerWallet,\n    address signerToken,\n    uint256 signerAmount,\n    address senderWallet,\n    address senderToken,\n    uint256 senderAmount,\n    uint8 v,\n    bytes32 r,\n    bytes32 s\n  ) private {\n    // Ensure the expiry is not passed\n    if (expiry <= block.timestamp) revert OrderExpired();\n\n    // Validate as the authorized signatory if set\n    address signatory = signerWallet;\n    if (authorized[signatory] != address(0)) {\n      signatory = authorized[signatory];\n    }\n\n    // Ensure the signature is correct for the order\n    if (\n      !SignatureCheckerLib.isValidSignatureNow(\n        signatory,\n        _getOrderHash(\n          nonce,\n          expiry,\n          signerWallet,\n          signerToken,\n          signerAmount,\n          senderWallet,\n          senderToken,\n          senderAmount\n        ),\n        abi.encodePacked(r, s, v)\n      )\n    ) revert SignatureInvalid();\n\n    // Ensure the nonce is not yet used and if not mark as used\n    if (!_markNonceAsUsed(signatory, nonce)) revert NonceAlreadyUsed(nonce);\n  }\n\n  /**\n   * @notice Hashes order parameters\n   * @param nonce uint256\n   * @param expiry uint256\n   * @param signerWallet address\n   * @param signerToken address\n   * @param signerAmount uint256\n   * @param senderToken address\n   * @param senderAmount uint256\n   * @return bytes32\n   */\n  function _getOrderHash(\n    uint256 nonce,\n    uint256 expiry,\n    address signerWallet,\n    address signerToken,\n    uint256 signerAmount,\n    address senderWallet,\n    address senderToken,\n    uint256 senderAmount\n  ) private view returns (bytes32) {\n    return\n      _hashTypedData(\n        keccak256(\n          abi.encode(\n            ORDER_TYPEHASH,\n            nonce,\n            expiry,\n            signerWallet,\n            signerToken,\n            signerAmount,\n            protocolFee,\n            senderWallet,\n            senderToken,\n            senderAmount\n          )\n        )\n      );\n  }\n\n  /**\n   * @notice Calculates and transfers protocol fee and staking bonus\n   * @param sourceToken address\n   * @param sourceWallet address\n   * @param amount uint256\n   */\n  function _transferProtocolFee(\n    address sourceToken,\n    address sourceWallet,\n    uint256 amount\n  ) private {\n    // Determine protocol fee from amount\n    uint256 feeAmount = (amount * protocolFee) / FEE_DIVISOR;\n    if (feeAmount > 0) {\n      uint256 bonusAmount;\n      if (stakingToken != address(0)) {\n        // Only check staking bonus if staking token set\n        bonusAmount = calculateBonus(\n          ERC20(stakingToken).balanceOf(msg.sender),\n          feeAmount\n        );\n      }\n      if (bonusAmount > 0) {\n        // Transfer staking bonus from source to msg.sender\n        SafeTransferLib.safeTransferFrom(\n          sourceToken,\n          sourceWallet,\n          msg.sender,\n          bonusAmount\n        );\n        // Transfer remaining protocol fee from source to fee wallet\n        SafeTransferLib.safeTransferFrom(\n          sourceToken,\n          sourceWallet,\n          protocolFeeWallet,\n          feeAmount - bonusAmount\n        );\n      } else {\n        // Transfer full protocol fee from source to fee wallet\n        SafeTransferLib.safeTransferFrom(\n          sourceToken,\n          sourceWallet,\n          protocolFeeWallet,\n          feeAmount\n        );\n      }\n    }\n  }\n}\n"},"solady/src/auth/Ownable.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.4;\n\n/// @notice Simple single owner authorization mixin.\n/// @author Solady (https://github.com/vectorized/solady/blob/main/src/auth/Ownable.sol)\n///\n/// @dev Note:\n/// This implementation does NOT auto-initialize the owner to `msg.sender`.\n/// You MUST call the `_initializeOwner` in the constructor / initializer.\n///\n/// While the ownable portion follows\n/// [EIP-173](https://eips.ethereum.org/EIPS/eip-173) for compatibility,\n/// the nomenclature for the 2-step ownership handover may be unique to this codebase.\nabstract contract Ownable {\n    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n    /*                       CUSTOM ERRORS                        */\n    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n    /// @dev The caller is not authorized to call the function.\n    error Unauthorized();\n\n    /// @dev The `newOwner` cannot be the zero address.\n    error NewOwnerIsZeroAddress();\n\n    /// @dev The `pendingOwner` does not have a valid handover request.\n    error NoHandoverRequest();\n\n    /// @dev Cannot double-initialize.\n    error AlreadyInitialized();\n\n    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n    /*                           EVENTS                           */\n    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n    /// @dev The ownership is transferred from `oldOwner` to `newOwner`.\n    /// This event is intentionally kept the same as OpenZeppelin's Ownable to be\n    /// compatible with indexers and [EIP-173](https://eips.ethereum.org/EIPS/eip-173),\n    /// despite it not being as lightweight as a single argument event.\n    event OwnershipTransferred(address indexed oldOwner, address indexed newOwner);\n\n    /// @dev An ownership handover to `pendingOwner` has been requested.\n    event OwnershipHandoverRequested(address indexed pendingOwner);\n\n    /// @dev The ownership handover to `pendingOwner` has been canceled.\n    event OwnershipHandoverCanceled(address indexed pendingOwner);\n\n    /// @dev `keccak256(bytes(\"OwnershipTransferred(address,address)\"))`.\n    uint256 private constant _OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE =\n        0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0;\n\n    /// @dev `keccak256(bytes(\"OwnershipHandoverRequested(address)\"))`.\n    uint256 private constant _OWNERSHIP_HANDOVER_REQUESTED_EVENT_SIGNATURE =\n        0xdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d;\n\n    /// @dev `keccak256(bytes(\"OwnershipHandoverCanceled(address)\"))`.\n    uint256 private constant _OWNERSHIP_HANDOVER_CANCELED_EVENT_SIGNATURE =\n        0xfa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92;\n\n    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n    /*                          STORAGE                           */\n    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n    /// @dev The owner slot is given by:\n    /// `bytes32(~uint256(uint32(bytes4(keccak256(\"_OWNER_SLOT_NOT\")))))`.\n    /// It is intentionally chosen to be a high value\n    /// to avoid collision with lower slots.\n    /// The choice of manual storage layout is to enable compatibility\n    /// with both regular and upgradeable contracts.\n    bytes32 internal constant _OWNER_SLOT =\n        0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927;\n\n    /// The ownership handover slot of `newOwner` is given by:\n    /// ```\n    ///     mstore(0x00, or(shl(96, user), _HANDOVER_SLOT_SEED))\n    ///     let handoverSlot := keccak256(0x00, 0x20)\n    /// ```\n    /// It stores the expiry timestamp of the two-step ownership handover.\n    uint256 private constant _HANDOVER_SLOT_SEED = 0x389a75e1;\n\n    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n    /*                     INTERNAL FUNCTIONS                     */\n    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n    /// @dev Override to return true to make `_initializeOwner` prevent double-initialization.\n    function _guardInitializeOwner() internal pure virtual returns (bool guard) {}\n\n    /// @dev Initializes the owner directly without authorization guard.\n    /// This function must be called upon initialization,\n    /// regardless of whether the contract is upgradeable or not.\n    /// This is to enable generalization to both regular and upgradeable contracts,\n    /// and to save gas in case the initial owner is not the caller.\n    /// For performance reasons, this function will not check if there\n    /// is an existing owner.\n    function _initializeOwner(address newOwner) internal virtual {\n        if (_guardInitializeOwner()) {\n            /// @solidity memory-safe-assembly\n            assembly {\n                let ownerSlot := _OWNER_SLOT\n                if sload(ownerSlot) {\n                    mstore(0x00, 0x0dc149f0) // `AlreadyInitialized()`.\n                    revert(0x1c, 0x04)\n                }\n                // Clean the upper 96 bits.\n                newOwner := shr(96, shl(96, newOwner))\n                // Store the new value.\n                sstore(ownerSlot, or(newOwner, shl(255, iszero(newOwner))))\n                // Emit the {OwnershipTransferred} event.\n                log3(0, 0, _OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE, 0, newOwner)\n            }\n        } else {\n            /// @solidity memory-safe-assembly\n            assembly {\n                // Clean the upper 96 bits.\n                newOwner := shr(96, shl(96, newOwner))\n                // Store the new value.\n                sstore(_OWNER_SLOT, newOwner)\n                // Emit the {OwnershipTransferred} event.\n                log3(0, 0, _OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE, 0, newOwner)\n            }\n        }\n    }\n\n    /// @dev Sets the owner directly without authorization guard.\n    function _setOwner(address newOwner) internal virtual {\n        if (_guardInitializeOwner()) {\n            /// @solidity memory-safe-assembly\n            assembly {\n                let ownerSlot := _OWNER_SLOT\n                // Clean the upper 96 bits.\n                newOwner := shr(96, shl(96, newOwner))\n                // Emit the {OwnershipTransferred} event.\n                log3(0, 0, _OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE, sload(ownerSlot), newOwner)\n                // Store the new value.\n                sstore(ownerSlot, or(newOwner, shl(255, iszero(newOwner))))\n            }\n        } else {\n            /// @solidity memory-safe-assembly\n            assembly {\n                let ownerSlot := _OWNER_SLOT\n                // Clean the upper 96 bits.\n                newOwner := shr(96, shl(96, newOwner))\n                // Emit the {OwnershipTransferred} event.\n                log3(0, 0, _OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE, sload(ownerSlot), newOwner)\n                // Store the new value.\n                sstore(ownerSlot, newOwner)\n            }\n        }\n    }\n\n    /// @dev Throws if the sender is not the owner.\n    function _checkOwner() internal view virtual {\n        /// @solidity memory-safe-assembly\n        assembly {\n            // If the caller is not the stored owner, revert.\n            if iszero(eq(caller(), sload(_OWNER_SLOT))) {\n                mstore(0x00, 0x82b42900) // `Unauthorized()`.\n                revert(0x1c, 0x04)\n            }\n        }\n    }\n\n    /// @dev Returns how long a two-step ownership handover is valid for in seconds.\n    /// Override to return a different value if needed.\n    /// Made internal to conserve bytecode. Wrap it in a public function if needed.\n    function _ownershipHandoverValidFor() internal view virtual returns (uint64) {\n        return 48 * 3600;\n    }\n\n    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n    /*                  PUBLIC UPDATE FUNCTIONS                   */\n    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n    /// @dev Allows the owner to transfer the ownership to `newOwner`.\n    function transferOwnership(address newOwner) public payable virtual onlyOwner {\n        /// @solidity memory-safe-assembly\n        assembly {\n            if iszero(shl(96, newOwner)) {\n                mstore(0x00, 0x7448fbae) // `NewOwnerIsZeroAddress()`.\n                revert(0x1c, 0x04)\n            }\n        }\n        _setOwner(newOwner);\n    }\n\n    /// @dev Allows the owner to renounce their ownership.\n    function renounceOwnership() public payable virtual onlyOwner {\n        _setOwner(address(0));\n    }\n\n    /// @dev Request a two-step ownership handover to the caller.\n    /// The request will automatically expire in 48 hours (172800 seconds) by default.\n    function requestOwnershipHandover() public payable virtual {\n        unchecked {\n            uint256 expires = block.timestamp + _ownershipHandoverValidFor();\n            /// @solidity memory-safe-assembly\n            assembly {\n                // Compute and set the handover slot to `expires`.\n                mstore(0x0c, _HANDOVER_SLOT_SEED)\n                mstore(0x00, caller())\n                sstore(keccak256(0x0c, 0x20), expires)\n                // Emit the {OwnershipHandoverRequested} event.\n                log2(0, 0, _OWNERSHIP_HANDOVER_REQUESTED_EVENT_SIGNATURE, caller())\n            }\n        }\n    }\n\n    /// @dev Cancels the two-step ownership handover to the caller, if any.\n    function cancelOwnershipHandover() public payable virtual {\n        /// @solidity memory-safe-assembly\n        assembly {\n            // Compute and set the handover slot to 0.\n            mstore(0x0c, _HANDOVER_SLOT_SEED)\n            mstore(0x00, caller())\n            sstore(keccak256(0x0c, 0x20), 0)\n            // Emit the {OwnershipHandoverCanceled} event.\n            log2(0, 0, _OWNERSHIP_HANDOVER_CANCELED_EVENT_SIGNATURE, caller())\n        }\n    }\n\n    /// @dev Allows the owner to complete the two-step ownership handover to `pendingOwner`.\n    /// Reverts if there is no existing ownership handover requested by `pendingOwner`.\n    function completeOwnershipHandover(address pendingOwner) public payable virtual onlyOwner {\n        /// @solidity memory-safe-assembly\n        assembly {\n            // Compute and set the handover slot to 0.\n            mstore(0x0c, _HANDOVER_SLOT_SEED)\n            mstore(0x00, pendingOwner)\n            let handoverSlot := keccak256(0x0c, 0x20)\n            // If the handover does not exist, or has expired.\n            if gt(timestamp(), sload(handoverSlot)) {\n                mstore(0x00, 0x6f5e8818) // `NoHandoverRequest()`.\n                revert(0x1c, 0x04)\n            }\n            // Set the handover slot to 0.\n            sstore(handoverSlot, 0)\n        }\n        _setOwner(pendingOwner);\n    }\n\n    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n    /*                   PUBLIC READ FUNCTIONS                    */\n    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n    /// @dev Returns the owner of the contract.\n    function owner() public view virtual returns (address result) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            result := sload(_OWNER_SLOT)\n        }\n    }\n\n    /// @dev Returns the expiry timestamp for the two-step ownership handover to `pendingOwner`.\n    function ownershipHandoverExpiresAt(address pendingOwner)\n        public\n        view\n        virtual\n        returns (uint256 result)\n    {\n        /// @solidity memory-safe-assembly\n        assembly {\n            // Compute the handover slot.\n            mstore(0x0c, _HANDOVER_SLOT_SEED)\n            mstore(0x00, pendingOwner)\n            // Load the handover slot.\n            result := sload(keccak256(0x0c, 0x20))\n        }\n    }\n\n    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n    /*                         MODIFIERS                          */\n    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n    /// @dev Marks a function as only callable by the owner.\n    modifier onlyOwner() virtual {\n        _checkOwner();\n        _;\n    }\n}\n"},"solady/src/tokens/ERC20.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.4;\n\n/// @notice Simple ERC20 + EIP-2612 implementation.\n/// @author Solady (https://github.com/vectorized/solady/blob/main/src/tokens/ERC20.sol)\n/// @author Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC20.sol)\n/// @author Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol)\n///\n/// @dev Note:\n/// - The ERC20 standard allows minting and transferring to and from the zero address,\n///   minting and transferring zero tokens, as well as self-approvals.\n///   For performance, this implementation WILL NOT revert for such actions.\n///   Please add any checks with overrides if desired.\n/// - The `permit` function uses the ecrecover precompile (0x1).\n///\n/// If you are overriding:\n/// - NEVER violate the ERC20 invariant:\n///   the total sum of all balances must be equal to `totalSupply()`.\n/// - Check that the overridden function is actually used in the function you want to\n///   change the behavior of. Much of the code has been manually inlined for performance.\nabstract contract ERC20 {\n    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n    /*                       CUSTOM ERRORS                        */\n    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n    /// @dev The total supply has overflowed.\n    error TotalSupplyOverflow();\n\n    /// @dev The allowance has overflowed.\n    error AllowanceOverflow();\n\n    /// @dev The allowance has underflowed.\n    error AllowanceUnderflow();\n\n    /// @dev Insufficient balance.\n    error InsufficientBalance();\n\n    /// @dev Insufficient allowance.\n    error InsufficientAllowance();\n\n    /// @dev The permit is invalid.\n    error InvalidPermit();\n\n    /// @dev The permit has expired.\n    error PermitExpired();\n\n    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n    /*                           EVENTS                           */\n    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n    /// @dev Emitted when `amount` tokens is transferred from `from` to `to`.\n    event Transfer(address indexed from, address indexed to, uint256 amount);\n\n    /// @dev Emitted when `amount` tokens is approved by `owner` to be used by `spender`.\n    event Approval(address indexed owner, address indexed spender, uint256 amount);\n\n    /// @dev `keccak256(bytes(\"Transfer(address,address,uint256)\"))`.\n    uint256 private constant _TRANSFER_EVENT_SIGNATURE =\n        0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef;\n\n    /// @dev `keccak256(bytes(\"Approval(address,address,uint256)\"))`.\n    uint256 private constant _APPROVAL_EVENT_SIGNATURE =\n        0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925;\n\n    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n    /*                          STORAGE                           */\n    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n    /// @dev The storage slot for the total supply.\n    uint256 private constant _TOTAL_SUPPLY_SLOT = 0x05345cdf77eb68f44c;\n\n    /// @dev The balance slot of `owner` is given by:\n    /// ```\n    ///     mstore(0x0c, _BALANCE_SLOT_SEED)\n    ///     mstore(0x00, owner)\n    ///     let balanceSlot := keccak256(0x0c, 0x20)\n    /// ```\n    uint256 private constant _BALANCE_SLOT_SEED = 0x87a211a2;\n\n    /// @dev The allowance slot of (`owner`, `spender`) is given by:\n    /// ```\n    ///     mstore(0x20, spender)\n    ///     mstore(0x0c, _ALLOWANCE_SLOT_SEED)\n    ///     mstore(0x00, owner)\n    ///     let allowanceSlot := keccak256(0x0c, 0x34)\n    /// ```\n    uint256 private constant _ALLOWANCE_SLOT_SEED = 0x7f5e9f20;\n\n    /// @dev The nonce slot of `owner` is given by:\n    /// ```\n    ///     mstore(0x0c, _NONCES_SLOT_SEED)\n    ///     mstore(0x00, owner)\n    ///     let nonceSlot := keccak256(0x0c, 0x20)\n    /// ```\n    uint256 private constant _NONCES_SLOT_SEED = 0x38377508;\n\n    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n    /*                         CONSTANTS                          */\n    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n    /// @dev `(_NONCES_SLOT_SEED << 16) | 0x1901`.\n    uint256 private constant _NONCES_SLOT_SEED_WITH_SIGNATURE_PREFIX = 0x383775081901;\n\n    /// @dev `keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\")`.\n    bytes32 private constant _DOMAIN_TYPEHASH =\n        0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f;\n\n    /// @dev `keccak256(\"1\")`.\n    bytes32 private constant _VERSION_HASH =\n        0xc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6;\n\n    /// @dev `keccak256(\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\")`.\n    bytes32 private constant _PERMIT_TYPEHASH =\n        0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;\n\n    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n    /*                       ERC20 METADATA                       */\n    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n    /// @dev Returns the name of the token.\n    function name() public view virtual returns (string memory);\n\n    /// @dev Returns the symbol of the token.\n    function symbol() public view virtual returns (string memory);\n\n    /// @dev Returns the decimals places of the token.\n    function decimals() public view virtual returns (uint8) {\n        return 18;\n    }\n\n    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n    /*                           ERC20                            */\n    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n    /// @dev Returns the amount of tokens in existence.\n    function totalSupply() public view virtual returns (uint256 result) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            result := sload(_TOTAL_SUPPLY_SLOT)\n        }\n    }\n\n    /// @dev Returns the amount of tokens owned by `owner`.\n    function balanceOf(address owner) public view virtual returns (uint256 result) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            mstore(0x0c, _BALANCE_SLOT_SEED)\n            mstore(0x00, owner)\n            result := sload(keccak256(0x0c, 0x20))\n        }\n    }\n\n    /// @dev Returns the amount of tokens that `spender` can spend on behalf of `owner`.\n    function allowance(address owner, address spender)\n        public\n        view\n        virtual\n        returns (uint256 result)\n    {\n        /// @solidity memory-safe-assembly\n        assembly {\n            mstore(0x20, spender)\n            mstore(0x0c, _ALLOWANCE_SLOT_SEED)\n            mstore(0x00, owner)\n            result := sload(keccak256(0x0c, 0x34))\n        }\n    }\n\n    /// @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n    ///\n    /// Emits a {Approval} event.\n    function approve(address spender, uint256 amount) public virtual returns (bool) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            // Compute the allowance slot and store the amount.\n            mstore(0x20, spender)\n            mstore(0x0c, _ALLOWANCE_SLOT_SEED)\n            mstore(0x00, caller())\n            sstore(keccak256(0x0c, 0x34), amount)\n            // Emit the {Approval} event.\n            mstore(0x00, amount)\n            log3(0x00, 0x20, _APPROVAL_EVENT_SIGNATURE, caller(), shr(96, mload(0x2c)))\n        }\n        return true;\n    }\n\n    /// @dev Transfer `amount` tokens from the caller to `to`.\n    ///\n    /// Requirements:\n    /// - `from` must at least have `amount`.\n    ///\n    /// Emits a {Transfer} event.\n    function transfer(address to, uint256 amount) public virtual returns (bool) {\n        _beforeTokenTransfer(msg.sender, to, amount);\n        /// @solidity memory-safe-assembly\n        assembly {\n            // Compute the balance slot and load its value.\n            mstore(0x0c, _BALANCE_SLOT_SEED)\n            mstore(0x00, caller())\n            let fromBalanceSlot := keccak256(0x0c, 0x20)\n            let fromBalance := sload(fromBalanceSlot)\n            // Revert if insufficient balance.\n            if gt(amount, fromBalance) {\n                mstore(0x00, 0xf4d678b8) // `InsufficientBalance()`.\n                revert(0x1c, 0x04)\n            }\n            // Subtract and store the updated balance.\n            sstore(fromBalanceSlot, sub(fromBalance, amount))\n            // Compute the balance slot of `to`.\n            mstore(0x00, to)\n            let toBalanceSlot := keccak256(0x0c, 0x20)\n            // Add and store the updated balance of `to`.\n            // Will not overflow because the sum of all user balances\n            // cannot exceed the maximum uint256 value.\n            sstore(toBalanceSlot, add(sload(toBalanceSlot), amount))\n            // Emit the {Transfer} event.\n            mstore(0x20, amount)\n            log3(0x20, 0x20, _TRANSFER_EVENT_SIGNATURE, caller(), shr(96, mload(0x0c)))\n        }\n        _afterTokenTransfer(msg.sender, to, amount);\n        return true;\n    }\n\n    /// @dev Transfers `amount` tokens from `from` to `to`.\n    ///\n    /// Note: Does not update the allowance if it is the maximum uint256 value.\n    ///\n    /// Requirements:\n    /// - `from` must at least have `amount`.\n    /// - The caller must have at least `amount` of allowance to transfer the tokens of `from`.\n    ///\n    /// Emits a {Transfer} event.\n    function transferFrom(address from, address to, uint256 amount) public virtual returns (bool) {\n        _beforeTokenTransfer(from, to, amount);\n        /// @solidity memory-safe-assembly\n        assembly {\n            let from_ := shl(96, from)\n            // Compute the allowance slot and load its value.\n            mstore(0x20, caller())\n            mstore(0x0c, or(from_, _ALLOWANCE_SLOT_SEED))\n            let allowanceSlot := keccak256(0x0c, 0x34)\n            let allowance_ := sload(allowanceSlot)\n            // If the allowance is not the maximum uint256 value.\n            if add(allowance_, 1) {\n                // Revert if the amount to be transferred exceeds the allowance.\n                if gt(amount, allowance_) {\n                    mstore(0x00, 0x13be252b) // `InsufficientAllowance()`.\n                    revert(0x1c, 0x04)\n                }\n                // Subtract and store the updated allowance.\n                sstore(allowanceSlot, sub(allowance_, amount))\n            }\n            // Compute the balance slot and load its value.\n            mstore(0x0c, or(from_, _BALANCE_SLOT_SEED))\n            let fromBalanceSlot := keccak256(0x0c, 0x20)\n            let fromBalance := sload(fromBalanceSlot)\n            // Revert if insufficient balance.\n            if gt(amount, fromBalance) {\n                mstore(0x00, 0xf4d678b8) // `InsufficientBalance()`.\n                revert(0x1c, 0x04)\n            }\n            // Subtract and store the updated balance.\n            sstore(fromBalanceSlot, sub(fromBalance, amount))\n            // Compute the balance slot of `to`.\n            mstore(0x00, to)\n            let toBalanceSlot := keccak256(0x0c, 0x20)\n            // Add and store the updated balance of `to`.\n            // Will not overflow because the sum of all user balances\n            // cannot exceed the maximum uint256 value.\n            sstore(toBalanceSlot, add(sload(toBalanceSlot), amount))\n            // Emit the {Transfer} event.\n            mstore(0x20, amount)\n            log3(0x20, 0x20, _TRANSFER_EVENT_SIGNATURE, shr(96, from_), shr(96, mload(0x0c)))\n        }\n        _afterTokenTransfer(from, to, amount);\n        return true;\n    }\n\n    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n    /*                          EIP-2612                          */\n    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n    /// @dev For more performance, override to return the constant value\n    /// of `keccak256(bytes(name()))` if `name()` will never change.\n    function _constantNameHash() internal view virtual returns (bytes32 result) {}\n\n    /// @dev Returns the current nonce for `owner`.\n    /// This value is used to compute the signature for EIP-2612 permit.\n    function nonces(address owner) public view virtual returns (uint256 result) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            // Compute the nonce slot and load its value.\n            mstore(0x0c, _NONCES_SLOT_SEED)\n            mstore(0x00, owner)\n            result := sload(keccak256(0x0c, 0x20))\n        }\n    }\n\n    /// @dev Sets `value` as the allowance of `spender` over the tokens of `owner`,\n    /// authorized by a signed approval by `owner`.\n    ///\n    /// Emits a {Approval} event.\n    function permit(\n        address owner,\n        address spender,\n        uint256 value,\n        uint256 deadline,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) public virtual {\n        bytes32 nameHash = _constantNameHash();\n        //  We simply calculate it on-the-fly to allow for cases where the `name` may change.\n        if (nameHash == bytes32(0)) nameHash = keccak256(bytes(name()));\n        /// @solidity memory-safe-assembly\n        assembly {\n            // Revert if the block timestamp is greater than `deadline`.\n            if gt(timestamp(), deadline) {\n                mstore(0x00, 0x1a15a3cc) // `PermitExpired()`.\n                revert(0x1c, 0x04)\n            }\n            let m := mload(0x40) // Grab the free memory pointer.\n            // Clean the upper 96 bits.\n            owner := shr(96, shl(96, owner))\n            spender := shr(96, shl(96, spender))\n            // Compute the nonce slot and load its value.\n            mstore(0x0e, _NONCES_SLOT_SEED_WITH_SIGNATURE_PREFIX)\n            mstore(0x00, owner)\n            let nonceSlot := keccak256(0x0c, 0x20)\n            let nonceValue := sload(nonceSlot)\n            // Prepare the domain separator.\n            mstore(m, _DOMAIN_TYPEHASH)\n            mstore(add(m, 0x20), nameHash)\n            mstore(add(m, 0x40), _VERSION_HASH)\n            mstore(add(m, 0x60), chainid())\n            mstore(add(m, 0x80), address())\n            mstore(0x2e, keccak256(m, 0xa0))\n            // Prepare the struct hash.\n            mstore(m, _PERMIT_TYPEHASH)\n            mstore(add(m, 0x20), owner)\n            mstore(add(m, 0x40), spender)\n            mstore(add(m, 0x60), value)\n            mstore(add(m, 0x80), nonceValue)\n            mstore(add(m, 0xa0), deadline)\n            mstore(0x4e, keccak256(m, 0xc0))\n            // Prepare the ecrecover calldata.\n            mstore(0x00, keccak256(0x2c, 0x42))\n            mstore(0x20, and(0xff, v))\n            mstore(0x40, r)\n            mstore(0x60, s)\n            let t := staticcall(gas(), 1, 0, 0x80, 0x20, 0x20)\n            // If the ecrecover fails, the returndatasize will be 0x00,\n            // `owner` will be checked if it equals the hash at 0x00,\n            // which evaluates to false (i.e. 0), and we will revert.\n            // If the ecrecover succeeds, the returndatasize will be 0x20,\n            // `owner` will be compared against the returned address at 0x20.\n            if iszero(eq(mload(returndatasize()), owner)) {\n                mstore(0x00, 0xddafbaef) // `InvalidPermit()`.\n                revert(0x1c, 0x04)\n            }\n            // Increment and store the updated nonce.\n            sstore(nonceSlot, add(nonceValue, t)) // `t` is 1 if ecrecover succeeds.\n            // Compute the allowance slot and store the value.\n            // The `owner` is already at slot 0x20.\n            mstore(0x40, or(shl(160, _ALLOWANCE_SLOT_SEED), spender))\n            sstore(keccak256(0x2c, 0x34), value)\n            // Emit the {Approval} event.\n            log3(add(m, 0x60), 0x20, _APPROVAL_EVENT_SIGNATURE, owner, spender)\n            mstore(0x40, m) // Restore the free memory pointer.\n            mstore(0x60, 0) // Restore the zero pointer.\n        }\n    }\n\n    /// @dev Returns the EIP-712 domain separator for the EIP-2612 permit.\n    function DOMAIN_SEPARATOR() public view virtual returns (bytes32 result) {\n        bytes32 nameHash = _constantNameHash();\n        //  We simply calculate it on-the-fly to allow for cases where the `name` may change.\n        if (nameHash == bytes32(0)) nameHash = keccak256(bytes(name()));\n        /// @solidity memory-safe-assembly\n        assembly {\n            let m := mload(0x40) // Grab the free memory pointer.\n            mstore(m, _DOMAIN_TYPEHASH)\n            mstore(add(m, 0x20), nameHash)\n            mstore(add(m, 0x40), _VERSION_HASH)\n            mstore(add(m, 0x60), chainid())\n            mstore(add(m, 0x80), address())\n            result := keccak256(m, 0xa0)\n        }\n    }\n\n    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n    /*                  INTERNAL MINT FUNCTIONS                   */\n    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n    /// @dev Mints `amount` tokens to `to`, increasing the total supply.\n    ///\n    /// Emits a {Transfer} event.\n    function _mint(address to, uint256 amount) internal virtual {\n        _beforeTokenTransfer(address(0), to, amount);\n        /// @solidity memory-safe-assembly\n        assembly {\n            let totalSupplyBefore := sload(_TOTAL_SUPPLY_SLOT)\n            let totalSupplyAfter := add(totalSupplyBefore, amount)\n            // Revert if the total supply overflows.\n            if lt(totalSupplyAfter, totalSupplyBefore) {\n                mstore(0x00, 0xe5cfe957) // `TotalSupplyOverflow()`.\n                revert(0x1c, 0x04)\n            }\n            // Store the updated total supply.\n            sstore(_TOTAL_SUPPLY_SLOT, totalSupplyAfter)\n            // Compute the balance slot and load its value.\n            mstore(0x0c, _BALANCE_SLOT_SEED)\n            mstore(0x00, to)\n            let toBalanceSlot := keccak256(0x0c, 0x20)\n            // Add and store the updated balance.\n            sstore(toBalanceSlot, add(sload(toBalanceSlot), amount))\n            // Emit the {Transfer} event.\n            mstore(0x20, amount)\n            log3(0x20, 0x20, _TRANSFER_EVENT_SIGNATURE, 0, shr(96, mload(0x0c)))\n        }\n        _afterTokenTransfer(address(0), to, amount);\n    }\n\n    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n    /*                  INTERNAL BURN FUNCTIONS                   */\n    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n    /// @dev Burns `amount` tokens from `from`, reducing the total supply.\n    ///\n    /// Emits a {Transfer} event.\n    function _burn(address from, uint256 amount) internal virtual {\n        _beforeTokenTransfer(from, address(0), amount);\n        /// @solidity memory-safe-assembly\n        assembly {\n            // Compute the balance slot and load its value.\n            mstore(0x0c, _BALANCE_SLOT_SEED)\n            mstore(0x00, from)\n            let fromBalanceSlot := keccak256(0x0c, 0x20)\n            let fromBalance := sload(fromBalanceSlot)\n            // Revert if insufficient balance.\n            if gt(amount, fromBalance) {\n                mstore(0x00, 0xf4d678b8) // `InsufficientBalance()`.\n                revert(0x1c, 0x04)\n            }\n            // Subtract and store the updated balance.\n            sstore(fromBalanceSlot, sub(fromBalance, amount))\n            // Subtract and store the updated total supply.\n            sstore(_TOTAL_SUPPLY_SLOT, sub(sload(_TOTAL_SUPPLY_SLOT), amount))\n            // Emit the {Transfer} event.\n            mstore(0x00, amount)\n            log3(0x00, 0x20, _TRANSFER_EVENT_SIGNATURE, shr(96, shl(96, from)), 0)\n        }\n        _afterTokenTransfer(from, address(0), amount);\n    }\n\n    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n    /*                INTERNAL TRANSFER FUNCTIONS                 */\n    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n    /// @dev Moves `amount` of tokens from `from` to `to`.\n    function _transfer(address from, address to, uint256 amount) internal virtual {\n        _beforeTokenTransfer(from, to, amount);\n        /// @solidity memory-safe-assembly\n        assembly {\n            let from_ := shl(96, from)\n            // Compute the balance slot and load its value.\n            mstore(0x0c, or(from_, _BALANCE_SLOT_SEED))\n            let fromBalanceSlot := keccak256(0x0c, 0x20)\n            let fromBalance := sload(fromBalanceSlot)\n            // Revert if insufficient balance.\n            if gt(amount, fromBalance) {\n                mstore(0x00, 0xf4d678b8) // `InsufficientBalance()`.\n                revert(0x1c, 0x04)\n            }\n            // Subtract and store the updated balance.\n            sstore(fromBalanceSlot, sub(fromBalance, amount))\n            // Compute the balance slot of `to`.\n            mstore(0x00, to)\n            let toBalanceSlot := keccak256(0x0c, 0x20)\n            // Add and store the updated balance of `to`.\n            // Will not overflow because the sum of all user balances\n            // cannot exceed the maximum uint256 value.\n            sstore(toBalanceSlot, add(sload(toBalanceSlot), amount))\n            // Emit the {Transfer} event.\n            mstore(0x20, amount)\n            log3(0x20, 0x20, _TRANSFER_EVENT_SIGNATURE, shr(96, from_), shr(96, mload(0x0c)))\n        }\n        _afterTokenTransfer(from, to, amount);\n    }\n\n    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n    /*                INTERNAL ALLOWANCE FUNCTIONS                */\n    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n    /// @dev Updates the allowance of `owner` for `spender` based on spent `amount`.\n    function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {\n        /// @solidity memory-safe-assembly\n        assembly {\n            // Compute the allowance slot and load its value.\n            mstore(0x20, spender)\n            mstore(0x0c, _ALLOWANCE_SLOT_SEED)\n            mstore(0x00, owner)\n            let allowanceSlot := keccak256(0x0c, 0x34)\n            let allowance_ := sload(allowanceSlot)\n            // If the allowance is not the maximum uint256 value.\n            if add(allowance_, 1) {\n                // Revert if the amount to be transferred exceeds the allowance.\n                if gt(amount, allowance_) {\n                    mstore(0x00, 0x13be252b) // `InsufficientAllowance()`.\n                    revert(0x1c, 0x04)\n                }\n                // Subtract and store the updated allowance.\n                sstore(allowanceSlot, sub(allowance_, amount))\n            }\n        }\n    }\n\n    /// @dev Sets `amount` as the allowance of `spender` over the tokens of `owner`.\n    ///\n    /// Emits a {Approval} event.\n    function _approve(address owner, address spender, uint256 amount) internal virtual {\n        /// @solidity memory-safe-assembly\n        assembly {\n            let owner_ := shl(96, owner)\n            // Compute the allowance slot and store the amount.\n            mstore(0x20, spender)\n            mstore(0x0c, or(owner_, _ALLOWANCE_SLOT_SEED))\n            sstore(keccak256(0x0c, 0x34), amount)\n            // Emit the {Approval} event.\n            mstore(0x00, amount)\n            log3(0x00, 0x20, _APPROVAL_EVENT_SIGNATURE, shr(96, owner_), shr(96, mload(0x2c)))\n        }\n    }\n\n    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n    /*                     HOOKS TO OVERRIDE                      */\n    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n    /// @dev Hook that is called before any transfer of tokens.\n    /// This includes minting and burning.\n    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}\n\n    /// @dev Hook that is called after any transfer of tokens.\n    /// This includes minting and burning.\n    function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}\n}\n"},"solady/src/utils/ECDSA.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.4;\n\n/// @notice Gas optimized ECDSA wrapper.\n/// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/ECDSA.sol)\n/// @author Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/ECDSA.sol)\n/// @author Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/ECDSA.sol)\n///\n/// @dev Note:\n/// - The recovery functions use the ecrecover precompile (0x1).\n/// - As of Solady version 0.0.68, the `recover` variants will revert upon recovery failure.\n///   This is for more safety by default.\n///   Use the `tryRecover` variants if you need to get the zero address back\n///   upon recovery failure instead.\n/// - As of Solady version 0.0.134, all `bytes signature` variants accept both\n///   regular 65-byte `(r, s, v)` and EIP-2098 `(r, vs)` short form signatures.\n///   See: https://eips.ethereum.org/EIPS/eip-2098\n///   This is for calldata efficiency on smart accounts prevalent on L2s.\n///\n/// WARNING! Do NOT use signatures as unique identifiers:\n/// - Use a nonce in the digest to prevent replay attacks on the same contract.\n/// - Use EIP-712 for the digest to prevent replay attacks across different chains and contracts.\n///   EIP-712 also enables readable signing of typed data for better user safety.\n/// This implementation does NOT check if a signature is non-malleable.\nlibrary ECDSA {\n    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n    /*                        CUSTOM ERRORS                       */\n    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n    /// @dev The signature is invalid.\n    error InvalidSignature();\n\n    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n    /*                    RECOVERY OPERATIONS                     */\n    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n    /// @dev Recovers the signer's address from a message digest `hash`, and the `signature`.\n    function recover(bytes32 hash, bytes memory signature) internal view returns (address result) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            result := 1\n            let m := mload(0x40) // Cache the free memory pointer.\n            for {} 1 {} {\n                mstore(0x00, hash)\n                mstore(0x40, mload(add(signature, 0x20))) // `r`.\n                if eq(mload(signature), 64) {\n                    let vs := mload(add(signature, 0x40))\n                    mstore(0x20, add(shr(255, vs), 27)) // `v`.\n                    mstore(0x60, shr(1, shl(1, vs))) // `s`.\n                    break\n                }\n                if eq(mload(signature), 65) {\n                    mstore(0x20, byte(0, mload(add(signature, 0x60)))) // `v`.\n                    mstore(0x60, mload(add(signature, 0x40))) // `s`.\n                    break\n                }\n                result := 0\n                break\n            }\n            result :=\n                mload(\n                    staticcall(\n                        gas(), // Amount of gas left for the transaction.\n                        result, // Address of `ecrecover`.\n                        0x00, // Start of input.\n                        0x80, // Size of input.\n                        0x01, // Start of output.\n                        0x20 // Size of output.\n                    )\n                )\n            // `returndatasize()` will be `0x20` upon success, and `0x00` otherwise.\n            if iszero(returndatasize()) {\n                mstore(0x00, 0x8baa579f) // `InvalidSignature()`.\n                revert(0x1c, 0x04)\n            }\n            mstore(0x60, 0) // Restore the zero slot.\n            mstore(0x40, m) // Restore the free memory pointer.\n        }\n    }\n\n    /// @dev Recovers the signer's address from a message digest `hash`, and the `signature`.\n    function recoverCalldata(bytes32 hash, bytes calldata signature)\n        internal\n        view\n        returns (address result)\n    {\n        /// @solidity memory-safe-assembly\n        assembly {\n            result := 1\n            let m := mload(0x40) // Cache the free memory pointer.\n            mstore(0x00, hash)\n            for {} 1 {} {\n                if eq(signature.length, 64) {\n                    let vs := calldataload(add(signature.offset, 0x20))\n                    mstore(0x20, add(shr(255, vs), 27)) // `v`.\n                    mstore(0x40, calldataload(signature.offset)) // `r`.\n                    mstore(0x60, shr(1, shl(1, vs))) // `s`.\n                    break\n                }\n                if eq(signature.length, 65) {\n                    mstore(0x20, byte(0, calldataload(add(signature.offset, 0x40)))) // `v`.\n                    calldatacopy(0x40, signature.offset, 0x40) // Copy `r` and `s`.\n                    break\n                }\n                result := 0\n                break\n            }\n            result :=\n                mload(\n                    staticcall(\n                        gas(), // Amount of gas left for the transaction.\n                        result, // Address of `ecrecover`.\n                        0x00, // Start of input.\n                        0x80, // Size of input.\n                        0x01, // Start of output.\n                        0x20 // Size of output.\n                    )\n                )\n            // `returndatasize()` will be `0x20` upon success, and `0x00` otherwise.\n            if iszero(returndatasize()) {\n                mstore(0x00, 0x8baa579f) // `InvalidSignature()`.\n                revert(0x1c, 0x04)\n            }\n            mstore(0x60, 0) // Restore the zero slot.\n            mstore(0x40, m) // Restore the free memory pointer.\n        }\n    }\n\n    /// @dev Recovers the signer's address from a message digest `hash`,\n    /// and the EIP-2098 short form signature defined by `r` and `vs`.\n    function recover(bytes32 hash, bytes32 r, bytes32 vs) internal view returns (address result) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            let m := mload(0x40) // Cache the free memory pointer.\n            mstore(0x00, hash)\n            mstore(0x20, add(shr(255, vs), 27)) // `v`.\n            mstore(0x40, r)\n            mstore(0x60, shr(1, shl(1, vs))) // `s`.\n            result :=\n                mload(\n                    staticcall(\n                        gas(), // Amount of gas left for the transaction.\n                        1, // Address of `ecrecover`.\n                        0x00, // Start of input.\n                        0x80, // Size of input.\n                        0x01, // Start of output.\n                        0x20 // Size of output.\n                    )\n                )\n            // `returndatasize()` will be `0x20` upon success, and `0x00` otherwise.\n            if iszero(returndatasize()) {\n                mstore(0x00, 0x8baa579f) // `InvalidSignature()`.\n                revert(0x1c, 0x04)\n            }\n            mstore(0x60, 0) // Restore the zero slot.\n            mstore(0x40, m) // Restore the free memory pointer.\n        }\n    }\n\n    /// @dev Recovers the signer's address from a message digest `hash`,\n    /// and the signature defined by `v`, `r`, `s`.\n    function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s)\n        internal\n        view\n        returns (address result)\n    {\n        /// @solidity memory-safe-assembly\n        assembly {\n            let m := mload(0x40) // Cache the free memory pointer.\n            mstore(0x00, hash)\n            mstore(0x20, and(v, 0xff))\n            mstore(0x40, r)\n            mstore(0x60, s)\n            result :=\n                mload(\n                    staticcall(\n                        gas(), // Amount of gas left for the transaction.\n                        1, // Address of `ecrecover`.\n                        0x00, // Start of input.\n                        0x80, // Size of input.\n                        0x01, // Start of output.\n                        0x20 // Size of output.\n                    )\n                )\n            // `returndatasize()` will be `0x20` upon success, and `0x00` otherwise.\n            if iszero(returndatasize()) {\n                mstore(0x00, 0x8baa579f) // `InvalidSignature()`.\n                revert(0x1c, 0x04)\n            }\n            mstore(0x60, 0) // Restore the zero slot.\n            mstore(0x40, m) // Restore the free memory pointer.\n        }\n    }\n\n    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n    /*                   TRY-RECOVER OPERATIONS                   */\n    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n    // WARNING!\n    // These functions will NOT revert upon recovery failure.\n    // Instead, they will return the zero address upon recovery failure.\n    // It is critical that the returned address is NEVER compared against\n    // a zero address (e.g. an uninitialized address variable).\n\n    /// @dev Recovers the signer's address from a message digest `hash`, and the `signature`.\n    function tryRecover(bytes32 hash, bytes memory signature)\n        internal\n        view\n        returns (address result)\n    {\n        /// @solidity memory-safe-assembly\n        assembly {\n            result := 1\n            let m := mload(0x40) // Cache the free memory pointer.\n            for {} 1 {} {\n                mstore(0x00, hash)\n                mstore(0x40, mload(add(signature, 0x20))) // `r`.\n                if eq(mload(signature), 64) {\n                    let vs := mload(add(signature, 0x40))\n                    mstore(0x20, add(shr(255, vs), 27)) // `v`.\n                    mstore(0x60, shr(1, shl(1, vs))) // `s`.\n                    break\n                }\n                if eq(mload(signature), 65) {\n                    mstore(0x20, byte(0, mload(add(signature, 0x60)))) // `v`.\n                    mstore(0x60, mload(add(signature, 0x40))) // `s`.\n                    break\n                }\n                result := 0\n                break\n            }\n            pop(\n                staticcall(\n                    gas(), // Amount of gas left for the transaction.\n                    result, // Address of `ecrecover`.\n                    0x00, // Start of input.\n                    0x80, // Size of input.\n                    0x40, // Start of output.\n                    0x20 // Size of output.\n                )\n            )\n            mstore(0x60, 0) // Restore the zero slot.\n            // `returndatasize()` will be `0x20` upon success, and `0x00` otherwise.\n            result := mload(xor(0x60, returndatasize()))\n            mstore(0x40, m) // Restore the free memory pointer.\n        }\n    }\n\n    /// @dev Recovers the signer's address from a message digest `hash`, and the `signature`.\n    function tryRecoverCalldata(bytes32 hash, bytes calldata signature)\n        internal\n        view\n        returns (address result)\n    {\n        /// @solidity memory-safe-assembly\n        assembly {\n            result := 1\n            let m := mload(0x40) // Cache the free memory pointer.\n            mstore(0x00, hash)\n            for {} 1 {} {\n                if eq(signature.length, 64) {\n                    let vs := calldataload(add(signature.offset, 0x20))\n                    mstore(0x20, add(shr(255, vs), 27)) // `v`.\n                    mstore(0x40, calldataload(signature.offset)) // `r`.\n                    mstore(0x60, shr(1, shl(1, vs))) // `s`.\n                    break\n                }\n                if eq(signature.length, 65) {\n                    mstore(0x20, byte(0, calldataload(add(signature.offset, 0x40)))) // `v`.\n                    calldatacopy(0x40, signature.offset, 0x40) // Copy `r` and `s`.\n                    break\n                }\n                result := 0\n                break\n            }\n            pop(\n                staticcall(\n                    gas(), // Amount of gas left for the transaction.\n                    result, // Address of `ecrecover`.\n                    0x00, // Start of input.\n                    0x80, // Size of input.\n                    0x40, // Start of output.\n                    0x20 // Size of output.\n                )\n            )\n            mstore(0x60, 0) // Restore the zero slot.\n            // `returndatasize()` will be `0x20` upon success, and `0x00` otherwise.\n            result := mload(xor(0x60, returndatasize()))\n            mstore(0x40, m) // Restore the free memory pointer.\n        }\n    }\n\n    /// @dev Recovers the signer's address from a message digest `hash`,\n    /// and the EIP-2098 short form signature defined by `r` and `vs`.\n    function tryRecover(bytes32 hash, bytes32 r, bytes32 vs)\n        internal\n        view\n        returns (address result)\n    {\n        /// @solidity memory-safe-assembly\n        assembly {\n            let m := mload(0x40) // Cache the free memory pointer.\n            mstore(0x00, hash)\n            mstore(0x20, add(shr(255, vs), 27)) // `v`.\n            mstore(0x40, r)\n            mstore(0x60, shr(1, shl(1, vs))) // `s`.\n            pop(\n                staticcall(\n                    gas(), // Amount of gas left for the transaction.\n                    1, // Address of `ecrecover`.\n                    0x00, // Start of input.\n                    0x80, // Size of input.\n                    0x40, // Start of output.\n                    0x20 // Size of output.\n                )\n            )\n            mstore(0x60, 0) // Restore the zero slot.\n            // `returndatasize()` will be `0x20` upon success, and `0x00` otherwise.\n            result := mload(xor(0x60, returndatasize()))\n            mstore(0x40, m) // Restore the free memory pointer.\n        }\n    }\n\n    /// @dev Recovers the signer's address from a message digest `hash`,\n    /// and the signature defined by `v`, `r`, `s`.\n    function tryRecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s)\n        internal\n        view\n        returns (address result)\n    {\n        /// @solidity memory-safe-assembly\n        assembly {\n            let m := mload(0x40) // Cache the free memory pointer.\n            mstore(0x00, hash)\n            mstore(0x20, and(v, 0xff))\n            mstore(0x40, r)\n            mstore(0x60, s)\n            pop(\n                staticcall(\n                    gas(), // Amount of gas left for the transaction.\n                    1, // Address of `ecrecover`.\n                    0x00, // Start of input.\n                    0x80, // Size of input.\n                    0x40, // Start of output.\n                    0x20 // Size of output.\n                )\n            )\n            mstore(0x60, 0) // Restore the zero slot.\n            // `returndatasize()` will be `0x20` upon success, and `0x00` otherwise.\n            result := mload(xor(0x60, returndatasize()))\n            mstore(0x40, m) // Restore the free memory pointer.\n        }\n    }\n\n    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n    /*                     HASHING OPERATIONS                     */\n    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n    /// @dev Returns an Ethereum Signed Message, created from a `hash`.\n    /// This produces a hash corresponding to the one signed with the\n    /// [`eth_sign`](https://eth.wiki/json-rpc/API#eth_sign)\n    /// JSON-RPC method as part of EIP-191.\n    function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32 result) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            mstore(0x20, hash) // Store into scratch space for keccak256.\n            mstore(0x00, \"\\x00\\x00\\x00\\x00\\x19Ethereum Signed Message:\\n32\") // 28 bytes.\n            result := keccak256(0x04, 0x3c) // `32 * 2 - (32 - 28) = 60 = 0x3c`.\n        }\n    }\n\n    /// @dev Returns an Ethereum Signed Message, created from `s`.\n    /// This produces a hash corresponding to the one signed with the\n    /// [`eth_sign`](https://eth.wiki/json-rpc/API#eth_sign)\n    /// JSON-RPC method as part of EIP-191.\n    /// Note: Supports lengths of `s` up to 999999 bytes.\n    function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32 result) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            let sLength := mload(s)\n            let o := 0x20\n            mstore(o, \"\\x19Ethereum Signed Message:\\n\") // 26 bytes, zero-right-padded.\n            mstore(0x00, 0x00)\n            // Convert the `s.length` to ASCII decimal representation: `base10(s.length)`.\n            for { let temp := sLength } 1 {} {\n                o := sub(o, 1)\n                mstore8(o, add(48, mod(temp, 10)))\n                temp := div(temp, 10)\n                if iszero(temp) { break }\n            }\n            let n := sub(0x3a, o) // Header length: `26 + 32 - o`.\n            // Throw an out-of-offset error (consumes all gas) if the header exceeds 32 bytes.\n            returndatacopy(returndatasize(), returndatasize(), gt(n, 0x20))\n            mstore(s, or(mload(0x00), mload(n))) // Temporarily store the header.\n            result := keccak256(add(s, sub(0x20, n)), add(n, sLength))\n            mstore(s, sLength) // Restore the length.\n        }\n    }\n\n    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n    /*                   EMPTY CALLDATA HELPERS                   */\n    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n    /// @dev Returns an empty calldata bytes.\n    function emptySignature() internal pure returns (bytes calldata signature) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            signature.length := 0\n        }\n    }\n}\n"},"solady/src/utils/EIP712.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.4;\n\n/// @notice Contract for EIP-712 typed structured data hashing and signing.\n/// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/EIP712.sol)\n/// @author Modified from Solbase (https://github.com/Sol-DAO/solbase/blob/main/src/utils/EIP712.sol)\n/// @author Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/EIP712.sol)\n///\n/// @dev Note, this implementation:\n/// - Uses `address(this)` for the `verifyingContract` field.\n/// - Does NOT use the optional EIP-712 salt.\n/// - Does NOT use any EIP-712 extensions.\n/// This is for simplicity and to save gas.\n/// If you need to customize, please fork / modify accordingly.\nabstract contract EIP712 {\n    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n    /*                  CONSTANTS AND IMMUTABLES                  */\n    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n    /// @dev `keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\")`.\n    bytes32 internal constant _DOMAIN_TYPEHASH =\n        0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f;\n\n    uint256 private immutable _cachedThis;\n    uint256 private immutable _cachedChainId;\n    bytes32 private immutable _cachedNameHash;\n    bytes32 private immutable _cachedVersionHash;\n    bytes32 private immutable _cachedDomainSeparator;\n\n    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n    /*                        CONSTRUCTOR                         */\n    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n    /// @dev Cache the hashes for cheaper runtime gas costs.\n    /// In the case of upgradeable contracts (i.e. proxies),\n    /// or if the chain id changes due to a hard fork,\n    /// the domain separator will be seamlessly calculated on-the-fly.\n    constructor() {\n        _cachedThis = uint256(uint160(address(this)));\n        _cachedChainId = block.chainid;\n\n        string memory name;\n        string memory version;\n        if (!_domainNameAndVersionMayChange()) (name, version) = _domainNameAndVersion();\n        bytes32 nameHash = _domainNameAndVersionMayChange() ? bytes32(0) : keccak256(bytes(name));\n        bytes32 versionHash =\n            _domainNameAndVersionMayChange() ? bytes32(0) : keccak256(bytes(version));\n        _cachedNameHash = nameHash;\n        _cachedVersionHash = versionHash;\n\n        bytes32 separator;\n        if (!_domainNameAndVersionMayChange()) {\n            /// @solidity memory-safe-assembly\n            assembly {\n                let m := mload(0x40) // Load the free memory pointer.\n                mstore(m, _DOMAIN_TYPEHASH)\n                mstore(add(m, 0x20), nameHash)\n                mstore(add(m, 0x40), versionHash)\n                mstore(add(m, 0x60), chainid())\n                mstore(add(m, 0x80), address())\n                separator := keccak256(m, 0xa0)\n            }\n        }\n        _cachedDomainSeparator = separator;\n    }\n\n    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n    /*                   FUNCTIONS TO OVERRIDE                    */\n    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n    /// @dev Please override this function to return the domain name and version.\n    /// ```\n    ///     function _domainNameAndVersion()\n    ///         internal\n    ///         pure\n    ///         virtual\n    ///         returns (string memory name, string memory version)\n    ///     {\n    ///         name = \"Solady\";\n    ///         version = \"1\";\n    ///     }\n    /// ```\n    ///\n    /// Note: If the returned result may change after the contract has been deployed,\n    /// you must override `_domainNameAndVersionMayChange()` to return true.\n    function _domainNameAndVersion()\n        internal\n        view\n        virtual\n        returns (string memory name, string memory version);\n\n    /// @dev Returns if `_domainNameAndVersion()` may change\n    /// after the contract has been deployed (i.e. after the constructor).\n    /// Default: false.\n    function _domainNameAndVersionMayChange() internal pure virtual returns (bool result) {}\n\n    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n    /*                     HASHING OPERATIONS                     */\n    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n    /// @dev Returns the EIP-712 domain separator.\n    function _domainSeparator() internal view virtual returns (bytes32 separator) {\n        if (_domainNameAndVersionMayChange()) {\n            separator = _buildDomainSeparator();\n        } else {\n            separator = _cachedDomainSeparator;\n            if (_cachedDomainSeparatorInvalidated()) separator = _buildDomainSeparator();\n        }\n    }\n\n    /// @dev Returns the hash of the fully encoded EIP-712 message for this domain,\n    /// given `structHash`, as defined in\n    /// https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct.\n    ///\n    /// The hash can be used together with {ECDSA-recover} to obtain the signer of a message:\n    /// ```\n    ///     bytes32 digest = _hashTypedData(keccak256(abi.encode(\n    ///         keccak256(\"Mail(address to,string contents)\"),\n    ///         mailTo,\n    ///         keccak256(bytes(mailContents))\n    ///     )));\n    ///     address signer = ECDSA.recover(digest, signature);\n    /// ```\n    function _hashTypedData(bytes32 structHash) internal view virtual returns (bytes32 digest) {\n        // We will use `digest` to store the domain separator to save a bit of gas.\n        if (_domainNameAndVersionMayChange()) {\n            digest = _buildDomainSeparator();\n        } else {\n            digest = _cachedDomainSeparator;\n            if (_cachedDomainSeparatorInvalidated()) digest = _buildDomainSeparator();\n        }\n        /// @solidity memory-safe-assembly\n        assembly {\n            // Compute the digest.\n            mstore(0x00, 0x1901000000000000) // Store \"\\x19\\x01\".\n            mstore(0x1a, digest) // Store the domain separator.\n            mstore(0x3a, structHash) // Store the struct hash.\n            digest := keccak256(0x18, 0x42)\n            // Restore the part of the free memory slot that was overwritten.\n            mstore(0x3a, 0)\n        }\n    }\n\n    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n    /*                    EIP-5267 OPERATIONS                     */\n    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n    /// @dev See: https://eips.ethereum.org/EIPS/eip-5267\n    function eip712Domain()\n        public\n        view\n        virtual\n        returns (\n            bytes1 fields,\n            string memory name,\n            string memory version,\n            uint256 chainId,\n            address verifyingContract,\n            bytes32 salt,\n            uint256[] memory extensions\n        )\n    {\n        fields = hex\"0f\"; // `0b01111`.\n        (name, version) = _domainNameAndVersion();\n        chainId = block.chainid;\n        verifyingContract = address(this);\n        salt = salt; // `bytes32(0)`.\n        extensions = extensions; // `new uint256[](0)`.\n    }\n\n    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n    /*                      PRIVATE HELPERS                       */\n    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n    /// @dev Returns the EIP-712 domain separator.\n    function _buildDomainSeparator() private view returns (bytes32 separator) {\n        // We will use `separator` to store the name hash to save a bit of gas.\n        bytes32 versionHash;\n        if (_domainNameAndVersionMayChange()) {\n            (string memory name, string memory version) = _domainNameAndVersion();\n            separator = keccak256(bytes(name));\n            versionHash = keccak256(bytes(version));\n        } else {\n            separator = _cachedNameHash;\n            versionHash = _cachedVersionHash;\n        }\n        /// @solidity memory-safe-assembly\n        assembly {\n            let m := mload(0x40) // Load the free memory pointer.\n            mstore(m, _DOMAIN_TYPEHASH)\n            mstore(add(m, 0x20), separator) // Name hash.\n            mstore(add(m, 0x40), versionHash)\n            mstore(add(m, 0x60), chainid())\n            mstore(add(m, 0x80), address())\n            separator := keccak256(m, 0xa0)\n        }\n    }\n\n    /// @dev Returns if the cached domain separator has been invalidated.\n    function _cachedDomainSeparatorInvalidated() private view returns (bool result) {\n        uint256 cachedChainId = _cachedChainId;\n        uint256 cachedThis = _cachedThis;\n        /// @solidity memory-safe-assembly\n        assembly {\n            result := iszero(and(eq(chainid(), cachedChainId), eq(address(), cachedThis)))\n        }\n    }\n}\n"},"solady/src/utils/SafeTransferLib.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.4;\n\n/// @notice Safe ETH and ERC20 transfer library that gracefully handles missing return values.\n/// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/SafeTransferLib.sol)\n/// @author Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/SafeTransferLib.sol)\n///\n/// @dev Note:\n/// - For ETH transfers, please use `forceSafeTransferETH` for DoS protection.\n/// - For ERC20s, this implementation won't check that a token has code,\n///   responsibility is delegated to the caller.\nlibrary SafeTransferLib {\n    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n    /*                       CUSTOM ERRORS                        */\n    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n    /// @dev The ETH transfer has failed.\n    error ETHTransferFailed();\n\n    /// @dev The ERC20 `transferFrom` has failed.\n    error TransferFromFailed();\n\n    /// @dev The ERC20 `transfer` has failed.\n    error TransferFailed();\n\n    /// @dev The ERC20 `approve` has failed.\n    error ApproveFailed();\n\n    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n    /*                         CONSTANTS                          */\n    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n    /// @dev Suggested gas stipend for contract receiving ETH that disallows any storage writes.\n    uint256 internal constant GAS_STIPEND_NO_STORAGE_WRITES = 2300;\n\n    /// @dev Suggested gas stipend for contract receiving ETH to perform a few\n    /// storage reads and writes, but low enough to prevent griefing.\n    uint256 internal constant GAS_STIPEND_NO_GRIEF = 100000;\n\n    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n    /*                       ETH OPERATIONS                       */\n    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n    // If the ETH transfer MUST succeed with a reasonable gas budget, use the force variants.\n    //\n    // The regular variants:\n    // - Forwards all remaining gas to the target.\n    // - Reverts if the target reverts.\n    // - Reverts if the current contract has insufficient balance.\n    //\n    // The force variants:\n    // - Forwards with an optional gas stipend\n    //   (defaults to `GAS_STIPEND_NO_GRIEF`, which is sufficient for most cases).\n    // - If the target reverts, or if the gas stipend is exhausted,\n    //   creates a temporary contract to force send the ETH via `SELFDESTRUCT`.\n    //   Future compatible with `SENDALL`: https://eips.ethereum.org/EIPS/eip-4758.\n    // - Reverts if the current contract has insufficient balance.\n    //\n    // The try variants:\n    // - Forwards with a mandatory gas stipend.\n    // - Instead of reverting, returns whether the transfer succeeded.\n\n    /// @dev Sends `amount` (in wei) ETH to `to`.\n    function safeTransferETH(address to, uint256 amount) internal {\n        /// @solidity memory-safe-assembly\n        assembly {\n            if iszero(call(gas(), to, amount, codesize(), 0x00, codesize(), 0x00)) {\n                mstore(0x00, 0xb12d13eb) // `ETHTransferFailed()`.\n                revert(0x1c, 0x04)\n            }\n        }\n    }\n\n    /// @dev Sends all the ETH in the current contract to `to`.\n    function safeTransferAllETH(address to) internal {\n        /// @solidity memory-safe-assembly\n        assembly {\n            // Transfer all the ETH and check if it succeeded or not.\n            if iszero(call(gas(), to, selfbalance(), codesize(), 0x00, codesize(), 0x00)) {\n                mstore(0x00, 0xb12d13eb) // `ETHTransferFailed()`.\n                revert(0x1c, 0x04)\n            }\n        }\n    }\n\n    /// @dev Force sends `amount` (in wei) ETH to `to`, with a `gasStipend`.\n    function forceSafeTransferETH(address to, uint256 amount, uint256 gasStipend) internal {\n        /// @solidity memory-safe-assembly\n        assembly {\n            if lt(selfbalance(), amount) {\n                mstore(0x00, 0xb12d13eb) // `ETHTransferFailed()`.\n                revert(0x1c, 0x04)\n            }\n            if iszero(call(gasStipend, to, amount, codesize(), 0x00, codesize(), 0x00)) {\n                mstore(0x00, to) // Store the address in scratch space.\n                mstore8(0x0b, 0x73) // Opcode `PUSH20`.\n                mstore8(0x20, 0xff) // Opcode `SELFDESTRUCT`.\n                if iszero(create(amount, 0x0b, 0x16)) { revert(codesize(), codesize()) } // For gas estimation.\n            }\n        }\n    }\n\n    /// @dev Force sends all the ETH in the current contract to `to`, with a `gasStipend`.\n    function forceSafeTransferAllETH(address to, uint256 gasStipend) internal {\n        /// @solidity memory-safe-assembly\n        assembly {\n            if iszero(call(gasStipend, to, selfbalance(), codesize(), 0x00, codesize(), 0x00)) {\n                mstore(0x00, to) // Store the address in scratch space.\n                mstore8(0x0b, 0x73) // Opcode `PUSH20`.\n                mstore8(0x20, 0xff) // Opcode `SELFDESTRUCT`.\n                if iszero(create(selfbalance(), 0x0b, 0x16)) { revert(codesize(), codesize()) } // For gas estimation.\n            }\n        }\n    }\n\n    /// @dev Force sends `amount` (in wei) ETH to `to`, with `GAS_STIPEND_NO_GRIEF`.\n    function forceSafeTransferETH(address to, uint256 amount) internal {\n        /// @solidity memory-safe-assembly\n        assembly {\n            if lt(selfbalance(), amount) {\n                mstore(0x00, 0xb12d13eb) // `ETHTransferFailed()`.\n                revert(0x1c, 0x04)\n            }\n            if iszero(call(GAS_STIPEND_NO_GRIEF, to, amount, codesize(), 0x00, codesize(), 0x00)) {\n                mstore(0x00, to) // Store the address in scratch space.\n                mstore8(0x0b, 0x73) // Opcode `PUSH20`.\n                mstore8(0x20, 0xff) // Opcode `SELFDESTRUCT`.\n                if iszero(create(amount, 0x0b, 0x16)) { revert(codesize(), codesize()) } // For gas estimation.\n            }\n        }\n    }\n\n    /// @dev Force sends all the ETH in the current contract to `to`, with `GAS_STIPEND_NO_GRIEF`.\n    function forceSafeTransferAllETH(address to) internal {\n        /// @solidity memory-safe-assembly\n        assembly {\n            // forgefmt: disable-next-item\n            if iszero(call(GAS_STIPEND_NO_GRIEF, to, selfbalance(), codesize(), 0x00, codesize(), 0x00)) {\n                mstore(0x00, to) // Store the address in scratch space.\n                mstore8(0x0b, 0x73) // Opcode `PUSH20`.\n                mstore8(0x20, 0xff) // Opcode `SELFDESTRUCT`.\n                if iszero(create(selfbalance(), 0x0b, 0x16)) { revert(codesize(), codesize()) } // For gas estimation.\n            }\n        }\n    }\n\n    /// @dev Sends `amount` (in wei) ETH to `to`, with a `gasStipend`.\n    function trySafeTransferETH(address to, uint256 amount, uint256 gasStipend)\n        internal\n        returns (bool success)\n    {\n        /// @solidity memory-safe-assembly\n        assembly {\n            success := call(gasStipend, to, amount, codesize(), 0x00, codesize(), 0x00)\n        }\n    }\n\n    /// @dev Sends all the ETH in the current contract to `to`, with a `gasStipend`.\n    function trySafeTransferAllETH(address to, uint256 gasStipend)\n        internal\n        returns (bool success)\n    {\n        /// @solidity memory-safe-assembly\n        assembly {\n            success := call(gasStipend, to, selfbalance(), codesize(), 0x00, codesize(), 0x00)\n        }\n    }\n\n    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n    /*                      ERC20 OPERATIONS                      */\n    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n    /// @dev Sends `amount` of ERC20 `token` from `from` to `to`.\n    /// Reverts upon failure.\n    ///\n    /// The `from` account must have at least `amount` approved for\n    /// the current contract to manage.\n    function safeTransferFrom(address token, address from, address to, uint256 amount) internal {\n        /// @solidity memory-safe-assembly\n        assembly {\n            let m := mload(0x40) // Cache the free memory pointer.\n            mstore(0x60, amount) // Store the `amount` argument.\n            mstore(0x40, to) // Store the `to` argument.\n            mstore(0x2c, shl(96, from)) // Store the `from` argument.\n            mstore(0x0c, 0x23b872dd000000000000000000000000) // `transferFrom(address,address,uint256)`.\n            // Perform the transfer, reverting upon failure.\n            if iszero(\n                and( // The arguments of `and` are evaluated from right to left.\n                    or(eq(mload(0x00), 1), iszero(returndatasize())), // Returned 1 or nothing.\n                    call(gas(), token, 0, 0x1c, 0x64, 0x00, 0x20)\n                )\n            ) {\n                mstore(0x00, 0x7939f424) // `TransferFromFailed()`.\n                revert(0x1c, 0x04)\n            }\n            mstore(0x60, 0) // Restore the zero slot to zero.\n            mstore(0x40, m) // Restore the free memory pointer.\n        }\n    }\n\n    /// @dev Sends all of ERC20 `token` from `from` to `to`.\n    /// Reverts upon failure.\n    ///\n    /// The `from` account must have their entire balance approved for\n    /// the current contract to manage.\n    function safeTransferAllFrom(address token, address from, address to)\n        internal\n        returns (uint256 amount)\n    {\n        /// @solidity memory-safe-assembly\n        assembly {\n            let m := mload(0x40) // Cache the free memory pointer.\n            mstore(0x40, to) // Store the `to` argument.\n            mstore(0x2c, shl(96, from)) // Store the `from` argument.\n            mstore(0x0c, 0x70a08231000000000000000000000000) // `balanceOf(address)`.\n            // Read the balance, reverting upon failure.\n            if iszero(\n                and( // The arguments of `and` are evaluated from right to left.\n                    gt(returndatasize(), 0x1f), // At least 32 bytes returned.\n                    staticcall(gas(), token, 0x1c, 0x24, 0x60, 0x20)\n                )\n            ) {\n                mstore(0x00, 0x7939f424) // `TransferFromFailed()`.\n                revert(0x1c, 0x04)\n            }\n            mstore(0x00, 0x23b872dd) // `transferFrom(address,address,uint256)`.\n            amount := mload(0x60) // The `amount` is already at 0x60. We'll need to return it.\n            // Perform the transfer, reverting upon failure.\n            if iszero(\n                and( // The arguments of `and` are evaluated from right to left.\n                    or(eq(mload(0x00), 1), iszero(returndatasize())), // Returned 1 or nothing.\n                    call(gas(), token, 0, 0x1c, 0x64, 0x00, 0x20)\n                )\n            ) {\n                mstore(0x00, 0x7939f424) // `TransferFromFailed()`.\n                revert(0x1c, 0x04)\n            }\n            mstore(0x60, 0) // Restore the zero slot to zero.\n            mstore(0x40, m) // Restore the free memory pointer.\n        }\n    }\n\n    /// @dev Sends `amount` of ERC20 `token` from the current contract to `to`.\n    /// Reverts upon failure.\n    function safeTransfer(address token, address to, uint256 amount) internal {\n        /// @solidity memory-safe-assembly\n        assembly {\n            mstore(0x14, to) // Store the `to` argument.\n            mstore(0x34, amount) // Store the `amount` argument.\n            mstore(0x00, 0xa9059cbb000000000000000000000000) // `transfer(address,uint256)`.\n            // Perform the transfer, reverting upon failure.\n            if iszero(\n                and( // The arguments of `and` are evaluated from right to left.\n                    or(eq(mload(0x00), 1), iszero(returndatasize())), // Returned 1 or nothing.\n                    call(gas(), token, 0, 0x10, 0x44, 0x00, 0x20)\n                )\n            ) {\n                mstore(0x00, 0x90b8ec18) // `TransferFailed()`.\n                revert(0x1c, 0x04)\n            }\n            mstore(0x34, 0) // Restore the part of the free memory pointer that was overwritten.\n        }\n    }\n\n    /// @dev Sends all of ERC20 `token` from the current contract to `to`.\n    /// Reverts upon failure.\n    function safeTransferAll(address token, address to) internal returns (uint256 amount) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            mstore(0x00, 0x70a08231) // Store the function selector of `balanceOf(address)`.\n            mstore(0x20, address()) // Store the address of the current contract.\n            // Read the balance, reverting upon failure.\n            if iszero(\n                and( // The arguments of `and` are evaluated from right to left.\n                    gt(returndatasize(), 0x1f), // At least 32 bytes returned.\n                    staticcall(gas(), token, 0x1c, 0x24, 0x34, 0x20)\n                )\n            ) {\n                mstore(0x00, 0x90b8ec18) // `TransferFailed()`.\n                revert(0x1c, 0x04)\n            }\n            mstore(0x14, to) // Store the `to` argument.\n            amount := mload(0x34) // The `amount` is already at 0x34. We'll need to return it.\n            mstore(0x00, 0xa9059cbb000000000000000000000000) // `transfer(address,uint256)`.\n            // Perform the transfer, reverting upon failure.\n            if iszero(\n                and( // The arguments of `and` are evaluated from right to left.\n                    or(eq(mload(0x00), 1), iszero(returndatasize())), // Returned 1 or nothing.\n                    call(gas(), token, 0, 0x10, 0x44, 0x00, 0x20)\n                )\n            ) {\n                mstore(0x00, 0x90b8ec18) // `TransferFailed()`.\n                revert(0x1c, 0x04)\n            }\n            mstore(0x34, 0) // Restore the part of the free memory pointer that was overwritten.\n        }\n    }\n\n    /// @dev Sets `amount` of ERC20 `token` for `to` to manage on behalf of the current contract.\n    /// Reverts upon failure.\n    function safeApprove(address token, address to, uint256 amount) internal {\n        /// @solidity memory-safe-assembly\n        assembly {\n            mstore(0x14, to) // Store the `to` argument.\n            mstore(0x34, amount) // Store the `amount` argument.\n            mstore(0x00, 0x095ea7b3000000000000000000000000) // `approve(address,uint256)`.\n            // Perform the approval, reverting upon failure.\n            if iszero(\n                and( // The arguments of `and` are evaluated from right to left.\n                    or(eq(mload(0x00), 1), iszero(returndatasize())), // Returned 1 or nothing.\n                    call(gas(), token, 0, 0x10, 0x44, 0x00, 0x20)\n                )\n            ) {\n                mstore(0x00, 0x3e3f8f73) // `ApproveFailed()`.\n                revert(0x1c, 0x04)\n            }\n            mstore(0x34, 0) // Restore the part of the free memory pointer that was overwritten.\n        }\n    }\n\n    /// @dev Sets `amount` of ERC20 `token` for `to` to manage on behalf of the current contract.\n    /// If the initial attempt to approve fails, attempts to reset the approved amount to zero,\n    /// then retries the approval again (some tokens, e.g. USDT, requires this).\n    /// Reverts upon failure.\n    function safeApproveWithRetry(address token, address to, uint256 amount) internal {\n        /// @solidity memory-safe-assembly\n        assembly {\n            mstore(0x14, to) // Store the `to` argument.\n            mstore(0x34, amount) // Store the `amount` argument.\n            mstore(0x00, 0x095ea7b3000000000000000000000000) // `approve(address,uint256)`.\n            // Perform the approval, retrying upon failure.\n            if iszero(\n                and( // The arguments of `and` are evaluated from right to left.\n                    or(eq(mload(0x00), 1), iszero(returndatasize())), // Returned 1 or nothing.\n                    call(gas(), token, 0, 0x10, 0x44, 0x00, 0x20)\n                )\n            ) {\n                mstore(0x34, 0) // Store 0 for the `amount`.\n                mstore(0x00, 0x095ea7b3000000000000000000000000) // `approve(address,uint256)`.\n                pop(call(gas(), token, 0, 0x10, 0x44, codesize(), 0x00)) // Reset the approval.\n                mstore(0x34, amount) // Store back the original `amount`.\n                // Retry the approval, reverting upon failure.\n                if iszero(\n                    and(\n                        or(eq(mload(0x00), 1), iszero(returndatasize())), // Returned 1 or nothing.\n                        call(gas(), token, 0, 0x10, 0x44, 0x00, 0x20)\n                    )\n                ) {\n                    mstore(0x00, 0x3e3f8f73) // `ApproveFailed()`.\n                    revert(0x1c, 0x04)\n                }\n            }\n            mstore(0x34, 0) // Restore the part of the free memory pointer that was overwritten.\n        }\n    }\n\n    /// @dev Returns the amount of ERC20 `token` owned by `account`.\n    /// Returns zero if the `token` does not exist.\n    function balanceOf(address token, address account) internal view returns (uint256 amount) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            mstore(0x14, account) // Store the `account` argument.\n            mstore(0x00, 0x70a08231000000000000000000000000) // `balanceOf(address)`.\n            amount :=\n                mul(\n                    mload(0x20),\n                    and( // The arguments of `and` are evaluated from right to left.\n                        gt(returndatasize(), 0x1f), // At least 32 bytes returned.\n                        staticcall(gas(), token, 0x10, 0x24, 0x20, 0x20)\n                    )\n                )\n        }\n    }\n}\n"},"solady/src/utils/SignatureCheckerLib.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.4;\n\n/// @notice Signature verification helper that supports both ECDSA signatures from EOAs\n/// and ERC1271 signatures from smart contract wallets like Argent and Gnosis safe.\n/// @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/SignatureCheckerLib.sol)\n/// @author Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/SignatureChecker.sol)\n///\n/// @dev Note:\n/// - The signature checking functions use the ecrecover precompile (0x1).\n/// - The `bytes memory signature` variants use the identity precompile (0x4)\n///   to copy memory internally.\n/// - Unlike ECDSA signatures, contract signatures are revocable.\n/// - As of Solady version 0.0.134, all `bytes signature` variants accept both\n///   regular 65-byte `(r, s, v)` and EIP-2098 `(r, vs)` short form signatures.\n///   See: https://eips.ethereum.org/EIPS/eip-2098\n///   This is for calldata efficiency on smart accounts prevalent on L2s.\n///\n/// WARNING! Do NOT use signatures as unique identifiers:\n/// - Use a nonce in the digest to prevent replay attacks on the same contract.\n/// - Use EIP-712 for the digest to prevent replay attacks across different chains and contracts.\n///   EIP-712 also enables readable signing of typed data for better user safety.\n/// This implementation does NOT check if a signature is non-malleable.\nlibrary SignatureCheckerLib {\n    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n    /*               SIGNATURE CHECKING OPERATIONS                */\n    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n    /// @dev Returns whether `signature` is valid for `signer` and `hash`.\n    /// If `signer` is a smart contract, the signature is validated with ERC1271.\n    /// Otherwise, the signature is validated with `ECDSA.recover`.\n    function isValidSignatureNow(address signer, bytes32 hash, bytes memory signature)\n        internal\n        view\n        returns (bool isValid)\n    {\n        /// @solidity memory-safe-assembly\n        assembly {\n            // Clean the upper 96 bits of `signer` in case they are dirty.\n            for { signer := shr(96, shl(96, signer)) } signer {} {\n                let m := mload(0x40)\n                mstore(0x00, hash)\n                mstore(0x40, mload(add(signature, 0x20))) // `r`.\n                if eq(mload(signature), 64) {\n                    let vs := mload(add(signature, 0x40))\n                    mstore(0x20, add(shr(255, vs), 27)) // `v`.\n                    mstore(0x60, shr(1, shl(1, vs))) // `s`.\n                    let t :=\n                        staticcall(\n                            gas(), // Amount of gas left for the transaction.\n                            1, // Address of `ecrecover`.\n                            0x00, // Start of input.\n                            0x80, // Size of input.\n                            0x01, // Start of output.\n                            0x20 // Size of output.\n                        )\n                    // `returndatasize()` will be `0x20` upon success, and `0x00` otherwise.\n                    if iszero(or(iszero(returndatasize()), xor(signer, mload(t)))) {\n                        isValid := 1\n                        mstore(0x60, 0) // Restore the zero slot.\n                        mstore(0x40, m) // Restore the free memory pointer.\n                        break\n                    }\n                }\n                if eq(mload(signature), 65) {\n                    mstore(0x20, byte(0, mload(add(signature, 0x60)))) // `v`.\n                    mstore(0x60, mload(add(signature, 0x40))) // `s`.\n                    let t :=\n                        staticcall(\n                            gas(), // Amount of gas left for the transaction.\n                            1, // Address of `ecrecover`.\n                            0x00, // Start of input.\n                            0x80, // Size of input.\n                            0x01, // Start of output.\n                            0x20 // Size of output.\n                        )\n                    // `returndatasize()` will be `0x20` upon success, and `0x00` otherwise.\n                    if iszero(or(iszero(returndatasize()), xor(signer, mload(t)))) {\n                        isValid := 1\n                        mstore(0x60, 0) // Restore the zero slot.\n                        mstore(0x40, m) // Restore the free memory pointer.\n                        break\n                    }\n                }\n                mstore(0x60, 0) // Restore the zero slot.\n                mstore(0x40, m) // Restore the free memory pointer.\n\n                let f := shl(224, 0x1626ba7e)\n                mstore(m, f) // `bytes4(keccak256(\"isValidSignature(bytes32,bytes)\"))`.\n                mstore(add(m, 0x04), hash)\n                let d := add(m, 0x24)\n                mstore(d, 0x40) // The offset of the `signature` in the calldata.\n                // Copy the `signature` over.\n                let n := add(0x20, mload(signature))\n                pop(staticcall(gas(), 4, signature, n, add(m, 0x44), n))\n                // forgefmt: disable-next-item\n                isValid := and(\n                    // Whether the returndata is the magic value `0x1626ba7e` (left-aligned).\n                    eq(mload(d), f),\n                    // Whether the staticcall does not revert.\n                    // This must be placed at the end of the `and` clause,\n                    // as the arguments are evaluated from right to left.\n                    staticcall(\n                        gas(), // Remaining gas.\n                        signer, // The `signer` address.\n                        m, // Offset of calldata in memory.\n                        add(returndatasize(), 0x44), // Length of calldata in memory.\n                        d, // Offset of returndata.\n                        0x20 // Length of returndata to write.\n                    )\n                )\n                break\n            }\n        }\n    }\n\n    /// @dev Returns whether `signature` is valid for `signer` and `hash`.\n    /// If `signer` is a smart contract, the signature is validated with ERC1271.\n    /// Otherwise, the signature is validated with `ECDSA.recover`.\n    function isValidSignatureNowCalldata(address signer, bytes32 hash, bytes calldata signature)\n        internal\n        view\n        returns (bool isValid)\n    {\n        /// @solidity memory-safe-assembly\n        assembly {\n            // Clean the upper 96 bits of `signer` in case they are dirty.\n            for { signer := shr(96, shl(96, signer)) } signer {} {\n                let m := mload(0x40)\n                mstore(0x00, hash)\n                if eq(signature.length, 64) {\n                    let vs := calldataload(add(signature.offset, 0x20))\n                    mstore(0x20, add(shr(255, vs), 27)) // `v`.\n                    mstore(0x40, calldataload(signature.offset)) // `r`.\n                    mstore(0x60, shr(1, shl(1, vs))) // `s`.\n                    let t :=\n                        staticcall(\n                            gas(), // Amount of gas left for the transaction.\n                            1, // Address of `ecrecover`.\n                            0x00, // Start of input.\n                            0x80, // Size of input.\n                            0x01, // Start of output.\n                            0x20 // Size of output.\n                        )\n                    // `returndatasize()` will be `0x20` upon success, and `0x00` otherwise.\n                    if iszero(or(iszero(returndatasize()), xor(signer, mload(t)))) {\n                        isValid := 1\n                        mstore(0x60, 0) // Restore the zero slot.\n                        mstore(0x40, m) // Restore the free memory pointer.\n                        break\n                    }\n                }\n                if eq(signature.length, 65) {\n                    mstore(0x20, byte(0, calldataload(add(signature.offset, 0x40)))) // `v`.\n                    calldatacopy(0x40, signature.offset, 0x40) // `r`, `s`.\n                    let t :=\n                        staticcall(\n                            gas(), // Amount of gas left for the transaction.\n                            1, // Address of `ecrecover`.\n                            0x00, // Start of input.\n                            0x80, // Size of input.\n                            0x01, // Start of output.\n                            0x20 // Size of output.\n                        )\n                    // `returndatasize()` will be `0x20` upon success, and `0x00` otherwise.\n                    if iszero(or(iszero(returndatasize()), xor(signer, mload(t)))) {\n                        isValid := 1\n                        mstore(0x60, 0) // Restore the zero slot.\n                        mstore(0x40, m) // Restore the free memory pointer.\n                        break\n                    }\n                }\n                mstore(0x60, 0) // Restore the zero slot.\n                mstore(0x40, m) // Restore the free memory pointer.\n\n                let f := shl(224, 0x1626ba7e)\n                mstore(m, f) // `bytes4(keccak256(\"isValidSignature(bytes32,bytes)\"))`.\n                mstore(add(m, 0x04), hash)\n                let d := add(m, 0x24)\n                mstore(d, 0x40) // The offset of the `signature` in the calldata.\n                mstore(add(m, 0x44), signature.length)\n                // Copy the `signature` over.\n                calldatacopy(add(m, 0x64), signature.offset, signature.length)\n                // forgefmt: disable-next-item\n                isValid := and(\n                    // Whether the returndata is the magic value `0x1626ba7e` (left-aligned).\n                    eq(mload(d), f),\n                    // Whether the staticcall does not revert.\n                    // This must be placed at the end of the `and` clause,\n                    // as the arguments are evaluated from right to left.\n                    staticcall(\n                        gas(), // Remaining gas.\n                        signer, // The `signer` address.\n                        m, // Offset of calldata in memory.\n                        add(signature.length, 0x64), // Length of calldata in memory.\n                        d, // Offset of returndata.\n                        0x20 // Length of returndata to write.\n                    )\n                )\n                break\n            }\n        }\n    }\n\n    /// @dev Returns whether the signature (`r`, `vs`) is valid for `signer` and `hash`.\n    /// If `signer` is a smart contract, the signature is validated with ERC1271.\n    /// Otherwise, the signature is validated with `ECDSA.recover`.\n    function isValidSignatureNow(address signer, bytes32 hash, bytes32 r, bytes32 vs)\n        internal\n        view\n        returns (bool isValid)\n    {\n        /// @solidity memory-safe-assembly\n        assembly {\n            // Clean the upper 96 bits of `signer` in case they are dirty.\n            for { signer := shr(96, shl(96, signer)) } signer {} {\n                let m := mload(0x40)\n                mstore(0x00, hash)\n                mstore(0x20, add(shr(255, vs), 27)) // `v`.\n                mstore(0x40, r) // `r`.\n                mstore(0x60, shr(1, shl(1, vs))) // `s`.\n                let t :=\n                    staticcall(\n                        gas(), // Amount of gas left for the transaction.\n                        1, // Address of `ecrecover`.\n                        0x00, // Start of input.\n                        0x80, // Size of input.\n                        0x01, // Start of output.\n                        0x20 // Size of output.\n                    )\n                // `returndatasize()` will be `0x20` upon success, and `0x00` otherwise.\n                if iszero(or(iszero(returndatasize()), xor(signer, mload(t)))) {\n                    isValid := 1\n                    mstore(0x60, 0) // Restore the zero slot.\n                    mstore(0x40, m) // Restore the free memory pointer.\n                    break\n                }\n\n                let f := shl(224, 0x1626ba7e)\n                mstore(m, f) // `bytes4(keccak256(\"isValidSignature(bytes32,bytes)\"))`.\n                mstore(add(m, 0x04), hash)\n                let d := add(m, 0x24)\n                mstore(d, 0x40) // The offset of the `signature` in the calldata.\n                mstore(add(m, 0x44), 65) // Length of the signature.\n                mstore(add(m, 0x64), r) // `r`.\n                mstore(add(m, 0x84), mload(0x60)) // `s`.\n                mstore8(add(m, 0xa4), mload(0x20)) // `v`.\n                // forgefmt: disable-next-item\n                isValid := and(\n                    // Whether the returndata is the magic value `0x1626ba7e` (left-aligned).\n                    eq(mload(d), f),\n                    // Whether the staticcall does not revert.\n                    // This must be placed at the end of the `and` clause,\n                    // as the arguments are evaluated from right to left.\n                    staticcall(\n                        gas(), // Remaining gas.\n                        signer, // The `signer` address.\n                        m, // Offset of calldata in memory.\n                        0xa5, // Length of calldata in memory.\n                        d, // Offset of returndata.\n                        0x20 // Length of returndata to write.\n                    )\n                )\n                mstore(0x60, 0) // Restore the zero slot.\n                mstore(0x40, m) // Restore the free memory pointer.\n                break\n            }\n        }\n    }\n\n    /// @dev Returns whether the signature (`v`, `r`, `s`) is valid for `signer` and `hash`.\n    /// If `signer` is a smart contract, the signature is validated with ERC1271.\n    /// Otherwise, the signature is validated with `ECDSA.recover`.\n    function isValidSignatureNow(address signer, bytes32 hash, uint8 v, bytes32 r, bytes32 s)\n        internal\n        view\n        returns (bool isValid)\n    {\n        /// @solidity memory-safe-assembly\n        assembly {\n            // Clean the upper 96 bits of `signer` in case they are dirty.\n            for { signer := shr(96, shl(96, signer)) } signer {} {\n                let m := mload(0x40)\n                mstore(0x00, hash)\n                mstore(0x20, and(v, 0xff)) // `v`.\n                mstore(0x40, r) // `r`.\n                mstore(0x60, s) // `s`.\n                let t :=\n                    staticcall(\n                        gas(), // Amount of gas left for the transaction.\n                        1, // Address of `ecrecover`.\n                        0x00, // Start of input.\n                        0x80, // Size of input.\n                        0x01, // Start of output.\n                        0x20 // Size of output.\n                    )\n                // `returndatasize()` will be `0x20` upon success, and `0x00` otherwise.\n                if iszero(or(iszero(returndatasize()), xor(signer, mload(t)))) {\n                    isValid := 1\n                    mstore(0x60, 0) // Restore the zero slot.\n                    mstore(0x40, m) // Restore the free memory pointer.\n                    break\n                }\n\n                let f := shl(224, 0x1626ba7e)\n                mstore(m, f) // `bytes4(keccak256(\"isValidSignature(bytes32,bytes)\"))`.\n                mstore(add(m, 0x04), hash)\n                let d := add(m, 0x24)\n                mstore(d, 0x40) // The offset of the `signature` in the calldata.\n                mstore(add(m, 0x44), 65) // Length of the signature.\n                mstore(add(m, 0x64), r) // `r`.\n                mstore(add(m, 0x84), s) // `s`.\n                mstore8(add(m, 0xa4), v) // `v`.\n                // forgefmt: disable-next-item\n                isValid := and(\n                    // Whether the returndata is the magic value `0x1626ba7e` (left-aligned).\n                    eq(mload(d), f),\n                    // Whether the staticcall does not revert.\n                    // This must be placed at the end of the `and` clause,\n                    // as the arguments are evaluated from right to left.\n                    staticcall(\n                        gas(), // Remaining gas.\n                        signer, // The `signer` address.\n                        m, // Offset of calldata in memory.\n                        0xa5, // Length of calldata in memory.\n                        d, // Offset of returndata.\n                        0x20 // Length of returndata to write.\n                    )\n                )\n                mstore(0x60, 0) // Restore the zero slot.\n                mstore(0x40, m) // Restore the free memory pointer.\n                break\n            }\n        }\n    }\n\n    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n    /*                     ERC1271 OPERATIONS                     */\n    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n    /// @dev Returns whether `signature` is valid for `hash` for an ERC1271 `signer` contract.\n    function isValidERC1271SignatureNow(address signer, bytes32 hash, bytes memory signature)\n        internal\n        view\n        returns (bool isValid)\n    {\n        /// @solidity memory-safe-assembly\n        assembly {\n            let m := mload(0x40)\n            let f := shl(224, 0x1626ba7e)\n            mstore(m, f) // `bytes4(keccak256(\"isValidSignature(bytes32,bytes)\"))`.\n            mstore(add(m, 0x04), hash)\n            let d := add(m, 0x24)\n            mstore(d, 0x40) // The offset of the `signature` in the calldata.\n            // Copy the `signature` over.\n            let n := add(0x20, mload(signature))\n            pop(staticcall(gas(), 4, signature, n, add(m, 0x44), n))\n            // forgefmt: disable-next-item\n            isValid := and(\n                // Whether the returndata is the magic value `0x1626ba7e` (left-aligned).\n                eq(mload(d), f),\n                // Whether the staticcall does not revert.\n                // This must be placed at the end of the `and` clause,\n                // as the arguments are evaluated from right to left.\n                staticcall(\n                    gas(), // Remaining gas.\n                    signer, // The `signer` address.\n                    m, // Offset of calldata in memory.\n                    add(returndatasize(), 0x44), // Length of calldata in memory.\n                    d, // Offset of returndata.\n                    0x20 // Length of returndata to write.\n                )\n            )\n        }\n    }\n\n    /// @dev Returns whether `signature` is valid for `hash` for an ERC1271 `signer` contract.\n    function isValidERC1271SignatureNowCalldata(\n        address signer,\n        bytes32 hash,\n        bytes calldata signature\n    ) internal view returns (bool isValid) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            let m := mload(0x40)\n            let f := shl(224, 0x1626ba7e)\n            mstore(m, f) // `bytes4(keccak256(\"isValidSignature(bytes32,bytes)\"))`.\n            mstore(add(m, 0x04), hash)\n            let d := add(m, 0x24)\n            mstore(d, 0x40) // The offset of the `signature` in the calldata.\n            mstore(add(m, 0x44), signature.length)\n            // Copy the `signature` over.\n            calldatacopy(add(m, 0x64), signature.offset, signature.length)\n            // forgefmt: disable-next-item\n            isValid := and(\n                // Whether the returndata is the magic value `0x1626ba7e` (left-aligned).\n                eq(mload(d), f),\n                // Whether the staticcall does not revert.\n                // This must be placed at the end of the `and` clause,\n                // as the arguments are evaluated from right to left.\n                staticcall(\n                    gas(), // Remaining gas.\n                    signer, // The `signer` address.\n                    m, // Offset of calldata in memory.\n                    add(signature.length, 0x64), // Length of calldata in memory.\n                    d, // Offset of returndata.\n                    0x20 // Length of returndata to write.\n                )\n            )\n        }\n    }\n\n    /// @dev Returns whether the signature (`r`, `vs`) is valid for `hash`\n    /// for an ERC1271 `signer` contract.\n    function isValidERC1271SignatureNow(address signer, bytes32 hash, bytes32 r, bytes32 vs)\n        internal\n        view\n        returns (bool isValid)\n    {\n        /// @solidity memory-safe-assembly\n        assembly {\n            let m := mload(0x40)\n            let f := shl(224, 0x1626ba7e)\n            mstore(m, f) // `bytes4(keccak256(\"isValidSignature(bytes32,bytes)\"))`.\n            mstore(add(m, 0x04), hash)\n            let d := add(m, 0x24)\n            mstore(d, 0x40) // The offset of the `signature` in the calldata.\n            mstore(add(m, 0x44), 65) // Length of the signature.\n            mstore(add(m, 0x64), r) // `r`.\n            mstore(add(m, 0x84), shr(1, shl(1, vs))) // `s`.\n            mstore8(add(m, 0xa4), add(shr(255, vs), 27)) // `v`.\n            // forgefmt: disable-next-item\n            isValid := and(\n                // Whether the returndata is the magic value `0x1626ba7e` (left-aligned).\n                eq(mload(d), f),\n                // Whether the staticcall does not revert.\n                // This must be placed at the end of the `and` clause,\n                // as the arguments are evaluated from right to left.\n                staticcall(\n                    gas(), // Remaining gas.\n                    signer, // The `signer` address.\n                    m, // Offset of calldata in memory.\n                    0xa5, // Length of calldata in memory.\n                    d, // Offset of returndata.\n                    0x20 // Length of returndata to write.\n                )\n            )\n        }\n    }\n\n    /// @dev Returns whether the signature (`v`, `r`, `s`) is valid for `hash`\n    /// for an ERC1271 `signer` contract.\n    function isValidERC1271SignatureNow(address signer, bytes32 hash, uint8 v, bytes32 r, bytes32 s)\n        internal\n        view\n        returns (bool isValid)\n    {\n        /// @solidity memory-safe-assembly\n        assembly {\n            let m := mload(0x40)\n            let f := shl(224, 0x1626ba7e)\n            mstore(m, f) // `bytes4(keccak256(\"isValidSignature(bytes32,bytes)\"))`.\n            mstore(add(m, 0x04), hash)\n            let d := add(m, 0x24)\n            mstore(d, 0x40) // The offset of the `signature` in the calldata.\n            mstore(add(m, 0x44), 65) // Length of the signature.\n            mstore(add(m, 0x64), r) // `r`.\n            mstore(add(m, 0x84), s) // `s`.\n            mstore8(add(m, 0xa4), v) // `v`.\n            // forgefmt: disable-next-item\n            isValid := and(\n                // Whether the returndata is the magic value `0x1626ba7e` (left-aligned).\n                eq(mload(d), f),\n                // Whether the staticcall does not revert.\n                // This must be placed at the end of the `and` clause,\n                // as the arguments are evaluated from right to left.\n                staticcall(\n                    gas(), // Remaining gas.\n                    signer, // The `signer` address.\n                    m, // Offset of calldata in memory.\n                    0xa5, // Length of calldata in memory.\n                    d, // Offset of returndata.\n                    0x20 // Length of returndata to write.\n                )\n            )\n        }\n    }\n\n    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n    /*                     HASHING OPERATIONS                     */\n    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n    /// @dev Returns an Ethereum Signed Message, created from a `hash`.\n    /// This produces a hash corresponding to the one signed with the\n    /// [`eth_sign`](https://eth.wiki/json-rpc/API#eth_sign)\n    /// JSON-RPC method as part of EIP-191.\n    function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32 result) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            mstore(0x20, hash) // Store into scratch space for keccak256.\n            mstore(0x00, \"\\x00\\x00\\x00\\x00\\x19Ethereum Signed Message:\\n32\") // 28 bytes.\n            result := keccak256(0x04, 0x3c) // `32 * 2 - (32 - 28) = 60 = 0x3c`.\n        }\n    }\n\n    /// @dev Returns an Ethereum Signed Message, created from `s`.\n    /// This produces a hash corresponding to the one signed with the\n    /// [`eth_sign`](https://eth.wiki/json-rpc/API#eth_sign)\n    /// JSON-RPC method as part of EIP-191.\n    /// Note: Supports lengths of `s` up to 999999 bytes.\n    function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32 result) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            let sLength := mload(s)\n            let o := 0x20\n            mstore(o, \"\\x19Ethereum Signed Message:\\n\") // 26 bytes, zero-right-padded.\n            mstore(0x00, 0x00)\n            // Convert the `s.length` to ASCII decimal representation: `base10(s.length)`.\n            for { let temp := sLength } 1 {} {\n                o := sub(o, 1)\n                mstore8(o, add(48, mod(temp, 10)))\n                temp := div(temp, 10)\n                if iszero(temp) { break }\n            }\n            let n := sub(0x3a, o) // Header length: `26 + 32 - o`.\n            // Throw an out-of-offset error (consumes all gas) if the header exceeds 32 bytes.\n            returndatacopy(returndatasize(), returndatasize(), gt(n, 0x20))\n            mstore(s, or(mload(0x00), mload(n))) // Temporarily store the header.\n            result := keccak256(add(s, sub(0x20, n)), add(n, sLength))\n            mstore(s, sLength) // Restore the length.\n        }\n    }\n\n    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/\n    /*                   EMPTY CALLDATA HELPERS                   */\n    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/\n\n    /// @dev Returns an empty calldata bytes.\n    function emptySignature() internal pure returns (bytes calldata signature) {\n        /// @solidity memory-safe-assembly\n        assembly {\n            signature.length := 0\n        }\n    }\n}\n"}},"settings":{"optimizer":{"enabled":true,"runs":999999},"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}}}},"output":{"sources":{"contracts/SwapERC20.sol":{"ast":{"absolutePath":"contracts/SwapERC20.sol","exportedSymbols":{"ECDSA":[2442],"EIP712":[2745],"ERC20":[2299],"ISwapERC20":[1686],"Ownable":[1880],"SafeTransferLib":[2941],"SignatureCheckerLib":[3097],"SwapERC20":[1448]},"id":1449,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","0.8",".23"],"nodeType":"PragmaDirective","src":"32:23:0"},{"absolutePath":"solady/src/utils/ECDSA.sol","file":"solady/src/utils/ECDSA.sol","id":3,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1449,"sourceUnit":2443,"src":"57:51:0","symbolAliases":[{"foreign":{"id":2,"name":"ECDSA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2442,"src":"66:5:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"solady/src/utils/EIP712.sol","file":"solady/src/utils/EIP712.sol","id":5,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1449,"sourceUnit":2746,"src":"109:53:0","symbolAliases":[{"foreign":{"id":4,"name":"EIP712","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2745,"src":"118:6:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"solady/src/tokens/ERC20.sol","file":"solady/src/tokens/ERC20.sol","id":7,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1449,"sourceUnit":2300,"src":"163:52:0","symbolAliases":[{"foreign":{"id":6,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2299,"src":"172:5:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"solady/src/auth/Ownable.sol","file":"solady/src/auth/Ownable.sol","id":9,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1449,"sourceUnit":1881,"src":"216:54:0","symbolAliases":[{"foreign":{"id":8,"name":"Ownable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1880,"src":"225:7:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"solady/src/utils/SafeTransferLib.sol","file":"solady/src/utils/SafeTransferLib.sol","id":11,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1449,"sourceUnit":2942,"src":"271:71:0","symbolAliases":[{"foreign":{"id":10,"name":"SafeTransferLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2941,"src":"280:15:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"solady/src/utils/SignatureCheckerLib.sol","file":"solady/src/utils/SignatureCheckerLib.sol","id":13,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1449,"sourceUnit":3098,"src":"343:79:0","symbolAliases":[{"foreign":{"id":12,"name":"SignatureCheckerLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3097,"src":"352:19:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/ISwapERC20.sol","file":"./interfaces/ISwapERC20.sol","id":14,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1449,"sourceUnit":1687,"src":"424:37:0","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":16,"name":"ISwapERC20","nameLocations":["571:10:0"],"nodeType":"IdentifierPath","referencedDeclaration":1686,"src":"571:10:0"},"id":17,"nodeType":"InheritanceSpecifier","src":"571:10:0"},{"baseName":{"id":18,"name":"Ownable","nameLocations":["583:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1880,"src":"583:7:0"},"id":19,"nodeType":"InheritanceSpecifier","src":"583:7:0"},{"baseName":{"id":20,"name":"EIP712","nameLocations":["592:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2745,"src":"592:6:0"},"id":21,"nodeType":"InheritanceSpecifier","src":"592:6:0"}],"canonicalName":"SwapERC20","contractDependencies":[],"contractKind":"contract","documentation":{"id":15,"nodeType":"StructuredDocumentation","src":"463:85:0","text":" @title AirSwap: Atomic ERC20 Token Swap\n @notice https://www.airswap.io/"},"fullyImplemented":true,"id":1448,"linearizedBaseContracts":[1448,2745,1880,1686],"name":"SwapERC20","nameLocation":"558:9:0","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"3644e515","id":23,"mutability":"immutable","name":"DOMAIN_SEPARATOR","nameLocation":"628:16:0","nodeType":"VariableDeclaration","scope":1448,"src":"603:41:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":22,"name":"bytes32","nodeType":"ElementaryTypeName","src":"603:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":true,"functionSelector":"f973a209","id":32,"mutability":"constant","name":"ORDER_TYPEHASH","nameLocation":"673:14:0","nodeType":"VariableDeclaration","scope":1448,"src":"649:300:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":24,"name":"bytes32","nodeType":"ElementaryTypeName","src":"649:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"arguments":[{"hexValue":"4f7264657245524332302875696e74323536206e6f6e63652c75696e74323536206578706972792c61646472657373207369676e657257616c6c65742c61646472657373207369676e6572546f6b656e2c75696e74323536207369676e6572416d6f756e742c","id":28,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"737:104:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_a35663569bd702bea491990a007131496e4d3753f9234d1b7e68f8b412726917","typeString":"literal_string \"OrderERC20(uint256 nonce,uint256 expiry,address signerWallet,address signerToken,uint256 signerAmount,\""},"value":"OrderERC20(uint256 nonce,uint256 expiry,address signerWallet,address signerToken,uint256 signerAmount,"},{"hexValue":"75696e743235362070726f746f636f6c4665652c616464726573732073656e64657257616c6c65742c616464726573732073656e646572546f6b656e2c75696e743235362073656e646572416d6f756e7429","id":29,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"851:84:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_6ba965eabc6eaeed812e8920669228dfe87f072ba49959aba6545388ff29ea5b","typeString":"literal_string \"uint256 protocolFee,address senderWallet,address senderToken,uint256 senderAmount)\""},"value":"uint256 protocolFee,address senderWallet,address senderToken,uint256 senderAmount)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_a35663569bd702bea491990a007131496e4d3753f9234d1b7e68f8b412726917","typeString":"literal_string \"OrderERC20(uint256 nonce,uint256 expiry,address signerWallet,address signerToken,uint256 signerAmount,\""},{"typeIdentifier":"t_stringliteral_6ba965eabc6eaeed812e8920669228dfe87f072ba49959aba6545388ff29ea5b","typeString":"literal_string \"uint256 protocolFee,address senderWallet,address senderToken,uint256 senderAmount)\""}],"expression":{"id":26,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"711:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":27,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"715:12:0","memberName":"encodePacked","nodeType":"MemberAccess","src":"711:16:0","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":30,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"711:232:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":25,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"694:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":31,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"694:255:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"constant":true,"functionSelector":"9e93ad8e","id":35,"mutability":"constant","name":"FEE_DIVISOR","nameLocation":"978:11:0","nodeType":"VariableDeclaration","scope":1448,"src":"954:43:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33,"name":"uint256","nodeType":"ElementaryTypeName","src":"954:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3130303030","id":34,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"992:5:0","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"visibility":"public"},{"constant":true,"id":38,"mutability":"constant","name":"MAX_ERROR_COUNT","nameLocation":"1026:15:0","nodeType":"VariableDeclaration","scope":1448,"src":"1001:44:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":36,"name":"uint256","nodeType":"ElementaryTypeName","src":"1001:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"37","id":37,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1044:1:0","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"visibility":"private"},{"constant":true,"id":41,"mutability":"constant","name":"MAX_MAX","nameLocation":"1074:7:0","nodeType":"VariableDeclaration","scope":1448,"src":"1049:38:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":39,"name":"uint256","nodeType":"ElementaryTypeName","src":"1049:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313030","id":40,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1084:3:0","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"visibility":"private"},{"constant":true,"id":44,"mutability":"constant","name":"MAX_SCALE","nameLocation":"1116:9:0","nodeType":"VariableDeclaration","scope":1448,"src":"1091:39:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":42,"name":"uint256","nodeType":"ElementaryTypeName","src":"1091:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3737","id":43,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1128:2:0","typeDescriptions":{"typeIdentifier":"t_rational_77_by_1","typeString":"int_const 77"},"value":"77"},"visibility":"private"},{"constant":false,"documentation":{"id":45,"nodeType":"StructuredDocumentation","src":"1135:306:0","text":" @notice Double mapping of signers to nonce groups to nonce states\n @dev The nonce group is computed as nonce / 256, so each group of 256 sequential nonces uses the same key\n @dev The nonce states are encoded as 256 bits, for each nonce in the group 0 means available and 1 means used"},"id":51,"mutability":"mutable","name":"_nonceGroups","nameLocation":"1500:12:0","nodeType":"VariableDeclaration","scope":1448,"src":"1444:68:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"},"typeName":{"id":50,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":46,"name":"address","nodeType":"ElementaryTypeName","src":"1452:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1444:47:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":49,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":47,"name":"uint256","nodeType":"ElementaryTypeName","src":"1471:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1463:27:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":48,"name":"uint256","nodeType":"ElementaryTypeName","src":"1482:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"baseFunctions":[1676],"constant":false,"functionSelector":"b9181611","id":56,"mutability":"mutable","name":"authorized","nameLocation":"1608:10:0","nodeType":"VariableDeclaration","overrides":{"id":55,"nodeType":"OverrideSpecifier","overrides":[],"src":"1599:8:0"},"scope":1448,"src":"1564:54:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"typeName":{"id":54,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":52,"name":"address","nodeType":"ElementaryTypeName","src":"1572:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1564:27:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":53,"name":"address","nodeType":"ElementaryTypeName","src":"1583:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"public"},{"constant":false,"functionSelector":"b0e21e8a","id":58,"mutability":"mutable","name":"protocolFee","nameLocation":"1638:11:0","nodeType":"VariableDeclaration","scope":1448,"src":"1623:26:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":57,"name":"uint256","nodeType":"ElementaryTypeName","src":"1623:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"f4ebc699","id":60,"mutability":"mutable","name":"protocolFeeLight","nameLocation":"1668:16:0","nodeType":"VariableDeclaration","scope":1448,"src":"1653:31:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":59,"name":"uint256","nodeType":"ElementaryTypeName","src":"1653:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"cbf7c6c3","id":62,"mutability":"mutable","name":"protocolFeeWallet","nameLocation":"1703:17:0","nodeType":"VariableDeclaration","scope":1448,"src":"1688:32:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61,"name":"address","nodeType":"ElementaryTypeName","src":"1688:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"constant":false,"functionSelector":"c5c62a7d","id":64,"mutability":"mutable","name":"bonusScale","nameLocation":"1739:10:0","nodeType":"VariableDeclaration","scope":1448,"src":"1724:25:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":63,"name":"uint256","nodeType":"ElementaryTypeName","src":"1724:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"7aba86d2","id":66,"mutability":"mutable","name":"bonusMax","nameLocation":"1768:8:0","nodeType":"VariableDeclaration","scope":1448,"src":"1753:23:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":65,"name":"uint256","nodeType":"ElementaryTypeName","src":"1753:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"constant":false,"functionSelector":"72f702f3","id":68,"mutability":"mutable","name":"stakingToken","nameLocation":"1795:12:0","nodeType":"VariableDeclaration","scope":1448,"src":"1780:27:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":67,"name":"address","nodeType":"ElementaryTypeName","src":"1780:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"body":{"id":150,"nodeType":"Block","src":"2311:584:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":84,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":82,"name":"_protocolFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"2321:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":83,"name":"FEE_DIVISOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"2337:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2321:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":88,"nodeType":"IfStatement","src":"2317:60:0","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":85,"name":"ProtocolFeeInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1531,"src":"2357:18:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":86,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2357:20:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":87,"nodeType":"RevertStatement","src":"2350:27:0"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":91,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":89,"name":"_protocolFeeLight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73,"src":"2387:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":90,"name":"FEE_DIVISOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"2408:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2387:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":95,"nodeType":"IfStatement","src":"2383:70:0","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":92,"name":"ProtocolFeeLightInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1533,"src":"2428:23:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":93,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2428:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":94,"nodeType":"RevertStatement","src":"2421:32:0"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":96,"name":"_protocolFeeWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75,"src":"2463:18:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":99,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2493: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":98,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2485:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":97,"name":"address","nodeType":"ElementaryTypeName","src":"2485:7:0","typeDescriptions":{}}},"id":100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2485:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2463:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":105,"nodeType":"IfStatement","src":"2459:71:0","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":102,"name":"ProtocolFeeWalletInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1535,"src":"2504:24:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2504:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":104,"nodeType":"RevertStatement","src":"2497:33:0"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":106,"name":"_bonusMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79,"src":"2540:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":107,"name":"MAX_MAX","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41,"src":"2552:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2540:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":112,"nodeType":"IfStatement","src":"2536:44:0","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":109,"name":"MaxTooHigh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1523,"src":"2568:10:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2568:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":111,"nodeType":"RevertStatement","src":"2561:19:0"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":113,"name":"_bonusScale","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77,"src":"2590:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":114,"name":"MAX_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44,"src":"2604:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2590:23:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":119,"nodeType":"IfStatement","src":"2586:50:0","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":116,"name":"ScaleTooHigh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1537,"src":"2622:12:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2622:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":118,"nodeType":"RevertStatement","src":"2615:21:0"}},{"expression":{"arguments":[{"expression":{"id":121,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2660:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2664:6:0","memberName":"sender","nodeType":"MemberAccess","src":"2660:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":120,"name":"_initializeOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1759,"src":"2643:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2643:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":124,"nodeType":"ExpressionStatement","src":"2643:28:0"},{"expression":{"id":128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":125,"name":"DOMAIN_SEPARATOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23,"src":"2678:16:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":126,"name":"_domainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2596,"src":"2697:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2697:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2678:37:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":129,"nodeType":"ExpressionStatement","src":"2678:37:0"},{"expression":{"id":132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":130,"name":"protocolFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58,"src":"2722:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":131,"name":"_protocolFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"2736:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2722:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":133,"nodeType":"ExpressionStatement","src":"2722:26:0"},{"expression":{"id":136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":134,"name":"protocolFeeLight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60,"src":"2754:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":135,"name":"_protocolFeeLight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73,"src":"2773:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2754:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":137,"nodeType":"ExpressionStatement","src":"2754:36:0"},{"expression":{"id":140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":138,"name":"protocolFeeWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62,"src":"2796:17:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":139,"name":"_protocolFeeWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75,"src":"2816:18:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2796:38:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":141,"nodeType":"ExpressionStatement","src":"2796:38:0"},{"expression":{"id":144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":142,"name":"bonusMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"2840:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":143,"name":"_bonusMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79,"src":"2851:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2840:20:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":145,"nodeType":"ExpressionStatement","src":"2840:20:0"},{"expression":{"id":148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":146,"name":"bonusScale","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":64,"src":"2866:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":147,"name":"_bonusScale","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77,"src":"2879:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2866:24:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":149,"nodeType":"ExpressionStatement","src":"2866:24:0"}]},"documentation":{"id":69,"nodeType":"StructuredDocumentation","src":"1812:343:0","text":" @notice SwapERC20 constructor\n @dev Sets domain and version for EIP712 signatures\n @param _protocolFee uin256 protocol fee to be assessed on swaps\n @param _protocolFeeWallet address destination for protocol fees\n @param _bonusScale uin256 scale factor for bonus\n @param _bonusMax uint256 max bonus percentage"},"id":151,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":80,"nodeType":"ParameterList","parameters":[{"constant":false,"id":71,"mutability":"mutable","name":"_protocolFee","nameLocation":"2183:12:0","nodeType":"VariableDeclaration","scope":151,"src":"2175:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":70,"name":"uint256","nodeType":"ElementaryTypeName","src":"2175:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":73,"mutability":"mutable","name":"_protocolFeeLight","nameLocation":"2209:17:0","nodeType":"VariableDeclaration","scope":151,"src":"2201:25:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72,"name":"uint256","nodeType":"ElementaryTypeName","src":"2201:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":75,"mutability":"mutable","name":"_protocolFeeWallet","nameLocation":"2240:18:0","nodeType":"VariableDeclaration","scope":151,"src":"2232:26:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":74,"name":"address","nodeType":"ElementaryTypeName","src":"2232:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":77,"mutability":"mutable","name":"_bonusScale","nameLocation":"2272:11:0","nodeType":"VariableDeclaration","scope":151,"src":"2264:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76,"name":"uint256","nodeType":"ElementaryTypeName","src":"2264:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":79,"mutability":"mutable","name":"_bonusMax","nameLocation":"2297:9:0","nodeType":"VariableDeclaration","scope":151,"src":"2289:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78,"name":"uint256","nodeType":"ElementaryTypeName","src":"2289:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2169:141:0"},"returnParameters":{"id":81,"nodeType":"ParameterList","parameters":[],"src":"2311:0:0"},"scope":1448,"src":"2158:737:0","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2560],"body":{"id":168,"nodeType":"Block","src":"3158:51:0","statements":[{"expression":{"id":162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":160,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":156,"src":"3164:4:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"535741505f4552433230","id":161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3171:12:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_53be2722d46649832d0712cbda538f9399a2de2a00cf45739b4874b2169e004c","typeString":"literal_string \"SWAP_ERC20\""},"value":"SWAP_ERC20"},"src":"3164:19:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":163,"nodeType":"ExpressionStatement","src":"3164:19:0"},{"expression":{"id":166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":164,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":158,"src":"3189:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"342e33","id":165,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3199:5:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_1a4a38b58898b90facc89350d9c72c929053b43bc088c91ec178f60fc1f34678","typeString":"literal_string \"4.3\""},"value":"4.3"},"src":"3189:15:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":167,"nodeType":"ExpressionStatement","src":"3189:15:0"}]},"documentation":{"id":152,"nodeType":"StructuredDocumentation","src":"2899:130:0","text":" @notice Return EIP712 domain values\n @return name EIP712 domain name\n @return version EIP712 domain version"},"id":169,"implemented":true,"kind":"function","modifiers":[],"name":"_domainNameAndVersion","nameLocation":"3041:21:0","nodeType":"FunctionDefinition","overrides":{"id":154,"nodeType":"OverrideSpecifier","overrides":[],"src":"3091:8:0"},"parameters":{"id":153,"nodeType":"ParameterList","parameters":[],"src":"3062:2:0"},"returnParameters":{"id":159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":156,"mutability":"mutable","name":"name","nameLocation":"3127:4:0","nodeType":"VariableDeclaration","scope":169,"src":"3113:18:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":155,"name":"string","nodeType":"ElementaryTypeName","src":"3113:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":158,"mutability":"mutable","name":"version","nameLocation":"3147:7:0","nodeType":"VariableDeclaration","scope":169,"src":"3133:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":157,"name":"string","nodeType":"ElementaryTypeName","src":"3133:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3112:43:0"},"scope":1448,"src":"3032:177:0","stateMutability":"pure","virtual":false,"visibility":"internal"},{"baseFunctions":[1570],"body":{"id":241,"nodeType":"Block","src":"4210:731:0","statements":[{"expression":{"arguments":[{"id":197,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":174,"src":"4263:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":198,"name":"expiry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":176,"src":"4276:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":199,"name":"signerWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":178,"src":"4290:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":200,"name":"signerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":180,"src":"4310:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":201,"name":"signerAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":182,"src":"4329:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":202,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4349:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4353:6:0","memberName":"sender","nodeType":"MemberAccess","src":"4349:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":204,"name":"senderToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":184,"src":"4367:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":205,"name":"senderAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":186,"src":"4386:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":206,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":188,"src":"4406:1:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":207,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":190,"src":"4415:1:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":208,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":192,"src":"4424:1:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":196,"name":"_check","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1321,"src":"4249:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (uint256,uint256,address,address,uint256,address,address,uint256,uint8,bytes32,bytes32)"}},"id":209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4249:182:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":210,"nodeType":"ExpressionStatement","src":"4249:182:0"},{"expression":{"arguments":[{"id":214,"name":"senderToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":184,"src":"4522:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":215,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4541:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4545:6:0","memberName":"sender","nodeType":"MemberAccess","src":"4541:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":217,"name":"signerWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":178,"src":"4559:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":218,"name":"senderAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":186,"src":"4579:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":211,"name":"SafeTransferLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2941,"src":"4482:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeTransferLib_$2941_$","typeString":"type(library SafeTransferLib)"}},"id":213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4498:16:0","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":2866,"src":"4482:32:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4482:115:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":220,"nodeType":"ExpressionStatement","src":"4482:115:0"},{"expression":{"arguments":[{"id":224,"name":"signerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":180,"src":"4691:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":225,"name":"signerWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":178,"src":"4710:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":226,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":172,"src":"4730:9:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":227,"name":"signerAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":182,"src":"4747:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":221,"name":"SafeTransferLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2941,"src":"4651:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeTransferLib_$2941_$","typeString":"type(library SafeTransferLib)"}},"id":223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4667:16:0","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":2866,"src":"4651:32:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4651:114:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":229,"nodeType":"ExpressionStatement","src":"4651:114:0"},{"expression":{"arguments":[{"id":231,"name":"signerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":180,"src":"4836:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":232,"name":"signerWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":178,"src":"4849:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":233,"name":"signerAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":182,"src":"4863:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":230,"name":"_transferProtocolFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1447,"src":"4815:20:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4815:61:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":235,"nodeType":"ExpressionStatement","src":"4815:61:0"},{"eventCall":{"arguments":[{"id":237,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":174,"src":"4916:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":238,"name":"signerWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":178,"src":"4923:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":236,"name":"SwapERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1479,"src":"4906:9:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":239,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4906:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":240,"nodeType":"EmitStatement","src":"4901:35:0"}]},"documentation":{"id":170,"nodeType":"StructuredDocumentation","src":"3213:725:0","text":" @notice Atomic ERC20 Swap\n @param recipient address Wallet to receive sender proceeds\n @param nonce uint256 Unique and should be sequential\n @param expiry uint256 Expiry in seconds since 1 January 1970\n @param signerWallet address Wallet of the signer\n @param signerToken address ERC20 token transferred from the signer\n @param signerAmount uint256 Amount transferred from the signer\n @param senderToken address ERC20 token transferred from the sender\n @param senderAmount uint256 Amount transferred from the sender\n @param v uint8 \"v\" value of the ECDSA signature\n @param r bytes32 \"r\" value of the ECDSA signature\n @param s bytes32 \"s\" value of the ECDSA signature"},"functionSelector":"98956069","id":242,"implemented":true,"kind":"function","modifiers":[],"name":"swap","nameLocation":"3950:4:0","nodeType":"FunctionDefinition","overrides":{"id":194,"nodeType":"OverrideSpecifier","overrides":[],"src":"4201:8:0"},"parameters":{"id":193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":172,"mutability":"mutable","name":"recipient","nameLocation":"3968:9:0","nodeType":"VariableDeclaration","scope":242,"src":"3960:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":171,"name":"address","nodeType":"ElementaryTypeName","src":"3960:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":174,"mutability":"mutable","name":"nonce","nameLocation":"3991:5:0","nodeType":"VariableDeclaration","scope":242,"src":"3983:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":173,"name":"uint256","nodeType":"ElementaryTypeName","src":"3983:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":176,"mutability":"mutable","name":"expiry","nameLocation":"4010:6:0","nodeType":"VariableDeclaration","scope":242,"src":"4002:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":175,"name":"uint256","nodeType":"ElementaryTypeName","src":"4002:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":178,"mutability":"mutable","name":"signerWallet","nameLocation":"4030:12:0","nodeType":"VariableDeclaration","scope":242,"src":"4022:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":177,"name":"address","nodeType":"ElementaryTypeName","src":"4022:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":180,"mutability":"mutable","name":"signerToken","nameLocation":"4056:11:0","nodeType":"VariableDeclaration","scope":242,"src":"4048:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":179,"name":"address","nodeType":"ElementaryTypeName","src":"4048:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":182,"mutability":"mutable","name":"signerAmount","nameLocation":"4081:12:0","nodeType":"VariableDeclaration","scope":242,"src":"4073:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":181,"name":"uint256","nodeType":"ElementaryTypeName","src":"4073:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":184,"mutability":"mutable","name":"senderToken","nameLocation":"4107:11:0","nodeType":"VariableDeclaration","scope":242,"src":"4099:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":183,"name":"address","nodeType":"ElementaryTypeName","src":"4099:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":186,"mutability":"mutable","name":"senderAmount","nameLocation":"4132:12:0","nodeType":"VariableDeclaration","scope":242,"src":"4124:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":185,"name":"uint256","nodeType":"ElementaryTypeName","src":"4124:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":188,"mutability":"mutable","name":"v","nameLocation":"4156:1:0","nodeType":"VariableDeclaration","scope":242,"src":"4150:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":187,"name":"uint8","nodeType":"ElementaryTypeName","src":"4150:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":190,"mutability":"mutable","name":"r","nameLocation":"4171:1:0","nodeType":"VariableDeclaration","scope":242,"src":"4163:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":189,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4163:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":192,"mutability":"mutable","name":"s","nameLocation":"4186:1:0","nodeType":"VariableDeclaration","scope":242,"src":"4178:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":191,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4178:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3954:237:0"},"returnParameters":{"id":195,"nodeType":"ParameterList","parameters":[],"src":"4210:0:0"},"scope":1448,"src":"3941:1000:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1595],"body":{"id":316,"nodeType":"Block","src":"5966:731:0","statements":[{"expression":{"arguments":[{"id":270,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":247,"src":"6019:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":271,"name":"expiry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":249,"src":"6032:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":272,"name":"signerWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":251,"src":"6046:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":273,"name":"signerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"6066:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":274,"name":"signerAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"6085:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6113: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":276,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6105:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":275,"name":"address","nodeType":"ElementaryTypeName","src":"6105:7:0","typeDescriptions":{}}},"id":278,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6105:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":279,"name":"senderToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":257,"src":"6123:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":280,"name":"senderAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":259,"src":"6142:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":281,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":261,"src":"6162:1:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":282,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"6171:1:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":283,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":265,"src":"6180:1:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":269,"name":"_check","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1321,"src":"6005:6:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (uint256,uint256,address,address,uint256,address,address,uint256,uint8,bytes32,bytes32)"}},"id":284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6005:182:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":285,"nodeType":"ExpressionStatement","src":"6005:182:0"},{"expression":{"arguments":[{"id":289,"name":"senderToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":257,"src":"6278:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":290,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6297:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6301:6:0","memberName":"sender","nodeType":"MemberAccess","src":"6297:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":292,"name":"signerWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":251,"src":"6315:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":293,"name":"senderAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":259,"src":"6335:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":286,"name":"SafeTransferLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2941,"src":"6238:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeTransferLib_$2941_$","typeString":"type(library SafeTransferLib)"}},"id":288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6254:16:0","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":2866,"src":"6238:32:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6238:115:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":295,"nodeType":"ExpressionStatement","src":"6238:115:0"},{"expression":{"arguments":[{"id":299,"name":"signerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"6447:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":300,"name":"signerWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":251,"src":"6466:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":301,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":245,"src":"6486:9:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":302,"name":"signerAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"6503:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":296,"name":"SafeTransferLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2941,"src":"6407:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeTransferLib_$2941_$","typeString":"type(library SafeTransferLib)"}},"id":298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6423:16:0","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":2866,"src":"6407:32:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6407:114:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":304,"nodeType":"ExpressionStatement","src":"6407:114:0"},{"expression":{"arguments":[{"id":306,"name":"signerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":253,"src":"6592:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":307,"name":"signerWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":251,"src":"6605:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":308,"name":"signerAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":255,"src":"6619:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":305,"name":"_transferProtocolFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1447,"src":"6571:20:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6571:61:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":310,"nodeType":"ExpressionStatement","src":"6571:61:0"},{"eventCall":{"arguments":[{"id":312,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":247,"src":"6672:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":313,"name":"signerWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":251,"src":"6679:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":311,"name":"SwapERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1479,"src":"6662:9:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6662:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":315,"nodeType":"EmitStatement","src":"6657:35:0"}]},"documentation":{"id":243,"nodeType":"StructuredDocumentation","src":"4945:740:0","text":" @notice Atomic ERC20 Swap for Any Sender\n @param recipient address Wallet to receive sender proceeds\n @param nonce uint256 Unique and should be sequential\n @param expiry uint256 Expiry in seconds since 1 January 1970\n @param signerWallet address Wallet of the signer\n @param signerToken address ERC20 token transferred from the signer\n @param signerAmount uint256 Amount transferred from the signer\n @param senderToken address ERC20 token transferred from the sender\n @param senderAmount uint256 Amount transferred from the sender\n @param v uint8 \"v\" value of the ECDSA signature\n @param r bytes32 \"r\" value of the ECDSA signature\n @param s bytes32 \"s\" value of the ECDSA signature"},"functionSelector":"3eb1af24","id":317,"implemented":true,"kind":"function","modifiers":[],"name":"swapAnySender","nameLocation":"5697:13:0","nodeType":"FunctionDefinition","overrides":{"id":267,"nodeType":"OverrideSpecifier","overrides":[],"src":"5957:8:0"},"parameters":{"id":266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":245,"mutability":"mutable","name":"recipient","nameLocation":"5724:9:0","nodeType":"VariableDeclaration","scope":317,"src":"5716:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":244,"name":"address","nodeType":"ElementaryTypeName","src":"5716:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":247,"mutability":"mutable","name":"nonce","nameLocation":"5747:5:0","nodeType":"VariableDeclaration","scope":317,"src":"5739:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":246,"name":"uint256","nodeType":"ElementaryTypeName","src":"5739:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":249,"mutability":"mutable","name":"expiry","nameLocation":"5766:6:0","nodeType":"VariableDeclaration","scope":317,"src":"5758:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":248,"name":"uint256","nodeType":"ElementaryTypeName","src":"5758:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":251,"mutability":"mutable","name":"signerWallet","nameLocation":"5786:12:0","nodeType":"VariableDeclaration","scope":317,"src":"5778:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":250,"name":"address","nodeType":"ElementaryTypeName","src":"5778:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":253,"mutability":"mutable","name":"signerToken","nameLocation":"5812:11:0","nodeType":"VariableDeclaration","scope":317,"src":"5804:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":252,"name":"address","nodeType":"ElementaryTypeName","src":"5804:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":255,"mutability":"mutable","name":"signerAmount","nameLocation":"5837:12:0","nodeType":"VariableDeclaration","scope":317,"src":"5829:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":254,"name":"uint256","nodeType":"ElementaryTypeName","src":"5829:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":257,"mutability":"mutable","name":"senderToken","nameLocation":"5863:11:0","nodeType":"VariableDeclaration","scope":317,"src":"5855:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":256,"name":"address","nodeType":"ElementaryTypeName","src":"5855:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":259,"mutability":"mutable","name":"senderAmount","nameLocation":"5888:12:0","nodeType":"VariableDeclaration","scope":317,"src":"5880:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":258,"name":"uint256","nodeType":"ElementaryTypeName","src":"5880:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":261,"mutability":"mutable","name":"v","nameLocation":"5912:1:0","nodeType":"VariableDeclaration","scope":317,"src":"5906:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":260,"name":"uint8","nodeType":"ElementaryTypeName","src":"5906:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":263,"mutability":"mutable","name":"r","nameLocation":"5927:1:0","nodeType":"VariableDeclaration","scope":317,"src":"5919:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":262,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5919:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":265,"mutability":"mutable","name":"s","nameLocation":"5942:1:0","nodeType":"VariableDeclaration","scope":317,"src":"5934:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":264,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5934:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5710:237:0"},"returnParameters":{"id":268,"nodeType":"ParameterList","parameters":[],"src":"5966:0:0"},"scope":1448,"src":"5688:1009:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1618],"body":{"id":463,"nodeType":"Block","src":"7693:1808:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":342,"name":"expiry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":322,"src":"7742:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":343,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"7752:5:0","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7758:9:0","memberName":"timestamp","nodeType":"MemberAccess","src":"7752:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7742:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":349,"nodeType":"IfStatement","src":"7738:52:0","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":346,"name":"OrderExpired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1529,"src":"7776:12:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7776:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":348,"nodeType":"RevertStatement","src":"7769:21:0"}},{"assignments":[351],"declarations":[{"constant":false,"id":351,"mutability":"mutable","name":"signatory","nameLocation":"7862:9:0","nodeType":"VariableDeclaration","scope":463,"src":"7854:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":350,"name":"address","nodeType":"ElementaryTypeName","src":"7854:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":376,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"id":358,"name":"ORDER_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32,"src":"7967:14:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":359,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":320,"src":"7995:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":360,"name":"expiry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":322,"src":"8014:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":361,"name":"signerWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":324,"src":"8034:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":362,"name":"signerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":326,"src":"8060:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":363,"name":"signerAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":328,"src":"8085:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":364,"name":"protocolFeeLight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60,"src":"8111:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":365,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8141:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8145:6:0","memberName":"sender","nodeType":"MemberAccess","src":"8141:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":367,"name":"senderToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":330,"src":"8165:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":368,"name":"senderAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":332,"src":"8190:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":356,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7943:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":357,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7947:6:0","memberName":"encode","nodeType":"MemberAccess","src":"7943:10:0","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7943:271:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":355,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"7922:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7922:302:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":354,"name":"_hashTypedData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2628,"src":"7898:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7898:334:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":372,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":334,"src":"8240:1:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":373,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":336,"src":"8249:1:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":374,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":338,"src":"8258:1:0","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"}],"expression":{"id":352,"name":"ECDSA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2442,"src":"7874:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ECDSA_$2442_$","typeString":"type(library ECDSA)"}},"id":353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7880:10:0","memberName":"tryRecover","nodeType":"MemberAccess","referencedDeclaration":2413,"src":"7874:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) view returns (address)"}},"id":375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7874:391:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"7854:411:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":377,"name":"signatory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":351,"src":"8315:9:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":380,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8336: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":379,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8328:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":378,"name":"address","nodeType":"ElementaryTypeName","src":"8328:7:0","typeDescriptions":{}}},"id":381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8328:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8315:23:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":386,"nodeType":"IfStatement","src":"8311:54:0","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":383,"name":"SignatureInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1541,"src":"8347:16:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8347:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":385,"nodeType":"RevertStatement","src":"8340:25:0"}},{"condition":{"id":391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"8440:35:0","subExpression":{"arguments":[{"id":388,"name":"signatory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":351,"src":"8458:9:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":389,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":320,"src":"8469:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":387,"name":"_markNonceAsUsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1231,"src":"8441:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) returns (bool)"}},"id":390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8441:34:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":396,"nodeType":"IfStatement","src":"8436:71:0","trueBody":{"errorCall":{"arguments":[{"id":393,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":320,"src":"8501:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":392,"name":"NonceAlreadyUsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1527,"src":"8484:16:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8484:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":395,"nodeType":"RevertStatement","src":"8477:30:0"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":397,"name":"authorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56,"src":"8564:10:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":399,"indexExpression":{"id":398,"name":"signerWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":324,"src":"8575:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8564:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8600: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":401,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8592:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":400,"name":"address","nodeType":"ElementaryTypeName","src":"8592:7:0","typeDescriptions":{}}},"id":403,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8592:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8564:38:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":422,"nodeType":"Block","src":"8763:123:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":415,"name":"signatory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":351,"src":"8827:9:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":416,"name":"signerWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":324,"src":"8840:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8827:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":421,"nodeType":"IfStatement","src":"8823:56:0","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":418,"name":"SignatureInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1541,"src":"8861:16:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8861:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":420,"nodeType":"RevertStatement","src":"8854:25:0"}}]},"id":423,"nodeType":"IfStatement","src":"8560:326:0","trueBody":{"id":414,"nodeType":"Block","src":"8604:153:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":405,"name":"signatory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":351,"src":"8686:9:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"baseExpression":{"id":406,"name":"authorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56,"src":"8699:10:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":408,"indexExpression":{"id":407,"name":"signerWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":324,"src":"8710:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8699:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8686:37:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":413,"nodeType":"IfStatement","src":"8682:68:0","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":410,"name":"SignatureInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1541,"src":"8732:16:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8732:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":412,"nodeType":"RevertStatement","src":"8725:25:0"}}]}},{"expression":{"arguments":[{"id":427,"name":"senderToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":330,"src":"8976:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":428,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8995:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8999:6:0","memberName":"sender","nodeType":"MemberAccess","src":"8995:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":430,"name":"signerWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":324,"src":"9013:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":431,"name":"senderAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":332,"src":"9033:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":424,"name":"SafeTransferLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2941,"src":"8936:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeTransferLib_$2941_$","typeString":"type(library SafeTransferLib)"}},"id":426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8952:16:0","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":2866,"src":"8936:32:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8936:115:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":433,"nodeType":"ExpressionStatement","src":"8936:115:0"},{"expression":{"arguments":[{"id":437,"name":"signerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":326,"src":"9142:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":438,"name":"signerWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":324,"src":"9161:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":439,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9181:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9185:6:0","memberName":"sender","nodeType":"MemberAccess","src":"9181:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":441,"name":"signerAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":328,"src":"9199:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":434,"name":"SafeTransferLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2941,"src":"9102:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeTransferLib_$2941_$","typeString":"type(library SafeTransferLib)"}},"id":436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9118:16:0","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":2866,"src":"9102:32:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9102:115:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":443,"nodeType":"ExpressionStatement","src":"9102:115:0"},{"expression":{"arguments":[{"id":447,"name":"signerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":326,"src":"9319:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":448,"name":"signerWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":324,"src":"9338:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":449,"name":"protocolFeeWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62,"src":"9358:17:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":450,"name":"signerAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":328,"src":"9384:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":451,"name":"protocolFeeLight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60,"src":"9399:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9384:31:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":453,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9383:33:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":454,"name":"FEE_DIVISOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"9419:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9383:47:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":444,"name":"SafeTransferLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2941,"src":"9279:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeTransferLib_$2941_$","typeString":"type(library SafeTransferLib)"}},"id":446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9295:16:0","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":2866,"src":"9279:32:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9279:157:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":457,"nodeType":"ExpressionStatement","src":"9279:157:0"},{"eventCall":{"arguments":[{"id":459,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":320,"src":"9476:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":460,"name":"signerWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":324,"src":"9483:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":458,"name":"SwapERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1479,"src":"9466:9:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9466:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":462,"nodeType":"EmitStatement","src":"9461:35:0"}]},"documentation":{"id":318,"nodeType":"StructuredDocumentation","src":"6701:738:0","text":" @notice Swap Atomic ERC20 Swap (Minimal Gas)\n @dev No transfer checks. Only use with known tokens.\n @param nonce uint256 Unique and should be sequential\n @param expiry uint256 Expiry in seconds since 1 January 1970\n @param signerWallet address Wallet of the signer\n @param signerToken address ERC20 token transferred from the signer\n @param signerAmount uint256 Amount transferred from the signer\n @param senderToken address ERC20 token transferred from the sender\n @param senderAmount uint256 Amount transferred from the sender\n @param v uint8 \"v\" value of the ECDSA signature\n @param r bytes32 \"r\" value of the ECDSA signature\n @param s bytes32 \"s\" value of the ECDSA signature"},"functionSelector":"46e4480d","id":464,"implemented":true,"kind":"function","modifiers":[],"name":"swapLight","nameLocation":"7451:9:0","nodeType":"FunctionDefinition","overrides":{"id":340,"nodeType":"OverrideSpecifier","overrides":[],"src":"7684:8:0"},"parameters":{"id":339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":320,"mutability":"mutable","name":"nonce","nameLocation":"7474:5:0","nodeType":"VariableDeclaration","scope":464,"src":"7466:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":319,"name":"uint256","nodeType":"ElementaryTypeName","src":"7466:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":322,"mutability":"mutable","name":"expiry","nameLocation":"7493:6:0","nodeType":"VariableDeclaration","scope":464,"src":"7485:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":321,"name":"uint256","nodeType":"ElementaryTypeName","src":"7485:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":324,"mutability":"mutable","name":"signerWallet","nameLocation":"7513:12:0","nodeType":"VariableDeclaration","scope":464,"src":"7505:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":323,"name":"address","nodeType":"ElementaryTypeName","src":"7505:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":326,"mutability":"mutable","name":"signerToken","nameLocation":"7539:11:0","nodeType":"VariableDeclaration","scope":464,"src":"7531:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":325,"name":"address","nodeType":"ElementaryTypeName","src":"7531:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":328,"mutability":"mutable","name":"signerAmount","nameLocation":"7564:12:0","nodeType":"VariableDeclaration","scope":464,"src":"7556:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":327,"name":"uint256","nodeType":"ElementaryTypeName","src":"7556:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":330,"mutability":"mutable","name":"senderToken","nameLocation":"7590:11:0","nodeType":"VariableDeclaration","scope":464,"src":"7582:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":329,"name":"address","nodeType":"ElementaryTypeName","src":"7582:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":332,"mutability":"mutable","name":"senderAmount","nameLocation":"7615:12:0","nodeType":"VariableDeclaration","scope":464,"src":"7607:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":331,"name":"uint256","nodeType":"ElementaryTypeName","src":"7607:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":334,"mutability":"mutable","name":"v","nameLocation":"7639:1:0","nodeType":"VariableDeclaration","scope":464,"src":"7633:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":333,"name":"uint8","nodeType":"ElementaryTypeName","src":"7633:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":336,"mutability":"mutable","name":"r","nameLocation":"7654:1:0","nodeType":"VariableDeclaration","scope":464,"src":"7646:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":335,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7646:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":338,"mutability":"mutable","name":"s","nameLocation":"7669:1:0","nodeType":"VariableDeclaration","scope":464,"src":"7661:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":337,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7661:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7460:214:0"},"returnParameters":{"id":341,"nodeType":"ParameterList","parameters":[],"src":"7693:0:0"},"scope":1448,"src":"7442:2059:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":487,"nodeType":"Block","src":"9682:185:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":472,"name":"_protocolFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":467,"src":"9735:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":473,"name":"FEE_DIVISOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"9751:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9735:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":478,"nodeType":"IfStatement","src":"9731:60:0","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":475,"name":"ProtocolFeeInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1531,"src":"9771:18:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":476,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9771:20:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":477,"nodeType":"RevertStatement","src":"9764:27:0"}},{"expression":{"id":481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":479,"name":"protocolFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58,"src":"9797:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":480,"name":"_protocolFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":467,"src":"9811:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9797:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":482,"nodeType":"ExpressionStatement","src":"9797:26:0"},{"eventCall":{"arguments":[{"id":484,"name":"_protocolFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":467,"src":"9849:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":483,"name":"SetProtocolFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1501,"src":"9834:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":485,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9834:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":486,"nodeType":"EmitStatement","src":"9829:33:0"}]},"documentation":{"id":465,"nodeType":"StructuredDocumentation","src":"9505:109:0","text":" @notice Set the protocol fee\n @param _protocolFee uint256 Value of the fee in basis points"},"functionSelector":"787dce3d","id":488,"implemented":true,"kind":"function","modifiers":[{"id":470,"kind":"modifierInvocation","modifierName":{"id":469,"name":"onlyOwner","nameLocations":["9672:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":1879,"src":"9672:9:0"},"nodeType":"ModifierInvocation","src":"9672:9:0"}],"name":"setProtocolFee","nameLocation":"9626:14:0","nodeType":"FunctionDefinition","parameters":{"id":468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":467,"mutability":"mutable","name":"_protocolFee","nameLocation":"9649:12:0","nodeType":"VariableDeclaration","scope":488,"src":"9641:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":466,"name":"uint256","nodeType":"ElementaryTypeName","src":"9641:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9640:22:0"},"returnParameters":{"id":471,"nodeType":"ParameterList","parameters":[],"src":"9682:0:0"},"scope":1448,"src":"9617:250:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":511,"nodeType":"Block","src":"10069:215:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":496,"name":"_protocolFeeLight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":491,"src":"10122:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":497,"name":"FEE_DIVISOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"10143:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10122:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":502,"nodeType":"IfStatement","src":"10118:70:0","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":499,"name":"ProtocolFeeLightInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1533,"src":"10163:23:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10163:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":501,"nodeType":"RevertStatement","src":"10156:32:0"}},{"expression":{"id":505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":503,"name":"protocolFeeLight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60,"src":"10194:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":504,"name":"_protocolFeeLight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":491,"src":"10213:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10194:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":506,"nodeType":"ExpressionStatement","src":"10194:36:0"},{"eventCall":{"arguments":[{"id":508,"name":"_protocolFeeLight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":491,"src":"10261:17:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":507,"name":"SetProtocolFeeLight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1505,"src":"10241:19:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10241:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":510,"nodeType":"EmitStatement","src":"10236:43:0"}]},"documentation":{"id":489,"nodeType":"StructuredDocumentation","src":"9871:120:0","text":" @notice Set the light protocol fee\n @param _protocolFeeLight uint256 Value of the fee in basis points"},"functionSelector":"bfd4e557","id":512,"implemented":true,"kind":"function","modifiers":[{"id":494,"kind":"modifierInvocation","modifierName":{"id":493,"name":"onlyOwner","nameLocations":["10059:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":1879,"src":"10059:9:0"},"nodeType":"ModifierInvocation","src":"10059:9:0"}],"name":"setProtocolFeeLight","nameLocation":"10003:19:0","nodeType":"FunctionDefinition","parameters":{"id":492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":491,"mutability":"mutable","name":"_protocolFeeLight","nameLocation":"10031:17:0","nodeType":"VariableDeclaration","scope":512,"src":"10023:25:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":490,"name":"uint256","nodeType":"ElementaryTypeName","src":"10023:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10022:27:0"},"returnParameters":{"id":495,"nodeType":"ParameterList","parameters":[],"src":"10069:0:0"},"scope":1448,"src":"9994:290:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":538,"nodeType":"Block","src":"10483:222:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":520,"name":"_protocolFeeWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":515,"src":"10538:18:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":523,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10568: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":522,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10560:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":521,"name":"address","nodeType":"ElementaryTypeName","src":"10560:7:0","typeDescriptions":{}}},"id":524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10560:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10538:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":529,"nodeType":"IfStatement","src":"10534:71:0","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":526,"name":"ProtocolFeeWalletInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1535,"src":"10579:24:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10579:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":528,"nodeType":"RevertStatement","src":"10572:33:0"}},{"expression":{"id":532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":530,"name":"protocolFeeWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62,"src":"10611:17:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":531,"name":"_protocolFeeWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":515,"src":"10631:18:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10611:38:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":533,"nodeType":"ExpressionStatement","src":"10611:38:0"},{"eventCall":{"arguments":[{"id":535,"name":"_protocolFeeWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":515,"src":"10681:18:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":534,"name":"SetProtocolFeeWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1509,"src":"10660:20:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10660:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":537,"nodeType":"EmitStatement","src":"10655:45:0"}]},"documentation":{"id":513,"nodeType":"StructuredDocumentation","src":"10288:115:0","text":" @notice Set the protocol fee wallet\n @param _protocolFeeWallet address Wallet to transfer fee to"},"functionSelector":"7ce78525","id":539,"implemented":true,"kind":"function","modifiers":[{"id":518,"kind":"modifierInvocation","modifierName":{"id":517,"name":"onlyOwner","nameLocations":["10473:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":1879,"src":"10473:9:0"},"nodeType":"ModifierInvocation","src":"10473:9:0"}],"name":"setProtocolFeeWallet","nameLocation":"10415:20:0","nodeType":"FunctionDefinition","parameters":{"id":516,"nodeType":"ParameterList","parameters":[{"constant":false,"id":515,"mutability":"mutable","name":"_protocolFeeWallet","nameLocation":"10444:18:0","nodeType":"VariableDeclaration","scope":539,"src":"10436:26:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":514,"name":"address","nodeType":"ElementaryTypeName","src":"10436:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10435:28:0"},"returnParameters":{"id":519,"nodeType":"ParameterList","parameters":[],"src":"10483:0:0"},"scope":1448,"src":"10406:299:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":562,"nodeType":"Block","src":"10866:114:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":547,"name":"_bonusMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":542,"src":"10876:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":548,"name":"MAX_MAX","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41,"src":"10888:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10876:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":553,"nodeType":"IfStatement","src":"10872:44:0","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":550,"name":"MaxTooHigh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1523,"src":"10904:10:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10904:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":552,"nodeType":"RevertStatement","src":"10897:19:0"}},{"expression":{"id":556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":554,"name":"bonusMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"10922:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":555,"name":"_bonusMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":542,"src":"10933:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10922:20:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":557,"nodeType":"ExpressionStatement","src":"10922:20:0"},{"eventCall":{"arguments":[{"id":559,"name":"_bonusMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":542,"src":"10965:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":558,"name":"SetBonusMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1517,"src":"10953:11:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":560,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10953:22:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":561,"nodeType":"EmitStatement","src":"10948:27:0"}]},"documentation":{"id":540,"nodeType":"StructuredDocumentation","src":"10709:95:0","text":" @notice Set staking bonus max\n @dev Only owner\n @param _bonusMax uint256"},"functionSelector":"9cff19e0","id":563,"implemented":true,"kind":"function","modifiers":[{"id":545,"kind":"modifierInvocation","modifierName":{"id":544,"name":"onlyOwner","nameLocations":["10856:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":1879,"src":"10856:9:0"},"nodeType":"ModifierInvocation","src":"10856:9:0"}],"name":"setBonusMax","nameLocation":"10816:11:0","nodeType":"FunctionDefinition","parameters":{"id":543,"nodeType":"ParameterList","parameters":[{"constant":false,"id":542,"mutability":"mutable","name":"_bonusMax","nameLocation":"10836:9:0","nodeType":"VariableDeclaration","scope":563,"src":"10828:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":541,"name":"uint256","nodeType":"ElementaryTypeName","src":"10828:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10827:19:0"},"returnParameters":{"id":546,"nodeType":"ParameterList","parameters":[],"src":"10866:0:0"},"scope":1448,"src":"10807:173:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":586,"nodeType":"Block","src":"11149:128:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":571,"name":"_bonusScale","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":566,"src":"11159:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":572,"name":"MAX_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44,"src":"11173:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11159:23:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":577,"nodeType":"IfStatement","src":"11155:50:0","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":574,"name":"ScaleTooHigh","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1537,"src":"11191:12:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11191:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":576,"nodeType":"RevertStatement","src":"11184:21:0"}},{"expression":{"id":580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":578,"name":"bonusScale","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":64,"src":"11211:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":579,"name":"_bonusScale","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":566,"src":"11224:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11211:24:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":581,"nodeType":"ExpressionStatement","src":"11211:24:0"},{"eventCall":{"arguments":[{"id":583,"name":"_bonusScale","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":566,"src":"11260:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":582,"name":"SetBonusScale","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1513,"src":"11246:13:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11246:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":585,"nodeType":"EmitStatement","src":"11241:31:0"}]},"documentation":{"id":564,"nodeType":"StructuredDocumentation","src":"10984:99:0","text":" @notice Set staking bonus scale\n @dev Only owner\n @param _bonusScale uint256"},"functionSelector":"6fb30d43","id":587,"implemented":true,"kind":"function","modifiers":[{"id":569,"kind":"modifierInvocation","modifierName":{"id":568,"name":"onlyOwner","nameLocations":["11139:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":1879,"src":"11139:9:0"},"nodeType":"ModifierInvocation","src":"11139:9:0"}],"name":"setBonusScale","nameLocation":"11095:13:0","nodeType":"FunctionDefinition","parameters":{"id":567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":566,"mutability":"mutable","name":"_bonusScale","nameLocation":"11117:11:0","nodeType":"VariableDeclaration","scope":587,"src":"11109:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":565,"name":"uint256","nodeType":"ElementaryTypeName","src":"11109:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11108:21:0"},"returnParameters":{"id":570,"nodeType":"ParameterList","parameters":[],"src":"11149:0:0"},"scope":1448,"src":"11086:191:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":613,"nodeType":"Block","src":"11447:185:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":595,"name":"_stakingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":590,"src":"11505:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":598,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11530: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":597,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11522:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":596,"name":"address","nodeType":"ElementaryTypeName","src":"11522:7:0","typeDescriptions":{}}},"id":599,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11522:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11505:27:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":604,"nodeType":"IfStatement","src":"11501:56:0","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":601,"name":"StakingInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1543,"src":"11541:14:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11541:16:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":603,"nodeType":"RevertStatement","src":"11534:23:0"}},{"expression":{"id":607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":605,"name":"stakingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68,"src":"11563:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":606,"name":"_stakingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":590,"src":"11578:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11563:28:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":608,"nodeType":"ExpressionStatement","src":"11563:28:0"},{"eventCall":{"arguments":[{"id":610,"name":"_stakingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":590,"src":"11613:13:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":609,"name":"SetStaking","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1521,"src":"11602:10:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":611,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11602:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":612,"nodeType":"EmitStatement","src":"11597:30:0"}]},"documentation":{"id":588,"nodeType":"StructuredDocumentation","src":"11281:101:0","text":" @notice Set staking token\n @param _stakingToken address Token to check balances on"},"functionSelector":"8ff39099","id":614,"implemented":true,"kind":"function","modifiers":[{"id":593,"kind":"modifierInvocation","modifierName":{"id":592,"name":"onlyOwner","nameLocations":["11437:9:0"],"nodeType":"IdentifierPath","referencedDeclaration":1879,"src":"11437:9:0"},"nodeType":"ModifierInvocation","src":"11437:9:0"}],"name":"setStaking","nameLocation":"11394:10:0","nodeType":"FunctionDefinition","parameters":{"id":591,"nodeType":"ParameterList","parameters":[{"constant":false,"id":590,"mutability":"mutable","name":"_stakingToken","nameLocation":"11413:13:0","nodeType":"VariableDeclaration","scope":614,"src":"11405:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":589,"name":"address","nodeType":"ElementaryTypeName","src":"11405:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11404:23:0"},"returnParameters":{"id":594,"nodeType":"ParameterList","parameters":[],"src":"11447:0:0"},"scope":1448,"src":"11385:247:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1623],"body":{"id":644,"nodeType":"Block","src":"11841:148:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":621,"name":"signatory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"11851:9:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":624,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11872: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":623,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11864:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":622,"name":"address","nodeType":"ElementaryTypeName","src":"11864:7:0","typeDescriptions":{}}},"id":625,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11864:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11851:23:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":630,"nodeType":"IfStatement","src":"11847:54:0","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":627,"name":"SignatoryInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1539,"src":"11883:16:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11883:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":629,"nodeType":"RevertStatement","src":"11876:25:0"}},{"expression":{"id":636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":631,"name":"authorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56,"src":"11907:10:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":634,"indexExpression":{"expression":{"id":632,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11918:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11922:6:0","memberName":"sender","nodeType":"MemberAccess","src":"11918:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11907:22:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":635,"name":"signatory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"11932:9:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11907:34:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":637,"nodeType":"ExpressionStatement","src":"11907:34:0"},{"eventCall":{"arguments":[{"id":639,"name":"signatory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"11962:9:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":640,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11973:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11977:6:0","memberName":"sender","nodeType":"MemberAccess","src":"11973:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":638,"name":"Authorize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1491,"src":"11952:9:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11952:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":643,"nodeType":"EmitStatement","src":"11947:37:0"}]},"documentation":{"id":615,"nodeType":"StructuredDocumentation","src":"11636:146:0","text":" @notice Authorize a signatory\n @param signatory address Wallet of the signatory to authorize\n @dev Emits an Authorize event"},"functionSelector":"b6a5d7de","id":645,"implemented":true,"kind":"function","modifiers":[],"name":"authorize","nameLocation":"11794:9:0","nodeType":"FunctionDefinition","overrides":{"id":619,"nodeType":"OverrideSpecifier","overrides":[],"src":"11832:8:0"},"parameters":{"id":618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":617,"mutability":"mutable","name":"signatory","nameLocation":"11812:9:0","nodeType":"VariableDeclaration","scope":645,"src":"11804:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":616,"name":"address","nodeType":"ElementaryTypeName","src":"11804:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11803:19:0"},"returnParameters":{"id":620,"nodeType":"ParameterList","parameters":[],"src":"11841:0:0"},"scope":1448,"src":"11785:204:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1626],"body":{"id":669,"nodeType":"Block","src":"12106:116:0","statements":[{"assignments":[651],"declarations":[{"constant":false,"id":651,"mutability":"mutable","name":"tmp","nameLocation":"12120:3:0","nodeType":"VariableDeclaration","scope":669,"src":"12112:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":650,"name":"address","nodeType":"ElementaryTypeName","src":"12112:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":656,"initialValue":{"baseExpression":{"id":652,"name":"authorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56,"src":"12126:10:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":655,"indexExpression":{"expression":{"id":653,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12137:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12141:6:0","memberName":"sender","nodeType":"MemberAccess","src":"12137:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12126:22:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"12112:36:0"},{"expression":{"id":661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"12154:29:0","subExpression":{"baseExpression":{"id":657,"name":"authorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56,"src":"12161:10:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":660,"indexExpression":{"expression":{"id":658,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12172:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12176:6:0","memberName":"sender","nodeType":"MemberAccess","src":"12172:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12161:22:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":662,"nodeType":"ExpressionStatement","src":"12154:29:0"},{"eventCall":{"arguments":[{"id":664,"name":"tmp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":651,"src":"12201:3:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":665,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12206:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12210:6:0","memberName":"sender","nodeType":"MemberAccess","src":"12206:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":663,"name":"Revoke","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1497,"src":"12194:6:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12194:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":668,"nodeType":"EmitStatement","src":"12189:28:0"}]},"documentation":{"id":646,"nodeType":"StructuredDocumentation","src":"11993:74:0","text":" @notice Revoke the signatory\n @dev Emits a Revoke event"},"functionSelector":"b6549f75","id":670,"implemented":true,"kind":"function","modifiers":[],"name":"revoke","nameLocation":"12079:6:0","nodeType":"FunctionDefinition","overrides":{"id":648,"nodeType":"OverrideSpecifier","overrides":[],"src":"12097:8:0"},"parameters":{"id":647,"nodeType":"ParameterList","parameters":[],"src":"12085:2:0"},"returnParameters":{"id":649,"nodeType":"ParameterList","parameters":[],"src":"12106:0:0"},"scope":1448,"src":"12070:152:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1632],"body":{"id":710,"nodeType":"Block","src":"12526:223:0","statements":[{"body":{"id":708,"nodeType":"Block","src":"12569:176:0","statements":[{"assignments":[686],"declarations":[{"constant":false,"id":686,"mutability":"mutable","name":"nonce","nameLocation":"12585:5:0","nodeType":"VariableDeclaration","scope":708,"src":"12577:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":685,"name":"uint256","nodeType":"ElementaryTypeName","src":"12577:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":690,"initialValue":{"baseExpression":{"id":687,"name":"nonces","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":674,"src":"12593:6:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":689,"indexExpression":{"id":688,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":679,"src":"12600:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12593:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12577:25:0"},{"condition":{"arguments":[{"expression":{"id":692,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12631:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12635:6:0","memberName":"sender","nodeType":"MemberAccess","src":"12631:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":694,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"12643:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":691,"name":"_markNonceAsUsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1231,"src":"12614:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) returns (bool)"}},"id":695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12614:35:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":703,"nodeType":"IfStatement","src":"12610:90:0","trueBody":{"id":702,"nodeType":"Block","src":"12651:49:0","statements":[{"eventCall":{"arguments":[{"id":697,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"12673:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":698,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12680:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12684:6:0","memberName":"sender","nodeType":"MemberAccess","src":"12680:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":696,"name":"Cancel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1485,"src":"12666:6:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12666:25:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":701,"nodeType":"EmitStatement","src":"12661:30:0"}]}},{"id":707,"nodeType":"UncheckedBlock","src":"12707:32:0","statements":[{"expression":{"id":705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"12727:3:0","subExpression":{"id":704,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":679,"src":"12729:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":706,"nodeType":"ExpressionStatement","src":"12727:3:0"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":681,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":679,"src":"12548:1:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":682,"name":"nonces","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":674,"src":"12552:6:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12559:6:0","memberName":"length","nodeType":"MemberAccess","src":"12552:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12548:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":709,"initializationExpression":{"assignments":[679],"declarations":[{"constant":false,"id":679,"mutability":"mutable","name":"i","nameLocation":"12545:1:0","nodeType":"VariableDeclaration","scope":709,"src":"12537:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":678,"name":"uint256","nodeType":"ElementaryTypeName","src":"12537:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":680,"nodeType":"VariableDeclarationStatement","src":"12537:9:0"},"isSimpleCounterLoop":false,"nodeType":"ForStatement","src":"12532:213:0"}]},"documentation":{"id":671,"nodeType":"StructuredDocumentation","src":"12226:236:0","text":" @notice Cancel one or more nonces\n @dev Cancelled nonces are marked as used\n @dev Emits a Cancel event\n @dev Out of gas may occur in arrays of length > 400\n @param nonces uint256[] List of nonces to cancel"},"functionSelector":"2e340823","id":711,"implemented":true,"kind":"function","modifiers":[],"name":"cancel","nameLocation":"12474:6:0","nodeType":"FunctionDefinition","overrides":{"id":676,"nodeType":"OverrideSpecifier","overrides":[],"src":"12517:8:0"},"parameters":{"id":675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":674,"mutability":"mutable","name":"nonces","nameLocation":"12500:6:0","nodeType":"VariableDeclaration","scope":711,"src":"12481:25:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":672,"name":"uint256","nodeType":"ElementaryTypeName","src":"12481:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":673,"nodeType":"ArrayTypeName","src":"12481:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"12480:27:0"},"returnParameters":{"id":677,"nodeType":"ParameterList","parameters":[],"src":"12526:0:0"},"scope":1448,"src":"12465:284:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1660],"body":{"id":1047,"nodeType":"Block","src":"13818:2443:0","statements":[{"assignments":[744],"declarations":[{"constant":false,"id":744,"mutability":"mutable","name":"errors","nameLocation":"13841:6:0","nodeType":"VariableDeclaration","scope":1047,"src":"13824:23:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":742,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13824:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":743,"nodeType":"ArrayTypeName","src":"13824:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":750,"initialValue":{"arguments":[{"id":748,"name":"MAX_ERROR_COUNT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38,"src":"13864:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":747,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"13850:13:0","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bytes32[] memory)"},"typeName":{"baseType":{"id":745,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13854:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":746,"nodeType":"ArrayTypeName","src":"13854:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}}},"id":749,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13850:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"13824:56:0"},{"assignments":[752],"declarations":[{"constant":false,"id":752,"mutability":"mutable","name":"count","nameLocation":"13894:5:0","nodeType":"VariableDeclaration","scope":1047,"src":"13886:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":751,"name":"uint256","nodeType":"ElementaryTypeName","src":"13886:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":753,"nodeType":"VariableDeclarationStatement","src":"13886:13:0"},{"assignments":[756],"declarations":[{"constant":false,"id":756,"mutability":"mutable","name":"order","nameLocation":"13924:5:0","nodeType":"VariableDeclaration","scope":1047,"src":"13906:23:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_OrderERC20_$1473_memory_ptr","typeString":"struct ISwapERC20.OrderERC20"},"typeName":{"id":755,"nodeType":"UserDefinedTypeName","pathNode":{"id":754,"name":"OrderERC20","nameLocations":["13906:10:0"],"nodeType":"IdentifierPath","referencedDeclaration":1473,"src":"13906:10:0"},"referencedDeclaration":1473,"src":"13906:10:0","typeDescriptions":{"typeIdentifier":"t_struct$_OrderERC20_$1473_storage_ptr","typeString":"struct ISwapERC20.OrderERC20"}},"visibility":"internal"}],"id":757,"nodeType":"VariableDeclarationStatement","src":"13906:23:0"},{"expression":{"id":762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":758,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"13935:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_OrderERC20_$1473_memory_ptr","typeString":"struct ISwapERC20.OrderERC20 memory"}},"id":760,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13941:5:0","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":1452,"src":"13935:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":761,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":716,"src":"13949:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13935:19:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":763,"nodeType":"ExpressionStatement","src":"13935:19:0"},{"expression":{"id":768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":764,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"13960:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_OrderERC20_$1473_memory_ptr","typeString":"struct ISwapERC20.OrderERC20 memory"}},"id":766,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13966:6:0","memberName":"expiry","nodeType":"MemberAccess","referencedDeclaration":1454,"src":"13960:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":767,"name":"expiry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":718,"src":"13975:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13960:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":769,"nodeType":"ExpressionStatement","src":"13960:21:0"},{"expression":{"id":774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":770,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"13987:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_OrderERC20_$1473_memory_ptr","typeString":"struct ISwapERC20.OrderERC20 memory"}},"id":772,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13993:12:0","memberName":"signerWallet","nodeType":"MemberAccess","referencedDeclaration":1456,"src":"13987:18:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":773,"name":"signerWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":720,"src":"14008:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13987:33:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":775,"nodeType":"ExpressionStatement","src":"13987:33:0"},{"expression":{"id":780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":776,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"14026:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_OrderERC20_$1473_memory_ptr","typeString":"struct ISwapERC20.OrderERC20 memory"}},"id":778,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"14032:11:0","memberName":"signerToken","nodeType":"MemberAccess","referencedDeclaration":1458,"src":"14026:17:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":779,"name":"signerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":722,"src":"14046:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"14026:31:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":781,"nodeType":"ExpressionStatement","src":"14026:31:0"},{"expression":{"id":786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":782,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"14063:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_OrderERC20_$1473_memory_ptr","typeString":"struct ISwapERC20.OrderERC20 memory"}},"id":784,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"14069:12:0","memberName":"signerAmount","nodeType":"MemberAccess","referencedDeclaration":1460,"src":"14063:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":785,"name":"signerAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":724,"src":"14084:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14063:33:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":787,"nodeType":"ExpressionStatement","src":"14063:33:0"},{"expression":{"id":792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":788,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"14102:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_OrderERC20_$1473_memory_ptr","typeString":"struct ISwapERC20.OrderERC20 memory"}},"id":790,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"14108:11:0","memberName":"senderToken","nodeType":"MemberAccess","referencedDeclaration":1464,"src":"14102:17:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":791,"name":"senderToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":726,"src":"14122:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"14102:31:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":793,"nodeType":"ExpressionStatement","src":"14102:31:0"},{"expression":{"id":798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":794,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"14139:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_OrderERC20_$1473_memory_ptr","typeString":"struct ISwapERC20.OrderERC20 memory"}},"id":796,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"14145:12:0","memberName":"senderAmount","nodeType":"MemberAccess","referencedDeclaration":1466,"src":"14139:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":797,"name":"senderAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":728,"src":"14160:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14139:33:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":799,"nodeType":"ExpressionStatement","src":"14139:33:0"},{"expression":{"id":804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":800,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"14178:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_OrderERC20_$1473_memory_ptr","typeString":"struct ISwapERC20.OrderERC20 memory"}},"id":802,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"14184:1:0","memberName":"v","nodeType":"MemberAccess","referencedDeclaration":1468,"src":"14178:7:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":803,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":730,"src":"14188:1:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"14178:11:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":805,"nodeType":"ExpressionStatement","src":"14178:11:0"},{"expression":{"id":810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":806,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"14195:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_OrderERC20_$1473_memory_ptr","typeString":"struct ISwapERC20.OrderERC20 memory"}},"id":808,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"14201:1:0","memberName":"r","nodeType":"MemberAccess","referencedDeclaration":1470,"src":"14195:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":809,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":732,"src":"14205:1:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"14195:11:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":811,"nodeType":"ExpressionStatement","src":"14195:11:0"},{"expression":{"id":816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":812,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"14212:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_OrderERC20_$1473_memory_ptr","typeString":"struct ISwapERC20.OrderERC20 memory"}},"id":814,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"14218:1:0","memberName":"s","nodeType":"MemberAccess","referencedDeclaration":1472,"src":"14212:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":815,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":734,"src":"14222:1:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"14212:11:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":817,"nodeType":"ExpressionStatement","src":"14212:11:0"},{"expression":{"id":822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":818,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"14229:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_OrderERC20_$1473_memory_ptr","typeString":"struct ISwapERC20.OrderERC20 memory"}},"id":820,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"14235:12:0","memberName":"senderWallet","nodeType":"MemberAccess","referencedDeclaration":1462,"src":"14229:18:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":821,"name":"senderWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":714,"src":"14250:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"14229:33:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":823,"nodeType":"ExpressionStatement","src":"14229:33:0"},{"assignments":[825],"declarations":[{"constant":false,"id":825,"mutability":"mutable","name":"signatory","nameLocation":"14328:9:0","nodeType":"VariableDeclaration","scope":1047,"src":"14320:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":824,"name":"address","nodeType":"ElementaryTypeName","src":"14320:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":828,"initialValue":{"expression":{"id":826,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"14340:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_OrderERC20_$1473_memory_ptr","typeString":"struct ISwapERC20.OrderERC20 memory"}},"id":827,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14346:12:0","memberName":"signerWallet","nodeType":"MemberAccess","referencedDeclaration":1456,"src":"14340:18:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"14320:38:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":829,"name":"authorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56,"src":"14368:10:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":831,"indexExpression":{"id":830,"name":"signatory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":825,"src":"14379:9:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14368:21:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14401: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":833,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14393:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":832,"name":"address","nodeType":"ElementaryTypeName","src":"14393:7:0","typeDescriptions":{}}},"id":835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14393:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"14368:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":844,"nodeType":"IfStatement","src":"14364:89:0","trueBody":{"id":843,"nodeType":"Block","src":"14405:48:0","statements":[{"expression":{"id":841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":837,"name":"signatory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":825,"src":"14413:9:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":838,"name":"authorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56,"src":"14425:10:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":840,"indexExpression":{"id":839,"name":"signatory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":825,"src":"14436:9:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14425:21:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"14413:33:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":842,"nodeType":"ExpressionStatement","src":"14413:33:0"}]}},{"condition":{"id":873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"14470:360:0","subExpression":{"arguments":[{"id":847,"name":"signatory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":825,"src":"14520:9:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"id":849,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"14564:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_OrderERC20_$1473_memory_ptr","typeString":"struct ISwapERC20.OrderERC20 memory"}},"id":850,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14570:5:0","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":1452,"src":"14564:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":851,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"14587:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_OrderERC20_$1473_memory_ptr","typeString":"struct ISwapERC20.OrderERC20 memory"}},"id":852,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14593:6:0","memberName":"expiry","nodeType":"MemberAccess","referencedDeclaration":1454,"src":"14587:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":853,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"14611:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_OrderERC20_$1473_memory_ptr","typeString":"struct ISwapERC20.OrderERC20 memory"}},"id":854,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14617:12:0","memberName":"signerWallet","nodeType":"MemberAccess","referencedDeclaration":1456,"src":"14611:18:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":855,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"14641:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_OrderERC20_$1473_memory_ptr","typeString":"struct ISwapERC20.OrderERC20 memory"}},"id":856,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14647:11:0","memberName":"signerToken","nodeType":"MemberAccess","referencedDeclaration":1458,"src":"14641:17:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":857,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"14670:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_OrderERC20_$1473_memory_ptr","typeString":"struct ISwapERC20.OrderERC20 memory"}},"id":858,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14676:12:0","memberName":"signerAmount","nodeType":"MemberAccess","referencedDeclaration":1460,"src":"14670:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":859,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"14700:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_OrderERC20_$1473_memory_ptr","typeString":"struct ISwapERC20.OrderERC20 memory"}},"id":860,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14706:12:0","memberName":"senderWallet","nodeType":"MemberAccess","referencedDeclaration":1462,"src":"14700:18:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":861,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"14730:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_OrderERC20_$1473_memory_ptr","typeString":"struct ISwapERC20.OrderERC20 memory"}},"id":862,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14736:11:0","memberName":"senderToken","nodeType":"MemberAccess","referencedDeclaration":1464,"src":"14730:17:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":863,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"14759:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_OrderERC20_$1473_memory_ptr","typeString":"struct ISwapERC20.OrderERC20 memory"}},"id":864,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14765:12:0","memberName":"senderAmount","nodeType":"MemberAccess","referencedDeclaration":1466,"src":"14759:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":848,"name":"_getOrderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1362,"src":"14539:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256,uint256,address,address,uint256,address,address,uint256) view returns (bytes32)"}},"id":865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14539:248:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":868,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":732,"src":"14814:1:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":869,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":734,"src":"14817:1:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":870,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":730,"src":"14820:1:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"id":866,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"14797:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":867,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14801:12:0","memberName":"encodePacked","nodeType":"MemberAccess","src":"14797:16:0","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14797:25:0","tryCall":false,"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"}],"expression":{"id":845,"name":"SignatureCheckerLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3097,"src":"14471:19:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignatureCheckerLib_$3097_$","typeString":"type(library SignatureCheckerLib)"}},"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14491:19:0","memberName":"isValidSignatureNow","nodeType":"MemberAccess","referencedDeclaration":2958,"src":"14471:39:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,bytes32,bytes memory) view returns (bool)"}},"id":872,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14471:359:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"arguments":[{"id":883,"name":"signatory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":825,"src":"14908:9:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":884,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"14919:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_OrderERC20_$1473_memory_ptr","typeString":"struct ISwapERC20.OrderERC20 memory"}},"id":885,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14925:5:0","memberName":"nonce","nodeType":"MemberAccess","referencedDeclaration":1452,"src":"14919:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":882,"name":"nonceUsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1170,"src":"14898:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) view returns (bool)"}},"id":886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14898:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":895,"nodeType":"IfStatement","src":"14894:90:0","trueBody":{"id":894,"nodeType":"Block","src":"14933:51:0","statements":[{"expression":{"id":892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":887,"name":"errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":744,"src":"14941:6:0","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":890,"indexExpression":{"id":889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"14948:7:0","subExpression":{"id":888,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":752,"src":"14948:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14941:15:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"4e6f6e6365416c726561647955736564","id":891,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14959:18:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_be31810793130d8912a530f7c5eaf4687b71e8db19d1b95aa5eccb52dc7cb6a3","typeString":"literal_string \"NonceAlreadyUsed\""},"value":"NonceAlreadyUsed"},"src":"14941:36:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":893,"nodeType":"ExpressionStatement","src":"14941:36:0"}]}},"id":896,"nodeType":"IfStatement","src":"14459:525:0","trueBody":{"id":881,"nodeType":"Block","src":"14837:51:0","statements":[{"expression":{"id":879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":874,"name":"errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":744,"src":"14845:6:0","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":877,"indexExpression":{"id":876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"14852:7:0","subExpression":{"id":875,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":752,"src":"14852:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14845:15:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"5369676e6174757265496e76616c6964","id":878,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14863:18:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_5a5f2aaa77963aca6f1658be990468354ee3c600b9c42e5cd384dda5531814e2","typeString":"literal_string \"SignatureInvalid\""},"value":"SignatureInvalid"},"src":"14845:36:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":880,"nodeType":"ExpressionStatement","src":"14845:36:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":897,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"14994:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_OrderERC20_$1473_memory_ptr","typeString":"struct ISwapERC20.OrderERC20 memory"}},"id":898,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15000:6:0","memberName":"expiry","nodeType":"MemberAccess","referencedDeclaration":1454,"src":"14994:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":899,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"15009:5:0","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15015:9:0","memberName":"timestamp","nodeType":"MemberAccess","src":"15009:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14994:30:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":910,"nodeType":"IfStatement","src":"14990:83:0","trueBody":{"id":909,"nodeType":"Block","src":"15026:47:0","statements":[{"expression":{"id":907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":902,"name":"errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":744,"src":"15034:6:0","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":905,"indexExpression":{"id":904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"15041:7:0","subExpression":{"id":903,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":752,"src":"15041:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15034:15:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"4f7264657245787069726564","id":906,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15052:14:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_b98920167122c1c50f989e3ff83c39ce951426023eeaa003689e64cf1e5d669f","typeString":"literal_string \"OrderExpired\""},"value":"OrderExpired"},"src":"15034:32:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":908,"nodeType":"ExpressionStatement","src":"15034:32:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":911,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"15083:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_OrderERC20_$1473_memory_ptr","typeString":"struct ISwapERC20.OrderERC20 memory"}},"id":912,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15089:12:0","memberName":"senderWallet","nodeType":"MemberAccess","referencedDeclaration":1462,"src":"15083:18:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":915,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15113: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":914,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15105:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":913,"name":"address","nodeType":"ElementaryTypeName","src":"15105:7:0","typeDescriptions":{}}},"id":916,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15105:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15083:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":971,"nodeType":"IfStatement","src":"15079:485:0","trueBody":{"id":970,"nodeType":"Block","src":"15117:447:0","statements":[{"assignments":[919],"declarations":[{"constant":false,"id":919,"mutability":"mutable","name":"senderBalance","nameLocation":"15133:13:0","nodeType":"VariableDeclaration","scope":970,"src":"15125:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":918,"name":"uint256","nodeType":"ElementaryTypeName","src":"15125:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":928,"initialValue":{"arguments":[{"expression":{"id":925,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"15193:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_OrderERC20_$1473_memory_ptr","typeString":"struct ISwapERC20.OrderERC20 memory"}},"id":926,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15199:12:0","memberName":"senderWallet","nodeType":"MemberAccess","referencedDeclaration":1462,"src":"15193:18:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"expression":{"id":921,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"15155:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_OrderERC20_$1473_memory_ptr","typeString":"struct ISwapERC20.OrderERC20 memory"}},"id":922,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15161:11:0","memberName":"senderToken","nodeType":"MemberAccess","referencedDeclaration":1464,"src":"15155:17:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":920,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2299,"src":"15149:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$2299_$","typeString":"type(contract ERC20)"}},"id":923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15149:24:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$2299","typeString":"contract ERC20"}},"id":924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15174:9:0","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2001,"src":"15149:34:0","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15149:70:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15125:94:0"},{"assignments":[930],"declarations":[{"constant":false,"id":930,"mutability":"mutable","name":"senderAllowance","nameLocation":"15236:15:0","nodeType":"VariableDeclaration","scope":970,"src":"15228:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":929,"name":"uint256","nodeType":"ElementaryTypeName","src":"15228:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":943,"initialValue":{"arguments":[{"expression":{"id":936,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"15298:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_OrderERC20_$1473_memory_ptr","typeString":"struct ISwapERC20.OrderERC20 memory"}},"id":937,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15304:12:0","memberName":"senderWallet","nodeType":"MemberAccess","referencedDeclaration":1462,"src":"15298:18:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":940,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"15334:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_SwapERC20_$1448","typeString":"contract SwapERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapERC20_$1448","typeString":"contract SwapERC20"}],"id":939,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15326:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":938,"name":"address","nodeType":"ElementaryTypeName","src":"15326:7:0","typeDescriptions":{}}},"id":941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15326:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"expression":{"id":932,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"15260:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_OrderERC20_$1473_memory_ptr","typeString":"struct ISwapERC20.OrderERC20 memory"}},"id":933,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15266:11:0","memberName":"senderToken","nodeType":"MemberAccess","referencedDeclaration":1464,"src":"15260:17:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":931,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2299,"src":"15254:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$2299_$","typeString":"type(contract ERC20)"}},"id":934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15254:24:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$2299","typeString":"contract ERC20"}},"id":935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15279:9:0","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":2013,"src":"15254:34:0","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15254:93:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15228:119:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":944,"name":"senderAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":930,"src":"15360:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":945,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"15378:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_OrderERC20_$1473_memory_ptr","typeString":"struct ISwapERC20.OrderERC20 memory"}},"id":946,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15384:12:0","memberName":"senderAmount","nodeType":"MemberAccess","referencedDeclaration":1466,"src":"15378:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15360:36:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":956,"nodeType":"IfStatement","src":"15356:99:0","trueBody":{"id":955,"nodeType":"Block","src":"15398:57:0","statements":[{"expression":{"id":953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":948,"name":"errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":744,"src":"15408:6:0","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":951,"indexExpression":{"id":950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"15415:7:0","subExpression":{"id":949,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":752,"src":"15415:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15408:15:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"53656e646572416c6c6f77616e63654c6f77","id":952,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15426:20:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_800539c6130956919ab8a2b5827c926af924322be69b5070bf898a2328682b86","typeString":"literal_string \"SenderAllowanceLow\""},"value":"SenderAllowanceLow"},"src":"15408:38:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":954,"nodeType":"ExpressionStatement","src":"15408:38:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":957,"name":"senderBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":919,"src":"15467:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":958,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"15483:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_OrderERC20_$1473_memory_ptr","typeString":"struct ISwapERC20.OrderERC20 memory"}},"id":959,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15489:12:0","memberName":"senderAmount","nodeType":"MemberAccess","referencedDeclaration":1466,"src":"15483:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15467:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":969,"nodeType":"IfStatement","src":"15463:95:0","trueBody":{"id":968,"nodeType":"Block","src":"15503:55:0","statements":[{"expression":{"id":966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":961,"name":"errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":744,"src":"15513:6:0","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":964,"indexExpression":{"id":963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"15520:7:0","subExpression":{"id":962,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":752,"src":"15520:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15513:15:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"53656e64657242616c616e63654c6f77","id":965,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15531:18:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_9ed44c882ae48c06c3a653622e1ae1d8bb316dcfe515fe97ae6b67ce96cb7e58","typeString":"literal_string \"SenderBalanceLow\""},"value":"SenderBalanceLow"},"src":"15513:36:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":967,"nodeType":"ExpressionStatement","src":"15513:36:0"}]}}]}},{"assignments":[973],"declarations":[{"constant":false,"id":973,"mutability":"mutable","name":"signerBalance","nameLocation":"15578:13:0","nodeType":"VariableDeclaration","scope":1047,"src":"15570:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":972,"name":"uint256","nodeType":"ElementaryTypeName","src":"15570:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":982,"initialValue":{"arguments":[{"expression":{"id":979,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"15636:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_OrderERC20_$1473_memory_ptr","typeString":"struct ISwapERC20.OrderERC20 memory"}},"id":980,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15642:12:0","memberName":"signerWallet","nodeType":"MemberAccess","referencedDeclaration":1456,"src":"15636:18:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"expression":{"id":975,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"15600:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_OrderERC20_$1473_memory_ptr","typeString":"struct ISwapERC20.OrderERC20 memory"}},"id":976,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15606:11:0","memberName":"signerToken","nodeType":"MemberAccess","referencedDeclaration":1458,"src":"15600:17:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":974,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2299,"src":"15594:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$2299_$","typeString":"type(contract ERC20)"}},"id":977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15594:24:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$2299","typeString":"contract ERC20"}},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15619:9:0","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2001,"src":"15594:34:0","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15594:66:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15570:90:0"},{"assignments":[984],"declarations":[{"constant":false,"id":984,"mutability":"mutable","name":"signerAllowance","nameLocation":"15675:15:0","nodeType":"VariableDeclaration","scope":1047,"src":"15667:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":983,"name":"uint256","nodeType":"ElementaryTypeName","src":"15667:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":997,"initialValue":{"arguments":[{"expression":{"id":990,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"15735:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_OrderERC20_$1473_memory_ptr","typeString":"struct ISwapERC20.OrderERC20 memory"}},"id":991,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15741:12:0","memberName":"signerWallet","nodeType":"MemberAccess","referencedDeclaration":1456,"src":"15735:18:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":994,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"15769:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_SwapERC20_$1448","typeString":"contract SwapERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SwapERC20_$1448","typeString":"contract SwapERC20"}],"id":993,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15761:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":992,"name":"address","nodeType":"ElementaryTypeName","src":"15761:7:0","typeDescriptions":{}}},"id":995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15761:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"expression":{"id":986,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"15699:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_OrderERC20_$1473_memory_ptr","typeString":"struct ISwapERC20.OrderERC20 memory"}},"id":987,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15705:11:0","memberName":"signerToken","nodeType":"MemberAccess","referencedDeclaration":1458,"src":"15699:17:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":985,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2299,"src":"15693:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$2299_$","typeString":"type(contract ERC20)"}},"id":988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15693:24:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$2299","typeString":"contract ERC20"}},"id":989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15718:9:0","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":2013,"src":"15693:34:0","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15693:87:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15667:113:0"},{"assignments":[999],"declarations":[{"constant":false,"id":999,"mutability":"mutable","name":"signerFeeAmount","nameLocation":"15795:15:0","nodeType":"VariableDeclaration","scope":1047,"src":"15787:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":998,"name":"uint256","nodeType":"ElementaryTypeName","src":"15787:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1007,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1000,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"15814:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_OrderERC20_$1473_memory_ptr","typeString":"struct ISwapERC20.OrderERC20 memory"}},"id":1001,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15820:12:0","memberName":"signerAmount","nodeType":"MemberAccess","referencedDeclaration":1460,"src":"15814:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1002,"name":"protocolFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58,"src":"15835:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15814:32:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1004,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15813:34:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1005,"name":"FEE_DIVISOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"15850:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15813:48:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15787:74:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1008,"name":"signerAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":984,"src":"15872:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1009,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"15890:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_OrderERC20_$1473_memory_ptr","typeString":"struct ISwapERC20.OrderERC20 memory"}},"id":1010,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15896:12:0","memberName":"signerAmount","nodeType":"MemberAccess","referencedDeclaration":1460,"src":"15890:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":1011,"name":"signerFeeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":999,"src":"15911:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15890:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15872:54:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1022,"nodeType":"IfStatement","src":"15868:113:0","trueBody":{"id":1021,"nodeType":"Block","src":"15928:53:0","statements":[{"expression":{"id":1019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1014,"name":"errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":744,"src":"15936:6:0","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":1017,"indexExpression":{"id":1016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"15943:7:0","subExpression":{"id":1015,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":752,"src":"15943:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15936:15:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"5369676e6572416c6c6f77616e63654c6f77","id":1018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15954:20:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_043477b64d7530aee50fe6e83386cc7e428230dc7d4b9ddbca6fe26ec5225e82","typeString":"literal_string \"SignerAllowanceLow\""},"value":"SignerAllowanceLow"},"src":"15936:38:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1020,"nodeType":"ExpressionStatement","src":"15936:38:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1023,"name":"signerBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":973,"src":"15991:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1024,"name":"order","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":756,"src":"16007:5:0","typeDescriptions":{"typeIdentifier":"t_struct$_OrderERC20_$1473_memory_ptr","typeString":"struct ISwapERC20.OrderERC20 memory"}},"id":1025,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16013:12:0","memberName":"signerAmount","nodeType":"MemberAccess","referencedDeclaration":1460,"src":"16007:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":1026,"name":"signerFeeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":999,"src":"16028:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16007:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15991:52:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1037,"nodeType":"IfStatement","src":"15987:109:0","trueBody":{"id":1036,"nodeType":"Block","src":"16045:51:0","statements":[{"expression":{"id":1034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1029,"name":"errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":744,"src":"16053:6:0","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":1032,"indexExpression":{"id":1031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"16060:7:0","subExpression":{"id":1030,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":752,"src":"16060:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16053:15:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"5369676e657242616c616e63654c6f77","id":1033,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16071:18:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_a3cd58a375ff1de50e673321d07bcc8ab36eb6db1d5b7614806210deb021caff","typeString":"literal_string \"SignerBalanceLow\""},"value":"SignerBalanceLow"},"src":"16053:36:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1035,"nodeType":"ExpressionStatement","src":"16053:36:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1038,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":752,"src":"16151:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":1039,"name":"errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":744,"src":"16160:6:0","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":1040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16167:6:0","memberName":"length","nodeType":"MemberAccess","src":"16160:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16151:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1044,"nodeType":"IfStatement","src":"16147:90:0","trueBody":{"id":1043,"nodeType":"Block","src":"16175:62:0","statements":[{"AST":{"nativeSrc":"16192:39:0","nodeType":"YulBlock","src":"16192:39:0","statements":[{"expression":{"arguments":[{"name":"errors","nativeSrc":"16209:6:0","nodeType":"YulIdentifier","src":"16209:6:0"},{"name":"count","nativeSrc":"16217:5:0","nodeType":"YulIdentifier","src":"16217:5:0"}],"functionName":{"name":"mstore","nativeSrc":"16202:6:0","nodeType":"YulIdentifier","src":"16202:6:0"},"nativeSrc":"16202:21:0","nodeType":"YulFunctionCall","src":"16202:21:0"},"nativeSrc":"16202:21:0","nodeType":"YulExpressionStatement","src":"16202:21:0"}]},"evmVersion":"paris","externalReferences":[{"declaration":752,"isOffset":false,"isSlot":false,"src":"16217:5:0","valueSize":1},{"declaration":744,"isOffset":false,"isSlot":false,"src":"16209:6:0","valueSize":1}],"id":1042,"nodeType":"InlineAssembly","src":"16183:48:0"}]}},{"expression":{"id":1045,"name":"errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":744,"src":"16250:6:0","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"functionReturnParameters":739,"id":1046,"nodeType":"Return","src":"16243:13:0"}]},"documentation":{"id":712,"nodeType":"StructuredDocumentation","src":"12753:766:0","text":" @notice Checks an order for errors\n @param senderWallet address Wallet that would send the order\n @param nonce uint256 Unique and should be sequential\n @param expiry uint256 Expiry in seconds since 1 January 1970\n @param signerWallet address Wallet of the signer\n @param signerToken address ERC20 token transferred from the signer\n @param signerAmount uint256 Amount transferred from the signer\n @param senderToken address ERC20 token transferred from the sender\n @param senderAmount uint256 Amount transferred from the sender\n @param v uint8 \"v\" value of the ECDSA signature\n @param r bytes32 \"r\" value of the ECDSA signature\n @param s bytes32 \"s\" value of the ECDSA signature\n @return bytes32[] errors"},"functionSelector":"b9cb01b0","id":1048,"implemented":true,"kind":"function","modifiers":[],"name":"check","nameLocation":"13531:5:0","nodeType":"FunctionDefinition","parameters":{"id":735,"nodeType":"ParameterList","parameters":[{"constant":false,"id":714,"mutability":"mutable","name":"senderWallet","nameLocation":"13550:12:0","nodeType":"VariableDeclaration","scope":1048,"src":"13542:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":713,"name":"address","nodeType":"ElementaryTypeName","src":"13542:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":716,"mutability":"mutable","name":"nonce","nameLocation":"13576:5:0","nodeType":"VariableDeclaration","scope":1048,"src":"13568:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":715,"name":"uint256","nodeType":"ElementaryTypeName","src":"13568:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":718,"mutability":"mutable","name":"expiry","nameLocation":"13595:6:0","nodeType":"VariableDeclaration","scope":1048,"src":"13587:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":717,"name":"uint256","nodeType":"ElementaryTypeName","src":"13587:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":720,"mutability":"mutable","name":"signerWallet","nameLocation":"13615:12:0","nodeType":"VariableDeclaration","scope":1048,"src":"13607:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":719,"name":"address","nodeType":"ElementaryTypeName","src":"13607:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":722,"mutability":"mutable","name":"signerToken","nameLocation":"13641:11:0","nodeType":"VariableDeclaration","scope":1048,"src":"13633:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":721,"name":"address","nodeType":"ElementaryTypeName","src":"13633:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":724,"mutability":"mutable","name":"signerAmount","nameLocation":"13666:12:0","nodeType":"VariableDeclaration","scope":1048,"src":"13658:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":723,"name":"uint256","nodeType":"ElementaryTypeName","src":"13658:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":726,"mutability":"mutable","name":"senderToken","nameLocation":"13692:11:0","nodeType":"VariableDeclaration","scope":1048,"src":"13684:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":725,"name":"address","nodeType":"ElementaryTypeName","src":"13684:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":728,"mutability":"mutable","name":"senderAmount","nameLocation":"13717:12:0","nodeType":"VariableDeclaration","scope":1048,"src":"13709:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":727,"name":"uint256","nodeType":"ElementaryTypeName","src":"13709:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":730,"mutability":"mutable","name":"v","nameLocation":"13741:1:0","nodeType":"VariableDeclaration","scope":1048,"src":"13735:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":729,"name":"uint8","nodeType":"ElementaryTypeName","src":"13735:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":732,"mutability":"mutable","name":"r","nameLocation":"13756:1:0","nodeType":"VariableDeclaration","scope":1048,"src":"13748:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":731,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13748:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":734,"mutability":"mutable","name":"s","nameLocation":"13771:1:0","nodeType":"VariableDeclaration","scope":1048,"src":"13763:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":733,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13763:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"13536:240:0"},"returnParameters":{"id":739,"nodeType":"ParameterList","parameters":[{"constant":false,"id":738,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1048,"src":"13800:16:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":736,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13800:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":737,"nodeType":"ArrayTypeName","src":"13800:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"13799:18:0"},"scope":1448,"src":"13522:2739:0","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":1081,"nodeType":"Block","src":"16502:145:0","statements":[{"assignments":[1059],"declarations":[{"constant":false,"id":1059,"mutability":"mutable","name":"divisor","nameLocation":"16516:7:0","nodeType":"VariableDeclaration","scope":1081,"src":"16508:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1058,"name":"uint256","nodeType":"ElementaryTypeName","src":"16508:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1069,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"3130","id":1062,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16535:2:0","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}],"id":1061,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16527:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1060,"name":"uint256","nodeType":"ElementaryTypeName","src":"16527:7:0","typeDescriptions":{}}},"id":1063,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16527:11:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":1064,"name":"bonusScale","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":64,"src":"16542:10:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16527:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1066,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16526:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":1067,"name":"stakingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1051,"src":"16556:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16526:44:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16508:62:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1070,"name":"bonusMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"16584:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1071,"name":"stakingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1051,"src":"16595:14:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16584:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1073,"name":"feeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1053,"src":"16612:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16584:37:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1075,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16583:39:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1076,"name":"divisor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1059,"src":"16625:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16583:49:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1078,"name":"MAX_MAX","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41,"src":"16635:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16583:59:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1057,"id":1080,"nodeType":"Return","src":"16576:66:0"}]},"documentation":{"id":1049,"nodeType":"StructuredDocumentation","src":"16265:125:0","text":" @notice Calculates bonus from staking balance\n @param stakingBalance uint256\n @param feeAmount uint256"},"functionSelector":"6f72fd20","id":1082,"implemented":true,"kind":"function","modifiers":[],"name":"calculateBonus","nameLocation":"16402:14:0","nodeType":"FunctionDefinition","parameters":{"id":1054,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1051,"mutability":"mutable","name":"stakingBalance","nameLocation":"16430:14:0","nodeType":"VariableDeclaration","scope":1082,"src":"16422:22:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1050,"name":"uint256","nodeType":"ElementaryTypeName","src":"16422:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1053,"mutability":"mutable","name":"feeAmount","nameLocation":"16458:9:0","nodeType":"VariableDeclaration","scope":1082,"src":"16450:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1052,"name":"uint256","nodeType":"ElementaryTypeName","src":"16450:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16416:55:0"},"returnParameters":{"id":1057,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1056,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1082,"src":"16493:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1055,"name":"uint256","nodeType":"ElementaryTypeName","src":"16493:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16492:9:0"},"scope":1448,"src":"16393:254:0","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1685],"body":{"id":1132,"nodeType":"Block","src":"16884:351:0","statements":[{"assignments":[1094],"declarations":[{"constant":false,"id":1094,"mutability":"mutable","name":"feeAmount","nameLocation":"16943:9:0","nodeType":"VariableDeclaration","scope":1132,"src":"16935:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1093,"name":"uint256","nodeType":"ElementaryTypeName","src":"16935:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1101,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1095,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1087,"src":"16956:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1096,"name":"protocolFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58,"src":"16965:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16956:20:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1098,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16955:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1099,"name":"FEE_DIVISOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"16980:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16955:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16935:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1102,"name":"stakingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68,"src":"17001:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17025: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":1104,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17017:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1103,"name":"address","nodeType":"ElementaryTypeName","src":"17017:7:0","typeDescriptions":{}}},"id":1106,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17017:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"17001:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1108,"name":"feeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1094,"src":"17031:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17043:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17031:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17001:43:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1129,"nodeType":"IfStatement","src":"16997:212:0","trueBody":{"id":1128,"nodeType":"Block","src":"17046:163:0","statements":[{"assignments":[1113],"declarations":[{"constant":false,"id":1113,"mutability":"mutable","name":"bonusAmount","nameLocation":"17062:11:0","nodeType":"VariableDeclaration","scope":1128,"src":"17054:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1112,"name":"uint256","nodeType":"ElementaryTypeName","src":"17054:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1123,"initialValue":{"arguments":[{"arguments":[{"id":1119,"name":"wallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1085,"src":"17130:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":1116,"name":"stakingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68,"src":"17106:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1115,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2299,"src":"17100:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$2299_$","typeString":"type(contract ERC20)"}},"id":1117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17100:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$2299","typeString":"contract ERC20"}},"id":1118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17120:9:0","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2001,"src":"17100:29:0","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":1120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17100:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1121,"name":"feeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1094,"src":"17147:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1114,"name":"calculateBonus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1082,"src":"17076:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) view returns (uint256)"}},"id":1122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17076:88:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17054:110:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1124,"name":"feeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1094,"src":"17179:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1125,"name":"bonusAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1113,"src":"17191:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17179:23:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1092,"id":1127,"nodeType":"Return","src":"17172:30:0"}]}},{"expression":{"id":1130,"name":"feeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1094,"src":"17221:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1092,"id":1131,"nodeType":"Return","src":"17214:16:0"}]},"documentation":{"id":1083,"nodeType":"StructuredDocumentation","src":"16651:115:0","text":" @notice Calculates protocol fee for an account\n @param wallet address\n @param amount uint256"},"functionSelector":"52c5f1f5","id":1133,"implemented":true,"kind":"function","modifiers":[],"name":"calculateProtocolFee","nameLocation":"16778:20:0","nodeType":"FunctionDefinition","overrides":{"id":1089,"nodeType":"OverrideSpecifier","overrides":[],"src":"16857:8:0"},"parameters":{"id":1088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1085,"mutability":"mutable","name":"wallet","nameLocation":"16812:6:0","nodeType":"VariableDeclaration","scope":1133,"src":"16804:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1084,"name":"address","nodeType":"ElementaryTypeName","src":"16804:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1087,"mutability":"mutable","name":"amount","nameLocation":"16832:6:0","nodeType":"VariableDeclaration","scope":1133,"src":"16824:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1086,"name":"uint256","nodeType":"ElementaryTypeName","src":"16824:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16798:44:0"},"returnParameters":{"id":1092,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1091,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1133,"src":"16875:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1090,"name":"uint256","nodeType":"ElementaryTypeName","src":"16875:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16874:9:0"},"scope":1448,"src":"16769:466:0","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1669],"body":{"id":1169,"nodeType":"Block","src":"17497:151:0","statements":[{"assignments":[1145],"declarations":[{"constant":false,"id":1145,"mutability":"mutable","name":"groupKey","nameLocation":"17511:8:0","nodeType":"VariableDeclaration","scope":1169,"src":"17503:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1144,"name":"uint256","nodeType":"ElementaryTypeName","src":"17503:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1149,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1146,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1138,"src":"17522:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"323536","id":1147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17530:3:0","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"src":"17522:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17503:30:0"},{"assignments":[1151],"declarations":[{"constant":false,"id":1151,"mutability":"mutable","name":"indexInGroup","nameLocation":"17547:12:0","nodeType":"VariableDeclaration","scope":1169,"src":"17539:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1150,"name":"uint256","nodeType":"ElementaryTypeName","src":"17539:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1155,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1152,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1138,"src":"17562:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"323536","id":1153,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17570:3:0","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"src":"17562:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17539:34:0"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":1156,"name":"_nonceGroups","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51,"src":"17587:12:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":1158,"indexExpression":{"id":1157,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1136,"src":"17600:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17587:20:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":1160,"indexExpression":{"id":1159,"name":"groupKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1145,"src":"17608:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17587:30:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":1161,"name":"indexInGroup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"17621:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17587:46:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1163,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17586:48:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"31","id":1164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17637:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17586:52:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":1166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17642:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17586:57:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1143,"id":1168,"nodeType":"Return","src":"17579:64:0"}]},"documentation":{"id":1134,"nodeType":"StructuredDocumentation","src":"17239:157:0","text":" @notice Returns true if the nonce has been used\n @param signer address Address of the signer\n @param nonce uint256 Nonce being checked"},"functionSelector":"1647795e","id":1170,"implemented":true,"kind":"function","modifiers":[],"name":"nonceUsed","nameLocation":"17408:9:0","nodeType":"FunctionDefinition","overrides":{"id":1140,"nodeType":"OverrideSpecifier","overrides":[],"src":"17473:8:0"},"parameters":{"id":1139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1136,"mutability":"mutable","name":"signer","nameLocation":"17431:6:0","nodeType":"VariableDeclaration","scope":1170,"src":"17423:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1135,"name":"address","nodeType":"ElementaryTypeName","src":"17423:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1138,"mutability":"mutable","name":"nonce","nameLocation":"17451:5:0","nodeType":"VariableDeclaration","scope":1170,"src":"17443:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1137,"name":"uint256","nodeType":"ElementaryTypeName","src":"17443:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17417:43:0"},"returnParameters":{"id":1143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1142,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1170,"src":"17491:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1141,"name":"bool","nodeType":"ElementaryTypeName","src":"17491:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"17490:6:0"},"scope":1448,"src":"17399:249:0","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":1230,"nodeType":"Block","src":"18017:341:0","statements":[{"assignments":[1181],"declarations":[{"constant":false,"id":1181,"mutability":"mutable","name":"groupKey","nameLocation":"18031:8:0","nodeType":"VariableDeclaration","scope":1230,"src":"18023:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1180,"name":"uint256","nodeType":"ElementaryTypeName","src":"18023:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1185,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1182,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1175,"src":"18042:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"323536","id":1183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18050:3:0","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"src":"18042:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18023:30:0"},{"assignments":[1187],"declarations":[{"constant":false,"id":1187,"mutability":"mutable","name":"indexInGroup","nameLocation":"18067:12:0","nodeType":"VariableDeclaration","scope":1230,"src":"18059:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1186,"name":"uint256","nodeType":"ElementaryTypeName","src":"18059:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1191,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1188,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1175,"src":"18082:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"323536","id":1189,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18090:3:0","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"src":"18082:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18059:34:0"},{"assignments":[1193],"declarations":[{"constant":false,"id":1193,"mutability":"mutable","name":"group","nameLocation":"18107:5:0","nodeType":"VariableDeclaration","scope":1230,"src":"18099:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1192,"name":"uint256","nodeType":"ElementaryTypeName","src":"18099:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1199,"initialValue":{"baseExpression":{"baseExpression":{"id":1194,"name":"_nonceGroups","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51,"src":"18115:12:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":1196,"indexExpression":{"id":1195,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1173,"src":"18128:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18115:20:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":1198,"indexExpression":{"id":1197,"name":"groupKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1181,"src":"18136:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18115:30:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18099:46:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1200,"name":"group","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1193,"src":"18200:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":1201,"name":"indexInGroup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1187,"src":"18209:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18200:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1203,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18199:23:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"31","id":1204,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18225:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18199:27:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":1206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18230:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18199:32:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1211,"nodeType":"IfStatement","src":"18195:65:0","trueBody":{"id":1210,"nodeType":"Block","src":"18233:27:0","statements":[{"expression":{"hexValue":"66616c7365","id":1208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"18248:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":1179,"id":1209,"nodeType":"Return","src":"18241:12:0"}]}},{"expression":{"id":1226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":1212,"name":"_nonceGroups","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51,"src":"18266:12:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":1215,"indexExpression":{"id":1213,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1173,"src":"18279:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18266:20:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":1216,"indexExpression":{"id":1214,"name":"groupKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1181,"src":"18287:8:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18266:30:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1217,"name":"group","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1193,"src":"18299:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"31","id":1220,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18316: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":1219,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18308:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1218,"name":"uint256","nodeType":"ElementaryTypeName","src":"18308:7:0","typeDescriptions":{}}},"id":1221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18308:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":1222,"name":"indexInGroup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1187,"src":"18322:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18308:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1224,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18307:28:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18299:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18266:69:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1227,"nodeType":"ExpressionStatement","src":"18266:69:0"},{"expression":{"hexValue":"74727565","id":1228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"18349:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":1179,"id":1229,"nodeType":"Return","src":"18342:11:0"}]},"documentation":{"id":1171,"nodeType":"StructuredDocumentation","src":"17652:270:0","text":" @notice Marks a nonce as used for the given signer\n @param signer address Address of the signer for which to mark the nonce as used\n @param nonce uint256 Nonce to be marked as used\n @return bool True if the nonce was not marked as used already"},"id":1231,"implemented":true,"kind":"function","modifiers":[],"name":"_markNonceAsUsed","nameLocation":"17934:16:0","nodeType":"FunctionDefinition","parameters":{"id":1176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1173,"mutability":"mutable","name":"signer","nameLocation":"17964:6:0","nodeType":"VariableDeclaration","scope":1231,"src":"17956:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1172,"name":"address","nodeType":"ElementaryTypeName","src":"17956:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1175,"mutability":"mutable","name":"nonce","nameLocation":"17984:5:0","nodeType":"VariableDeclaration","scope":1231,"src":"17976:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1174,"name":"uint256","nodeType":"ElementaryTypeName","src":"17976:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17950:43:0"},"returnParameters":{"id":1179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1178,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1231,"src":"18011:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1177,"name":"bool","nodeType":"ElementaryTypeName","src":"18011:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"18010:6:0"},"scope":1448,"src":"17925:433:0","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1320,"nodeType":"Block","src":"19306:843:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1257,"name":"expiry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1236,"src":"19355:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":1258,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"19365:5:0","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19371:9:0","memberName":"timestamp","nodeType":"MemberAccess","src":"19365:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19355:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1264,"nodeType":"IfStatement","src":"19351:52:0","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1261,"name":"OrderExpired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1529,"src":"19389:12:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":1262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19389:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1263,"nodeType":"RevertStatement","src":"19382:21:0"}},{"assignments":[1266],"declarations":[{"constant":false,"id":1266,"mutability":"mutable","name":"signatory","nameLocation":"19469:9:0","nodeType":"VariableDeclaration","scope":1320,"src":"19461:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1265,"name":"address","nodeType":"ElementaryTypeName","src":"19461:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1268,"initialValue":{"id":1267,"name":"signerWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"19481:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"19461:32:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":1269,"name":"authorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56,"src":"19503:10:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":1271,"indexExpression":{"id":1270,"name":"signatory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1266,"src":"19514:9:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19503:21:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19536: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":1273,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19528:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1272,"name":"address","nodeType":"ElementaryTypeName","src":"19528:7:0","typeDescriptions":{}}},"id":1275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19528:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"19503:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1284,"nodeType":"IfStatement","src":"19499:89:0","trueBody":{"id":1283,"nodeType":"Block","src":"19540:48:0","statements":[{"expression":{"id":1281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1277,"name":"signatory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1266,"src":"19548:9:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1278,"name":"authorized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56,"src":"19560:10:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":1280,"indexExpression":{"id":1279,"name":"signatory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1266,"src":"19571:9:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19560:21:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"19548:33:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1282,"nodeType":"ExpressionStatement","src":"19548:33:0"}]}},{"condition":{"id":1305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"19658:312:0","subExpression":{"arguments":[{"id":1287,"name":"signatory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1266,"src":"19708:9:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":1289,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1234,"src":"19752:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1290,"name":"expiry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1236,"src":"19769:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1291,"name":"signerWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"19787:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1292,"name":"signerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1240,"src":"19811:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1293,"name":"signerAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1242,"src":"19834:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1294,"name":"senderWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1244,"src":"19858:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1295,"name":"senderToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1246,"src":"19882:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1296,"name":"senderAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1248,"src":"19905:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1288,"name":"_getOrderHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1362,"src":"19727:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256,uint256,address,address,uint256,address,address,uint256) view returns (bytes32)"}},"id":1297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19727:200:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":1300,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"19954:1:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1301,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1254,"src":"19957:1:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1302,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1250,"src":"19960:1:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"id":1298,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"19937:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1299,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"19941:12:0","memberName":"encodePacked","nodeType":"MemberAccess","src":"19937:16:0","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19937:25:0","tryCall":false,"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"}],"expression":{"id":1285,"name":"SignatureCheckerLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3097,"src":"19659:19:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SignatureCheckerLib_$3097_$","typeString":"type(library SignatureCheckerLib)"}},"id":1286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19679:19:0","memberName":"isValidSignatureNow","nodeType":"MemberAccess","referencedDeclaration":2958,"src":"19659:39:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,bytes32,bytes memory) view returns (bool)"}},"id":1304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19659:311:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1309,"nodeType":"IfStatement","src":"19647:355:0","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1306,"name":"SignatureInvalid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1541,"src":"19984:16:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":1307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19984:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1308,"nodeType":"RevertStatement","src":"19977:25:0"}},{"condition":{"id":1314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"20077:35:0","subExpression":{"arguments":[{"id":1311,"name":"signatory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1266,"src":"20095:9:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1312,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1234,"src":"20106:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1310,"name":"_markNonceAsUsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1231,"src":"20078:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) returns (bool)"}},"id":1313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20078:34:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1319,"nodeType":"IfStatement","src":"20073:71:0","trueBody":{"errorCall":{"arguments":[{"id":1316,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1234,"src":"20138:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1315,"name":"NonceAlreadyUsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1527,"src":"20121:16:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":1317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20121:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1318,"nodeType":"RevertStatement","src":"20114:30:0"}}]},"documentation":{"id":1232,"nodeType":"StructuredDocumentation","src":"18362:677:0","text":" @notice Checks order and reverts on error\n @param nonce uint256 Unique and should be sequential\n @param expiry uint256 Expiry in seconds since 1 January 1970\n @param signerWallet address Wallet of the signer\n @param signerToken address ERC20 token transferred from the signer\n @param signerAmount uint256 Amount transferred from the signer\n @param senderToken address ERC20 token transferred from the sender\n @param senderAmount uint256 Amount transferred from the sender\n @param v uint8 \"v\" value of the ECDSA signature\n @param r bytes32 \"r\" value of the ECDSA signature\n @param s bytes32 \"s\" value of the ECDSA signature"},"id":1321,"implemented":true,"kind":"function","modifiers":[],"name":"_check","nameLocation":"19051:6:0","nodeType":"FunctionDefinition","parameters":{"id":1255,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1234,"mutability":"mutable","name":"nonce","nameLocation":"19071:5:0","nodeType":"VariableDeclaration","scope":1321,"src":"19063:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1233,"name":"uint256","nodeType":"ElementaryTypeName","src":"19063:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1236,"mutability":"mutable","name":"expiry","nameLocation":"19090:6:0","nodeType":"VariableDeclaration","scope":1321,"src":"19082:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1235,"name":"uint256","nodeType":"ElementaryTypeName","src":"19082:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1238,"mutability":"mutable","name":"signerWallet","nameLocation":"19110:12:0","nodeType":"VariableDeclaration","scope":1321,"src":"19102:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1237,"name":"address","nodeType":"ElementaryTypeName","src":"19102:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1240,"mutability":"mutable","name":"signerToken","nameLocation":"19136:11:0","nodeType":"VariableDeclaration","scope":1321,"src":"19128:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1239,"name":"address","nodeType":"ElementaryTypeName","src":"19128:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1242,"mutability":"mutable","name":"signerAmount","nameLocation":"19161:12:0","nodeType":"VariableDeclaration","scope":1321,"src":"19153:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1241,"name":"uint256","nodeType":"ElementaryTypeName","src":"19153:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1244,"mutability":"mutable","name":"senderWallet","nameLocation":"19187:12:0","nodeType":"VariableDeclaration","scope":1321,"src":"19179:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1243,"name":"address","nodeType":"ElementaryTypeName","src":"19179:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1246,"mutability":"mutable","name":"senderToken","nameLocation":"19213:11:0","nodeType":"VariableDeclaration","scope":1321,"src":"19205:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1245,"name":"address","nodeType":"ElementaryTypeName","src":"19205:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1248,"mutability":"mutable","name":"senderAmount","nameLocation":"19238:12:0","nodeType":"VariableDeclaration","scope":1321,"src":"19230:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1247,"name":"uint256","nodeType":"ElementaryTypeName","src":"19230:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1250,"mutability":"mutable","name":"v","nameLocation":"19262:1:0","nodeType":"VariableDeclaration","scope":1321,"src":"19256:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1249,"name":"uint8","nodeType":"ElementaryTypeName","src":"19256:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":1252,"mutability":"mutable","name":"r","nameLocation":"19277:1:0","nodeType":"VariableDeclaration","scope":1321,"src":"19269:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1251,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19269:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1254,"mutability":"mutable","name":"s","nameLocation":"19292:1:0","nodeType":"VariableDeclaration","scope":1321,"src":"19284:9:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1253,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19284:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"19057:240:0"},"returnParameters":{"id":1256,"nodeType":"ParameterList","parameters":[],"src":"19306:0:0"},"scope":1448,"src":"19042:1107:0","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1361,"nodeType":"Block","src":"20690:355:0","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1347,"name":"ORDER_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":32,"src":"20778:14:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1348,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1324,"src":"20806:5:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1349,"name":"expiry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"20825:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1350,"name":"signerWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1328,"src":"20845:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1351,"name":"signerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1330,"src":"20871:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1352,"name":"signerAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1332,"src":"20896:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1353,"name":"protocolFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58,"src":"20922:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1354,"name":"senderWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1334,"src":"20947:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1355,"name":"senderToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1336,"src":"20973:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1356,"name":"senderAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1338,"src":"20998:12:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1345,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"20754:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"20758:6:0","memberName":"encode","nodeType":"MemberAccess","src":"20754:10:0","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20754:268:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1344,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"20733:9:0","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20733:299:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1343,"name":"_hashTypedData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2628,"src":"20709:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":1359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20709:331:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1342,"id":1360,"nodeType":"Return","src":"20696:344:0"}]},"documentation":{"id":1322,"nodeType":"StructuredDocumentation","src":"20153:283:0","text":" @notice Hashes order parameters\n @param nonce uint256\n @param expiry uint256\n @param signerWallet address\n @param signerToken address\n @param signerAmount uint256\n @param senderToken address\n @param senderAmount uint256\n @return bytes32"},"id":1362,"implemented":true,"kind":"function","modifiers":[],"name":"_getOrderHash","nameLocation":"20448:13:0","nodeType":"FunctionDefinition","parameters":{"id":1339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1324,"mutability":"mutable","name":"nonce","nameLocation":"20475:5:0","nodeType":"VariableDeclaration","scope":1362,"src":"20467:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1323,"name":"uint256","nodeType":"ElementaryTypeName","src":"20467:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1326,"mutability":"mutable","name":"expiry","nameLocation":"20494:6:0","nodeType":"VariableDeclaration","scope":1362,"src":"20486:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1325,"name":"uint256","nodeType":"ElementaryTypeName","src":"20486:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1328,"mutability":"mutable","name":"signerWallet","nameLocation":"20514:12:0","nodeType":"VariableDeclaration","scope":1362,"src":"20506:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1327,"name":"address","nodeType":"ElementaryTypeName","src":"20506:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1330,"mutability":"mutable","name":"signerToken","nameLocation":"20540:11:0","nodeType":"VariableDeclaration","scope":1362,"src":"20532:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1329,"name":"address","nodeType":"ElementaryTypeName","src":"20532:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1332,"mutability":"mutable","name":"signerAmount","nameLocation":"20565:12:0","nodeType":"VariableDeclaration","scope":1362,"src":"20557:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1331,"name":"uint256","nodeType":"ElementaryTypeName","src":"20557:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1334,"mutability":"mutable","name":"senderWallet","nameLocation":"20591:12:0","nodeType":"VariableDeclaration","scope":1362,"src":"20583:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1333,"name":"address","nodeType":"ElementaryTypeName","src":"20583:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1336,"mutability":"mutable","name":"senderToken","nameLocation":"20617:11:0","nodeType":"VariableDeclaration","scope":1362,"src":"20609:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1335,"name":"address","nodeType":"ElementaryTypeName","src":"20609:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1338,"mutability":"mutable","name":"senderAmount","nameLocation":"20642:12:0","nodeType":"VariableDeclaration","scope":1362,"src":"20634:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1337,"name":"uint256","nodeType":"ElementaryTypeName","src":"20634:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20461:197:0"},"returnParameters":{"id":1342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1341,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1362,"src":"20681:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1340,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20681:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"20680:9:0"},"scope":1448,"src":"20439:606:0","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":1446,"nodeType":"Block","src":"21335:1095:0","statements":[{"assignments":[1373],"declarations":[{"constant":false,"id":1373,"mutability":"mutable","name":"feeAmount","nameLocation":"21391:9:0","nodeType":"VariableDeclaration","scope":1446,"src":"21383:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1372,"name":"uint256","nodeType":"ElementaryTypeName","src":"21383:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1380,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1374,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1369,"src":"21404:6:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1375,"name":"protocolFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58,"src":"21413:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21404:20:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1377,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"21403:22:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1378,"name":"FEE_DIVISOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"21428:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21403:36:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21383:56:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1381,"name":"feeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1373,"src":"21449:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1382,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21461:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21449:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1445,"nodeType":"IfStatement","src":"21445:981:0","trueBody":{"id":1444,"nodeType":"Block","src":"21464:962:0","statements":[{"assignments":[1385],"declarations":[{"constant":false,"id":1385,"mutability":"mutable","name":"bonusAmount","nameLocation":"21480:11:0","nodeType":"VariableDeclaration","scope":1444,"src":"21472:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1384,"name":"uint256","nodeType":"ElementaryTypeName","src":"21472:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1386,"nodeType":"VariableDeclarationStatement","src":"21472:19:0"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1387,"name":"stakingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68,"src":"21503:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1390,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21527: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":1389,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21519:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1388,"name":"address","nodeType":"ElementaryTypeName","src":"21519:7:0","typeDescriptions":{}}},"id":1391,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21519:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"21503:26:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1407,"nodeType":"IfStatement","src":"21499:220:0","trueBody":{"id":1406,"nodeType":"Block","src":"21531:188:0","statements":[{"expression":{"id":1404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1393,"name":"bonusAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"21598:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"expression":{"id":1399,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"21668:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21672:6:0","memberName":"sender","nodeType":"MemberAccess","src":"21668:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":1396,"name":"stakingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":68,"src":"21644:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1395,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2299,"src":"21638:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$2299_$","typeString":"type(contract ERC20)"}},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21638:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$2299","typeString":"contract ERC20"}},"id":1398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21658:9:0","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2001,"src":"21638:29:0","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":1401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21638:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1402,"name":"feeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1373,"src":"21691:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1394,"name":"calculateBonus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1082,"src":"21612:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) view returns (uint256)"}},"id":1403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21612:98:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21598:112:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1405,"nodeType":"ExpressionStatement","src":"21598:112:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1408,"name":"bonusAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"21730:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21744:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21730:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1442,"nodeType":"Block","src":"22198:222:0","statements":[{"expression":{"arguments":[{"id":1436,"name":"sourceToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1365,"src":"22316:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1437,"name":"sourceWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1367,"src":"22339:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1438,"name":"protocolFeeWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62,"src":"22363:17:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1439,"name":"feeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1373,"src":"22392:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1433,"name":"SafeTransferLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2941,"src":"22272:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeTransferLib_$2941_$","typeString":"type(library SafeTransferLib)"}},"id":1435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22288:16:0","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":2866,"src":"22272:32:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":1440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22272:139:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1441,"nodeType":"ExpressionStatement","src":"22272:139:0"}]},"id":1443,"nodeType":"IfStatement","src":"21726:694:0","trueBody":{"id":1432,"nodeType":"Block","src":"21747:445:0","statements":[{"expression":{"arguments":[{"id":1414,"name":"sourceToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1365,"src":"21861:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1415,"name":"sourceWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1367,"src":"21884:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1416,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"21908:3:0","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21912:6:0","memberName":"sender","nodeType":"MemberAccess","src":"21908:10:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1418,"name":"bonusAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"21930:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1411,"name":"SafeTransferLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2941,"src":"21817:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeTransferLib_$2941_$","typeString":"type(library SafeTransferLib)"}},"id":1413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21833:16:0","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":2866,"src":"21817:32:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":1419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21817:134:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1420,"nodeType":"ExpressionStatement","src":"21817:134:0"},{"expression":{"arguments":[{"id":1424,"name":"sourceToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1365,"src":"22074:11:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1425,"name":"sourceWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1367,"src":"22097:12:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1426,"name":"protocolFeeWallet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62,"src":"22121:17:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1427,"name":"feeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1373,"src":"22150:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1428,"name":"bonusAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1385,"src":"22162:11:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22150:23:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1421,"name":"SafeTransferLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2941,"src":"22030:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeTransferLib_$2941_$","typeString":"type(library SafeTransferLib)"}},"id":1423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22046:16:0","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":2866,"src":"22030:32:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":1430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22030:153:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1431,"nodeType":"ExpressionStatement","src":"22030:153:0"}]}}]}}]},"documentation":{"id":1363,"nodeType":"StructuredDocumentation","src":"21049:170:0","text":" @notice Calculates and transfers protocol fee and staking bonus\n @param sourceToken address\n @param sourceWallet address\n @param amount uint256"},"id":1447,"implemented":true,"kind":"function","modifiers":[],"name":"_transferProtocolFee","nameLocation":"21231:20:0","nodeType":"FunctionDefinition","parameters":{"id":1370,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1365,"mutability":"mutable","name":"sourceToken","nameLocation":"21265:11:0","nodeType":"VariableDeclaration","scope":1447,"src":"21257:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1364,"name":"address","nodeType":"ElementaryTypeName","src":"21257:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1367,"mutability":"mutable","name":"sourceWallet","nameLocation":"21290:12:0","nodeType":"VariableDeclaration","scope":1447,"src":"21282:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1366,"name":"address","nodeType":"ElementaryTypeName","src":"21282:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1369,"mutability":"mutable","name":"amount","nameLocation":"21316:6:0","nodeType":"VariableDeclaration","scope":1447,"src":"21308:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1368,"name":"uint256","nodeType":"ElementaryTypeName","src":"21308:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21251:75:0"},"returnParameters":{"id":1371,"nodeType":"ParameterList","parameters":[],"src":"21335:0:0"},"scope":1448,"src":"21222:1208:0","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":1449,"src":"549:21883:0","usedErrors":[1523,1527,1529,1531,1533,1535,1537,1539,1541,1543,1545,1692,1695,1698,1701],"usedEvents":[1479,1485,1491,1497,1501,1505,1509,1513,1517,1521,1708,1713,1718]}],"src":"32:22401:0"},"id":0},"contracts/interfaces/ISwapERC20.sol":{"ast":{"absolutePath":"contracts/interfaces/ISwapERC20.sol","exportedSymbols":{"ISwapERC20":[1686]},"id":1687,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1450,"literals":["solidity","0.8",".23"],"nodeType":"PragmaDirective","src":"32:23:1"},{"abstract":false,"baseContracts":[],"canonicalName":"ISwapERC20","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":1686,"linearizedBaseContracts":[1686],"name":"ISwapERC20","nameLocation":"67:10:1","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ISwapERC20.OrderERC20","id":1473,"members":[{"constant":false,"id":1452,"mutability":"mutable","name":"nonce","nameLocation":"114:5:1","nodeType":"VariableDeclaration","scope":1473,"src":"106:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1451,"name":"uint256","nodeType":"ElementaryTypeName","src":"106:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1454,"mutability":"mutable","name":"expiry","nameLocation":"174:6:1","nodeType":"VariableDeclaration","scope":1473,"src":"166:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1453,"name":"uint256","nodeType":"ElementaryTypeName","src":"166:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1456,"mutability":"mutable","name":"signerWallet","nameLocation":"236:12:1","nodeType":"VariableDeclaration","scope":1473,"src":"228:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1455,"name":"address","nodeType":"ElementaryTypeName","src":"228:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1458,"mutability":"mutable","name":"signerToken","nameLocation":"299:11:1","nodeType":"VariableDeclaration","scope":1473,"src":"291:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1457,"name":"address","nodeType":"ElementaryTypeName","src":"291:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1460,"mutability":"mutable","name":"signerAmount","nameLocation":"371:12:1","nodeType":"VariableDeclaration","scope":1473,"src":"363:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1459,"name":"uint256","nodeType":"ElementaryTypeName","src":"363:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1462,"mutability":"mutable","name":"senderWallet","nameLocation":"441:12:1","nodeType":"VariableDeclaration","scope":1473,"src":"433:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1461,"name":"address","nodeType":"ElementaryTypeName","src":"433:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1464,"mutability":"mutable","name":"senderToken","nameLocation":"507:11:1","nodeType":"VariableDeclaration","scope":1473,"src":"499:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1463,"name":"address","nodeType":"ElementaryTypeName","src":"499:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1466,"mutability":"mutable","name":"senderAmount","nameLocation":"579:12:1","nodeType":"VariableDeclaration","scope":1473,"src":"571:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1465,"name":"uint256","nodeType":"ElementaryTypeName","src":"571:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1468,"mutability":"mutable","name":"v","nameLocation":"647:1:1","nodeType":"VariableDeclaration","scope":1473,"src":"641:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1467,"name":"uint8","nodeType":"ElementaryTypeName","src":"641:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":1470,"mutability":"mutable","name":"r","nameLocation":"671:1:1","nodeType":"VariableDeclaration","scope":1473,"src":"663:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1469,"name":"bytes32","nodeType":"ElementaryTypeName","src":"663:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1472,"mutability":"mutable","name":"s","nameLocation":"686:1:1","nodeType":"VariableDeclaration","scope":1473,"src":"678:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1471,"name":"bytes32","nodeType":"ElementaryTypeName","src":"678:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"OrderERC20","nameLocation":"89:10:1","nodeType":"StructDefinition","scope":1686,"src":"82:610:1","visibility":"public"},{"anonymous":false,"eventSelector":"4294f3cfba9ff22cfa9cb602947f7656aa160c0a6c8fa406a28e12bed6bf2093","id":1479,"name":"SwapERC20","nameLocation":"702:9:1","nodeType":"EventDefinition","parameters":{"id":1478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1475,"indexed":true,"mutability":"mutable","name":"nonce","nameLocation":"728:5:1","nodeType":"VariableDeclaration","scope":1479,"src":"712:21:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1474,"name":"uint256","nodeType":"ElementaryTypeName","src":"712:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1477,"indexed":true,"mutability":"mutable","name":"signerWallet","nameLocation":"751:12:1","nodeType":"VariableDeclaration","scope":1479,"src":"735:28:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1476,"name":"address","nodeType":"ElementaryTypeName","src":"735:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"711:53:1"},"src":"696:69:1"},{"anonymous":false,"eventSelector":"8dd3c361eb2366ff27c2db0eb07b9261f1d052570742ab8c9a0c326f37aa576d","id":1485,"name":"Cancel","nameLocation":"775:6:1","nodeType":"EventDefinition","parameters":{"id":1484,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1481,"indexed":true,"mutability":"mutable","name":"nonce","nameLocation":"798:5:1","nodeType":"VariableDeclaration","scope":1485,"src":"782:21:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1480,"name":"uint256","nodeType":"ElementaryTypeName","src":"782:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1483,"indexed":true,"mutability":"mutable","name":"signerWallet","nameLocation":"821:12:1","nodeType":"VariableDeclaration","scope":1485,"src":"805:28:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1482,"name":"address","nodeType":"ElementaryTypeName","src":"805:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"781:53:1"},"src":"769:66:1"},{"anonymous":false,"eventSelector":"30468de898bda644e26bab66e5a2241a3aa6aaf527257f5ca54e0f65204ba14a","id":1491,"name":"Authorize","nameLocation":"844:9:1","nodeType":"EventDefinition","parameters":{"id":1490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1487,"indexed":true,"mutability":"mutable","name":"signer","nameLocation":"870:6:1","nodeType":"VariableDeclaration","scope":1491,"src":"854:22:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1486,"name":"address","nodeType":"ElementaryTypeName","src":"854:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1489,"indexed":true,"mutability":"mutable","name":"signerWallet","nameLocation":"894:12:1","nodeType":"VariableDeclaration","scope":1491,"src":"878:28:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1488,"name":"address","nodeType":"ElementaryTypeName","src":"878:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"853:54:1"},"src":"838:70:1"},{"anonymous":false,"eventSelector":"d7426110292f20fe59e73ccf52124e0f5440a756507c91c7b0a6c50e1eb1a23a","id":1497,"name":"Revoke","nameLocation":"917:6:1","nodeType":"EventDefinition","parameters":{"id":1496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1493,"indexed":true,"mutability":"mutable","name":"signer","nameLocation":"940:6:1","nodeType":"VariableDeclaration","scope":1497,"src":"924:22:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1492,"name":"address","nodeType":"ElementaryTypeName","src":"924:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1495,"indexed":true,"mutability":"mutable","name":"signerWallet","nameLocation":"964:12:1","nodeType":"VariableDeclaration","scope":1497,"src":"948:28:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1494,"name":"address","nodeType":"ElementaryTypeName","src":"948:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"923:54:1"},"src":"911:67:1"},{"anonymous":false,"eventSelector":"dc0410a296e1e33943a772020d333d5f99319d7fcad932a484c53889f7aaa2b1","id":1501,"name":"SetProtocolFee","nameLocation":"987:14:1","nodeType":"EventDefinition","parameters":{"id":1500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1499,"indexed":false,"mutability":"mutable","name":"protocolFee","nameLocation":"1010:11:1","nodeType":"VariableDeclaration","scope":1501,"src":"1002:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1498,"name":"uint256","nodeType":"ElementaryTypeName","src":"1002:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1001:21:1"},"src":"981:42:1"},{"anonymous":false,"eventSelector":"312cc1a9b7287129a22395b9572a3c9ed09ce456f02b519efb34e12bb429eed0","id":1505,"name":"SetProtocolFeeLight","nameLocation":"1032:19:1","nodeType":"EventDefinition","parameters":{"id":1504,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1503,"indexed":false,"mutability":"mutable","name":"protocolFeeLight","nameLocation":"1060:16:1","nodeType":"VariableDeclaration","scope":1505,"src":"1052:24:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1502,"name":"uint256","nodeType":"ElementaryTypeName","src":"1052:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1051:26:1"},"src":"1026:52:1"},{"anonymous":false,"eventSelector":"8b2a800ce9e2e7ccdf4741ae0e41b1f16983192291080ae3b78ac4296ddf598a","id":1509,"name":"SetProtocolFeeWallet","nameLocation":"1087:20:1","nodeType":"EventDefinition","parameters":{"id":1508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1507,"indexed":true,"mutability":"mutable","name":"feeWallet","nameLocation":"1124:9:1","nodeType":"VariableDeclaration","scope":1509,"src":"1108:25:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1506,"name":"address","nodeType":"ElementaryTypeName","src":"1108:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1107:27:1"},"src":"1081:54:1"},{"anonymous":false,"eventSelector":"cc5b12dfbda3644d5f3190b40ad8215d4aaac870df5c8112735085679d7cc333","id":1513,"name":"SetBonusScale","nameLocation":"1144:13:1","nodeType":"EventDefinition","parameters":{"id":1512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1511,"indexed":false,"mutability":"mutable","name":"bonusScale","nameLocation":"1166:10:1","nodeType":"VariableDeclaration","scope":1513,"src":"1158:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1510,"name":"uint256","nodeType":"ElementaryTypeName","src":"1158:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1157:20:1"},"src":"1138:40:1"},{"anonymous":false,"eventSelector":"b113403a9e8b9f0173354acc3a5d210c86be40bb7259c19c55cea02227c5026f","id":1517,"name":"SetBonusMax","nameLocation":"1187:11:1","nodeType":"EventDefinition","parameters":{"id":1516,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1515,"indexed":false,"mutability":"mutable","name":"bonusMax","nameLocation":"1207:8:1","nodeType":"VariableDeclaration","scope":1517,"src":"1199:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1514,"name":"uint256","nodeType":"ElementaryTypeName","src":"1199:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1198:18:1"},"src":"1181:36:1"},{"anonymous":false,"eventSelector":"58fd5d9c33114e6edf8ea5d30956f8d1a4ab112b004f99928b4bcf1b87d66662","id":1521,"name":"SetStaking","nameLocation":"1226:10:1","nodeType":"EventDefinition","parameters":{"id":1520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1519,"indexed":true,"mutability":"mutable","name":"staking","nameLocation":"1253:7:1","nodeType":"VariableDeclaration","scope":1521,"src":"1237:23:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1518,"name":"address","nodeType":"ElementaryTypeName","src":"1237:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1236:25:1"},"src":"1220:42:1"},{"errorSelector":"dd1a4e28","id":1523,"name":"MaxTooHigh","nameLocation":"1272:10:1","nodeType":"ErrorDefinition","parameters":{"id":1522,"nodeType":"ParameterList","parameters":[],"src":"1282:2:1"},"src":"1266:19:1"},{"errorSelector":"91cab504","id":1527,"name":"NonceAlreadyUsed","nameLocation":"1294:16:1","nodeType":"ErrorDefinition","parameters":{"id":1526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1525,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1527,"src":"1311:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1524,"name":"uint256","nodeType":"ElementaryTypeName","src":"1311:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1310:9:1"},"src":"1288:32:1"},{"errorSelector":"c56873ba","id":1529,"name":"OrderExpired","nameLocation":"1329:12:1","nodeType":"ErrorDefinition","parameters":{"id":1528,"nodeType":"ParameterList","parameters":[],"src":"1341:2:1"},"src":"1323:21:1"},{"errorSelector":"f37b175b","id":1531,"name":"ProtocolFeeInvalid","nameLocation":"1353:18:1","nodeType":"ErrorDefinition","parameters":{"id":1530,"nodeType":"ParameterList","parameters":[],"src":"1371:2:1"},"src":"1347:27:1"},{"errorSelector":"f67bd49c","id":1533,"name":"ProtocolFeeLightInvalid","nameLocation":"1383:23:1","nodeType":"ErrorDefinition","parameters":{"id":1532,"nodeType":"ParameterList","parameters":[],"src":"1406:2:1"},"src":"1377:32:1"},{"errorSelector":"66c0a66e","id":1535,"name":"ProtocolFeeWalletInvalid","nameLocation":"1418:24:1","nodeType":"ErrorDefinition","parameters":{"id":1534,"nodeType":"ParameterList","parameters":[],"src":"1442:2:1"},"src":"1412:33:1"},{"errorSelector":"cca4057d","id":1537,"name":"ScaleTooHigh","nameLocation":"1454:12:1","nodeType":"ErrorDefinition","parameters":{"id":1536,"nodeType":"ParameterList","parameters":[],"src":"1466:2:1"},"src":"1448:21:1"},{"errorSelector":"cd4b78cf","id":1539,"name":"SignatoryInvalid","nameLocation":"1478:16:1","nodeType":"ErrorDefinition","parameters":{"id":1538,"nodeType":"ParameterList","parameters":[],"src":"1494:2:1"},"src":"1472:25:1"},{"errorSelector":"37e8456b","id":1541,"name":"SignatureInvalid","nameLocation":"1506:16:1","nodeType":"ErrorDefinition","parameters":{"id":1540,"nodeType":"ParameterList","parameters":[],"src":"1522:2:1"},"src":"1500:25:1"},{"errorSelector":"71758b7c","id":1543,"name":"StakingInvalid","nameLocation":"1534:14:1","nodeType":"ErrorDefinition","parameters":{"id":1542,"nodeType":"ParameterList","parameters":[],"src":"1548:2:1"},"src":"1528:23:1"},{"errorSelector":"7939f424","id":1545,"name":"TransferFromFailed","nameLocation":"1560:18:1","nodeType":"ErrorDefinition","parameters":{"id":1544,"nodeType":"ParameterList","parameters":[],"src":"1578:2:1"},"src":"1554:27:1"},{"functionSelector":"98956069","id":1570,"implemented":false,"kind":"function","modifiers":[],"name":"swap","nameLocation":"1594:4:1","nodeType":"FunctionDefinition","parameters":{"id":1568,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1547,"mutability":"mutable","name":"recipient","nameLocation":"1612:9:1","nodeType":"VariableDeclaration","scope":1570,"src":"1604:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1546,"name":"address","nodeType":"ElementaryTypeName","src":"1604:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1549,"mutability":"mutable","name":"nonce","nameLocation":"1635:5:1","nodeType":"VariableDeclaration","scope":1570,"src":"1627:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1548,"name":"uint256","nodeType":"ElementaryTypeName","src":"1627:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1551,"mutability":"mutable","name":"expiry","nameLocation":"1654:6:1","nodeType":"VariableDeclaration","scope":1570,"src":"1646:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1550,"name":"uint256","nodeType":"ElementaryTypeName","src":"1646:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1553,"mutability":"mutable","name":"signerWallet","nameLocation":"1674:12:1","nodeType":"VariableDeclaration","scope":1570,"src":"1666:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1552,"name":"address","nodeType":"ElementaryTypeName","src":"1666:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1555,"mutability":"mutable","name":"signerToken","nameLocation":"1700:11:1","nodeType":"VariableDeclaration","scope":1570,"src":"1692:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1554,"name":"address","nodeType":"ElementaryTypeName","src":"1692:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1557,"mutability":"mutable","name":"signerAmount","nameLocation":"1725:12:1","nodeType":"VariableDeclaration","scope":1570,"src":"1717:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1556,"name":"uint256","nodeType":"ElementaryTypeName","src":"1717:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1559,"mutability":"mutable","name":"senderToken","nameLocation":"1751:11:1","nodeType":"VariableDeclaration","scope":1570,"src":"1743:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1558,"name":"address","nodeType":"ElementaryTypeName","src":"1743:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1561,"mutability":"mutable","name":"senderAmount","nameLocation":"1776:12:1","nodeType":"VariableDeclaration","scope":1570,"src":"1768:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1560,"name":"uint256","nodeType":"ElementaryTypeName","src":"1768:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1563,"mutability":"mutable","name":"v","nameLocation":"1800:1:1","nodeType":"VariableDeclaration","scope":1570,"src":"1794:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1562,"name":"uint8","nodeType":"ElementaryTypeName","src":"1794:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":1565,"mutability":"mutable","name":"r","nameLocation":"1815:1:1","nodeType":"VariableDeclaration","scope":1570,"src":"1807:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1564,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1807:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1567,"mutability":"mutable","name":"s","nameLocation":"1830:1:1","nodeType":"VariableDeclaration","scope":1570,"src":"1822:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1566,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1822:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1598:237:1"},"returnParameters":{"id":1569,"nodeType":"ParameterList","parameters":[],"src":"1844:0:1"},"scope":1686,"src":"1585:260:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"3eb1af24","id":1595,"implemented":false,"kind":"function","modifiers":[],"name":"swapAnySender","nameLocation":"1858:13:1","nodeType":"FunctionDefinition","parameters":{"id":1593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1572,"mutability":"mutable","name":"recipient","nameLocation":"1885:9:1","nodeType":"VariableDeclaration","scope":1595,"src":"1877:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1571,"name":"address","nodeType":"ElementaryTypeName","src":"1877:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1574,"mutability":"mutable","name":"nonce","nameLocation":"1908:5:1","nodeType":"VariableDeclaration","scope":1595,"src":"1900:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1573,"name":"uint256","nodeType":"ElementaryTypeName","src":"1900:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1576,"mutability":"mutable","name":"expiry","nameLocation":"1927:6:1","nodeType":"VariableDeclaration","scope":1595,"src":"1919:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1575,"name":"uint256","nodeType":"ElementaryTypeName","src":"1919:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1578,"mutability":"mutable","name":"signerWallet","nameLocation":"1947:12:1","nodeType":"VariableDeclaration","scope":1595,"src":"1939:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1577,"name":"address","nodeType":"ElementaryTypeName","src":"1939:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1580,"mutability":"mutable","name":"signerToken","nameLocation":"1973:11:1","nodeType":"VariableDeclaration","scope":1595,"src":"1965:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1579,"name":"address","nodeType":"ElementaryTypeName","src":"1965:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1582,"mutability":"mutable","name":"signerAmount","nameLocation":"1998:12:1","nodeType":"VariableDeclaration","scope":1595,"src":"1990:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1581,"name":"uint256","nodeType":"ElementaryTypeName","src":"1990:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1584,"mutability":"mutable","name":"senderToken","nameLocation":"2024:11:1","nodeType":"VariableDeclaration","scope":1595,"src":"2016:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1583,"name":"address","nodeType":"ElementaryTypeName","src":"2016:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1586,"mutability":"mutable","name":"senderAmount","nameLocation":"2049:12:1","nodeType":"VariableDeclaration","scope":1595,"src":"2041:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1585,"name":"uint256","nodeType":"ElementaryTypeName","src":"2041:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1588,"mutability":"mutable","name":"v","nameLocation":"2073:1:1","nodeType":"VariableDeclaration","scope":1595,"src":"2067:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1587,"name":"uint8","nodeType":"ElementaryTypeName","src":"2067:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":1590,"mutability":"mutable","name":"r","nameLocation":"2088:1:1","nodeType":"VariableDeclaration","scope":1595,"src":"2080:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1589,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2080:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1592,"mutability":"mutable","name":"s","nameLocation":"2103:1:1","nodeType":"VariableDeclaration","scope":1595,"src":"2095:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1591,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2095:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1871:237:1"},"returnParameters":{"id":1594,"nodeType":"ParameterList","parameters":[],"src":"2117:0:1"},"scope":1686,"src":"1849:269:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"46e4480d","id":1618,"implemented":false,"kind":"function","modifiers":[],"name":"swapLight","nameLocation":"2131:9:1","nodeType":"FunctionDefinition","parameters":{"id":1616,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1597,"mutability":"mutable","name":"nonce","nameLocation":"2154:5:1","nodeType":"VariableDeclaration","scope":1618,"src":"2146:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1596,"name":"uint256","nodeType":"ElementaryTypeName","src":"2146:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1599,"mutability":"mutable","name":"expiry","nameLocation":"2173:6:1","nodeType":"VariableDeclaration","scope":1618,"src":"2165:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1598,"name":"uint256","nodeType":"ElementaryTypeName","src":"2165:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1601,"mutability":"mutable","name":"signerWallet","nameLocation":"2193:12:1","nodeType":"VariableDeclaration","scope":1618,"src":"2185:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1600,"name":"address","nodeType":"ElementaryTypeName","src":"2185:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1603,"mutability":"mutable","name":"signerToken","nameLocation":"2219:11:1","nodeType":"VariableDeclaration","scope":1618,"src":"2211:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1602,"name":"address","nodeType":"ElementaryTypeName","src":"2211:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1605,"mutability":"mutable","name":"signerAmount","nameLocation":"2244:12:1","nodeType":"VariableDeclaration","scope":1618,"src":"2236:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1604,"name":"uint256","nodeType":"ElementaryTypeName","src":"2236:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1607,"mutability":"mutable","name":"senderToken","nameLocation":"2270:11:1","nodeType":"VariableDeclaration","scope":1618,"src":"2262:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1606,"name":"address","nodeType":"ElementaryTypeName","src":"2262:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1609,"mutability":"mutable","name":"senderAmount","nameLocation":"2295:12:1","nodeType":"VariableDeclaration","scope":1618,"src":"2287:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1608,"name":"uint256","nodeType":"ElementaryTypeName","src":"2287:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1611,"mutability":"mutable","name":"v","nameLocation":"2319:1:1","nodeType":"VariableDeclaration","scope":1618,"src":"2313:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1610,"name":"uint8","nodeType":"ElementaryTypeName","src":"2313:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":1613,"mutability":"mutable","name":"r","nameLocation":"2334:1:1","nodeType":"VariableDeclaration","scope":1618,"src":"2326:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1612,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2326:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1615,"mutability":"mutable","name":"s","nameLocation":"2349:1:1","nodeType":"VariableDeclaration","scope":1618,"src":"2341:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1614,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2341:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2140:214:1"},"returnParameters":{"id":1617,"nodeType":"ParameterList","parameters":[],"src":"2363:0:1"},"scope":1686,"src":"2122:242:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b6a5d7de","id":1623,"implemented":false,"kind":"function","modifiers":[],"name":"authorize","nameLocation":"2377:9:1","nodeType":"FunctionDefinition","parameters":{"id":1621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1620,"mutability":"mutable","name":"sender","nameLocation":"2395:6:1","nodeType":"VariableDeclaration","scope":1623,"src":"2387:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1619,"name":"address","nodeType":"ElementaryTypeName","src":"2387:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2386:16:1"},"returnParameters":{"id":1622,"nodeType":"ParameterList","parameters":[],"src":"2411:0:1"},"scope":1686,"src":"2368:44:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b6549f75","id":1626,"implemented":false,"kind":"function","modifiers":[],"name":"revoke","nameLocation":"2425:6:1","nodeType":"FunctionDefinition","parameters":{"id":1624,"nodeType":"ParameterList","parameters":[],"src":"2431:2:1"},"returnParameters":{"id":1625,"nodeType":"ParameterList","parameters":[],"src":"2442:0:1"},"scope":1686,"src":"2416:27:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"2e340823","id":1632,"implemented":false,"kind":"function","modifiers":[],"name":"cancel","nameLocation":"2456:6:1","nodeType":"FunctionDefinition","parameters":{"id":1630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1629,"mutability":"mutable","name":"nonces","nameLocation":"2482:6:1","nodeType":"VariableDeclaration","scope":1632,"src":"2463:25:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1627,"name":"uint256","nodeType":"ElementaryTypeName","src":"2463:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1628,"nodeType":"ArrayTypeName","src":"2463:9:1","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2462:27:1"},"returnParameters":{"id":1631,"nodeType":"ParameterList","parameters":[],"src":"2498:0:1"},"scope":1686,"src":"2447:52:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b9cb01b0","id":1660,"implemented":false,"kind":"function","modifiers":[],"name":"check","nameLocation":"2512:5:1","nodeType":"FunctionDefinition","parameters":{"id":1655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1634,"mutability":"mutable","name":"senderWallet","nameLocation":"2531:12:1","nodeType":"VariableDeclaration","scope":1660,"src":"2523:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1633,"name":"address","nodeType":"ElementaryTypeName","src":"2523:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1636,"mutability":"mutable","name":"nonce","nameLocation":"2557:5:1","nodeType":"VariableDeclaration","scope":1660,"src":"2549:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1635,"name":"uint256","nodeType":"ElementaryTypeName","src":"2549:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1638,"mutability":"mutable","name":"expiry","nameLocation":"2576:6:1","nodeType":"VariableDeclaration","scope":1660,"src":"2568:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1637,"name":"uint256","nodeType":"ElementaryTypeName","src":"2568:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1640,"mutability":"mutable","name":"signerWallet","nameLocation":"2596:12:1","nodeType":"VariableDeclaration","scope":1660,"src":"2588:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1639,"name":"address","nodeType":"ElementaryTypeName","src":"2588:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1642,"mutability":"mutable","name":"signerToken","nameLocation":"2622:11:1","nodeType":"VariableDeclaration","scope":1660,"src":"2614:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1641,"name":"address","nodeType":"ElementaryTypeName","src":"2614:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1644,"mutability":"mutable","name":"signerAmount","nameLocation":"2647:12:1","nodeType":"VariableDeclaration","scope":1660,"src":"2639:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1643,"name":"uint256","nodeType":"ElementaryTypeName","src":"2639:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1646,"mutability":"mutable","name":"senderToken","nameLocation":"2673:11:1","nodeType":"VariableDeclaration","scope":1660,"src":"2665:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1645,"name":"address","nodeType":"ElementaryTypeName","src":"2665:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1648,"mutability":"mutable","name":"senderAmount","nameLocation":"2698:12:1","nodeType":"VariableDeclaration","scope":1660,"src":"2690:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1647,"name":"uint256","nodeType":"ElementaryTypeName","src":"2690:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1650,"mutability":"mutable","name":"v","nameLocation":"2722:1:1","nodeType":"VariableDeclaration","scope":1660,"src":"2716:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1649,"name":"uint8","nodeType":"ElementaryTypeName","src":"2716:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":1652,"mutability":"mutable","name":"r","nameLocation":"2737:1:1","nodeType":"VariableDeclaration","scope":1660,"src":"2729:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1651,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2729:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1654,"mutability":"mutable","name":"s","nameLocation":"2752:1:1","nodeType":"VariableDeclaration","scope":1660,"src":"2744:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1653,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2744:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2517:240:1"},"returnParameters":{"id":1659,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1658,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1660,"src":"2781:16:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":1656,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2781:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1657,"nodeType":"ArrayTypeName","src":"2781:9:1","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"2780:18:1"},"scope":1686,"src":"2503:296:1","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"1647795e","id":1669,"implemented":false,"kind":"function","modifiers":[],"name":"nonceUsed","nameLocation":"2812:9:1","nodeType":"FunctionDefinition","parameters":{"id":1665,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1662,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1669,"src":"2822:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1661,"name":"address","nodeType":"ElementaryTypeName","src":"2822:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1664,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1669,"src":"2831:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1663,"name":"uint256","nodeType":"ElementaryTypeName","src":"2831:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2821:18:1"},"returnParameters":{"id":1668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1667,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1669,"src":"2863:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1666,"name":"bool","nodeType":"ElementaryTypeName","src":"2863:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2862:6:1"},"scope":1686,"src":"2803:66:1","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"b9181611","id":1676,"implemented":false,"kind":"function","modifiers":[],"name":"authorized","nameLocation":"2882:10:1","nodeType":"FunctionDefinition","parameters":{"id":1672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1671,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1676,"src":"2893:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1670,"name":"address","nodeType":"ElementaryTypeName","src":"2893:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2892:9:1"},"returnParameters":{"id":1675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1674,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1676,"src":"2925:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1673,"name":"address","nodeType":"ElementaryTypeName","src":"2925:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2924:9:1"},"scope":1686,"src":"2873:61:1","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"52c5f1f5","id":1685,"implemented":false,"kind":"function","modifiers":[],"name":"calculateProtocolFee","nameLocation":"2947:20:1","nodeType":"FunctionDefinition","parameters":{"id":1681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1678,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1685,"src":"2973:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1677,"name":"address","nodeType":"ElementaryTypeName","src":"2973:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1680,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1685,"src":"2986:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1679,"name":"uint256","nodeType":"ElementaryTypeName","src":"2986:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2967:30:1"},"returnParameters":{"id":1684,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1683,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1685,"src":"3021:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1682,"name":"uint256","nodeType":"ElementaryTypeName","src":"3021:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3020:9:1"},"scope":1686,"src":"2938:92:1","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1687,"src":"57:2975:1","usedErrors":[1523,1527,1529,1531,1533,1535,1537,1539,1541,1543,1545],"usedEvents":[1479,1485,1491,1497,1501,1505,1509,1513,1517,1521]}],"src":"32:3001:1"},"id":1},"solady/src/auth/Ownable.sol":{"ast":{"absolutePath":"solady/src/auth/Ownable.sol","exportedSymbols":{"Ownable":[1880]},"id":1881,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1688,"literals":["solidity","^","0.8",".4"],"nodeType":"PragmaDirective","src":"32:23:2"},{"abstract":true,"baseContracts":[],"canonicalName":"Ownable","contractDependencies":[],"contractKind":"contract","documentation":{"id":1689,"nodeType":"StructuredDocumentation","src":"57:514:2","text":"@notice Simple single owner authorization mixin.\n @author Solady (https://github.com/vectorized/solady/blob/main/src/auth/Ownable.sol)\n @dev Note:\n This implementation does NOT auto-initialize the owner to `msg.sender`.\n You MUST call the `_initializeOwner` in the constructor / initializer.\n While the ownable portion follows\n [EIP-173](https://eips.ethereum.org/EIPS/eip-173) for compatibility,\n the nomenclature for the 2-step ownership handover may be unique to this codebase."},"fullyImplemented":true,"id":1880,"linearizedBaseContracts":[1880],"name":"Ownable","nameLocation":"589:7:2","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1690,"nodeType":"StructuredDocumentation","src":"886:59:2","text":"@dev The caller is not authorized to call the function."},"errorSelector":"82b42900","id":1692,"name":"Unauthorized","nameLocation":"956:12:2","nodeType":"ErrorDefinition","parameters":{"id":1691,"nodeType":"ParameterList","parameters":[],"src":"968:2:2"},"src":"950:21:2"},{"documentation":{"id":1693,"nodeType":"StructuredDocumentation","src":"977:51:2","text":"@dev The `newOwner` cannot be the zero address."},"errorSelector":"7448fbae","id":1695,"name":"NewOwnerIsZeroAddress","nameLocation":"1039:21:2","nodeType":"ErrorDefinition","parameters":{"id":1694,"nodeType":"ParameterList","parameters":[],"src":"1060:2:2"},"src":"1033:30:2"},{"documentation":{"id":1696,"nodeType":"StructuredDocumentation","src":"1069:67:2","text":"@dev The `pendingOwner` does not have a valid handover request."},"errorSelector":"6f5e8818","id":1698,"name":"NoHandoverRequest","nameLocation":"1147:17:2","nodeType":"ErrorDefinition","parameters":{"id":1697,"nodeType":"ParameterList","parameters":[],"src":"1164:2:2"},"src":"1141:26:2"},{"documentation":{"id":1699,"nodeType":"StructuredDocumentation","src":"1173:34:2","text":"@dev Cannot double-initialize."},"errorSelector":"0dc149f0","id":1701,"name":"AlreadyInitialized","nameLocation":"1218:18:2","nodeType":"ErrorDefinition","parameters":{"id":1700,"nodeType":"ParameterList","parameters":[],"src":"1236:2:2"},"src":"1212:27:2"},{"anonymous":false,"documentation":{"id":1702,"nodeType":"StructuredDocumentation","src":"1528:310:2","text":"@dev The ownership is transferred from `oldOwner` to `newOwner`.\n This event is intentionally kept the same as OpenZeppelin's Ownable to be\n compatible with indexers and [EIP-173](https://eips.ethereum.org/EIPS/eip-173),\n despite it not being as lightweight as a single argument event."},"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","id":1708,"name":"OwnershipTransferred","nameLocation":"1849:20:2","nodeType":"EventDefinition","parameters":{"id":1707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1704,"indexed":true,"mutability":"mutable","name":"oldOwner","nameLocation":"1886:8:2","nodeType":"VariableDeclaration","scope":1708,"src":"1870:24:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1703,"name":"address","nodeType":"ElementaryTypeName","src":"1870:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1706,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"1912:8:2","nodeType":"VariableDeclaration","scope":1708,"src":"1896:24:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1705,"name":"address","nodeType":"ElementaryTypeName","src":"1896:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1869:52:2"},"src":"1843:79:2"},{"anonymous":false,"documentation":{"id":1709,"nodeType":"StructuredDocumentation","src":"1928:68:2","text":"@dev An ownership handover to `pendingOwner` has been requested."},"eventSelector":"dbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d","id":1713,"name":"OwnershipHandoverRequested","nameLocation":"2007:26:2","nodeType":"EventDefinition","parameters":{"id":1712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1711,"indexed":true,"mutability":"mutable","name":"pendingOwner","nameLocation":"2050:12:2","nodeType":"VariableDeclaration","scope":1713,"src":"2034:28:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1710,"name":"address","nodeType":"ElementaryTypeName","src":"2034:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2033:30:2"},"src":"2001:63:2"},{"anonymous":false,"documentation":{"id":1714,"nodeType":"StructuredDocumentation","src":"2070:68:2","text":"@dev The ownership handover to `pendingOwner` has been canceled."},"eventSelector":"fa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92","id":1718,"name":"OwnershipHandoverCanceled","nameLocation":"2149:25:2","nodeType":"EventDefinition","parameters":{"id":1717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1716,"indexed":true,"mutability":"mutable","name":"pendingOwner","nameLocation":"2191:12:2","nodeType":"VariableDeclaration","scope":1718,"src":"2175:28:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1715,"name":"address","nodeType":"ElementaryTypeName","src":"2175:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2174:30:2"},"src":"2143:62:2"},{"constant":true,"documentation":{"id":1719,"nodeType":"StructuredDocumentation","src":"2211:69:2","text":"@dev `keccak256(bytes(\"OwnershipTransferred(address,address)\"))`."},"id":1722,"mutability":"constant","name":"_OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE","nameLocation":"2310:38:2","nodeType":"VariableDeclaration","scope":1880,"src":"2285:140:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1720,"name":"uint256","nodeType":"ElementaryTypeName","src":"2285:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307838626530303739633533313635393134313334346364316664306134663238343139343937663937323261336461616665336234313836663662363435376530","id":1721,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2359:66:2","typeDescriptions":{"typeIdentifier":"t_rational_63267312222310607310220992301550539520881909915348243260808268974908359596000_by_1","typeString":"int_const 6326...(69 digits omitted)...6000"},"value":"0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0"},"visibility":"private"},{"constant":true,"documentation":{"id":1723,"nodeType":"StructuredDocumentation","src":"2432:67:2","text":"@dev `keccak256(bytes(\"OwnershipHandoverRequested(address)\"))`."},"id":1726,"mutability":"constant","name":"_OWNERSHIP_HANDOVER_REQUESTED_EVENT_SIGNATURE","nameLocation":"2529:45:2","nodeType":"VariableDeclaration","scope":1880,"src":"2504:147:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1724,"name":"uint256","nodeType":"ElementaryTypeName","src":"2504:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307864626633366131303764613139653439353237613731373661316261626639363362346230666638636465333565653335643663643866316639616337653164","id":1725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2585:66:2","typeDescriptions":{"typeIdentifier":"t_rational_99486589706178915293482045537067896628184784474209892898124391061398315892253_by_1","typeString":"int_const 9948...(69 digits omitted)...2253"},"value":"0xdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d"},"visibility":"private"},{"constant":true,"documentation":{"id":1727,"nodeType":"StructuredDocumentation","src":"2658:66:2","text":"@dev `keccak256(bytes(\"OwnershipHandoverCanceled(address)\"))`."},"id":1730,"mutability":"constant","name":"_OWNERSHIP_HANDOVER_CANCELED_EVENT_SIGNATURE","nameLocation":"2754:44:2","nodeType":"VariableDeclaration","scope":1880,"src":"2729:146:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1728,"name":"uint256","nodeType":"ElementaryTypeName","src":"2729:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307866613762386561623764613637663431326363393537356564343334363434363866396266626165383964313637353931373334366361366438666533633932","id":1729,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2809:66:2","typeDescriptions":{"typeIdentifier":"t_rational_113296519006148992096626879868577423813870114622160551413976512868841544367250_by_1","typeString":"int_const 1132...(70 digits omitted)...7250"},"value":"0xfa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92"},"visibility":"private"},{"constant":true,"documentation":{"id":1731,"nodeType":"StructuredDocumentation","src":"3165:334:2","text":"@dev The owner slot is given by:\n `bytes32(~uint256(uint32(bytes4(keccak256(\"_OWNER_SLOT_NOT\")))))`.\n It is intentionally chosen to be a high value\n to avoid collision with lower slots.\n The choice of manual storage layout is to enable compatibility\n with both regular and upgradeable contracts."},"id":1734,"mutability":"constant","name":"_OWNER_SLOT","nameLocation":"3530:11:2","nodeType":"VariableDeclaration","scope":1880,"src":"3504:114:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1732,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3504:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307866666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666663734383733393237","id":1733,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3552:66:2","typeDescriptions":{"typeIdentifier":"t_rational_115792089237316195423570985008687907853269984665640564039457584007910789691687_by_1","typeString":"int_const 1157...(70 digits omitted)...1687"},"value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927"},"visibility":"internal"},{"constant":true,"documentation":{"id":1735,"nodeType":"StructuredDocumentation","src":"3625:276:2","text":"The ownership handover slot of `newOwner` is given by:\n ```\n     mstore(0x00, or(shl(96, user), _HANDOVER_SLOT_SEED))\n     let handoverSlot := keccak256(0x00, 0x20)\n ```\n It stores the expiry timestamp of the two-step ownership handover."},"id":1738,"mutability":"constant","name":"_HANDOVER_SLOT_SEED","nameLocation":"3931:19:2","nodeType":"VariableDeclaration","scope":1880,"src":"3906:57:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1736,"name":"uint256","nodeType":"ElementaryTypeName","src":"3906:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783338396137356531","id":1737,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3953:10:2","typeDescriptions":{"typeIdentifier":"t_rational_949646817_by_1","typeString":"int_const 949646817"},"value":"0x389a75e1"},"visibility":"private"},{"body":{"id":1744,"nodeType":"Block","src":"4424:2:2","statements":[]},"documentation":{"id":1739,"nodeType":"StructuredDocumentation","src":"4253:90:2","text":"@dev Override to return true to make `_initializeOwner` prevent double-initialization."},"id":1745,"implemented":true,"kind":"function","modifiers":[],"name":"_guardInitializeOwner","nameLocation":"4357:21:2","nodeType":"FunctionDefinition","parameters":{"id":1740,"nodeType":"ParameterList","parameters":[],"src":"4378:2:2"},"returnParameters":{"id":1743,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1742,"mutability":"mutable","name":"guard","nameLocation":"4417:5:2","nodeType":"VariableDeclaration","scope":1745,"src":"4412:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1741,"name":"bool","nodeType":"ElementaryTypeName","src":"4412:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4411:12:2"},"scope":1880,"src":"4348:78:2","stateMutability":"pure","virtual":true,"visibility":"internal"},{"body":{"id":1758,"nodeType":"Block","src":"4944:1129:2","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":1751,"name":"_guardInitializeOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1745,"src":"4958:21:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_bool_$","typeString":"function () pure returns (bool)"}},"id":1752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4958:23:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1756,"nodeType":"Block","src":"5649:418:2","statements":[{"AST":{"nativeSrc":"5719:338:2","nodeType":"YulBlock","src":"5719:338:2","statements":[{"nativeSrc":"5781:38:2","nodeType":"YulAssignment","src":"5781:38:2","value":{"arguments":[{"kind":"number","nativeSrc":"5797:2:2","nodeType":"YulLiteral","src":"5797:2:2","type":"","value":"96"},{"arguments":[{"kind":"number","nativeSrc":"5805:2:2","nodeType":"YulLiteral","src":"5805:2:2","type":"","value":"96"},{"name":"newOwner","nativeSrc":"5809:8:2","nodeType":"YulIdentifier","src":"5809:8:2"}],"functionName":{"name":"shl","nativeSrc":"5801:3:2","nodeType":"YulIdentifier","src":"5801:3:2"},"nativeSrc":"5801:17:2","nodeType":"YulFunctionCall","src":"5801:17:2"}],"functionName":{"name":"shr","nativeSrc":"5793:3:2","nodeType":"YulIdentifier","src":"5793:3:2"},"nativeSrc":"5793:26:2","nodeType":"YulFunctionCall","src":"5793:26:2"},"variableNames":[{"name":"newOwner","nativeSrc":"5781:8:2","nodeType":"YulIdentifier","src":"5781:8:2"}]},{"expression":{"arguments":[{"name":"_OWNER_SLOT","nativeSrc":"5883:11:2","nodeType":"YulIdentifier","src":"5883:11:2"},{"name":"newOwner","nativeSrc":"5896:8:2","nodeType":"YulIdentifier","src":"5896:8:2"}],"functionName":{"name":"sstore","nativeSrc":"5876:6:2","nodeType":"YulIdentifier","src":"5876:6:2"},"nativeSrc":"5876:29:2","nodeType":"YulFunctionCall","src":"5876:29:2"},"nativeSrc":"5876:29:2","nodeType":"YulExpressionStatement","src":"5876:29:2"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"5985:1:2","nodeType":"YulLiteral","src":"5985:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"5988:1:2","nodeType":"YulLiteral","src":"5988:1:2","type":"","value":"0"},{"name":"_OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE","nativeSrc":"5991:38:2","nodeType":"YulIdentifier","src":"5991:38:2"},{"kind":"number","nativeSrc":"6031:1:2","nodeType":"YulLiteral","src":"6031:1:2","type":"","value":"0"},{"name":"newOwner","nativeSrc":"6034:8:2","nodeType":"YulIdentifier","src":"6034:8:2"}],"functionName":{"name":"log3","nativeSrc":"5980:4:2","nodeType":"YulIdentifier","src":"5980:4:2"},"nativeSrc":"5980:63:2","nodeType":"YulFunctionCall","src":"5980:63:2"},"nativeSrc":"5980:63:2","nodeType":"YulExpressionStatement","src":"5980:63:2"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1722,"isOffset":false,"isSlot":false,"src":"5991:38:2","valueSize":1},{"declaration":1734,"isOffset":false,"isSlot":false,"src":"5883:11:2","valueSize":1},{"declaration":1748,"isOffset":false,"isSlot":false,"src":"5781:8:2","valueSize":1},{"declaration":1748,"isOffset":false,"isSlot":false,"src":"5809:8:2","valueSize":1},{"declaration":1748,"isOffset":false,"isSlot":false,"src":"5896:8:2","valueSize":1},{"declaration":1748,"isOffset":false,"isSlot":false,"src":"6034:8:2","valueSize":1}],"id":1755,"nodeType":"InlineAssembly","src":"5710:347:2"}]},"id":1757,"nodeType":"IfStatement","src":"4954:1113:2","trueBody":{"id":1754,"nodeType":"Block","src":"4983:660:2","statements":[{"AST":{"nativeSrc":"5053:580:2","nodeType":"YulBlock","src":"5053:580:2","statements":[{"nativeSrc":"5071:28:2","nodeType":"YulVariableDeclaration","src":"5071:28:2","value":{"name":"_OWNER_SLOT","nativeSrc":"5088:11:2","nodeType":"YulIdentifier","src":"5088:11:2"},"variables":[{"name":"ownerSlot","nativeSrc":"5075:9:2","nodeType":"YulTypedName","src":"5075:9:2","type":""}]},{"body":{"nativeSrc":"5136:130:2","nodeType":"YulBlock","src":"5136:130:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5165:4:2","nodeType":"YulLiteral","src":"5165:4:2","type":"","value":"0x00"},{"kind":"number","nativeSrc":"5171:10:2","nodeType":"YulLiteral","src":"5171:10:2","type":"","value":"0x0dc149f0"}],"functionName":{"name":"mstore","nativeSrc":"5158:6:2","nodeType":"YulIdentifier","src":"5158:6:2"},"nativeSrc":"5158:24:2","nodeType":"YulFunctionCall","src":"5158:24:2"},"nativeSrc":"5158:24:2","nodeType":"YulExpressionStatement","src":"5158:24:2"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"5237:4:2","nodeType":"YulLiteral","src":"5237:4:2","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"5243:4:2","nodeType":"YulLiteral","src":"5243:4:2","type":"","value":"0x04"}],"functionName":{"name":"revert","nativeSrc":"5230:6:2","nodeType":"YulIdentifier","src":"5230:6:2"},"nativeSrc":"5230:18:2","nodeType":"YulFunctionCall","src":"5230:18:2"},"nativeSrc":"5230:18:2","nodeType":"YulExpressionStatement","src":"5230:18:2"}]},"condition":{"arguments":[{"name":"ownerSlot","nativeSrc":"5125:9:2","nodeType":"YulIdentifier","src":"5125:9:2"}],"functionName":{"name":"sload","nativeSrc":"5119:5:2","nodeType":"YulIdentifier","src":"5119:5:2"},"nativeSrc":"5119:16:2","nodeType":"YulFunctionCall","src":"5119:16:2"},"nativeSrc":"5116:150:2","nodeType":"YulIf","src":"5116:150:2"},{"nativeSrc":"5327:38:2","nodeType":"YulAssignment","src":"5327:38:2","value":{"arguments":[{"kind":"number","nativeSrc":"5343:2:2","nodeType":"YulLiteral","src":"5343:2:2","type":"","value":"96"},{"arguments":[{"kind":"number","nativeSrc":"5351:2:2","nodeType":"YulLiteral","src":"5351:2:2","type":"","value":"96"},{"name":"newOwner","nativeSrc":"5355:8:2","nodeType":"YulIdentifier","src":"5355:8:2"}],"functionName":{"name":"shl","nativeSrc":"5347:3:2","nodeType":"YulIdentifier","src":"5347:3:2"},"nativeSrc":"5347:17:2","nodeType":"YulFunctionCall","src":"5347:17:2"}],"functionName":{"name":"shr","nativeSrc":"5339:3:2","nodeType":"YulIdentifier","src":"5339:3:2"},"nativeSrc":"5339:26:2","nodeType":"YulFunctionCall","src":"5339:26:2"},"variableNames":[{"name":"newOwner","nativeSrc":"5327:8:2","nodeType":"YulIdentifier","src":"5327:8:2"}]},{"expression":{"arguments":[{"name":"ownerSlot","nativeSrc":"5429:9:2","nodeType":"YulIdentifier","src":"5429:9:2"},{"arguments":[{"name":"newOwner","nativeSrc":"5443:8:2","nodeType":"YulIdentifier","src":"5443:8:2"},{"arguments":[{"kind":"number","nativeSrc":"5457:3:2","nodeType":"YulLiteral","src":"5457:3:2","type":"","value":"255"},{"arguments":[{"name":"newOwner","nativeSrc":"5469:8:2","nodeType":"YulIdentifier","src":"5469:8:2"}],"functionName":{"name":"iszero","nativeSrc":"5462:6:2","nodeType":"YulIdentifier","src":"5462:6:2"},"nativeSrc":"5462:16:2","nodeType":"YulFunctionCall","src":"5462:16:2"}],"functionName":{"name":"shl","nativeSrc":"5453:3:2","nodeType":"YulIdentifier","src":"5453:3:2"},"nativeSrc":"5453:26:2","nodeType":"YulFunctionCall","src":"5453:26:2"}],"functionName":{"name":"or","nativeSrc":"5440:2:2","nodeType":"YulIdentifier","src":"5440:2:2"},"nativeSrc":"5440:40:2","nodeType":"YulFunctionCall","src":"5440:40:2"}],"functionName":{"name":"sstore","nativeSrc":"5422:6:2","nodeType":"YulIdentifier","src":"5422:6:2"},"nativeSrc":"5422:59:2","nodeType":"YulFunctionCall","src":"5422:59:2"},"nativeSrc":"5422:59:2","nodeType":"YulExpressionStatement","src":"5422:59:2"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"5561:1:2","nodeType":"YulLiteral","src":"5561:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"5564:1:2","nodeType":"YulLiteral","src":"5564:1:2","type":"","value":"0"},{"name":"_OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE","nativeSrc":"5567:38:2","nodeType":"YulIdentifier","src":"5567:38:2"},{"kind":"number","nativeSrc":"5607:1:2","nodeType":"YulLiteral","src":"5607:1:2","type":"","value":"0"},{"name":"newOwner","nativeSrc":"5610:8:2","nodeType":"YulIdentifier","src":"5610:8:2"}],"functionName":{"name":"log3","nativeSrc":"5556:4:2","nodeType":"YulIdentifier","src":"5556:4:2"},"nativeSrc":"5556:63:2","nodeType":"YulFunctionCall","src":"5556:63:2"},"nativeSrc":"5556:63:2","nodeType":"YulExpressionStatement","src":"5556:63:2"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1722,"isOffset":false,"isSlot":false,"src":"5567:38:2","valueSize":1},{"declaration":1734,"isOffset":false,"isSlot":false,"src":"5088:11:2","valueSize":1},{"declaration":1748,"isOffset":false,"isSlot":false,"src":"5327:8:2","valueSize":1},{"declaration":1748,"isOffset":false,"isSlot":false,"src":"5355:8:2","valueSize":1},{"declaration":1748,"isOffset":false,"isSlot":false,"src":"5443:8:2","valueSize":1},{"declaration":1748,"isOffset":false,"isSlot":false,"src":"5469:8:2","valueSize":1},{"declaration":1748,"isOffset":false,"isSlot":false,"src":"5610:8:2","valueSize":1}],"id":1753,"nodeType":"InlineAssembly","src":"5044:589:2"}]}}]},"documentation":{"id":1746,"nodeType":"StructuredDocumentation","src":"4432:446:2","text":"@dev Initializes the owner directly without authorization guard.\n This function must be called upon initialization,\n regardless of whether the contract is upgradeable or not.\n This is to enable generalization to both regular and upgradeable contracts,\n and to save gas in case the initial owner is not the caller.\n For performance reasons, this function will not check if there\n is an existing owner."},"id":1759,"implemented":true,"kind":"function","modifiers":[],"name":"_initializeOwner","nameLocation":"4892:16:2","nodeType":"FunctionDefinition","parameters":{"id":1749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1748,"mutability":"mutable","name":"newOwner","nameLocation":"4917:8:2","nodeType":"VariableDeclaration","scope":1759,"src":"4909:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1747,"name":"address","nodeType":"ElementaryTypeName","src":"4909:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4908:18:2"},"returnParameters":{"id":1750,"nodeType":"ParameterList","parameters":[],"src":"4944:0:2"},"scope":1880,"src":"4883:1190:2","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1772,"nodeType":"Block","src":"6199:1035:2","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":1765,"name":"_guardInitializeOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1745,"src":"6213:21:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_bool_$","typeString":"function () pure returns (bool)"}},"id":1766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6213:23:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1770,"nodeType":"Block","src":"6752:476:2","statements":[{"AST":{"nativeSrc":"6822:396:2","nodeType":"YulBlock","src":"6822:396:2","statements":[{"nativeSrc":"6840:28:2","nodeType":"YulVariableDeclaration","src":"6840:28:2","value":{"name":"_OWNER_SLOT","nativeSrc":"6857:11:2","nodeType":"YulIdentifier","src":"6857:11:2"},"variables":[{"name":"ownerSlot","nativeSrc":"6844:9:2","nodeType":"YulTypedName","src":"6844:9:2","type":""}]},{"nativeSrc":"6929:38:2","nodeType":"YulAssignment","src":"6929:38:2","value":{"arguments":[{"kind":"number","nativeSrc":"6945:2:2","nodeType":"YulLiteral","src":"6945:2:2","type":"","value":"96"},{"arguments":[{"kind":"number","nativeSrc":"6953:2:2","nodeType":"YulLiteral","src":"6953:2:2","type":"","value":"96"},{"name":"newOwner","nativeSrc":"6957:8:2","nodeType":"YulIdentifier","src":"6957:8:2"}],"functionName":{"name":"shl","nativeSrc":"6949:3:2","nodeType":"YulIdentifier","src":"6949:3:2"},"nativeSrc":"6949:17:2","nodeType":"YulFunctionCall","src":"6949:17:2"}],"functionName":{"name":"shr","nativeSrc":"6941:3:2","nodeType":"YulIdentifier","src":"6941:3:2"},"nativeSrc":"6941:26:2","nodeType":"YulFunctionCall","src":"6941:26:2"},"variableNames":[{"name":"newOwner","nativeSrc":"6929:8:2","nodeType":"YulIdentifier","src":"6929:8:2"}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7047:1:2","nodeType":"YulLiteral","src":"7047:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"7050:1:2","nodeType":"YulLiteral","src":"7050:1:2","type":"","value":"0"},{"name":"_OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE","nativeSrc":"7053:38:2","nodeType":"YulIdentifier","src":"7053:38:2"},{"arguments":[{"name":"ownerSlot","nativeSrc":"7099:9:2","nodeType":"YulIdentifier","src":"7099:9:2"}],"functionName":{"name":"sload","nativeSrc":"7093:5:2","nodeType":"YulIdentifier","src":"7093:5:2"},"nativeSrc":"7093:16:2","nodeType":"YulFunctionCall","src":"7093:16:2"},{"name":"newOwner","nativeSrc":"7111:8:2","nodeType":"YulIdentifier","src":"7111:8:2"}],"functionName":{"name":"log3","nativeSrc":"7042:4:2","nodeType":"YulIdentifier","src":"7042:4:2"},"nativeSrc":"7042:78:2","nodeType":"YulFunctionCall","src":"7042:78:2"},"nativeSrc":"7042:78:2","nodeType":"YulExpressionStatement","src":"7042:78:2"},{"expression":{"arguments":[{"name":"ownerSlot","nativeSrc":"7184:9:2","nodeType":"YulIdentifier","src":"7184:9:2"},{"name":"newOwner","nativeSrc":"7195:8:2","nodeType":"YulIdentifier","src":"7195:8:2"}],"functionName":{"name":"sstore","nativeSrc":"7177:6:2","nodeType":"YulIdentifier","src":"7177:6:2"},"nativeSrc":"7177:27:2","nodeType":"YulFunctionCall","src":"7177:27:2"},"nativeSrc":"7177:27:2","nodeType":"YulExpressionStatement","src":"7177:27:2"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1722,"isOffset":false,"isSlot":false,"src":"7053:38:2","valueSize":1},{"declaration":1734,"isOffset":false,"isSlot":false,"src":"6857:11:2","valueSize":1},{"declaration":1762,"isOffset":false,"isSlot":false,"src":"6929:8:2","valueSize":1},{"declaration":1762,"isOffset":false,"isSlot":false,"src":"6957:8:2","valueSize":1},{"declaration":1762,"isOffset":false,"isSlot":false,"src":"7111:8:2","valueSize":1},{"declaration":1762,"isOffset":false,"isSlot":false,"src":"7195:8:2","valueSize":1}],"id":1769,"nodeType":"InlineAssembly","src":"6813:405:2"}]},"id":1771,"nodeType":"IfStatement","src":"6209:1019:2","trueBody":{"id":1768,"nodeType":"Block","src":"6238:508:2","statements":[{"AST":{"nativeSrc":"6308:428:2","nodeType":"YulBlock","src":"6308:428:2","statements":[{"nativeSrc":"6326:28:2","nodeType":"YulVariableDeclaration","src":"6326:28:2","value":{"name":"_OWNER_SLOT","nativeSrc":"6343:11:2","nodeType":"YulIdentifier","src":"6343:11:2"},"variables":[{"name":"ownerSlot","nativeSrc":"6330:9:2","nodeType":"YulTypedName","src":"6330:9:2","type":""}]},{"nativeSrc":"6415:38:2","nodeType":"YulAssignment","src":"6415:38:2","value":{"arguments":[{"kind":"number","nativeSrc":"6431:2:2","nodeType":"YulLiteral","src":"6431:2:2","type":"","value":"96"},{"arguments":[{"kind":"number","nativeSrc":"6439:2:2","nodeType":"YulLiteral","src":"6439:2:2","type":"","value":"96"},{"name":"newOwner","nativeSrc":"6443:8:2","nodeType":"YulIdentifier","src":"6443:8:2"}],"functionName":{"name":"shl","nativeSrc":"6435:3:2","nodeType":"YulIdentifier","src":"6435:3:2"},"nativeSrc":"6435:17:2","nodeType":"YulFunctionCall","src":"6435:17:2"}],"functionName":{"name":"shr","nativeSrc":"6427:3:2","nodeType":"YulIdentifier","src":"6427:3:2"},"nativeSrc":"6427:26:2","nodeType":"YulFunctionCall","src":"6427:26:2"},"variableNames":[{"name":"newOwner","nativeSrc":"6415:8:2","nodeType":"YulIdentifier","src":"6415:8:2"}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"6533:1:2","nodeType":"YulLiteral","src":"6533:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"6536:1:2","nodeType":"YulLiteral","src":"6536:1:2","type":"","value":"0"},{"name":"_OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE","nativeSrc":"6539:38:2","nodeType":"YulIdentifier","src":"6539:38:2"},{"arguments":[{"name":"ownerSlot","nativeSrc":"6585:9:2","nodeType":"YulIdentifier","src":"6585:9:2"}],"functionName":{"name":"sload","nativeSrc":"6579:5:2","nodeType":"YulIdentifier","src":"6579:5:2"},"nativeSrc":"6579:16:2","nodeType":"YulFunctionCall","src":"6579:16:2"},{"name":"newOwner","nativeSrc":"6597:8:2","nodeType":"YulIdentifier","src":"6597:8:2"}],"functionName":{"name":"log3","nativeSrc":"6528:4:2","nodeType":"YulIdentifier","src":"6528:4:2"},"nativeSrc":"6528:78:2","nodeType":"YulFunctionCall","src":"6528:78:2"},"nativeSrc":"6528:78:2","nodeType":"YulExpressionStatement","src":"6528:78:2"},{"expression":{"arguments":[{"name":"ownerSlot","nativeSrc":"6670:9:2","nodeType":"YulIdentifier","src":"6670:9:2"},{"arguments":[{"name":"newOwner","nativeSrc":"6684:8:2","nodeType":"YulIdentifier","src":"6684:8:2"},{"arguments":[{"kind":"number","nativeSrc":"6698:3:2","nodeType":"YulLiteral","src":"6698:3:2","type":"","value":"255"},{"arguments":[{"name":"newOwner","nativeSrc":"6710:8:2","nodeType":"YulIdentifier","src":"6710:8:2"}],"functionName":{"name":"iszero","nativeSrc":"6703:6:2","nodeType":"YulIdentifier","src":"6703:6:2"},"nativeSrc":"6703:16:2","nodeType":"YulFunctionCall","src":"6703:16:2"}],"functionName":{"name":"shl","nativeSrc":"6694:3:2","nodeType":"YulIdentifier","src":"6694:3:2"},"nativeSrc":"6694:26:2","nodeType":"YulFunctionCall","src":"6694:26:2"}],"functionName":{"name":"or","nativeSrc":"6681:2:2","nodeType":"YulIdentifier","src":"6681:2:2"},"nativeSrc":"6681:40:2","nodeType":"YulFunctionCall","src":"6681:40:2"}],"functionName":{"name":"sstore","nativeSrc":"6663:6:2","nodeType":"YulIdentifier","src":"6663:6:2"},"nativeSrc":"6663:59:2","nodeType":"YulFunctionCall","src":"6663:59:2"},"nativeSrc":"6663:59:2","nodeType":"YulExpressionStatement","src":"6663:59:2"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1722,"isOffset":false,"isSlot":false,"src":"6539:38:2","valueSize":1},{"declaration":1734,"isOffset":false,"isSlot":false,"src":"6343:11:2","valueSize":1},{"declaration":1762,"isOffset":false,"isSlot":false,"src":"6415:8:2","valueSize":1},{"declaration":1762,"isOffset":false,"isSlot":false,"src":"6443:8:2","valueSize":1},{"declaration":1762,"isOffset":false,"isSlot":false,"src":"6597:8:2","valueSize":1},{"declaration":1762,"isOffset":false,"isSlot":false,"src":"6684:8:2","valueSize":1},{"declaration":1762,"isOffset":false,"isSlot":false,"src":"6710:8:2","valueSize":1}],"id":1767,"nodeType":"InlineAssembly","src":"6299:437:2"}]}}]},"documentation":{"id":1760,"nodeType":"StructuredDocumentation","src":"6079:61:2","text":"@dev Sets the owner directly without authorization guard."},"id":1773,"implemented":true,"kind":"function","modifiers":[],"name":"_setOwner","nameLocation":"6154:9:2","nodeType":"FunctionDefinition","parameters":{"id":1763,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1762,"mutability":"mutable","name":"newOwner","nameLocation":"6172:8:2","nodeType":"VariableDeclaration","scope":1773,"src":"6164:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1761,"name":"address","nodeType":"ElementaryTypeName","src":"6164:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6163:18:2"},"returnParameters":{"id":1764,"nodeType":"ParameterList","parameters":[],"src":"6199:0:2"},"scope":1880,"src":"6145:1089:2","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1778,"nodeType":"Block","src":"7337:310:2","statements":[{"AST":{"nativeSrc":"7399:242:2","nodeType":"YulBlock","src":"7399:242:2","statements":[{"body":{"nativeSrc":"7519:112:2","nodeType":"YulBlock","src":"7519:112:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7544:4:2","nodeType":"YulLiteral","src":"7544:4:2","type":"","value":"0x00"},{"kind":"number","nativeSrc":"7550:10:2","nodeType":"YulLiteral","src":"7550:10:2","type":"","value":"0x82b42900"}],"functionName":{"name":"mstore","nativeSrc":"7537:6:2","nodeType":"YulIdentifier","src":"7537:6:2"},"nativeSrc":"7537:24:2","nodeType":"YulFunctionCall","src":"7537:24:2"},"nativeSrc":"7537:24:2","nodeType":"YulExpressionStatement","src":"7537:24:2"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7606:4:2","nodeType":"YulLiteral","src":"7606:4:2","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"7612:4:2","nodeType":"YulLiteral","src":"7612:4:2","type":"","value":"0x04"}],"functionName":{"name":"revert","nativeSrc":"7599:6:2","nodeType":"YulIdentifier","src":"7599:6:2"},"nativeSrc":"7599:18:2","nodeType":"YulFunctionCall","src":"7599:18:2"},"nativeSrc":"7599:18:2","nodeType":"YulExpressionStatement","src":"7599:18:2"}]},"condition":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"caller","nativeSrc":"7488:6:2","nodeType":"YulIdentifier","src":"7488:6:2"},"nativeSrc":"7488:8:2","nodeType":"YulFunctionCall","src":"7488:8:2"},{"arguments":[{"name":"_OWNER_SLOT","nativeSrc":"7504:11:2","nodeType":"YulIdentifier","src":"7504:11:2"}],"functionName":{"name":"sload","nativeSrc":"7498:5:2","nodeType":"YulIdentifier","src":"7498:5:2"},"nativeSrc":"7498:18:2","nodeType":"YulFunctionCall","src":"7498:18:2"}],"functionName":{"name":"eq","nativeSrc":"7485:2:2","nodeType":"YulIdentifier","src":"7485:2:2"},"nativeSrc":"7485:32:2","nodeType":"YulFunctionCall","src":"7485:32:2"}],"functionName":{"name":"iszero","nativeSrc":"7478:6:2","nodeType":"YulIdentifier","src":"7478:6:2"},"nativeSrc":"7478:40:2","nodeType":"YulFunctionCall","src":"7478:40:2"},"nativeSrc":"7475:156:2","nodeType":"YulIf","src":"7475:156:2"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1734,"isOffset":false,"isSlot":false,"src":"7504:11:2","valueSize":1}],"id":1777,"nodeType":"InlineAssembly","src":"7390:251:2"}]},"documentation":{"id":1774,"nodeType":"StructuredDocumentation","src":"7240:47:2","text":"@dev Throws if the sender is not the owner."},"id":1779,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwner","nameLocation":"7301:11:2","nodeType":"FunctionDefinition","parameters":{"id":1775,"nodeType":"ParameterList","parameters":[],"src":"7312:2:2"},"returnParameters":{"id":1776,"nodeType":"ParameterList","parameters":[],"src":"7337:0:2"},"scope":1880,"src":"7292:355:2","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1789,"nodeType":"Block","src":"7955:33:2","statements":[{"expression":{"commonType":{"typeIdentifier":"t_rational_172800_by_1","typeString":"int_const 172800"},"id":1787,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3438","id":1785,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7972:2:2","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"33363030","id":1786,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7977:4:2","typeDescriptions":{"typeIdentifier":"t_rational_3600_by_1","typeString":"int_const 3600"},"value":"3600"},"src":"7972:9:2","typeDescriptions":{"typeIdentifier":"t_rational_172800_by_1","typeString":"int_const 172800"}},"functionReturnParameters":1784,"id":1788,"nodeType":"Return","src":"7965:16:2"}]},"documentation":{"id":1780,"nodeType":"StructuredDocumentation","src":"7653:220:2","text":"@dev Returns how long a two-step ownership handover is valid for in seconds.\n Override to return a different value if needed.\n Made internal to conserve bytecode. Wrap it in a public function if needed."},"id":1790,"implemented":true,"kind":"function","modifiers":[],"name":"_ownershipHandoverValidFor","nameLocation":"7887:26:2","nodeType":"FunctionDefinition","parameters":{"id":1781,"nodeType":"ParameterList","parameters":[],"src":"7913:2:2"},"returnParameters":{"id":1784,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1783,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1790,"src":"7947:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1782,"name":"uint64","nodeType":"ElementaryTypeName","src":"7947:6:2","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"7946:8:2"},"scope":1880,"src":"7878:110:2","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1803,"nodeType":"Block","src":"8426:271:2","statements":[{"AST":{"nativeSrc":"8488:174:2","nodeType":"YulBlock","src":"8488:174:2","statements":[{"body":{"nativeSrc":"8531:121:2","nodeType":"YulBlock","src":"8531:121:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8556:4:2","nodeType":"YulLiteral","src":"8556:4:2","type":"","value":"0x00"},{"kind":"number","nativeSrc":"8562:10:2","nodeType":"YulLiteral","src":"8562:10:2","type":"","value":"0x7448fbae"}],"functionName":{"name":"mstore","nativeSrc":"8549:6:2","nodeType":"YulIdentifier","src":"8549:6:2"},"nativeSrc":"8549:24:2","nodeType":"YulFunctionCall","src":"8549:24:2"},"nativeSrc":"8549:24:2","nodeType":"YulExpressionStatement","src":"8549:24:2"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8627:4:2","nodeType":"YulLiteral","src":"8627:4:2","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"8633:4:2","nodeType":"YulLiteral","src":"8633:4:2","type":"","value":"0x04"}],"functionName":{"name":"revert","nativeSrc":"8620:6:2","nodeType":"YulIdentifier","src":"8620:6:2"},"nativeSrc":"8620:18:2","nodeType":"YulFunctionCall","src":"8620:18:2"},"nativeSrc":"8620:18:2","nodeType":"YulExpressionStatement","src":"8620:18:2"}]},"condition":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"8516:2:2","nodeType":"YulLiteral","src":"8516:2:2","type":"","value":"96"},{"name":"newOwner","nativeSrc":"8520:8:2","nodeType":"YulIdentifier","src":"8520:8:2"}],"functionName":{"name":"shl","nativeSrc":"8512:3:2","nodeType":"YulIdentifier","src":"8512:3:2"},"nativeSrc":"8512:17:2","nodeType":"YulFunctionCall","src":"8512:17:2"}],"functionName":{"name":"iszero","nativeSrc":"8505:6:2","nodeType":"YulIdentifier","src":"8505:6:2"},"nativeSrc":"8505:25:2","nodeType":"YulFunctionCall","src":"8505:25:2"},"nativeSrc":"8502:150:2","nodeType":"YulIf","src":"8502:150:2"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1793,"isOffset":false,"isSlot":false,"src":"8520:8:2","valueSize":1}],"id":1798,"nodeType":"InlineAssembly","src":"8479:183:2"},{"expression":{"arguments":[{"id":1800,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1793,"src":"8681:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1799,"name":"_setOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1773,"src":"8671:9:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1801,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8671:19:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1802,"nodeType":"ExpressionStatement","src":"8671:19:2"}]},"documentation":{"id":1791,"nodeType":"StructuredDocumentation","src":"8277:66:2","text":"@dev Allows the owner to transfer the ownership to `newOwner`."},"functionSelector":"f2fde38b","id":1804,"implemented":true,"kind":"function","modifiers":[{"id":1796,"kind":"modifierInvocation","modifierName":{"id":1795,"name":"onlyOwner","nameLocations":["8416:9:2"],"nodeType":"IdentifierPath","referencedDeclaration":1879,"src":"8416:9:2"},"nodeType":"ModifierInvocation","src":"8416:9:2"}],"name":"transferOwnership","nameLocation":"8357:17:2","nodeType":"FunctionDefinition","parameters":{"id":1794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1793,"mutability":"mutable","name":"newOwner","nameLocation":"8383:8:2","nodeType":"VariableDeclaration","scope":1804,"src":"8375:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1792,"name":"address","nodeType":"ElementaryTypeName","src":"8375:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8374:18:2"},"returnParameters":{"id":1797,"nodeType":"ParameterList","parameters":[],"src":"8426:0:2"},"scope":1880,"src":"8348:349:2","stateMutability":"payable","virtual":true,"visibility":"public"},{"body":{"id":1817,"nodeType":"Block","src":"8824:38:2","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":1813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8852:1:2","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":1812,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8844:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1811,"name":"address","nodeType":"ElementaryTypeName","src":"8844:7:2","typeDescriptions":{}}},"id":1814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8844:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1810,"name":"_setOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1773,"src":"8834:9:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8834:21:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1816,"nodeType":"ExpressionStatement","src":"8834:21:2"}]},"documentation":{"id":1805,"nodeType":"StructuredDocumentation","src":"8703:54:2","text":"@dev Allows the owner to renounce their ownership."},"functionSelector":"715018a6","id":1818,"implemented":true,"kind":"function","modifiers":[{"id":1808,"kind":"modifierInvocation","modifierName":{"id":1807,"name":"onlyOwner","nameLocations":["8814:9:2"],"nodeType":"IdentifierPath","referencedDeclaration":1879,"src":"8814:9:2"},"nodeType":"ModifierInvocation","src":"8814:9:2"}],"name":"renounceOwnership","nameLocation":"8771:17:2","nodeType":"FunctionDefinition","parameters":{"id":1806,"nodeType":"ParameterList","parameters":[],"src":"8788:2:2"},"returnParameters":{"id":1809,"nodeType":"ParameterList","parameters":[],"src":"8824:0:2"},"scope":1880,"src":"8762:100:2","stateMutability":"payable","virtual":true,"visibility":"public"},{"body":{"id":1832,"nodeType":"Block","src":"9080:558:2","statements":[{"id":1831,"nodeType":"UncheckedBlock","src":"9090:542:2","statements":[{"assignments":[1823],"declarations":[{"constant":false,"id":1823,"mutability":"mutable","name":"expires","nameLocation":"9122:7:2","nodeType":"VariableDeclaration","scope":1831,"src":"9114:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1822,"name":"uint256","nodeType":"ElementaryTypeName","src":"9114:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1829,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1824,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"9132:5:2","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9138:9:2","memberName":"timestamp","nodeType":"MemberAccess","src":"9132:15:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1826,"name":"_ownershipHandoverValidFor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1790,"src":"9150:26:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint64_$","typeString":"function () view returns (uint64)"}},"id":1827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9150:28:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"9132:46:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9114:64:2"},{"AST":{"nativeSrc":"9248:374:2","nodeType":"YulBlock","src":"9248:374:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9340:4:2","nodeType":"YulLiteral","src":"9340:4:2","type":"","value":"0x0c"},{"name":"_HANDOVER_SLOT_SEED","nativeSrc":"9346:19:2","nodeType":"YulIdentifier","src":"9346:19:2"}],"functionName":{"name":"mstore","nativeSrc":"9333:6:2","nodeType":"YulIdentifier","src":"9333:6:2"},"nativeSrc":"9333:33:2","nodeType":"YulFunctionCall","src":"9333:33:2"},"nativeSrc":"9333:33:2","nodeType":"YulExpressionStatement","src":"9333:33:2"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9390:4:2","nodeType":"YulLiteral","src":"9390:4:2","type":"","value":"0x00"},{"arguments":[],"functionName":{"name":"caller","nativeSrc":"9396:6:2","nodeType":"YulIdentifier","src":"9396:6:2"},"nativeSrc":"9396:8:2","nodeType":"YulFunctionCall","src":"9396:8:2"}],"functionName":{"name":"mstore","nativeSrc":"9383:6:2","nodeType":"YulIdentifier","src":"9383:6:2"},"nativeSrc":"9383:22:2","nodeType":"YulFunctionCall","src":"9383:22:2"},"nativeSrc":"9383:22:2","nodeType":"YulExpressionStatement","src":"9383:22:2"},{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9439:4:2","nodeType":"YulLiteral","src":"9439:4:2","type":"","value":"0x0c"},{"kind":"number","nativeSrc":"9445:4:2","nodeType":"YulLiteral","src":"9445:4:2","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"9429:9:2","nodeType":"YulIdentifier","src":"9429:9:2"},"nativeSrc":"9429:21:2","nodeType":"YulFunctionCall","src":"9429:21:2"},{"name":"expires","nativeSrc":"9452:7:2","nodeType":"YulIdentifier","src":"9452:7:2"}],"functionName":{"name":"sstore","nativeSrc":"9422:6:2","nodeType":"YulIdentifier","src":"9422:6:2"},"nativeSrc":"9422:38:2","nodeType":"YulFunctionCall","src":"9422:38:2"},"nativeSrc":"9422:38:2","nodeType":"YulExpressionStatement","src":"9422:38:2"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9546:1:2","nodeType":"YulLiteral","src":"9546:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"9549:1:2","nodeType":"YulLiteral","src":"9549:1:2","type":"","value":"0"},{"name":"_OWNERSHIP_HANDOVER_REQUESTED_EVENT_SIGNATURE","nativeSrc":"9552:45:2","nodeType":"YulIdentifier","src":"9552:45:2"},{"arguments":[],"functionName":{"name":"caller","nativeSrc":"9599:6:2","nodeType":"YulIdentifier","src":"9599:6:2"},"nativeSrc":"9599:8:2","nodeType":"YulFunctionCall","src":"9599:8:2"}],"functionName":{"name":"log2","nativeSrc":"9541:4:2","nodeType":"YulIdentifier","src":"9541:4:2"},"nativeSrc":"9541:67:2","nodeType":"YulFunctionCall","src":"9541:67:2"},"nativeSrc":"9541:67:2","nodeType":"YulExpressionStatement","src":"9541:67:2"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1738,"isOffset":false,"isSlot":false,"src":"9346:19:2","valueSize":1},{"declaration":1726,"isOffset":false,"isSlot":false,"src":"9552:45:2","valueSize":1},{"declaration":1823,"isOffset":false,"isSlot":false,"src":"9452:7:2","valueSize":1}],"id":1830,"nodeType":"InlineAssembly","src":"9239:383:2"}]}]},"documentation":{"id":1819,"nodeType":"StructuredDocumentation","src":"8868:148:2","text":"@dev Request a two-step ownership handover to the caller.\n The request will automatically expire in 48 hours (172800 seconds) by default."},"functionSelector":"25692962","id":1833,"implemented":true,"kind":"function","modifiers":[],"name":"requestOwnershipHandover","nameLocation":"9030:24:2","nodeType":"FunctionDefinition","parameters":{"id":1820,"nodeType":"ParameterList","parameters":[],"src":"9054:2:2"},"returnParameters":{"id":1821,"nodeType":"ParameterList","parameters":[],"src":"9080:0:2"},"scope":1880,"src":"9021:617:2","stateMutability":"payable","virtual":true,"visibility":"public"},{"body":{"id":1838,"nodeType":"Block","src":"9778:398:2","statements":[{"AST":{"nativeSrc":"9840:330:2","nodeType":"YulBlock","src":"9840:330:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9916:4:2","nodeType":"YulLiteral","src":"9916:4:2","type":"","value":"0x0c"},{"name":"_HANDOVER_SLOT_SEED","nativeSrc":"9922:19:2","nodeType":"YulIdentifier","src":"9922:19:2"}],"functionName":{"name":"mstore","nativeSrc":"9909:6:2","nodeType":"YulIdentifier","src":"9909:6:2"},"nativeSrc":"9909:33:2","nodeType":"YulFunctionCall","src":"9909:33:2"},"nativeSrc":"9909:33:2","nodeType":"YulExpressionStatement","src":"9909:33:2"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9962:4:2","nodeType":"YulLiteral","src":"9962:4:2","type":"","value":"0x00"},{"arguments":[],"functionName":{"name":"caller","nativeSrc":"9968:6:2","nodeType":"YulIdentifier","src":"9968:6:2"},"nativeSrc":"9968:8:2","nodeType":"YulFunctionCall","src":"9968:8:2"}],"functionName":{"name":"mstore","nativeSrc":"9955:6:2","nodeType":"YulIdentifier","src":"9955:6:2"},"nativeSrc":"9955:22:2","nodeType":"YulFunctionCall","src":"9955:22:2"},"nativeSrc":"9955:22:2","nodeType":"YulExpressionStatement","src":"9955:22:2"},{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"10007:4:2","nodeType":"YulLiteral","src":"10007:4:2","type":"","value":"0x0c"},{"kind":"number","nativeSrc":"10013:4:2","nodeType":"YulLiteral","src":"10013:4:2","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"9997:9:2","nodeType":"YulIdentifier","src":"9997:9:2"},"nativeSrc":"9997:21:2","nodeType":"YulFunctionCall","src":"9997:21:2"},{"kind":"number","nativeSrc":"10020:1:2","nodeType":"YulLiteral","src":"10020:1:2","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"9990:6:2","nodeType":"YulIdentifier","src":"9990:6:2"},"nativeSrc":"9990:32:2","nodeType":"YulFunctionCall","src":"9990:32:2"},"nativeSrc":"9990:32:2","nodeType":"YulExpressionStatement","src":"9990:32:2"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10099:1:2","nodeType":"YulLiteral","src":"10099:1:2","type":"","value":"0"},{"kind":"number","nativeSrc":"10102:1:2","nodeType":"YulLiteral","src":"10102:1:2","type":"","value":"0"},{"name":"_OWNERSHIP_HANDOVER_CANCELED_EVENT_SIGNATURE","nativeSrc":"10105:44:2","nodeType":"YulIdentifier","src":"10105:44:2"},{"arguments":[],"functionName":{"name":"caller","nativeSrc":"10151:6:2","nodeType":"YulIdentifier","src":"10151:6:2"},"nativeSrc":"10151:8:2","nodeType":"YulFunctionCall","src":"10151:8:2"}],"functionName":{"name":"log2","nativeSrc":"10094:4:2","nodeType":"YulIdentifier","src":"10094:4:2"},"nativeSrc":"10094:66:2","nodeType":"YulFunctionCall","src":"10094:66:2"},"nativeSrc":"10094:66:2","nodeType":"YulExpressionStatement","src":"10094:66:2"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1738,"isOffset":false,"isSlot":false,"src":"9922:19:2","valueSize":1},{"declaration":1730,"isOffset":false,"isSlot":false,"src":"10105:44:2","valueSize":1}],"id":1837,"nodeType":"InlineAssembly","src":"9831:339:2"}]},"documentation":{"id":1834,"nodeType":"StructuredDocumentation","src":"9644:71:2","text":"@dev Cancels the two-step ownership handover to the caller, if any."},"functionSelector":"54d1f13d","id":1839,"implemented":true,"kind":"function","modifiers":[],"name":"cancelOwnershipHandover","nameLocation":"9729:23:2","nodeType":"FunctionDefinition","parameters":{"id":1835,"nodeType":"ParameterList","parameters":[],"src":"9752:2:2"},"returnParameters":{"id":1836,"nodeType":"ParameterList","parameters":[],"src":"9778:0:2"},"scope":1880,"src":"9720:456:2","stateMutability":"payable","virtual":true,"visibility":"public"},{"body":{"id":1852,"nodeType":"Block","src":"10453:618:2","statements":[{"AST":{"nativeSrc":"10515:517:2","nodeType":"YulBlock","src":"10515:517:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10591:4:2","nodeType":"YulLiteral","src":"10591:4:2","type":"","value":"0x0c"},{"name":"_HANDOVER_SLOT_SEED","nativeSrc":"10597:19:2","nodeType":"YulIdentifier","src":"10597:19:2"}],"functionName":{"name":"mstore","nativeSrc":"10584:6:2","nodeType":"YulIdentifier","src":"10584:6:2"},"nativeSrc":"10584:33:2","nodeType":"YulFunctionCall","src":"10584:33:2"},"nativeSrc":"10584:33:2","nodeType":"YulExpressionStatement","src":"10584:33:2"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10637:4:2","nodeType":"YulLiteral","src":"10637:4:2","type":"","value":"0x00"},{"name":"pendingOwner","nativeSrc":"10643:12:2","nodeType":"YulIdentifier","src":"10643:12:2"}],"functionName":{"name":"mstore","nativeSrc":"10630:6:2","nodeType":"YulIdentifier","src":"10630:6:2"},"nativeSrc":"10630:26:2","nodeType":"YulFunctionCall","src":"10630:26:2"},"nativeSrc":"10630:26:2","nodeType":"YulExpressionStatement","src":"10630:26:2"},{"nativeSrc":"10669:41:2","nodeType":"YulVariableDeclaration","src":"10669:41:2","value":{"arguments":[{"kind":"number","nativeSrc":"10699:4:2","nodeType":"YulLiteral","src":"10699:4:2","type":"","value":"0x0c"},{"kind":"number","nativeSrc":"10705:4:2","nodeType":"YulLiteral","src":"10705:4:2","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"10689:9:2","nodeType":"YulIdentifier","src":"10689:9:2"},"nativeSrc":"10689:21:2","nodeType":"YulFunctionCall","src":"10689:21:2"},"variables":[{"name":"handoverSlot","nativeSrc":"10673:12:2","nodeType":"YulTypedName","src":"10673:12:2","type":""}]},{"body":{"nativeSrc":"10826:117:2","nodeType":"YulBlock","src":"10826:117:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10851:4:2","nodeType":"YulLiteral","src":"10851:4:2","type":"","value":"0x00"},{"kind":"number","nativeSrc":"10857:10:2","nodeType":"YulLiteral","src":"10857:10:2","type":"","value":"0x6f5e8818"}],"functionName":{"name":"mstore","nativeSrc":"10844:6:2","nodeType":"YulIdentifier","src":"10844:6:2"},"nativeSrc":"10844:24:2","nodeType":"YulFunctionCall","src":"10844:24:2"},"nativeSrc":"10844:24:2","nodeType":"YulExpressionStatement","src":"10844:24:2"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10918:4:2","nodeType":"YulLiteral","src":"10918:4:2","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"10924:4:2","nodeType":"YulLiteral","src":"10924:4:2","type":"","value":"0x04"}],"functionName":{"name":"revert","nativeSrc":"10911:6:2","nodeType":"YulIdentifier","src":"10911:6:2"},"nativeSrc":"10911:18:2","nodeType":"YulFunctionCall","src":"10911:18:2"},"nativeSrc":"10911:18:2","nodeType":"YulExpressionStatement","src":"10911:18:2"}]},"condition":{"arguments":[{"arguments":[],"functionName":{"name":"timestamp","nativeSrc":"10792:9:2","nodeType":"YulIdentifier","src":"10792:9:2"},"nativeSrc":"10792:11:2","nodeType":"YulFunctionCall","src":"10792:11:2"},{"arguments":[{"name":"handoverSlot","nativeSrc":"10811:12:2","nodeType":"YulIdentifier","src":"10811:12:2"}],"functionName":{"name":"sload","nativeSrc":"10805:5:2","nodeType":"YulIdentifier","src":"10805:5:2"},"nativeSrc":"10805:19:2","nodeType":"YulFunctionCall","src":"10805:19:2"}],"functionName":{"name":"gt","nativeSrc":"10789:2:2","nodeType":"YulIdentifier","src":"10789:2:2"},"nativeSrc":"10789:36:2","nodeType":"YulFunctionCall","src":"10789:36:2"},"nativeSrc":"10786:157:2","nodeType":"YulIf","src":"10786:157:2"},{"expression":{"arguments":[{"name":"handoverSlot","nativeSrc":"11006:12:2","nodeType":"YulIdentifier","src":"11006:12:2"},{"kind":"number","nativeSrc":"11020:1:2","nodeType":"YulLiteral","src":"11020:1:2","type":"","value":"0"}],"functionName":{"name":"sstore","nativeSrc":"10999:6:2","nodeType":"YulIdentifier","src":"10999:6:2"},"nativeSrc":"10999:23:2","nodeType":"YulFunctionCall","src":"10999:23:2"},"nativeSrc":"10999:23:2","nodeType":"YulExpressionStatement","src":"10999:23:2"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1738,"isOffset":false,"isSlot":false,"src":"10597:19:2","valueSize":1},{"declaration":1842,"isOffset":false,"isSlot":false,"src":"10643:12:2","valueSize":1}],"id":1847,"nodeType":"InlineAssembly","src":"10506:526:2"},{"expression":{"arguments":[{"id":1849,"name":"pendingOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1842,"src":"11051:12:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1848,"name":"_setOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1773,"src":"11041:9:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11041:23:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1851,"nodeType":"ExpressionStatement","src":"11041:23:2"}]},"documentation":{"id":1840,"nodeType":"StructuredDocumentation","src":"10182:176:2","text":"@dev Allows the owner to complete the two-step ownership handover to `pendingOwner`.\n Reverts if there is no existing ownership handover requested by `pendingOwner`."},"functionSelector":"f04e283e","id":1853,"implemented":true,"kind":"function","modifiers":[{"id":1845,"kind":"modifierInvocation","modifierName":{"id":1844,"name":"onlyOwner","nameLocations":["10443:9:2"],"nodeType":"IdentifierPath","referencedDeclaration":1879,"src":"10443:9:2"},"nodeType":"ModifierInvocation","src":"10443:9:2"}],"name":"completeOwnershipHandover","nameLocation":"10372:25:2","nodeType":"FunctionDefinition","parameters":{"id":1843,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1842,"mutability":"mutable","name":"pendingOwner","nameLocation":"10406:12:2","nodeType":"VariableDeclaration","scope":1853,"src":"10398:20:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1841,"name":"address","nodeType":"ElementaryTypeName","src":"10398:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10397:22:2"},"returnParameters":{"id":1846,"nodeType":"ParameterList","parameters":[],"src":"10453:0:2"},"scope":1880,"src":"10363:708:2","stateMutability":"payable","virtual":true,"visibility":"public"},{"body":{"id":1860,"nodeType":"Block","src":"11470:120:2","statements":[{"AST":{"nativeSrc":"11532:52:2","nodeType":"YulBlock","src":"11532:52:2","statements":[{"nativeSrc":"11546:28:2","nodeType":"YulAssignment","src":"11546:28:2","value":{"arguments":[{"name":"_OWNER_SLOT","nativeSrc":"11562:11:2","nodeType":"YulIdentifier","src":"11562:11:2"}],"functionName":{"name":"sload","nativeSrc":"11556:5:2","nodeType":"YulIdentifier","src":"11556:5:2"},"nativeSrc":"11556:18:2","nodeType":"YulFunctionCall","src":"11556:18:2"},"variableNames":[{"name":"result","nativeSrc":"11546:6:2","nodeType":"YulIdentifier","src":"11546:6:2"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1734,"isOffset":false,"isSlot":false,"src":"11562:11:2","valueSize":1},{"declaration":1857,"isOffset":false,"isSlot":false,"src":"11546:6:2","valueSize":1}],"id":1859,"nodeType":"InlineAssembly","src":"11523:61:2"}]},"documentation":{"id":1854,"nodeType":"StructuredDocumentation","src":"11360:43:2","text":"@dev Returns the owner of the contract."},"functionSelector":"8da5cb5b","id":1861,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"11417:5:2","nodeType":"FunctionDefinition","parameters":{"id":1855,"nodeType":"ParameterList","parameters":[],"src":"11422:2:2"},"returnParameters":{"id":1858,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1857,"mutability":"mutable","name":"result","nameLocation":"11462:6:2","nodeType":"VariableDeclaration","scope":1861,"src":"11454:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1856,"name":"address","nodeType":"ElementaryTypeName","src":"11454:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11453:16:2"},"scope":1880,"src":"11408:182:2","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":1870,"nodeType":"Block","src":"11832:296:2","statements":[{"AST":{"nativeSrc":"11894:228:2","nodeType":"YulBlock","src":"11894:228:2","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11957:4:2","nodeType":"YulLiteral","src":"11957:4:2","type":"","value":"0x0c"},{"name":"_HANDOVER_SLOT_SEED","nativeSrc":"11963:19:2","nodeType":"YulIdentifier","src":"11963:19:2"}],"functionName":{"name":"mstore","nativeSrc":"11950:6:2","nodeType":"YulIdentifier","src":"11950:6:2"},"nativeSrc":"11950:33:2","nodeType":"YulFunctionCall","src":"11950:33:2"},"nativeSrc":"11950:33:2","nodeType":"YulExpressionStatement","src":"11950:33:2"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"12003:4:2","nodeType":"YulLiteral","src":"12003:4:2","type":"","value":"0x00"},{"name":"pendingOwner","nativeSrc":"12009:12:2","nodeType":"YulIdentifier","src":"12009:12:2"}],"functionName":{"name":"mstore","nativeSrc":"11996:6:2","nodeType":"YulIdentifier","src":"11996:6:2"},"nativeSrc":"11996:26:2","nodeType":"YulFunctionCall","src":"11996:26:2"},"nativeSrc":"11996:26:2","nodeType":"YulExpressionStatement","src":"11996:26:2"},{"nativeSrc":"12074:38:2","nodeType":"YulAssignment","src":"12074:38:2","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"12100:4:2","nodeType":"YulLiteral","src":"12100:4:2","type":"","value":"0x0c"},{"kind":"number","nativeSrc":"12106:4:2","nodeType":"YulLiteral","src":"12106:4:2","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"12090:9:2","nodeType":"YulIdentifier","src":"12090:9:2"},"nativeSrc":"12090:21:2","nodeType":"YulFunctionCall","src":"12090:21:2"}],"functionName":{"name":"sload","nativeSrc":"12084:5:2","nodeType":"YulIdentifier","src":"12084:5:2"},"nativeSrc":"12084:28:2","nodeType":"YulFunctionCall","src":"12084:28:2"},"variableNames":[{"name":"result","nativeSrc":"12074:6:2","nodeType":"YulIdentifier","src":"12074:6:2"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1738,"isOffset":false,"isSlot":false,"src":"11963:19:2","valueSize":1},{"declaration":1864,"isOffset":false,"isSlot":false,"src":"12009:12:2","valueSize":1},{"declaration":1867,"isOffset":false,"isSlot":false,"src":"12074:6:2","valueSize":1}],"id":1869,"nodeType":"InlineAssembly","src":"11885:237:2"}]},"documentation":{"id":1862,"nodeType":"StructuredDocumentation","src":"11596:92:2","text":"@dev Returns the expiry timestamp for the two-step ownership handover to `pendingOwner`."},"functionSelector":"fee81cf4","id":1871,"implemented":true,"kind":"function","modifiers":[],"name":"ownershipHandoverExpiresAt","nameLocation":"11702:26:2","nodeType":"FunctionDefinition","parameters":{"id":1865,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1864,"mutability":"mutable","name":"pendingOwner","nameLocation":"11737:12:2","nodeType":"VariableDeclaration","scope":1871,"src":"11729:20:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1863,"name":"address","nodeType":"ElementaryTypeName","src":"11729:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11728:22:2"},"returnParameters":{"id":1868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1867,"mutability":"mutable","name":"result","nameLocation":"11820:6:2","nodeType":"VariableDeclaration","scope":1871,"src":"11812:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1866,"name":"uint256","nodeType":"ElementaryTypeName","src":"11812:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11811:16:2"},"scope":1880,"src":"11693:435:2","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":1878,"nodeType":"Block","src":"12507:41:2","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1874,"name":"_checkOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1779,"src":"12517:11:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":1875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12517:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1876,"nodeType":"ExpressionStatement","src":"12517:13:2"},{"id":1877,"nodeType":"PlaceholderStatement","src":"12540:1:2"}]},"documentation":{"id":1872,"nodeType":"StructuredDocumentation","src":"12417:56:2","text":"@dev Marks a function as only callable by the owner."},"id":1879,"name":"onlyOwner","nameLocation":"12487:9:2","nodeType":"ModifierDefinition","parameters":{"id":1873,"nodeType":"ParameterList","parameters":[],"src":"12496:2:2"},"src":"12478:70:2","virtual":true,"visibility":"internal"}],"scope":1881,"src":"571:11979:2","usedErrors":[1692,1695,1698,1701],"usedEvents":[1708,1713,1718]}],"src":"32:12519:2"},"id":2},"solady/src/tokens/ERC20.sol":{"ast":{"absolutePath":"solady/src/tokens/ERC20.sol","exportedSymbols":{"ERC20":[2299]},"id":2300,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1882,"literals":["solidity","^","0.8",".4"],"nodeType":"PragmaDirective","src":"32:23:3"},{"abstract":true,"baseContracts":[],"canonicalName":"ERC20","contractDependencies":[],"contractKind":"contract","documentation":{"id":1883,"nodeType":"StructuredDocumentation","src":"57:1083:3","text":"@notice Simple ERC20 + EIP-2612 implementation.\n @author Solady (https://github.com/vectorized/solady/blob/main/src/tokens/ERC20.sol)\n @author Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC20.sol)\n @author Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol)\n @dev Note:\n - The ERC20 standard allows minting and transferring to and from the zero address,\n   minting and transferring zero tokens, as well as self-approvals.\n   For performance, this implementation WILL NOT revert for such actions.\n   Please add any checks with overrides if desired.\n - The `permit` function uses the ecrecover precompile (0x1).\n If you are overriding:\n - NEVER violate the ERC20 invariant:\n   the total sum of all balances must be equal to `totalSupply()`.\n - Check that the overridden function is actually used in the function you want to\n   change the behavior of. Much of the code has been manually inlined for performance."},"fullyImplemented":false,"id":2299,"linearizedBaseContracts":[2299],"name":"ERC20","nameLocation":"1158:5:3","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1884,"nodeType":"StructuredDocumentation","src":"1453:41:3","text":"@dev The total supply has overflowed."},"errorSelector":"e5cfe957","id":1886,"name":"TotalSupplyOverflow","nameLocation":"1505:19:3","nodeType":"ErrorDefinition","parameters":{"id":1885,"nodeType":"ParameterList","parameters":[],"src":"1524:2:3"},"src":"1499:28:3"},{"documentation":{"id":1887,"nodeType":"StructuredDocumentation","src":"1533:38:3","text":"@dev The allowance has overflowed."},"errorSelector":"f9067066","id":1889,"name":"AllowanceOverflow","nameLocation":"1582:17:3","nodeType":"ErrorDefinition","parameters":{"id":1888,"nodeType":"ParameterList","parameters":[],"src":"1599:2:3"},"src":"1576:26:3"},{"documentation":{"id":1890,"nodeType":"StructuredDocumentation","src":"1608:39:3","text":"@dev The allowance has underflowed."},"errorSelector":"8301ab38","id":1892,"name":"AllowanceUnderflow","nameLocation":"1658:18:3","nodeType":"ErrorDefinition","parameters":{"id":1891,"nodeType":"ParameterList","parameters":[],"src":"1676:2:3"},"src":"1652:27:3"},{"documentation":{"id":1893,"nodeType":"StructuredDocumentation","src":"1685:30:3","text":"@dev Insufficient balance."},"errorSelector":"f4d678b8","id":1895,"name":"InsufficientBalance","nameLocation":"1726:19:3","nodeType":"ErrorDefinition","parameters":{"id":1894,"nodeType":"ParameterList","parameters":[],"src":"1745:2:3"},"src":"1720:28:3"},{"documentation":{"id":1896,"nodeType":"StructuredDocumentation","src":"1754:32:3","text":"@dev Insufficient allowance."},"errorSelector":"13be252b","id":1898,"name":"InsufficientAllowance","nameLocation":"1797:21:3","nodeType":"ErrorDefinition","parameters":{"id":1897,"nodeType":"ParameterList","parameters":[],"src":"1818:2:3"},"src":"1791:30:3"},{"documentation":{"id":1899,"nodeType":"StructuredDocumentation","src":"1827:31:3","text":"@dev The permit is invalid."},"errorSelector":"ddafbaef","id":1901,"name":"InvalidPermit","nameLocation":"1869:13:3","nodeType":"ErrorDefinition","parameters":{"id":1900,"nodeType":"ParameterList","parameters":[],"src":"1882:2:3"},"src":"1863:22:3"},{"documentation":{"id":1902,"nodeType":"StructuredDocumentation","src":"1891:32:3","text":"@dev The permit has expired."},"errorSelector":"1a15a3cc","id":1904,"name":"PermitExpired","nameLocation":"1934:13:3","nodeType":"ErrorDefinition","parameters":{"id":1903,"nodeType":"ParameterList","parameters":[],"src":"1947:2:3"},"src":"1928:22:3"},{"anonymous":false,"documentation":{"id":1905,"nodeType":"StructuredDocumentation","src":"2239:73:3","text":"@dev Emitted when `amount` tokens is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":1913,"name":"Transfer","nameLocation":"2323:8:3","nodeType":"EventDefinition","parameters":{"id":1912,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1907,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"2348:4:3","nodeType":"VariableDeclaration","scope":1913,"src":"2332:20:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1906,"name":"address","nodeType":"ElementaryTypeName","src":"2332:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1909,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"2370:2:3","nodeType":"VariableDeclaration","scope":1913,"src":"2354:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1908,"name":"address","nodeType":"ElementaryTypeName","src":"2354:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1911,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"2382:6:3","nodeType":"VariableDeclaration","scope":1913,"src":"2374:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1910,"name":"uint256","nodeType":"ElementaryTypeName","src":"2374:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2331:58:3"},"src":"2317:73:3"},{"anonymous":false,"documentation":{"id":1914,"nodeType":"StructuredDocumentation","src":"2396:85:3","text":"@dev Emitted when `amount` tokens is approved by `owner` to be used by `spender`."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":1922,"name":"Approval","nameLocation":"2492:8:3","nodeType":"EventDefinition","parameters":{"id":1921,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1916,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"2517:5:3","nodeType":"VariableDeclaration","scope":1922,"src":"2501:21:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1915,"name":"address","nodeType":"ElementaryTypeName","src":"2501:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1918,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"2540:7:3","nodeType":"VariableDeclaration","scope":1922,"src":"2524:23:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1917,"name":"address","nodeType":"ElementaryTypeName","src":"2524:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1920,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"2557:6:3","nodeType":"VariableDeclaration","scope":1922,"src":"2549:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1919,"name":"uint256","nodeType":"ElementaryTypeName","src":"2549:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2500:64:3"},"src":"2486:79:3"},{"constant":true,"documentation":{"id":1923,"nodeType":"StructuredDocumentation","src":"2571:65:3","text":"@dev `keccak256(bytes(\"Transfer(address,address,uint256)\"))`."},"id":1926,"mutability":"constant","name":"_TRANSFER_EVENT_SIGNATURE","nameLocation":"2666:25:3","nodeType":"VariableDeclaration","scope":2299,"src":"2641:127:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1924,"name":"uint256","nodeType":"ElementaryTypeName","src":"2641:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307864646632353261643162653263383962363963326230363866633337386461613935326261376631363363346131313632386635356134646635323362336566","id":1925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2702:66:3","typeDescriptions":{"typeIdentifier":"t_rational_100389287136786176327247604509743168900146139575972864366142685224231313322991_by_1","typeString":"int_const 1003...(70 digits omitted)...2991"},"value":"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"},"visibility":"private"},{"constant":true,"documentation":{"id":1927,"nodeType":"StructuredDocumentation","src":"2775:65:3","text":"@dev `keccak256(bytes(\"Approval(address,address,uint256)\"))`."},"id":1930,"mutability":"constant","name":"_APPROVAL_EVENT_SIGNATURE","nameLocation":"2870:25:3","nodeType":"VariableDeclaration","scope":2299,"src":"2845:127:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1928,"name":"uint256","nodeType":"ElementaryTypeName","src":"2845:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"307838633562653165356562656337643562643134663731343237643165383466336464303331346330663762323239316535623230306163386337633362393235","id":1929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2906:66:3","typeDescriptions":{"typeIdentifier":"t_rational_63486140976153616755203102783360879283472101686154884697241723088393386309925_by_1","typeString":"int_const 6348...(69 digits omitted)...9925"},"value":"0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"},"visibility":"private"},{"constant":true,"documentation":{"id":1931,"nodeType":"StructuredDocumentation","src":"3262:47:3","text":"@dev The storage slot for the total supply."},"id":1934,"mutability":"constant","name":"_TOTAL_SUPPLY_SLOT","nameLocation":"3339:18:3","nodeType":"VariableDeclaration","scope":2299,"src":"3314:66:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1932,"name":"uint256","nodeType":"ElementaryTypeName","src":"3314:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078303533343563646637376562363866343463","id":1933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3360:20:3","typeDescriptions":{"typeIdentifier":"t_rational_96006856662521017420_by_1","typeString":"int_const 96006856662521017420"},"value":"0x05345cdf77eb68f44c"},"visibility":"private"},{"constant":true,"documentation":{"id":1935,"nodeType":"StructuredDocumentation","src":"3387:203:3","text":"@dev The balance slot of `owner` is given by:\n ```\n     mstore(0x0c, _BALANCE_SLOT_SEED)\n     mstore(0x00, owner)\n     let balanceSlot := keccak256(0x0c, 0x20)\n ```"},"id":1938,"mutability":"constant","name":"_BALANCE_SLOT_SEED","nameLocation":"3620:18:3","nodeType":"VariableDeclaration","scope":2299,"src":"3595:56:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1936,"name":"uint256","nodeType":"ElementaryTypeName","src":"3595:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783837613231316132","id":1937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3641:10:3","typeDescriptions":{"typeIdentifier":"t_rational_2275545506_by_1","typeString":"int_const 2275545506"},"value":"0x87a211a2"},"visibility":"private"},{"constant":true,"documentation":{"id":1939,"nodeType":"StructuredDocumentation","src":"3658:256:3","text":"@dev The allowance slot of (`owner`, `spender`) is given by:\n ```\n     mstore(0x20, spender)\n     mstore(0x0c, _ALLOWANCE_SLOT_SEED)\n     mstore(0x00, owner)\n     let allowanceSlot := keccak256(0x0c, 0x34)\n ```"},"id":1942,"mutability":"constant","name":"_ALLOWANCE_SLOT_SEED","nameLocation":"3944:20:3","nodeType":"VariableDeclaration","scope":2299,"src":"3919:58:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1940,"name":"uint256","nodeType":"ElementaryTypeName","src":"3919:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783766356539663230","id":1941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3967:10:3","typeDescriptions":{"typeIdentifier":"t_rational_2136907552_by_1","typeString":"int_const 2136907552"},"value":"0x7f5e9f20"},"visibility":"private"},{"constant":true,"documentation":{"id":1943,"nodeType":"StructuredDocumentation","src":"3984:198:3","text":"@dev The nonce slot of `owner` is given by:\n ```\n     mstore(0x0c, _NONCES_SLOT_SEED)\n     mstore(0x00, owner)\n     let nonceSlot := keccak256(0x0c, 0x20)\n ```"},"id":1946,"mutability":"constant","name":"_NONCES_SLOT_SEED","nameLocation":"4212:17:3","nodeType":"VariableDeclaration","scope":2299,"src":"4187:55:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1944,"name":"uint256","nodeType":"ElementaryTypeName","src":"4187:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783338333737353038","id":1945,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4232:10:3","typeDescriptions":{"typeIdentifier":"t_rational_943158536_by_1","typeString":"int_const 943158536"},"value":"0x38377508"},"visibility":"private"},{"constant":true,"documentation":{"id":1947,"nodeType":"StructuredDocumentation","src":"4532:46:3","text":"@dev `(_NONCES_SLOT_SEED << 16) | 0x1901`."},"id":1950,"mutability":"constant","name":"_NONCES_SLOT_SEED_WITH_SIGNATURE_PREFIX","nameLocation":"4608:39:3","nodeType":"VariableDeclaration","scope":2299,"src":"4583:81:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1948,"name":"uint256","nodeType":"ElementaryTypeName","src":"4583:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3078333833373735303831393031","id":1949,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4650:14:3","typeDescriptions":{"typeIdentifier":"t_rational_61810837821697_by_1","typeString":"int_const 61810837821697"},"value":"0x383775081901"},"visibility":"private"},{"constant":true,"documentation":{"id":1951,"nodeType":"StructuredDocumentation","src":"4671:107:3","text":"@dev `keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\")`."},"id":1954,"mutability":"constant","name":"_DOMAIN_TYPEHASH","nameLocation":"4808:16:3","nodeType":"VariableDeclaration","scope":2299,"src":"4783:118:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1952,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4783:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307838623733633363363962623866653364353132656363346366373539636337393233396637623137396230666661636161396137356435323262333934303066","id":1953,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4835:66:3","typeDescriptions":{"typeIdentifier":"t_rational_63076024560530113402979550242307453568063438748328787417531900361828837441551_by_1","typeString":"int_const 6307...(69 digits omitted)...1551"},"value":"0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f"},"visibility":"private"},{"constant":true,"documentation":{"id":1955,"nodeType":"StructuredDocumentation","src":"4908:26:3","text":"@dev `keccak256(\"1\")`."},"id":1958,"mutability":"constant","name":"_VERSION_HASH","nameLocation":"4964:13:3","nodeType":"VariableDeclaration","scope":2299,"src":"4939:115:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1956,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4939:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307863383965666461613534633066323063376164663631323838326466303935306635613935313633376530333037636463623463363732663239386238626336","id":1957,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4988:66:3","typeDescriptions":{"typeIdentifier":"t_rational_90743482286830539503240959006302832933333810038750515972785732718729991261126_by_1","typeString":"int_const 9074...(69 digits omitted)...1126"},"value":"0xc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6"},"visibility":"private"},{"constant":true,"documentation":{"id":1959,"nodeType":"StructuredDocumentation","src":"5061:107:3","text":"@dev `keccak256(\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\")`."},"id":1962,"mutability":"constant","name":"_PERMIT_TYPEHASH","nameLocation":"5198:16:3","nodeType":"VariableDeclaration","scope":2299,"src":"5173:118:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1960,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5173:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307836653731656461653132623162393766346431663630333730666566313031303566613266616165303132363131346131363963363438343564363132366339","id":1961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5225:66:3","typeDescriptions":{"typeIdentifier":"t_rational_49955707469362902507454157297736832118868343942642399513960811609542965143241_by_1","typeString":"int_const 4995...(69 digits omitted)...3241"},"value":"0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9"},"visibility":"private"},{"documentation":{"id":1963,"nodeType":"StructuredDocumentation","src":"5581:39:3","text":"@dev Returns the name of the token."},"functionSelector":"06fdde03","id":1968,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"5634:4:3","nodeType":"FunctionDefinition","parameters":{"id":1964,"nodeType":"ParameterList","parameters":[],"src":"5638:2:3"},"returnParameters":{"id":1967,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1966,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1968,"src":"5670:13:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1965,"name":"string","nodeType":"ElementaryTypeName","src":"5670:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5669:15:3"},"scope":2299,"src":"5625:60:3","stateMutability":"view","virtual":true,"visibility":"public"},{"documentation":{"id":1969,"nodeType":"StructuredDocumentation","src":"5691:41:3","text":"@dev Returns the symbol of the token."},"functionSelector":"95d89b41","id":1974,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"5746:6:3","nodeType":"FunctionDefinition","parameters":{"id":1970,"nodeType":"ParameterList","parameters":[],"src":"5752:2:3"},"returnParameters":{"id":1973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1972,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1974,"src":"5784:13:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1971,"name":"string","nodeType":"ElementaryTypeName","src":"5784:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5783:15:3"},"scope":2299,"src":"5737:62:3","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":1982,"nodeType":"Block","src":"5916:26:3","statements":[{"expression":{"hexValue":"3138","id":1980,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5933:2:3","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"functionReturnParameters":1979,"id":1981,"nodeType":"Return","src":"5926:9:3"}]},"documentation":{"id":1975,"nodeType":"StructuredDocumentation","src":"5805:50:3","text":"@dev Returns the decimals places of the token."},"functionSelector":"313ce567","id":1983,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"5869:8:3","nodeType":"FunctionDefinition","parameters":{"id":1976,"nodeType":"ParameterList","parameters":[],"src":"5877:2:3"},"returnParameters":{"id":1979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1978,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1983,"src":"5909:5:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1977,"name":"uint8","nodeType":"ElementaryTypeName","src":"5909:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"5908:7:3"},"scope":2299,"src":"5860:82:3","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":1990,"nodeType":"Block","src":"6355:127:3","statements":[{"AST":{"nativeSrc":"6417:59:3","nodeType":"YulBlock","src":"6417:59:3","statements":[{"nativeSrc":"6431:35:3","nodeType":"YulAssignment","src":"6431:35:3","value":{"arguments":[{"name":"_TOTAL_SUPPLY_SLOT","nativeSrc":"6447:18:3","nodeType":"YulIdentifier","src":"6447:18:3"}],"functionName":{"name":"sload","nativeSrc":"6441:5:3","nodeType":"YulIdentifier","src":"6441:5:3"},"nativeSrc":"6441:25:3","nodeType":"YulFunctionCall","src":"6441:25:3"},"variableNames":[{"name":"result","nativeSrc":"6431:6:3","nodeType":"YulIdentifier","src":"6431:6:3"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1934,"isOffset":false,"isSlot":false,"src":"6447:18:3","valueSize":1},{"declaration":1987,"isOffset":false,"isSlot":false,"src":"6431:6:3","valueSize":1}],"id":1989,"nodeType":"InlineAssembly","src":"6408:68:3"}]},"documentation":{"id":1984,"nodeType":"StructuredDocumentation","src":"6231:51:3","text":"@dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":1991,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"6296:11:3","nodeType":"FunctionDefinition","parameters":{"id":1985,"nodeType":"ParameterList","parameters":[],"src":"6307:2:3"},"returnParameters":{"id":1988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1987,"mutability":"mutable","name":"result","nameLocation":"6347:6:3","nodeType":"VariableDeclaration","scope":1991,"src":"6339:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1986,"name":"uint256","nodeType":"ElementaryTypeName","src":"6339:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6338:16:3"},"scope":2299,"src":"6287:195:3","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":2000,"nodeType":"Block","src":"6627:207:3","statements":[{"AST":{"nativeSrc":"6689:139:3","nodeType":"YulBlock","src":"6689:139:3","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6710:4:3","nodeType":"YulLiteral","src":"6710:4:3","type":"","value":"0x0c"},{"name":"_BALANCE_SLOT_SEED","nativeSrc":"6716:18:3","nodeType":"YulIdentifier","src":"6716:18:3"}],"functionName":{"name":"mstore","nativeSrc":"6703:6:3","nodeType":"YulIdentifier","src":"6703:6:3"},"nativeSrc":"6703:32:3","nodeType":"YulFunctionCall","src":"6703:32:3"},"nativeSrc":"6703:32:3","nodeType":"YulExpressionStatement","src":"6703:32:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"6755:4:3","nodeType":"YulLiteral","src":"6755:4:3","type":"","value":"0x00"},{"name":"owner","nativeSrc":"6761:5:3","nodeType":"YulIdentifier","src":"6761:5:3"}],"functionName":{"name":"mstore","nativeSrc":"6748:6:3","nodeType":"YulIdentifier","src":"6748:6:3"},"nativeSrc":"6748:19:3","nodeType":"YulFunctionCall","src":"6748:19:3"},"nativeSrc":"6748:19:3","nodeType":"YulExpressionStatement","src":"6748:19:3"},{"nativeSrc":"6780:38:3","nodeType":"YulAssignment","src":"6780:38:3","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"6806:4:3","nodeType":"YulLiteral","src":"6806:4:3","type":"","value":"0x0c"},{"kind":"number","nativeSrc":"6812:4:3","nodeType":"YulLiteral","src":"6812:4:3","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"6796:9:3","nodeType":"YulIdentifier","src":"6796:9:3"},"nativeSrc":"6796:21:3","nodeType":"YulFunctionCall","src":"6796:21:3"}],"functionName":{"name":"sload","nativeSrc":"6790:5:3","nodeType":"YulIdentifier","src":"6790:5:3"},"nativeSrc":"6790:28:3","nodeType":"YulFunctionCall","src":"6790:28:3"},"variableNames":[{"name":"result","nativeSrc":"6780:6:3","nodeType":"YulIdentifier","src":"6780:6:3"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1938,"isOffset":false,"isSlot":false,"src":"6716:18:3","valueSize":1},{"declaration":1994,"isOffset":false,"isSlot":false,"src":"6761:5:3","valueSize":1},{"declaration":1997,"isOffset":false,"isSlot":false,"src":"6780:6:3","valueSize":1}],"id":1999,"nodeType":"InlineAssembly","src":"6680:148:3"}]},"documentation":{"id":1992,"nodeType":"StructuredDocumentation","src":"6488:55:3","text":"@dev Returns the amount of tokens owned by `owner`."},"functionSelector":"70a08231","id":2001,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"6557:9:3","nodeType":"FunctionDefinition","parameters":{"id":1995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1994,"mutability":"mutable","name":"owner","nameLocation":"6575:5:3","nodeType":"VariableDeclaration","scope":2001,"src":"6567:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1993,"name":"address","nodeType":"ElementaryTypeName","src":"6567:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6566:15:3"},"returnParameters":{"id":1998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1997,"mutability":"mutable","name":"result","nameLocation":"6619:6:3","nodeType":"VariableDeclaration","scope":2001,"src":"6611:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1996,"name":"uint256","nodeType":"ElementaryTypeName","src":"6611:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6610:16:3"},"scope":2299,"src":"6548:286:3","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":2012,"nodeType":"Block","src":"7061:243:3","statements":[{"AST":{"nativeSrc":"7123:175:3","nodeType":"YulBlock","src":"7123:175:3","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7144:4:3","nodeType":"YulLiteral","src":"7144:4:3","type":"","value":"0x20"},{"name":"spender","nativeSrc":"7150:7:3","nodeType":"YulIdentifier","src":"7150:7:3"}],"functionName":{"name":"mstore","nativeSrc":"7137:6:3","nodeType":"YulIdentifier","src":"7137:6:3"},"nativeSrc":"7137:21:3","nodeType":"YulFunctionCall","src":"7137:21:3"},"nativeSrc":"7137:21:3","nodeType":"YulExpressionStatement","src":"7137:21:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7178:4:3","nodeType":"YulLiteral","src":"7178:4:3","type":"","value":"0x0c"},{"name":"_ALLOWANCE_SLOT_SEED","nativeSrc":"7184:20:3","nodeType":"YulIdentifier","src":"7184:20:3"}],"functionName":{"name":"mstore","nativeSrc":"7171:6:3","nodeType":"YulIdentifier","src":"7171:6:3"},"nativeSrc":"7171:34:3","nodeType":"YulFunctionCall","src":"7171:34:3"},"nativeSrc":"7171:34:3","nodeType":"YulExpressionStatement","src":"7171:34:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7225:4:3","nodeType":"YulLiteral","src":"7225:4:3","type":"","value":"0x00"},{"name":"owner","nativeSrc":"7231:5:3","nodeType":"YulIdentifier","src":"7231:5:3"}],"functionName":{"name":"mstore","nativeSrc":"7218:6:3","nodeType":"YulIdentifier","src":"7218:6:3"},"nativeSrc":"7218:19:3","nodeType":"YulFunctionCall","src":"7218:19:3"},"nativeSrc":"7218:19:3","nodeType":"YulExpressionStatement","src":"7218:19:3"},{"nativeSrc":"7250:38:3","nodeType":"YulAssignment","src":"7250:38:3","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7276:4:3","nodeType":"YulLiteral","src":"7276:4:3","type":"","value":"0x0c"},{"kind":"number","nativeSrc":"7282:4:3","nodeType":"YulLiteral","src":"7282:4:3","type":"","value":"0x34"}],"functionName":{"name":"keccak256","nativeSrc":"7266:9:3","nodeType":"YulIdentifier","src":"7266:9:3"},"nativeSrc":"7266:21:3","nodeType":"YulFunctionCall","src":"7266:21:3"}],"functionName":{"name":"sload","nativeSrc":"7260:5:3","nodeType":"YulIdentifier","src":"7260:5:3"},"nativeSrc":"7260:28:3","nodeType":"YulFunctionCall","src":"7260:28:3"},"variableNames":[{"name":"result","nativeSrc":"7250:6:3","nodeType":"YulIdentifier","src":"7250:6:3"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1942,"isOffset":false,"isSlot":false,"src":"7184:20:3","valueSize":1},{"declaration":2004,"isOffset":false,"isSlot":false,"src":"7231:5:3","valueSize":1},{"declaration":2009,"isOffset":false,"isSlot":false,"src":"7250:6:3","valueSize":1},{"declaration":2006,"isOffset":false,"isSlot":false,"src":"7150:7:3","valueSize":1}],"id":2011,"nodeType":"InlineAssembly","src":"7114:184:3"}]},"documentation":{"id":2002,"nodeType":"StructuredDocumentation","src":"6840:84:3","text":"@dev Returns the amount of tokens that `spender` can spend on behalf of `owner`."},"functionSelector":"dd62ed3e","id":2013,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"6938:9:3","nodeType":"FunctionDefinition","parameters":{"id":2007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2004,"mutability":"mutable","name":"owner","nameLocation":"6956:5:3","nodeType":"VariableDeclaration","scope":2013,"src":"6948:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2003,"name":"address","nodeType":"ElementaryTypeName","src":"6948:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2006,"mutability":"mutable","name":"spender","nameLocation":"6971:7:3","nodeType":"VariableDeclaration","scope":2013,"src":"6963:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2005,"name":"address","nodeType":"ElementaryTypeName","src":"6963:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6947:32:3"},"returnParameters":{"id":2010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2009,"mutability":"mutable","name":"result","nameLocation":"7049:6:3","nodeType":"VariableDeclaration","scope":2013,"src":"7041:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2008,"name":"uint256","nodeType":"ElementaryTypeName","src":"7041:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7040:16:3"},"scope":2299,"src":"6929:375:3","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":2026,"nodeType":"Block","src":"7515:493:3","statements":[{"AST":{"nativeSrc":"7577:404:3","nodeType":"YulBlock","src":"7577:404:3","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7662:4:3","nodeType":"YulLiteral","src":"7662:4:3","type":"","value":"0x20"},{"name":"spender","nativeSrc":"7668:7:3","nodeType":"YulIdentifier","src":"7668:7:3"}],"functionName":{"name":"mstore","nativeSrc":"7655:6:3","nodeType":"YulIdentifier","src":"7655:6:3"},"nativeSrc":"7655:21:3","nodeType":"YulFunctionCall","src":"7655:21:3"},"nativeSrc":"7655:21:3","nodeType":"YulExpressionStatement","src":"7655:21:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7696:4:3","nodeType":"YulLiteral","src":"7696:4:3","type":"","value":"0x0c"},{"name":"_ALLOWANCE_SLOT_SEED","nativeSrc":"7702:20:3","nodeType":"YulIdentifier","src":"7702:20:3"}],"functionName":{"name":"mstore","nativeSrc":"7689:6:3","nodeType":"YulIdentifier","src":"7689:6:3"},"nativeSrc":"7689:34:3","nodeType":"YulFunctionCall","src":"7689:34:3"},"nativeSrc":"7689:34:3","nodeType":"YulExpressionStatement","src":"7689:34:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7743:4:3","nodeType":"YulLiteral","src":"7743:4:3","type":"","value":"0x00"},{"arguments":[],"functionName":{"name":"caller","nativeSrc":"7749:6:3","nodeType":"YulIdentifier","src":"7749:6:3"},"nativeSrc":"7749:8:3","nodeType":"YulFunctionCall","src":"7749:8:3"}],"functionName":{"name":"mstore","nativeSrc":"7736:6:3","nodeType":"YulIdentifier","src":"7736:6:3"},"nativeSrc":"7736:22:3","nodeType":"YulFunctionCall","src":"7736:22:3"},"nativeSrc":"7736:22:3","nodeType":"YulExpressionStatement","src":"7736:22:3"},{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"7788:4:3","nodeType":"YulLiteral","src":"7788:4:3","type":"","value":"0x0c"},{"kind":"number","nativeSrc":"7794:4:3","nodeType":"YulLiteral","src":"7794:4:3","type":"","value":"0x34"}],"functionName":{"name":"keccak256","nativeSrc":"7778:9:3","nodeType":"YulIdentifier","src":"7778:9:3"},"nativeSrc":"7778:21:3","nodeType":"YulFunctionCall","src":"7778:21:3"},{"name":"amount","nativeSrc":"7801:6:3","nodeType":"YulIdentifier","src":"7801:6:3"}],"functionName":{"name":"sstore","nativeSrc":"7771:6:3","nodeType":"YulIdentifier","src":"7771:6:3"},"nativeSrc":"7771:37:3","nodeType":"YulFunctionCall","src":"7771:37:3"},"nativeSrc":"7771:37:3","nodeType":"YulExpressionStatement","src":"7771:37:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7870:4:3","nodeType":"YulLiteral","src":"7870:4:3","type":"","value":"0x00"},{"name":"amount","nativeSrc":"7876:6:3","nodeType":"YulIdentifier","src":"7876:6:3"}],"functionName":{"name":"mstore","nativeSrc":"7863:6:3","nodeType":"YulIdentifier","src":"7863:6:3"},"nativeSrc":"7863:20:3","nodeType":"YulFunctionCall","src":"7863:20:3"},"nativeSrc":"7863:20:3","nodeType":"YulExpressionStatement","src":"7863:20:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7901:4:3","nodeType":"YulLiteral","src":"7901:4:3","type":"","value":"0x00"},{"kind":"number","nativeSrc":"7907:4:3","nodeType":"YulLiteral","src":"7907:4:3","type":"","value":"0x20"},{"name":"_APPROVAL_EVENT_SIGNATURE","nativeSrc":"7913:25:3","nodeType":"YulIdentifier","src":"7913:25:3"},{"arguments":[],"functionName":{"name":"caller","nativeSrc":"7940:6:3","nodeType":"YulIdentifier","src":"7940:6:3"},"nativeSrc":"7940:8:3","nodeType":"YulFunctionCall","src":"7940:8:3"},{"arguments":[{"kind":"number","nativeSrc":"7954:2:3","nodeType":"YulLiteral","src":"7954:2:3","type":"","value":"96"},{"arguments":[{"kind":"number","nativeSrc":"7964:4:3","nodeType":"YulLiteral","src":"7964:4:3","type":"","value":"0x2c"}],"functionName":{"name":"mload","nativeSrc":"7958:5:3","nodeType":"YulIdentifier","src":"7958:5:3"},"nativeSrc":"7958:11:3","nodeType":"YulFunctionCall","src":"7958:11:3"}],"functionName":{"name":"shr","nativeSrc":"7950:3:3","nodeType":"YulIdentifier","src":"7950:3:3"},"nativeSrc":"7950:20:3","nodeType":"YulFunctionCall","src":"7950:20:3"}],"functionName":{"name":"log3","nativeSrc":"7896:4:3","nodeType":"YulIdentifier","src":"7896:4:3"},"nativeSrc":"7896:75:3","nodeType":"YulFunctionCall","src":"7896:75:3"},"nativeSrc":"7896:75:3","nodeType":"YulExpressionStatement","src":"7896:75:3"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1942,"isOffset":false,"isSlot":false,"src":"7702:20:3","valueSize":1},{"declaration":1930,"isOffset":false,"isSlot":false,"src":"7913:25:3","valueSize":1},{"declaration":2018,"isOffset":false,"isSlot":false,"src":"7801:6:3","valueSize":1},{"declaration":2018,"isOffset":false,"isSlot":false,"src":"7876:6:3","valueSize":1},{"declaration":2016,"isOffset":false,"isSlot":false,"src":"7668:7:3","valueSize":1}],"id":2023,"nodeType":"InlineAssembly","src":"7568:413:3"},{"expression":{"hexValue":"74727565","id":2024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7997:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2022,"id":2025,"nodeType":"Return","src":"7990:11:3"}]},"documentation":{"id":2014,"nodeType":"StructuredDocumentation","src":"7310:120:3","text":"@dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Emits a {Approval} event."},"functionSelector":"095ea7b3","id":2027,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"7444:7:3","nodeType":"FunctionDefinition","parameters":{"id":2019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2016,"mutability":"mutable","name":"spender","nameLocation":"7460:7:3","nodeType":"VariableDeclaration","scope":2027,"src":"7452:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2015,"name":"address","nodeType":"ElementaryTypeName","src":"7452:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2018,"mutability":"mutable","name":"amount","nameLocation":"7477:6:3","nodeType":"VariableDeclaration","scope":2027,"src":"7469:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2017,"name":"uint256","nodeType":"ElementaryTypeName","src":"7469:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7451:33:3"},"returnParameters":{"id":2022,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2021,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2027,"src":"7509:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2020,"name":"bool","nodeType":"ElementaryTypeName","src":"7509:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7508:6:3"},"scope":2299,"src":"7435:573:3","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":2054,"nodeType":"Block","src":"8271:1330:3","statements":[{"expression":{"arguments":[{"expression":{"id":2038,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8302:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8306:6:3","memberName":"sender","nodeType":"MemberAccess","src":"8302:10:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2040,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2030,"src":"8314:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2041,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2032,"src":"8318:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2037,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2287,"src":"8281:20:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8281:44:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2043,"nodeType":"ExpressionStatement","src":"8281:44:3"},{"AST":{"nativeSrc":"8387:1134:3","nodeType":"YulBlock","src":"8387:1134:3","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8468:4:3","nodeType":"YulLiteral","src":"8468:4:3","type":"","value":"0x0c"},{"name":"_BALANCE_SLOT_SEED","nativeSrc":"8474:18:3","nodeType":"YulIdentifier","src":"8474:18:3"}],"functionName":{"name":"mstore","nativeSrc":"8461:6:3","nodeType":"YulIdentifier","src":"8461:6:3"},"nativeSrc":"8461:32:3","nodeType":"YulFunctionCall","src":"8461:32:3"},"nativeSrc":"8461:32:3","nodeType":"YulExpressionStatement","src":"8461:32:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8513:4:3","nodeType":"YulLiteral","src":"8513:4:3","type":"","value":"0x00"},{"arguments":[],"functionName":{"name":"caller","nativeSrc":"8519:6:3","nodeType":"YulIdentifier","src":"8519:6:3"},"nativeSrc":"8519:8:3","nodeType":"YulFunctionCall","src":"8519:8:3"}],"functionName":{"name":"mstore","nativeSrc":"8506:6:3","nodeType":"YulIdentifier","src":"8506:6:3"},"nativeSrc":"8506:22:3","nodeType":"YulFunctionCall","src":"8506:22:3"},"nativeSrc":"8506:22:3","nodeType":"YulExpressionStatement","src":"8506:22:3"},{"nativeSrc":"8541:44:3","nodeType":"YulVariableDeclaration","src":"8541:44:3","value":{"arguments":[{"kind":"number","nativeSrc":"8574:4:3","nodeType":"YulLiteral","src":"8574:4:3","type":"","value":"0x0c"},{"kind":"number","nativeSrc":"8580:4:3","nodeType":"YulLiteral","src":"8580:4:3","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"8564:9:3","nodeType":"YulIdentifier","src":"8564:9:3"},"nativeSrc":"8564:21:3","nodeType":"YulFunctionCall","src":"8564:21:3"},"variables":[{"name":"fromBalanceSlot","nativeSrc":"8545:15:3","nodeType":"YulTypedName","src":"8545:15:3","type":""}]},{"nativeSrc":"8598:41:3","nodeType":"YulVariableDeclaration","src":"8598:41:3","value":{"arguments":[{"name":"fromBalanceSlot","nativeSrc":"8623:15:3","nodeType":"YulIdentifier","src":"8623:15:3"}],"functionName":{"name":"sload","nativeSrc":"8617:5:3","nodeType":"YulIdentifier","src":"8617:5:3"},"nativeSrc":"8617:22:3","nodeType":"YulFunctionCall","src":"8617:22:3"},"variables":[{"name":"fromBalance","nativeSrc":"8602:11:3","nodeType":"YulTypedName","src":"8602:11:3","type":""}]},{"body":{"nativeSrc":"8726:119:3","nodeType":"YulBlock","src":"8726:119:3","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8751:4:3","nodeType":"YulLiteral","src":"8751:4:3","type":"","value":"0x00"},{"kind":"number","nativeSrc":"8757:10:3","nodeType":"YulLiteral","src":"8757:10:3","type":"","value":"0xf4d678b8"}],"functionName":{"name":"mstore","nativeSrc":"8744:6:3","nodeType":"YulIdentifier","src":"8744:6:3"},"nativeSrc":"8744:24:3","nodeType":"YulFunctionCall","src":"8744:24:3"},"nativeSrc":"8744:24:3","nodeType":"YulExpressionStatement","src":"8744:24:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8820:4:3","nodeType":"YulLiteral","src":"8820:4:3","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"8826:4:3","nodeType":"YulLiteral","src":"8826:4:3","type":"","value":"0x04"}],"functionName":{"name":"revert","nativeSrc":"8813:6:3","nodeType":"YulIdentifier","src":"8813:6:3"},"nativeSrc":"8813:18:3","nodeType":"YulFunctionCall","src":"8813:18:3"},"nativeSrc":"8813:18:3","nodeType":"YulExpressionStatement","src":"8813:18:3"}]},"condition":{"arguments":[{"name":"amount","nativeSrc":"8705:6:3","nodeType":"YulIdentifier","src":"8705:6:3"},{"name":"fromBalance","nativeSrc":"8713:11:3","nodeType":"YulIdentifier","src":"8713:11:3"}],"functionName":{"name":"gt","nativeSrc":"8702:2:3","nodeType":"YulIdentifier","src":"8702:2:3"},"nativeSrc":"8702:23:3","nodeType":"YulFunctionCall","src":"8702:23:3"},"nativeSrc":"8699:146:3","nodeType":"YulIf","src":"8699:146:3"},{"expression":{"arguments":[{"name":"fromBalanceSlot","nativeSrc":"8920:15:3","nodeType":"YulIdentifier","src":"8920:15:3"},{"arguments":[{"name":"fromBalance","nativeSrc":"8941:11:3","nodeType":"YulIdentifier","src":"8941:11:3"},{"name":"amount","nativeSrc":"8954:6:3","nodeType":"YulIdentifier","src":"8954:6:3"}],"functionName":{"name":"sub","nativeSrc":"8937:3:3","nodeType":"YulIdentifier","src":"8937:3:3"},"nativeSrc":"8937:24:3","nodeType":"YulFunctionCall","src":"8937:24:3"}],"functionName":{"name":"sstore","nativeSrc":"8913:6:3","nodeType":"YulIdentifier","src":"8913:6:3"},"nativeSrc":"8913:49:3","nodeType":"YulFunctionCall","src":"8913:49:3"},"nativeSrc":"8913:49:3","nodeType":"YulExpressionStatement","src":"8913:49:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9031:4:3","nodeType":"YulLiteral","src":"9031:4:3","type":"","value":"0x00"},{"name":"to","nativeSrc":"9037:2:3","nodeType":"YulIdentifier","src":"9037:2:3"}],"functionName":{"name":"mstore","nativeSrc":"9024:6:3","nodeType":"YulIdentifier","src":"9024:6:3"},"nativeSrc":"9024:16:3","nodeType":"YulFunctionCall","src":"9024:16:3"},"nativeSrc":"9024:16:3","nodeType":"YulExpressionStatement","src":"9024:16:3"},{"nativeSrc":"9053:42:3","nodeType":"YulVariableDeclaration","src":"9053:42:3","value":{"arguments":[{"kind":"number","nativeSrc":"9084:4:3","nodeType":"YulLiteral","src":"9084:4:3","type":"","value":"0x0c"},{"kind":"number","nativeSrc":"9090:4:3","nodeType":"YulLiteral","src":"9090:4:3","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"9074:9:3","nodeType":"YulIdentifier","src":"9074:9:3"},"nativeSrc":"9074:21:3","nodeType":"YulFunctionCall","src":"9074:21:3"},"variables":[{"name":"toBalanceSlot","nativeSrc":"9057:13:3","nodeType":"YulTypedName","src":"9057:13:3","type":""}]},{"expression":{"arguments":[{"name":"toBalanceSlot","nativeSrc":"9299:13:3","nodeType":"YulIdentifier","src":"9299:13:3"},{"arguments":[{"arguments":[{"name":"toBalanceSlot","nativeSrc":"9324:13:3","nodeType":"YulIdentifier","src":"9324:13:3"}],"functionName":{"name":"sload","nativeSrc":"9318:5:3","nodeType":"YulIdentifier","src":"9318:5:3"},"nativeSrc":"9318:20:3","nodeType":"YulFunctionCall","src":"9318:20:3"},{"name":"amount","nativeSrc":"9340:6:3","nodeType":"YulIdentifier","src":"9340:6:3"}],"functionName":{"name":"add","nativeSrc":"9314:3:3","nodeType":"YulIdentifier","src":"9314:3:3"},"nativeSrc":"9314:33:3","nodeType":"YulFunctionCall","src":"9314:33:3"}],"functionName":{"name":"sstore","nativeSrc":"9292:6:3","nodeType":"YulIdentifier","src":"9292:6:3"},"nativeSrc":"9292:56:3","nodeType":"YulFunctionCall","src":"9292:56:3"},"nativeSrc":"9292:56:3","nodeType":"YulExpressionStatement","src":"9292:56:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9410:4:3","nodeType":"YulLiteral","src":"9410:4:3","type":"","value":"0x20"},{"name":"amount","nativeSrc":"9416:6:3","nodeType":"YulIdentifier","src":"9416:6:3"}],"functionName":{"name":"mstore","nativeSrc":"9403:6:3","nodeType":"YulIdentifier","src":"9403:6:3"},"nativeSrc":"9403:20:3","nodeType":"YulFunctionCall","src":"9403:20:3"},"nativeSrc":"9403:20:3","nodeType":"YulExpressionStatement","src":"9403:20:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9441:4:3","nodeType":"YulLiteral","src":"9441:4:3","type":"","value":"0x20"},{"kind":"number","nativeSrc":"9447:4:3","nodeType":"YulLiteral","src":"9447:4:3","type":"","value":"0x20"},{"name":"_TRANSFER_EVENT_SIGNATURE","nativeSrc":"9453:25:3","nodeType":"YulIdentifier","src":"9453:25:3"},{"arguments":[],"functionName":{"name":"caller","nativeSrc":"9480:6:3","nodeType":"YulIdentifier","src":"9480:6:3"},"nativeSrc":"9480:8:3","nodeType":"YulFunctionCall","src":"9480:8:3"},{"arguments":[{"kind":"number","nativeSrc":"9494:2:3","nodeType":"YulLiteral","src":"9494:2:3","type":"","value":"96"},{"arguments":[{"kind":"number","nativeSrc":"9504:4:3","nodeType":"YulLiteral","src":"9504:4:3","type":"","value":"0x0c"}],"functionName":{"name":"mload","nativeSrc":"9498:5:3","nodeType":"YulIdentifier","src":"9498:5:3"},"nativeSrc":"9498:11:3","nodeType":"YulFunctionCall","src":"9498:11:3"}],"functionName":{"name":"shr","nativeSrc":"9490:3:3","nodeType":"YulIdentifier","src":"9490:3:3"},"nativeSrc":"9490:20:3","nodeType":"YulFunctionCall","src":"9490:20:3"}],"functionName":{"name":"log3","nativeSrc":"9436:4:3","nodeType":"YulIdentifier","src":"9436:4:3"},"nativeSrc":"9436:75:3","nodeType":"YulFunctionCall","src":"9436:75:3"},"nativeSrc":"9436:75:3","nodeType":"YulExpressionStatement","src":"9436:75:3"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1938,"isOffset":false,"isSlot":false,"src":"8474:18:3","valueSize":1},{"declaration":1926,"isOffset":false,"isSlot":false,"src":"9453:25:3","valueSize":1},{"declaration":2032,"isOffset":false,"isSlot":false,"src":"8705:6:3","valueSize":1},{"declaration":2032,"isOffset":false,"isSlot":false,"src":"8954:6:3","valueSize":1},{"declaration":2032,"isOffset":false,"isSlot":false,"src":"9340:6:3","valueSize":1},{"declaration":2032,"isOffset":false,"isSlot":false,"src":"9416:6:3","valueSize":1},{"declaration":2030,"isOffset":false,"isSlot":false,"src":"9037:2:3","valueSize":1}],"id":2044,"nodeType":"InlineAssembly","src":"8378:1143:3"},{"expression":{"arguments":[{"expression":{"id":2046,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9550:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9554:6:3","memberName":"sender","nodeType":"MemberAccess","src":"9550:10:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2048,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2030,"src":"9562:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2049,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2032,"src":"9566:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2045,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2298,"src":"9530:19:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9530:43:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2051,"nodeType":"ExpressionStatement","src":"9530:43:3"},{"expression":{"hexValue":"74727565","id":2052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9590:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2036,"id":2053,"nodeType":"Return","src":"9583:11:3"}]},"documentation":{"id":2028,"nodeType":"StructuredDocumentation","src":"8014:176:3","text":"@dev Transfer `amount` tokens from the caller to `to`.\n Requirements:\n - `from` must at least have `amount`.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":2055,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"8204:8:3","nodeType":"FunctionDefinition","parameters":{"id":2033,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2030,"mutability":"mutable","name":"to","nameLocation":"8221:2:3","nodeType":"VariableDeclaration","scope":2055,"src":"8213:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2029,"name":"address","nodeType":"ElementaryTypeName","src":"8213:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2032,"mutability":"mutable","name":"amount","nameLocation":"8233:6:3","nodeType":"VariableDeclaration","scope":2055,"src":"8225:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2031,"name":"uint256","nodeType":"ElementaryTypeName","src":"8225:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8212:28:3"},"returnParameters":{"id":2036,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2035,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2055,"src":"8265:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2034,"name":"bool","nodeType":"ElementaryTypeName","src":"8265:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8264:6:3"},"scope":2299,"src":"8195:1406:3","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":2082,"nodeType":"Block","src":"10063:2097:3","statements":[{"expression":{"arguments":[{"id":2068,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2058,"src":"10094:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2069,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2060,"src":"10100:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2070,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2062,"src":"10104:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2067,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2287,"src":"10073:20:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10073:38:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2072,"nodeType":"ExpressionStatement","src":"10073:38:3"},{"AST":{"nativeSrc":"10173:1913:3","nodeType":"YulBlock","src":"10173:1913:3","statements":[{"nativeSrc":"10187:26:3","nodeType":"YulVariableDeclaration","src":"10187:26:3","value":{"arguments":[{"kind":"number","nativeSrc":"10204:2:3","nodeType":"YulLiteral","src":"10204:2:3","type":"","value":"96"},{"name":"from","nativeSrc":"10208:4:3","nodeType":"YulIdentifier","src":"10208:4:3"}],"functionName":{"name":"shl","nativeSrc":"10200:3:3","nodeType":"YulIdentifier","src":"10200:3:3"},"nativeSrc":"10200:13:3","nodeType":"YulFunctionCall","src":"10200:13:3"},"variables":[{"name":"from_","nativeSrc":"10191:5:3","nodeType":"YulTypedName","src":"10191:5:3","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10295:4:3","nodeType":"YulLiteral","src":"10295:4:3","type":"","value":"0x20"},{"arguments":[],"functionName":{"name":"caller","nativeSrc":"10301:6:3","nodeType":"YulIdentifier","src":"10301:6:3"},"nativeSrc":"10301:8:3","nodeType":"YulFunctionCall","src":"10301:8:3"}],"functionName":{"name":"mstore","nativeSrc":"10288:6:3","nodeType":"YulIdentifier","src":"10288:6:3"},"nativeSrc":"10288:22:3","nodeType":"YulFunctionCall","src":"10288:22:3"},"nativeSrc":"10288:22:3","nodeType":"YulExpressionStatement","src":"10288:22:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10330:4:3","nodeType":"YulLiteral","src":"10330:4:3","type":"","value":"0x0c"},{"arguments":[{"name":"from_","nativeSrc":"10339:5:3","nodeType":"YulIdentifier","src":"10339:5:3"},{"name":"_ALLOWANCE_SLOT_SEED","nativeSrc":"10346:20:3","nodeType":"YulIdentifier","src":"10346:20:3"}],"functionName":{"name":"or","nativeSrc":"10336:2:3","nodeType":"YulIdentifier","src":"10336:2:3"},"nativeSrc":"10336:31:3","nodeType":"YulFunctionCall","src":"10336:31:3"}],"functionName":{"name":"mstore","nativeSrc":"10323:6:3","nodeType":"YulIdentifier","src":"10323:6:3"},"nativeSrc":"10323:45:3","nodeType":"YulFunctionCall","src":"10323:45:3"},"nativeSrc":"10323:45:3","nodeType":"YulExpressionStatement","src":"10323:45:3"},{"nativeSrc":"10381:42:3","nodeType":"YulVariableDeclaration","src":"10381:42:3","value":{"arguments":[{"kind":"number","nativeSrc":"10412:4:3","nodeType":"YulLiteral","src":"10412:4:3","type":"","value":"0x0c"},{"kind":"number","nativeSrc":"10418:4:3","nodeType":"YulLiteral","src":"10418:4:3","type":"","value":"0x34"}],"functionName":{"name":"keccak256","nativeSrc":"10402:9:3","nodeType":"YulIdentifier","src":"10402:9:3"},"nativeSrc":"10402:21:3","nodeType":"YulFunctionCall","src":"10402:21:3"},"variables":[{"name":"allowanceSlot","nativeSrc":"10385:13:3","nodeType":"YulTypedName","src":"10385:13:3","type":""}]},{"nativeSrc":"10436:38:3","nodeType":"YulVariableDeclaration","src":"10436:38:3","value":{"arguments":[{"name":"allowanceSlot","nativeSrc":"10460:13:3","nodeType":"YulIdentifier","src":"10460:13:3"}],"functionName":{"name":"sload","nativeSrc":"10454:5:3","nodeType":"YulIdentifier","src":"10454:5:3"},"nativeSrc":"10454:20:3","nodeType":"YulFunctionCall","src":"10454:20:3"},"variables":[{"name":"allowance_","nativeSrc":"10440:10:3","nodeType":"YulTypedName","src":"10440:10:3","type":""}]},{"body":{"nativeSrc":"10575:396:3","nodeType":"YulBlock","src":"10575:396:3","statements":[{"body":{"nativeSrc":"10700:133:3","nodeType":"YulBlock","src":"10700:133:3","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10729:4:3","nodeType":"YulLiteral","src":"10729:4:3","type":"","value":"0x00"},{"kind":"number","nativeSrc":"10735:10:3","nodeType":"YulLiteral","src":"10735:10:3","type":"","value":"0x13be252b"}],"functionName":{"name":"mstore","nativeSrc":"10722:6:3","nodeType":"YulIdentifier","src":"10722:6:3"},"nativeSrc":"10722:24:3","nodeType":"YulFunctionCall","src":"10722:24:3"},"nativeSrc":"10722:24:3","nodeType":"YulExpressionStatement","src":"10722:24:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10804:4:3","nodeType":"YulLiteral","src":"10804:4:3","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"10810:4:3","nodeType":"YulLiteral","src":"10810:4:3","type":"","value":"0x04"}],"functionName":{"name":"revert","nativeSrc":"10797:6:3","nodeType":"YulIdentifier","src":"10797:6:3"},"nativeSrc":"10797:18:3","nodeType":"YulFunctionCall","src":"10797:18:3"},"nativeSrc":"10797:18:3","nodeType":"YulExpressionStatement","src":"10797:18:3"}]},"condition":{"arguments":[{"name":"amount","nativeSrc":"10680:6:3","nodeType":"YulIdentifier","src":"10680:6:3"},{"name":"allowance_","nativeSrc":"10688:10:3","nodeType":"YulIdentifier","src":"10688:10:3"}],"functionName":{"name":"gt","nativeSrc":"10677:2:3","nodeType":"YulIdentifier","src":"10677:2:3"},"nativeSrc":"10677:22:3","nodeType":"YulFunctionCall","src":"10677:22:3"},"nativeSrc":"10674:159:3","nodeType":"YulIf","src":"10674:159:3"},{"expression":{"arguments":[{"name":"allowanceSlot","nativeSrc":"10918:13:3","nodeType":"YulIdentifier","src":"10918:13:3"},{"arguments":[{"name":"allowance_","nativeSrc":"10937:10:3","nodeType":"YulIdentifier","src":"10937:10:3"},{"name":"amount","nativeSrc":"10949:6:3","nodeType":"YulIdentifier","src":"10949:6:3"}],"functionName":{"name":"sub","nativeSrc":"10933:3:3","nodeType":"YulIdentifier","src":"10933:3:3"},"nativeSrc":"10933:23:3","nodeType":"YulFunctionCall","src":"10933:23:3"}],"functionName":{"name":"sstore","nativeSrc":"10911:6:3","nodeType":"YulIdentifier","src":"10911:6:3"},"nativeSrc":"10911:46:3","nodeType":"YulFunctionCall","src":"10911:46:3"},"nativeSrc":"10911:46:3","nodeType":"YulExpressionStatement","src":"10911:46:3"}]},"condition":{"arguments":[{"name":"allowance_","nativeSrc":"10560:10:3","nodeType":"YulIdentifier","src":"10560:10:3"},{"kind":"number","nativeSrc":"10572:1:3","nodeType":"YulLiteral","src":"10572:1:3","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"10556:3:3","nodeType":"YulIdentifier","src":"10556:3:3"},"nativeSrc":"10556:18:3","nodeType":"YulFunctionCall","src":"10556:18:3"},"nativeSrc":"10553:418:3","nodeType":"YulIf","src":"10553:418:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11051:4:3","nodeType":"YulLiteral","src":"11051:4:3","type":"","value":"0x0c"},{"arguments":[{"name":"from_","nativeSrc":"11060:5:3","nodeType":"YulIdentifier","src":"11060:5:3"},{"name":"_BALANCE_SLOT_SEED","nativeSrc":"11067:18:3","nodeType":"YulIdentifier","src":"11067:18:3"}],"functionName":{"name":"or","nativeSrc":"11057:2:3","nodeType":"YulIdentifier","src":"11057:2:3"},"nativeSrc":"11057:29:3","nodeType":"YulFunctionCall","src":"11057:29:3"}],"functionName":{"name":"mstore","nativeSrc":"11044:6:3","nodeType":"YulIdentifier","src":"11044:6:3"},"nativeSrc":"11044:43:3","nodeType":"YulFunctionCall","src":"11044:43:3"},"nativeSrc":"11044:43:3","nodeType":"YulExpressionStatement","src":"11044:43:3"},{"nativeSrc":"11100:44:3","nodeType":"YulVariableDeclaration","src":"11100:44:3","value":{"arguments":[{"kind":"number","nativeSrc":"11133:4:3","nodeType":"YulLiteral","src":"11133:4:3","type":"","value":"0x0c"},{"kind":"number","nativeSrc":"11139:4:3","nodeType":"YulLiteral","src":"11139:4:3","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"11123:9:3","nodeType":"YulIdentifier","src":"11123:9:3"},"nativeSrc":"11123:21:3","nodeType":"YulFunctionCall","src":"11123:21:3"},"variables":[{"name":"fromBalanceSlot","nativeSrc":"11104:15:3","nodeType":"YulTypedName","src":"11104:15:3","type":""}]},{"nativeSrc":"11157:41:3","nodeType":"YulVariableDeclaration","src":"11157:41:3","value":{"arguments":[{"name":"fromBalanceSlot","nativeSrc":"11182:15:3","nodeType":"YulIdentifier","src":"11182:15:3"}],"functionName":{"name":"sload","nativeSrc":"11176:5:3","nodeType":"YulIdentifier","src":"11176:5:3"},"nativeSrc":"11176:22:3","nodeType":"YulFunctionCall","src":"11176:22:3"},"variables":[{"name":"fromBalance","nativeSrc":"11161:11:3","nodeType":"YulTypedName","src":"11161:11:3","type":""}]},{"body":{"nativeSrc":"11285:119:3","nodeType":"YulBlock","src":"11285:119:3","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11310:4:3","nodeType":"YulLiteral","src":"11310:4:3","type":"","value":"0x00"},{"kind":"number","nativeSrc":"11316:10:3","nodeType":"YulLiteral","src":"11316:10:3","type":"","value":"0xf4d678b8"}],"functionName":{"name":"mstore","nativeSrc":"11303:6:3","nodeType":"YulIdentifier","src":"11303:6:3"},"nativeSrc":"11303:24:3","nodeType":"YulFunctionCall","src":"11303:24:3"},"nativeSrc":"11303:24:3","nodeType":"YulExpressionStatement","src":"11303:24:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11379:4:3","nodeType":"YulLiteral","src":"11379:4:3","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"11385:4:3","nodeType":"YulLiteral","src":"11385:4:3","type":"","value":"0x04"}],"functionName":{"name":"revert","nativeSrc":"11372:6:3","nodeType":"YulIdentifier","src":"11372:6:3"},"nativeSrc":"11372:18:3","nodeType":"YulFunctionCall","src":"11372:18:3"},"nativeSrc":"11372:18:3","nodeType":"YulExpressionStatement","src":"11372:18:3"}]},"condition":{"arguments":[{"name":"amount","nativeSrc":"11264:6:3","nodeType":"YulIdentifier","src":"11264:6:3"},{"name":"fromBalance","nativeSrc":"11272:11:3","nodeType":"YulIdentifier","src":"11272:11:3"}],"functionName":{"name":"gt","nativeSrc":"11261:2:3","nodeType":"YulIdentifier","src":"11261:2:3"},"nativeSrc":"11261:23:3","nodeType":"YulFunctionCall","src":"11261:23:3"},"nativeSrc":"11258:146:3","nodeType":"YulIf","src":"11258:146:3"},{"expression":{"arguments":[{"name":"fromBalanceSlot","nativeSrc":"11479:15:3","nodeType":"YulIdentifier","src":"11479:15:3"},{"arguments":[{"name":"fromBalance","nativeSrc":"11500:11:3","nodeType":"YulIdentifier","src":"11500:11:3"},{"name":"amount","nativeSrc":"11513:6:3","nodeType":"YulIdentifier","src":"11513:6:3"}],"functionName":{"name":"sub","nativeSrc":"11496:3:3","nodeType":"YulIdentifier","src":"11496:3:3"},"nativeSrc":"11496:24:3","nodeType":"YulFunctionCall","src":"11496:24:3"}],"functionName":{"name":"sstore","nativeSrc":"11472:6:3","nodeType":"YulIdentifier","src":"11472:6:3"},"nativeSrc":"11472:49:3","nodeType":"YulFunctionCall","src":"11472:49:3"},"nativeSrc":"11472:49:3","nodeType":"YulExpressionStatement","src":"11472:49:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11590:4:3","nodeType":"YulLiteral","src":"11590:4:3","type":"","value":"0x00"},{"name":"to","nativeSrc":"11596:2:3","nodeType":"YulIdentifier","src":"11596:2:3"}],"functionName":{"name":"mstore","nativeSrc":"11583:6:3","nodeType":"YulIdentifier","src":"11583:6:3"},"nativeSrc":"11583:16:3","nodeType":"YulFunctionCall","src":"11583:16:3"},"nativeSrc":"11583:16:3","nodeType":"YulExpressionStatement","src":"11583:16:3"},{"nativeSrc":"11612:42:3","nodeType":"YulVariableDeclaration","src":"11612:42:3","value":{"arguments":[{"kind":"number","nativeSrc":"11643:4:3","nodeType":"YulLiteral","src":"11643:4:3","type":"","value":"0x0c"},{"kind":"number","nativeSrc":"11649:4:3","nodeType":"YulLiteral","src":"11649:4:3","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"11633:9:3","nodeType":"YulIdentifier","src":"11633:9:3"},"nativeSrc":"11633:21:3","nodeType":"YulFunctionCall","src":"11633:21:3"},"variables":[{"name":"toBalanceSlot","nativeSrc":"11616:13:3","nodeType":"YulTypedName","src":"11616:13:3","type":""}]},{"expression":{"arguments":[{"name":"toBalanceSlot","nativeSrc":"11858:13:3","nodeType":"YulIdentifier","src":"11858:13:3"},{"arguments":[{"arguments":[{"name":"toBalanceSlot","nativeSrc":"11883:13:3","nodeType":"YulIdentifier","src":"11883:13:3"}],"functionName":{"name":"sload","nativeSrc":"11877:5:3","nodeType":"YulIdentifier","src":"11877:5:3"},"nativeSrc":"11877:20:3","nodeType":"YulFunctionCall","src":"11877:20:3"},{"name":"amount","nativeSrc":"11899:6:3","nodeType":"YulIdentifier","src":"11899:6:3"}],"functionName":{"name":"add","nativeSrc":"11873:3:3","nodeType":"YulIdentifier","src":"11873:3:3"},"nativeSrc":"11873:33:3","nodeType":"YulFunctionCall","src":"11873:33:3"}],"functionName":{"name":"sstore","nativeSrc":"11851:6:3","nodeType":"YulIdentifier","src":"11851:6:3"},"nativeSrc":"11851:56:3","nodeType":"YulFunctionCall","src":"11851:56:3"},"nativeSrc":"11851:56:3","nodeType":"YulExpressionStatement","src":"11851:56:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11969:4:3","nodeType":"YulLiteral","src":"11969:4:3","type":"","value":"0x20"},{"name":"amount","nativeSrc":"11975:6:3","nodeType":"YulIdentifier","src":"11975:6:3"}],"functionName":{"name":"mstore","nativeSrc":"11962:6:3","nodeType":"YulIdentifier","src":"11962:6:3"},"nativeSrc":"11962:20:3","nodeType":"YulFunctionCall","src":"11962:20:3"},"nativeSrc":"11962:20:3","nodeType":"YulExpressionStatement","src":"11962:20:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"12000:4:3","nodeType":"YulLiteral","src":"12000:4:3","type":"","value":"0x20"},{"kind":"number","nativeSrc":"12006:4:3","nodeType":"YulLiteral","src":"12006:4:3","type":"","value":"0x20"},{"name":"_TRANSFER_EVENT_SIGNATURE","nativeSrc":"12012:25:3","nodeType":"YulIdentifier","src":"12012:25:3"},{"arguments":[{"kind":"number","nativeSrc":"12043:2:3","nodeType":"YulLiteral","src":"12043:2:3","type":"","value":"96"},{"name":"from_","nativeSrc":"12047:5:3","nodeType":"YulIdentifier","src":"12047:5:3"}],"functionName":{"name":"shr","nativeSrc":"12039:3:3","nodeType":"YulIdentifier","src":"12039:3:3"},"nativeSrc":"12039:14:3","nodeType":"YulFunctionCall","src":"12039:14:3"},{"arguments":[{"kind":"number","nativeSrc":"12059:2:3","nodeType":"YulLiteral","src":"12059:2:3","type":"","value":"96"},{"arguments":[{"kind":"number","nativeSrc":"12069:4:3","nodeType":"YulLiteral","src":"12069:4:3","type":"","value":"0x0c"}],"functionName":{"name":"mload","nativeSrc":"12063:5:3","nodeType":"YulIdentifier","src":"12063:5:3"},"nativeSrc":"12063:11:3","nodeType":"YulFunctionCall","src":"12063:11:3"}],"functionName":{"name":"shr","nativeSrc":"12055:3:3","nodeType":"YulIdentifier","src":"12055:3:3"},"nativeSrc":"12055:20:3","nodeType":"YulFunctionCall","src":"12055:20:3"}],"functionName":{"name":"log3","nativeSrc":"11995:4:3","nodeType":"YulIdentifier","src":"11995:4:3"},"nativeSrc":"11995:81:3","nodeType":"YulFunctionCall","src":"11995:81:3"},"nativeSrc":"11995:81:3","nodeType":"YulExpressionStatement","src":"11995:81:3"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1942,"isOffset":false,"isSlot":false,"src":"10346:20:3","valueSize":1},{"declaration":1938,"isOffset":false,"isSlot":false,"src":"11067:18:3","valueSize":1},{"declaration":1926,"isOffset":false,"isSlot":false,"src":"12012:25:3","valueSize":1},{"declaration":2062,"isOffset":false,"isSlot":false,"src":"10680:6:3","valueSize":1},{"declaration":2062,"isOffset":false,"isSlot":false,"src":"10949:6:3","valueSize":1},{"declaration":2062,"isOffset":false,"isSlot":false,"src":"11264:6:3","valueSize":1},{"declaration":2062,"isOffset":false,"isSlot":false,"src":"11513:6:3","valueSize":1},{"declaration":2062,"isOffset":false,"isSlot":false,"src":"11899:6:3","valueSize":1},{"declaration":2062,"isOffset":false,"isSlot":false,"src":"11975:6:3","valueSize":1},{"declaration":2058,"isOffset":false,"isSlot":false,"src":"10208:4:3","valueSize":1},{"declaration":2060,"isOffset":false,"isSlot":false,"src":"11596:2:3","valueSize":1}],"id":2073,"nodeType":"InlineAssembly","src":"10164:1922:3"},{"expression":{"arguments":[{"id":2075,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2058,"src":"12115:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2076,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2060,"src":"12121:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2077,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2062,"src":"12125:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2074,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2298,"src":"12095:19:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12095:37:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2079,"nodeType":"ExpressionStatement","src":"12095:37:3"},{"expression":{"hexValue":"74727565","id":2080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12149:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2066,"id":2081,"nodeType":"Return","src":"12142:11:3"}]},"documentation":{"id":2056,"nodeType":"StructuredDocumentation","src":"9607:357:3","text":"@dev Transfers `amount` tokens from `from` to `to`.\n Note: Does not update the allowance if it is the maximum uint256 value.\n Requirements:\n - `from` must at least have `amount`.\n - The caller must have at least `amount` of allowance to transfer the tokens of `from`.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":2083,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"9978:12:3","nodeType":"FunctionDefinition","parameters":{"id":2063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2058,"mutability":"mutable","name":"from","nameLocation":"9999:4:3","nodeType":"VariableDeclaration","scope":2083,"src":"9991:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2057,"name":"address","nodeType":"ElementaryTypeName","src":"9991:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2060,"mutability":"mutable","name":"to","nameLocation":"10013:2:3","nodeType":"VariableDeclaration","scope":2083,"src":"10005:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2059,"name":"address","nodeType":"ElementaryTypeName","src":"10005:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2062,"mutability":"mutable","name":"amount","nameLocation":"10025:6:3","nodeType":"VariableDeclaration","scope":2083,"src":"10017:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2061,"name":"uint256","nodeType":"ElementaryTypeName","src":"10017:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9990:42:3"},"returnParameters":{"id":2066,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2065,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2083,"src":"10057:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2064,"name":"bool","nodeType":"ElementaryTypeName","src":"10057:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10056:6:3"},"scope":2299,"src":"9969:2191:3","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":2089,"nodeType":"Block","src":"12667:2:3","statements":[]},"documentation":{"id":2084,"nodeType":"StructuredDocumentation","src":"12449:137:3","text":"@dev For more performance, override to return the constant value\n of `keccak256(bytes(name()))` if `name()` will never change."},"id":2090,"implemented":true,"kind":"function","modifiers":[],"name":"_constantNameHash","nameLocation":"12600:17:3","nodeType":"FunctionDefinition","parameters":{"id":2085,"nodeType":"ParameterList","parameters":[],"src":"12617:2:3"},"returnParameters":{"id":2088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2087,"mutability":"mutable","name":"result","nameLocation":"12659:6:3","nodeType":"VariableDeclaration","scope":2090,"src":"12651:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2086,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12651:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"12650:16:3"},"scope":2299,"src":"12591:78:3","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2099,"nodeType":"Block","src":"12876:264:3","statements":[{"AST":{"nativeSrc":"12938:196:3","nodeType":"YulBlock","src":"12938:196:3","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13017:4:3","nodeType":"YulLiteral","src":"13017:4:3","type":"","value":"0x0c"},{"name":"_NONCES_SLOT_SEED","nativeSrc":"13023:17:3","nodeType":"YulIdentifier","src":"13023:17:3"}],"functionName":{"name":"mstore","nativeSrc":"13010:6:3","nodeType":"YulIdentifier","src":"13010:6:3"},"nativeSrc":"13010:31:3","nodeType":"YulFunctionCall","src":"13010:31:3"},"nativeSrc":"13010:31:3","nodeType":"YulExpressionStatement","src":"13010:31:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"13061:4:3","nodeType":"YulLiteral","src":"13061:4:3","type":"","value":"0x00"},{"name":"owner","nativeSrc":"13067:5:3","nodeType":"YulIdentifier","src":"13067:5:3"}],"functionName":{"name":"mstore","nativeSrc":"13054:6:3","nodeType":"YulIdentifier","src":"13054:6:3"},"nativeSrc":"13054:19:3","nodeType":"YulFunctionCall","src":"13054:19:3"},"nativeSrc":"13054:19:3","nodeType":"YulExpressionStatement","src":"13054:19:3"},{"nativeSrc":"13086:38:3","nodeType":"YulAssignment","src":"13086:38:3","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"13112:4:3","nodeType":"YulLiteral","src":"13112:4:3","type":"","value":"0x0c"},{"kind":"number","nativeSrc":"13118:4:3","nodeType":"YulLiteral","src":"13118:4:3","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"13102:9:3","nodeType":"YulIdentifier","src":"13102:9:3"},"nativeSrc":"13102:21:3","nodeType":"YulFunctionCall","src":"13102:21:3"}],"functionName":{"name":"sload","nativeSrc":"13096:5:3","nodeType":"YulIdentifier","src":"13096:5:3"},"nativeSrc":"13096:28:3","nodeType":"YulFunctionCall","src":"13096:28:3"},"variableNames":[{"name":"result","nativeSrc":"13086:6:3","nodeType":"YulIdentifier","src":"13086:6:3"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1946,"isOffset":false,"isSlot":false,"src":"13023:17:3","valueSize":1},{"declaration":2093,"isOffset":false,"isSlot":false,"src":"13067:5:3","valueSize":1},{"declaration":2096,"isOffset":false,"isSlot":false,"src":"13086:6:3","valueSize":1}],"id":2098,"nodeType":"InlineAssembly","src":"12929:205:3"}]},"documentation":{"id":2091,"nodeType":"StructuredDocumentation","src":"12675:120:3","text":"@dev Returns the current nonce for `owner`.\n This value is used to compute the signature for EIP-2612 permit."},"functionSelector":"7ecebe00","id":2100,"implemented":true,"kind":"function","modifiers":[],"name":"nonces","nameLocation":"12809:6:3","nodeType":"FunctionDefinition","parameters":{"id":2094,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2093,"mutability":"mutable","name":"owner","nameLocation":"12824:5:3","nodeType":"VariableDeclaration","scope":2100,"src":"12816:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2092,"name":"address","nodeType":"ElementaryTypeName","src":"12816:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12815:15:3"},"returnParameters":{"id":2097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2096,"mutability":"mutable","name":"result","nameLocation":"12868:6:3","nodeType":"VariableDeclaration","scope":2100,"src":"12860:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2095,"name":"uint256","nodeType":"ElementaryTypeName","src":"12860:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12859:16:3"},"scope":2299,"src":"12800:340:3","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":2141,"nodeType":"Block","src":"13513:3026:3","statements":[{"assignments":[2119],"declarations":[{"constant":false,"id":2119,"mutability":"mutable","name":"nameHash","nameLocation":"13531:8:3","nodeType":"VariableDeclaration","scope":2141,"src":"13523:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2118,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13523:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2122,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2120,"name":"_constantNameHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"13542:17:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":2121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13542:19:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"13523:38:3"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":2128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2123,"name":"nameHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2119,"src":"13669:8:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13689:1:3","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":2125,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13681:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2124,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13681:7:3","typeDescriptions":{}}},"id":2127,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13681:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"13669:22:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2139,"nodeType":"IfStatement","src":"13665:63:3","trueBody":{"expression":{"id":2137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2129,"name":"nameHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2119,"src":"13693:8:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2133,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"13720:4:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":2134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13720:6:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2132,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13714:5:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2131,"name":"bytes","nodeType":"ElementaryTypeName","src":"13714:5:3","typeDescriptions":{}}},"id":2135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13714:13:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2130,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"13704:9:3","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13704:24:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"13693:35:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2138,"nodeType":"ExpressionStatement","src":"13693:35:3"}},{"AST":{"nativeSrc":"13790:2743:3","nodeType":"YulBlock","src":"13790:2743:3","statements":[{"body":{"nativeSrc":"13906:113:3","nodeType":"YulBlock","src":"13906:113:3","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13931:4:3","nodeType":"YulLiteral","src":"13931:4:3","type":"","value":"0x00"},{"kind":"number","nativeSrc":"13937:10:3","nodeType":"YulLiteral","src":"13937:10:3","type":"","value":"0x1a15a3cc"}],"functionName":{"name":"mstore","nativeSrc":"13924:6:3","nodeType":"YulIdentifier","src":"13924:6:3"},"nativeSrc":"13924:24:3","nodeType":"YulFunctionCall","src":"13924:24:3"},"nativeSrc":"13924:24:3","nodeType":"YulExpressionStatement","src":"13924:24:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"13994:4:3","nodeType":"YulLiteral","src":"13994:4:3","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"14000:4:3","nodeType":"YulLiteral","src":"14000:4:3","type":"","value":"0x04"}],"functionName":{"name":"revert","nativeSrc":"13987:6:3","nodeType":"YulIdentifier","src":"13987:6:3"},"nativeSrc":"13987:18:3","nodeType":"YulFunctionCall","src":"13987:18:3"},"nativeSrc":"13987:18:3","nodeType":"YulExpressionStatement","src":"13987:18:3"}]},"condition":{"arguments":[{"arguments":[],"functionName":{"name":"timestamp","nativeSrc":"13883:9:3","nodeType":"YulIdentifier","src":"13883:9:3"},"nativeSrc":"13883:11:3","nodeType":"YulFunctionCall","src":"13883:11:3"},{"name":"deadline","nativeSrc":"13896:8:3","nodeType":"YulIdentifier","src":"13896:8:3"}],"functionName":{"name":"gt","nativeSrc":"13880:2:3","nodeType":"YulIdentifier","src":"13880:2:3"},"nativeSrc":"13880:25:3","nodeType":"YulFunctionCall","src":"13880:25:3"},"nativeSrc":"13877:142:3","nodeType":"YulIf","src":"13877:142:3"},{"nativeSrc":"14032:20:3","nodeType":"YulVariableDeclaration","src":"14032:20:3","value":{"arguments":[{"kind":"number","nativeSrc":"14047:4:3","nodeType":"YulLiteral","src":"14047:4:3","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"14041:5:3","nodeType":"YulIdentifier","src":"14041:5:3"},"nativeSrc":"14041:11:3","nodeType":"YulFunctionCall","src":"14041:11:3"},"variables":[{"name":"m","nativeSrc":"14036:1:3","nodeType":"YulTypedName","src":"14036:1:3","type":""}]},{"nativeSrc":"14138:32:3","nodeType":"YulAssignment","src":"14138:32:3","value":{"arguments":[{"kind":"number","nativeSrc":"14151:2:3","nodeType":"YulLiteral","src":"14151:2:3","type":"","value":"96"},{"arguments":[{"kind":"number","nativeSrc":"14159:2:3","nodeType":"YulLiteral","src":"14159:2:3","type":"","value":"96"},{"name":"owner","nativeSrc":"14163:5:3","nodeType":"YulIdentifier","src":"14163:5:3"}],"functionName":{"name":"shl","nativeSrc":"14155:3:3","nodeType":"YulIdentifier","src":"14155:3:3"},"nativeSrc":"14155:14:3","nodeType":"YulFunctionCall","src":"14155:14:3"}],"functionName":{"name":"shr","nativeSrc":"14147:3:3","nodeType":"YulIdentifier","src":"14147:3:3"},"nativeSrc":"14147:23:3","nodeType":"YulFunctionCall","src":"14147:23:3"},"variableNames":[{"name":"owner","nativeSrc":"14138:5:3","nodeType":"YulIdentifier","src":"14138:5:3"}]},{"nativeSrc":"14183:36:3","nodeType":"YulAssignment","src":"14183:36:3","value":{"arguments":[{"kind":"number","nativeSrc":"14198:2:3","nodeType":"YulLiteral","src":"14198:2:3","type":"","value":"96"},{"arguments":[{"kind":"number","nativeSrc":"14206:2:3","nodeType":"YulLiteral","src":"14206:2:3","type":"","value":"96"},{"name":"spender","nativeSrc":"14210:7:3","nodeType":"YulIdentifier","src":"14210:7:3"}],"functionName":{"name":"shl","nativeSrc":"14202:3:3","nodeType":"YulIdentifier","src":"14202:3:3"},"nativeSrc":"14202:16:3","nodeType":"YulFunctionCall","src":"14202:16:3"}],"functionName":{"name":"shr","nativeSrc":"14194:3:3","nodeType":"YulIdentifier","src":"14194:3:3"},"nativeSrc":"14194:25:3","nodeType":"YulFunctionCall","src":"14194:25:3"},"variableNames":[{"name":"spender","nativeSrc":"14183:7:3","nodeType":"YulIdentifier","src":"14183:7:3"}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14297:4:3","nodeType":"YulLiteral","src":"14297:4:3","type":"","value":"0x0e"},{"name":"_NONCES_SLOT_SEED_WITH_SIGNATURE_PREFIX","nativeSrc":"14303:39:3","nodeType":"YulIdentifier","src":"14303:39:3"}],"functionName":{"name":"mstore","nativeSrc":"14290:6:3","nodeType":"YulIdentifier","src":"14290:6:3"},"nativeSrc":"14290:53:3","nodeType":"YulFunctionCall","src":"14290:53:3"},"nativeSrc":"14290:53:3","nodeType":"YulExpressionStatement","src":"14290:53:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14363:4:3","nodeType":"YulLiteral","src":"14363:4:3","type":"","value":"0x00"},{"name":"owner","nativeSrc":"14369:5:3","nodeType":"YulIdentifier","src":"14369:5:3"}],"functionName":{"name":"mstore","nativeSrc":"14356:6:3","nodeType":"YulIdentifier","src":"14356:6:3"},"nativeSrc":"14356:19:3","nodeType":"YulFunctionCall","src":"14356:19:3"},"nativeSrc":"14356:19:3","nodeType":"YulExpressionStatement","src":"14356:19:3"},{"nativeSrc":"14388:38:3","nodeType":"YulVariableDeclaration","src":"14388:38:3","value":{"arguments":[{"kind":"number","nativeSrc":"14415:4:3","nodeType":"YulLiteral","src":"14415:4:3","type":"","value":"0x0c"},{"kind":"number","nativeSrc":"14421:4:3","nodeType":"YulLiteral","src":"14421:4:3","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"14405:9:3","nodeType":"YulIdentifier","src":"14405:9:3"},"nativeSrc":"14405:21:3","nodeType":"YulFunctionCall","src":"14405:21:3"},"variables":[{"name":"nonceSlot","nativeSrc":"14392:9:3","nodeType":"YulTypedName","src":"14392:9:3","type":""}]},{"nativeSrc":"14439:34:3","nodeType":"YulVariableDeclaration","src":"14439:34:3","value":{"arguments":[{"name":"nonceSlot","nativeSrc":"14463:9:3","nodeType":"YulIdentifier","src":"14463:9:3"}],"functionName":{"name":"sload","nativeSrc":"14457:5:3","nodeType":"YulIdentifier","src":"14457:5:3"},"nativeSrc":"14457:16:3","nodeType":"YulFunctionCall","src":"14457:16:3"},"variables":[{"name":"nonceValue","nativeSrc":"14443:10:3","nodeType":"YulTypedName","src":"14443:10:3","type":""}]},{"expression":{"arguments":[{"name":"m","nativeSrc":"14538:1:3","nodeType":"YulIdentifier","src":"14538:1:3"},{"name":"_DOMAIN_TYPEHASH","nativeSrc":"14541:16:3","nodeType":"YulIdentifier","src":"14541:16:3"}],"functionName":{"name":"mstore","nativeSrc":"14531:6:3","nodeType":"YulIdentifier","src":"14531:6:3"},"nativeSrc":"14531:27:3","nodeType":"YulFunctionCall","src":"14531:27:3"},"nativeSrc":"14531:27:3","nodeType":"YulExpressionStatement","src":"14531:27:3"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"14582:1:3","nodeType":"YulIdentifier","src":"14582:1:3"},{"kind":"number","nativeSrc":"14585:4:3","nodeType":"YulLiteral","src":"14585:4:3","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"14578:3:3","nodeType":"YulIdentifier","src":"14578:3:3"},"nativeSrc":"14578:12:3","nodeType":"YulFunctionCall","src":"14578:12:3"},{"name":"nameHash","nativeSrc":"14592:8:3","nodeType":"YulIdentifier","src":"14592:8:3"}],"functionName":{"name":"mstore","nativeSrc":"14571:6:3","nodeType":"YulIdentifier","src":"14571:6:3"},"nativeSrc":"14571:30:3","nodeType":"YulFunctionCall","src":"14571:30:3"},"nativeSrc":"14571:30:3","nodeType":"YulExpressionStatement","src":"14571:30:3"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"14625:1:3","nodeType":"YulIdentifier","src":"14625:1:3"},{"kind":"number","nativeSrc":"14628:4:3","nodeType":"YulLiteral","src":"14628:4:3","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"14621:3:3","nodeType":"YulIdentifier","src":"14621:3:3"},"nativeSrc":"14621:12:3","nodeType":"YulFunctionCall","src":"14621:12:3"},{"name":"_VERSION_HASH","nativeSrc":"14635:13:3","nodeType":"YulIdentifier","src":"14635:13:3"}],"functionName":{"name":"mstore","nativeSrc":"14614:6:3","nodeType":"YulIdentifier","src":"14614:6:3"},"nativeSrc":"14614:35:3","nodeType":"YulFunctionCall","src":"14614:35:3"},"nativeSrc":"14614:35:3","nodeType":"YulExpressionStatement","src":"14614:35:3"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"14673:1:3","nodeType":"YulIdentifier","src":"14673:1:3"},{"kind":"number","nativeSrc":"14676:4:3","nodeType":"YulLiteral","src":"14676:4:3","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"14669:3:3","nodeType":"YulIdentifier","src":"14669:3:3"},"nativeSrc":"14669:12:3","nodeType":"YulFunctionCall","src":"14669:12:3"},{"arguments":[],"functionName":{"name":"chainid","nativeSrc":"14683:7:3","nodeType":"YulIdentifier","src":"14683:7:3"},"nativeSrc":"14683:9:3","nodeType":"YulFunctionCall","src":"14683:9:3"}],"functionName":{"name":"mstore","nativeSrc":"14662:6:3","nodeType":"YulIdentifier","src":"14662:6:3"},"nativeSrc":"14662:31:3","nodeType":"YulFunctionCall","src":"14662:31:3"},"nativeSrc":"14662:31:3","nodeType":"YulExpressionStatement","src":"14662:31:3"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"14717:1:3","nodeType":"YulIdentifier","src":"14717:1:3"},{"kind":"number","nativeSrc":"14720:4:3","nodeType":"YulLiteral","src":"14720:4:3","type":"","value":"0x80"}],"functionName":{"name":"add","nativeSrc":"14713:3:3","nodeType":"YulIdentifier","src":"14713:3:3"},"nativeSrc":"14713:12:3","nodeType":"YulFunctionCall","src":"14713:12:3"},{"arguments":[],"functionName":{"name":"address","nativeSrc":"14727:7:3","nodeType":"YulIdentifier","src":"14727:7:3"},"nativeSrc":"14727:9:3","nodeType":"YulFunctionCall","src":"14727:9:3"}],"functionName":{"name":"mstore","nativeSrc":"14706:6:3","nodeType":"YulIdentifier","src":"14706:6:3"},"nativeSrc":"14706:31:3","nodeType":"YulFunctionCall","src":"14706:31:3"},"nativeSrc":"14706:31:3","nodeType":"YulExpressionStatement","src":"14706:31:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14757:4:3","nodeType":"YulLiteral","src":"14757:4:3","type":"","value":"0x2e"},{"arguments":[{"name":"m","nativeSrc":"14773:1:3","nodeType":"YulIdentifier","src":"14773:1:3"},{"kind":"number","nativeSrc":"14776:4:3","nodeType":"YulLiteral","src":"14776:4:3","type":"","value":"0xa0"}],"functionName":{"name":"keccak256","nativeSrc":"14763:9:3","nodeType":"YulIdentifier","src":"14763:9:3"},"nativeSrc":"14763:18:3","nodeType":"YulFunctionCall","src":"14763:18:3"}],"functionName":{"name":"mstore","nativeSrc":"14750:6:3","nodeType":"YulIdentifier","src":"14750:6:3"},"nativeSrc":"14750:32:3","nodeType":"YulFunctionCall","src":"14750:32:3"},"nativeSrc":"14750:32:3","nodeType":"YulExpressionStatement","src":"14750:32:3"},{"expression":{"arguments":[{"name":"m","nativeSrc":"14842:1:3","nodeType":"YulIdentifier","src":"14842:1:3"},{"name":"_PERMIT_TYPEHASH","nativeSrc":"14845:16:3","nodeType":"YulIdentifier","src":"14845:16:3"}],"functionName":{"name":"mstore","nativeSrc":"14835:6:3","nodeType":"YulIdentifier","src":"14835:6:3"},"nativeSrc":"14835:27:3","nodeType":"YulFunctionCall","src":"14835:27:3"},"nativeSrc":"14835:27:3","nodeType":"YulExpressionStatement","src":"14835:27:3"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"14886:1:3","nodeType":"YulIdentifier","src":"14886:1:3"},{"kind":"number","nativeSrc":"14889:4:3","nodeType":"YulLiteral","src":"14889:4:3","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"14882:3:3","nodeType":"YulIdentifier","src":"14882:3:3"},"nativeSrc":"14882:12:3","nodeType":"YulFunctionCall","src":"14882:12:3"},{"name":"owner","nativeSrc":"14896:5:3","nodeType":"YulIdentifier","src":"14896:5:3"}],"functionName":{"name":"mstore","nativeSrc":"14875:6:3","nodeType":"YulIdentifier","src":"14875:6:3"},"nativeSrc":"14875:27:3","nodeType":"YulFunctionCall","src":"14875:27:3"},"nativeSrc":"14875:27:3","nodeType":"YulExpressionStatement","src":"14875:27:3"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"14926:1:3","nodeType":"YulIdentifier","src":"14926:1:3"},{"kind":"number","nativeSrc":"14929:4:3","nodeType":"YulLiteral","src":"14929:4:3","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"14922:3:3","nodeType":"YulIdentifier","src":"14922:3:3"},"nativeSrc":"14922:12:3","nodeType":"YulFunctionCall","src":"14922:12:3"},{"name":"spender","nativeSrc":"14936:7:3","nodeType":"YulIdentifier","src":"14936:7:3"}],"functionName":{"name":"mstore","nativeSrc":"14915:6:3","nodeType":"YulIdentifier","src":"14915:6:3"},"nativeSrc":"14915:29:3","nodeType":"YulFunctionCall","src":"14915:29:3"},"nativeSrc":"14915:29:3","nodeType":"YulExpressionStatement","src":"14915:29:3"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"14968:1:3","nodeType":"YulIdentifier","src":"14968:1:3"},{"kind":"number","nativeSrc":"14971:4:3","nodeType":"YulLiteral","src":"14971:4:3","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"14964:3:3","nodeType":"YulIdentifier","src":"14964:3:3"},"nativeSrc":"14964:12:3","nodeType":"YulFunctionCall","src":"14964:12:3"},{"name":"value","nativeSrc":"14978:5:3","nodeType":"YulIdentifier","src":"14978:5:3"}],"functionName":{"name":"mstore","nativeSrc":"14957:6:3","nodeType":"YulIdentifier","src":"14957:6:3"},"nativeSrc":"14957:27:3","nodeType":"YulFunctionCall","src":"14957:27:3"},"nativeSrc":"14957:27:3","nodeType":"YulExpressionStatement","src":"14957:27:3"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"15008:1:3","nodeType":"YulIdentifier","src":"15008:1:3"},{"kind":"number","nativeSrc":"15011:4:3","nodeType":"YulLiteral","src":"15011:4:3","type":"","value":"0x80"}],"functionName":{"name":"add","nativeSrc":"15004:3:3","nodeType":"YulIdentifier","src":"15004:3:3"},"nativeSrc":"15004:12:3","nodeType":"YulFunctionCall","src":"15004:12:3"},{"name":"nonceValue","nativeSrc":"15018:10:3","nodeType":"YulIdentifier","src":"15018:10:3"}],"functionName":{"name":"mstore","nativeSrc":"14997:6:3","nodeType":"YulIdentifier","src":"14997:6:3"},"nativeSrc":"14997:32:3","nodeType":"YulFunctionCall","src":"14997:32:3"},"nativeSrc":"14997:32:3","nodeType":"YulExpressionStatement","src":"14997:32:3"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"15053:1:3","nodeType":"YulIdentifier","src":"15053:1:3"},{"kind":"number","nativeSrc":"15056:4:3","nodeType":"YulLiteral","src":"15056:4:3","type":"","value":"0xa0"}],"functionName":{"name":"add","nativeSrc":"15049:3:3","nodeType":"YulIdentifier","src":"15049:3:3"},"nativeSrc":"15049:12:3","nodeType":"YulFunctionCall","src":"15049:12:3"},{"name":"deadline","nativeSrc":"15063:8:3","nodeType":"YulIdentifier","src":"15063:8:3"}],"functionName":{"name":"mstore","nativeSrc":"15042:6:3","nodeType":"YulIdentifier","src":"15042:6:3"},"nativeSrc":"15042:30:3","nodeType":"YulFunctionCall","src":"15042:30:3"},"nativeSrc":"15042:30:3","nodeType":"YulExpressionStatement","src":"15042:30:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15092:4:3","nodeType":"YulLiteral","src":"15092:4:3","type":"","value":"0x4e"},{"arguments":[{"name":"m","nativeSrc":"15108:1:3","nodeType":"YulIdentifier","src":"15108:1:3"},{"kind":"number","nativeSrc":"15111:4:3","nodeType":"YulLiteral","src":"15111:4:3","type":"","value":"0xc0"}],"functionName":{"name":"keccak256","nativeSrc":"15098:9:3","nodeType":"YulIdentifier","src":"15098:9:3"},"nativeSrc":"15098:18:3","nodeType":"YulFunctionCall","src":"15098:18:3"}],"functionName":{"name":"mstore","nativeSrc":"15085:6:3","nodeType":"YulIdentifier","src":"15085:6:3"},"nativeSrc":"15085:32:3","nodeType":"YulFunctionCall","src":"15085:32:3"},"nativeSrc":"15085:32:3","nodeType":"YulExpressionStatement","src":"15085:32:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15184:4:3","nodeType":"YulLiteral","src":"15184:4:3","type":"","value":"0x00"},{"arguments":[{"kind":"number","nativeSrc":"15200:4:3","nodeType":"YulLiteral","src":"15200:4:3","type":"","value":"0x2c"},{"kind":"number","nativeSrc":"15206:4:3","nodeType":"YulLiteral","src":"15206:4:3","type":"","value":"0x42"}],"functionName":{"name":"keccak256","nativeSrc":"15190:9:3","nodeType":"YulIdentifier","src":"15190:9:3"},"nativeSrc":"15190:21:3","nodeType":"YulFunctionCall","src":"15190:21:3"}],"functionName":{"name":"mstore","nativeSrc":"15177:6:3","nodeType":"YulIdentifier","src":"15177:6:3"},"nativeSrc":"15177:35:3","nodeType":"YulFunctionCall","src":"15177:35:3"},"nativeSrc":"15177:35:3","nodeType":"YulExpressionStatement","src":"15177:35:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15232:4:3","nodeType":"YulLiteral","src":"15232:4:3","type":"","value":"0x20"},{"arguments":[{"kind":"number","nativeSrc":"15242:4:3","nodeType":"YulLiteral","src":"15242:4:3","type":"","value":"0xff"},{"name":"v","nativeSrc":"15248:1:3","nodeType":"YulIdentifier","src":"15248:1:3"}],"functionName":{"name":"and","nativeSrc":"15238:3:3","nodeType":"YulIdentifier","src":"15238:3:3"},"nativeSrc":"15238:12:3","nodeType":"YulFunctionCall","src":"15238:12:3"}],"functionName":{"name":"mstore","nativeSrc":"15225:6:3","nodeType":"YulIdentifier","src":"15225:6:3"},"nativeSrc":"15225:26:3","nodeType":"YulFunctionCall","src":"15225:26:3"},"nativeSrc":"15225:26:3","nodeType":"YulExpressionStatement","src":"15225:26:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15271:4:3","nodeType":"YulLiteral","src":"15271:4:3","type":"","value":"0x40"},{"name":"r","nativeSrc":"15277:1:3","nodeType":"YulIdentifier","src":"15277:1:3"}],"functionName":{"name":"mstore","nativeSrc":"15264:6:3","nodeType":"YulIdentifier","src":"15264:6:3"},"nativeSrc":"15264:15:3","nodeType":"YulFunctionCall","src":"15264:15:3"},"nativeSrc":"15264:15:3","nodeType":"YulExpressionStatement","src":"15264:15:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15299:4:3","nodeType":"YulLiteral","src":"15299:4:3","type":"","value":"0x60"},{"name":"s","nativeSrc":"15305:1:3","nodeType":"YulIdentifier","src":"15305:1:3"}],"functionName":{"name":"mstore","nativeSrc":"15292:6:3","nodeType":"YulIdentifier","src":"15292:6:3"},"nativeSrc":"15292:15:3","nodeType":"YulFunctionCall","src":"15292:15:3"},"nativeSrc":"15292:15:3","nodeType":"YulExpressionStatement","src":"15292:15:3"},{"nativeSrc":"15320:50:3","nodeType":"YulVariableDeclaration","src":"15320:50:3","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"15340:3:3","nodeType":"YulIdentifier","src":"15340:3:3"},"nativeSrc":"15340:5:3","nodeType":"YulFunctionCall","src":"15340:5:3"},{"kind":"number","nativeSrc":"15347:1:3","nodeType":"YulLiteral","src":"15347:1:3","type":"","value":"1"},{"kind":"number","nativeSrc":"15350:1:3","nodeType":"YulLiteral","src":"15350:1:3","type":"","value":"0"},{"kind":"number","nativeSrc":"15353:4:3","nodeType":"YulLiteral","src":"15353:4:3","type":"","value":"0x80"},{"kind":"number","nativeSrc":"15359:4:3","nodeType":"YulLiteral","src":"15359:4:3","type":"","value":"0x20"},{"kind":"number","nativeSrc":"15365:4:3","nodeType":"YulLiteral","src":"15365:4:3","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"15329:10:3","nodeType":"YulIdentifier","src":"15329:10:3"},"nativeSrc":"15329:41:3","nodeType":"YulFunctionCall","src":"15329:41:3"},"variables":[{"name":"t","nativeSrc":"15324:1:3","nodeType":"YulTypedName","src":"15324:1:3","type":""}]},{"body":{"nativeSrc":"15794:113:3","nodeType":"YulBlock","src":"15794:113:3","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15819:4:3","nodeType":"YulLiteral","src":"15819:4:3","type":"","value":"0x00"},{"kind":"number","nativeSrc":"15825:10:3","nodeType":"YulLiteral","src":"15825:10:3","type":"","value":"0xddafbaef"}],"functionName":{"name":"mstore","nativeSrc":"15812:6:3","nodeType":"YulIdentifier","src":"15812:6:3"},"nativeSrc":"15812:24:3","nodeType":"YulFunctionCall","src":"15812:24:3"},"nativeSrc":"15812:24:3","nodeType":"YulExpressionStatement","src":"15812:24:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15882:4:3","nodeType":"YulLiteral","src":"15882:4:3","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"15888:4:3","nodeType":"YulLiteral","src":"15888:4:3","type":"","value":"0x04"}],"functionName":{"name":"revert","nativeSrc":"15875:6:3","nodeType":"YulIdentifier","src":"15875:6:3"},"nativeSrc":"15875:18:3","nodeType":"YulFunctionCall","src":"15875:18:3"},"nativeSrc":"15875:18:3","nodeType":"YulExpressionStatement","src":"15875:18:3"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"15767:14:3","nodeType":"YulIdentifier","src":"15767:14:3"},"nativeSrc":"15767:16:3","nodeType":"YulFunctionCall","src":"15767:16:3"}],"functionName":{"name":"mload","nativeSrc":"15761:5:3","nodeType":"YulIdentifier","src":"15761:5:3"},"nativeSrc":"15761:23:3","nodeType":"YulFunctionCall","src":"15761:23:3"},{"name":"owner","nativeSrc":"15786:5:3","nodeType":"YulIdentifier","src":"15786:5:3"}],"functionName":{"name":"eq","nativeSrc":"15758:2:3","nodeType":"YulIdentifier","src":"15758:2:3"},"nativeSrc":"15758:34:3","nodeType":"YulFunctionCall","src":"15758:34:3"}],"functionName":{"name":"iszero","nativeSrc":"15751:6:3","nodeType":"YulIdentifier","src":"15751:6:3"},"nativeSrc":"15751:42:3","nodeType":"YulFunctionCall","src":"15751:42:3"},"nativeSrc":"15748:159:3","nodeType":"YulIf","src":"15748:159:3"},{"expression":{"arguments":[{"name":"nonceSlot","nativeSrc":"15981:9:3","nodeType":"YulIdentifier","src":"15981:9:3"},{"arguments":[{"name":"nonceValue","nativeSrc":"15996:10:3","nodeType":"YulIdentifier","src":"15996:10:3"},{"name":"t","nativeSrc":"16008:1:3","nodeType":"YulIdentifier","src":"16008:1:3"}],"functionName":{"name":"add","nativeSrc":"15992:3:3","nodeType":"YulIdentifier","src":"15992:3:3"},"nativeSrc":"15992:18:3","nodeType":"YulFunctionCall","src":"15992:18:3"}],"functionName":{"name":"sstore","nativeSrc":"15974:6:3","nodeType":"YulIdentifier","src":"15974:6:3"},"nativeSrc":"15974:37:3","nodeType":"YulFunctionCall","src":"15974:37:3"},"nativeSrc":"15974:37:3","nodeType":"YulExpressionStatement","src":"15974:37:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16181:4:3","nodeType":"YulLiteral","src":"16181:4:3","type":"","value":"0x40"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"16194:3:3","nodeType":"YulLiteral","src":"16194:3:3","type":"","value":"160"},{"name":"_ALLOWANCE_SLOT_SEED","nativeSrc":"16199:20:3","nodeType":"YulIdentifier","src":"16199:20:3"}],"functionName":{"name":"shl","nativeSrc":"16190:3:3","nodeType":"YulIdentifier","src":"16190:3:3"},"nativeSrc":"16190:30:3","nodeType":"YulFunctionCall","src":"16190:30:3"},{"name":"spender","nativeSrc":"16222:7:3","nodeType":"YulIdentifier","src":"16222:7:3"}],"functionName":{"name":"or","nativeSrc":"16187:2:3","nodeType":"YulIdentifier","src":"16187:2:3"},"nativeSrc":"16187:43:3","nodeType":"YulFunctionCall","src":"16187:43:3"}],"functionName":{"name":"mstore","nativeSrc":"16174:6:3","nodeType":"YulIdentifier","src":"16174:6:3"},"nativeSrc":"16174:57:3","nodeType":"YulFunctionCall","src":"16174:57:3"},"nativeSrc":"16174:57:3","nodeType":"YulExpressionStatement","src":"16174:57:3"},{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"16261:4:3","nodeType":"YulLiteral","src":"16261:4:3","type":"","value":"0x2c"},{"kind":"number","nativeSrc":"16267:4:3","nodeType":"YulLiteral","src":"16267:4:3","type":"","value":"0x34"}],"functionName":{"name":"keccak256","nativeSrc":"16251:9:3","nodeType":"YulIdentifier","src":"16251:9:3"},"nativeSrc":"16251:21:3","nodeType":"YulFunctionCall","src":"16251:21:3"},{"name":"value","nativeSrc":"16274:5:3","nodeType":"YulIdentifier","src":"16274:5:3"}],"functionName":{"name":"sstore","nativeSrc":"16244:6:3","nodeType":"YulIdentifier","src":"16244:6:3"},"nativeSrc":"16244:36:3","nodeType":"YulFunctionCall","src":"16244:36:3"},"nativeSrc":"16244:36:3","nodeType":"YulExpressionStatement","src":"16244:36:3"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"16344:1:3","nodeType":"YulIdentifier","src":"16344:1:3"},{"kind":"number","nativeSrc":"16347:4:3","nodeType":"YulLiteral","src":"16347:4:3","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"16340:3:3","nodeType":"YulIdentifier","src":"16340:3:3"},"nativeSrc":"16340:12:3","nodeType":"YulFunctionCall","src":"16340:12:3"},{"kind":"number","nativeSrc":"16354:4:3","nodeType":"YulLiteral","src":"16354:4:3","type":"","value":"0x20"},{"name":"_APPROVAL_EVENT_SIGNATURE","nativeSrc":"16360:25:3","nodeType":"YulIdentifier","src":"16360:25:3"},{"name":"owner","nativeSrc":"16387:5:3","nodeType":"YulIdentifier","src":"16387:5:3"},{"name":"spender","nativeSrc":"16394:7:3","nodeType":"YulIdentifier","src":"16394:7:3"}],"functionName":{"name":"log3","nativeSrc":"16335:4:3","nodeType":"YulIdentifier","src":"16335:4:3"},"nativeSrc":"16335:67:3","nodeType":"YulFunctionCall","src":"16335:67:3"},"nativeSrc":"16335:67:3","nodeType":"YulExpressionStatement","src":"16335:67:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16422:4:3","nodeType":"YulLiteral","src":"16422:4:3","type":"","value":"0x40"},{"name":"m","nativeSrc":"16428:1:3","nodeType":"YulIdentifier","src":"16428:1:3"}],"functionName":{"name":"mstore","nativeSrc":"16415:6:3","nodeType":"YulIdentifier","src":"16415:6:3"},"nativeSrc":"16415:15:3","nodeType":"YulFunctionCall","src":"16415:15:3"},"nativeSrc":"16415:15:3","nodeType":"YulExpressionStatement","src":"16415:15:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16486:4:3","nodeType":"YulLiteral","src":"16486:4:3","type":"","value":"0x60"},{"kind":"number","nativeSrc":"16492:1:3","nodeType":"YulLiteral","src":"16492:1:3","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"16479:6:3","nodeType":"YulIdentifier","src":"16479:6:3"},"nativeSrc":"16479:15:3","nodeType":"YulFunctionCall","src":"16479:15:3"},"nativeSrc":"16479:15:3","nodeType":"YulExpressionStatement","src":"16479:15:3"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1942,"isOffset":false,"isSlot":false,"src":"16199:20:3","valueSize":1},{"declaration":1930,"isOffset":false,"isSlot":false,"src":"16360:25:3","valueSize":1},{"declaration":1954,"isOffset":false,"isSlot":false,"src":"14541:16:3","valueSize":1},{"declaration":1950,"isOffset":false,"isSlot":false,"src":"14303:39:3","valueSize":1},{"declaration":1962,"isOffset":false,"isSlot":false,"src":"14845:16:3","valueSize":1},{"declaration":1958,"isOffset":false,"isSlot":false,"src":"14635:13:3","valueSize":1},{"declaration":2109,"isOffset":false,"isSlot":false,"src":"13896:8:3","valueSize":1},{"declaration":2109,"isOffset":false,"isSlot":false,"src":"15063:8:3","valueSize":1},{"declaration":2119,"isOffset":false,"isSlot":false,"src":"14592:8:3","valueSize":1},{"declaration":2103,"isOffset":false,"isSlot":false,"src":"14138:5:3","valueSize":1},{"declaration":2103,"isOffset":false,"isSlot":false,"src":"14163:5:3","valueSize":1},{"declaration":2103,"isOffset":false,"isSlot":false,"src":"14369:5:3","valueSize":1},{"declaration":2103,"isOffset":false,"isSlot":false,"src":"14896:5:3","valueSize":1},{"declaration":2103,"isOffset":false,"isSlot":false,"src":"15786:5:3","valueSize":1},{"declaration":2103,"isOffset":false,"isSlot":false,"src":"16387:5:3","valueSize":1},{"declaration":2113,"isOffset":false,"isSlot":false,"src":"15277:1:3","valueSize":1},{"declaration":2115,"isOffset":false,"isSlot":false,"src":"15305:1:3","valueSize":1},{"declaration":2105,"isOffset":false,"isSlot":false,"src":"14183:7:3","valueSize":1},{"declaration":2105,"isOffset":false,"isSlot":false,"src":"14210:7:3","valueSize":1},{"declaration":2105,"isOffset":false,"isSlot":false,"src":"14936:7:3","valueSize":1},{"declaration":2105,"isOffset":false,"isSlot":false,"src":"16222:7:3","valueSize":1},{"declaration":2105,"isOffset":false,"isSlot":false,"src":"16394:7:3","valueSize":1},{"declaration":2111,"isOffset":false,"isSlot":false,"src":"15248:1:3","valueSize":1},{"declaration":2107,"isOffset":false,"isSlot":false,"src":"14978:5:3","valueSize":1},{"declaration":2107,"isOffset":false,"isSlot":false,"src":"16274:5:3","valueSize":1}],"id":2140,"nodeType":"InlineAssembly","src":"13781:2752:3"}]},"documentation":{"id":2101,"nodeType":"StructuredDocumentation","src":"13146:173:3","text":"@dev Sets `value` as the allowance of `spender` over the tokens of `owner`,\n authorized by a signed approval by `owner`.\n Emits a {Approval} event."},"functionSelector":"d505accf","id":2142,"implemented":true,"kind":"function","modifiers":[],"name":"permit","nameLocation":"13333:6:3","nodeType":"FunctionDefinition","parameters":{"id":2116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2103,"mutability":"mutable","name":"owner","nameLocation":"13357:5:3","nodeType":"VariableDeclaration","scope":2142,"src":"13349:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2102,"name":"address","nodeType":"ElementaryTypeName","src":"13349:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2105,"mutability":"mutable","name":"spender","nameLocation":"13380:7:3","nodeType":"VariableDeclaration","scope":2142,"src":"13372:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2104,"name":"address","nodeType":"ElementaryTypeName","src":"13372:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2107,"mutability":"mutable","name":"value","nameLocation":"13405:5:3","nodeType":"VariableDeclaration","scope":2142,"src":"13397:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2106,"name":"uint256","nodeType":"ElementaryTypeName","src":"13397:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2109,"mutability":"mutable","name":"deadline","nameLocation":"13428:8:3","nodeType":"VariableDeclaration","scope":2142,"src":"13420:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2108,"name":"uint256","nodeType":"ElementaryTypeName","src":"13420:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2111,"mutability":"mutable","name":"v","nameLocation":"13452:1:3","nodeType":"VariableDeclaration","scope":2142,"src":"13446:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2110,"name":"uint8","nodeType":"ElementaryTypeName","src":"13446:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":2113,"mutability":"mutable","name":"r","nameLocation":"13471:1:3","nodeType":"VariableDeclaration","scope":2142,"src":"13463:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2112,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13463:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2115,"mutability":"mutable","name":"s","nameLocation":"13490:1:3","nodeType":"VariableDeclaration","scope":2142,"src":"13482:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2114,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13482:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"13339:158:3"},"returnParameters":{"id":2117,"nodeType":"ParameterList","parameters":[],"src":"13513:0:3"},"scope":2299,"src":"13324:3215:3","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":2171,"nodeType":"Block","src":"16693:620:3","statements":[{"assignments":[2149],"declarations":[{"constant":false,"id":2149,"mutability":"mutable","name":"nameHash","nameLocation":"16711:8:3","nodeType":"VariableDeclaration","scope":2171,"src":"16703:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2148,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16703:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2152,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2150,"name":"_constantNameHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"16722:17:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16722:19:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"16703:38:3"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":2158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2153,"name":"nameHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2149,"src":"16849:8:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16869:1:3","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":2155,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16861:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2154,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16861:7:3","typeDescriptions":{}}},"id":2157,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16861:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"16849:22:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2169,"nodeType":"IfStatement","src":"16845:63:3","trueBody":{"expression":{"id":2167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2159,"name":"nameHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2149,"src":"16873:8:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2163,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"16900:4:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":2164,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16900:6:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2162,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16894:5:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2161,"name":"bytes","nodeType":"ElementaryTypeName","src":"16894:5:3","typeDescriptions":{}}},"id":2165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16894:13:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2160,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"16884:9:3","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16884:24:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"16873:35:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2168,"nodeType":"ExpressionStatement","src":"16873:35:3"}},{"AST":{"nativeSrc":"16970:337:3","nodeType":"YulBlock","src":"16970:337:3","statements":[{"nativeSrc":"16984:20:3","nodeType":"YulVariableDeclaration","src":"16984:20:3","value":{"arguments":[{"kind":"number","nativeSrc":"16999:4:3","nodeType":"YulLiteral","src":"16999:4:3","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"16993:5:3","nodeType":"YulIdentifier","src":"16993:5:3"},"nativeSrc":"16993:11:3","nodeType":"YulFunctionCall","src":"16993:11:3"},"variables":[{"name":"m","nativeSrc":"16988:1:3","nodeType":"YulTypedName","src":"16988:1:3","type":""}]},{"expression":{"arguments":[{"name":"m","nativeSrc":"17057:1:3","nodeType":"YulIdentifier","src":"17057:1:3"},{"name":"_DOMAIN_TYPEHASH","nativeSrc":"17060:16:3","nodeType":"YulIdentifier","src":"17060:16:3"}],"functionName":{"name":"mstore","nativeSrc":"17050:6:3","nodeType":"YulIdentifier","src":"17050:6:3"},"nativeSrc":"17050:27:3","nodeType":"YulFunctionCall","src":"17050:27:3"},"nativeSrc":"17050:27:3","nodeType":"YulExpressionStatement","src":"17050:27:3"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"17101:1:3","nodeType":"YulIdentifier","src":"17101:1:3"},{"kind":"number","nativeSrc":"17104:4:3","nodeType":"YulLiteral","src":"17104:4:3","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"17097:3:3","nodeType":"YulIdentifier","src":"17097:3:3"},"nativeSrc":"17097:12:3","nodeType":"YulFunctionCall","src":"17097:12:3"},{"name":"nameHash","nativeSrc":"17111:8:3","nodeType":"YulIdentifier","src":"17111:8:3"}],"functionName":{"name":"mstore","nativeSrc":"17090:6:3","nodeType":"YulIdentifier","src":"17090:6:3"},"nativeSrc":"17090:30:3","nodeType":"YulFunctionCall","src":"17090:30:3"},"nativeSrc":"17090:30:3","nodeType":"YulExpressionStatement","src":"17090:30:3"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"17144:1:3","nodeType":"YulIdentifier","src":"17144:1:3"},{"kind":"number","nativeSrc":"17147:4:3","nodeType":"YulLiteral","src":"17147:4:3","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"17140:3:3","nodeType":"YulIdentifier","src":"17140:3:3"},"nativeSrc":"17140:12:3","nodeType":"YulFunctionCall","src":"17140:12:3"},{"name":"_VERSION_HASH","nativeSrc":"17154:13:3","nodeType":"YulIdentifier","src":"17154:13:3"}],"functionName":{"name":"mstore","nativeSrc":"17133:6:3","nodeType":"YulIdentifier","src":"17133:6:3"},"nativeSrc":"17133:35:3","nodeType":"YulFunctionCall","src":"17133:35:3"},"nativeSrc":"17133:35:3","nodeType":"YulExpressionStatement","src":"17133:35:3"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"17192:1:3","nodeType":"YulIdentifier","src":"17192:1:3"},{"kind":"number","nativeSrc":"17195:4:3","nodeType":"YulLiteral","src":"17195:4:3","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"17188:3:3","nodeType":"YulIdentifier","src":"17188:3:3"},"nativeSrc":"17188:12:3","nodeType":"YulFunctionCall","src":"17188:12:3"},{"arguments":[],"functionName":{"name":"chainid","nativeSrc":"17202:7:3","nodeType":"YulIdentifier","src":"17202:7:3"},"nativeSrc":"17202:9:3","nodeType":"YulFunctionCall","src":"17202:9:3"}],"functionName":{"name":"mstore","nativeSrc":"17181:6:3","nodeType":"YulIdentifier","src":"17181:6:3"},"nativeSrc":"17181:31:3","nodeType":"YulFunctionCall","src":"17181:31:3"},"nativeSrc":"17181:31:3","nodeType":"YulExpressionStatement","src":"17181:31:3"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"17236:1:3","nodeType":"YulIdentifier","src":"17236:1:3"},{"kind":"number","nativeSrc":"17239:4:3","nodeType":"YulLiteral","src":"17239:4:3","type":"","value":"0x80"}],"functionName":{"name":"add","nativeSrc":"17232:3:3","nodeType":"YulIdentifier","src":"17232:3:3"},"nativeSrc":"17232:12:3","nodeType":"YulFunctionCall","src":"17232:12:3"},{"arguments":[],"functionName":{"name":"address","nativeSrc":"17246:7:3","nodeType":"YulIdentifier","src":"17246:7:3"},"nativeSrc":"17246:9:3","nodeType":"YulFunctionCall","src":"17246:9:3"}],"functionName":{"name":"mstore","nativeSrc":"17225:6:3","nodeType":"YulIdentifier","src":"17225:6:3"},"nativeSrc":"17225:31:3","nodeType":"YulFunctionCall","src":"17225:31:3"},"nativeSrc":"17225:31:3","nodeType":"YulExpressionStatement","src":"17225:31:3"},{"nativeSrc":"17269:28:3","nodeType":"YulAssignment","src":"17269:28:3","value":{"arguments":[{"name":"m","nativeSrc":"17289:1:3","nodeType":"YulIdentifier","src":"17289:1:3"},{"kind":"number","nativeSrc":"17292:4:3","nodeType":"YulLiteral","src":"17292:4:3","type":"","value":"0xa0"}],"functionName":{"name":"keccak256","nativeSrc":"17279:9:3","nodeType":"YulIdentifier","src":"17279:9:3"},"nativeSrc":"17279:18:3","nodeType":"YulFunctionCall","src":"17279:18:3"},"variableNames":[{"name":"result","nativeSrc":"17269:6:3","nodeType":"YulIdentifier","src":"17269:6:3"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1954,"isOffset":false,"isSlot":false,"src":"17060:16:3","valueSize":1},{"declaration":1958,"isOffset":false,"isSlot":false,"src":"17154:13:3","valueSize":1},{"declaration":2149,"isOffset":false,"isSlot":false,"src":"17111:8:3","valueSize":1},{"declaration":2146,"isOffset":false,"isSlot":false,"src":"17269:6:3","valueSize":1}],"id":2170,"nodeType":"InlineAssembly","src":"16961:346:3"}]},"documentation":{"id":2143,"nodeType":"StructuredDocumentation","src":"16545:70:3","text":"@dev Returns the EIP-712 domain separator for the EIP-2612 permit."},"functionSelector":"3644e515","id":2172,"implemented":true,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nameLocation":"16629:16:3","nodeType":"FunctionDefinition","parameters":{"id":2144,"nodeType":"ParameterList","parameters":[],"src":"16645:2:3"},"returnParameters":{"id":2147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2146,"mutability":"mutable","name":"result","nameLocation":"16685:6:3","nodeType":"VariableDeclaration","scope":2172,"src":"16677:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2145,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16677:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"16676:16:3"},"scope":2299,"src":"16620:693:3","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":2199,"nodeType":"Block","src":"17777:1112:3","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17816:1:3","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":2182,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17808:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2181,"name":"address","nodeType":"ElementaryTypeName","src":"17808:7:3","typeDescriptions":{}}},"id":2184,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17808:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2185,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2175,"src":"17820:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2186,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2177,"src":"17824:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2180,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2287,"src":"17787:20:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17787:44:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2188,"nodeType":"ExpressionStatement","src":"17787:44:3"},{"AST":{"nativeSrc":"17893:937:3","nodeType":"YulBlock","src":"17893:937:3","statements":[{"nativeSrc":"17907:50:3","nodeType":"YulVariableDeclaration","src":"17907:50:3","value":{"arguments":[{"name":"_TOTAL_SUPPLY_SLOT","nativeSrc":"17938:18:3","nodeType":"YulIdentifier","src":"17938:18:3"}],"functionName":{"name":"sload","nativeSrc":"17932:5:3","nodeType":"YulIdentifier","src":"17932:5:3"},"nativeSrc":"17932:25:3","nodeType":"YulFunctionCall","src":"17932:25:3"},"variables":[{"name":"totalSupplyBefore","nativeSrc":"17911:17:3","nodeType":"YulTypedName","src":"17911:17:3","type":""}]},{"nativeSrc":"17970:54:3","nodeType":"YulVariableDeclaration","src":"17970:54:3","value":{"arguments":[{"name":"totalSupplyBefore","nativeSrc":"17998:17:3","nodeType":"YulIdentifier","src":"17998:17:3"},{"name":"amount","nativeSrc":"18017:6:3","nodeType":"YulIdentifier","src":"18017:6:3"}],"functionName":{"name":"add","nativeSrc":"17994:3:3","nodeType":"YulIdentifier","src":"17994:3:3"},"nativeSrc":"17994:30:3","nodeType":"YulFunctionCall","src":"17994:30:3"},"variables":[{"name":"totalSupplyAfter","nativeSrc":"17974:16:3","nodeType":"YulTypedName","src":"17974:16:3","type":""}]},{"body":{"nativeSrc":"18133:119:3","nodeType":"YulBlock","src":"18133:119:3","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"18158:4:3","nodeType":"YulLiteral","src":"18158:4:3","type":"","value":"0x00"},{"kind":"number","nativeSrc":"18164:10:3","nodeType":"YulLiteral","src":"18164:10:3","type":"","value":"0xe5cfe957"}],"functionName":{"name":"mstore","nativeSrc":"18151:6:3","nodeType":"YulIdentifier","src":"18151:6:3"},"nativeSrc":"18151:24:3","nodeType":"YulFunctionCall","src":"18151:24:3"},"nativeSrc":"18151:24:3","nodeType":"YulExpressionStatement","src":"18151:24:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"18227:4:3","nodeType":"YulLiteral","src":"18227:4:3","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"18233:4:3","nodeType":"YulLiteral","src":"18233:4:3","type":"","value":"0x04"}],"functionName":{"name":"revert","nativeSrc":"18220:6:3","nodeType":"YulIdentifier","src":"18220:6:3"},"nativeSrc":"18220:18:3","nodeType":"YulFunctionCall","src":"18220:18:3"},"nativeSrc":"18220:18:3","nodeType":"YulExpressionStatement","src":"18220:18:3"}]},"condition":{"arguments":[{"name":"totalSupplyAfter","nativeSrc":"18096:16:3","nodeType":"YulIdentifier","src":"18096:16:3"},{"name":"totalSupplyBefore","nativeSrc":"18114:17:3","nodeType":"YulIdentifier","src":"18114:17:3"}],"functionName":{"name":"lt","nativeSrc":"18093:2:3","nodeType":"YulIdentifier","src":"18093:2:3"},"nativeSrc":"18093:39:3","nodeType":"YulFunctionCall","src":"18093:39:3"},"nativeSrc":"18090:162:3","nodeType":"YulIf","src":"18090:162:3"},{"expression":{"arguments":[{"name":"_TOTAL_SUPPLY_SLOT","nativeSrc":"18319:18:3","nodeType":"YulIdentifier","src":"18319:18:3"},{"name":"totalSupplyAfter","nativeSrc":"18339:16:3","nodeType":"YulIdentifier","src":"18339:16:3"}],"functionName":{"name":"sstore","nativeSrc":"18312:6:3","nodeType":"YulIdentifier","src":"18312:6:3"},"nativeSrc":"18312:44:3","nodeType":"YulFunctionCall","src":"18312:44:3"},"nativeSrc":"18312:44:3","nodeType":"YulExpressionStatement","src":"18312:44:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"18436:4:3","nodeType":"YulLiteral","src":"18436:4:3","type":"","value":"0x0c"},{"name":"_BALANCE_SLOT_SEED","nativeSrc":"18442:18:3","nodeType":"YulIdentifier","src":"18442:18:3"}],"functionName":{"name":"mstore","nativeSrc":"18429:6:3","nodeType":"YulIdentifier","src":"18429:6:3"},"nativeSrc":"18429:32:3","nodeType":"YulFunctionCall","src":"18429:32:3"},"nativeSrc":"18429:32:3","nodeType":"YulExpressionStatement","src":"18429:32:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"18481:4:3","nodeType":"YulLiteral","src":"18481:4:3","type":"","value":"0x00"},{"name":"to","nativeSrc":"18487:2:3","nodeType":"YulIdentifier","src":"18487:2:3"}],"functionName":{"name":"mstore","nativeSrc":"18474:6:3","nodeType":"YulIdentifier","src":"18474:6:3"},"nativeSrc":"18474:16:3","nodeType":"YulFunctionCall","src":"18474:16:3"},"nativeSrc":"18474:16:3","nodeType":"YulExpressionStatement","src":"18474:16:3"},{"nativeSrc":"18503:42:3","nodeType":"YulVariableDeclaration","src":"18503:42:3","value":{"arguments":[{"kind":"number","nativeSrc":"18534:4:3","nodeType":"YulLiteral","src":"18534:4:3","type":"","value":"0x0c"},{"kind":"number","nativeSrc":"18540:4:3","nodeType":"YulLiteral","src":"18540:4:3","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"18524:9:3","nodeType":"YulIdentifier","src":"18524:9:3"},"nativeSrc":"18524:21:3","nodeType":"YulFunctionCall","src":"18524:21:3"},"variables":[{"name":"toBalanceSlot","nativeSrc":"18507:13:3","nodeType":"YulTypedName","src":"18507:13:3","type":""}]},{"expression":{"arguments":[{"name":"toBalanceSlot","nativeSrc":"18615:13:3","nodeType":"YulIdentifier","src":"18615:13:3"},{"arguments":[{"arguments":[{"name":"toBalanceSlot","nativeSrc":"18640:13:3","nodeType":"YulIdentifier","src":"18640:13:3"}],"functionName":{"name":"sload","nativeSrc":"18634:5:3","nodeType":"YulIdentifier","src":"18634:5:3"},"nativeSrc":"18634:20:3","nodeType":"YulFunctionCall","src":"18634:20:3"},{"name":"amount","nativeSrc":"18656:6:3","nodeType":"YulIdentifier","src":"18656:6:3"}],"functionName":{"name":"add","nativeSrc":"18630:3:3","nodeType":"YulIdentifier","src":"18630:3:3"},"nativeSrc":"18630:33:3","nodeType":"YulFunctionCall","src":"18630:33:3"}],"functionName":{"name":"sstore","nativeSrc":"18608:6:3","nodeType":"YulIdentifier","src":"18608:6:3"},"nativeSrc":"18608:56:3","nodeType":"YulFunctionCall","src":"18608:56:3"},"nativeSrc":"18608:56:3","nodeType":"YulExpressionStatement","src":"18608:56:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"18726:4:3","nodeType":"YulLiteral","src":"18726:4:3","type":"","value":"0x20"},{"name":"amount","nativeSrc":"18732:6:3","nodeType":"YulIdentifier","src":"18732:6:3"}],"functionName":{"name":"mstore","nativeSrc":"18719:6:3","nodeType":"YulIdentifier","src":"18719:6:3"},"nativeSrc":"18719:20:3","nodeType":"YulFunctionCall","src":"18719:20:3"},"nativeSrc":"18719:20:3","nodeType":"YulExpressionStatement","src":"18719:20:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"18757:4:3","nodeType":"YulLiteral","src":"18757:4:3","type":"","value":"0x20"},{"kind":"number","nativeSrc":"18763:4:3","nodeType":"YulLiteral","src":"18763:4:3","type":"","value":"0x20"},{"name":"_TRANSFER_EVENT_SIGNATURE","nativeSrc":"18769:25:3","nodeType":"YulIdentifier","src":"18769:25:3"},{"kind":"number","nativeSrc":"18796:1:3","nodeType":"YulLiteral","src":"18796:1:3","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"18803:2:3","nodeType":"YulLiteral","src":"18803:2:3","type":"","value":"96"},{"arguments":[{"kind":"number","nativeSrc":"18813:4:3","nodeType":"YulLiteral","src":"18813:4:3","type":"","value":"0x0c"}],"functionName":{"name":"mload","nativeSrc":"18807:5:3","nodeType":"YulIdentifier","src":"18807:5:3"},"nativeSrc":"18807:11:3","nodeType":"YulFunctionCall","src":"18807:11:3"}],"functionName":{"name":"shr","nativeSrc":"18799:3:3","nodeType":"YulIdentifier","src":"18799:3:3"},"nativeSrc":"18799:20:3","nodeType":"YulFunctionCall","src":"18799:20:3"}],"functionName":{"name":"log3","nativeSrc":"18752:4:3","nodeType":"YulIdentifier","src":"18752:4:3"},"nativeSrc":"18752:68:3","nodeType":"YulFunctionCall","src":"18752:68:3"},"nativeSrc":"18752:68:3","nodeType":"YulExpressionStatement","src":"18752:68:3"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1938,"isOffset":false,"isSlot":false,"src":"18442:18:3","valueSize":1},{"declaration":1934,"isOffset":false,"isSlot":false,"src":"17938:18:3","valueSize":1},{"declaration":1934,"isOffset":false,"isSlot":false,"src":"18319:18:3","valueSize":1},{"declaration":1926,"isOffset":false,"isSlot":false,"src":"18769:25:3","valueSize":1},{"declaration":2177,"isOffset":false,"isSlot":false,"src":"18017:6:3","valueSize":1},{"declaration":2177,"isOffset":false,"isSlot":false,"src":"18656:6:3","valueSize":1},{"declaration":2177,"isOffset":false,"isSlot":false,"src":"18732:6:3","valueSize":1},{"declaration":2175,"isOffset":false,"isSlot":false,"src":"18487:2:3","valueSize":1}],"id":2189,"nodeType":"InlineAssembly","src":"17884:946:3"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":2193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18867:1:3","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":2192,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18859:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2191,"name":"address","nodeType":"ElementaryTypeName","src":"18859:7:3","typeDescriptions":{}}},"id":2194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18859:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2195,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2175,"src":"18871:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2196,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2177,"src":"18875:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2190,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2298,"src":"18839:19:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18839:43:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2198,"nodeType":"ExpressionStatement","src":"18839:43:3"}]},"documentation":{"id":2173,"nodeType":"StructuredDocumentation","src":"17602:110:3","text":"@dev Mints `amount` tokens to `to`, increasing the total supply.\n Emits a {Transfer} event."},"id":2200,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"17726:5:3","nodeType":"FunctionDefinition","parameters":{"id":2178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2175,"mutability":"mutable","name":"to","nameLocation":"17740:2:3","nodeType":"VariableDeclaration","scope":2200,"src":"17732:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2174,"name":"address","nodeType":"ElementaryTypeName","src":"17732:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2177,"mutability":"mutable","name":"amount","nameLocation":"17752:6:3","nodeType":"VariableDeclaration","scope":2200,"src":"17744:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2176,"name":"uint256","nodeType":"ElementaryTypeName","src":"17744:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17731:28:3"},"returnParameters":{"id":2179,"nodeType":"ParameterList","parameters":[],"src":"17777:0:3"},"scope":2299,"src":"17717:1172:3","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2227,"nodeType":"Block","src":"19357:1057:3","statements":[{"expression":{"arguments":[{"id":2209,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2203,"src":"19388:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19402:1:3","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":2211,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19394:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2210,"name":"address","nodeType":"ElementaryTypeName","src":"19394:7:3","typeDescriptions":{}}},"id":2213,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19394:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2214,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2205,"src":"19406:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2208,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2287,"src":"19367:20:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19367:46:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2216,"nodeType":"ExpressionStatement","src":"19367:46:3"},{"AST":{"nativeSrc":"19475:878:3","nodeType":"YulBlock","src":"19475:878:3","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"19556:4:3","nodeType":"YulLiteral","src":"19556:4:3","type":"","value":"0x0c"},{"name":"_BALANCE_SLOT_SEED","nativeSrc":"19562:18:3","nodeType":"YulIdentifier","src":"19562:18:3"}],"functionName":{"name":"mstore","nativeSrc":"19549:6:3","nodeType":"YulIdentifier","src":"19549:6:3"},"nativeSrc":"19549:32:3","nodeType":"YulFunctionCall","src":"19549:32:3"},"nativeSrc":"19549:32:3","nodeType":"YulExpressionStatement","src":"19549:32:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"19601:4:3","nodeType":"YulLiteral","src":"19601:4:3","type":"","value":"0x00"},{"name":"from","nativeSrc":"19607:4:3","nodeType":"YulIdentifier","src":"19607:4:3"}],"functionName":{"name":"mstore","nativeSrc":"19594:6:3","nodeType":"YulIdentifier","src":"19594:6:3"},"nativeSrc":"19594:18:3","nodeType":"YulFunctionCall","src":"19594:18:3"},"nativeSrc":"19594:18:3","nodeType":"YulExpressionStatement","src":"19594:18:3"},{"nativeSrc":"19625:44:3","nodeType":"YulVariableDeclaration","src":"19625:44:3","value":{"arguments":[{"kind":"number","nativeSrc":"19658:4:3","nodeType":"YulLiteral","src":"19658:4:3","type":"","value":"0x0c"},{"kind":"number","nativeSrc":"19664:4:3","nodeType":"YulLiteral","src":"19664:4:3","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"19648:9:3","nodeType":"YulIdentifier","src":"19648:9:3"},"nativeSrc":"19648:21:3","nodeType":"YulFunctionCall","src":"19648:21:3"},"variables":[{"name":"fromBalanceSlot","nativeSrc":"19629:15:3","nodeType":"YulTypedName","src":"19629:15:3","type":""}]},{"nativeSrc":"19682:41:3","nodeType":"YulVariableDeclaration","src":"19682:41:3","value":{"arguments":[{"name":"fromBalanceSlot","nativeSrc":"19707:15:3","nodeType":"YulIdentifier","src":"19707:15:3"}],"functionName":{"name":"sload","nativeSrc":"19701:5:3","nodeType":"YulIdentifier","src":"19701:5:3"},"nativeSrc":"19701:22:3","nodeType":"YulFunctionCall","src":"19701:22:3"},"variables":[{"name":"fromBalance","nativeSrc":"19686:11:3","nodeType":"YulTypedName","src":"19686:11:3","type":""}]},{"body":{"nativeSrc":"19810:119:3","nodeType":"YulBlock","src":"19810:119:3","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"19835:4:3","nodeType":"YulLiteral","src":"19835:4:3","type":"","value":"0x00"},{"kind":"number","nativeSrc":"19841:10:3","nodeType":"YulLiteral","src":"19841:10:3","type":"","value":"0xf4d678b8"}],"functionName":{"name":"mstore","nativeSrc":"19828:6:3","nodeType":"YulIdentifier","src":"19828:6:3"},"nativeSrc":"19828:24:3","nodeType":"YulFunctionCall","src":"19828:24:3"},"nativeSrc":"19828:24:3","nodeType":"YulExpressionStatement","src":"19828:24:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"19904:4:3","nodeType":"YulLiteral","src":"19904:4:3","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"19910:4:3","nodeType":"YulLiteral","src":"19910:4:3","type":"","value":"0x04"}],"functionName":{"name":"revert","nativeSrc":"19897:6:3","nodeType":"YulIdentifier","src":"19897:6:3"},"nativeSrc":"19897:18:3","nodeType":"YulFunctionCall","src":"19897:18:3"},"nativeSrc":"19897:18:3","nodeType":"YulExpressionStatement","src":"19897:18:3"}]},"condition":{"arguments":[{"name":"amount","nativeSrc":"19789:6:3","nodeType":"YulIdentifier","src":"19789:6:3"},{"name":"fromBalance","nativeSrc":"19797:11:3","nodeType":"YulIdentifier","src":"19797:11:3"}],"functionName":{"name":"gt","nativeSrc":"19786:2:3","nodeType":"YulIdentifier","src":"19786:2:3"},"nativeSrc":"19786:23:3","nodeType":"YulFunctionCall","src":"19786:23:3"},"nativeSrc":"19783:146:3","nodeType":"YulIf","src":"19783:146:3"},{"expression":{"arguments":[{"name":"fromBalanceSlot","nativeSrc":"20004:15:3","nodeType":"YulIdentifier","src":"20004:15:3"},{"arguments":[{"name":"fromBalance","nativeSrc":"20025:11:3","nodeType":"YulIdentifier","src":"20025:11:3"},{"name":"amount","nativeSrc":"20038:6:3","nodeType":"YulIdentifier","src":"20038:6:3"}],"functionName":{"name":"sub","nativeSrc":"20021:3:3","nodeType":"YulIdentifier","src":"20021:3:3"},"nativeSrc":"20021:24:3","nodeType":"YulFunctionCall","src":"20021:24:3"}],"functionName":{"name":"sstore","nativeSrc":"19997:6:3","nodeType":"YulIdentifier","src":"19997:6:3"},"nativeSrc":"19997:49:3","nodeType":"YulFunctionCall","src":"19997:49:3"},"nativeSrc":"19997:49:3","nodeType":"YulExpressionStatement","src":"19997:49:3"},{"expression":{"arguments":[{"name":"_TOTAL_SUPPLY_SLOT","nativeSrc":"20126:18:3","nodeType":"YulIdentifier","src":"20126:18:3"},{"arguments":[{"arguments":[{"name":"_TOTAL_SUPPLY_SLOT","nativeSrc":"20156:18:3","nodeType":"YulIdentifier","src":"20156:18:3"}],"functionName":{"name":"sload","nativeSrc":"20150:5:3","nodeType":"YulIdentifier","src":"20150:5:3"},"nativeSrc":"20150:25:3","nodeType":"YulFunctionCall","src":"20150:25:3"},{"name":"amount","nativeSrc":"20177:6:3","nodeType":"YulIdentifier","src":"20177:6:3"}],"functionName":{"name":"sub","nativeSrc":"20146:3:3","nodeType":"YulIdentifier","src":"20146:3:3"},"nativeSrc":"20146:38:3","nodeType":"YulFunctionCall","src":"20146:38:3"}],"functionName":{"name":"sstore","nativeSrc":"20119:6:3","nodeType":"YulIdentifier","src":"20119:6:3"},"nativeSrc":"20119:66:3","nodeType":"YulFunctionCall","src":"20119:66:3"},"nativeSrc":"20119:66:3","nodeType":"YulExpressionStatement","src":"20119:66:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"20247:4:3","nodeType":"YulLiteral","src":"20247:4:3","type":"","value":"0x00"},{"name":"amount","nativeSrc":"20253:6:3","nodeType":"YulIdentifier","src":"20253:6:3"}],"functionName":{"name":"mstore","nativeSrc":"20240:6:3","nodeType":"YulIdentifier","src":"20240:6:3"},"nativeSrc":"20240:20:3","nodeType":"YulFunctionCall","src":"20240:20:3"},"nativeSrc":"20240:20:3","nodeType":"YulExpressionStatement","src":"20240:20:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"20278:4:3","nodeType":"YulLiteral","src":"20278:4:3","type":"","value":"0x00"},{"kind":"number","nativeSrc":"20284:4:3","nodeType":"YulLiteral","src":"20284:4:3","type":"","value":"0x20"},{"name":"_TRANSFER_EVENT_SIGNATURE","nativeSrc":"20290:25:3","nodeType":"YulIdentifier","src":"20290:25:3"},{"arguments":[{"kind":"number","nativeSrc":"20321:2:3","nodeType":"YulLiteral","src":"20321:2:3","type":"","value":"96"},{"arguments":[{"kind":"number","nativeSrc":"20329:2:3","nodeType":"YulLiteral","src":"20329:2:3","type":"","value":"96"},{"name":"from","nativeSrc":"20333:4:3","nodeType":"YulIdentifier","src":"20333:4:3"}],"functionName":{"name":"shl","nativeSrc":"20325:3:3","nodeType":"YulIdentifier","src":"20325:3:3"},"nativeSrc":"20325:13:3","nodeType":"YulFunctionCall","src":"20325:13:3"}],"functionName":{"name":"shr","nativeSrc":"20317:3:3","nodeType":"YulIdentifier","src":"20317:3:3"},"nativeSrc":"20317:22:3","nodeType":"YulFunctionCall","src":"20317:22:3"},{"kind":"number","nativeSrc":"20341:1:3","nodeType":"YulLiteral","src":"20341:1:3","type":"","value":"0"}],"functionName":{"name":"log3","nativeSrc":"20273:4:3","nodeType":"YulIdentifier","src":"20273:4:3"},"nativeSrc":"20273:70:3","nodeType":"YulFunctionCall","src":"20273:70:3"},"nativeSrc":"20273:70:3","nodeType":"YulExpressionStatement","src":"20273:70:3"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1938,"isOffset":false,"isSlot":false,"src":"19562:18:3","valueSize":1},{"declaration":1934,"isOffset":false,"isSlot":false,"src":"20126:18:3","valueSize":1},{"declaration":1934,"isOffset":false,"isSlot":false,"src":"20156:18:3","valueSize":1},{"declaration":1926,"isOffset":false,"isSlot":false,"src":"20290:25:3","valueSize":1},{"declaration":2205,"isOffset":false,"isSlot":false,"src":"19789:6:3","valueSize":1},{"declaration":2205,"isOffset":false,"isSlot":false,"src":"20038:6:3","valueSize":1},{"declaration":2205,"isOffset":false,"isSlot":false,"src":"20177:6:3","valueSize":1},{"declaration":2205,"isOffset":false,"isSlot":false,"src":"20253:6:3","valueSize":1},{"declaration":2203,"isOffset":false,"isSlot":false,"src":"19607:4:3","valueSize":1},{"declaration":2203,"isOffset":false,"isSlot":false,"src":"20333:4:3","valueSize":1}],"id":2217,"nodeType":"InlineAssembly","src":"19466:887:3"},{"expression":{"arguments":[{"id":2219,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2203,"src":"20382:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20396:1:3","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":2221,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20388:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2220,"name":"address","nodeType":"ElementaryTypeName","src":"20388:7:3","typeDescriptions":{}}},"id":2223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20388:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2224,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2205,"src":"20400:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2218,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2298,"src":"20362:19:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20362:45:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2226,"nodeType":"ExpressionStatement","src":"20362:45:3"}]},"documentation":{"id":2201,"nodeType":"StructuredDocumentation","src":"19178:112:3","text":"@dev Burns `amount` tokens from `from`, reducing the total supply.\n Emits a {Transfer} event."},"id":2228,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"19304:5:3","nodeType":"FunctionDefinition","parameters":{"id":2206,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2203,"mutability":"mutable","name":"from","nameLocation":"19318:4:3","nodeType":"VariableDeclaration","scope":2228,"src":"19310:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2202,"name":"address","nodeType":"ElementaryTypeName","src":"19310:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2205,"mutability":"mutable","name":"amount","nameLocation":"19332:6:3","nodeType":"VariableDeclaration","scope":2228,"src":"19324:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2204,"name":"uint256","nodeType":"ElementaryTypeName","src":"19324:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19309:30:3"},"returnParameters":{"id":2207,"nodeType":"ParameterList","parameters":[],"src":"19357:0:3"},"scope":2299,"src":"19295:1119:3","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2251,"nodeType":"Block","src":"20840:1318:3","statements":[{"expression":{"arguments":[{"id":2239,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2231,"src":"20871:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2240,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"20877:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2241,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2235,"src":"20881:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2238,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2287,"src":"20850:20:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20850:38:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2243,"nodeType":"ExpressionStatement","src":"20850:38:3"},{"AST":{"nativeSrc":"20950:1155:3","nodeType":"YulBlock","src":"20950:1155:3","statements":[{"nativeSrc":"20964:26:3","nodeType":"YulVariableDeclaration","src":"20964:26:3","value":{"arguments":[{"kind":"number","nativeSrc":"20981:2:3","nodeType":"YulLiteral","src":"20981:2:3","type":"","value":"96"},{"name":"from","nativeSrc":"20985:4:3","nodeType":"YulIdentifier","src":"20985:4:3"}],"functionName":{"name":"shl","nativeSrc":"20977:3:3","nodeType":"YulIdentifier","src":"20977:3:3"},"nativeSrc":"20977:13:3","nodeType":"YulFunctionCall","src":"20977:13:3"},"variables":[{"name":"from_","nativeSrc":"20968:5:3","nodeType":"YulTypedName","src":"20968:5:3","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"21070:4:3","nodeType":"YulLiteral","src":"21070:4:3","type":"","value":"0x0c"},{"arguments":[{"name":"from_","nativeSrc":"21079:5:3","nodeType":"YulIdentifier","src":"21079:5:3"},{"name":"_BALANCE_SLOT_SEED","nativeSrc":"21086:18:3","nodeType":"YulIdentifier","src":"21086:18:3"}],"functionName":{"name":"or","nativeSrc":"21076:2:3","nodeType":"YulIdentifier","src":"21076:2:3"},"nativeSrc":"21076:29:3","nodeType":"YulFunctionCall","src":"21076:29:3"}],"functionName":{"name":"mstore","nativeSrc":"21063:6:3","nodeType":"YulIdentifier","src":"21063:6:3"},"nativeSrc":"21063:43:3","nodeType":"YulFunctionCall","src":"21063:43:3"},"nativeSrc":"21063:43:3","nodeType":"YulExpressionStatement","src":"21063:43:3"},{"nativeSrc":"21119:44:3","nodeType":"YulVariableDeclaration","src":"21119:44:3","value":{"arguments":[{"kind":"number","nativeSrc":"21152:4:3","nodeType":"YulLiteral","src":"21152:4:3","type":"","value":"0x0c"},{"kind":"number","nativeSrc":"21158:4:3","nodeType":"YulLiteral","src":"21158:4:3","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"21142:9:3","nodeType":"YulIdentifier","src":"21142:9:3"},"nativeSrc":"21142:21:3","nodeType":"YulFunctionCall","src":"21142:21:3"},"variables":[{"name":"fromBalanceSlot","nativeSrc":"21123:15:3","nodeType":"YulTypedName","src":"21123:15:3","type":""}]},{"nativeSrc":"21176:41:3","nodeType":"YulVariableDeclaration","src":"21176:41:3","value":{"arguments":[{"name":"fromBalanceSlot","nativeSrc":"21201:15:3","nodeType":"YulIdentifier","src":"21201:15:3"}],"functionName":{"name":"sload","nativeSrc":"21195:5:3","nodeType":"YulIdentifier","src":"21195:5:3"},"nativeSrc":"21195:22:3","nodeType":"YulFunctionCall","src":"21195:22:3"},"variables":[{"name":"fromBalance","nativeSrc":"21180:11:3","nodeType":"YulTypedName","src":"21180:11:3","type":""}]},{"body":{"nativeSrc":"21304:119:3","nodeType":"YulBlock","src":"21304:119:3","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"21329:4:3","nodeType":"YulLiteral","src":"21329:4:3","type":"","value":"0x00"},{"kind":"number","nativeSrc":"21335:10:3","nodeType":"YulLiteral","src":"21335:10:3","type":"","value":"0xf4d678b8"}],"functionName":{"name":"mstore","nativeSrc":"21322:6:3","nodeType":"YulIdentifier","src":"21322:6:3"},"nativeSrc":"21322:24:3","nodeType":"YulFunctionCall","src":"21322:24:3"},"nativeSrc":"21322:24:3","nodeType":"YulExpressionStatement","src":"21322:24:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"21398:4:3","nodeType":"YulLiteral","src":"21398:4:3","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"21404:4:3","nodeType":"YulLiteral","src":"21404:4:3","type":"","value":"0x04"}],"functionName":{"name":"revert","nativeSrc":"21391:6:3","nodeType":"YulIdentifier","src":"21391:6:3"},"nativeSrc":"21391:18:3","nodeType":"YulFunctionCall","src":"21391:18:3"},"nativeSrc":"21391:18:3","nodeType":"YulExpressionStatement","src":"21391:18:3"}]},"condition":{"arguments":[{"name":"amount","nativeSrc":"21283:6:3","nodeType":"YulIdentifier","src":"21283:6:3"},{"name":"fromBalance","nativeSrc":"21291:11:3","nodeType":"YulIdentifier","src":"21291:11:3"}],"functionName":{"name":"gt","nativeSrc":"21280:2:3","nodeType":"YulIdentifier","src":"21280:2:3"},"nativeSrc":"21280:23:3","nodeType":"YulFunctionCall","src":"21280:23:3"},"nativeSrc":"21277:146:3","nodeType":"YulIf","src":"21277:146:3"},{"expression":{"arguments":[{"name":"fromBalanceSlot","nativeSrc":"21498:15:3","nodeType":"YulIdentifier","src":"21498:15:3"},{"arguments":[{"name":"fromBalance","nativeSrc":"21519:11:3","nodeType":"YulIdentifier","src":"21519:11:3"},{"name":"amount","nativeSrc":"21532:6:3","nodeType":"YulIdentifier","src":"21532:6:3"}],"functionName":{"name":"sub","nativeSrc":"21515:3:3","nodeType":"YulIdentifier","src":"21515:3:3"},"nativeSrc":"21515:24:3","nodeType":"YulFunctionCall","src":"21515:24:3"}],"functionName":{"name":"sstore","nativeSrc":"21491:6:3","nodeType":"YulIdentifier","src":"21491:6:3"},"nativeSrc":"21491:49:3","nodeType":"YulFunctionCall","src":"21491:49:3"},"nativeSrc":"21491:49:3","nodeType":"YulExpressionStatement","src":"21491:49:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"21609:4:3","nodeType":"YulLiteral","src":"21609:4:3","type":"","value":"0x00"},{"name":"to","nativeSrc":"21615:2:3","nodeType":"YulIdentifier","src":"21615:2:3"}],"functionName":{"name":"mstore","nativeSrc":"21602:6:3","nodeType":"YulIdentifier","src":"21602:6:3"},"nativeSrc":"21602:16:3","nodeType":"YulFunctionCall","src":"21602:16:3"},"nativeSrc":"21602:16:3","nodeType":"YulExpressionStatement","src":"21602:16:3"},{"nativeSrc":"21631:42:3","nodeType":"YulVariableDeclaration","src":"21631:42:3","value":{"arguments":[{"kind":"number","nativeSrc":"21662:4:3","nodeType":"YulLiteral","src":"21662:4:3","type":"","value":"0x0c"},{"kind":"number","nativeSrc":"21668:4:3","nodeType":"YulLiteral","src":"21668:4:3","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nativeSrc":"21652:9:3","nodeType":"YulIdentifier","src":"21652:9:3"},"nativeSrc":"21652:21:3","nodeType":"YulFunctionCall","src":"21652:21:3"},"variables":[{"name":"toBalanceSlot","nativeSrc":"21635:13:3","nodeType":"YulTypedName","src":"21635:13:3","type":""}]},{"expression":{"arguments":[{"name":"toBalanceSlot","nativeSrc":"21877:13:3","nodeType":"YulIdentifier","src":"21877:13:3"},{"arguments":[{"arguments":[{"name":"toBalanceSlot","nativeSrc":"21902:13:3","nodeType":"YulIdentifier","src":"21902:13:3"}],"functionName":{"name":"sload","nativeSrc":"21896:5:3","nodeType":"YulIdentifier","src":"21896:5:3"},"nativeSrc":"21896:20:3","nodeType":"YulFunctionCall","src":"21896:20:3"},{"name":"amount","nativeSrc":"21918:6:3","nodeType":"YulIdentifier","src":"21918:6:3"}],"functionName":{"name":"add","nativeSrc":"21892:3:3","nodeType":"YulIdentifier","src":"21892:3:3"},"nativeSrc":"21892:33:3","nodeType":"YulFunctionCall","src":"21892:33:3"}],"functionName":{"name":"sstore","nativeSrc":"21870:6:3","nodeType":"YulIdentifier","src":"21870:6:3"},"nativeSrc":"21870:56:3","nodeType":"YulFunctionCall","src":"21870:56:3"},"nativeSrc":"21870:56:3","nodeType":"YulExpressionStatement","src":"21870:56:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"21988:4:3","nodeType":"YulLiteral","src":"21988:4:3","type":"","value":"0x20"},{"name":"amount","nativeSrc":"21994:6:3","nodeType":"YulIdentifier","src":"21994:6:3"}],"functionName":{"name":"mstore","nativeSrc":"21981:6:3","nodeType":"YulIdentifier","src":"21981:6:3"},"nativeSrc":"21981:20:3","nodeType":"YulFunctionCall","src":"21981:20:3"},"nativeSrc":"21981:20:3","nodeType":"YulExpressionStatement","src":"21981:20:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"22019:4:3","nodeType":"YulLiteral","src":"22019:4:3","type":"","value":"0x20"},{"kind":"number","nativeSrc":"22025:4:3","nodeType":"YulLiteral","src":"22025:4:3","type":"","value":"0x20"},{"name":"_TRANSFER_EVENT_SIGNATURE","nativeSrc":"22031:25:3","nodeType":"YulIdentifier","src":"22031:25:3"},{"arguments":[{"kind":"number","nativeSrc":"22062:2:3","nodeType":"YulLiteral","src":"22062:2:3","type":"","value":"96"},{"name":"from_","nativeSrc":"22066:5:3","nodeType":"YulIdentifier","src":"22066:5:3"}],"functionName":{"name":"shr","nativeSrc":"22058:3:3","nodeType":"YulIdentifier","src":"22058:3:3"},"nativeSrc":"22058:14:3","nodeType":"YulFunctionCall","src":"22058:14:3"},{"arguments":[{"kind":"number","nativeSrc":"22078:2:3","nodeType":"YulLiteral","src":"22078:2:3","type":"","value":"96"},{"arguments":[{"kind":"number","nativeSrc":"22088:4:3","nodeType":"YulLiteral","src":"22088:4:3","type":"","value":"0x0c"}],"functionName":{"name":"mload","nativeSrc":"22082:5:3","nodeType":"YulIdentifier","src":"22082:5:3"},"nativeSrc":"22082:11:3","nodeType":"YulFunctionCall","src":"22082:11:3"}],"functionName":{"name":"shr","nativeSrc":"22074:3:3","nodeType":"YulIdentifier","src":"22074:3:3"},"nativeSrc":"22074:20:3","nodeType":"YulFunctionCall","src":"22074:20:3"}],"functionName":{"name":"log3","nativeSrc":"22014:4:3","nodeType":"YulIdentifier","src":"22014:4:3"},"nativeSrc":"22014:81:3","nodeType":"YulFunctionCall","src":"22014:81:3"},"nativeSrc":"22014:81:3","nodeType":"YulExpressionStatement","src":"22014:81:3"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1938,"isOffset":false,"isSlot":false,"src":"21086:18:3","valueSize":1},{"declaration":1926,"isOffset":false,"isSlot":false,"src":"22031:25:3","valueSize":1},{"declaration":2235,"isOffset":false,"isSlot":false,"src":"21283:6:3","valueSize":1},{"declaration":2235,"isOffset":false,"isSlot":false,"src":"21532:6:3","valueSize":1},{"declaration":2235,"isOffset":false,"isSlot":false,"src":"21918:6:3","valueSize":1},{"declaration":2235,"isOffset":false,"isSlot":false,"src":"21994:6:3","valueSize":1},{"declaration":2231,"isOffset":false,"isSlot":false,"src":"20985:4:3","valueSize":1},{"declaration":2233,"isOffset":false,"isSlot":false,"src":"21615:2:3","valueSize":1}],"id":2244,"nodeType":"InlineAssembly","src":"20941:1164:3"},{"expression":{"arguments":[{"id":2246,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2231,"src":"22134:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2247,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"22140:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2248,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2235,"src":"22144:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2245,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2298,"src":"22114:19:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22114:37:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2250,"nodeType":"ExpressionStatement","src":"22114:37:3"}]},"documentation":{"id":2229,"nodeType":"StructuredDocumentation","src":"20703:54:3","text":"@dev Moves `amount` of tokens from `from` to `to`."},"id":2252,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"20771:9:3","nodeType":"FunctionDefinition","parameters":{"id":2236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2231,"mutability":"mutable","name":"from","nameLocation":"20789:4:3","nodeType":"VariableDeclaration","scope":2252,"src":"20781:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2230,"name":"address","nodeType":"ElementaryTypeName","src":"20781:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2233,"mutability":"mutable","name":"to","nameLocation":"20803:2:3","nodeType":"VariableDeclaration","scope":2252,"src":"20795:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2232,"name":"address","nodeType":"ElementaryTypeName","src":"20795:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2235,"mutability":"mutable","name":"amount","nameLocation":"20815:6:3","nodeType":"VariableDeclaration","scope":2252,"src":"20807:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2234,"name":"uint256","nodeType":"ElementaryTypeName","src":"20807:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20780:42:3"},"returnParameters":{"id":2237,"nodeType":"ParameterList","parameters":[],"src":"20840:0:3"},"scope":2299,"src":"20762:1396:3","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2263,"nodeType":"Block","src":"22622:857:3","statements":[{"AST":{"nativeSrc":"22684:789:3","nodeType":"YulBlock","src":"22684:789:3","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"22767:4:3","nodeType":"YulLiteral","src":"22767:4:3","type":"","value":"0x20"},{"name":"spender","nativeSrc":"22773:7:3","nodeType":"YulIdentifier","src":"22773:7:3"}],"functionName":{"name":"mstore","nativeSrc":"22760:6:3","nodeType":"YulIdentifier","src":"22760:6:3"},"nativeSrc":"22760:21:3","nodeType":"YulFunctionCall","src":"22760:21:3"},"nativeSrc":"22760:21:3","nodeType":"YulExpressionStatement","src":"22760:21:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"22801:4:3","nodeType":"YulLiteral","src":"22801:4:3","type":"","value":"0x0c"},{"name":"_ALLOWANCE_SLOT_SEED","nativeSrc":"22807:20:3","nodeType":"YulIdentifier","src":"22807:20:3"}],"functionName":{"name":"mstore","nativeSrc":"22794:6:3","nodeType":"YulIdentifier","src":"22794:6:3"},"nativeSrc":"22794:34:3","nodeType":"YulFunctionCall","src":"22794:34:3"},"nativeSrc":"22794:34:3","nodeType":"YulExpressionStatement","src":"22794:34:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"22848:4:3","nodeType":"YulLiteral","src":"22848:4:3","type":"","value":"0x00"},{"name":"owner","nativeSrc":"22854:5:3","nodeType":"YulIdentifier","src":"22854:5:3"}],"functionName":{"name":"mstore","nativeSrc":"22841:6:3","nodeType":"YulIdentifier","src":"22841:6:3"},"nativeSrc":"22841:19:3","nodeType":"YulFunctionCall","src":"22841:19:3"},"nativeSrc":"22841:19:3","nodeType":"YulExpressionStatement","src":"22841:19:3"},{"nativeSrc":"22873:42:3","nodeType":"YulVariableDeclaration","src":"22873:42:3","value":{"arguments":[{"kind":"number","nativeSrc":"22904:4:3","nodeType":"YulLiteral","src":"22904:4:3","type":"","value":"0x0c"},{"kind":"number","nativeSrc":"22910:4:3","nodeType":"YulLiteral","src":"22910:4:3","type":"","value":"0x34"}],"functionName":{"name":"keccak256","nativeSrc":"22894:9:3","nodeType":"YulIdentifier","src":"22894:9:3"},"nativeSrc":"22894:21:3","nodeType":"YulFunctionCall","src":"22894:21:3"},"variables":[{"name":"allowanceSlot","nativeSrc":"22877:13:3","nodeType":"YulTypedName","src":"22877:13:3","type":""}]},{"nativeSrc":"22928:38:3","nodeType":"YulVariableDeclaration","src":"22928:38:3","value":{"arguments":[{"name":"allowanceSlot","nativeSrc":"22952:13:3","nodeType":"YulIdentifier","src":"22952:13:3"}],"functionName":{"name":"sload","nativeSrc":"22946:5:3","nodeType":"YulIdentifier","src":"22946:5:3"},"nativeSrc":"22946:20:3","nodeType":"YulFunctionCall","src":"22946:20:3"},"variables":[{"name":"allowance_","nativeSrc":"22932:10:3","nodeType":"YulTypedName","src":"22932:10:3","type":""}]},{"body":{"nativeSrc":"23067:396:3","nodeType":"YulBlock","src":"23067:396:3","statements":[{"body":{"nativeSrc":"23192:133:3","nodeType":"YulBlock","src":"23192:133:3","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"23221:4:3","nodeType":"YulLiteral","src":"23221:4:3","type":"","value":"0x00"},{"kind":"number","nativeSrc":"23227:10:3","nodeType":"YulLiteral","src":"23227:10:3","type":"","value":"0x13be252b"}],"functionName":{"name":"mstore","nativeSrc":"23214:6:3","nodeType":"YulIdentifier","src":"23214:6:3"},"nativeSrc":"23214:24:3","nodeType":"YulFunctionCall","src":"23214:24:3"},"nativeSrc":"23214:24:3","nodeType":"YulExpressionStatement","src":"23214:24:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"23296:4:3","nodeType":"YulLiteral","src":"23296:4:3","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"23302:4:3","nodeType":"YulLiteral","src":"23302:4:3","type":"","value":"0x04"}],"functionName":{"name":"revert","nativeSrc":"23289:6:3","nodeType":"YulIdentifier","src":"23289:6:3"},"nativeSrc":"23289:18:3","nodeType":"YulFunctionCall","src":"23289:18:3"},"nativeSrc":"23289:18:3","nodeType":"YulExpressionStatement","src":"23289:18:3"}]},"condition":{"arguments":[{"name":"amount","nativeSrc":"23172:6:3","nodeType":"YulIdentifier","src":"23172:6:3"},{"name":"allowance_","nativeSrc":"23180:10:3","nodeType":"YulIdentifier","src":"23180:10:3"}],"functionName":{"name":"gt","nativeSrc":"23169:2:3","nodeType":"YulIdentifier","src":"23169:2:3"},"nativeSrc":"23169:22:3","nodeType":"YulFunctionCall","src":"23169:22:3"},"nativeSrc":"23166:159:3","nodeType":"YulIf","src":"23166:159:3"},{"expression":{"arguments":[{"name":"allowanceSlot","nativeSrc":"23410:13:3","nodeType":"YulIdentifier","src":"23410:13:3"},{"arguments":[{"name":"allowance_","nativeSrc":"23429:10:3","nodeType":"YulIdentifier","src":"23429:10:3"},{"name":"amount","nativeSrc":"23441:6:3","nodeType":"YulIdentifier","src":"23441:6:3"}],"functionName":{"name":"sub","nativeSrc":"23425:3:3","nodeType":"YulIdentifier","src":"23425:3:3"},"nativeSrc":"23425:23:3","nodeType":"YulFunctionCall","src":"23425:23:3"}],"functionName":{"name":"sstore","nativeSrc":"23403:6:3","nodeType":"YulIdentifier","src":"23403:6:3"},"nativeSrc":"23403:46:3","nodeType":"YulFunctionCall","src":"23403:46:3"},"nativeSrc":"23403:46:3","nodeType":"YulExpressionStatement","src":"23403:46:3"}]},"condition":{"arguments":[{"name":"allowance_","nativeSrc":"23052:10:3","nodeType":"YulIdentifier","src":"23052:10:3"},{"kind":"number","nativeSrc":"23064:1:3","nodeType":"YulLiteral","src":"23064:1:3","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"23048:3:3","nodeType":"YulIdentifier","src":"23048:3:3"},"nativeSrc":"23048:18:3","nodeType":"YulFunctionCall","src":"23048:18:3"},"nativeSrc":"23045:418:3","nodeType":"YulIf","src":"23045:418:3"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1942,"isOffset":false,"isSlot":false,"src":"22807:20:3","valueSize":1},{"declaration":2259,"isOffset":false,"isSlot":false,"src":"23172:6:3","valueSize":1},{"declaration":2259,"isOffset":false,"isSlot":false,"src":"23441:6:3","valueSize":1},{"declaration":2255,"isOffset":false,"isSlot":false,"src":"22854:5:3","valueSize":1},{"declaration":2257,"isOffset":false,"isSlot":false,"src":"22773:7:3","valueSize":1}],"id":2262,"nodeType":"InlineAssembly","src":"22675:798:3"}]},"documentation":{"id":2253,"nodeType":"StructuredDocumentation","src":"22447:80:3","text":"@dev Updates the allowance of `owner` for `spender` based on spent `amount`."},"id":2264,"implemented":true,"kind":"function","modifiers":[],"name":"_spendAllowance","nameLocation":"22541:15:3","nodeType":"FunctionDefinition","parameters":{"id":2260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2255,"mutability":"mutable","name":"owner","nameLocation":"22565:5:3","nodeType":"VariableDeclaration","scope":2264,"src":"22557:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2254,"name":"address","nodeType":"ElementaryTypeName","src":"22557:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2257,"mutability":"mutable","name":"spender","nameLocation":"22580:7:3","nodeType":"VariableDeclaration","scope":2264,"src":"22572:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2256,"name":"address","nodeType":"ElementaryTypeName","src":"22572:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2259,"mutability":"mutable","name":"amount","nameLocation":"22597:6:3","nodeType":"VariableDeclaration","scope":2264,"src":"22589:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2258,"name":"uint256","nodeType":"ElementaryTypeName","src":"22589:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22556:48:3"},"returnParameters":{"id":2261,"nodeType":"ParameterList","parameters":[],"src":"22622:0:3"},"scope":2299,"src":"22532:947:3","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2275,"nodeType":"Block","src":"23695:497:3","statements":[{"AST":{"nativeSrc":"23757:429:3","nodeType":"YulBlock","src":"23757:429:3","statements":[{"nativeSrc":"23771:28:3","nodeType":"YulVariableDeclaration","src":"23771:28:3","value":{"arguments":[{"kind":"number","nativeSrc":"23789:2:3","nodeType":"YulLiteral","src":"23789:2:3","type":"","value":"96"},{"name":"owner","nativeSrc":"23793:5:3","nodeType":"YulIdentifier","src":"23793:5:3"}],"functionName":{"name":"shl","nativeSrc":"23785:3:3","nodeType":"YulIdentifier","src":"23785:3:3"},"nativeSrc":"23785:14:3","nodeType":"YulFunctionCall","src":"23785:14:3"},"variables":[{"name":"owner_","nativeSrc":"23775:6:3","nodeType":"YulTypedName","src":"23775:6:3","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"23883:4:3","nodeType":"YulLiteral","src":"23883:4:3","type":"","value":"0x20"},{"name":"spender","nativeSrc":"23889:7:3","nodeType":"YulIdentifier","src":"23889:7:3"}],"functionName":{"name":"mstore","nativeSrc":"23876:6:3","nodeType":"YulIdentifier","src":"23876:6:3"},"nativeSrc":"23876:21:3","nodeType":"YulFunctionCall","src":"23876:21:3"},"nativeSrc":"23876:21:3","nodeType":"YulExpressionStatement","src":"23876:21:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"23917:4:3","nodeType":"YulLiteral","src":"23917:4:3","type":"","value":"0x0c"},{"arguments":[{"name":"owner_","nativeSrc":"23926:6:3","nodeType":"YulIdentifier","src":"23926:6:3"},{"name":"_ALLOWANCE_SLOT_SEED","nativeSrc":"23934:20:3","nodeType":"YulIdentifier","src":"23934:20:3"}],"functionName":{"name":"or","nativeSrc":"23923:2:3","nodeType":"YulIdentifier","src":"23923:2:3"},"nativeSrc":"23923:32:3","nodeType":"YulFunctionCall","src":"23923:32:3"}],"functionName":{"name":"mstore","nativeSrc":"23910:6:3","nodeType":"YulIdentifier","src":"23910:6:3"},"nativeSrc":"23910:46:3","nodeType":"YulFunctionCall","src":"23910:46:3"},"nativeSrc":"23910:46:3","nodeType":"YulExpressionStatement","src":"23910:46:3"},{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"23986:4:3","nodeType":"YulLiteral","src":"23986:4:3","type":"","value":"0x0c"},{"kind":"number","nativeSrc":"23992:4:3","nodeType":"YulLiteral","src":"23992:4:3","type":"","value":"0x34"}],"functionName":{"name":"keccak256","nativeSrc":"23976:9:3","nodeType":"YulIdentifier","src":"23976:9:3"},"nativeSrc":"23976:21:3","nodeType":"YulFunctionCall","src":"23976:21:3"},{"name":"amount","nativeSrc":"23999:6:3","nodeType":"YulIdentifier","src":"23999:6:3"}],"functionName":{"name":"sstore","nativeSrc":"23969:6:3","nodeType":"YulIdentifier","src":"23969:6:3"},"nativeSrc":"23969:37:3","nodeType":"YulFunctionCall","src":"23969:37:3"},"nativeSrc":"23969:37:3","nodeType":"YulExpressionStatement","src":"23969:37:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"24068:4:3","nodeType":"YulLiteral","src":"24068:4:3","type":"","value":"0x00"},{"name":"amount","nativeSrc":"24074:6:3","nodeType":"YulIdentifier","src":"24074:6:3"}],"functionName":{"name":"mstore","nativeSrc":"24061:6:3","nodeType":"YulIdentifier","src":"24061:6:3"},"nativeSrc":"24061:20:3","nodeType":"YulFunctionCall","src":"24061:20:3"},"nativeSrc":"24061:20:3","nodeType":"YulExpressionStatement","src":"24061:20:3"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"24099:4:3","nodeType":"YulLiteral","src":"24099:4:3","type":"","value":"0x00"},{"kind":"number","nativeSrc":"24105:4:3","nodeType":"YulLiteral","src":"24105:4:3","type":"","value":"0x20"},{"name":"_APPROVAL_EVENT_SIGNATURE","nativeSrc":"24111:25:3","nodeType":"YulIdentifier","src":"24111:25:3"},{"arguments":[{"kind":"number","nativeSrc":"24142:2:3","nodeType":"YulLiteral","src":"24142:2:3","type":"","value":"96"},{"name":"owner_","nativeSrc":"24146:6:3","nodeType":"YulIdentifier","src":"24146:6:3"}],"functionName":{"name":"shr","nativeSrc":"24138:3:3","nodeType":"YulIdentifier","src":"24138:3:3"},"nativeSrc":"24138:15:3","nodeType":"YulFunctionCall","src":"24138:15:3"},{"arguments":[{"kind":"number","nativeSrc":"24159:2:3","nodeType":"YulLiteral","src":"24159:2:3","type":"","value":"96"},{"arguments":[{"kind":"number","nativeSrc":"24169:4:3","nodeType":"YulLiteral","src":"24169:4:3","type":"","value":"0x2c"}],"functionName":{"name":"mload","nativeSrc":"24163:5:3","nodeType":"YulIdentifier","src":"24163:5:3"},"nativeSrc":"24163:11:3","nodeType":"YulFunctionCall","src":"24163:11:3"}],"functionName":{"name":"shr","nativeSrc":"24155:3:3","nodeType":"YulIdentifier","src":"24155:3:3"},"nativeSrc":"24155:20:3","nodeType":"YulFunctionCall","src":"24155:20:3"}],"functionName":{"name":"log3","nativeSrc":"24094:4:3","nodeType":"YulIdentifier","src":"24094:4:3"},"nativeSrc":"24094:82:3","nodeType":"YulFunctionCall","src":"24094:82:3"},"nativeSrc":"24094:82:3","nodeType":"YulExpressionStatement","src":"24094:82:3"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1942,"isOffset":false,"isSlot":false,"src":"23934:20:3","valueSize":1},{"declaration":1930,"isOffset":false,"isSlot":false,"src":"24111:25:3","valueSize":1},{"declaration":2271,"isOffset":false,"isSlot":false,"src":"23999:6:3","valueSize":1},{"declaration":2271,"isOffset":false,"isSlot":false,"src":"24074:6:3","valueSize":1},{"declaration":2267,"isOffset":false,"isSlot":false,"src":"23793:5:3","valueSize":1},{"declaration":2269,"isOffset":false,"isSlot":false,"src":"23889:7:3","valueSize":1}],"id":2274,"nodeType":"InlineAssembly","src":"23748:438:3"}]},"documentation":{"id":2265,"nodeType":"StructuredDocumentation","src":"23485:122:3","text":"@dev Sets `amount` as the allowance of `spender` over the tokens of `owner`.\n Emits a {Approval} event."},"id":2276,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"23621:8:3","nodeType":"FunctionDefinition","parameters":{"id":2272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2267,"mutability":"mutable","name":"owner","nameLocation":"23638:5:3","nodeType":"VariableDeclaration","scope":2276,"src":"23630:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2266,"name":"address","nodeType":"ElementaryTypeName","src":"23630:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2269,"mutability":"mutable","name":"spender","nameLocation":"23653:7:3","nodeType":"VariableDeclaration","scope":2276,"src":"23645:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2268,"name":"address","nodeType":"ElementaryTypeName","src":"23645:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2271,"mutability":"mutable","name":"amount","nameLocation":"23670:6:3","nodeType":"VariableDeclaration","scope":2276,"src":"23662:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2270,"name":"uint256","nodeType":"ElementaryTypeName","src":"23662:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23629:48:3"},"returnParameters":{"id":2273,"nodeType":"ParameterList","parameters":[],"src":"23695:0:3"},"scope":2299,"src":"23612:580:3","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2286,"nodeType":"Block","src":"24677:2:3","statements":[]},"documentation":{"id":2277,"nodeType":"StructuredDocumentation","src":"24481:102:3","text":"@dev Hook that is called before any transfer of tokens.\n This includes minting and burning."},"id":2287,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nameLocation":"24597:20:3","nodeType":"FunctionDefinition","parameters":{"id":2284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2279,"mutability":"mutable","name":"from","nameLocation":"24626:4:3","nodeType":"VariableDeclaration","scope":2287,"src":"24618:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2278,"name":"address","nodeType":"ElementaryTypeName","src":"24618:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2281,"mutability":"mutable","name":"to","nameLocation":"24640:2:3","nodeType":"VariableDeclaration","scope":2287,"src":"24632:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2280,"name":"address","nodeType":"ElementaryTypeName","src":"24632:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2283,"mutability":"mutable","name":"amount","nameLocation":"24652:6:3","nodeType":"VariableDeclaration","scope":2287,"src":"24644:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2282,"name":"uint256","nodeType":"ElementaryTypeName","src":"24644:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24617:42:3"},"returnParameters":{"id":2285,"nodeType":"ParameterList","parameters":[],"src":"24677:0:3"},"scope":2299,"src":"24588:91:3","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":2297,"nodeType":"Block","src":"24879:2:3","statements":[]},"documentation":{"id":2288,"nodeType":"StructuredDocumentation","src":"24685:101:3","text":"@dev Hook that is called after any transfer of tokens.\n This includes minting and burning."},"id":2298,"implemented":true,"kind":"function","modifiers":[],"name":"_afterTokenTransfer","nameLocation":"24800:19:3","nodeType":"FunctionDefinition","parameters":{"id":2295,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2290,"mutability":"mutable","name":"from","nameLocation":"24828:4:3","nodeType":"VariableDeclaration","scope":2298,"src":"24820:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2289,"name":"address","nodeType":"ElementaryTypeName","src":"24820:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2292,"mutability":"mutable","name":"to","nameLocation":"24842:2:3","nodeType":"VariableDeclaration","scope":2298,"src":"24834:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2291,"name":"address","nodeType":"ElementaryTypeName","src":"24834:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2294,"mutability":"mutable","name":"amount","nameLocation":"24854:6:3","nodeType":"VariableDeclaration","scope":2298,"src":"24846:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2293,"name":"uint256","nodeType":"ElementaryTypeName","src":"24846:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24819:42:3"},"returnParameters":{"id":2296,"nodeType":"ParameterList","parameters":[],"src":"24879:0:3"},"scope":2299,"src":"24791:90:3","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":2300,"src":"1140:23743:3","usedErrors":[1886,1889,1892,1895,1898,1901,1904],"usedEvents":[1913,1922]}],"src":"32:24852:3"},"id":3},"solady/src/utils/ECDSA.sol":{"ast":{"absolutePath":"solady/src/utils/ECDSA.sol","exportedSymbols":{"ECDSA":[2442]},"id":2443,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2301,"literals":["solidity","^","0.8",".4"],"nodeType":"PragmaDirective","src":"32:23:4"},{"abstract":false,"baseContracts":[],"canonicalName":"ECDSA","contractDependencies":[],"contractKind":"library","documentation":{"id":2302,"nodeType":"StructuredDocumentation","src":"57:1396:4","text":"@notice Gas optimized ECDSA wrapper.\n @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/ECDSA.sol)\n @author Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/ECDSA.sol)\n @author Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/ECDSA.sol)\n @dev Note:\n - The recovery functions use the ecrecover precompile (0x1).\n - As of Solady version 0.0.68, the `recover` variants will revert upon recovery failure.\n   This is for more safety by default.\n   Use the `tryRecover` variants if you need to get the zero address back\n   upon recovery failure instead.\n - As of Solady version 0.0.134, all `bytes signature` variants accept both\n   regular 65-byte `(r, s, v)` and EIP-2098 `(r, vs)` short form signatures.\n   See: https://eips.ethereum.org/EIPS/eip-2098\n   This is for calldata efficiency on smart accounts prevalent on L2s.\n WARNING! Do NOT use signatures as unique identifiers:\n - Use a nonce in the digest to prevent replay attacks on the same contract.\n - Use EIP-712 for the digest to prevent replay attacks across different chains and contracts.\n   EIP-712 also enables readable signing of typed data for better user safety.\n This implementation does NOT check if a signature is non-malleable."},"fullyImplemented":true,"id":2442,"linearizedBaseContracts":[2442],"name":"ECDSA","nameLocation":"1461:5:4","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2303,"nodeType":"StructuredDocumentation","src":"1756:34:4","text":"@dev The signature is invalid."},"errorSelector":"8baa579f","id":2305,"name":"InvalidSignature","nameLocation":"1801:16:4","nodeType":"ErrorDefinition","parameters":{"id":2304,"nodeType":"ParameterList","parameters":[],"src":"1817:2:4"},"src":"1795:25:4"},{"body":{"id":2316,"nodeType":"Block","src":"2297:1678:4","statements":[{"AST":{"nativeSrc":"2359:1610:4","nodeType":"YulBlock","src":"2359:1610:4","statements":[{"nativeSrc":"2373:11:4","nodeType":"YulAssignment","src":"2373:11:4","value":{"kind":"number","nativeSrc":"2383:1:4","nodeType":"YulLiteral","src":"2383:1:4","type":"","value":"1"},"variableNames":[{"name":"result","nativeSrc":"2373:6:4","nodeType":"YulIdentifier","src":"2373:6:4"}]},{"nativeSrc":"2397:20:4","nodeType":"YulVariableDeclaration","src":"2397:20:4","value":{"arguments":[{"kind":"number","nativeSrc":"2412:4:4","nodeType":"YulLiteral","src":"2412:4:4","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"2406:5:4","nodeType":"YulIdentifier","src":"2406:5:4"},"nativeSrc":"2406:11:4","nodeType":"YulFunctionCall","src":"2406:11:4"},"variables":[{"name":"m","nativeSrc":"2401:1:4","nodeType":"YulTypedName","src":"2401:1:4","type":""}]},{"body":{"nativeSrc":"2476:678:4","nodeType":"YulBlock","src":"2476:678:4","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2501:4:4","nodeType":"YulLiteral","src":"2501:4:4","type":"","value":"0x00"},{"name":"hash","nativeSrc":"2507:4:4","nodeType":"YulIdentifier","src":"2507:4:4"}],"functionName":{"name":"mstore","nativeSrc":"2494:6:4","nodeType":"YulIdentifier","src":"2494:6:4"},"nativeSrc":"2494:18:4","nodeType":"YulFunctionCall","src":"2494:18:4"},"nativeSrc":"2494:18:4","nodeType":"YulExpressionStatement","src":"2494:18:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2536:4:4","nodeType":"YulLiteral","src":"2536:4:4","type":"","value":"0x40"},{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"2552:9:4","nodeType":"YulIdentifier","src":"2552:9:4"},{"kind":"number","nativeSrc":"2563:4:4","nodeType":"YulLiteral","src":"2563:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2548:3:4","nodeType":"YulIdentifier","src":"2548:3:4"},"nativeSrc":"2548:20:4","nodeType":"YulFunctionCall","src":"2548:20:4"}],"functionName":{"name":"mload","nativeSrc":"2542:5:4","nodeType":"YulIdentifier","src":"2542:5:4"},"nativeSrc":"2542:27:4","nodeType":"YulFunctionCall","src":"2542:27:4"}],"functionName":{"name":"mstore","nativeSrc":"2529:6:4","nodeType":"YulIdentifier","src":"2529:6:4"},"nativeSrc":"2529:41:4","nodeType":"YulFunctionCall","src":"2529:41:4"},"nativeSrc":"2529:41:4","nodeType":"YulExpressionStatement","src":"2529:41:4"},{"body":{"nativeSrc":"2623:228:4","nodeType":"YulBlock","src":"2623:228:4","statements":[{"nativeSrc":"2645:37:4","nodeType":"YulVariableDeclaration","src":"2645:37:4","value":{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"2665:9:4","nodeType":"YulIdentifier","src":"2665:9:4"},{"kind":"number","nativeSrc":"2676:4:4","nodeType":"YulLiteral","src":"2676:4:4","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"2661:3:4","nodeType":"YulIdentifier","src":"2661:3:4"},"nativeSrc":"2661:20:4","nodeType":"YulFunctionCall","src":"2661:20:4"}],"functionName":{"name":"mload","nativeSrc":"2655:5:4","nodeType":"YulIdentifier","src":"2655:5:4"},"nativeSrc":"2655:27:4","nodeType":"YulFunctionCall","src":"2655:27:4"},"variables":[{"name":"vs","nativeSrc":"2649:2:4","nodeType":"YulTypedName","src":"2649:2:4","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2710:4:4","nodeType":"YulLiteral","src":"2710:4:4","type":"","value":"0x20"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2724:3:4","nodeType":"YulLiteral","src":"2724:3:4","type":"","value":"255"},{"name":"vs","nativeSrc":"2729:2:4","nodeType":"YulIdentifier","src":"2729:2:4"}],"functionName":{"name":"shr","nativeSrc":"2720:3:4","nodeType":"YulIdentifier","src":"2720:3:4"},"nativeSrc":"2720:12:4","nodeType":"YulFunctionCall","src":"2720:12:4"},{"kind":"number","nativeSrc":"2734:2:4","nodeType":"YulLiteral","src":"2734:2:4","type":"","value":"27"}],"functionName":{"name":"add","nativeSrc":"2716:3:4","nodeType":"YulIdentifier","src":"2716:3:4"},"nativeSrc":"2716:21:4","nodeType":"YulFunctionCall","src":"2716:21:4"}],"functionName":{"name":"mstore","nativeSrc":"2703:6:4","nodeType":"YulIdentifier","src":"2703:6:4"},"nativeSrc":"2703:35:4","nodeType":"YulFunctionCall","src":"2703:35:4"},"nativeSrc":"2703:35:4","nodeType":"YulExpressionStatement","src":"2703:35:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2774:4:4","nodeType":"YulLiteral","src":"2774:4:4","type":"","value":"0x60"},{"arguments":[{"kind":"number","nativeSrc":"2784:1:4","nodeType":"YulLiteral","src":"2784:1:4","type":"","value":"1"},{"arguments":[{"kind":"number","nativeSrc":"2791:1:4","nodeType":"YulLiteral","src":"2791:1:4","type":"","value":"1"},{"name":"vs","nativeSrc":"2794:2:4","nodeType":"YulIdentifier","src":"2794:2:4"}],"functionName":{"name":"shl","nativeSrc":"2787:3:4","nodeType":"YulIdentifier","src":"2787:3:4"},"nativeSrc":"2787:10:4","nodeType":"YulFunctionCall","src":"2787:10:4"}],"functionName":{"name":"shr","nativeSrc":"2780:3:4","nodeType":"YulIdentifier","src":"2780:3:4"},"nativeSrc":"2780:18:4","nodeType":"YulFunctionCall","src":"2780:18:4"}],"functionName":{"name":"mstore","nativeSrc":"2767:6:4","nodeType":"YulIdentifier","src":"2767:6:4"},"nativeSrc":"2767:32:4","nodeType":"YulFunctionCall","src":"2767:32:4"},"nativeSrc":"2767:32:4","nodeType":"YulExpressionStatement","src":"2767:32:4"},{"nativeSrc":"2828:5:4","nodeType":"YulBreak","src":"2828:5:4"}]},"condition":{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"2607:9:4","nodeType":"YulIdentifier","src":"2607:9:4"}],"functionName":{"name":"mload","nativeSrc":"2601:5:4","nodeType":"YulIdentifier","src":"2601:5:4"},"nativeSrc":"2601:16:4","nodeType":"YulFunctionCall","src":"2601:16:4"},{"kind":"number","nativeSrc":"2619:2:4","nodeType":"YulLiteral","src":"2619:2:4","type":"","value":"64"}],"functionName":{"name":"eq","nativeSrc":"2598:2:4","nodeType":"YulIdentifier","src":"2598:2:4"},"nativeSrc":"2598:24:4","nodeType":"YulFunctionCall","src":"2598:24:4"},"nativeSrc":"2595:256:4","nodeType":"YulIf","src":"2595:256:4"},{"body":{"nativeSrc":"2896:194:4","nodeType":"YulBlock","src":"2896:194:4","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2925:4:4","nodeType":"YulLiteral","src":"2925:4:4","type":"","value":"0x20"},{"arguments":[{"kind":"number","nativeSrc":"2936:1:4","nodeType":"YulLiteral","src":"2936:1:4","type":"","value":"0"},{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"2949:9:4","nodeType":"YulIdentifier","src":"2949:9:4"},{"kind":"number","nativeSrc":"2960:4:4","nodeType":"YulLiteral","src":"2960:4:4","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"2945:3:4","nodeType":"YulIdentifier","src":"2945:3:4"},"nativeSrc":"2945:20:4","nodeType":"YulFunctionCall","src":"2945:20:4"}],"functionName":{"name":"mload","nativeSrc":"2939:5:4","nodeType":"YulIdentifier","src":"2939:5:4"},"nativeSrc":"2939:27:4","nodeType":"YulFunctionCall","src":"2939:27:4"}],"functionName":{"name":"byte","nativeSrc":"2931:4:4","nodeType":"YulIdentifier","src":"2931:4:4"},"nativeSrc":"2931:36:4","nodeType":"YulFunctionCall","src":"2931:36:4"}],"functionName":{"name":"mstore","nativeSrc":"2918:6:4","nodeType":"YulIdentifier","src":"2918:6:4"},"nativeSrc":"2918:50:4","nodeType":"YulFunctionCall","src":"2918:50:4"},"nativeSrc":"2918:50:4","nodeType":"YulExpressionStatement","src":"2918:50:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3004:4:4","nodeType":"YulLiteral","src":"3004:4:4","type":"","value":"0x60"},{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"3020:9:4","nodeType":"YulIdentifier","src":"3020:9:4"},{"kind":"number","nativeSrc":"3031:4:4","nodeType":"YulLiteral","src":"3031:4:4","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"3016:3:4","nodeType":"YulIdentifier","src":"3016:3:4"},"nativeSrc":"3016:20:4","nodeType":"YulFunctionCall","src":"3016:20:4"}],"functionName":{"name":"mload","nativeSrc":"3010:5:4","nodeType":"YulIdentifier","src":"3010:5:4"},"nativeSrc":"3010:27:4","nodeType":"YulFunctionCall","src":"3010:27:4"}],"functionName":{"name":"mstore","nativeSrc":"2997:6:4","nodeType":"YulIdentifier","src":"2997:6:4"},"nativeSrc":"2997:41:4","nodeType":"YulFunctionCall","src":"2997:41:4"},"nativeSrc":"2997:41:4","nodeType":"YulExpressionStatement","src":"2997:41:4"},{"nativeSrc":"3067:5:4","nodeType":"YulBreak","src":"3067:5:4"}]},"condition":{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"2880:9:4","nodeType":"YulIdentifier","src":"2880:9:4"}],"functionName":{"name":"mload","nativeSrc":"2874:5:4","nodeType":"YulIdentifier","src":"2874:5:4"},"nativeSrc":"2874:16:4","nodeType":"YulFunctionCall","src":"2874:16:4"},{"kind":"number","nativeSrc":"2892:2:4","nodeType":"YulLiteral","src":"2892:2:4","type":"","value":"65"}],"functionName":{"name":"eq","nativeSrc":"2871:2:4","nodeType":"YulIdentifier","src":"2871:2:4"},"nativeSrc":"2871:24:4","nodeType":"YulFunctionCall","src":"2871:24:4"},"nativeSrc":"2868:222:4","nodeType":"YulIf","src":"2868:222:4"},{"nativeSrc":"3107:11:4","nodeType":"YulAssignment","src":"3107:11:4","value":{"kind":"number","nativeSrc":"3117:1:4","nodeType":"YulLiteral","src":"3117:1:4","type":"","value":"0"},"variableNames":[{"name":"result","nativeSrc":"3107:6:4","nodeType":"YulIdentifier","src":"3107:6:4"}]},{"nativeSrc":"3135:5:4","nodeType":"YulBreak","src":"3135:5:4"}]},"condition":{"kind":"number","nativeSrc":"2471:1:4","nodeType":"YulLiteral","src":"2471:1:4","type":"","value":"1"},"nativeSrc":"2464:690:4","nodeType":"YulForLoop","post":{"nativeSrc":"2473:2:4","nodeType":"YulBlock","src":"2473:2:4","statements":[]},"pre":{"nativeSrc":"2468:2:4","nodeType":"YulBlock","src":"2468:2:4","statements":[]},"src":"2464:690:4"},{"nativeSrc":"3167:432:4","nodeType":"YulAssignment","src":"3167:432:4","value":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"3256:3:4","nodeType":"YulIdentifier","src":"3256:3:4"},"nativeSrc":"3256:5:4","nodeType":"YulFunctionCall","src":"3256:5:4"},{"name":"result","nativeSrc":"3330:6:4","nodeType":"YulIdentifier","src":"3330:6:4"},{"kind":"number","nativeSrc":"3389:4:4","nodeType":"YulLiteral","src":"3389:4:4","type":"","value":"0x00"},{"kind":"number","nativeSrc":"3438:4:4","nodeType":"YulLiteral","src":"3438:4:4","type":"","value":"0x80"},{"kind":"number","nativeSrc":"3486:4:4","nodeType":"YulLiteral","src":"3486:4:4","type":"","value":"0x01"},{"kind":"number","nativeSrc":"3536:4:4","nodeType":"YulLiteral","src":"3536:4:4","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"3220:10:4","nodeType":"YulIdentifier","src":"3220:10:4"},"nativeSrc":"3220:361:4","nodeType":"YulFunctionCall","src":"3220:361:4"}],"functionName":{"name":"mload","nativeSrc":"3193:5:4","nodeType":"YulIdentifier","src":"3193:5:4"},"nativeSrc":"3193:406:4","nodeType":"YulFunctionCall","src":"3193:406:4"},"variableNames":[{"name":"result","nativeSrc":"3167:6:4","nodeType":"YulIdentifier","src":"3167:6:4"}]},{"body":{"nativeSrc":"3725:116:4","nodeType":"YulBlock","src":"3725:116:4","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3750:4:4","nodeType":"YulLiteral","src":"3750:4:4","type":"","value":"0x00"},{"kind":"number","nativeSrc":"3756:10:4","nodeType":"YulLiteral","src":"3756:10:4","type":"","value":"0x8baa579f"}],"functionName":{"name":"mstore","nativeSrc":"3743:6:4","nodeType":"YulIdentifier","src":"3743:6:4"},"nativeSrc":"3743:24:4","nodeType":"YulFunctionCall","src":"3743:24:4"},"nativeSrc":"3743:24:4","nodeType":"YulExpressionStatement","src":"3743:24:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3816:4:4","nodeType":"YulLiteral","src":"3816:4:4","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"3822:4:4","nodeType":"YulLiteral","src":"3822:4:4","type":"","value":"0x04"}],"functionName":{"name":"revert","nativeSrc":"3809:6:4","nodeType":"YulIdentifier","src":"3809:6:4"},"nativeSrc":"3809:18:4","nodeType":"YulFunctionCall","src":"3809:18:4"},"nativeSrc":"3809:18:4","nodeType":"YulExpressionStatement","src":"3809:18:4"}]},"condition":{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"3707:14:4","nodeType":"YulIdentifier","src":"3707:14:4"},"nativeSrc":"3707:16:4","nodeType":"YulFunctionCall","src":"3707:16:4"}],"functionName":{"name":"iszero","nativeSrc":"3700:6:4","nodeType":"YulIdentifier","src":"3700:6:4"},"nativeSrc":"3700:24:4","nodeType":"YulFunctionCall","src":"3700:24:4"},"nativeSrc":"3697:144:4","nodeType":"YulIf","src":"3697:144:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3861:4:4","nodeType":"YulLiteral","src":"3861:4:4","type":"","value":"0x60"},{"kind":"number","nativeSrc":"3867:1:4","nodeType":"YulLiteral","src":"3867:1:4","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"3854:6:4","nodeType":"YulIdentifier","src":"3854:6:4"},"nativeSrc":"3854:15:4","nodeType":"YulFunctionCall","src":"3854:15:4"},"nativeSrc":"3854:15:4","nodeType":"YulExpressionStatement","src":"3854:15:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3915:4:4","nodeType":"YulLiteral","src":"3915:4:4","type":"","value":"0x40"},{"name":"m","nativeSrc":"3921:1:4","nodeType":"YulIdentifier","src":"3921:1:4"}],"functionName":{"name":"mstore","nativeSrc":"3908:6:4","nodeType":"YulIdentifier","src":"3908:6:4"},"nativeSrc":"3908:15:4","nodeType":"YulFunctionCall","src":"3908:15:4"},"nativeSrc":"3908:15:4","nodeType":"YulExpressionStatement","src":"3908:15:4"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2308,"isOffset":false,"isSlot":false,"src":"2507:4:4","valueSize":1},{"declaration":2313,"isOffset":false,"isSlot":false,"src":"2373:6:4","valueSize":1},{"declaration":2313,"isOffset":false,"isSlot":false,"src":"3107:6:4","valueSize":1},{"declaration":2313,"isOffset":false,"isSlot":false,"src":"3167:6:4","valueSize":1},{"declaration":2313,"isOffset":false,"isSlot":false,"src":"3330:6:4","valueSize":1},{"declaration":2310,"isOffset":false,"isSlot":false,"src":"2552:9:4","valueSize":1},{"declaration":2310,"isOffset":false,"isSlot":false,"src":"2607:9:4","valueSize":1},{"declaration":2310,"isOffset":false,"isSlot":false,"src":"2665:9:4","valueSize":1},{"declaration":2310,"isOffset":false,"isSlot":false,"src":"2880:9:4","valueSize":1},{"declaration":2310,"isOffset":false,"isSlot":false,"src":"2949:9:4","valueSize":1},{"declaration":2310,"isOffset":false,"isSlot":false,"src":"3020:9:4","valueSize":1}],"id":2315,"nodeType":"InlineAssembly","src":"2350:1619:4"}]},"documentation":{"id":2306,"nodeType":"StructuredDocumentation","src":"2109:89:4","text":"@dev Recovers the signer's address from a message digest `hash`, and the `signature`."},"id":2317,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"2212:7:4","nodeType":"FunctionDefinition","parameters":{"id":2311,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2308,"mutability":"mutable","name":"hash","nameLocation":"2228:4:4","nodeType":"VariableDeclaration","scope":2317,"src":"2220:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2307,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2220:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2310,"mutability":"mutable","name":"signature","nameLocation":"2247:9:4","nodeType":"VariableDeclaration","scope":2317,"src":"2234:22:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2309,"name":"bytes","nodeType":"ElementaryTypeName","src":"2234:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2219:38:4"},"returnParameters":{"id":2314,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2313,"mutability":"mutable","name":"result","nameLocation":"2289:6:4","nodeType":"VariableDeclaration","scope":2317,"src":"2281:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2312,"name":"address","nodeType":"ElementaryTypeName","src":"2281:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2280:16:4"},"scope":2442,"src":"2203:1772:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2328,"nodeType":"Block","src":"4207:1723:4","statements":[{"AST":{"nativeSrc":"4269:1655:4","nodeType":"YulBlock","src":"4269:1655:4","statements":[{"nativeSrc":"4283:11:4","nodeType":"YulAssignment","src":"4283:11:4","value":{"kind":"number","nativeSrc":"4293:1:4","nodeType":"YulLiteral","src":"4293:1:4","type":"","value":"1"},"variableNames":[{"name":"result","nativeSrc":"4283:6:4","nodeType":"YulIdentifier","src":"4283:6:4"}]},{"nativeSrc":"4307:20:4","nodeType":"YulVariableDeclaration","src":"4307:20:4","value":{"arguments":[{"kind":"number","nativeSrc":"4322:4:4","nodeType":"YulLiteral","src":"4322:4:4","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"4316:5:4","nodeType":"YulIdentifier","src":"4316:5:4"},"nativeSrc":"4316:11:4","nodeType":"YulFunctionCall","src":"4316:11:4"},"variables":[{"name":"m","nativeSrc":"4311:1:4","nodeType":"YulTypedName","src":"4311:1:4","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4381:4:4","nodeType":"YulLiteral","src":"4381:4:4","type":"","value":"0x00"},{"name":"hash","nativeSrc":"4387:4:4","nodeType":"YulIdentifier","src":"4387:4:4"}],"functionName":{"name":"mstore","nativeSrc":"4374:6:4","nodeType":"YulIdentifier","src":"4374:6:4"},"nativeSrc":"4374:18:4","nodeType":"YulFunctionCall","src":"4374:18:4"},"nativeSrc":"4374:18:4","nodeType":"YulExpressionStatement","src":"4374:18:4"},{"body":{"nativeSrc":"4417:692:4","nodeType":"YulBlock","src":"4417:692:4","statements":[{"body":{"nativeSrc":"4463:315:4","nodeType":"YulBlock","src":"4463:315:4","statements":[{"nativeSrc":"4485:51:4","nodeType":"YulVariableDeclaration","src":"4485:51:4","value":{"arguments":[{"arguments":[{"name":"signature.offset","nativeSrc":"4512:16:4","nodeType":"YulIdentifier","src":"4512:16:4"},{"kind":"number","nativeSrc":"4530:4:4","nodeType":"YulLiteral","src":"4530:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4508:3:4","nodeType":"YulIdentifier","src":"4508:3:4"},"nativeSrc":"4508:27:4","nodeType":"YulFunctionCall","src":"4508:27:4"}],"functionName":{"name":"calldataload","nativeSrc":"4495:12:4","nodeType":"YulIdentifier","src":"4495:12:4"},"nativeSrc":"4495:41:4","nodeType":"YulFunctionCall","src":"4495:41:4"},"variables":[{"name":"vs","nativeSrc":"4489:2:4","nodeType":"YulTypedName","src":"4489:2:4","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4564:4:4","nodeType":"YulLiteral","src":"4564:4:4","type":"","value":"0x20"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"4578:3:4","nodeType":"YulLiteral","src":"4578:3:4","type":"","value":"255"},{"name":"vs","nativeSrc":"4583:2:4","nodeType":"YulIdentifier","src":"4583:2:4"}],"functionName":{"name":"shr","nativeSrc":"4574:3:4","nodeType":"YulIdentifier","src":"4574:3:4"},"nativeSrc":"4574:12:4","nodeType":"YulFunctionCall","src":"4574:12:4"},{"kind":"number","nativeSrc":"4588:2:4","nodeType":"YulLiteral","src":"4588:2:4","type":"","value":"27"}],"functionName":{"name":"add","nativeSrc":"4570:3:4","nodeType":"YulIdentifier","src":"4570:3:4"},"nativeSrc":"4570:21:4","nodeType":"YulFunctionCall","src":"4570:21:4"}],"functionName":{"name":"mstore","nativeSrc":"4557:6:4","nodeType":"YulIdentifier","src":"4557:6:4"},"nativeSrc":"4557:35:4","nodeType":"YulFunctionCall","src":"4557:35:4"},"nativeSrc":"4557:35:4","nodeType":"YulExpressionStatement","src":"4557:35:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4628:4:4","nodeType":"YulLiteral","src":"4628:4:4","type":"","value":"0x40"},{"arguments":[{"name":"signature.offset","nativeSrc":"4647:16:4","nodeType":"YulIdentifier","src":"4647:16:4"}],"functionName":{"name":"calldataload","nativeSrc":"4634:12:4","nodeType":"YulIdentifier","src":"4634:12:4"},"nativeSrc":"4634:30:4","nodeType":"YulFunctionCall","src":"4634:30:4"}],"functionName":{"name":"mstore","nativeSrc":"4621:6:4","nodeType":"YulIdentifier","src":"4621:6:4"},"nativeSrc":"4621:44:4","nodeType":"YulFunctionCall","src":"4621:44:4"},"nativeSrc":"4621:44:4","nodeType":"YulExpressionStatement","src":"4621:44:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4701:4:4","nodeType":"YulLiteral","src":"4701:4:4","type":"","value":"0x60"},{"arguments":[{"kind":"number","nativeSrc":"4711:1:4","nodeType":"YulLiteral","src":"4711:1:4","type":"","value":"1"},{"arguments":[{"kind":"number","nativeSrc":"4718:1:4","nodeType":"YulLiteral","src":"4718:1:4","type":"","value":"1"},{"name":"vs","nativeSrc":"4721:2:4","nodeType":"YulIdentifier","src":"4721:2:4"}],"functionName":{"name":"shl","nativeSrc":"4714:3:4","nodeType":"YulIdentifier","src":"4714:3:4"},"nativeSrc":"4714:10:4","nodeType":"YulFunctionCall","src":"4714:10:4"}],"functionName":{"name":"shr","nativeSrc":"4707:3:4","nodeType":"YulIdentifier","src":"4707:3:4"},"nativeSrc":"4707:18:4","nodeType":"YulFunctionCall","src":"4707:18:4"}],"functionName":{"name":"mstore","nativeSrc":"4694:6:4","nodeType":"YulIdentifier","src":"4694:6:4"},"nativeSrc":"4694:32:4","nodeType":"YulFunctionCall","src":"4694:32:4"},"nativeSrc":"4694:32:4","nodeType":"YulExpressionStatement","src":"4694:32:4"},{"nativeSrc":"4755:5:4","nodeType":"YulBreak","src":"4755:5:4"}]},"condition":{"arguments":[{"name":"signature.length","nativeSrc":"4441:16:4","nodeType":"YulIdentifier","src":"4441:16:4"},{"kind":"number","nativeSrc":"4459:2:4","nodeType":"YulLiteral","src":"4459:2:4","type":"","value":"64"}],"functionName":{"name":"eq","nativeSrc":"4438:2:4","nodeType":"YulIdentifier","src":"4438:2:4"},"nativeSrc":"4438:24:4","nodeType":"YulFunctionCall","src":"4438:24:4"},"nativeSrc":"4435:343:4","nodeType":"YulIf","src":"4435:343:4"},{"body":{"nativeSrc":"4823:222:4","nodeType":"YulBlock","src":"4823:222:4","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4852:4:4","nodeType":"YulLiteral","src":"4852:4:4","type":"","value":"0x20"},{"arguments":[{"kind":"number","nativeSrc":"4863:1:4","nodeType":"YulLiteral","src":"4863:1:4","type":"","value":"0"},{"arguments":[{"arguments":[{"name":"signature.offset","nativeSrc":"4883:16:4","nodeType":"YulIdentifier","src":"4883:16:4"},{"kind":"number","nativeSrc":"4901:4:4","nodeType":"YulLiteral","src":"4901:4:4","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"4879:3:4","nodeType":"YulIdentifier","src":"4879:3:4"},"nativeSrc":"4879:27:4","nodeType":"YulFunctionCall","src":"4879:27:4"}],"functionName":{"name":"calldataload","nativeSrc":"4866:12:4","nodeType":"YulIdentifier","src":"4866:12:4"},"nativeSrc":"4866:41:4","nodeType":"YulFunctionCall","src":"4866:41:4"}],"functionName":{"name":"byte","nativeSrc":"4858:4:4","nodeType":"YulIdentifier","src":"4858:4:4"},"nativeSrc":"4858:50:4","nodeType":"YulFunctionCall","src":"4858:50:4"}],"functionName":{"name":"mstore","nativeSrc":"4845:6:4","nodeType":"YulIdentifier","src":"4845:6:4"},"nativeSrc":"4845:64:4","nodeType":"YulFunctionCall","src":"4845:64:4"},"nativeSrc":"4845:64:4","nodeType":"YulExpressionStatement","src":"4845:64:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4951:4:4","nodeType":"YulLiteral","src":"4951:4:4","type":"","value":"0x40"},{"name":"signature.offset","nativeSrc":"4957:16:4","nodeType":"YulIdentifier","src":"4957:16:4"},{"kind":"number","nativeSrc":"4975:4:4","nodeType":"YulLiteral","src":"4975:4:4","type":"","value":"0x40"}],"functionName":{"name":"calldatacopy","nativeSrc":"4938:12:4","nodeType":"YulIdentifier","src":"4938:12:4"},"nativeSrc":"4938:42:4","nodeType":"YulFunctionCall","src":"4938:42:4"},"nativeSrc":"4938:42:4","nodeType":"YulExpressionStatement","src":"4938:42:4"},{"nativeSrc":"5022:5:4","nodeType":"YulBreak","src":"5022:5:4"}]},"condition":{"arguments":[{"name":"signature.length","nativeSrc":"4801:16:4","nodeType":"YulIdentifier","src":"4801:16:4"},{"kind":"number","nativeSrc":"4819:2:4","nodeType":"YulLiteral","src":"4819:2:4","type":"","value":"65"}],"functionName":{"name":"eq","nativeSrc":"4798:2:4","nodeType":"YulIdentifier","src":"4798:2:4"},"nativeSrc":"4798:24:4","nodeType":"YulFunctionCall","src":"4798:24:4"},"nativeSrc":"4795:250:4","nodeType":"YulIf","src":"4795:250:4"},{"nativeSrc":"5062:11:4","nodeType":"YulAssignment","src":"5062:11:4","value":{"kind":"number","nativeSrc":"5072:1:4","nodeType":"YulLiteral","src":"5072:1:4","type":"","value":"0"},"variableNames":[{"name":"result","nativeSrc":"5062:6:4","nodeType":"YulIdentifier","src":"5062:6:4"}]},{"nativeSrc":"5090:5:4","nodeType":"YulBreak","src":"5090:5:4"}]},"condition":{"kind":"number","nativeSrc":"4412:1:4","nodeType":"YulLiteral","src":"4412:1:4","type":"","value":"1"},"nativeSrc":"4405:704:4","nodeType":"YulForLoop","post":{"nativeSrc":"4414:2:4","nodeType":"YulBlock","src":"4414:2:4","statements":[]},"pre":{"nativeSrc":"4409:2:4","nodeType":"YulBlock","src":"4409:2:4","statements":[]},"src":"4405:704:4"},{"nativeSrc":"5122:432:4","nodeType":"YulAssignment","src":"5122:432:4","value":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"5211:3:4","nodeType":"YulIdentifier","src":"5211:3:4"},"nativeSrc":"5211:5:4","nodeType":"YulFunctionCall","src":"5211:5:4"},{"name":"result","nativeSrc":"5285:6:4","nodeType":"YulIdentifier","src":"5285:6:4"},{"kind":"number","nativeSrc":"5344:4:4","nodeType":"YulLiteral","src":"5344:4:4","type":"","value":"0x00"},{"kind":"number","nativeSrc":"5393:4:4","nodeType":"YulLiteral","src":"5393:4:4","type":"","value":"0x80"},{"kind":"number","nativeSrc":"5441:4:4","nodeType":"YulLiteral","src":"5441:4:4","type":"","value":"0x01"},{"kind":"number","nativeSrc":"5491:4:4","nodeType":"YulLiteral","src":"5491:4:4","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"5175:10:4","nodeType":"YulIdentifier","src":"5175:10:4"},"nativeSrc":"5175:361:4","nodeType":"YulFunctionCall","src":"5175:361:4"}],"functionName":{"name":"mload","nativeSrc":"5148:5:4","nodeType":"YulIdentifier","src":"5148:5:4"},"nativeSrc":"5148:406:4","nodeType":"YulFunctionCall","src":"5148:406:4"},"variableNames":[{"name":"result","nativeSrc":"5122:6:4","nodeType":"YulIdentifier","src":"5122:6:4"}]},{"body":{"nativeSrc":"5680:116:4","nodeType":"YulBlock","src":"5680:116:4","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5705:4:4","nodeType":"YulLiteral","src":"5705:4:4","type":"","value":"0x00"},{"kind":"number","nativeSrc":"5711:10:4","nodeType":"YulLiteral","src":"5711:10:4","type":"","value":"0x8baa579f"}],"functionName":{"name":"mstore","nativeSrc":"5698:6:4","nodeType":"YulIdentifier","src":"5698:6:4"},"nativeSrc":"5698:24:4","nodeType":"YulFunctionCall","src":"5698:24:4"},"nativeSrc":"5698:24:4","nodeType":"YulExpressionStatement","src":"5698:24:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"5771:4:4","nodeType":"YulLiteral","src":"5771:4:4","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"5777:4:4","nodeType":"YulLiteral","src":"5777:4:4","type":"","value":"0x04"}],"functionName":{"name":"revert","nativeSrc":"5764:6:4","nodeType":"YulIdentifier","src":"5764:6:4"},"nativeSrc":"5764:18:4","nodeType":"YulFunctionCall","src":"5764:18:4"},"nativeSrc":"5764:18:4","nodeType":"YulExpressionStatement","src":"5764:18:4"}]},"condition":{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"5662:14:4","nodeType":"YulIdentifier","src":"5662:14:4"},"nativeSrc":"5662:16:4","nodeType":"YulFunctionCall","src":"5662:16:4"}],"functionName":{"name":"iszero","nativeSrc":"5655:6:4","nodeType":"YulIdentifier","src":"5655:6:4"},"nativeSrc":"5655:24:4","nodeType":"YulFunctionCall","src":"5655:24:4"},"nativeSrc":"5652:144:4","nodeType":"YulIf","src":"5652:144:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"5816:4:4","nodeType":"YulLiteral","src":"5816:4:4","type":"","value":"0x60"},{"kind":"number","nativeSrc":"5822:1:4","nodeType":"YulLiteral","src":"5822:1:4","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"5809:6:4","nodeType":"YulIdentifier","src":"5809:6:4"},"nativeSrc":"5809:15:4","nodeType":"YulFunctionCall","src":"5809:15:4"},"nativeSrc":"5809:15:4","nodeType":"YulExpressionStatement","src":"5809:15:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"5870:4:4","nodeType":"YulLiteral","src":"5870:4:4","type":"","value":"0x40"},{"name":"m","nativeSrc":"5876:1:4","nodeType":"YulIdentifier","src":"5876:1:4"}],"functionName":{"name":"mstore","nativeSrc":"5863:6:4","nodeType":"YulIdentifier","src":"5863:6:4"},"nativeSrc":"5863:15:4","nodeType":"YulFunctionCall","src":"5863:15:4"},"nativeSrc":"5863:15:4","nodeType":"YulExpressionStatement","src":"5863:15:4"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2320,"isOffset":false,"isSlot":false,"src":"4387:4:4","valueSize":1},{"declaration":2325,"isOffset":false,"isSlot":false,"src":"4283:6:4","valueSize":1},{"declaration":2325,"isOffset":false,"isSlot":false,"src":"5062:6:4","valueSize":1},{"declaration":2325,"isOffset":false,"isSlot":false,"src":"5122:6:4","valueSize":1},{"declaration":2325,"isOffset":false,"isSlot":false,"src":"5285:6:4","valueSize":1},{"declaration":2322,"isOffset":false,"isSlot":false,"src":"4441:16:4","suffix":"length","valueSize":1},{"declaration":2322,"isOffset":false,"isSlot":false,"src":"4801:16:4","suffix":"length","valueSize":1},{"declaration":2322,"isOffset":true,"isSlot":false,"src":"4512:16:4","suffix":"offset","valueSize":1},{"declaration":2322,"isOffset":true,"isSlot":false,"src":"4647:16:4","suffix":"offset","valueSize":1},{"declaration":2322,"isOffset":true,"isSlot":false,"src":"4883:16:4","suffix":"offset","valueSize":1},{"declaration":2322,"isOffset":true,"isSlot":false,"src":"4957:16:4","suffix":"offset","valueSize":1}],"id":2327,"nodeType":"InlineAssembly","src":"4260:1664:4"}]},"documentation":{"id":2318,"nodeType":"StructuredDocumentation","src":"3981:89:4","text":"@dev Recovers the signer's address from a message digest `hash`, and the `signature`."},"id":2329,"implemented":true,"kind":"function","modifiers":[],"name":"recoverCalldata","nameLocation":"4084:15:4","nodeType":"FunctionDefinition","parameters":{"id":2323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2320,"mutability":"mutable","name":"hash","nameLocation":"4108:4:4","nodeType":"VariableDeclaration","scope":2329,"src":"4100:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2319,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4100:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2322,"mutability":"mutable","name":"signature","nameLocation":"4129:9:4","nodeType":"VariableDeclaration","scope":2329,"src":"4114:24:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2321,"name":"bytes","nodeType":"ElementaryTypeName","src":"4114:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4099:40:4"},"returnParameters":{"id":2326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2325,"mutability":"mutable","name":"result","nameLocation":"4195:6:4","nodeType":"VariableDeclaration","scope":2329,"src":"4187:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2324,"name":"address","nodeType":"ElementaryTypeName","src":"4187:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4186:16:4"},"scope":2442,"src":"4075:1855:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2342,"nodeType":"Block","src":"6173:1114:4","statements":[{"AST":{"nativeSrc":"6235:1046:4","nodeType":"YulBlock","src":"6235:1046:4","statements":[{"nativeSrc":"6249:20:4","nodeType":"YulVariableDeclaration","src":"6249:20:4","value":{"arguments":[{"kind":"number","nativeSrc":"6264:4:4","nodeType":"YulLiteral","src":"6264:4:4","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"6258:5:4","nodeType":"YulIdentifier","src":"6258:5:4"},"nativeSrc":"6258:11:4","nodeType":"YulFunctionCall","src":"6258:11:4"},"variables":[{"name":"m","nativeSrc":"6253:1:4","nodeType":"YulTypedName","src":"6253:1:4","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"6323:4:4","nodeType":"YulLiteral","src":"6323:4:4","type":"","value":"0x00"},{"name":"hash","nativeSrc":"6329:4:4","nodeType":"YulIdentifier","src":"6329:4:4"}],"functionName":{"name":"mstore","nativeSrc":"6316:6:4","nodeType":"YulIdentifier","src":"6316:6:4"},"nativeSrc":"6316:18:4","nodeType":"YulFunctionCall","src":"6316:18:4"},"nativeSrc":"6316:18:4","nodeType":"YulExpressionStatement","src":"6316:18:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"6354:4:4","nodeType":"YulLiteral","src":"6354:4:4","type":"","value":"0x20"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"6368:3:4","nodeType":"YulLiteral","src":"6368:3:4","type":"","value":"255"},{"name":"vs","nativeSrc":"6373:2:4","nodeType":"YulIdentifier","src":"6373:2:4"}],"functionName":{"name":"shr","nativeSrc":"6364:3:4","nodeType":"YulIdentifier","src":"6364:3:4"},"nativeSrc":"6364:12:4","nodeType":"YulFunctionCall","src":"6364:12:4"},{"kind":"number","nativeSrc":"6378:2:4","nodeType":"YulLiteral","src":"6378:2:4","type":"","value":"27"}],"functionName":{"name":"add","nativeSrc":"6360:3:4","nodeType":"YulIdentifier","src":"6360:3:4"},"nativeSrc":"6360:21:4","nodeType":"YulFunctionCall","src":"6360:21:4"}],"functionName":{"name":"mstore","nativeSrc":"6347:6:4","nodeType":"YulIdentifier","src":"6347:6:4"},"nativeSrc":"6347:35:4","nodeType":"YulFunctionCall","src":"6347:35:4"},"nativeSrc":"6347:35:4","nodeType":"YulExpressionStatement","src":"6347:35:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"6410:4:4","nodeType":"YulLiteral","src":"6410:4:4","type":"","value":"0x40"},{"name":"r","nativeSrc":"6416:1:4","nodeType":"YulIdentifier","src":"6416:1:4"}],"functionName":{"name":"mstore","nativeSrc":"6403:6:4","nodeType":"YulIdentifier","src":"6403:6:4"},"nativeSrc":"6403:15:4","nodeType":"YulFunctionCall","src":"6403:15:4"},"nativeSrc":"6403:15:4","nodeType":"YulExpressionStatement","src":"6403:15:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"6438:4:4","nodeType":"YulLiteral","src":"6438:4:4","type":"","value":"0x60"},{"arguments":[{"kind":"number","nativeSrc":"6448:1:4","nodeType":"YulLiteral","src":"6448:1:4","type":"","value":"1"},{"arguments":[{"kind":"number","nativeSrc":"6455:1:4","nodeType":"YulLiteral","src":"6455:1:4","type":"","value":"1"},{"name":"vs","nativeSrc":"6458:2:4","nodeType":"YulIdentifier","src":"6458:2:4"}],"functionName":{"name":"shl","nativeSrc":"6451:3:4","nodeType":"YulIdentifier","src":"6451:3:4"},"nativeSrc":"6451:10:4","nodeType":"YulFunctionCall","src":"6451:10:4"}],"functionName":{"name":"shr","nativeSrc":"6444:3:4","nodeType":"YulIdentifier","src":"6444:3:4"},"nativeSrc":"6444:18:4","nodeType":"YulFunctionCall","src":"6444:18:4"}],"functionName":{"name":"mstore","nativeSrc":"6431:6:4","nodeType":"YulIdentifier","src":"6431:6:4"},"nativeSrc":"6431:32:4","nodeType":"YulFunctionCall","src":"6431:32:4"},"nativeSrc":"6431:32:4","nodeType":"YulExpressionStatement","src":"6431:32:4"},{"nativeSrc":"6484:427:4","nodeType":"YulAssignment","src":"6484:427:4","value":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"6573:3:4","nodeType":"YulIdentifier","src":"6573:3:4"},"nativeSrc":"6573:5:4","nodeType":"YulFunctionCall","src":"6573:5:4"},{"kind":"number","nativeSrc":"6647:1:4","nodeType":"YulLiteral","src":"6647:1:4","type":"","value":"1"},{"kind":"number","nativeSrc":"6701:4:4","nodeType":"YulLiteral","src":"6701:4:4","type":"","value":"0x00"},{"kind":"number","nativeSrc":"6750:4:4","nodeType":"YulLiteral","src":"6750:4:4","type":"","value":"0x80"},{"kind":"number","nativeSrc":"6798:4:4","nodeType":"YulLiteral","src":"6798:4:4","type":"","value":"0x01"},{"kind":"number","nativeSrc":"6848:4:4","nodeType":"YulLiteral","src":"6848:4:4","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"6537:10:4","nodeType":"YulIdentifier","src":"6537:10:4"},"nativeSrc":"6537:356:4","nodeType":"YulFunctionCall","src":"6537:356:4"}],"functionName":{"name":"mload","nativeSrc":"6510:5:4","nodeType":"YulIdentifier","src":"6510:5:4"},"nativeSrc":"6510:401:4","nodeType":"YulFunctionCall","src":"6510:401:4"},"variableNames":[{"name":"result","nativeSrc":"6484:6:4","nodeType":"YulIdentifier","src":"6484:6:4"}]},{"body":{"nativeSrc":"7037:116:4","nodeType":"YulBlock","src":"7037:116:4","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7062:4:4","nodeType":"YulLiteral","src":"7062:4:4","type":"","value":"0x00"},{"kind":"number","nativeSrc":"7068:10:4","nodeType":"YulLiteral","src":"7068:10:4","type":"","value":"0x8baa579f"}],"functionName":{"name":"mstore","nativeSrc":"7055:6:4","nodeType":"YulIdentifier","src":"7055:6:4"},"nativeSrc":"7055:24:4","nodeType":"YulFunctionCall","src":"7055:24:4"},"nativeSrc":"7055:24:4","nodeType":"YulExpressionStatement","src":"7055:24:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7128:4:4","nodeType":"YulLiteral","src":"7128:4:4","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"7134:4:4","nodeType":"YulLiteral","src":"7134:4:4","type":"","value":"0x04"}],"functionName":{"name":"revert","nativeSrc":"7121:6:4","nodeType":"YulIdentifier","src":"7121:6:4"},"nativeSrc":"7121:18:4","nodeType":"YulFunctionCall","src":"7121:18:4"},"nativeSrc":"7121:18:4","nodeType":"YulExpressionStatement","src":"7121:18:4"}]},"condition":{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"7019:14:4","nodeType":"YulIdentifier","src":"7019:14:4"},"nativeSrc":"7019:16:4","nodeType":"YulFunctionCall","src":"7019:16:4"}],"functionName":{"name":"iszero","nativeSrc":"7012:6:4","nodeType":"YulIdentifier","src":"7012:6:4"},"nativeSrc":"7012:24:4","nodeType":"YulFunctionCall","src":"7012:24:4"},"nativeSrc":"7009:144:4","nodeType":"YulIf","src":"7009:144:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7173:4:4","nodeType":"YulLiteral","src":"7173:4:4","type":"","value":"0x60"},{"kind":"number","nativeSrc":"7179:1:4","nodeType":"YulLiteral","src":"7179:1:4","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"7166:6:4","nodeType":"YulIdentifier","src":"7166:6:4"},"nativeSrc":"7166:15:4","nodeType":"YulFunctionCall","src":"7166:15:4"},"nativeSrc":"7166:15:4","nodeType":"YulExpressionStatement","src":"7166:15:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7227:4:4","nodeType":"YulLiteral","src":"7227:4:4","type":"","value":"0x40"},{"name":"m","nativeSrc":"7233:1:4","nodeType":"YulIdentifier","src":"7233:1:4"}],"functionName":{"name":"mstore","nativeSrc":"7220:6:4","nodeType":"YulIdentifier","src":"7220:6:4"},"nativeSrc":"7220:15:4","nodeType":"YulFunctionCall","src":"7220:15:4"},"nativeSrc":"7220:15:4","nodeType":"YulExpressionStatement","src":"7220:15:4"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2332,"isOffset":false,"isSlot":false,"src":"6329:4:4","valueSize":1},{"declaration":2334,"isOffset":false,"isSlot":false,"src":"6416:1:4","valueSize":1},{"declaration":2339,"isOffset":false,"isSlot":false,"src":"6484:6:4","valueSize":1},{"declaration":2336,"isOffset":false,"isSlot":false,"src":"6373:2:4","valueSize":1},{"declaration":2336,"isOffset":false,"isSlot":false,"src":"6458:2:4","valueSize":1}],"id":2341,"nodeType":"InlineAssembly","src":"6226:1055:4"}]},"documentation":{"id":2330,"nodeType":"StructuredDocumentation","src":"5936:139:4","text":"@dev Recovers the signer's address from a message digest `hash`,\n and the EIP-2098 short form signature defined by `r` and `vs`."},"id":2343,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"6089:7:4","nodeType":"FunctionDefinition","parameters":{"id":2337,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2332,"mutability":"mutable","name":"hash","nameLocation":"6105:4:4","nodeType":"VariableDeclaration","scope":2343,"src":"6097:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2331,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6097:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2334,"mutability":"mutable","name":"r","nameLocation":"6119:1:4","nodeType":"VariableDeclaration","scope":2343,"src":"6111:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2333,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6111:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2336,"mutability":"mutable","name":"vs","nameLocation":"6130:2:4","nodeType":"VariableDeclaration","scope":2343,"src":"6122:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2335,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6122:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6096:37:4"},"returnParameters":{"id":2340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2339,"mutability":"mutable","name":"result","nameLocation":"6165:6:4","nodeType":"VariableDeclaration","scope":2343,"src":"6157:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2338,"name":"address","nodeType":"ElementaryTypeName","src":"6157:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6156:16:4"},"scope":2442,"src":"6080:1207:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2358,"nodeType":"Block","src":"7547:1072:4","statements":[{"AST":{"nativeSrc":"7609:1004:4","nodeType":"YulBlock","src":"7609:1004:4","statements":[{"nativeSrc":"7623:20:4","nodeType":"YulVariableDeclaration","src":"7623:20:4","value":{"arguments":[{"kind":"number","nativeSrc":"7638:4:4","nodeType":"YulLiteral","src":"7638:4:4","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"7632:5:4","nodeType":"YulIdentifier","src":"7632:5:4"},"nativeSrc":"7632:11:4","nodeType":"YulFunctionCall","src":"7632:11:4"},"variables":[{"name":"m","nativeSrc":"7627:1:4","nodeType":"YulTypedName","src":"7627:1:4","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7697:4:4","nodeType":"YulLiteral","src":"7697:4:4","type":"","value":"0x00"},{"name":"hash","nativeSrc":"7703:4:4","nodeType":"YulIdentifier","src":"7703:4:4"}],"functionName":{"name":"mstore","nativeSrc":"7690:6:4","nodeType":"YulIdentifier","src":"7690:6:4"},"nativeSrc":"7690:18:4","nodeType":"YulFunctionCall","src":"7690:18:4"},"nativeSrc":"7690:18:4","nodeType":"YulExpressionStatement","src":"7690:18:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7728:4:4","nodeType":"YulLiteral","src":"7728:4:4","type":"","value":"0x20"},{"arguments":[{"name":"v","nativeSrc":"7738:1:4","nodeType":"YulIdentifier","src":"7738:1:4"},{"kind":"number","nativeSrc":"7741:4:4","nodeType":"YulLiteral","src":"7741:4:4","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"7734:3:4","nodeType":"YulIdentifier","src":"7734:3:4"},"nativeSrc":"7734:12:4","nodeType":"YulFunctionCall","src":"7734:12:4"}],"functionName":{"name":"mstore","nativeSrc":"7721:6:4","nodeType":"YulIdentifier","src":"7721:6:4"},"nativeSrc":"7721:26:4","nodeType":"YulFunctionCall","src":"7721:26:4"},"nativeSrc":"7721:26:4","nodeType":"YulExpressionStatement","src":"7721:26:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7767:4:4","nodeType":"YulLiteral","src":"7767:4:4","type":"","value":"0x40"},{"name":"r","nativeSrc":"7773:1:4","nodeType":"YulIdentifier","src":"7773:1:4"}],"functionName":{"name":"mstore","nativeSrc":"7760:6:4","nodeType":"YulIdentifier","src":"7760:6:4"},"nativeSrc":"7760:15:4","nodeType":"YulFunctionCall","src":"7760:15:4"},"nativeSrc":"7760:15:4","nodeType":"YulExpressionStatement","src":"7760:15:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7795:4:4","nodeType":"YulLiteral","src":"7795:4:4","type":"","value":"0x60"},{"name":"s","nativeSrc":"7801:1:4","nodeType":"YulIdentifier","src":"7801:1:4"}],"functionName":{"name":"mstore","nativeSrc":"7788:6:4","nodeType":"YulIdentifier","src":"7788:6:4"},"nativeSrc":"7788:15:4","nodeType":"YulFunctionCall","src":"7788:15:4"},"nativeSrc":"7788:15:4","nodeType":"YulExpressionStatement","src":"7788:15:4"},{"nativeSrc":"7816:427:4","nodeType":"YulAssignment","src":"7816:427:4","value":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"7905:3:4","nodeType":"YulIdentifier","src":"7905:3:4"},"nativeSrc":"7905:5:4","nodeType":"YulFunctionCall","src":"7905:5:4"},{"kind":"number","nativeSrc":"7979:1:4","nodeType":"YulLiteral","src":"7979:1:4","type":"","value":"1"},{"kind":"number","nativeSrc":"8033:4:4","nodeType":"YulLiteral","src":"8033:4:4","type":"","value":"0x00"},{"kind":"number","nativeSrc":"8082:4:4","nodeType":"YulLiteral","src":"8082:4:4","type":"","value":"0x80"},{"kind":"number","nativeSrc":"8130:4:4","nodeType":"YulLiteral","src":"8130:4:4","type":"","value":"0x01"},{"kind":"number","nativeSrc":"8180:4:4","nodeType":"YulLiteral","src":"8180:4:4","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"7869:10:4","nodeType":"YulIdentifier","src":"7869:10:4"},"nativeSrc":"7869:356:4","nodeType":"YulFunctionCall","src":"7869:356:4"}],"functionName":{"name":"mload","nativeSrc":"7842:5:4","nodeType":"YulIdentifier","src":"7842:5:4"},"nativeSrc":"7842:401:4","nodeType":"YulFunctionCall","src":"7842:401:4"},"variableNames":[{"name":"result","nativeSrc":"7816:6:4","nodeType":"YulIdentifier","src":"7816:6:4"}]},{"body":{"nativeSrc":"8369:116:4","nodeType":"YulBlock","src":"8369:116:4","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8394:4:4","nodeType":"YulLiteral","src":"8394:4:4","type":"","value":"0x00"},{"kind":"number","nativeSrc":"8400:10:4","nodeType":"YulLiteral","src":"8400:10:4","type":"","value":"0x8baa579f"}],"functionName":{"name":"mstore","nativeSrc":"8387:6:4","nodeType":"YulIdentifier","src":"8387:6:4"},"nativeSrc":"8387:24:4","nodeType":"YulFunctionCall","src":"8387:24:4"},"nativeSrc":"8387:24:4","nodeType":"YulExpressionStatement","src":"8387:24:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8460:4:4","nodeType":"YulLiteral","src":"8460:4:4","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"8466:4:4","nodeType":"YulLiteral","src":"8466:4:4","type":"","value":"0x04"}],"functionName":{"name":"revert","nativeSrc":"8453:6:4","nodeType":"YulIdentifier","src":"8453:6:4"},"nativeSrc":"8453:18:4","nodeType":"YulFunctionCall","src":"8453:18:4"},"nativeSrc":"8453:18:4","nodeType":"YulExpressionStatement","src":"8453:18:4"}]},"condition":{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"8351:14:4","nodeType":"YulIdentifier","src":"8351:14:4"},"nativeSrc":"8351:16:4","nodeType":"YulFunctionCall","src":"8351:16:4"}],"functionName":{"name":"iszero","nativeSrc":"8344:6:4","nodeType":"YulIdentifier","src":"8344:6:4"},"nativeSrc":"8344:24:4","nodeType":"YulFunctionCall","src":"8344:24:4"},"nativeSrc":"8341:144:4","nodeType":"YulIf","src":"8341:144:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8505:4:4","nodeType":"YulLiteral","src":"8505:4:4","type":"","value":"0x60"},{"kind":"number","nativeSrc":"8511:1:4","nodeType":"YulLiteral","src":"8511:1:4","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"8498:6:4","nodeType":"YulIdentifier","src":"8498:6:4"},"nativeSrc":"8498:15:4","nodeType":"YulFunctionCall","src":"8498:15:4"},"nativeSrc":"8498:15:4","nodeType":"YulExpressionStatement","src":"8498:15:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8559:4:4","nodeType":"YulLiteral","src":"8559:4:4","type":"","value":"0x40"},{"name":"m","nativeSrc":"8565:1:4","nodeType":"YulIdentifier","src":"8565:1:4"}],"functionName":{"name":"mstore","nativeSrc":"8552:6:4","nodeType":"YulIdentifier","src":"8552:6:4"},"nativeSrc":"8552:15:4","nodeType":"YulFunctionCall","src":"8552:15:4"},"nativeSrc":"8552:15:4","nodeType":"YulExpressionStatement","src":"8552:15:4"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2346,"isOffset":false,"isSlot":false,"src":"7703:4:4","valueSize":1},{"declaration":2350,"isOffset":false,"isSlot":false,"src":"7773:1:4","valueSize":1},{"declaration":2355,"isOffset":false,"isSlot":false,"src":"7816:6:4","valueSize":1},{"declaration":2352,"isOffset":false,"isSlot":false,"src":"7801:1:4","valueSize":1},{"declaration":2348,"isOffset":false,"isSlot":false,"src":"7738:1:4","valueSize":1}],"id":2357,"nodeType":"InlineAssembly","src":"7600:1013:4"}]},"documentation":{"id":2344,"nodeType":"StructuredDocumentation","src":"7293:120:4","text":"@dev Recovers the signer's address from a message digest `hash`,\n and the signature defined by `v`, `r`, `s`."},"id":2359,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"7427:7:4","nodeType":"FunctionDefinition","parameters":{"id":2353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2346,"mutability":"mutable","name":"hash","nameLocation":"7443:4:4","nodeType":"VariableDeclaration","scope":2359,"src":"7435:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2345,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7435:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2348,"mutability":"mutable","name":"v","nameLocation":"7455:1:4","nodeType":"VariableDeclaration","scope":2359,"src":"7449:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2347,"name":"uint8","nodeType":"ElementaryTypeName","src":"7449:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":2350,"mutability":"mutable","name":"r","nameLocation":"7466:1:4","nodeType":"VariableDeclaration","scope":2359,"src":"7458:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2349,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7458:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2352,"mutability":"mutable","name":"s","nameLocation":"7477:1:4","nodeType":"VariableDeclaration","scope":2359,"src":"7469:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2351,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7469:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7434:45:4"},"returnParameters":{"id":2356,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2355,"mutability":"mutable","name":"result","nameLocation":"7535:6:4","nodeType":"VariableDeclaration","scope":2359,"src":"7527:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2354,"name":"address","nodeType":"ElementaryTypeName","src":"7527:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7526:16:4"},"scope":2442,"src":"7418:1201:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2370,"nodeType":"Block","src":"9417:1514:4","statements":[{"AST":{"nativeSrc":"9479:1446:4","nodeType":"YulBlock","src":"9479:1446:4","statements":[{"nativeSrc":"9493:11:4","nodeType":"YulAssignment","src":"9493:11:4","value":{"kind":"number","nativeSrc":"9503:1:4","nodeType":"YulLiteral","src":"9503:1:4","type":"","value":"1"},"variableNames":[{"name":"result","nativeSrc":"9493:6:4","nodeType":"YulIdentifier","src":"9493:6:4"}]},{"nativeSrc":"9517:20:4","nodeType":"YulVariableDeclaration","src":"9517:20:4","value":{"arguments":[{"kind":"number","nativeSrc":"9532:4:4","nodeType":"YulLiteral","src":"9532:4:4","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"9526:5:4","nodeType":"YulIdentifier","src":"9526:5:4"},"nativeSrc":"9526:11:4","nodeType":"YulFunctionCall","src":"9526:11:4"},"variables":[{"name":"m","nativeSrc":"9521:1:4","nodeType":"YulTypedName","src":"9521:1:4","type":""}]},{"body":{"nativeSrc":"9596:678:4","nodeType":"YulBlock","src":"9596:678:4","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9621:4:4","nodeType":"YulLiteral","src":"9621:4:4","type":"","value":"0x00"},{"name":"hash","nativeSrc":"9627:4:4","nodeType":"YulIdentifier","src":"9627:4:4"}],"functionName":{"name":"mstore","nativeSrc":"9614:6:4","nodeType":"YulIdentifier","src":"9614:6:4"},"nativeSrc":"9614:18:4","nodeType":"YulFunctionCall","src":"9614:18:4"},"nativeSrc":"9614:18:4","nodeType":"YulExpressionStatement","src":"9614:18:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9656:4:4","nodeType":"YulLiteral","src":"9656:4:4","type":"","value":"0x40"},{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"9672:9:4","nodeType":"YulIdentifier","src":"9672:9:4"},{"kind":"number","nativeSrc":"9683:4:4","nodeType":"YulLiteral","src":"9683:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"9668:3:4","nodeType":"YulIdentifier","src":"9668:3:4"},"nativeSrc":"9668:20:4","nodeType":"YulFunctionCall","src":"9668:20:4"}],"functionName":{"name":"mload","nativeSrc":"9662:5:4","nodeType":"YulIdentifier","src":"9662:5:4"},"nativeSrc":"9662:27:4","nodeType":"YulFunctionCall","src":"9662:27:4"}],"functionName":{"name":"mstore","nativeSrc":"9649:6:4","nodeType":"YulIdentifier","src":"9649:6:4"},"nativeSrc":"9649:41:4","nodeType":"YulFunctionCall","src":"9649:41:4"},"nativeSrc":"9649:41:4","nodeType":"YulExpressionStatement","src":"9649:41:4"},{"body":{"nativeSrc":"9743:228:4","nodeType":"YulBlock","src":"9743:228:4","statements":[{"nativeSrc":"9765:37:4","nodeType":"YulVariableDeclaration","src":"9765:37:4","value":{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"9785:9:4","nodeType":"YulIdentifier","src":"9785:9:4"},{"kind":"number","nativeSrc":"9796:4:4","nodeType":"YulLiteral","src":"9796:4:4","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"9781:3:4","nodeType":"YulIdentifier","src":"9781:3:4"},"nativeSrc":"9781:20:4","nodeType":"YulFunctionCall","src":"9781:20:4"}],"functionName":{"name":"mload","nativeSrc":"9775:5:4","nodeType":"YulIdentifier","src":"9775:5:4"},"nativeSrc":"9775:27:4","nodeType":"YulFunctionCall","src":"9775:27:4"},"variables":[{"name":"vs","nativeSrc":"9769:2:4","nodeType":"YulTypedName","src":"9769:2:4","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9830:4:4","nodeType":"YulLiteral","src":"9830:4:4","type":"","value":"0x20"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9844:3:4","nodeType":"YulLiteral","src":"9844:3:4","type":"","value":"255"},{"name":"vs","nativeSrc":"9849:2:4","nodeType":"YulIdentifier","src":"9849:2:4"}],"functionName":{"name":"shr","nativeSrc":"9840:3:4","nodeType":"YulIdentifier","src":"9840:3:4"},"nativeSrc":"9840:12:4","nodeType":"YulFunctionCall","src":"9840:12:4"},{"kind":"number","nativeSrc":"9854:2:4","nodeType":"YulLiteral","src":"9854:2:4","type":"","value":"27"}],"functionName":{"name":"add","nativeSrc":"9836:3:4","nodeType":"YulIdentifier","src":"9836:3:4"},"nativeSrc":"9836:21:4","nodeType":"YulFunctionCall","src":"9836:21:4"}],"functionName":{"name":"mstore","nativeSrc":"9823:6:4","nodeType":"YulIdentifier","src":"9823:6:4"},"nativeSrc":"9823:35:4","nodeType":"YulFunctionCall","src":"9823:35:4"},"nativeSrc":"9823:35:4","nodeType":"YulExpressionStatement","src":"9823:35:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9894:4:4","nodeType":"YulLiteral","src":"9894:4:4","type":"","value":"0x60"},{"arguments":[{"kind":"number","nativeSrc":"9904:1:4","nodeType":"YulLiteral","src":"9904:1:4","type":"","value":"1"},{"arguments":[{"kind":"number","nativeSrc":"9911:1:4","nodeType":"YulLiteral","src":"9911:1:4","type":"","value":"1"},{"name":"vs","nativeSrc":"9914:2:4","nodeType":"YulIdentifier","src":"9914:2:4"}],"functionName":{"name":"shl","nativeSrc":"9907:3:4","nodeType":"YulIdentifier","src":"9907:3:4"},"nativeSrc":"9907:10:4","nodeType":"YulFunctionCall","src":"9907:10:4"}],"functionName":{"name":"shr","nativeSrc":"9900:3:4","nodeType":"YulIdentifier","src":"9900:3:4"},"nativeSrc":"9900:18:4","nodeType":"YulFunctionCall","src":"9900:18:4"}],"functionName":{"name":"mstore","nativeSrc":"9887:6:4","nodeType":"YulIdentifier","src":"9887:6:4"},"nativeSrc":"9887:32:4","nodeType":"YulFunctionCall","src":"9887:32:4"},"nativeSrc":"9887:32:4","nodeType":"YulExpressionStatement","src":"9887:32:4"},{"nativeSrc":"9948:5:4","nodeType":"YulBreak","src":"9948:5:4"}]},"condition":{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"9727:9:4","nodeType":"YulIdentifier","src":"9727:9:4"}],"functionName":{"name":"mload","nativeSrc":"9721:5:4","nodeType":"YulIdentifier","src":"9721:5:4"},"nativeSrc":"9721:16:4","nodeType":"YulFunctionCall","src":"9721:16:4"},{"kind":"number","nativeSrc":"9739:2:4","nodeType":"YulLiteral","src":"9739:2:4","type":"","value":"64"}],"functionName":{"name":"eq","nativeSrc":"9718:2:4","nodeType":"YulIdentifier","src":"9718:2:4"},"nativeSrc":"9718:24:4","nodeType":"YulFunctionCall","src":"9718:24:4"},"nativeSrc":"9715:256:4","nodeType":"YulIf","src":"9715:256:4"},{"body":{"nativeSrc":"10016:194:4","nodeType":"YulBlock","src":"10016:194:4","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10045:4:4","nodeType":"YulLiteral","src":"10045:4:4","type":"","value":"0x20"},{"arguments":[{"kind":"number","nativeSrc":"10056:1:4","nodeType":"YulLiteral","src":"10056:1:4","type":"","value":"0"},{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"10069:9:4","nodeType":"YulIdentifier","src":"10069:9:4"},{"kind":"number","nativeSrc":"10080:4:4","nodeType":"YulLiteral","src":"10080:4:4","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"10065:3:4","nodeType":"YulIdentifier","src":"10065:3:4"},"nativeSrc":"10065:20:4","nodeType":"YulFunctionCall","src":"10065:20:4"}],"functionName":{"name":"mload","nativeSrc":"10059:5:4","nodeType":"YulIdentifier","src":"10059:5:4"},"nativeSrc":"10059:27:4","nodeType":"YulFunctionCall","src":"10059:27:4"}],"functionName":{"name":"byte","nativeSrc":"10051:4:4","nodeType":"YulIdentifier","src":"10051:4:4"},"nativeSrc":"10051:36:4","nodeType":"YulFunctionCall","src":"10051:36:4"}],"functionName":{"name":"mstore","nativeSrc":"10038:6:4","nodeType":"YulIdentifier","src":"10038:6:4"},"nativeSrc":"10038:50:4","nodeType":"YulFunctionCall","src":"10038:50:4"},"nativeSrc":"10038:50:4","nodeType":"YulExpressionStatement","src":"10038:50:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10124:4:4","nodeType":"YulLiteral","src":"10124:4:4","type":"","value":"0x60"},{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"10140:9:4","nodeType":"YulIdentifier","src":"10140:9:4"},{"kind":"number","nativeSrc":"10151:4:4","nodeType":"YulLiteral","src":"10151:4:4","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"10136:3:4","nodeType":"YulIdentifier","src":"10136:3:4"},"nativeSrc":"10136:20:4","nodeType":"YulFunctionCall","src":"10136:20:4"}],"functionName":{"name":"mload","nativeSrc":"10130:5:4","nodeType":"YulIdentifier","src":"10130:5:4"},"nativeSrc":"10130:27:4","nodeType":"YulFunctionCall","src":"10130:27:4"}],"functionName":{"name":"mstore","nativeSrc":"10117:6:4","nodeType":"YulIdentifier","src":"10117:6:4"},"nativeSrc":"10117:41:4","nodeType":"YulFunctionCall","src":"10117:41:4"},"nativeSrc":"10117:41:4","nodeType":"YulExpressionStatement","src":"10117:41:4"},{"nativeSrc":"10187:5:4","nodeType":"YulBreak","src":"10187:5:4"}]},"condition":{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"10000:9:4","nodeType":"YulIdentifier","src":"10000:9:4"}],"functionName":{"name":"mload","nativeSrc":"9994:5:4","nodeType":"YulIdentifier","src":"9994:5:4"},"nativeSrc":"9994:16:4","nodeType":"YulFunctionCall","src":"9994:16:4"},{"kind":"number","nativeSrc":"10012:2:4","nodeType":"YulLiteral","src":"10012:2:4","type":"","value":"65"}],"functionName":{"name":"eq","nativeSrc":"9991:2:4","nodeType":"YulIdentifier","src":"9991:2:4"},"nativeSrc":"9991:24:4","nodeType":"YulFunctionCall","src":"9991:24:4"},"nativeSrc":"9988:222:4","nodeType":"YulIf","src":"9988:222:4"},{"nativeSrc":"10227:11:4","nodeType":"YulAssignment","src":"10227:11:4","value":{"kind":"number","nativeSrc":"10237:1:4","nodeType":"YulLiteral","src":"10237:1:4","type":"","value":"0"},"variableNames":[{"name":"result","nativeSrc":"10227:6:4","nodeType":"YulIdentifier","src":"10227:6:4"}]},{"nativeSrc":"10255:5:4","nodeType":"YulBreak","src":"10255:5:4"}]},"condition":{"kind":"number","nativeSrc":"9591:1:4","nodeType":"YulLiteral","src":"9591:1:4","type":"","value":"1"},"nativeSrc":"9584:690:4","nodeType":"YulForLoop","post":{"nativeSrc":"9593:2:4","nodeType":"YulBlock","src":"9593:2:4","statements":[]},"pre":{"nativeSrc":"9588:2:4","nodeType":"YulBlock","src":"9588:2:4","statements":[]},"src":"9584:690:4"},{"expression":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"10340:3:4","nodeType":"YulIdentifier","src":"10340:3:4"},"nativeSrc":"10340:5:4","nodeType":"YulFunctionCall","src":"10340:5:4"},{"name":"result","nativeSrc":"10410:6:4","nodeType":"YulIdentifier","src":"10410:6:4"},{"kind":"number","nativeSrc":"10465:4:4","nodeType":"YulLiteral","src":"10465:4:4","type":"","value":"0x00"},{"kind":"number","nativeSrc":"10510:4:4","nodeType":"YulLiteral","src":"10510:4:4","type":"","value":"0x80"},{"kind":"number","nativeSrc":"10554:4:4","nodeType":"YulLiteral","src":"10554:4:4","type":"","value":"0x40"},{"kind":"number","nativeSrc":"10600:4:4","nodeType":"YulLiteral","src":"10600:4:4","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"10308:10:4","nodeType":"YulIdentifier","src":"10308:10:4"},"nativeSrc":"10308:333:4","nodeType":"YulFunctionCall","src":"10308:333:4"}],"functionName":{"name":"pop","nativeSrc":"10287:3:4","nodeType":"YulIdentifier","src":"10287:3:4"},"nativeSrc":"10287:368:4","nodeType":"YulFunctionCall","src":"10287:368:4"},"nativeSrc":"10287:368:4","nodeType":"YulExpressionStatement","src":"10287:368:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10675:4:4","nodeType":"YulLiteral","src":"10675:4:4","type":"","value":"0x60"},{"kind":"number","nativeSrc":"10681:1:4","nodeType":"YulLiteral","src":"10681:1:4","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"10668:6:4","nodeType":"YulIdentifier","src":"10668:6:4"},"nativeSrc":"10668:15:4","nodeType":"YulFunctionCall","src":"10668:15:4"},"nativeSrc":"10668:15:4","nodeType":"YulExpressionStatement","src":"10668:15:4"},{"nativeSrc":"10807:44:4","nodeType":"YulAssignment","src":"10807:44:4","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"10827:4:4","nodeType":"YulLiteral","src":"10827:4:4","type":"","value":"0x60"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"10833:14:4","nodeType":"YulIdentifier","src":"10833:14:4"},"nativeSrc":"10833:16:4","nodeType":"YulFunctionCall","src":"10833:16:4"}],"functionName":{"name":"xor","nativeSrc":"10823:3:4","nodeType":"YulIdentifier","src":"10823:3:4"},"nativeSrc":"10823:27:4","nodeType":"YulFunctionCall","src":"10823:27:4"}],"functionName":{"name":"mload","nativeSrc":"10817:5:4","nodeType":"YulIdentifier","src":"10817:5:4"},"nativeSrc":"10817:34:4","nodeType":"YulFunctionCall","src":"10817:34:4"},"variableNames":[{"name":"result","nativeSrc":"10807:6:4","nodeType":"YulIdentifier","src":"10807:6:4"}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10871:4:4","nodeType":"YulLiteral","src":"10871:4:4","type":"","value":"0x40"},{"name":"m","nativeSrc":"10877:1:4","nodeType":"YulIdentifier","src":"10877:1:4"}],"functionName":{"name":"mstore","nativeSrc":"10864:6:4","nodeType":"YulIdentifier","src":"10864:6:4"},"nativeSrc":"10864:15:4","nodeType":"YulFunctionCall","src":"10864:15:4"},"nativeSrc":"10864:15:4","nodeType":"YulExpressionStatement","src":"10864:15:4"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2362,"isOffset":false,"isSlot":false,"src":"9627:4:4","valueSize":1},{"declaration":2367,"isOffset":false,"isSlot":false,"src":"10227:6:4","valueSize":1},{"declaration":2367,"isOffset":false,"isSlot":false,"src":"10410:6:4","valueSize":1},{"declaration":2367,"isOffset":false,"isSlot":false,"src":"10807:6:4","valueSize":1},{"declaration":2367,"isOffset":false,"isSlot":false,"src":"9493:6:4","valueSize":1},{"declaration":2364,"isOffset":false,"isSlot":false,"src":"10000:9:4","valueSize":1},{"declaration":2364,"isOffset":false,"isSlot":false,"src":"10069:9:4","valueSize":1},{"declaration":2364,"isOffset":false,"isSlot":false,"src":"10140:9:4","valueSize":1},{"declaration":2364,"isOffset":false,"isSlot":false,"src":"9672:9:4","valueSize":1},{"declaration":2364,"isOffset":false,"isSlot":false,"src":"9727:9:4","valueSize":1},{"declaration":2364,"isOffset":false,"isSlot":false,"src":"9785:9:4","valueSize":1}],"id":2369,"nodeType":"InlineAssembly","src":"9470:1455:4"}]},"documentation":{"id":2360,"nodeType":"StructuredDocumentation","src":"9198:89:4","text":"@dev Recovers the signer's address from a message digest `hash`, and the `signature`."},"id":2371,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"9301:10:4","nodeType":"FunctionDefinition","parameters":{"id":2365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2362,"mutability":"mutable","name":"hash","nameLocation":"9320:4:4","nodeType":"VariableDeclaration","scope":2371,"src":"9312:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2361,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9312:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2364,"mutability":"mutable","name":"signature","nameLocation":"9339:9:4","nodeType":"VariableDeclaration","scope":2371,"src":"9326:22:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2363,"name":"bytes","nodeType":"ElementaryTypeName","src":"9326:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9311:38:4"},"returnParameters":{"id":2368,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2367,"mutability":"mutable","name":"result","nameLocation":"9405:6:4","nodeType":"VariableDeclaration","scope":2371,"src":"9397:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2366,"name":"address","nodeType":"ElementaryTypeName","src":"9397:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9396:16:4"},"scope":2442,"src":"9292:1639:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2382,"nodeType":"Block","src":"11166:1559:4","statements":[{"AST":{"nativeSrc":"11228:1491:4","nodeType":"YulBlock","src":"11228:1491:4","statements":[{"nativeSrc":"11242:11:4","nodeType":"YulAssignment","src":"11242:11:4","value":{"kind":"number","nativeSrc":"11252:1:4","nodeType":"YulLiteral","src":"11252:1:4","type":"","value":"1"},"variableNames":[{"name":"result","nativeSrc":"11242:6:4","nodeType":"YulIdentifier","src":"11242:6:4"}]},{"nativeSrc":"11266:20:4","nodeType":"YulVariableDeclaration","src":"11266:20:4","value":{"arguments":[{"kind":"number","nativeSrc":"11281:4:4","nodeType":"YulLiteral","src":"11281:4:4","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"11275:5:4","nodeType":"YulIdentifier","src":"11275:5:4"},"nativeSrc":"11275:11:4","nodeType":"YulFunctionCall","src":"11275:11:4"},"variables":[{"name":"m","nativeSrc":"11270:1:4","nodeType":"YulTypedName","src":"11270:1:4","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11340:4:4","nodeType":"YulLiteral","src":"11340:4:4","type":"","value":"0x00"},{"name":"hash","nativeSrc":"11346:4:4","nodeType":"YulIdentifier","src":"11346:4:4"}],"functionName":{"name":"mstore","nativeSrc":"11333:6:4","nodeType":"YulIdentifier","src":"11333:6:4"},"nativeSrc":"11333:18:4","nodeType":"YulFunctionCall","src":"11333:18:4"},"nativeSrc":"11333:18:4","nodeType":"YulExpressionStatement","src":"11333:18:4"},{"body":{"nativeSrc":"11376:692:4","nodeType":"YulBlock","src":"11376:692:4","statements":[{"body":{"nativeSrc":"11422:315:4","nodeType":"YulBlock","src":"11422:315:4","statements":[{"nativeSrc":"11444:51:4","nodeType":"YulVariableDeclaration","src":"11444:51:4","value":{"arguments":[{"arguments":[{"name":"signature.offset","nativeSrc":"11471:16:4","nodeType":"YulIdentifier","src":"11471:16:4"},{"kind":"number","nativeSrc":"11489:4:4","nodeType":"YulLiteral","src":"11489:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"11467:3:4","nodeType":"YulIdentifier","src":"11467:3:4"},"nativeSrc":"11467:27:4","nodeType":"YulFunctionCall","src":"11467:27:4"}],"functionName":{"name":"calldataload","nativeSrc":"11454:12:4","nodeType":"YulIdentifier","src":"11454:12:4"},"nativeSrc":"11454:41:4","nodeType":"YulFunctionCall","src":"11454:41:4"},"variables":[{"name":"vs","nativeSrc":"11448:2:4","nodeType":"YulTypedName","src":"11448:2:4","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11523:4:4","nodeType":"YulLiteral","src":"11523:4:4","type":"","value":"0x20"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"11537:3:4","nodeType":"YulLiteral","src":"11537:3:4","type":"","value":"255"},{"name":"vs","nativeSrc":"11542:2:4","nodeType":"YulIdentifier","src":"11542:2:4"}],"functionName":{"name":"shr","nativeSrc":"11533:3:4","nodeType":"YulIdentifier","src":"11533:3:4"},"nativeSrc":"11533:12:4","nodeType":"YulFunctionCall","src":"11533:12:4"},{"kind":"number","nativeSrc":"11547:2:4","nodeType":"YulLiteral","src":"11547:2:4","type":"","value":"27"}],"functionName":{"name":"add","nativeSrc":"11529:3:4","nodeType":"YulIdentifier","src":"11529:3:4"},"nativeSrc":"11529:21:4","nodeType":"YulFunctionCall","src":"11529:21:4"}],"functionName":{"name":"mstore","nativeSrc":"11516:6:4","nodeType":"YulIdentifier","src":"11516:6:4"},"nativeSrc":"11516:35:4","nodeType":"YulFunctionCall","src":"11516:35:4"},"nativeSrc":"11516:35:4","nodeType":"YulExpressionStatement","src":"11516:35:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11587:4:4","nodeType":"YulLiteral","src":"11587:4:4","type":"","value":"0x40"},{"arguments":[{"name":"signature.offset","nativeSrc":"11606:16:4","nodeType":"YulIdentifier","src":"11606:16:4"}],"functionName":{"name":"calldataload","nativeSrc":"11593:12:4","nodeType":"YulIdentifier","src":"11593:12:4"},"nativeSrc":"11593:30:4","nodeType":"YulFunctionCall","src":"11593:30:4"}],"functionName":{"name":"mstore","nativeSrc":"11580:6:4","nodeType":"YulIdentifier","src":"11580:6:4"},"nativeSrc":"11580:44:4","nodeType":"YulFunctionCall","src":"11580:44:4"},"nativeSrc":"11580:44:4","nodeType":"YulExpressionStatement","src":"11580:44:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11660:4:4","nodeType":"YulLiteral","src":"11660:4:4","type":"","value":"0x60"},{"arguments":[{"kind":"number","nativeSrc":"11670:1:4","nodeType":"YulLiteral","src":"11670:1:4","type":"","value":"1"},{"arguments":[{"kind":"number","nativeSrc":"11677:1:4","nodeType":"YulLiteral","src":"11677:1:4","type":"","value":"1"},{"name":"vs","nativeSrc":"11680:2:4","nodeType":"YulIdentifier","src":"11680:2:4"}],"functionName":{"name":"shl","nativeSrc":"11673:3:4","nodeType":"YulIdentifier","src":"11673:3:4"},"nativeSrc":"11673:10:4","nodeType":"YulFunctionCall","src":"11673:10:4"}],"functionName":{"name":"shr","nativeSrc":"11666:3:4","nodeType":"YulIdentifier","src":"11666:3:4"},"nativeSrc":"11666:18:4","nodeType":"YulFunctionCall","src":"11666:18:4"}],"functionName":{"name":"mstore","nativeSrc":"11653:6:4","nodeType":"YulIdentifier","src":"11653:6:4"},"nativeSrc":"11653:32:4","nodeType":"YulFunctionCall","src":"11653:32:4"},"nativeSrc":"11653:32:4","nodeType":"YulExpressionStatement","src":"11653:32:4"},{"nativeSrc":"11714:5:4","nodeType":"YulBreak","src":"11714:5:4"}]},"condition":{"arguments":[{"name":"signature.length","nativeSrc":"11400:16:4","nodeType":"YulIdentifier","src":"11400:16:4"},{"kind":"number","nativeSrc":"11418:2:4","nodeType":"YulLiteral","src":"11418:2:4","type":"","value":"64"}],"functionName":{"name":"eq","nativeSrc":"11397:2:4","nodeType":"YulIdentifier","src":"11397:2:4"},"nativeSrc":"11397:24:4","nodeType":"YulFunctionCall","src":"11397:24:4"},"nativeSrc":"11394:343:4","nodeType":"YulIf","src":"11394:343:4"},{"body":{"nativeSrc":"11782:222:4","nodeType":"YulBlock","src":"11782:222:4","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11811:4:4","nodeType":"YulLiteral","src":"11811:4:4","type":"","value":"0x20"},{"arguments":[{"kind":"number","nativeSrc":"11822:1:4","nodeType":"YulLiteral","src":"11822:1:4","type":"","value":"0"},{"arguments":[{"arguments":[{"name":"signature.offset","nativeSrc":"11842:16:4","nodeType":"YulIdentifier","src":"11842:16:4"},{"kind":"number","nativeSrc":"11860:4:4","nodeType":"YulLiteral","src":"11860:4:4","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"11838:3:4","nodeType":"YulIdentifier","src":"11838:3:4"},"nativeSrc":"11838:27:4","nodeType":"YulFunctionCall","src":"11838:27:4"}],"functionName":{"name":"calldataload","nativeSrc":"11825:12:4","nodeType":"YulIdentifier","src":"11825:12:4"},"nativeSrc":"11825:41:4","nodeType":"YulFunctionCall","src":"11825:41:4"}],"functionName":{"name":"byte","nativeSrc":"11817:4:4","nodeType":"YulIdentifier","src":"11817:4:4"},"nativeSrc":"11817:50:4","nodeType":"YulFunctionCall","src":"11817:50:4"}],"functionName":{"name":"mstore","nativeSrc":"11804:6:4","nodeType":"YulIdentifier","src":"11804:6:4"},"nativeSrc":"11804:64:4","nodeType":"YulFunctionCall","src":"11804:64:4"},"nativeSrc":"11804:64:4","nodeType":"YulExpressionStatement","src":"11804:64:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11910:4:4","nodeType":"YulLiteral","src":"11910:4:4","type":"","value":"0x40"},{"name":"signature.offset","nativeSrc":"11916:16:4","nodeType":"YulIdentifier","src":"11916:16:4"},{"kind":"number","nativeSrc":"11934:4:4","nodeType":"YulLiteral","src":"11934:4:4","type":"","value":"0x40"}],"functionName":{"name":"calldatacopy","nativeSrc":"11897:12:4","nodeType":"YulIdentifier","src":"11897:12:4"},"nativeSrc":"11897:42:4","nodeType":"YulFunctionCall","src":"11897:42:4"},"nativeSrc":"11897:42:4","nodeType":"YulExpressionStatement","src":"11897:42:4"},{"nativeSrc":"11981:5:4","nodeType":"YulBreak","src":"11981:5:4"}]},"condition":{"arguments":[{"name":"signature.length","nativeSrc":"11760:16:4","nodeType":"YulIdentifier","src":"11760:16:4"},{"kind":"number","nativeSrc":"11778:2:4","nodeType":"YulLiteral","src":"11778:2:4","type":"","value":"65"}],"functionName":{"name":"eq","nativeSrc":"11757:2:4","nodeType":"YulIdentifier","src":"11757:2:4"},"nativeSrc":"11757:24:4","nodeType":"YulFunctionCall","src":"11757:24:4"},"nativeSrc":"11754:250:4","nodeType":"YulIf","src":"11754:250:4"},{"nativeSrc":"12021:11:4","nodeType":"YulAssignment","src":"12021:11:4","value":{"kind":"number","nativeSrc":"12031:1:4","nodeType":"YulLiteral","src":"12031:1:4","type":"","value":"0"},"variableNames":[{"name":"result","nativeSrc":"12021:6:4","nodeType":"YulIdentifier","src":"12021:6:4"}]},{"nativeSrc":"12049:5:4","nodeType":"YulBreak","src":"12049:5:4"}]},"condition":{"kind":"number","nativeSrc":"11371:1:4","nodeType":"YulLiteral","src":"11371:1:4","type":"","value":"1"},"nativeSrc":"11364:704:4","nodeType":"YulForLoop","post":{"nativeSrc":"11373:2:4","nodeType":"YulBlock","src":"11373:2:4","statements":[]},"pre":{"nativeSrc":"11368:2:4","nodeType":"YulBlock","src":"11368:2:4","statements":[]},"src":"11364:704:4"},{"expression":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"12134:3:4","nodeType":"YulIdentifier","src":"12134:3:4"},"nativeSrc":"12134:5:4","nodeType":"YulFunctionCall","src":"12134:5:4"},{"name":"result","nativeSrc":"12204:6:4","nodeType":"YulIdentifier","src":"12204:6:4"},{"kind":"number","nativeSrc":"12259:4:4","nodeType":"YulLiteral","src":"12259:4:4","type":"","value":"0x00"},{"kind":"number","nativeSrc":"12304:4:4","nodeType":"YulLiteral","src":"12304:4:4","type":"","value":"0x80"},{"kind":"number","nativeSrc":"12348:4:4","nodeType":"YulLiteral","src":"12348:4:4","type":"","value":"0x40"},{"kind":"number","nativeSrc":"12394:4:4","nodeType":"YulLiteral","src":"12394:4:4","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"12102:10:4","nodeType":"YulIdentifier","src":"12102:10:4"},"nativeSrc":"12102:333:4","nodeType":"YulFunctionCall","src":"12102:333:4"}],"functionName":{"name":"pop","nativeSrc":"12081:3:4","nodeType":"YulIdentifier","src":"12081:3:4"},"nativeSrc":"12081:368:4","nodeType":"YulFunctionCall","src":"12081:368:4"},"nativeSrc":"12081:368:4","nodeType":"YulExpressionStatement","src":"12081:368:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"12469:4:4","nodeType":"YulLiteral","src":"12469:4:4","type":"","value":"0x60"},{"kind":"number","nativeSrc":"12475:1:4","nodeType":"YulLiteral","src":"12475:1:4","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"12462:6:4","nodeType":"YulIdentifier","src":"12462:6:4"},"nativeSrc":"12462:15:4","nodeType":"YulFunctionCall","src":"12462:15:4"},"nativeSrc":"12462:15:4","nodeType":"YulExpressionStatement","src":"12462:15:4"},{"nativeSrc":"12601:44:4","nodeType":"YulAssignment","src":"12601:44:4","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"12621:4:4","nodeType":"YulLiteral","src":"12621:4:4","type":"","value":"0x60"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"12627:14:4","nodeType":"YulIdentifier","src":"12627:14:4"},"nativeSrc":"12627:16:4","nodeType":"YulFunctionCall","src":"12627:16:4"}],"functionName":{"name":"xor","nativeSrc":"12617:3:4","nodeType":"YulIdentifier","src":"12617:3:4"},"nativeSrc":"12617:27:4","nodeType":"YulFunctionCall","src":"12617:27:4"}],"functionName":{"name":"mload","nativeSrc":"12611:5:4","nodeType":"YulIdentifier","src":"12611:5:4"},"nativeSrc":"12611:34:4","nodeType":"YulFunctionCall","src":"12611:34:4"},"variableNames":[{"name":"result","nativeSrc":"12601:6:4","nodeType":"YulIdentifier","src":"12601:6:4"}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"12665:4:4","nodeType":"YulLiteral","src":"12665:4:4","type":"","value":"0x40"},{"name":"m","nativeSrc":"12671:1:4","nodeType":"YulIdentifier","src":"12671:1:4"}],"functionName":{"name":"mstore","nativeSrc":"12658:6:4","nodeType":"YulIdentifier","src":"12658:6:4"},"nativeSrc":"12658:15:4","nodeType":"YulFunctionCall","src":"12658:15:4"},"nativeSrc":"12658:15:4","nodeType":"YulExpressionStatement","src":"12658:15:4"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2374,"isOffset":false,"isSlot":false,"src":"11346:4:4","valueSize":1},{"declaration":2379,"isOffset":false,"isSlot":false,"src":"11242:6:4","valueSize":1},{"declaration":2379,"isOffset":false,"isSlot":false,"src":"12021:6:4","valueSize":1},{"declaration":2379,"isOffset":false,"isSlot":false,"src":"12204:6:4","valueSize":1},{"declaration":2379,"isOffset":false,"isSlot":false,"src":"12601:6:4","valueSize":1},{"declaration":2376,"isOffset":false,"isSlot":false,"src":"11400:16:4","suffix":"length","valueSize":1},{"declaration":2376,"isOffset":false,"isSlot":false,"src":"11760:16:4","suffix":"length","valueSize":1},{"declaration":2376,"isOffset":true,"isSlot":false,"src":"11471:16:4","suffix":"offset","valueSize":1},{"declaration":2376,"isOffset":true,"isSlot":false,"src":"11606:16:4","suffix":"offset","valueSize":1},{"declaration":2376,"isOffset":true,"isSlot":false,"src":"11842:16:4","suffix":"offset","valueSize":1},{"declaration":2376,"isOffset":true,"isSlot":false,"src":"11916:16:4","suffix":"offset","valueSize":1}],"id":2381,"nodeType":"InlineAssembly","src":"11219:1500:4"}]},"documentation":{"id":2372,"nodeType":"StructuredDocumentation","src":"10937:89:4","text":"@dev Recovers the signer's address from a message digest `hash`, and the `signature`."},"id":2383,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecoverCalldata","nameLocation":"11040:18:4","nodeType":"FunctionDefinition","parameters":{"id":2377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2374,"mutability":"mutable","name":"hash","nameLocation":"11067:4:4","nodeType":"VariableDeclaration","scope":2383,"src":"11059:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2373,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11059:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2376,"mutability":"mutable","name":"signature","nameLocation":"11088:9:4","nodeType":"VariableDeclaration","scope":2383,"src":"11073:24:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2375,"name":"bytes","nodeType":"ElementaryTypeName","src":"11073:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11058:40:4"},"returnParameters":{"id":2380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2379,"mutability":"mutable","name":"result","nameLocation":"11154:6:4","nodeType":"VariableDeclaration","scope":2383,"src":"11146:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2378,"name":"address","nodeType":"ElementaryTypeName","src":"11146:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11145:16:4"},"scope":2442,"src":"11031:1694:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2396,"nodeType":"Block","src":"12999:950:4","statements":[{"AST":{"nativeSrc":"13061:882:4","nodeType":"YulBlock","src":"13061:882:4","statements":[{"nativeSrc":"13075:20:4","nodeType":"YulVariableDeclaration","src":"13075:20:4","value":{"arguments":[{"kind":"number","nativeSrc":"13090:4:4","nodeType":"YulLiteral","src":"13090:4:4","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"13084:5:4","nodeType":"YulIdentifier","src":"13084:5:4"},"nativeSrc":"13084:11:4","nodeType":"YulFunctionCall","src":"13084:11:4"},"variables":[{"name":"m","nativeSrc":"13079:1:4","nodeType":"YulTypedName","src":"13079:1:4","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"13149:4:4","nodeType":"YulLiteral","src":"13149:4:4","type":"","value":"0x00"},{"name":"hash","nativeSrc":"13155:4:4","nodeType":"YulIdentifier","src":"13155:4:4"}],"functionName":{"name":"mstore","nativeSrc":"13142:6:4","nodeType":"YulIdentifier","src":"13142:6:4"},"nativeSrc":"13142:18:4","nodeType":"YulFunctionCall","src":"13142:18:4"},"nativeSrc":"13142:18:4","nodeType":"YulExpressionStatement","src":"13142:18:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"13180:4:4","nodeType":"YulLiteral","src":"13180:4:4","type":"","value":"0x20"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"13194:3:4","nodeType":"YulLiteral","src":"13194:3:4","type":"","value":"255"},{"name":"vs","nativeSrc":"13199:2:4","nodeType":"YulIdentifier","src":"13199:2:4"}],"functionName":{"name":"shr","nativeSrc":"13190:3:4","nodeType":"YulIdentifier","src":"13190:3:4"},"nativeSrc":"13190:12:4","nodeType":"YulFunctionCall","src":"13190:12:4"},{"kind":"number","nativeSrc":"13204:2:4","nodeType":"YulLiteral","src":"13204:2:4","type":"","value":"27"}],"functionName":{"name":"add","nativeSrc":"13186:3:4","nodeType":"YulIdentifier","src":"13186:3:4"},"nativeSrc":"13186:21:4","nodeType":"YulFunctionCall","src":"13186:21:4"}],"functionName":{"name":"mstore","nativeSrc":"13173:6:4","nodeType":"YulIdentifier","src":"13173:6:4"},"nativeSrc":"13173:35:4","nodeType":"YulFunctionCall","src":"13173:35:4"},"nativeSrc":"13173:35:4","nodeType":"YulExpressionStatement","src":"13173:35:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"13236:4:4","nodeType":"YulLiteral","src":"13236:4:4","type":"","value":"0x40"},{"name":"r","nativeSrc":"13242:1:4","nodeType":"YulIdentifier","src":"13242:1:4"}],"functionName":{"name":"mstore","nativeSrc":"13229:6:4","nodeType":"YulIdentifier","src":"13229:6:4"},"nativeSrc":"13229:15:4","nodeType":"YulFunctionCall","src":"13229:15:4"},"nativeSrc":"13229:15:4","nodeType":"YulExpressionStatement","src":"13229:15:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"13264:4:4","nodeType":"YulLiteral","src":"13264:4:4","type":"","value":"0x60"},{"arguments":[{"kind":"number","nativeSrc":"13274:1:4","nodeType":"YulLiteral","src":"13274:1:4","type":"","value":"1"},{"arguments":[{"kind":"number","nativeSrc":"13281:1:4","nodeType":"YulLiteral","src":"13281:1:4","type":"","value":"1"},{"name":"vs","nativeSrc":"13284:2:4","nodeType":"YulIdentifier","src":"13284:2:4"}],"functionName":{"name":"shl","nativeSrc":"13277:3:4","nodeType":"YulIdentifier","src":"13277:3:4"},"nativeSrc":"13277:10:4","nodeType":"YulFunctionCall","src":"13277:10:4"}],"functionName":{"name":"shr","nativeSrc":"13270:3:4","nodeType":"YulIdentifier","src":"13270:3:4"},"nativeSrc":"13270:18:4","nodeType":"YulFunctionCall","src":"13270:18:4"}],"functionName":{"name":"mstore","nativeSrc":"13257:6:4","nodeType":"YulIdentifier","src":"13257:6:4"},"nativeSrc":"13257:32:4","nodeType":"YulFunctionCall","src":"13257:32:4"},"nativeSrc":"13257:32:4","nodeType":"YulExpressionStatement","src":"13257:32:4"},{"expression":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"13363:3:4","nodeType":"YulIdentifier","src":"13363:3:4"},"nativeSrc":"13363:5:4","nodeType":"YulFunctionCall","src":"13363:5:4"},{"kind":"number","nativeSrc":"13433:1:4","nodeType":"YulLiteral","src":"13433:1:4","type":"","value":"1"},{"kind":"number","nativeSrc":"13483:4:4","nodeType":"YulLiteral","src":"13483:4:4","type":"","value":"0x00"},{"kind":"number","nativeSrc":"13528:4:4","nodeType":"YulLiteral","src":"13528:4:4","type":"","value":"0x80"},{"kind":"number","nativeSrc":"13572:4:4","nodeType":"YulLiteral","src":"13572:4:4","type":"","value":"0x40"},{"kind":"number","nativeSrc":"13618:4:4","nodeType":"YulLiteral","src":"13618:4:4","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"13331:10:4","nodeType":"YulIdentifier","src":"13331:10:4"},"nativeSrc":"13331:328:4","nodeType":"YulFunctionCall","src":"13331:328:4"}],"functionName":{"name":"pop","nativeSrc":"13310:3:4","nodeType":"YulIdentifier","src":"13310:3:4"},"nativeSrc":"13310:363:4","nodeType":"YulFunctionCall","src":"13310:363:4"},"nativeSrc":"13310:363:4","nodeType":"YulExpressionStatement","src":"13310:363:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"13693:4:4","nodeType":"YulLiteral","src":"13693:4:4","type":"","value":"0x60"},{"kind":"number","nativeSrc":"13699:1:4","nodeType":"YulLiteral","src":"13699:1:4","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"13686:6:4","nodeType":"YulIdentifier","src":"13686:6:4"},"nativeSrc":"13686:15:4","nodeType":"YulFunctionCall","src":"13686:15:4"},"nativeSrc":"13686:15:4","nodeType":"YulExpressionStatement","src":"13686:15:4"},{"nativeSrc":"13825:44:4","nodeType":"YulAssignment","src":"13825:44:4","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"13845:4:4","nodeType":"YulLiteral","src":"13845:4:4","type":"","value":"0x60"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"13851:14:4","nodeType":"YulIdentifier","src":"13851:14:4"},"nativeSrc":"13851:16:4","nodeType":"YulFunctionCall","src":"13851:16:4"}],"functionName":{"name":"xor","nativeSrc":"13841:3:4","nodeType":"YulIdentifier","src":"13841:3:4"},"nativeSrc":"13841:27:4","nodeType":"YulFunctionCall","src":"13841:27:4"}],"functionName":{"name":"mload","nativeSrc":"13835:5:4","nodeType":"YulIdentifier","src":"13835:5:4"},"nativeSrc":"13835:34:4","nodeType":"YulFunctionCall","src":"13835:34:4"},"variableNames":[{"name":"result","nativeSrc":"13825:6:4","nodeType":"YulIdentifier","src":"13825:6:4"}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"13889:4:4","nodeType":"YulLiteral","src":"13889:4:4","type":"","value":"0x40"},{"name":"m","nativeSrc":"13895:1:4","nodeType":"YulIdentifier","src":"13895:1:4"}],"functionName":{"name":"mstore","nativeSrc":"13882:6:4","nodeType":"YulIdentifier","src":"13882:6:4"},"nativeSrc":"13882:15:4","nodeType":"YulFunctionCall","src":"13882:15:4"},"nativeSrc":"13882:15:4","nodeType":"YulExpressionStatement","src":"13882:15:4"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2386,"isOffset":false,"isSlot":false,"src":"13155:4:4","valueSize":1},{"declaration":2388,"isOffset":false,"isSlot":false,"src":"13242:1:4","valueSize":1},{"declaration":2393,"isOffset":false,"isSlot":false,"src":"13825:6:4","valueSize":1},{"declaration":2390,"isOffset":false,"isSlot":false,"src":"13199:2:4","valueSize":1},{"declaration":2390,"isOffset":false,"isSlot":false,"src":"13284:2:4","valueSize":1}],"id":2395,"nodeType":"InlineAssembly","src":"13052:891:4"}]},"documentation":{"id":2384,"nodeType":"StructuredDocumentation","src":"12731:139:4","text":"@dev Recovers the signer's address from a message digest `hash`,\n and the EIP-2098 short form signature defined by `r` and `vs`."},"id":2397,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"12884:10:4","nodeType":"FunctionDefinition","parameters":{"id":2391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2386,"mutability":"mutable","name":"hash","nameLocation":"12903:4:4","nodeType":"VariableDeclaration","scope":2397,"src":"12895:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2385,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12895:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2388,"mutability":"mutable","name":"r","nameLocation":"12917:1:4","nodeType":"VariableDeclaration","scope":2397,"src":"12909:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2387,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12909:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2390,"mutability":"mutable","name":"vs","nameLocation":"12928:2:4","nodeType":"VariableDeclaration","scope":2397,"src":"12920:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2389,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12920:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"12894:37:4"},"returnParameters":{"id":2394,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2393,"mutability":"mutable","name":"result","nameLocation":"12987:6:4","nodeType":"VariableDeclaration","scope":2397,"src":"12979:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2392,"name":"address","nodeType":"ElementaryTypeName","src":"12979:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12978:16:4"},"scope":2442,"src":"12875:1074:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2412,"nodeType":"Block","src":"14212:908:4","statements":[{"AST":{"nativeSrc":"14274:840:4","nodeType":"YulBlock","src":"14274:840:4","statements":[{"nativeSrc":"14288:20:4","nodeType":"YulVariableDeclaration","src":"14288:20:4","value":{"arguments":[{"kind":"number","nativeSrc":"14303:4:4","nodeType":"YulLiteral","src":"14303:4:4","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"14297:5:4","nodeType":"YulIdentifier","src":"14297:5:4"},"nativeSrc":"14297:11:4","nodeType":"YulFunctionCall","src":"14297:11:4"},"variables":[{"name":"m","nativeSrc":"14292:1:4","nodeType":"YulTypedName","src":"14292:1:4","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14362:4:4","nodeType":"YulLiteral","src":"14362:4:4","type":"","value":"0x00"},{"name":"hash","nativeSrc":"14368:4:4","nodeType":"YulIdentifier","src":"14368:4:4"}],"functionName":{"name":"mstore","nativeSrc":"14355:6:4","nodeType":"YulIdentifier","src":"14355:6:4"},"nativeSrc":"14355:18:4","nodeType":"YulFunctionCall","src":"14355:18:4"},"nativeSrc":"14355:18:4","nodeType":"YulExpressionStatement","src":"14355:18:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14393:4:4","nodeType":"YulLiteral","src":"14393:4:4","type":"","value":"0x20"},{"arguments":[{"name":"v","nativeSrc":"14403:1:4","nodeType":"YulIdentifier","src":"14403:1:4"},{"kind":"number","nativeSrc":"14406:4:4","nodeType":"YulLiteral","src":"14406:4:4","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"14399:3:4","nodeType":"YulIdentifier","src":"14399:3:4"},"nativeSrc":"14399:12:4","nodeType":"YulFunctionCall","src":"14399:12:4"}],"functionName":{"name":"mstore","nativeSrc":"14386:6:4","nodeType":"YulIdentifier","src":"14386:6:4"},"nativeSrc":"14386:26:4","nodeType":"YulFunctionCall","src":"14386:26:4"},"nativeSrc":"14386:26:4","nodeType":"YulExpressionStatement","src":"14386:26:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14432:4:4","nodeType":"YulLiteral","src":"14432:4:4","type":"","value":"0x40"},{"name":"r","nativeSrc":"14438:1:4","nodeType":"YulIdentifier","src":"14438:1:4"}],"functionName":{"name":"mstore","nativeSrc":"14425:6:4","nodeType":"YulIdentifier","src":"14425:6:4"},"nativeSrc":"14425:15:4","nodeType":"YulFunctionCall","src":"14425:15:4"},"nativeSrc":"14425:15:4","nodeType":"YulExpressionStatement","src":"14425:15:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14460:4:4","nodeType":"YulLiteral","src":"14460:4:4","type":"","value":"0x60"},{"name":"s","nativeSrc":"14466:1:4","nodeType":"YulIdentifier","src":"14466:1:4"}],"functionName":{"name":"mstore","nativeSrc":"14453:6:4","nodeType":"YulIdentifier","src":"14453:6:4"},"nativeSrc":"14453:15:4","nodeType":"YulFunctionCall","src":"14453:15:4"},"nativeSrc":"14453:15:4","nodeType":"YulExpressionStatement","src":"14453:15:4"},{"expression":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"14534:3:4","nodeType":"YulIdentifier","src":"14534:3:4"},"nativeSrc":"14534:5:4","nodeType":"YulFunctionCall","src":"14534:5:4"},{"kind":"number","nativeSrc":"14604:1:4","nodeType":"YulLiteral","src":"14604:1:4","type":"","value":"1"},{"kind":"number","nativeSrc":"14654:4:4","nodeType":"YulLiteral","src":"14654:4:4","type":"","value":"0x00"},{"kind":"number","nativeSrc":"14699:4:4","nodeType":"YulLiteral","src":"14699:4:4","type":"","value":"0x80"},{"kind":"number","nativeSrc":"14743:4:4","nodeType":"YulLiteral","src":"14743:4:4","type":"","value":"0x40"},{"kind":"number","nativeSrc":"14789:4:4","nodeType":"YulLiteral","src":"14789:4:4","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"14502:10:4","nodeType":"YulIdentifier","src":"14502:10:4"},"nativeSrc":"14502:328:4","nodeType":"YulFunctionCall","src":"14502:328:4"}],"functionName":{"name":"pop","nativeSrc":"14481:3:4","nodeType":"YulIdentifier","src":"14481:3:4"},"nativeSrc":"14481:363:4","nodeType":"YulFunctionCall","src":"14481:363:4"},"nativeSrc":"14481:363:4","nodeType":"YulExpressionStatement","src":"14481:363:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14864:4:4","nodeType":"YulLiteral","src":"14864:4:4","type":"","value":"0x60"},{"kind":"number","nativeSrc":"14870:1:4","nodeType":"YulLiteral","src":"14870:1:4","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"14857:6:4","nodeType":"YulIdentifier","src":"14857:6:4"},"nativeSrc":"14857:15:4","nodeType":"YulFunctionCall","src":"14857:15:4"},"nativeSrc":"14857:15:4","nodeType":"YulExpressionStatement","src":"14857:15:4"},{"nativeSrc":"14996:44:4","nodeType":"YulAssignment","src":"14996:44:4","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"15016:4:4","nodeType":"YulLiteral","src":"15016:4:4","type":"","value":"0x60"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"15022:14:4","nodeType":"YulIdentifier","src":"15022:14:4"},"nativeSrc":"15022:16:4","nodeType":"YulFunctionCall","src":"15022:16:4"}],"functionName":{"name":"xor","nativeSrc":"15012:3:4","nodeType":"YulIdentifier","src":"15012:3:4"},"nativeSrc":"15012:27:4","nodeType":"YulFunctionCall","src":"15012:27:4"}],"functionName":{"name":"mload","nativeSrc":"15006:5:4","nodeType":"YulIdentifier","src":"15006:5:4"},"nativeSrc":"15006:34:4","nodeType":"YulFunctionCall","src":"15006:34:4"},"variableNames":[{"name":"result","nativeSrc":"14996:6:4","nodeType":"YulIdentifier","src":"14996:6:4"}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15060:4:4","nodeType":"YulLiteral","src":"15060:4:4","type":"","value":"0x40"},{"name":"m","nativeSrc":"15066:1:4","nodeType":"YulIdentifier","src":"15066:1:4"}],"functionName":{"name":"mstore","nativeSrc":"15053:6:4","nodeType":"YulIdentifier","src":"15053:6:4"},"nativeSrc":"15053:15:4","nodeType":"YulFunctionCall","src":"15053:15:4"},"nativeSrc":"15053:15:4","nodeType":"YulExpressionStatement","src":"15053:15:4"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2400,"isOffset":false,"isSlot":false,"src":"14368:4:4","valueSize":1},{"declaration":2404,"isOffset":false,"isSlot":false,"src":"14438:1:4","valueSize":1},{"declaration":2409,"isOffset":false,"isSlot":false,"src":"14996:6:4","valueSize":1},{"declaration":2406,"isOffset":false,"isSlot":false,"src":"14466:1:4","valueSize":1},{"declaration":2402,"isOffset":false,"isSlot":false,"src":"14403:1:4","valueSize":1}],"id":2411,"nodeType":"InlineAssembly","src":"14265:849:4"}]},"documentation":{"id":2398,"nodeType":"StructuredDocumentation","src":"13955:120:4","text":"@dev Recovers the signer's address from a message digest `hash`,\n and the signature defined by `v`, `r`, `s`."},"id":2413,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"14089:10:4","nodeType":"FunctionDefinition","parameters":{"id":2407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2400,"mutability":"mutable","name":"hash","nameLocation":"14108:4:4","nodeType":"VariableDeclaration","scope":2413,"src":"14100:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2399,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14100:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2402,"mutability":"mutable","name":"v","nameLocation":"14120:1:4","nodeType":"VariableDeclaration","scope":2413,"src":"14114:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2401,"name":"uint8","nodeType":"ElementaryTypeName","src":"14114:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":2404,"mutability":"mutable","name":"r","nameLocation":"14131:1:4","nodeType":"VariableDeclaration","scope":2413,"src":"14123:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2403,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14123:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2406,"mutability":"mutable","name":"s","nameLocation":"14142:1:4","nodeType":"VariableDeclaration","scope":2413,"src":"14134:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2405,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14134:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"14099:45:4"},"returnParameters":{"id":2410,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2409,"mutability":"mutable","name":"result","nameLocation":"14200:6:4","nodeType":"VariableDeclaration","scope":2413,"src":"14192:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2408,"name":"address","nodeType":"ElementaryTypeName","src":"14192:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14191:16:4"},"scope":2442,"src":"14080:1040:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2422,"nodeType":"Block","src":"15741:324:4","statements":[{"AST":{"nativeSrc":"15803:256:4","nodeType":"YulBlock","src":"15803:256:4","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15824:4:4","nodeType":"YulLiteral","src":"15824:4:4","type":"","value":"0x20"},{"name":"hash","nativeSrc":"15830:4:4","nodeType":"YulIdentifier","src":"15830:4:4"}],"functionName":{"name":"mstore","nativeSrc":"15817:6:4","nodeType":"YulIdentifier","src":"15817:6:4"},"nativeSrc":"15817:18:4","nodeType":"YulFunctionCall","src":"15817:18:4"},"nativeSrc":"15817:18:4","nodeType":"YulExpressionStatement","src":"15817:18:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15898:4:4","nodeType":"YulLiteral","src":"15898:4:4","type":"","value":"0x00"},{"hexValue":"0000000019457468657265756d205369676e6564204d6573736167653a0a3332","kind":"string","nativeSrc":"15904:50:4","nodeType":"YulLiteral","src":"15904:50:4","type":"","value":"\u0000\u0000\u0000\u0000\u0019Ethereum Signed Message:\n32"}],"functionName":{"name":"mstore","nativeSrc":"15891:6:4","nodeType":"YulIdentifier","src":"15891:6:4"},"nativeSrc":"15891:64:4","nodeType":"YulFunctionCall","src":"15891:64:4"},"nativeSrc":"15891:64:4","nodeType":"YulExpressionStatement","src":"15891:64:4"},{"nativeSrc":"15981:31:4","nodeType":"YulAssignment","src":"15981:31:4","value":{"arguments":[{"kind":"number","nativeSrc":"16001:4:4","nodeType":"YulLiteral","src":"16001:4:4","type":"","value":"0x04"},{"kind":"number","nativeSrc":"16007:4:4","nodeType":"YulLiteral","src":"16007:4:4","type":"","value":"0x3c"}],"functionName":{"name":"keccak256","nativeSrc":"15991:9:4","nodeType":"YulIdentifier","src":"15991:9:4"},"nativeSrc":"15991:21:4","nodeType":"YulFunctionCall","src":"15991:21:4"},"variableNames":[{"name":"result","nativeSrc":"15981:6:4","nodeType":"YulIdentifier","src":"15981:6:4"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2416,"isOffset":false,"isSlot":false,"src":"15830:4:4","valueSize":1},{"declaration":2419,"isOffset":false,"isSlot":false,"src":"15981:6:4","valueSize":1}],"id":2421,"nodeType":"InlineAssembly","src":"15794:265:4"}]},"documentation":{"id":2414,"nodeType":"StructuredDocumentation","src":"15409:242:4","text":"@dev Returns an Ethereum Signed Message, created from a `hash`.\n This produces a hash corresponding to the one signed with the\n [`eth_sign`](https://eth.wiki/json-rpc/API#eth_sign)\n JSON-RPC method as part of EIP-191."},"id":2423,"implemented":true,"kind":"function","modifiers":[],"name":"toEthSignedMessageHash","nameLocation":"15665:22:4","nodeType":"FunctionDefinition","parameters":{"id":2417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2416,"mutability":"mutable","name":"hash","nameLocation":"15696:4:4","nodeType":"VariableDeclaration","scope":2423,"src":"15688:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2415,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15688:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"15687:14:4"},"returnParameters":{"id":2420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2419,"mutability":"mutable","name":"result","nameLocation":"15733:6:4","nodeType":"VariableDeclaration","scope":2423,"src":"15725:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2418,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15725:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"15724:16:4"},"scope":2442,"src":"15656:409:4","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2432,"nodeType":"Block","src":"16458:1019:4","statements":[{"AST":{"nativeSrc":"16520:951:4","nodeType":"YulBlock","src":"16520:951:4","statements":[{"nativeSrc":"16534:23:4","nodeType":"YulVariableDeclaration","src":"16534:23:4","value":{"arguments":[{"name":"s","nativeSrc":"16555:1:4","nodeType":"YulIdentifier","src":"16555:1:4"}],"functionName":{"name":"mload","nativeSrc":"16549:5:4","nodeType":"YulIdentifier","src":"16549:5:4"},"nativeSrc":"16549:8:4","nodeType":"YulFunctionCall","src":"16549:8:4"},"variables":[{"name":"sLength","nativeSrc":"16538:7:4","nodeType":"YulTypedName","src":"16538:7:4","type":""}]},{"nativeSrc":"16570:13:4","nodeType":"YulVariableDeclaration","src":"16570:13:4","value":{"kind":"number","nativeSrc":"16579:4:4","nodeType":"YulLiteral","src":"16579:4:4","type":"","value":"0x20"},"variables":[{"name":"o","nativeSrc":"16574:1:4","nodeType":"YulTypedName","src":"16574:1:4","type":""}]},{"expression":{"arguments":[{"name":"o","nativeSrc":"16603:1:4","nodeType":"YulIdentifier","src":"16603:1:4"},{"hexValue":"19457468657265756d205369676e6564204d6573736167653a0a","kind":"string","nativeSrc":"16606:32:4","nodeType":"YulLiteral","src":"16606:32:4","type":"","value":"\u0019Ethereum Signed Message:\n"}],"functionName":{"name":"mstore","nativeSrc":"16596:6:4","nodeType":"YulIdentifier","src":"16596:6:4"},"nativeSrc":"16596:43:4","nodeType":"YulFunctionCall","src":"16596:43:4"},"nativeSrc":"16596:43:4","nodeType":"YulExpressionStatement","src":"16596:43:4"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16691:4:4","nodeType":"YulLiteral","src":"16691:4:4","type":"","value":"0x00"},{"kind":"number","nativeSrc":"16697:4:4","nodeType":"YulLiteral","src":"16697:4:4","type":"","value":"0x00"}],"functionName":{"name":"mstore","nativeSrc":"16684:6:4","nodeType":"YulIdentifier","src":"16684:6:4"},"nativeSrc":"16684:18:4","nodeType":"YulFunctionCall","src":"16684:18:4"},"nativeSrc":"16684:18:4","nodeType":"YulExpressionStatement","src":"16684:18:4"},{"body":{"nativeSrc":"16839:177:4","nodeType":"YulBlock","src":"16839:177:4","statements":[{"nativeSrc":"16857:14:4","nodeType":"YulAssignment","src":"16857:14:4","value":{"arguments":[{"name":"o","nativeSrc":"16866:1:4","nodeType":"YulIdentifier","src":"16866:1:4"},{"kind":"number","nativeSrc":"16869:1:4","nodeType":"YulLiteral","src":"16869:1:4","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"16862:3:4","nodeType":"YulIdentifier","src":"16862:3:4"},"nativeSrc":"16862:9:4","nodeType":"YulFunctionCall","src":"16862:9:4"},"variableNames":[{"name":"o","nativeSrc":"16857:1:4","nodeType":"YulIdentifier","src":"16857:1:4"}]},{"expression":{"arguments":[{"name":"o","nativeSrc":"16896:1:4","nodeType":"YulIdentifier","src":"16896:1:4"},{"arguments":[{"kind":"number","nativeSrc":"16903:2:4","nodeType":"YulLiteral","src":"16903:2:4","type":"","value":"48"},{"arguments":[{"name":"temp","nativeSrc":"16911:4:4","nodeType":"YulIdentifier","src":"16911:4:4"},{"kind":"number","nativeSrc":"16917:2:4","nodeType":"YulLiteral","src":"16917:2:4","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"16907:3:4","nodeType":"YulIdentifier","src":"16907:3:4"},"nativeSrc":"16907:13:4","nodeType":"YulFunctionCall","src":"16907:13:4"}],"functionName":{"name":"add","nativeSrc":"16899:3:4","nodeType":"YulIdentifier","src":"16899:3:4"},"nativeSrc":"16899:22:4","nodeType":"YulFunctionCall","src":"16899:22:4"}],"functionName":{"name":"mstore8","nativeSrc":"16888:7:4","nodeType":"YulIdentifier","src":"16888:7:4"},"nativeSrc":"16888:34:4","nodeType":"YulFunctionCall","src":"16888:34:4"},"nativeSrc":"16888:34:4","nodeType":"YulExpressionStatement","src":"16888:34:4"},{"nativeSrc":"16939:21:4","nodeType":"YulAssignment","src":"16939:21:4","value":{"arguments":[{"name":"temp","nativeSrc":"16951:4:4","nodeType":"YulIdentifier","src":"16951:4:4"},{"kind":"number","nativeSrc":"16957:2:4","nodeType":"YulLiteral","src":"16957:2:4","type":"","value":"10"}],"functionName":{"name":"div","nativeSrc":"16947:3:4","nodeType":"YulIdentifier","src":"16947:3:4"},"nativeSrc":"16947:13:4","nodeType":"YulFunctionCall","src":"16947:13:4"},"variableNames":[{"name":"temp","nativeSrc":"16939:4:4","nodeType":"YulIdentifier","src":"16939:4:4"}]},{"body":{"nativeSrc":"16993:9:4","nodeType":"YulBlock","src":"16993:9:4","statements":[{"nativeSrc":"16995:5:4","nodeType":"YulBreak","src":"16995:5:4"}]},"condition":{"arguments":[{"name":"temp","nativeSrc":"16987:4:4","nodeType":"YulIdentifier","src":"16987:4:4"}],"functionName":{"name":"iszero","nativeSrc":"16980:6:4","nodeType":"YulIdentifier","src":"16980:6:4"},"nativeSrc":"16980:12:4","nodeType":"YulFunctionCall","src":"16980:12:4"},"nativeSrc":"16977:25:4","nodeType":"YulIf","src":"16977:25:4"}]},"condition":{"kind":"number","nativeSrc":"16834:1:4","nodeType":"YulLiteral","src":"16834:1:4","type":"","value":"1"},"nativeSrc":"16806:210:4","nodeType":"YulForLoop","post":{"nativeSrc":"16836:2:4","nodeType":"YulBlock","src":"16836:2:4","statements":[]},"pre":{"nativeSrc":"16810:23:4","nodeType":"YulBlock","src":"16810:23:4","statements":[{"nativeSrc":"16812:19:4","nodeType":"YulVariableDeclaration","src":"16812:19:4","value":{"name":"sLength","nativeSrc":"16824:7:4","nodeType":"YulIdentifier","src":"16824:7:4"},"variables":[{"name":"temp","nativeSrc":"16816:4:4","nodeType":"YulTypedName","src":"16816:4:4","type":""}]}]},"src":"16806:210:4"},{"nativeSrc":"17029:21:4","nodeType":"YulVariableDeclaration","src":"17029:21:4","value":{"arguments":[{"kind":"number","nativeSrc":"17042:4:4","nodeType":"YulLiteral","src":"17042:4:4","type":"","value":"0x3a"},{"name":"o","nativeSrc":"17048:1:4","nodeType":"YulIdentifier","src":"17048:1:4"}],"functionName":{"name":"sub","nativeSrc":"17038:3:4","nodeType":"YulIdentifier","src":"17038:3:4"},"nativeSrc":"17038:12:4","nodeType":"YulFunctionCall","src":"17038:12:4"},"variables":[{"name":"n","nativeSrc":"17033:1:4","nodeType":"YulTypedName","src":"17033:1:4","type":""}]},{"expression":{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"17206:14:4","nodeType":"YulIdentifier","src":"17206:14:4"},"nativeSrc":"17206:16:4","nodeType":"YulFunctionCall","src":"17206:16:4"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"17224:14:4","nodeType":"YulIdentifier","src":"17224:14:4"},"nativeSrc":"17224:16:4","nodeType":"YulFunctionCall","src":"17224:16:4"},{"arguments":[{"name":"n","nativeSrc":"17245:1:4","nodeType":"YulIdentifier","src":"17245:1:4"},{"kind":"number","nativeSrc":"17248:4:4","nodeType":"YulLiteral","src":"17248:4:4","type":"","value":"0x20"}],"functionName":{"name":"gt","nativeSrc":"17242:2:4","nodeType":"YulIdentifier","src":"17242:2:4"},"nativeSrc":"17242:11:4","nodeType":"YulFunctionCall","src":"17242:11:4"}],"functionName":{"name":"returndatacopy","nativeSrc":"17191:14:4","nodeType":"YulIdentifier","src":"17191:14:4"},"nativeSrc":"17191:63:4","nodeType":"YulFunctionCall","src":"17191:63:4"},"nativeSrc":"17191:63:4","nodeType":"YulExpressionStatement","src":"17191:63:4"},{"expression":{"arguments":[{"name":"s","nativeSrc":"17274:1:4","nodeType":"YulIdentifier","src":"17274:1:4"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"17286:4:4","nodeType":"YulLiteral","src":"17286:4:4","type":"","value":"0x00"}],"functionName":{"name":"mload","nativeSrc":"17280:5:4","nodeType":"YulIdentifier","src":"17280:5:4"},"nativeSrc":"17280:11:4","nodeType":"YulFunctionCall","src":"17280:11:4"},{"arguments":[{"name":"n","nativeSrc":"17299:1:4","nodeType":"YulIdentifier","src":"17299:1:4"}],"functionName":{"name":"mload","nativeSrc":"17293:5:4","nodeType":"YulIdentifier","src":"17293:5:4"},"nativeSrc":"17293:8:4","nodeType":"YulFunctionCall","src":"17293:8:4"}],"functionName":{"name":"or","nativeSrc":"17277:2:4","nodeType":"YulIdentifier","src":"17277:2:4"},"nativeSrc":"17277:25:4","nodeType":"YulFunctionCall","src":"17277:25:4"}],"functionName":{"name":"mstore","nativeSrc":"17267:6:4","nodeType":"YulIdentifier","src":"17267:6:4"},"nativeSrc":"17267:36:4","nodeType":"YulFunctionCall","src":"17267:36:4"},"nativeSrc":"17267:36:4","nodeType":"YulExpressionStatement","src":"17267:36:4"},{"nativeSrc":"17349:58:4","nodeType":"YulAssignment","src":"17349:58:4","value":{"arguments":[{"arguments":[{"name":"s","nativeSrc":"17373:1:4","nodeType":"YulIdentifier","src":"17373:1:4"},{"arguments":[{"kind":"number","nativeSrc":"17380:4:4","nodeType":"YulLiteral","src":"17380:4:4","type":"","value":"0x20"},{"name":"n","nativeSrc":"17386:1:4","nodeType":"YulIdentifier","src":"17386:1:4"}],"functionName":{"name":"sub","nativeSrc":"17376:3:4","nodeType":"YulIdentifier","src":"17376:3:4"},"nativeSrc":"17376:12:4","nodeType":"YulFunctionCall","src":"17376:12:4"}],"functionName":{"name":"add","nativeSrc":"17369:3:4","nodeType":"YulIdentifier","src":"17369:3:4"},"nativeSrc":"17369:20:4","nodeType":"YulFunctionCall","src":"17369:20:4"},{"arguments":[{"name":"n","nativeSrc":"17395:1:4","nodeType":"YulIdentifier","src":"17395:1:4"},{"name":"sLength","nativeSrc":"17398:7:4","nodeType":"YulIdentifier","src":"17398:7:4"}],"functionName":{"name":"add","nativeSrc":"17391:3:4","nodeType":"YulIdentifier","src":"17391:3:4"},"nativeSrc":"17391:15:4","nodeType":"YulFunctionCall","src":"17391:15:4"}],"functionName":{"name":"keccak256","nativeSrc":"17359:9:4","nodeType":"YulIdentifier","src":"17359:9:4"},"nativeSrc":"17359:48:4","nodeType":"YulFunctionCall","src":"17359:48:4"},"variableNames":[{"name":"result","nativeSrc":"17349:6:4","nodeType":"YulIdentifier","src":"17349:6:4"}]},{"expression":{"arguments":[{"name":"s","nativeSrc":"17427:1:4","nodeType":"YulIdentifier","src":"17427:1:4"},{"name":"sLength","nativeSrc":"17430:7:4","nodeType":"YulIdentifier","src":"17430:7:4"}],"functionName":{"name":"mstore","nativeSrc":"17420:6:4","nodeType":"YulIdentifier","src":"17420:6:4"},"nativeSrc":"17420:18:4","nodeType":"YulFunctionCall","src":"17420:18:4"},"nativeSrc":"17420:18:4","nodeType":"YulExpressionStatement","src":"17420:18:4"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2429,"isOffset":false,"isSlot":false,"src":"17349:6:4","valueSize":1},{"declaration":2426,"isOffset":false,"isSlot":false,"src":"16555:1:4","valueSize":1},{"declaration":2426,"isOffset":false,"isSlot":false,"src":"17274:1:4","valueSize":1},{"declaration":2426,"isOffset":false,"isSlot":false,"src":"17373:1:4","valueSize":1},{"declaration":2426,"isOffset":false,"isSlot":false,"src":"17427:1:4","valueSize":1}],"id":2431,"nodeType":"InlineAssembly","src":"16511:960:4"}]},"documentation":{"id":2424,"nodeType":"StructuredDocumentation","src":"16071:295:4","text":"@dev Returns an Ethereum Signed Message, created from `s`.\n This produces a hash corresponding to the one signed with the\n [`eth_sign`](https://eth.wiki/json-rpc/API#eth_sign)\n JSON-RPC method as part of EIP-191.\n Note: Supports lengths of `s` up to 999999 bytes."},"id":2433,"implemented":true,"kind":"function","modifiers":[],"name":"toEthSignedMessageHash","nameLocation":"16380:22:4","nodeType":"FunctionDefinition","parameters":{"id":2427,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2426,"mutability":"mutable","name":"s","nameLocation":"16416:1:4","nodeType":"VariableDeclaration","scope":2433,"src":"16403:14:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2425,"name":"bytes","nodeType":"ElementaryTypeName","src":"16403:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16402:16:4"},"returnParameters":{"id":2430,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2429,"mutability":"mutable","name":"result","nameLocation":"16450:6:4","nodeType":"VariableDeclaration","scope":2433,"src":"16442:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2428,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16442:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"16441:16:4"},"scope":2442,"src":"16371:1106:4","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2440,"nodeType":"Block","src":"17887:113:4","statements":[{"AST":{"nativeSrc":"17949:45:4","nodeType":"YulBlock","src":"17949:45:4","statements":[{"nativeSrc":"17963:21:4","nodeType":"YulAssignment","src":"17963:21:4","value":{"kind":"number","nativeSrc":"17983:1:4","nodeType":"YulLiteral","src":"17983:1:4","type":"","value":"0"},"variableNames":[{"name":"signature.length","nativeSrc":"17963:16:4","nodeType":"YulIdentifier","src":"17963:16:4"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2437,"isOffset":false,"isSlot":false,"src":"17963:16:4","suffix":"length","valueSize":1}],"id":2439,"nodeType":"InlineAssembly","src":"17940:54:4"}]},"documentation":{"id":2434,"nodeType":"StructuredDocumentation","src":"17766:41:4","text":"@dev Returns an empty calldata bytes."},"id":2441,"implemented":true,"kind":"function","modifiers":[],"name":"emptySignature","nameLocation":"17821:14:4","nodeType":"FunctionDefinition","parameters":{"id":2435,"nodeType":"ParameterList","parameters":[],"src":"17835:2:4"},"returnParameters":{"id":2438,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2437,"mutability":"mutable","name":"signature","nameLocation":"17876:9:4","nodeType":"VariableDeclaration","scope":2441,"src":"17861:24:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2436,"name":"bytes","nodeType":"ElementaryTypeName","src":"17861:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"17860:26:4"},"scope":2442,"src":"17812:188:4","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2443,"src":"1453:16549:4","usedErrors":[2305],"usedEvents":[]}],"src":"32:17971:4"},"id":4},"solady/src/utils/EIP712.sol":{"ast":{"absolutePath":"solady/src/utils/EIP712.sol","exportedSymbols":{"EIP712":[2745]},"id":2746,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2444,"literals":["solidity","^","0.8",".4"],"nodeType":"PragmaDirective","src":"32:23:5"},{"abstract":true,"baseContracts":[],"canonicalName":"EIP712","contractDependencies":[],"contractKind":"contract","documentation":{"id":2445,"nodeType":"StructuredDocumentation","src":"57:714:5","text":"@notice Contract for EIP-712 typed structured data hashing and signing.\n @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/EIP712.sol)\n @author Modified from Solbase (https://github.com/Sol-DAO/solbase/blob/main/src/utils/EIP712.sol)\n @author Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/EIP712.sol)\n @dev Note, this implementation:\n - Uses `address(this)` for the `verifyingContract` field.\n - Does NOT use the optional EIP-712 salt.\n - Does NOT use any EIP-712 extensions.\n This is for simplicity and to save gas.\n If you need to customize, please fork / modify accordingly."},"fullyImplemented":false,"id":2745,"linearizedBaseContracts":[2745],"name":"EIP712","nameLocation":"789:6:5","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":2446,"nodeType":"StructuredDocumentation","src":"1085:107:5","text":"@dev `keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\")`."},"id":2449,"mutability":"constant","name":"_DOMAIN_TYPEHASH","nameLocation":"1223:16:5","nodeType":"VariableDeclaration","scope":2745,"src":"1197:119:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2447,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1197:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307838623733633363363962623866653364353132656363346366373539636337393233396637623137396230666661636161396137356435323262333934303066","id":2448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1250:66:5","typeDescriptions":{"typeIdentifier":"t_rational_63076024560530113402979550242307453568063438748328787417531900361828837441551_by_1","typeString":"int_const 6307...(69 digits omitted)...1551"},"value":"0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f"},"visibility":"internal"},{"constant":false,"id":2451,"mutability":"immutable","name":"_cachedThis","nameLocation":"1349:11:5","nodeType":"VariableDeclaration","scope":2745,"src":"1323:37:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2450,"name":"uint256","nodeType":"ElementaryTypeName","src":"1323:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":2453,"mutability":"immutable","name":"_cachedChainId","nameLocation":"1392:14:5","nodeType":"VariableDeclaration","scope":2745,"src":"1366:40:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2452,"name":"uint256","nodeType":"ElementaryTypeName","src":"1366:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":2455,"mutability":"immutable","name":"_cachedNameHash","nameLocation":"1438:15:5","nodeType":"VariableDeclaration","scope":2745,"src":"1412:41:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2454,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1412:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":2457,"mutability":"immutable","name":"_cachedVersionHash","nameLocation":"1485:18:5","nodeType":"VariableDeclaration","scope":2745,"src":"1459:44:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2456,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1459:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":2459,"mutability":"immutable","name":"_cachedDomainSeparator","nameLocation":"1535:22:5","nodeType":"VariableDeclaration","scope":2745,"src":"1509:48:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2458,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1509:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"body":{"id":2551,"nodeType":"Block","src":"2109:1116:5","statements":[{"expression":{"id":2474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2463,"name":"_cachedThis","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2451,"src":"2119:11:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"id":2470,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2157:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_EIP712_$2745","typeString":"contract EIP712"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_EIP712_$2745","typeString":"contract EIP712"}],"id":2469,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2149:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2468,"name":"address","nodeType":"ElementaryTypeName","src":"2149:7:5","typeDescriptions":{}}},"id":2471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2149:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2467,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2141:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":2466,"name":"uint160","nodeType":"ElementaryTypeName","src":"2141:7:5","typeDescriptions":{}}},"id":2472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2141:22:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":2465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2133:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2464,"name":"uint256","nodeType":"ElementaryTypeName","src":"2133:7:5","typeDescriptions":{}}},"id":2473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2133:31:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2119:45:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2475,"nodeType":"ExpressionStatement","src":"2119:45:5"},{"expression":{"id":2479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2476,"name":"_cachedChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2453,"src":"2174:14:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2477,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2191:5:5","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":2478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2197:7:5","memberName":"chainid","nodeType":"MemberAccess","src":"2191:13:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2174:30:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2480,"nodeType":"ExpressionStatement","src":"2174:30:5"},{"assignments":[2482],"declarations":[{"constant":false,"id":2482,"mutability":"mutable","name":"name","nameLocation":"2229:4:5","nodeType":"VariableDeclaration","scope":2551,"src":"2215:18:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2481,"name":"string","nodeType":"ElementaryTypeName","src":"2215:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":2483,"nodeType":"VariableDeclarationStatement","src":"2215:18:5"},{"assignments":[2485],"declarations":[{"constant":false,"id":2485,"mutability":"mutable","name":"version","nameLocation":"2257:7:5","nodeType":"VariableDeclaration","scope":2551,"src":"2243:21:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2484,"name":"string","nodeType":"ElementaryTypeName","src":"2243:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":2486,"nodeType":"VariableDeclarationStatement","src":"2243:21:5"},{"condition":{"id":2489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2278:33:5","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":2487,"name":"_domainNameAndVersionMayChange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2567,"src":"2279:30:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_bool_$","typeString":"function () pure returns (bool)"}},"id":2488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2279:32:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2497,"nodeType":"IfStatement","src":"2274:80:5","trueBody":{"expression":{"id":2495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2490,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2482,"src":"2314:4:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":2491,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2485,"src":"2320:7:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":2492,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2313:15:5","typeDescriptions":{"typeIdentifier":"t_tuple$_t_string_memory_ptr_$_t_string_memory_ptr_$","typeString":"tuple(string memory,string memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":2493,"name":"_domainNameAndVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2560,"src":"2331:21:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$_t_string_memory_ptr_$","typeString":"function () view returns (string memory,string memory)"}},"id":2494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2331:23:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_string_memory_ptr_$_t_string_memory_ptr_$","typeString":"tuple(string memory,string memory)"}},"src":"2313:41:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2496,"nodeType":"ExpressionStatement","src":"2313:41:5"}},{"assignments":[2499],"declarations":[{"constant":false,"id":2499,"mutability":"mutable","name":"nameHash","nameLocation":"2372:8:5","nodeType":"VariableDeclaration","scope":2551,"src":"2364:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2498,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2364:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2513,"initialValue":{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":2500,"name":"_domainNameAndVersionMayChange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2567,"src":"2383:30:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_bool_$","typeString":"function () pure returns (bool)"}},"id":2501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2383:32:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"arguments":[{"id":2509,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2482,"src":"2447:4:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2508,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2441:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2507,"name":"bytes","nodeType":"ElementaryTypeName","src":"2441:5:5","typeDescriptions":{}}},"id":2510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2441:11:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2506,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2431:9:5","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2431:22:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2383:70:5","trueExpression":{"arguments":[{"hexValue":"30","id":2504,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2426:1:5","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":2503,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2418:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2502,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2418:7:5","typeDescriptions":{}}},"id":2505,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2418:10:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2364:89:5"},{"assignments":[2515],"declarations":[{"constant":false,"id":2515,"mutability":"mutable","name":"versionHash","nameLocation":"2471:11:5","nodeType":"VariableDeclaration","scope":2551,"src":"2463:19:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2514,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2463:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2529,"initialValue":{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":2516,"name":"_domainNameAndVersionMayChange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2567,"src":"2497:30:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_bool_$","typeString":"function () pure returns (bool)"}},"id":2517,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2497:32:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"arguments":[{"id":2525,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2485,"src":"2561:7:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2524,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2555:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2523,"name":"bytes","nodeType":"ElementaryTypeName","src":"2555:5:5","typeDescriptions":{}}},"id":2526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2555:14:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2522,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2545:9:5","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2545:25:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2497:73:5","trueExpression":{"arguments":[{"hexValue":"30","id":2520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2540:1:5","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":2519,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2532:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2518,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2532:7:5","typeDescriptions":{}}},"id":2521,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2532:10:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2463:107:5"},{"expression":{"id":2532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2530,"name":"_cachedNameHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2455,"src":"2580:15:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2531,"name":"nameHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"2598:8:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2580:26:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2533,"nodeType":"ExpressionStatement","src":"2580:26:5"},{"expression":{"id":2536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2534,"name":"_cachedVersionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2457,"src":"2616:18:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2535,"name":"versionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"2637:11:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2616:32:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2537,"nodeType":"ExpressionStatement","src":"2616:32:5"},{"assignments":[2539],"declarations":[{"constant":false,"id":2539,"mutability":"mutable","name":"separator","nameLocation":"2667:9:5","nodeType":"VariableDeclaration","scope":2551,"src":"2659:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2538,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2659:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2540,"nodeType":"VariableDeclarationStatement","src":"2659:17:5"},{"condition":{"id":2543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2690:33:5","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":2541,"name":"_domainNameAndVersionMayChange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2567,"src":"2691:30:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_bool_$","typeString":"function () pure returns (bool)"}},"id":2542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2691:32:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2546,"nodeType":"IfStatement","src":"2686:489:5","trueBody":{"id":2545,"nodeType":"Block","src":"2725:450:5","statements":[{"AST":{"nativeSrc":"2795:370:5","nodeType":"YulBlock","src":"2795:370:5","statements":[{"nativeSrc":"2813:20:5","nodeType":"YulVariableDeclaration","src":"2813:20:5","value":{"arguments":[{"kind":"number","nativeSrc":"2828:4:5","nodeType":"YulLiteral","src":"2828:4:5","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"2822:5:5","nodeType":"YulIdentifier","src":"2822:5:5"},"nativeSrc":"2822:11:5","nodeType":"YulFunctionCall","src":"2822:11:5"},"variables":[{"name":"m","nativeSrc":"2817:1:5","nodeType":"YulTypedName","src":"2817:1:5","type":""}]},{"expression":{"arguments":[{"name":"m","nativeSrc":"2890:1:5","nodeType":"YulIdentifier","src":"2890:1:5"},{"name":"_DOMAIN_TYPEHASH","nativeSrc":"2893:16:5","nodeType":"YulIdentifier","src":"2893:16:5"}],"functionName":{"name":"mstore","nativeSrc":"2883:6:5","nodeType":"YulIdentifier","src":"2883:6:5"},"nativeSrc":"2883:27:5","nodeType":"YulFunctionCall","src":"2883:27:5"},"nativeSrc":"2883:27:5","nodeType":"YulExpressionStatement","src":"2883:27:5"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"2938:1:5","nodeType":"YulIdentifier","src":"2938:1:5"},{"kind":"number","nativeSrc":"2941:4:5","nodeType":"YulLiteral","src":"2941:4:5","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2934:3:5","nodeType":"YulIdentifier","src":"2934:3:5"},"nativeSrc":"2934:12:5","nodeType":"YulFunctionCall","src":"2934:12:5"},{"name":"nameHash","nativeSrc":"2948:8:5","nodeType":"YulIdentifier","src":"2948:8:5"}],"functionName":{"name":"mstore","nativeSrc":"2927:6:5","nodeType":"YulIdentifier","src":"2927:6:5"},"nativeSrc":"2927:30:5","nodeType":"YulFunctionCall","src":"2927:30:5"},"nativeSrc":"2927:30:5","nodeType":"YulExpressionStatement","src":"2927:30:5"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"2985:1:5","nodeType":"YulIdentifier","src":"2985:1:5"},{"kind":"number","nativeSrc":"2988:4:5","nodeType":"YulLiteral","src":"2988:4:5","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"2981:3:5","nodeType":"YulIdentifier","src":"2981:3:5"},"nativeSrc":"2981:12:5","nodeType":"YulFunctionCall","src":"2981:12:5"},{"name":"versionHash","nativeSrc":"2995:11:5","nodeType":"YulIdentifier","src":"2995:11:5"}],"functionName":{"name":"mstore","nativeSrc":"2974:6:5","nodeType":"YulIdentifier","src":"2974:6:5"},"nativeSrc":"2974:33:5","nodeType":"YulFunctionCall","src":"2974:33:5"},"nativeSrc":"2974:33:5","nodeType":"YulExpressionStatement","src":"2974:33:5"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"3035:1:5","nodeType":"YulIdentifier","src":"3035:1:5"},{"kind":"number","nativeSrc":"3038:4:5","nodeType":"YulLiteral","src":"3038:4:5","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"3031:3:5","nodeType":"YulIdentifier","src":"3031:3:5"},"nativeSrc":"3031:12:5","nodeType":"YulFunctionCall","src":"3031:12:5"},{"arguments":[],"functionName":{"name":"chainid","nativeSrc":"3045:7:5","nodeType":"YulIdentifier","src":"3045:7:5"},"nativeSrc":"3045:9:5","nodeType":"YulFunctionCall","src":"3045:9:5"}],"functionName":{"name":"mstore","nativeSrc":"3024:6:5","nodeType":"YulIdentifier","src":"3024:6:5"},"nativeSrc":"3024:31:5","nodeType":"YulFunctionCall","src":"3024:31:5"},"nativeSrc":"3024:31:5","nodeType":"YulExpressionStatement","src":"3024:31:5"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"3083:1:5","nodeType":"YulIdentifier","src":"3083:1:5"},{"kind":"number","nativeSrc":"3086:4:5","nodeType":"YulLiteral","src":"3086:4:5","type":"","value":"0x80"}],"functionName":{"name":"add","nativeSrc":"3079:3:5","nodeType":"YulIdentifier","src":"3079:3:5"},"nativeSrc":"3079:12:5","nodeType":"YulFunctionCall","src":"3079:12:5"},{"arguments":[],"functionName":{"name":"address","nativeSrc":"3093:7:5","nodeType":"YulIdentifier","src":"3093:7:5"},"nativeSrc":"3093:9:5","nodeType":"YulFunctionCall","src":"3093:9:5"}],"functionName":{"name":"mstore","nativeSrc":"3072:6:5","nodeType":"YulIdentifier","src":"3072:6:5"},"nativeSrc":"3072:31:5","nodeType":"YulFunctionCall","src":"3072:31:5"},"nativeSrc":"3072:31:5","nodeType":"YulExpressionStatement","src":"3072:31:5"},{"nativeSrc":"3120:31:5","nodeType":"YulAssignment","src":"3120:31:5","value":{"arguments":[{"name":"m","nativeSrc":"3143:1:5","nodeType":"YulIdentifier","src":"3143:1:5"},{"kind":"number","nativeSrc":"3146:4:5","nodeType":"YulLiteral","src":"3146:4:5","type":"","value":"0xa0"}],"functionName":{"name":"keccak256","nativeSrc":"3133:9:5","nodeType":"YulIdentifier","src":"3133:9:5"},"nativeSrc":"3133:18:5","nodeType":"YulFunctionCall","src":"3133:18:5"},"variableNames":[{"name":"separator","nativeSrc":"3120:9:5","nodeType":"YulIdentifier","src":"3120:9:5"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2449,"isOffset":false,"isSlot":false,"src":"2893:16:5","valueSize":1},{"declaration":2499,"isOffset":false,"isSlot":false,"src":"2948:8:5","valueSize":1},{"declaration":2539,"isOffset":false,"isSlot":false,"src":"3120:9:5","valueSize":1},{"declaration":2515,"isOffset":false,"isSlot":false,"src":"2995:11:5","valueSize":1}],"id":2544,"nodeType":"InlineAssembly","src":"2786:379:5"}]}},{"expression":{"id":2549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2547,"name":"_cachedDomainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2459,"src":"3184:22:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2548,"name":"separator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2539,"src":"3209:9:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3184:34:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2550,"nodeType":"ExpressionStatement","src":"3184:34:5"}]},"documentation":{"id":2460,"nodeType":"StructuredDocumentation","src":"1847:243:5","text":"@dev Cache the hashes for cheaper runtime gas costs.\n In the case of upgradeable contracts (i.e. proxies),\n or if the chain id changes due to a hard fork,\n the domain separator will be seamlessly calculated on-the-fly."},"id":2552,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2461,"nodeType":"ParameterList","parameters":[],"src":"2106:2:5"},"returnParameters":{"id":2462,"nodeType":"ParameterList","parameters":[],"src":"2109:0:5"},"scope":2745,"src":"2095:1130:5","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"documentation":{"id":2553,"nodeType":"StructuredDocumentation","src":"3514:547:5","text":"@dev Please override this function to return the domain name and version.\n ```\n     function _domainNameAndVersion()\n         internal\n         pure\n         virtual\n         returns (string memory name, string memory version)\n     {\n         name = \"Solady\";\n         version = \"1\";\n     }\n ```\n Note: If the returned result may change after the contract has been deployed,\n you must override `_domainNameAndVersionMayChange()` to return true."},"id":2560,"implemented":false,"kind":"function","modifiers":[],"name":"_domainNameAndVersion","nameLocation":"4075:21:5","nodeType":"FunctionDefinition","parameters":{"id":2554,"nodeType":"ParameterList","parameters":[],"src":"4096:2:5"},"returnParameters":{"id":2559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2556,"mutability":"mutable","name":"name","nameLocation":"4176:4:5","nodeType":"VariableDeclaration","scope":2560,"src":"4162:18:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2555,"name":"string","nodeType":"ElementaryTypeName","src":"4162:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2558,"mutability":"mutable","name":"version","nameLocation":"4196:7:5","nodeType":"VariableDeclaration","scope":2560,"src":"4182:21:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2557,"name":"string","nodeType":"ElementaryTypeName","src":"4182:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4161:43:5"},"scope":2745,"src":"4066:139:5","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2566,"nodeType":"Block","src":"4457:2:5","statements":[]},"documentation":{"id":2561,"nodeType":"StructuredDocumentation","src":"4211:155:5","text":"@dev Returns if `_domainNameAndVersion()` may change\n after the contract has been deployed (i.e. after the constructor).\n Default: false."},"id":2567,"implemented":true,"kind":"function","modifiers":[],"name":"_domainNameAndVersionMayChange","nameLocation":"4380:30:5","nodeType":"FunctionDefinition","parameters":{"id":2562,"nodeType":"ParameterList","parameters":[],"src":"4410:2:5"},"returnParameters":{"id":2565,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2564,"mutability":"mutable","name":"result","nameLocation":"4449:6:5","nodeType":"VariableDeclaration","scope":2567,"src":"4444:11:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2563,"name":"bool","nodeType":"ElementaryTypeName","src":"4444:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4443:13:5"},"scope":2745,"src":"4371:88:5","stateMutability":"pure","virtual":true,"visibility":"internal"},{"body":{"id":2595,"nodeType":"Block","src":"4877:269:5","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":2573,"name":"_domainNameAndVersionMayChange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2567,"src":"4891:30:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_bool_$","typeString":"function () pure returns (bool)"}},"id":2574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4891:32:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2593,"nodeType":"Block","src":"4991:149:5","statements":[{"expression":{"id":2583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2581,"name":"separator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2571,"src":"5005:9:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2582,"name":"_cachedDomainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2459,"src":"5017:22:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5005:34:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2584,"nodeType":"ExpressionStatement","src":"5005:34:5"},{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":2585,"name":"_cachedDomainSeparatorInvalidated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2744,"src":"5057:33:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":2586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5057:35:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2592,"nodeType":"IfStatement","src":"5053:76:5","trueBody":{"expression":{"id":2590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2587,"name":"separator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2571,"src":"5094:9:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":2588,"name":"_buildDomainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2728,"src":"5106:21:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":2589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5106:23:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5094:35:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2591,"nodeType":"ExpressionStatement","src":"5094:35:5"}}]},"id":2594,"nodeType":"IfStatement","src":"4887:253:5","trueBody":{"id":2580,"nodeType":"Block","src":"4925:60:5","statements":[{"expression":{"id":2578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2575,"name":"separator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2571,"src":"4939:9:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":2576,"name":"_buildDomainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2728,"src":"4951:21:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":2577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4951:23:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4939:35:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2579,"nodeType":"ExpressionStatement","src":"4939:35:5"}]}}]},"documentation":{"id":2568,"nodeType":"StructuredDocumentation","src":"4748:46:5","text":"@dev Returns the EIP-712 domain separator."},"id":2596,"implemented":true,"kind":"function","modifiers":[],"name":"_domainSeparator","nameLocation":"4808:16:5","nodeType":"FunctionDefinition","parameters":{"id":2569,"nodeType":"ParameterList","parameters":[],"src":"4824:2:5"},"returnParameters":{"id":2572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2571,"mutability":"mutable","name":"separator","nameLocation":"4866:9:5","nodeType":"VariableDeclaration","scope":2596,"src":"4858:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2570,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4858:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4857:19:5"},"scope":2745,"src":"4799:347:5","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2627,"nodeType":"Block","src":"5848:794:5","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":2604,"name":"_domainNameAndVersionMayChange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2567,"src":"5946:30:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_bool_$","typeString":"function () pure returns (bool)"}},"id":2605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5946:32:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2624,"nodeType":"Block","src":"6043:143:5","statements":[{"expression":{"id":2614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2612,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2602,"src":"6057:6:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2613,"name":"_cachedDomainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2459,"src":"6066:22:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6057:31:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2615,"nodeType":"ExpressionStatement","src":"6057:31:5"},{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":2616,"name":"_cachedDomainSeparatorInvalidated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2744,"src":"6106:33:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":2617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6106:35:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2623,"nodeType":"IfStatement","src":"6102:73:5","trueBody":{"expression":{"id":2621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2618,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2602,"src":"6143:6:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":2619,"name":"_buildDomainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2728,"src":"6152:21:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":2620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6152:23:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6143:32:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2622,"nodeType":"ExpressionStatement","src":"6143:32:5"}}]},"id":2625,"nodeType":"IfStatement","src":"5942:244:5","trueBody":{"id":2611,"nodeType":"Block","src":"5980:57:5","statements":[{"expression":{"id":2609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2606,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2602,"src":"5994:6:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":2607,"name":"_buildDomainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2728,"src":"6003:21:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":2608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6003:23:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"5994:32:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2610,"nodeType":"ExpressionStatement","src":"5994:32:5"}]}},{"AST":{"nativeSrc":"6247:389:5","nodeType":"YulBlock","src":"6247:389:5","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6303:4:5","nodeType":"YulLiteral","src":"6303:4:5","type":"","value":"0x00"},{"kind":"number","nativeSrc":"6309:18:5","nodeType":"YulLiteral","src":"6309:18:5","type":"","value":"0x1901000000000000"}],"functionName":{"name":"mstore","nativeSrc":"6296:6:5","nodeType":"YulIdentifier","src":"6296:6:5"},"nativeSrc":"6296:32:5","nodeType":"YulFunctionCall","src":"6296:32:5"},"nativeSrc":"6296:32:5","nodeType":"YulExpressionStatement","src":"6296:32:5"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"6369:4:5","nodeType":"YulLiteral","src":"6369:4:5","type":"","value":"0x1a"},{"name":"digest","nativeSrc":"6375:6:5","nodeType":"YulIdentifier","src":"6375:6:5"}],"functionName":{"name":"mstore","nativeSrc":"6362:6:5","nodeType":"YulIdentifier","src":"6362:6:5"},"nativeSrc":"6362:20:5","nodeType":"YulFunctionCall","src":"6362:20:5"},"nativeSrc":"6362:20:5","nodeType":"YulExpressionStatement","src":"6362:20:5"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"6433:4:5","nodeType":"YulLiteral","src":"6433:4:5","type":"","value":"0x3a"},{"name":"structHash","nativeSrc":"6439:10:5","nodeType":"YulIdentifier","src":"6439:10:5"}],"functionName":{"name":"mstore","nativeSrc":"6426:6:5","nodeType":"YulIdentifier","src":"6426:6:5"},"nativeSrc":"6426:24:5","nodeType":"YulFunctionCall","src":"6426:24:5"},"nativeSrc":"6426:24:5","nodeType":"YulExpressionStatement","src":"6426:24:5"},{"nativeSrc":"6489:31:5","nodeType":"YulAssignment","src":"6489:31:5","value":{"arguments":[{"kind":"number","nativeSrc":"6509:4:5","nodeType":"YulLiteral","src":"6509:4:5","type":"","value":"0x18"},{"kind":"number","nativeSrc":"6515:4:5","nodeType":"YulLiteral","src":"6515:4:5","type":"","value":"0x42"}],"functionName":{"name":"keccak256","nativeSrc":"6499:9:5","nodeType":"YulIdentifier","src":"6499:9:5"},"nativeSrc":"6499:21:5","nodeType":"YulFunctionCall","src":"6499:21:5"},"variableNames":[{"name":"digest","nativeSrc":"6489:6:5","nodeType":"YulIdentifier","src":"6489:6:5"}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"6618:4:5","nodeType":"YulLiteral","src":"6618:4:5","type":"","value":"0x3a"},{"kind":"number","nativeSrc":"6624:1:5","nodeType":"YulLiteral","src":"6624:1:5","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"6611:6:5","nodeType":"YulIdentifier","src":"6611:6:5"},"nativeSrc":"6611:15:5","nodeType":"YulFunctionCall","src":"6611:15:5"},"nativeSrc":"6611:15:5","nodeType":"YulExpressionStatement","src":"6611:15:5"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2602,"isOffset":false,"isSlot":false,"src":"6375:6:5","valueSize":1},{"declaration":2602,"isOffset":false,"isSlot":false,"src":"6489:6:5","valueSize":1},{"declaration":2599,"isOffset":false,"isSlot":false,"src":"6439:10:5","valueSize":1}],"id":2626,"nodeType":"InlineAssembly","src":"6238:398:5"}]},"documentation":{"id":2597,"nodeType":"StructuredDocumentation","src":"5152:600:5","text":"@dev Returns the hash of the fully encoded EIP-712 message for this domain,\n given `structHash`, as defined in\n https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct.\n The hash can be used together with {ECDSA-recover} to obtain the signer of a message:\n ```\n     bytes32 digest = _hashTypedData(keccak256(abi.encode(\n         keccak256(\"Mail(address to,string contents)\"),\n         mailTo,\n         keccak256(bytes(mailContents))\n     )));\n     address signer = ECDSA.recover(digest, signature);\n ```"},"id":2628,"implemented":true,"kind":"function","modifiers":[],"name":"_hashTypedData","nameLocation":"5766:14:5","nodeType":"FunctionDefinition","parameters":{"id":2600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2599,"mutability":"mutable","name":"structHash","nameLocation":"5789:10:5","nodeType":"VariableDeclaration","scope":2628,"src":"5781:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2598,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5781:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5780:20:5"},"returnParameters":{"id":2603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2602,"mutability":"mutable","name":"digest","nameLocation":"5840:6:5","nodeType":"VariableDeclaration","scope":2628,"src":"5832:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2601,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5832:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5831:16:5"},"scope":2745,"src":"5757:885:5","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":2678,"nodeType":"Block","src":"7317:268:5","statements":[{"expression":{"id":2649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2647,"name":"fields","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2632,"src":"7327:6:5","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"0f","id":2648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"7336:7:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_3d725c5ee53025f027da36bea8d3af3b6a3e9d2d1542d47c162631de48e66c1c","typeString":"literal_string hex\"0f\""},"value":"\u000f"},"src":"7327:16:5","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":2650,"nodeType":"ExpressionStatement","src":"7327:16:5"},{"expression":{"id":2656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2651,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2634,"src":"7368:4:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":2652,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2636,"src":"7374:7:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":2653,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"7367:15:5","typeDescriptions":{"typeIdentifier":"t_tuple$_t_string_memory_ptr_$_t_string_memory_ptr_$","typeString":"tuple(string memory,string memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":2654,"name":"_domainNameAndVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2560,"src":"7385:21:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$_t_string_memory_ptr_$","typeString":"function () view returns (string memory,string memory)"}},"id":2655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7385:23:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_string_memory_ptr_$_t_string_memory_ptr_$","typeString":"tuple(string memory,string memory)"}},"src":"7367:41:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2657,"nodeType":"ExpressionStatement","src":"7367:41:5"},{"expression":{"id":2661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2658,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2638,"src":"7418:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2659,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"7428:5:5","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":2660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7434:7:5","memberName":"chainid","nodeType":"MemberAccess","src":"7428:13:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7418:23:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2662,"nodeType":"ExpressionStatement","src":"7418:23:5"},{"expression":{"id":2668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2663,"name":"verifyingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2640,"src":"7451:17:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2666,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7479:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_EIP712_$2745","typeString":"contract EIP712"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_EIP712_$2745","typeString":"contract EIP712"}],"id":2665,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7471:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2664,"name":"address","nodeType":"ElementaryTypeName","src":"7471:7:5","typeDescriptions":{}}},"id":2667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7471:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7451:33:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2669,"nodeType":"ExpressionStatement","src":"7451:33:5"},{"expression":{"id":2672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2670,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2642,"src":"7494:4:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2671,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2642,"src":"7501:4:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7494:11:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2673,"nodeType":"ExpressionStatement","src":"7494:11:5"},{"expression":{"id":2676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2674,"name":"extensions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2645,"src":"7532:10:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2675,"name":"extensions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2645,"src":"7545:10:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"7532:23:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2677,"nodeType":"ExpressionStatement","src":"7532:23:5"}]},"documentation":{"id":2629,"nodeType":"StructuredDocumentation","src":"6931:53:5","text":"@dev See: https://eips.ethereum.org/EIPS/eip-5267"},"functionSelector":"84b0196e","id":2679,"implemented":true,"kind":"function","modifiers":[],"name":"eip712Domain","nameLocation":"6998:12:5","nodeType":"FunctionDefinition","parameters":{"id":2630,"nodeType":"ParameterList","parameters":[],"src":"7010:2:5"},"returnParameters":{"id":2646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2632,"mutability":"mutable","name":"fields","nameLocation":"7094:6:5","nodeType":"VariableDeclaration","scope":2679,"src":"7087:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":2631,"name":"bytes1","nodeType":"ElementaryTypeName","src":"7087:6:5","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"},{"constant":false,"id":2634,"mutability":"mutable","name":"name","nameLocation":"7128:4:5","nodeType":"VariableDeclaration","scope":2679,"src":"7114:18:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2633,"name":"string","nodeType":"ElementaryTypeName","src":"7114:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2636,"mutability":"mutable","name":"version","nameLocation":"7160:7:5","nodeType":"VariableDeclaration","scope":2679,"src":"7146:21:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2635,"name":"string","nodeType":"ElementaryTypeName","src":"7146:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2638,"mutability":"mutable","name":"chainId","nameLocation":"7189:7:5","nodeType":"VariableDeclaration","scope":2679,"src":"7181:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2637,"name":"uint256","nodeType":"ElementaryTypeName","src":"7181:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2640,"mutability":"mutable","name":"verifyingContract","nameLocation":"7218:17:5","nodeType":"VariableDeclaration","scope":2679,"src":"7210:25:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2639,"name":"address","nodeType":"ElementaryTypeName","src":"7210:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2642,"mutability":"mutable","name":"salt","nameLocation":"7257:4:5","nodeType":"VariableDeclaration","scope":2679,"src":"7249:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2641,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7249:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2645,"mutability":"mutable","name":"extensions","nameLocation":"7292:10:5","nodeType":"VariableDeclaration","scope":2679,"src":"7275:27:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2643,"name":"uint256","nodeType":"ElementaryTypeName","src":"7275:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2644,"nodeType":"ArrayTypeName","src":"7275:9:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"7073:239:5"},"scope":2745,"src":"6989:596:5","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":2727,"nodeType":"Block","src":"7999:876:5","statements":[{"assignments":[2686],"declarations":[{"constant":false,"id":2686,"mutability":"mutable","name":"versionHash","nameLocation":"8097:11:5","nodeType":"VariableDeclaration","scope":2727,"src":"8089:19:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2685,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8089:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2687,"nodeType":"VariableDeclarationStatement","src":"8089:19:5"},{"condition":{"arguments":[],"expression":{"argumentTypes":[],"id":2688,"name":"_domainNameAndVersionMayChange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2567,"src":"8122:30:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_bool_$","typeString":"function () pure returns (bool)"}},"id":2689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8122:32:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2724,"nodeType":"Block","src":"8357:98:5","statements":[{"expression":{"id":2718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2716,"name":"separator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2683,"src":"8371:9:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2717,"name":"_cachedNameHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2455,"src":"8383:15:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"8371:27:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2719,"nodeType":"ExpressionStatement","src":"8371:27:5"},{"expression":{"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2720,"name":"versionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2686,"src":"8412:11:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2721,"name":"_cachedVersionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2457,"src":"8426:18:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"8412:32:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2723,"nodeType":"ExpressionStatement","src":"8412:32:5"}]},"id":2725,"nodeType":"IfStatement","src":"8118:337:5","trueBody":{"id":2715,"nodeType":"Block","src":"8156:195:5","statements":[{"assignments":[2691,2693],"declarations":[{"constant":false,"id":2691,"mutability":"mutable","name":"name","nameLocation":"8185:4:5","nodeType":"VariableDeclaration","scope":2715,"src":"8171:18:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2690,"name":"string","nodeType":"ElementaryTypeName","src":"8171:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2693,"mutability":"mutable","name":"version","nameLocation":"8205:7:5","nodeType":"VariableDeclaration","scope":2715,"src":"8191:21:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2692,"name":"string","nodeType":"ElementaryTypeName","src":"8191:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":2696,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2694,"name":"_domainNameAndVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2560,"src":"8216:21:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$_t_string_memory_ptr_$","typeString":"function () view returns (string memory,string memory)"}},"id":2695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8216:23:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_string_memory_ptr_$_t_string_memory_ptr_$","typeString":"tuple(string memory,string memory)"}},"nodeType":"VariableDeclarationStatement","src":"8170:69:5"},{"expression":{"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2697,"name":"separator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2683,"src":"8253:9:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":2701,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2691,"src":"8281:4:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2700,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8275:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2699,"name":"bytes","nodeType":"ElementaryTypeName","src":"8275:5:5","typeDescriptions":{}}},"id":2702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8275:11:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2698,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8265:9:5","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8265:22:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"8253:34:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2705,"nodeType":"ExpressionStatement","src":"8253:34:5"},{"expression":{"id":2713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2706,"name":"versionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2686,"src":"8301:11:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":2710,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"8331:7:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2709,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8325:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2708,"name":"bytes","nodeType":"ElementaryTypeName","src":"8325:5:5","typeDescriptions":{}}},"id":2711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8325:14:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2707,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8315:9:5","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8315:25:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"8301:39:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":2714,"nodeType":"ExpressionStatement","src":"8301:39:5"}]}},{"AST":{"nativeSrc":"8516:353:5","nodeType":"YulBlock","src":"8516:353:5","statements":[{"nativeSrc":"8530:20:5","nodeType":"YulVariableDeclaration","src":"8530:20:5","value":{"arguments":[{"kind":"number","nativeSrc":"8545:4:5","nodeType":"YulLiteral","src":"8545:4:5","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"8539:5:5","nodeType":"YulIdentifier","src":"8539:5:5"},"nativeSrc":"8539:11:5","nodeType":"YulFunctionCall","src":"8539:11:5"},"variables":[{"name":"m","nativeSrc":"8534:1:5","nodeType":"YulTypedName","src":"8534:1:5","type":""}]},{"expression":{"arguments":[{"name":"m","nativeSrc":"8603:1:5","nodeType":"YulIdentifier","src":"8603:1:5"},{"name":"_DOMAIN_TYPEHASH","nativeSrc":"8606:16:5","nodeType":"YulIdentifier","src":"8606:16:5"}],"functionName":{"name":"mstore","nativeSrc":"8596:6:5","nodeType":"YulIdentifier","src":"8596:6:5"},"nativeSrc":"8596:27:5","nodeType":"YulFunctionCall","src":"8596:27:5"},"nativeSrc":"8596:27:5","nodeType":"YulExpressionStatement","src":"8596:27:5"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"8647:1:5","nodeType":"YulIdentifier","src":"8647:1:5"},{"kind":"number","nativeSrc":"8650:4:5","nodeType":"YulLiteral","src":"8650:4:5","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"8643:3:5","nodeType":"YulIdentifier","src":"8643:3:5"},"nativeSrc":"8643:12:5","nodeType":"YulFunctionCall","src":"8643:12:5"},{"name":"separator","nativeSrc":"8657:9:5","nodeType":"YulIdentifier","src":"8657:9:5"}],"functionName":{"name":"mstore","nativeSrc":"8636:6:5","nodeType":"YulIdentifier","src":"8636:6:5"},"nativeSrc":"8636:31:5","nodeType":"YulFunctionCall","src":"8636:31:5"},"nativeSrc":"8636:31:5","nodeType":"YulExpressionStatement","src":"8636:31:5"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"8705:1:5","nodeType":"YulIdentifier","src":"8705:1:5"},{"kind":"number","nativeSrc":"8708:4:5","nodeType":"YulLiteral","src":"8708:4:5","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"8701:3:5","nodeType":"YulIdentifier","src":"8701:3:5"},"nativeSrc":"8701:12:5","nodeType":"YulFunctionCall","src":"8701:12:5"},{"name":"versionHash","nativeSrc":"8715:11:5","nodeType":"YulIdentifier","src":"8715:11:5"}],"functionName":{"name":"mstore","nativeSrc":"8694:6:5","nodeType":"YulIdentifier","src":"8694:6:5"},"nativeSrc":"8694:33:5","nodeType":"YulFunctionCall","src":"8694:33:5"},"nativeSrc":"8694:33:5","nodeType":"YulExpressionStatement","src":"8694:33:5"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"8751:1:5","nodeType":"YulIdentifier","src":"8751:1:5"},{"kind":"number","nativeSrc":"8754:4:5","nodeType":"YulLiteral","src":"8754:4:5","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"8747:3:5","nodeType":"YulIdentifier","src":"8747:3:5"},"nativeSrc":"8747:12:5","nodeType":"YulFunctionCall","src":"8747:12:5"},{"arguments":[],"functionName":{"name":"chainid","nativeSrc":"8761:7:5","nodeType":"YulIdentifier","src":"8761:7:5"},"nativeSrc":"8761:9:5","nodeType":"YulFunctionCall","src":"8761:9:5"}],"functionName":{"name":"mstore","nativeSrc":"8740:6:5","nodeType":"YulIdentifier","src":"8740:6:5"},"nativeSrc":"8740:31:5","nodeType":"YulFunctionCall","src":"8740:31:5"},"nativeSrc":"8740:31:5","nodeType":"YulExpressionStatement","src":"8740:31:5"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"8795:1:5","nodeType":"YulIdentifier","src":"8795:1:5"},{"kind":"number","nativeSrc":"8798:4:5","nodeType":"YulLiteral","src":"8798:4:5","type":"","value":"0x80"}],"functionName":{"name":"add","nativeSrc":"8791:3:5","nodeType":"YulIdentifier","src":"8791:3:5"},"nativeSrc":"8791:12:5","nodeType":"YulFunctionCall","src":"8791:12:5"},{"arguments":[],"functionName":{"name":"address","nativeSrc":"8805:7:5","nodeType":"YulIdentifier","src":"8805:7:5"},"nativeSrc":"8805:9:5","nodeType":"YulFunctionCall","src":"8805:9:5"}],"functionName":{"name":"mstore","nativeSrc":"8784:6:5","nodeType":"YulIdentifier","src":"8784:6:5"},"nativeSrc":"8784:31:5","nodeType":"YulFunctionCall","src":"8784:31:5"},"nativeSrc":"8784:31:5","nodeType":"YulExpressionStatement","src":"8784:31:5"},{"nativeSrc":"8828:31:5","nodeType":"YulAssignment","src":"8828:31:5","value":{"arguments":[{"name":"m","nativeSrc":"8851:1:5","nodeType":"YulIdentifier","src":"8851:1:5"},{"kind":"number","nativeSrc":"8854:4:5","nodeType":"YulLiteral","src":"8854:4:5","type":"","value":"0xa0"}],"functionName":{"name":"keccak256","nativeSrc":"8841:9:5","nodeType":"YulIdentifier","src":"8841:9:5"},"nativeSrc":"8841:18:5","nodeType":"YulFunctionCall","src":"8841:18:5"},"variableNames":[{"name":"separator","nativeSrc":"8828:9:5","nodeType":"YulIdentifier","src":"8828:9:5"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2449,"isOffset":false,"isSlot":false,"src":"8606:16:5","valueSize":1},{"declaration":2683,"isOffset":false,"isSlot":false,"src":"8657:9:5","valueSize":1},{"declaration":2683,"isOffset":false,"isSlot":false,"src":"8828:9:5","valueSize":1},{"declaration":2686,"isOffset":false,"isSlot":false,"src":"8715:11:5","valueSize":1}],"id":2726,"nodeType":"InlineAssembly","src":"8507:362:5"}]},"documentation":{"id":2680,"nodeType":"StructuredDocumentation","src":"7874:46:5","text":"@dev Returns the EIP-712 domain separator."},"id":2728,"implemented":true,"kind":"function","modifiers":[],"name":"_buildDomainSeparator","nameLocation":"7934:21:5","nodeType":"FunctionDefinition","parameters":{"id":2681,"nodeType":"ParameterList","parameters":[],"src":"7955:2:5"},"returnParameters":{"id":2684,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2683,"mutability":"mutable","name":"separator","nameLocation":"7988:9:5","nodeType":"VariableDeclaration","scope":2728,"src":"7980:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2682,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7980:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7979:19:5"},"scope":2745,"src":"7925:950:5","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":2743,"nodeType":"Block","src":"9035:260:5","statements":[{"assignments":[2735],"declarations":[{"constant":false,"id":2735,"mutability":"mutable","name":"cachedChainId","nameLocation":"9053:13:5","nodeType":"VariableDeclaration","scope":2743,"src":"9045:21:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2734,"name":"uint256","nodeType":"ElementaryTypeName","src":"9045:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2737,"initialValue":{"id":2736,"name":"_cachedChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2453,"src":"9069:14:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9045:38:5"},{"assignments":[2739],"declarations":[{"constant":false,"id":2739,"mutability":"mutable","name":"cachedThis","nameLocation":"9101:10:5","nodeType":"VariableDeclaration","scope":2743,"src":"9093:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2738,"name":"uint256","nodeType":"ElementaryTypeName","src":"9093:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2741,"initialValue":{"id":2740,"name":"_cachedThis","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2451,"src":"9114:11:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9093:32:5"},{"AST":{"nativeSrc":"9187:102:5","nodeType":"YulBlock","src":"9187:102:5","statements":[{"nativeSrc":"9201:78:5","nodeType":"YulAssignment","src":"9201:78:5","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"chainid","nativeSrc":"9225:7:5","nodeType":"YulIdentifier","src":"9225:7:5"},"nativeSrc":"9225:9:5","nodeType":"YulFunctionCall","src":"9225:9:5"},{"name":"cachedChainId","nativeSrc":"9236:13:5","nodeType":"YulIdentifier","src":"9236:13:5"}],"functionName":{"name":"eq","nativeSrc":"9222:2:5","nodeType":"YulIdentifier","src":"9222:2:5"},"nativeSrc":"9222:28:5","nodeType":"YulFunctionCall","src":"9222:28:5"},{"arguments":[{"arguments":[],"functionName":{"name":"address","nativeSrc":"9255:7:5","nodeType":"YulIdentifier","src":"9255:7:5"},"nativeSrc":"9255:9:5","nodeType":"YulFunctionCall","src":"9255:9:5"},{"name":"cachedThis","nativeSrc":"9266:10:5","nodeType":"YulIdentifier","src":"9266:10:5"}],"functionName":{"name":"eq","nativeSrc":"9252:2:5","nodeType":"YulIdentifier","src":"9252:2:5"},"nativeSrc":"9252:25:5","nodeType":"YulFunctionCall","src":"9252:25:5"}],"functionName":{"name":"and","nativeSrc":"9218:3:5","nodeType":"YulIdentifier","src":"9218:3:5"},"nativeSrc":"9218:60:5","nodeType":"YulFunctionCall","src":"9218:60:5"}],"functionName":{"name":"iszero","nativeSrc":"9211:6:5","nodeType":"YulIdentifier","src":"9211:6:5"},"nativeSrc":"9211:68:5","nodeType":"YulFunctionCall","src":"9211:68:5"},"variableNames":[{"name":"result","nativeSrc":"9201:6:5","nodeType":"YulIdentifier","src":"9201:6:5"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2735,"isOffset":false,"isSlot":false,"src":"9236:13:5","valueSize":1},{"declaration":2739,"isOffset":false,"isSlot":false,"src":"9266:10:5","valueSize":1},{"declaration":2732,"isOffset":false,"isSlot":false,"src":"9201:6:5","valueSize":1}],"id":2742,"nodeType":"InlineAssembly","src":"9178:111:5"}]},"documentation":{"id":2729,"nodeType":"StructuredDocumentation","src":"8881:69:5","text":"@dev Returns if the cached domain separator has been invalidated."},"id":2744,"implemented":true,"kind":"function","modifiers":[],"name":"_cachedDomainSeparatorInvalidated","nameLocation":"8964:33:5","nodeType":"FunctionDefinition","parameters":{"id":2730,"nodeType":"ParameterList","parameters":[],"src":"8997:2:5"},"returnParameters":{"id":2733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2732,"mutability":"mutable","name":"result","nameLocation":"9027:6:5","nodeType":"VariableDeclaration","scope":2744,"src":"9022:11:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2731,"name":"bool","nodeType":"ElementaryTypeName","src":"9022:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9021:13:5"},"scope":2745,"src":"8955:340:5","stateMutability":"view","virtual":false,"visibility":"private"}],"scope":2746,"src":"771:8526:5","usedErrors":[],"usedEvents":[]}],"src":"32:9266:5"},"id":5},"solady/src/utils/SafeTransferLib.sol":{"ast":{"absolutePath":"solady/src/utils/SafeTransferLib.sol","exportedSymbols":{"SafeTransferLib":[2941]},"id":2942,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2747,"literals":["solidity","^","0.8",".4"],"nodeType":"PragmaDirective","src":"32:23:6"},{"abstract":false,"baseContracts":[],"canonicalName":"SafeTransferLib","contractDependencies":[],"contractKind":"library","documentation":{"id":2748,"nodeType":"StructuredDocumentation","src":"57:532:6","text":"@notice Safe ETH and ERC20 transfer library that gracefully handles missing return values.\n @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/SafeTransferLib.sol)\n @author Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/SafeTransferLib.sol)\n @dev Note:\n - For ETH transfers, please use `forceSafeTransferETH` for DoS protection.\n - For ERC20s, this implementation won't check that a token has code,\n   responsibility is delegated to the caller."},"fullyImplemented":true,"id":2941,"linearizedBaseContracts":[2941],"name":"SafeTransferLib","nameLocation":"597:15:6","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2749,"nodeType":"StructuredDocumentation","src":"902:37:6","text":"@dev The ETH transfer has failed."},"errorSelector":"b12d13eb","id":2751,"name":"ETHTransferFailed","nameLocation":"950:17:6","nodeType":"ErrorDefinition","parameters":{"id":2750,"nodeType":"ParameterList","parameters":[],"src":"967:2:6"},"src":"944:26:6"},{"documentation":{"id":2752,"nodeType":"StructuredDocumentation","src":"976:45:6","text":"@dev The ERC20 `transferFrom` has failed."},"errorSelector":"7939f424","id":2754,"name":"TransferFromFailed","nameLocation":"1032:18:6","nodeType":"ErrorDefinition","parameters":{"id":2753,"nodeType":"ParameterList","parameters":[],"src":"1050:2:6"},"src":"1026:27:6"},{"documentation":{"id":2755,"nodeType":"StructuredDocumentation","src":"1059:41:6","text":"@dev The ERC20 `transfer` has failed."},"errorSelector":"90b8ec18","id":2757,"name":"TransferFailed","nameLocation":"1111:14:6","nodeType":"ErrorDefinition","parameters":{"id":2756,"nodeType":"ParameterList","parameters":[],"src":"1125:2:6"},"src":"1105:23:6"},{"documentation":{"id":2758,"nodeType":"StructuredDocumentation","src":"1134:40:6","text":"@dev The ERC20 `approve` has failed."},"errorSelector":"3e3f8f73","id":2760,"name":"ApproveFailed","nameLocation":"1185:13:6","nodeType":"ErrorDefinition","parameters":{"id":2759,"nodeType":"ParameterList","parameters":[],"src":"1198:2:6"},"src":"1179:22:6"},{"constant":true,"documentation":{"id":2761,"nodeType":"StructuredDocumentation","src":"1490:92:6","text":"@dev Suggested gas stipend for contract receiving ETH that disallows any storage writes."},"id":2764,"mutability":"constant","name":"GAS_STIPEND_NO_STORAGE_WRITES","nameLocation":"1613:29:6","nodeType":"VariableDeclaration","scope":2941,"src":"1587:62:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2762,"name":"uint256","nodeType":"ElementaryTypeName","src":"1587:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32333030","id":2763,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1645:4:6","typeDescriptions":{"typeIdentifier":"t_rational_2300_by_1","typeString":"int_const 2300"},"value":"2300"},"visibility":"internal"},{"constant":true,"documentation":{"id":2765,"nodeType":"StructuredDocumentation","src":"1656:144:6","text":"@dev Suggested gas stipend for contract receiving ETH to perform a few\n storage reads and writes, but low enough to prevent griefing."},"id":2768,"mutability":"constant","name":"GAS_STIPEND_NO_GRIEF","nameLocation":"1831:20:6","nodeType":"VariableDeclaration","scope":2941,"src":"1805:55:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2766,"name":"uint256","nodeType":"ElementaryTypeName","src":"1805:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313030303030","id":2767,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1854:6:6","typeDescriptions":{"typeIdentifier":"t_rational_100000_by_1","typeString":"int_const 100000"},"value":"100000"},"visibility":"internal"},{"body":{"id":2777,"nodeType":"Block","src":"3165:280:6","statements":[{"AST":{"nativeSrc":"3227:212:6","nodeType":"YulBlock","src":"3227:212:6","statements":[{"body":{"nativeSrc":"3312:117:6","nodeType":"YulBlock","src":"3312:117:6","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3337:4:6","nodeType":"YulLiteral","src":"3337:4:6","type":"","value":"0x00"},{"kind":"number","nativeSrc":"3343:10:6","nodeType":"YulLiteral","src":"3343:10:6","type":"","value":"0xb12d13eb"}],"functionName":{"name":"mstore","nativeSrc":"3330:6:6","nodeType":"YulIdentifier","src":"3330:6:6"},"nativeSrc":"3330:24:6","nodeType":"YulFunctionCall","src":"3330:24:6"},"nativeSrc":"3330:24:6","nodeType":"YulExpressionStatement","src":"3330:24:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3404:4:6","nodeType":"YulLiteral","src":"3404:4:6","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"3410:4:6","nodeType":"YulLiteral","src":"3410:4:6","type":"","value":"0x04"}],"functionName":{"name":"revert","nativeSrc":"3397:6:6","nodeType":"YulIdentifier","src":"3397:6:6"},"nativeSrc":"3397:18:6","nodeType":"YulFunctionCall","src":"3397:18:6"},"nativeSrc":"3397:18:6","nodeType":"YulExpressionStatement","src":"3397:18:6"}]},"condition":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"3256:3:6","nodeType":"YulIdentifier","src":"3256:3:6"},"nativeSrc":"3256:5:6","nodeType":"YulFunctionCall","src":"3256:5:6"},{"name":"to","nativeSrc":"3263:2:6","nodeType":"YulIdentifier","src":"3263:2:6"},{"name":"amount","nativeSrc":"3267:6:6","nodeType":"YulIdentifier","src":"3267:6:6"},{"arguments":[],"functionName":{"name":"codesize","nativeSrc":"3275:8:6","nodeType":"YulIdentifier","src":"3275:8:6"},"nativeSrc":"3275:10:6","nodeType":"YulFunctionCall","src":"3275:10:6"},{"kind":"number","nativeSrc":"3287:4:6","nodeType":"YulLiteral","src":"3287:4:6","type":"","value":"0x00"},{"arguments":[],"functionName":{"name":"codesize","nativeSrc":"3293:8:6","nodeType":"YulIdentifier","src":"3293:8:6"},"nativeSrc":"3293:10:6","nodeType":"YulFunctionCall","src":"3293:10:6"},{"kind":"number","nativeSrc":"3305:4:6","nodeType":"YulLiteral","src":"3305:4:6","type":"","value":"0x00"}],"functionName":{"name":"call","nativeSrc":"3251:4:6","nodeType":"YulIdentifier","src":"3251:4:6"},"nativeSrc":"3251:59:6","nodeType":"YulFunctionCall","src":"3251:59:6"}],"functionName":{"name":"iszero","nativeSrc":"3244:6:6","nodeType":"YulIdentifier","src":"3244:6:6"},"nativeSrc":"3244:67:6","nodeType":"YulFunctionCall","src":"3244:67:6"},"nativeSrc":"3241:188:6","nodeType":"YulIf","src":"3241:188:6"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2773,"isOffset":false,"isSlot":false,"src":"3267:6:6","valueSize":1},{"declaration":2771,"isOffset":false,"isSlot":false,"src":"3263:2:6","valueSize":1}],"id":2776,"nodeType":"InlineAssembly","src":"3218:221:6"}]},"documentation":{"id":2769,"nodeType":"StructuredDocumentation","src":"3053:45:6","text":"@dev Sends `amount` (in wei) ETH to `to`."},"id":2778,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferETH","nameLocation":"3112:15:6","nodeType":"FunctionDefinition","parameters":{"id":2774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2771,"mutability":"mutable","name":"to","nameLocation":"3136:2:6","nodeType":"VariableDeclaration","scope":2778,"src":"3128:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2770,"name":"address","nodeType":"ElementaryTypeName","src":"3128:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2773,"mutability":"mutable","name":"amount","nameLocation":"3148:6:6","nodeType":"VariableDeclaration","scope":2778,"src":"3140:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2772,"name":"uint256","nodeType":"ElementaryTypeName","src":"3140:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3127:28:6"},"returnParameters":{"id":2775,"nodeType":"ParameterList","parameters":[],"src":"3165:0:6"},"scope":2941,"src":"3103:342:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2785,"nodeType":"Block","src":"3564:357:6","statements":[{"AST":{"nativeSrc":"3626:289:6","nodeType":"YulBlock","src":"3626:289:6","statements":[{"body":{"nativeSrc":"3788:117:6","nodeType":"YulBlock","src":"3788:117:6","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3813:4:6","nodeType":"YulLiteral","src":"3813:4:6","type":"","value":"0x00"},{"kind":"number","nativeSrc":"3819:10:6","nodeType":"YulLiteral","src":"3819:10:6","type":"","value":"0xb12d13eb"}],"functionName":{"name":"mstore","nativeSrc":"3806:6:6","nodeType":"YulIdentifier","src":"3806:6:6"},"nativeSrc":"3806:24:6","nodeType":"YulFunctionCall","src":"3806:24:6"},"nativeSrc":"3806:24:6","nodeType":"YulExpressionStatement","src":"3806:24:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3880:4:6","nodeType":"YulLiteral","src":"3880:4:6","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"3886:4:6","nodeType":"YulLiteral","src":"3886:4:6","type":"","value":"0x04"}],"functionName":{"name":"revert","nativeSrc":"3873:6:6","nodeType":"YulIdentifier","src":"3873:6:6"},"nativeSrc":"3873:18:6","nodeType":"YulFunctionCall","src":"3873:18:6"},"nativeSrc":"3873:18:6","nodeType":"YulExpressionStatement","src":"3873:18:6"}]},"condition":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"3725:3:6","nodeType":"YulIdentifier","src":"3725:3:6"},"nativeSrc":"3725:5:6","nodeType":"YulFunctionCall","src":"3725:5:6"},{"name":"to","nativeSrc":"3732:2:6","nodeType":"YulIdentifier","src":"3732:2:6"},{"arguments":[],"functionName":{"name":"selfbalance","nativeSrc":"3736:11:6","nodeType":"YulIdentifier","src":"3736:11:6"},"nativeSrc":"3736:13:6","nodeType":"YulFunctionCall","src":"3736:13:6"},{"arguments":[],"functionName":{"name":"codesize","nativeSrc":"3751:8:6","nodeType":"YulIdentifier","src":"3751:8:6"},"nativeSrc":"3751:10:6","nodeType":"YulFunctionCall","src":"3751:10:6"},{"kind":"number","nativeSrc":"3763:4:6","nodeType":"YulLiteral","src":"3763:4:6","type":"","value":"0x00"},{"arguments":[],"functionName":{"name":"codesize","nativeSrc":"3769:8:6","nodeType":"YulIdentifier","src":"3769:8:6"},"nativeSrc":"3769:10:6","nodeType":"YulFunctionCall","src":"3769:10:6"},{"kind":"number","nativeSrc":"3781:4:6","nodeType":"YulLiteral","src":"3781:4:6","type":"","value":"0x00"}],"functionName":{"name":"call","nativeSrc":"3720:4:6","nodeType":"YulIdentifier","src":"3720:4:6"},"nativeSrc":"3720:66:6","nodeType":"YulFunctionCall","src":"3720:66:6"}],"functionName":{"name":"iszero","nativeSrc":"3713:6:6","nodeType":"YulIdentifier","src":"3713:6:6"},"nativeSrc":"3713:74:6","nodeType":"YulFunctionCall","src":"3713:74:6"},"nativeSrc":"3710:195:6","nodeType":"YulIf","src":"3710:195:6"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2781,"isOffset":false,"isSlot":false,"src":"3732:2:6","valueSize":1}],"id":2784,"nodeType":"InlineAssembly","src":"3617:298:6"}]},"documentation":{"id":2779,"nodeType":"StructuredDocumentation","src":"3451:59:6","text":"@dev Sends all the ETH in the current contract to `to`."},"id":2786,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferAllETH","nameLocation":"3524:18:6","nodeType":"FunctionDefinition","parameters":{"id":2782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2781,"mutability":"mutable","name":"to","nameLocation":"3551:2:6","nodeType":"VariableDeclaration","scope":2786,"src":"3543:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2780,"name":"address","nodeType":"ElementaryTypeName","src":"3543:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3542:12:6"},"returnParameters":{"id":2783,"nodeType":"ParameterList","parameters":[],"src":"3564:0:6"},"scope":2941,"src":"3515:406:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2797,"nodeType":"Block","src":"4091:644:6","statements":[{"AST":{"nativeSrc":"4153:576:6","nodeType":"YulBlock","src":"4153:576:6","statements":[{"body":{"nativeSrc":"4196:117:6","nodeType":"YulBlock","src":"4196:117:6","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4221:4:6","nodeType":"YulLiteral","src":"4221:4:6","type":"","value":"0x00"},{"kind":"number","nativeSrc":"4227:10:6","nodeType":"YulLiteral","src":"4227:10:6","type":"","value":"0xb12d13eb"}],"functionName":{"name":"mstore","nativeSrc":"4214:6:6","nodeType":"YulIdentifier","src":"4214:6:6"},"nativeSrc":"4214:24:6","nodeType":"YulFunctionCall","src":"4214:24:6"},"nativeSrc":"4214:24:6","nodeType":"YulExpressionStatement","src":"4214:24:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4288:4:6","nodeType":"YulLiteral","src":"4288:4:6","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"4294:4:6","nodeType":"YulLiteral","src":"4294:4:6","type":"","value":"0x04"}],"functionName":{"name":"revert","nativeSrc":"4281:6:6","nodeType":"YulIdentifier","src":"4281:6:6"},"nativeSrc":"4281:18:6","nodeType":"YulFunctionCall","src":"4281:18:6"},"nativeSrc":"4281:18:6","nodeType":"YulExpressionStatement","src":"4281:18:6"}]},"condition":{"arguments":[{"arguments":[],"functionName":{"name":"selfbalance","nativeSrc":"4173:11:6","nodeType":"YulIdentifier","src":"4173:11:6"},"nativeSrc":"4173:13:6","nodeType":"YulFunctionCall","src":"4173:13:6"},{"name":"amount","nativeSrc":"4188:6:6","nodeType":"YulIdentifier","src":"4188:6:6"}],"functionName":{"name":"lt","nativeSrc":"4170:2:6","nodeType":"YulIdentifier","src":"4170:2:6"},"nativeSrc":"4170:25:6","nodeType":"YulFunctionCall","src":"4170:25:6"},"nativeSrc":"4167:146:6","nodeType":"YulIf","src":"4167:146:6"},{"body":{"nativeSrc":"4402:317:6","nodeType":"YulBlock","src":"4402:317:6","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4427:4:6","nodeType":"YulLiteral","src":"4427:4:6","type":"","value":"0x00"},{"name":"to","nativeSrc":"4433:2:6","nodeType":"YulIdentifier","src":"4433:2:6"}],"functionName":{"name":"mstore","nativeSrc":"4420:6:6","nodeType":"YulIdentifier","src":"4420:6:6"},"nativeSrc":"4420:16:6","nodeType":"YulFunctionCall","src":"4420:16:6"},"nativeSrc":"4420:16:6","nodeType":"YulExpressionStatement","src":"4420:16:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4500:4:6","nodeType":"YulLiteral","src":"4500:4:6","type":"","value":"0x0b"},{"kind":"number","nativeSrc":"4506:4:6","nodeType":"YulLiteral","src":"4506:4:6","type":"","value":"0x73"}],"functionName":{"name":"mstore8","nativeSrc":"4492:7:6","nodeType":"YulIdentifier","src":"4492:7:6"},"nativeSrc":"4492:19:6","nodeType":"YulFunctionCall","src":"4492:19:6"},"nativeSrc":"4492:19:6","nodeType":"YulExpressionStatement","src":"4492:19:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4556:4:6","nodeType":"YulLiteral","src":"4556:4:6","type":"","value":"0x20"},{"kind":"number","nativeSrc":"4562:4:6","nodeType":"YulLiteral","src":"4562:4:6","type":"","value":"0xff"}],"functionName":{"name":"mstore8","nativeSrc":"4548:7:6","nodeType":"YulIdentifier","src":"4548:7:6"},"nativeSrc":"4548:19:6","nodeType":"YulFunctionCall","src":"4548:19:6"},"nativeSrc":"4548:19:6","nodeType":"YulExpressionStatement","src":"4548:19:6"},{"body":{"nativeSrc":"4648:34:6","nodeType":"YulBlock","src":"4648:34:6","statements":[{"expression":{"arguments":[{"arguments":[],"functionName":{"name":"codesize","nativeSrc":"4657:8:6","nodeType":"YulIdentifier","src":"4657:8:6"},"nativeSrc":"4657:10:6","nodeType":"YulFunctionCall","src":"4657:10:6"},{"arguments":[],"functionName":{"name":"codesize","nativeSrc":"4669:8:6","nodeType":"YulIdentifier","src":"4669:8:6"},"nativeSrc":"4669:10:6","nodeType":"YulFunctionCall","src":"4669:10:6"}],"functionName":{"name":"revert","nativeSrc":"4650:6:6","nodeType":"YulIdentifier","src":"4650:6:6"},"nativeSrc":"4650:30:6","nodeType":"YulFunctionCall","src":"4650:30:6"},"nativeSrc":"4650:30:6","nodeType":"YulExpressionStatement","src":"4650:30:6"}]},"condition":{"arguments":[{"arguments":[{"name":"amount","nativeSrc":"4627:6:6","nodeType":"YulIdentifier","src":"4627:6:6"},{"kind":"number","nativeSrc":"4635:4:6","nodeType":"YulLiteral","src":"4635:4:6","type":"","value":"0x0b"},{"kind":"number","nativeSrc":"4641:4:6","nodeType":"YulLiteral","src":"4641:4:6","type":"","value":"0x16"}],"functionName":{"name":"create","nativeSrc":"4620:6:6","nodeType":"YulIdentifier","src":"4620:6:6"},"nativeSrc":"4620:26:6","nodeType":"YulFunctionCall","src":"4620:26:6"}],"functionName":{"name":"iszero","nativeSrc":"4613:6:6","nodeType":"YulIdentifier","src":"4613:6:6"},"nativeSrc":"4613:34:6","nodeType":"YulFunctionCall","src":"4613:34:6"},"nativeSrc":"4610:72:6","nodeType":"YulIf","src":"4610:72:6"}]},"condition":{"arguments":[{"arguments":[{"name":"gasStipend","nativeSrc":"4341:10:6","nodeType":"YulIdentifier","src":"4341:10:6"},{"name":"to","nativeSrc":"4353:2:6","nodeType":"YulIdentifier","src":"4353:2:6"},{"name":"amount","nativeSrc":"4357:6:6","nodeType":"YulIdentifier","src":"4357:6:6"},{"arguments":[],"functionName":{"name":"codesize","nativeSrc":"4365:8:6","nodeType":"YulIdentifier","src":"4365:8:6"},"nativeSrc":"4365:10:6","nodeType":"YulFunctionCall","src":"4365:10:6"},{"kind":"number","nativeSrc":"4377:4:6","nodeType":"YulLiteral","src":"4377:4:6","type":"","value":"0x00"},{"arguments":[],"functionName":{"name":"codesize","nativeSrc":"4383:8:6","nodeType":"YulIdentifier","src":"4383:8:6"},"nativeSrc":"4383:10:6","nodeType":"YulFunctionCall","src":"4383:10:6"},{"kind":"number","nativeSrc":"4395:4:6","nodeType":"YulLiteral","src":"4395:4:6","type":"","value":"0x00"}],"functionName":{"name":"call","nativeSrc":"4336:4:6","nodeType":"YulIdentifier","src":"4336:4:6"},"nativeSrc":"4336:64:6","nodeType":"YulFunctionCall","src":"4336:64:6"}],"functionName":{"name":"iszero","nativeSrc":"4329:6:6","nodeType":"YulIdentifier","src":"4329:6:6"},"nativeSrc":"4329:72:6","nodeType":"YulFunctionCall","src":"4329:72:6"},"nativeSrc":"4326:393:6","nodeType":"YulIf","src":"4326:393:6"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2791,"isOffset":false,"isSlot":false,"src":"4188:6:6","valueSize":1},{"declaration":2791,"isOffset":false,"isSlot":false,"src":"4357:6:6","valueSize":1},{"declaration":2791,"isOffset":false,"isSlot":false,"src":"4627:6:6","valueSize":1},{"declaration":2793,"isOffset":false,"isSlot":false,"src":"4341:10:6","valueSize":1},{"declaration":2789,"isOffset":false,"isSlot":false,"src":"4353:2:6","valueSize":1},{"declaration":2789,"isOffset":false,"isSlot":false,"src":"4433:2:6","valueSize":1}],"id":2796,"nodeType":"InlineAssembly","src":"4144:585:6"}]},"documentation":{"id":2787,"nodeType":"StructuredDocumentation","src":"3927:72:6","text":"@dev Force sends `amount` (in wei) ETH to `to`, with a `gasStipend`."},"id":2798,"implemented":true,"kind":"function","modifiers":[],"name":"forceSafeTransferETH","nameLocation":"4013:20:6","nodeType":"FunctionDefinition","parameters":{"id":2794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2789,"mutability":"mutable","name":"to","nameLocation":"4042:2:6","nodeType":"VariableDeclaration","scope":2798,"src":"4034:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2788,"name":"address","nodeType":"ElementaryTypeName","src":"4034:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2791,"mutability":"mutable","name":"amount","nameLocation":"4054:6:6","nodeType":"VariableDeclaration","scope":2798,"src":"4046:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2790,"name":"uint256","nodeType":"ElementaryTypeName","src":"4046:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2793,"mutability":"mutable","name":"gasStipend","nameLocation":"4070:10:6","nodeType":"VariableDeclaration","scope":2798,"src":"4062:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2792,"name":"uint256","nodeType":"ElementaryTypeName","src":"4062:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4033:48:6"},"returnParameters":{"id":2795,"nodeType":"ParameterList","parameters":[],"src":"4091:0:6"},"scope":2941,"src":"4004:731:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2807,"nodeType":"Block","src":"4906:499:6","statements":[{"AST":{"nativeSrc":"4968:431:6","nodeType":"YulBlock","src":"4968:431:6","statements":[{"body":{"nativeSrc":"5065:324:6","nodeType":"YulBlock","src":"5065:324:6","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5090:4:6","nodeType":"YulLiteral","src":"5090:4:6","type":"","value":"0x00"},{"name":"to","nativeSrc":"5096:2:6","nodeType":"YulIdentifier","src":"5096:2:6"}],"functionName":{"name":"mstore","nativeSrc":"5083:6:6","nodeType":"YulIdentifier","src":"5083:6:6"},"nativeSrc":"5083:16:6","nodeType":"YulFunctionCall","src":"5083:16:6"},"nativeSrc":"5083:16:6","nodeType":"YulExpressionStatement","src":"5083:16:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"5163:4:6","nodeType":"YulLiteral","src":"5163:4:6","type":"","value":"0x0b"},{"kind":"number","nativeSrc":"5169:4:6","nodeType":"YulLiteral","src":"5169:4:6","type":"","value":"0x73"}],"functionName":{"name":"mstore8","nativeSrc":"5155:7:6","nodeType":"YulIdentifier","src":"5155:7:6"},"nativeSrc":"5155:19:6","nodeType":"YulFunctionCall","src":"5155:19:6"},"nativeSrc":"5155:19:6","nodeType":"YulExpressionStatement","src":"5155:19:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"5219:4:6","nodeType":"YulLiteral","src":"5219:4:6","type":"","value":"0x20"},{"kind":"number","nativeSrc":"5225:4:6","nodeType":"YulLiteral","src":"5225:4:6","type":"","value":"0xff"}],"functionName":{"name":"mstore8","nativeSrc":"5211:7:6","nodeType":"YulIdentifier","src":"5211:7:6"},"nativeSrc":"5211:19:6","nodeType":"YulFunctionCall","src":"5211:19:6"},"nativeSrc":"5211:19:6","nodeType":"YulExpressionStatement","src":"5211:19:6"},{"body":{"nativeSrc":"5318:34:6","nodeType":"YulBlock","src":"5318:34:6","statements":[{"expression":{"arguments":[{"arguments":[],"functionName":{"name":"codesize","nativeSrc":"5327:8:6","nodeType":"YulIdentifier","src":"5327:8:6"},"nativeSrc":"5327:10:6","nodeType":"YulFunctionCall","src":"5327:10:6"},{"arguments":[],"functionName":{"name":"codesize","nativeSrc":"5339:8:6","nodeType":"YulIdentifier","src":"5339:8:6"},"nativeSrc":"5339:10:6","nodeType":"YulFunctionCall","src":"5339:10:6"}],"functionName":{"name":"revert","nativeSrc":"5320:6:6","nodeType":"YulIdentifier","src":"5320:6:6"},"nativeSrc":"5320:30:6","nodeType":"YulFunctionCall","src":"5320:30:6"},"nativeSrc":"5320:30:6","nodeType":"YulExpressionStatement","src":"5320:30:6"}]},"condition":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"selfbalance","nativeSrc":"5290:11:6","nodeType":"YulIdentifier","src":"5290:11:6"},"nativeSrc":"5290:13:6","nodeType":"YulFunctionCall","src":"5290:13:6"},{"kind":"number","nativeSrc":"5305:4:6","nodeType":"YulLiteral","src":"5305:4:6","type":"","value":"0x0b"},{"kind":"number","nativeSrc":"5311:4:6","nodeType":"YulLiteral","src":"5311:4:6","type":"","value":"0x16"}],"functionName":{"name":"create","nativeSrc":"5283:6:6","nodeType":"YulIdentifier","src":"5283:6:6"},"nativeSrc":"5283:33:6","nodeType":"YulFunctionCall","src":"5283:33:6"}],"functionName":{"name":"iszero","nativeSrc":"5276:6:6","nodeType":"YulIdentifier","src":"5276:6:6"},"nativeSrc":"5276:41:6","nodeType":"YulFunctionCall","src":"5276:41:6"},"nativeSrc":"5273:79:6","nodeType":"YulIf","src":"5273:79:6"}]},"condition":{"arguments":[{"arguments":[{"name":"gasStipend","nativeSrc":"4997:10:6","nodeType":"YulIdentifier","src":"4997:10:6"},{"name":"to","nativeSrc":"5009:2:6","nodeType":"YulIdentifier","src":"5009:2:6"},{"arguments":[],"functionName":{"name":"selfbalance","nativeSrc":"5013:11:6","nodeType":"YulIdentifier","src":"5013:11:6"},"nativeSrc":"5013:13:6","nodeType":"YulFunctionCall","src":"5013:13:6"},{"arguments":[],"functionName":{"name":"codesize","nativeSrc":"5028:8:6","nodeType":"YulIdentifier","src":"5028:8:6"},"nativeSrc":"5028:10:6","nodeType":"YulFunctionCall","src":"5028:10:6"},{"kind":"number","nativeSrc":"5040:4:6","nodeType":"YulLiteral","src":"5040:4:6","type":"","value":"0x00"},{"arguments":[],"functionName":{"name":"codesize","nativeSrc":"5046:8:6","nodeType":"YulIdentifier","src":"5046:8:6"},"nativeSrc":"5046:10:6","nodeType":"YulFunctionCall","src":"5046:10:6"},{"kind":"number","nativeSrc":"5058:4:6","nodeType":"YulLiteral","src":"5058:4:6","type":"","value":"0x00"}],"functionName":{"name":"call","nativeSrc":"4992:4:6","nodeType":"YulIdentifier","src":"4992:4:6"},"nativeSrc":"4992:71:6","nodeType":"YulFunctionCall","src":"4992:71:6"}],"functionName":{"name":"iszero","nativeSrc":"4985:6:6","nodeType":"YulIdentifier","src":"4985:6:6"},"nativeSrc":"4985:79:6","nodeType":"YulFunctionCall","src":"4985:79:6"},"nativeSrc":"4982:407:6","nodeType":"YulIf","src":"4982:407:6"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2803,"isOffset":false,"isSlot":false,"src":"4997:10:6","valueSize":1},{"declaration":2801,"isOffset":false,"isSlot":false,"src":"5009:2:6","valueSize":1},{"declaration":2801,"isOffset":false,"isSlot":false,"src":"5096:2:6","valueSize":1}],"id":2806,"nodeType":"InlineAssembly","src":"4959:440:6"}]},"documentation":{"id":2799,"nodeType":"StructuredDocumentation","src":"4741:86:6","text":"@dev Force sends all the ETH in the current contract to `to`, with a `gasStipend`."},"id":2808,"implemented":true,"kind":"function","modifiers":[],"name":"forceSafeTransferAllETH","nameLocation":"4841:23:6","nodeType":"FunctionDefinition","parameters":{"id":2804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2801,"mutability":"mutable","name":"to","nameLocation":"4873:2:6","nodeType":"VariableDeclaration","scope":2808,"src":"4865:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2800,"name":"address","nodeType":"ElementaryTypeName","src":"4865:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2803,"mutability":"mutable","name":"gasStipend","nameLocation":"4885:10:6","nodeType":"VariableDeclaration","scope":2808,"src":"4877:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2802,"name":"uint256","nodeType":"ElementaryTypeName","src":"4877:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4864:32:6"},"returnParameters":{"id":2805,"nodeType":"ParameterList","parameters":[],"src":"4906:0:6"},"scope":2941,"src":"4832:573:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2817,"nodeType":"Block","src":"5563:654:6","statements":[{"AST":{"nativeSrc":"5625:586:6","nodeType":"YulBlock","src":"5625:586:6","statements":[{"body":{"nativeSrc":"5668:117:6","nodeType":"YulBlock","src":"5668:117:6","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5693:4:6","nodeType":"YulLiteral","src":"5693:4:6","type":"","value":"0x00"},{"kind":"number","nativeSrc":"5699:10:6","nodeType":"YulLiteral","src":"5699:10:6","type":"","value":"0xb12d13eb"}],"functionName":{"name":"mstore","nativeSrc":"5686:6:6","nodeType":"YulIdentifier","src":"5686:6:6"},"nativeSrc":"5686:24:6","nodeType":"YulFunctionCall","src":"5686:24:6"},"nativeSrc":"5686:24:6","nodeType":"YulExpressionStatement","src":"5686:24:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"5760:4:6","nodeType":"YulLiteral","src":"5760:4:6","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"5766:4:6","nodeType":"YulLiteral","src":"5766:4:6","type":"","value":"0x04"}],"functionName":{"name":"revert","nativeSrc":"5753:6:6","nodeType":"YulIdentifier","src":"5753:6:6"},"nativeSrc":"5753:18:6","nodeType":"YulFunctionCall","src":"5753:18:6"},"nativeSrc":"5753:18:6","nodeType":"YulExpressionStatement","src":"5753:18:6"}]},"condition":{"arguments":[{"arguments":[],"functionName":{"name":"selfbalance","nativeSrc":"5645:11:6","nodeType":"YulIdentifier","src":"5645:11:6"},"nativeSrc":"5645:13:6","nodeType":"YulFunctionCall","src":"5645:13:6"},{"name":"amount","nativeSrc":"5660:6:6","nodeType":"YulIdentifier","src":"5660:6:6"}],"functionName":{"name":"lt","nativeSrc":"5642:2:6","nodeType":"YulIdentifier","src":"5642:2:6"},"nativeSrc":"5642:25:6","nodeType":"YulFunctionCall","src":"5642:25:6"},"nativeSrc":"5639:146:6","nodeType":"YulIf","src":"5639:146:6"},{"body":{"nativeSrc":"5884:317:6","nodeType":"YulBlock","src":"5884:317:6","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5909:4:6","nodeType":"YulLiteral","src":"5909:4:6","type":"","value":"0x00"},{"name":"to","nativeSrc":"5915:2:6","nodeType":"YulIdentifier","src":"5915:2:6"}],"functionName":{"name":"mstore","nativeSrc":"5902:6:6","nodeType":"YulIdentifier","src":"5902:6:6"},"nativeSrc":"5902:16:6","nodeType":"YulFunctionCall","src":"5902:16:6"},"nativeSrc":"5902:16:6","nodeType":"YulExpressionStatement","src":"5902:16:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"5982:4:6","nodeType":"YulLiteral","src":"5982:4:6","type":"","value":"0x0b"},{"kind":"number","nativeSrc":"5988:4:6","nodeType":"YulLiteral","src":"5988:4:6","type":"","value":"0x73"}],"functionName":{"name":"mstore8","nativeSrc":"5974:7:6","nodeType":"YulIdentifier","src":"5974:7:6"},"nativeSrc":"5974:19:6","nodeType":"YulFunctionCall","src":"5974:19:6"},"nativeSrc":"5974:19:6","nodeType":"YulExpressionStatement","src":"5974:19:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"6038:4:6","nodeType":"YulLiteral","src":"6038:4:6","type":"","value":"0x20"},{"kind":"number","nativeSrc":"6044:4:6","nodeType":"YulLiteral","src":"6044:4:6","type":"","value":"0xff"}],"functionName":{"name":"mstore8","nativeSrc":"6030:7:6","nodeType":"YulIdentifier","src":"6030:7:6"},"nativeSrc":"6030:19:6","nodeType":"YulFunctionCall","src":"6030:19:6"},"nativeSrc":"6030:19:6","nodeType":"YulExpressionStatement","src":"6030:19:6"},{"body":{"nativeSrc":"6130:34:6","nodeType":"YulBlock","src":"6130:34:6","statements":[{"expression":{"arguments":[{"arguments":[],"functionName":{"name":"codesize","nativeSrc":"6139:8:6","nodeType":"YulIdentifier","src":"6139:8:6"},"nativeSrc":"6139:10:6","nodeType":"YulFunctionCall","src":"6139:10:6"},{"arguments":[],"functionName":{"name":"codesize","nativeSrc":"6151:8:6","nodeType":"YulIdentifier","src":"6151:8:6"},"nativeSrc":"6151:10:6","nodeType":"YulFunctionCall","src":"6151:10:6"}],"functionName":{"name":"revert","nativeSrc":"6132:6:6","nodeType":"YulIdentifier","src":"6132:6:6"},"nativeSrc":"6132:30:6","nodeType":"YulFunctionCall","src":"6132:30:6"},"nativeSrc":"6132:30:6","nodeType":"YulExpressionStatement","src":"6132:30:6"}]},"condition":{"arguments":[{"arguments":[{"name":"amount","nativeSrc":"6109:6:6","nodeType":"YulIdentifier","src":"6109:6:6"},{"kind":"number","nativeSrc":"6117:4:6","nodeType":"YulLiteral","src":"6117:4:6","type":"","value":"0x0b"},{"kind":"number","nativeSrc":"6123:4:6","nodeType":"YulLiteral","src":"6123:4:6","type":"","value":"0x16"}],"functionName":{"name":"create","nativeSrc":"6102:6:6","nodeType":"YulIdentifier","src":"6102:6:6"},"nativeSrc":"6102:26:6","nodeType":"YulFunctionCall","src":"6102:26:6"}],"functionName":{"name":"iszero","nativeSrc":"6095:6:6","nodeType":"YulIdentifier","src":"6095:6:6"},"nativeSrc":"6095:34:6","nodeType":"YulFunctionCall","src":"6095:34:6"},"nativeSrc":"6092:72:6","nodeType":"YulIf","src":"6092:72:6"}]},"condition":{"arguments":[{"arguments":[{"name":"GAS_STIPEND_NO_GRIEF","nativeSrc":"5813:20:6","nodeType":"YulIdentifier","src":"5813:20:6"},{"name":"to","nativeSrc":"5835:2:6","nodeType":"YulIdentifier","src":"5835:2:6"},{"name":"amount","nativeSrc":"5839:6:6","nodeType":"YulIdentifier","src":"5839:6:6"},{"arguments":[],"functionName":{"name":"codesize","nativeSrc":"5847:8:6","nodeType":"YulIdentifier","src":"5847:8:6"},"nativeSrc":"5847:10:6","nodeType":"YulFunctionCall","src":"5847:10:6"},{"kind":"number","nativeSrc":"5859:4:6","nodeType":"YulLiteral","src":"5859:4:6","type":"","value":"0x00"},{"arguments":[],"functionName":{"name":"codesize","nativeSrc":"5865:8:6","nodeType":"YulIdentifier","src":"5865:8:6"},"nativeSrc":"5865:10:6","nodeType":"YulFunctionCall","src":"5865:10:6"},{"kind":"number","nativeSrc":"5877:4:6","nodeType":"YulLiteral","src":"5877:4:6","type":"","value":"0x00"}],"functionName":{"name":"call","nativeSrc":"5808:4:6","nodeType":"YulIdentifier","src":"5808:4:6"},"nativeSrc":"5808:74:6","nodeType":"YulFunctionCall","src":"5808:74:6"}],"functionName":{"name":"iszero","nativeSrc":"5801:6:6","nodeType":"YulIdentifier","src":"5801:6:6"},"nativeSrc":"5801:82:6","nodeType":"YulFunctionCall","src":"5801:82:6"},"nativeSrc":"5798:403:6","nodeType":"YulIf","src":"5798:403:6"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2768,"isOffset":false,"isSlot":false,"src":"5813:20:6","valueSize":1},{"declaration":2813,"isOffset":false,"isSlot":false,"src":"5660:6:6","valueSize":1},{"declaration":2813,"isOffset":false,"isSlot":false,"src":"5839:6:6","valueSize":1},{"declaration":2813,"isOffset":false,"isSlot":false,"src":"6109:6:6","valueSize":1},{"declaration":2811,"isOffset":false,"isSlot":false,"src":"5835:2:6","valueSize":1},{"declaration":2811,"isOffset":false,"isSlot":false,"src":"5915:2:6","valueSize":1}],"id":2816,"nodeType":"InlineAssembly","src":"5616:595:6"}]},"documentation":{"id":2809,"nodeType":"StructuredDocumentation","src":"5411:80:6","text":"@dev Force sends `amount` (in wei) ETH to `to`, with `GAS_STIPEND_NO_GRIEF`."},"id":2818,"implemented":true,"kind":"function","modifiers":[],"name":"forceSafeTransferETH","nameLocation":"5505:20:6","nodeType":"FunctionDefinition","parameters":{"id":2814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2811,"mutability":"mutable","name":"to","nameLocation":"5534:2:6","nodeType":"VariableDeclaration","scope":2818,"src":"5526:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2810,"name":"address","nodeType":"ElementaryTypeName","src":"5526:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2813,"mutability":"mutable","name":"amount","nameLocation":"5546:6:6","nodeType":"VariableDeclaration","scope":2818,"src":"5538:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2812,"name":"uint256","nodeType":"ElementaryTypeName","src":"5538:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5525:28:6"},"returnParameters":{"id":2815,"nodeType":"ParameterList","parameters":[],"src":"5563:0:6"},"scope":2941,"src":"5496:721:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2825,"nodeType":"Block","src":"6376:552:6","statements":[{"AST":{"nativeSrc":"6438:484:6","nodeType":"YulBlock","src":"6438:484:6","statements":[{"body":{"nativeSrc":"6588:324:6","nodeType":"YulBlock","src":"6588:324:6","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6613:4:6","nodeType":"YulLiteral","src":"6613:4:6","type":"","value":"0x00"},{"name":"to","nativeSrc":"6619:2:6","nodeType":"YulIdentifier","src":"6619:2:6"}],"functionName":{"name":"mstore","nativeSrc":"6606:6:6","nodeType":"YulIdentifier","src":"6606:6:6"},"nativeSrc":"6606:16:6","nodeType":"YulFunctionCall","src":"6606:16:6"},"nativeSrc":"6606:16:6","nodeType":"YulExpressionStatement","src":"6606:16:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"6686:4:6","nodeType":"YulLiteral","src":"6686:4:6","type":"","value":"0x0b"},{"kind":"number","nativeSrc":"6692:4:6","nodeType":"YulLiteral","src":"6692:4:6","type":"","value":"0x73"}],"functionName":{"name":"mstore8","nativeSrc":"6678:7:6","nodeType":"YulIdentifier","src":"6678:7:6"},"nativeSrc":"6678:19:6","nodeType":"YulFunctionCall","src":"6678:19:6"},"nativeSrc":"6678:19:6","nodeType":"YulExpressionStatement","src":"6678:19:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"6742:4:6","nodeType":"YulLiteral","src":"6742:4:6","type":"","value":"0x20"},{"kind":"number","nativeSrc":"6748:4:6","nodeType":"YulLiteral","src":"6748:4:6","type":"","value":"0xff"}],"functionName":{"name":"mstore8","nativeSrc":"6734:7:6","nodeType":"YulIdentifier","src":"6734:7:6"},"nativeSrc":"6734:19:6","nodeType":"YulFunctionCall","src":"6734:19:6"},"nativeSrc":"6734:19:6","nodeType":"YulExpressionStatement","src":"6734:19:6"},{"body":{"nativeSrc":"6841:34:6","nodeType":"YulBlock","src":"6841:34:6","statements":[{"expression":{"arguments":[{"arguments":[],"functionName":{"name":"codesize","nativeSrc":"6850:8:6","nodeType":"YulIdentifier","src":"6850:8:6"},"nativeSrc":"6850:10:6","nodeType":"YulFunctionCall","src":"6850:10:6"},{"arguments":[],"functionName":{"name":"codesize","nativeSrc":"6862:8:6","nodeType":"YulIdentifier","src":"6862:8:6"},"nativeSrc":"6862:10:6","nodeType":"YulFunctionCall","src":"6862:10:6"}],"functionName":{"name":"revert","nativeSrc":"6843:6:6","nodeType":"YulIdentifier","src":"6843:6:6"},"nativeSrc":"6843:30:6","nodeType":"YulFunctionCall","src":"6843:30:6"},"nativeSrc":"6843:30:6","nodeType":"YulExpressionStatement","src":"6843:30:6"}]},"condition":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"selfbalance","nativeSrc":"6813:11:6","nodeType":"YulIdentifier","src":"6813:11:6"},"nativeSrc":"6813:13:6","nodeType":"YulFunctionCall","src":"6813:13:6"},{"kind":"number","nativeSrc":"6828:4:6","nodeType":"YulLiteral","src":"6828:4:6","type":"","value":"0x0b"},{"kind":"number","nativeSrc":"6834:4:6","nodeType":"YulLiteral","src":"6834:4:6","type":"","value":"0x16"}],"functionName":{"name":"create","nativeSrc":"6806:6:6","nodeType":"YulIdentifier","src":"6806:6:6"},"nativeSrc":"6806:33:6","nodeType":"YulFunctionCall","src":"6806:33:6"}],"functionName":{"name":"iszero","nativeSrc":"6799:6:6","nodeType":"YulIdentifier","src":"6799:6:6"},"nativeSrc":"6799:41:6","nodeType":"YulFunctionCall","src":"6799:41:6"},"nativeSrc":"6796:79:6","nodeType":"YulIf","src":"6796:79:6"}]},"condition":{"arguments":[{"arguments":[{"name":"GAS_STIPEND_NO_GRIEF","nativeSrc":"6510:20:6","nodeType":"YulIdentifier","src":"6510:20:6"},{"name":"to","nativeSrc":"6532:2:6","nodeType":"YulIdentifier","src":"6532:2:6"},{"arguments":[],"functionName":{"name":"selfbalance","nativeSrc":"6536:11:6","nodeType":"YulIdentifier","src":"6536:11:6"},"nativeSrc":"6536:13:6","nodeType":"YulFunctionCall","src":"6536:13:6"},{"arguments":[],"functionName":{"name":"codesize","nativeSrc":"6551:8:6","nodeType":"YulIdentifier","src":"6551:8:6"},"nativeSrc":"6551:10:6","nodeType":"YulFunctionCall","src":"6551:10:6"},{"kind":"number","nativeSrc":"6563:4:6","nodeType":"YulLiteral","src":"6563:4:6","type":"","value":"0x00"},{"arguments":[],"functionName":{"name":"codesize","nativeSrc":"6569:8:6","nodeType":"YulIdentifier","src":"6569:8:6"},"nativeSrc":"6569:10:6","nodeType":"YulFunctionCall","src":"6569:10:6"},{"kind":"number","nativeSrc":"6581:4:6","nodeType":"YulLiteral","src":"6581:4:6","type":"","value":"0x00"}],"functionName":{"name":"call","nativeSrc":"6505:4:6","nodeType":"YulIdentifier","src":"6505:4:6"},"nativeSrc":"6505:81:6","nodeType":"YulFunctionCall","src":"6505:81:6"}],"functionName":{"name":"iszero","nativeSrc":"6498:6:6","nodeType":"YulIdentifier","src":"6498:6:6"},"nativeSrc":"6498:89:6","nodeType":"YulFunctionCall","src":"6498:89:6"},"nativeSrc":"6495:417:6","nodeType":"YulIf","src":"6495:417:6"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2768,"isOffset":false,"isSlot":false,"src":"6510:20:6","valueSize":1},{"declaration":2821,"isOffset":false,"isSlot":false,"src":"6532:2:6","valueSize":1},{"declaration":2821,"isOffset":false,"isSlot":false,"src":"6619:2:6","valueSize":1}],"id":2824,"nodeType":"InlineAssembly","src":"6429:493:6"}]},"documentation":{"id":2819,"nodeType":"StructuredDocumentation","src":"6223:94:6","text":"@dev Force sends all the ETH in the current contract to `to`, with `GAS_STIPEND_NO_GRIEF`."},"id":2826,"implemented":true,"kind":"function","modifiers":[],"name":"forceSafeTransferAllETH","nameLocation":"6331:23:6","nodeType":"FunctionDefinition","parameters":{"id":2822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2821,"mutability":"mutable","name":"to","nameLocation":"6363:2:6","nodeType":"VariableDeclaration","scope":2826,"src":"6355:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2820,"name":"address","nodeType":"ElementaryTypeName","src":"6355:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6354:12:6"},"returnParameters":{"id":2823,"nodeType":"ParameterList","parameters":[],"src":"6376:0:6"},"scope":2941,"src":"6322:606:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2839,"nodeType":"Block","src":"7133:167:6","statements":[{"AST":{"nativeSrc":"7195:99:6","nodeType":"YulBlock","src":"7195:99:6","statements":[{"nativeSrc":"7209:75:6","nodeType":"YulAssignment","src":"7209:75:6","value":{"arguments":[{"name":"gasStipend","nativeSrc":"7225:10:6","nodeType":"YulIdentifier","src":"7225:10:6"},{"name":"to","nativeSrc":"7237:2:6","nodeType":"YulIdentifier","src":"7237:2:6"},{"name":"amount","nativeSrc":"7241:6:6","nodeType":"YulIdentifier","src":"7241:6:6"},{"arguments":[],"functionName":{"name":"codesize","nativeSrc":"7249:8:6","nodeType":"YulIdentifier","src":"7249:8:6"},"nativeSrc":"7249:10:6","nodeType":"YulFunctionCall","src":"7249:10:6"},{"kind":"number","nativeSrc":"7261:4:6","nodeType":"YulLiteral","src":"7261:4:6","type":"","value":"0x00"},{"arguments":[],"functionName":{"name":"codesize","nativeSrc":"7267:8:6","nodeType":"YulIdentifier","src":"7267:8:6"},"nativeSrc":"7267:10:6","nodeType":"YulFunctionCall","src":"7267:10:6"},{"kind":"number","nativeSrc":"7279:4:6","nodeType":"YulLiteral","src":"7279:4:6","type":"","value":"0x00"}],"functionName":{"name":"call","nativeSrc":"7220:4:6","nodeType":"YulIdentifier","src":"7220:4:6"},"nativeSrc":"7220:64:6","nodeType":"YulFunctionCall","src":"7220:64:6"},"variableNames":[{"name":"success","nativeSrc":"7209:7:6","nodeType":"YulIdentifier","src":"7209:7:6"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2831,"isOffset":false,"isSlot":false,"src":"7241:6:6","valueSize":1},{"declaration":2833,"isOffset":false,"isSlot":false,"src":"7225:10:6","valueSize":1},{"declaration":2836,"isOffset":false,"isSlot":false,"src":"7209:7:6","valueSize":1},{"declaration":2829,"isOffset":false,"isSlot":false,"src":"7237:2:6","valueSize":1}],"id":2838,"nodeType":"InlineAssembly","src":"7186:108:6"}]},"documentation":{"id":2827,"nodeType":"StructuredDocumentation","src":"6934:66:6","text":"@dev Sends `amount` (in wei) ETH to `to`, with a `gasStipend`."},"id":2840,"implemented":true,"kind":"function","modifiers":[],"name":"trySafeTransferETH","nameLocation":"7014:18:6","nodeType":"FunctionDefinition","parameters":{"id":2834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2829,"mutability":"mutable","name":"to","nameLocation":"7041:2:6","nodeType":"VariableDeclaration","scope":2840,"src":"7033:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2828,"name":"address","nodeType":"ElementaryTypeName","src":"7033:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2831,"mutability":"mutable","name":"amount","nameLocation":"7053:6:6","nodeType":"VariableDeclaration","scope":2840,"src":"7045:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2830,"name":"uint256","nodeType":"ElementaryTypeName","src":"7045:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2833,"mutability":"mutable","name":"gasStipend","nameLocation":"7069:10:6","nodeType":"VariableDeclaration","scope":2840,"src":"7061:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2832,"name":"uint256","nodeType":"ElementaryTypeName","src":"7061:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7032:48:6"},"returnParameters":{"id":2837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2836,"mutability":"mutable","name":"success","nameLocation":"7120:7:6","nodeType":"VariableDeclaration","scope":2840,"src":"7115:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2835,"name":"bool","nodeType":"ElementaryTypeName","src":"7115:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7114:14:6"},"scope":2941,"src":"7005:295:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2851,"nodeType":"Block","src":"7506:174:6","statements":[{"AST":{"nativeSrc":"7568:106:6","nodeType":"YulBlock","src":"7568:106:6","statements":[{"nativeSrc":"7582:82:6","nodeType":"YulAssignment","src":"7582:82:6","value":{"arguments":[{"name":"gasStipend","nativeSrc":"7598:10:6","nodeType":"YulIdentifier","src":"7598:10:6"},{"name":"to","nativeSrc":"7610:2:6","nodeType":"YulIdentifier","src":"7610:2:6"},{"arguments":[],"functionName":{"name":"selfbalance","nativeSrc":"7614:11:6","nodeType":"YulIdentifier","src":"7614:11:6"},"nativeSrc":"7614:13:6","nodeType":"YulFunctionCall","src":"7614:13:6"},{"arguments":[],"functionName":{"name":"codesize","nativeSrc":"7629:8:6","nodeType":"YulIdentifier","src":"7629:8:6"},"nativeSrc":"7629:10:6","nodeType":"YulFunctionCall","src":"7629:10:6"},{"kind":"number","nativeSrc":"7641:4:6","nodeType":"YulLiteral","src":"7641:4:6","type":"","value":"0x00"},{"arguments":[],"functionName":{"name":"codesize","nativeSrc":"7647:8:6","nodeType":"YulIdentifier","src":"7647:8:6"},"nativeSrc":"7647:10:6","nodeType":"YulFunctionCall","src":"7647:10:6"},{"kind":"number","nativeSrc":"7659:4:6","nodeType":"YulLiteral","src":"7659:4:6","type":"","value":"0x00"}],"functionName":{"name":"call","nativeSrc":"7593:4:6","nodeType":"YulIdentifier","src":"7593:4:6"},"nativeSrc":"7593:71:6","nodeType":"YulFunctionCall","src":"7593:71:6"},"variableNames":[{"name":"success","nativeSrc":"7582:7:6","nodeType":"YulIdentifier","src":"7582:7:6"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2845,"isOffset":false,"isSlot":false,"src":"7598:10:6","valueSize":1},{"declaration":2848,"isOffset":false,"isSlot":false,"src":"7582:7:6","valueSize":1},{"declaration":2843,"isOffset":false,"isSlot":false,"src":"7610:2:6","valueSize":1}],"id":2850,"nodeType":"InlineAssembly","src":"7559:115:6"}]},"documentation":{"id":2841,"nodeType":"StructuredDocumentation","src":"7306:80:6","text":"@dev Sends all the ETH in the current contract to `to`, with a `gasStipend`."},"id":2852,"implemented":true,"kind":"function","modifiers":[],"name":"trySafeTransferAllETH","nameLocation":"7400:21:6","nodeType":"FunctionDefinition","parameters":{"id":2846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2843,"mutability":"mutable","name":"to","nameLocation":"7430:2:6","nodeType":"VariableDeclaration","scope":2852,"src":"7422:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2842,"name":"address","nodeType":"ElementaryTypeName","src":"7422:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2845,"mutability":"mutable","name":"gasStipend","nameLocation":"7442:10:6","nodeType":"VariableDeclaration","scope":2852,"src":"7434:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2844,"name":"uint256","nodeType":"ElementaryTypeName","src":"7434:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7421:32:6"},"returnParameters":{"id":2849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2848,"mutability":"mutable","name":"success","nameLocation":"7493:7:6","nodeType":"VariableDeclaration","scope":2852,"src":"7488:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2847,"name":"bool","nodeType":"ElementaryTypeName","src":"7488:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7487:14:6"},"scope":2941,"src":"7391:289:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2865,"nodeType":"Block","src":"8273:1047:6","statements":[{"AST":{"nativeSrc":"8335:979:6","nodeType":"YulBlock","src":"8335:979:6","statements":[{"nativeSrc":"8349:20:6","nodeType":"YulVariableDeclaration","src":"8349:20:6","value":{"arguments":[{"kind":"number","nativeSrc":"8364:4:6","nodeType":"YulLiteral","src":"8364:4:6","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"8358:5:6","nodeType":"YulIdentifier","src":"8358:5:6"},"nativeSrc":"8358:11:6","nodeType":"YulFunctionCall","src":"8358:11:6"},"variables":[{"name":"m","nativeSrc":"8353:1:6","nodeType":"YulTypedName","src":"8353:1:6","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8423:4:6","nodeType":"YulLiteral","src":"8423:4:6","type":"","value":"0x60"},{"name":"amount","nativeSrc":"8429:6:6","nodeType":"YulIdentifier","src":"8429:6:6"}],"functionName":{"name":"mstore","nativeSrc":"8416:6:6","nodeType":"YulIdentifier","src":"8416:6:6"},"nativeSrc":"8416:20:6","nodeType":"YulFunctionCall","src":"8416:20:6"},"nativeSrc":"8416:20:6","nodeType":"YulExpressionStatement","src":"8416:20:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8488:4:6","nodeType":"YulLiteral","src":"8488:4:6","type":"","value":"0x40"},{"name":"to","nativeSrc":"8494:2:6","nodeType":"YulIdentifier","src":"8494:2:6"}],"functionName":{"name":"mstore","nativeSrc":"8481:6:6","nodeType":"YulIdentifier","src":"8481:6:6"},"nativeSrc":"8481:16:6","nodeType":"YulFunctionCall","src":"8481:16:6"},"nativeSrc":"8481:16:6","nodeType":"YulExpressionStatement","src":"8481:16:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8545:4:6","nodeType":"YulLiteral","src":"8545:4:6","type":"","value":"0x2c"},{"arguments":[{"kind":"number","nativeSrc":"8555:2:6","nodeType":"YulLiteral","src":"8555:2:6","type":"","value":"96"},{"name":"from","nativeSrc":"8559:4:6","nodeType":"YulIdentifier","src":"8559:4:6"}],"functionName":{"name":"shl","nativeSrc":"8551:3:6","nodeType":"YulIdentifier","src":"8551:3:6"},"nativeSrc":"8551:13:6","nodeType":"YulFunctionCall","src":"8551:13:6"}],"functionName":{"name":"mstore","nativeSrc":"8538:6:6","nodeType":"YulIdentifier","src":"8538:6:6"},"nativeSrc":"8538:27:6","nodeType":"YulFunctionCall","src":"8538:27:6"},"nativeSrc":"8538:27:6","nodeType":"YulExpressionStatement","src":"8538:27:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8615:4:6","nodeType":"YulLiteral","src":"8615:4:6","type":"","value":"0x0c"},{"kind":"number","nativeSrc":"8621:34:6","nodeType":"YulLiteral","src":"8621:34:6","type":"","value":"0x23b872dd000000000000000000000000"}],"functionName":{"name":"mstore","nativeSrc":"8608:6:6","nodeType":"YulIdentifier","src":"8608:6:6"},"nativeSrc":"8608:48:6","nodeType":"YulFunctionCall","src":"8608:48:6"},"nativeSrc":"8608:48:6","nodeType":"YulExpressionStatement","src":"8608:48:6"},{"body":{"nativeSrc":"9060:118:6","nodeType":"YulBlock","src":"9060:118:6","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9085:4:6","nodeType":"YulLiteral","src":"9085:4:6","type":"","value":"0x00"},{"kind":"number","nativeSrc":"9091:10:6","nodeType":"YulLiteral","src":"9091:10:6","type":"","value":"0x7939f424"}],"functionName":{"name":"mstore","nativeSrc":"9078:6:6","nodeType":"YulIdentifier","src":"9078:6:6"},"nativeSrc":"9078:24:6","nodeType":"YulFunctionCall","src":"9078:24:6"},"nativeSrc":"9078:24:6","nodeType":"YulExpressionStatement","src":"9078:24:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9153:4:6","nodeType":"YulLiteral","src":"9153:4:6","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"9159:4:6","nodeType":"YulLiteral","src":"9159:4:6","type":"","value":"0x04"}],"functionName":{"name":"revert","nativeSrc":"9146:6:6","nodeType":"YulIdentifier","src":"9146:6:6"},"nativeSrc":"9146:18:6","nodeType":"YulFunctionCall","src":"9146:18:6"},"nativeSrc":"9146:18:6","nodeType":"YulExpressionStatement","src":"9146:18:6"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"8898:4:6","nodeType":"YulLiteral","src":"8898:4:6","type":"","value":"0x00"}],"functionName":{"name":"mload","nativeSrc":"8892:5:6","nodeType":"YulIdentifier","src":"8892:5:6"},"nativeSrc":"8892:11:6","nodeType":"YulFunctionCall","src":"8892:11:6"},{"kind":"number","nativeSrc":"8905:1:6","nodeType":"YulLiteral","src":"8905:1:6","type":"","value":"1"}],"functionName":{"name":"eq","nativeSrc":"8889:2:6","nodeType":"YulIdentifier","src":"8889:2:6"},"nativeSrc":"8889:18:6","nodeType":"YulFunctionCall","src":"8889:18:6"},{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"8916:14:6","nodeType":"YulIdentifier","src":"8916:14:6"},"nativeSrc":"8916:16:6","nodeType":"YulFunctionCall","src":"8916:16:6"}],"functionName":{"name":"iszero","nativeSrc":"8909:6:6","nodeType":"YulIdentifier","src":"8909:6:6"},"nativeSrc":"8909:24:6","nodeType":"YulFunctionCall","src":"8909:24:6"}],"functionName":{"name":"or","nativeSrc":"8886:2:6","nodeType":"YulIdentifier","src":"8886:2:6"},"nativeSrc":"8886:48:6","nodeType":"YulFunctionCall","src":"8886:48:6"},{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"8987:3:6","nodeType":"YulIdentifier","src":"8987:3:6"},"nativeSrc":"8987:5:6","nodeType":"YulFunctionCall","src":"8987:5:6"},{"name":"token","nativeSrc":"8994:5:6","nodeType":"YulIdentifier","src":"8994:5:6"},{"kind":"number","nativeSrc":"9001:1:6","nodeType":"YulLiteral","src":"9001:1:6","type":"","value":"0"},{"kind":"number","nativeSrc":"9004:4:6","nodeType":"YulLiteral","src":"9004:4:6","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"9010:4:6","nodeType":"YulLiteral","src":"9010:4:6","type":"","value":"0x64"},{"kind":"number","nativeSrc":"9016:4:6","nodeType":"YulLiteral","src":"9016:4:6","type":"","value":"0x00"},{"kind":"number","nativeSrc":"9022:4:6","nodeType":"YulLiteral","src":"9022:4:6","type":"","value":"0x20"}],"functionName":{"name":"call","nativeSrc":"8982:4:6","nodeType":"YulIdentifier","src":"8982:4:6"},"nativeSrc":"8982:45:6","nodeType":"YulFunctionCall","src":"8982:45:6"}],"functionName":{"name":"and","nativeSrc":"8801:3:6","nodeType":"YulIdentifier","src":"8801:3:6"},"nativeSrc":"8801:244:6","nodeType":"YulFunctionCall","src":"8801:244:6"}],"functionName":{"name":"iszero","nativeSrc":"8777:6:6","nodeType":"YulIdentifier","src":"8777:6:6"},"nativeSrc":"8777:282:6","nodeType":"YulFunctionCall","src":"8777:282:6"},"nativeSrc":"8774:404:6","nodeType":"YulIf","src":"8774:404:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9198:4:6","nodeType":"YulLiteral","src":"9198:4:6","type":"","value":"0x60"},{"kind":"number","nativeSrc":"9204:1:6","nodeType":"YulLiteral","src":"9204:1:6","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"9191:6:6","nodeType":"YulIdentifier","src":"9191:6:6"},"nativeSrc":"9191:15:6","nodeType":"YulFunctionCall","src":"9191:15:6"},"nativeSrc":"9191:15:6","nodeType":"YulExpressionStatement","src":"9191:15:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9260:4:6","nodeType":"YulLiteral","src":"9260:4:6","type":"","value":"0x40"},{"name":"m","nativeSrc":"9266:1:6","nodeType":"YulIdentifier","src":"9266:1:6"}],"functionName":{"name":"mstore","nativeSrc":"9253:6:6","nodeType":"YulIdentifier","src":"9253:6:6"},"nativeSrc":"9253:15:6","nodeType":"YulFunctionCall","src":"9253:15:6"},"nativeSrc":"9253:15:6","nodeType":"YulExpressionStatement","src":"9253:15:6"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2861,"isOffset":false,"isSlot":false,"src":"8429:6:6","valueSize":1},{"declaration":2857,"isOffset":false,"isSlot":false,"src":"8559:4:6","valueSize":1},{"declaration":2859,"isOffset":false,"isSlot":false,"src":"8494:2:6","valueSize":1},{"declaration":2855,"isOffset":false,"isSlot":false,"src":"8994:5:6","valueSize":1}],"id":2864,"nodeType":"InlineAssembly","src":"8326:988:6"}]},"documentation":{"id":2853,"nodeType":"StructuredDocumentation","src":"7969:207:6","text":"@dev Sends `amount` of ERC20 `token` from `from` to `to`.\n Reverts upon failure.\n The `from` account must have at least `amount` approved for\n the current contract to manage."},"id":2866,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"8190:16:6","nodeType":"FunctionDefinition","parameters":{"id":2862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2855,"mutability":"mutable","name":"token","nameLocation":"8215:5:6","nodeType":"VariableDeclaration","scope":2866,"src":"8207:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2854,"name":"address","nodeType":"ElementaryTypeName","src":"8207:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2857,"mutability":"mutable","name":"from","nameLocation":"8230:4:6","nodeType":"VariableDeclaration","scope":2866,"src":"8222:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2856,"name":"address","nodeType":"ElementaryTypeName","src":"8222:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2859,"mutability":"mutable","name":"to","nameLocation":"8244:2:6","nodeType":"VariableDeclaration","scope":2866,"src":"8236:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2858,"name":"address","nodeType":"ElementaryTypeName","src":"8236:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2861,"mutability":"mutable","name":"amount","nameLocation":"8256:6:6","nodeType":"VariableDeclaration","scope":2866,"src":"8248:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2860,"name":"uint256","nodeType":"ElementaryTypeName","src":"8248:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8206:57:6"},"returnParameters":{"id":2863,"nodeType":"ParameterList","parameters":[],"src":"8273:0:6"},"scope":2941,"src":"8181:1139:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2879,"nodeType":"Block","src":"9660:1599:6","statements":[{"AST":{"nativeSrc":"9722:1531:6","nodeType":"YulBlock","src":"9722:1531:6","statements":[{"nativeSrc":"9736:20:6","nodeType":"YulVariableDeclaration","src":"9736:20:6","value":{"arguments":[{"kind":"number","nativeSrc":"9751:4:6","nodeType":"YulLiteral","src":"9751:4:6","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"9745:5:6","nodeType":"YulIdentifier","src":"9745:5:6"},"nativeSrc":"9745:11:6","nodeType":"YulFunctionCall","src":"9745:11:6"},"variables":[{"name":"m","nativeSrc":"9740:1:6","nodeType":"YulTypedName","src":"9740:1:6","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9810:4:6","nodeType":"YulLiteral","src":"9810:4:6","type":"","value":"0x40"},{"name":"to","nativeSrc":"9816:2:6","nodeType":"YulIdentifier","src":"9816:2:6"}],"functionName":{"name":"mstore","nativeSrc":"9803:6:6","nodeType":"YulIdentifier","src":"9803:6:6"},"nativeSrc":"9803:16:6","nodeType":"YulFunctionCall","src":"9803:16:6"},"nativeSrc":"9803:16:6","nodeType":"YulExpressionStatement","src":"9803:16:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9867:4:6","nodeType":"YulLiteral","src":"9867:4:6","type":"","value":"0x2c"},{"arguments":[{"kind":"number","nativeSrc":"9877:2:6","nodeType":"YulLiteral","src":"9877:2:6","type":"","value":"96"},{"name":"from","nativeSrc":"9881:4:6","nodeType":"YulIdentifier","src":"9881:4:6"}],"functionName":{"name":"shl","nativeSrc":"9873:3:6","nodeType":"YulIdentifier","src":"9873:3:6"},"nativeSrc":"9873:13:6","nodeType":"YulFunctionCall","src":"9873:13:6"}],"functionName":{"name":"mstore","nativeSrc":"9860:6:6","nodeType":"YulIdentifier","src":"9860:6:6"},"nativeSrc":"9860:27:6","nodeType":"YulFunctionCall","src":"9860:27:6"},"nativeSrc":"9860:27:6","nodeType":"YulExpressionStatement","src":"9860:27:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9937:4:6","nodeType":"YulLiteral","src":"9937:4:6","type":"","value":"0x0c"},{"kind":"number","nativeSrc":"9943:34:6","nodeType":"YulLiteral","src":"9943:34:6","type":"","value":"0x70a08231000000000000000000000000"}],"functionName":{"name":"mstore","nativeSrc":"9930:6:6","nodeType":"YulIdentifier","src":"9930:6:6"},"nativeSrc":"9930:48:6","nodeType":"YulFunctionCall","src":"9930:48:6"},"nativeSrc":"9930:48:6","nodeType":"YulExpressionStatement","src":"9930:48:6"},{"body":{"nativeSrc":"10345:118:6","nodeType":"YulBlock","src":"10345:118:6","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10370:4:6","nodeType":"YulLiteral","src":"10370:4:6","type":"","value":"0x00"},{"kind":"number","nativeSrc":"10376:10:6","nodeType":"YulLiteral","src":"10376:10:6","type":"","value":"0x7939f424"}],"functionName":{"name":"mstore","nativeSrc":"10363:6:6","nodeType":"YulIdentifier","src":"10363:6:6"},"nativeSrc":"10363:24:6","nodeType":"YulFunctionCall","src":"10363:24:6"},"nativeSrc":"10363:24:6","nodeType":"YulExpressionStatement","src":"10363:24:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10438:4:6","nodeType":"YulLiteral","src":"10438:4:6","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"10444:4:6","nodeType":"YulLiteral","src":"10444:4:6","type":"","value":"0x04"}],"functionName":{"name":"revert","nativeSrc":"10431:6:6","nodeType":"YulIdentifier","src":"10431:6:6"},"nativeSrc":"10431:18:6","nodeType":"YulFunctionCall","src":"10431:18:6"},"nativeSrc":"10431:18:6","nodeType":"YulExpressionStatement","src":"10431:18:6"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"10188:14:6","nodeType":"YulIdentifier","src":"10188:14:6"},"nativeSrc":"10188:16:6","nodeType":"YulFunctionCall","src":"10188:16:6"},{"kind":"number","nativeSrc":"10206:4:6","nodeType":"YulLiteral","src":"10206:4:6","type":"","value":"0x1f"}],"functionName":{"name":"gt","nativeSrc":"10185:2:6","nodeType":"YulIdentifier","src":"10185:2:6"},"nativeSrc":"10185:26:6","nodeType":"YulFunctionCall","src":"10185:26:6"},{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"10275:3:6","nodeType":"YulIdentifier","src":"10275:3:6"},"nativeSrc":"10275:5:6","nodeType":"YulFunctionCall","src":"10275:5:6"},{"name":"token","nativeSrc":"10282:5:6","nodeType":"YulIdentifier","src":"10282:5:6"},{"kind":"number","nativeSrc":"10289:4:6","nodeType":"YulLiteral","src":"10289:4:6","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"10295:4:6","nodeType":"YulLiteral","src":"10295:4:6","type":"","value":"0x24"},{"kind":"number","nativeSrc":"10301:4:6","nodeType":"YulLiteral","src":"10301:4:6","type":"","value":"0x60"},{"kind":"number","nativeSrc":"10307:4:6","nodeType":"YulLiteral","src":"10307:4:6","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"10264:10:6","nodeType":"YulIdentifier","src":"10264:10:6"},"nativeSrc":"10264:48:6","nodeType":"YulFunctionCall","src":"10264:48:6"}],"functionName":{"name":"and","nativeSrc":"10100:3:6","nodeType":"YulIdentifier","src":"10100:3:6"},"nativeSrc":"10100:230:6","nodeType":"YulFunctionCall","src":"10100:230:6"}],"functionName":{"name":"iszero","nativeSrc":"10076:6:6","nodeType":"YulIdentifier","src":"10076:6:6"},"nativeSrc":"10076:268:6","nodeType":"YulFunctionCall","src":"10076:268:6"},"nativeSrc":"10073:390:6","nodeType":"YulIf","src":"10073:390:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"10483:4:6","nodeType":"YulLiteral","src":"10483:4:6","type":"","value":"0x00"},{"kind":"number","nativeSrc":"10489:10:6","nodeType":"YulLiteral","src":"10489:10:6","type":"","value":"0x23b872dd"}],"functionName":{"name":"mstore","nativeSrc":"10476:6:6","nodeType":"YulIdentifier","src":"10476:6:6"},"nativeSrc":"10476:24:6","nodeType":"YulFunctionCall","src":"10476:24:6"},"nativeSrc":"10476:24:6","nodeType":"YulExpressionStatement","src":"10476:24:6"},{"nativeSrc":"10557:21:6","nodeType":"YulAssignment","src":"10557:21:6","value":{"arguments":[{"kind":"number","nativeSrc":"10573:4:6","nodeType":"YulLiteral","src":"10573:4:6","type":"","value":"0x60"}],"functionName":{"name":"mload","nativeSrc":"10567:5:6","nodeType":"YulIdentifier","src":"10567:5:6"},"nativeSrc":"10567:11:6","nodeType":"YulFunctionCall","src":"10567:11:6"},"variableNames":[{"name":"amount","nativeSrc":"10557:6:6","nodeType":"YulIdentifier","src":"10557:6:6"}]},{"body":{"nativeSrc":"10999:118:6","nodeType":"YulBlock","src":"10999:118:6","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11024:4:6","nodeType":"YulLiteral","src":"11024:4:6","type":"","value":"0x00"},{"kind":"number","nativeSrc":"11030:10:6","nodeType":"YulLiteral","src":"11030:10:6","type":"","value":"0x7939f424"}],"functionName":{"name":"mstore","nativeSrc":"11017:6:6","nodeType":"YulIdentifier","src":"11017:6:6"},"nativeSrc":"11017:24:6","nodeType":"YulFunctionCall","src":"11017:24:6"},"nativeSrc":"11017:24:6","nodeType":"YulExpressionStatement","src":"11017:24:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11092:4:6","nodeType":"YulLiteral","src":"11092:4:6","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"11098:4:6","nodeType":"YulLiteral","src":"11098:4:6","type":"","value":"0x04"}],"functionName":{"name":"revert","nativeSrc":"11085:6:6","nodeType":"YulIdentifier","src":"11085:6:6"},"nativeSrc":"11085:18:6","nodeType":"YulFunctionCall","src":"11085:18:6"},"nativeSrc":"11085:18:6","nodeType":"YulExpressionStatement","src":"11085:18:6"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"10837:4:6","nodeType":"YulLiteral","src":"10837:4:6","type":"","value":"0x00"}],"functionName":{"name":"mload","nativeSrc":"10831:5:6","nodeType":"YulIdentifier","src":"10831:5:6"},"nativeSrc":"10831:11:6","nodeType":"YulFunctionCall","src":"10831:11:6"},{"kind":"number","nativeSrc":"10844:1:6","nodeType":"YulLiteral","src":"10844:1:6","type":"","value":"1"}],"functionName":{"name":"eq","nativeSrc":"10828:2:6","nodeType":"YulIdentifier","src":"10828:2:6"},"nativeSrc":"10828:18:6","nodeType":"YulFunctionCall","src":"10828:18:6"},{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"10855:14:6","nodeType":"YulIdentifier","src":"10855:14:6"},"nativeSrc":"10855:16:6","nodeType":"YulFunctionCall","src":"10855:16:6"}],"functionName":{"name":"iszero","nativeSrc":"10848:6:6","nodeType":"YulIdentifier","src":"10848:6:6"},"nativeSrc":"10848:24:6","nodeType":"YulFunctionCall","src":"10848:24:6"}],"functionName":{"name":"or","nativeSrc":"10825:2:6","nodeType":"YulIdentifier","src":"10825:2:6"},"nativeSrc":"10825:48:6","nodeType":"YulFunctionCall","src":"10825:48:6"},{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"10926:3:6","nodeType":"YulIdentifier","src":"10926:3:6"},"nativeSrc":"10926:5:6","nodeType":"YulFunctionCall","src":"10926:5:6"},{"name":"token","nativeSrc":"10933:5:6","nodeType":"YulIdentifier","src":"10933:5:6"},{"kind":"number","nativeSrc":"10940:1:6","nodeType":"YulLiteral","src":"10940:1:6","type":"","value":"0"},{"kind":"number","nativeSrc":"10943:4:6","nodeType":"YulLiteral","src":"10943:4:6","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"10949:4:6","nodeType":"YulLiteral","src":"10949:4:6","type":"","value":"0x64"},{"kind":"number","nativeSrc":"10955:4:6","nodeType":"YulLiteral","src":"10955:4:6","type":"","value":"0x00"},{"kind":"number","nativeSrc":"10961:4:6","nodeType":"YulLiteral","src":"10961:4:6","type":"","value":"0x20"}],"functionName":{"name":"call","nativeSrc":"10921:4:6","nodeType":"YulIdentifier","src":"10921:4:6"},"nativeSrc":"10921:45:6","nodeType":"YulFunctionCall","src":"10921:45:6"}],"functionName":{"name":"and","nativeSrc":"10740:3:6","nodeType":"YulIdentifier","src":"10740:3:6"},"nativeSrc":"10740:244:6","nodeType":"YulFunctionCall","src":"10740:244:6"}],"functionName":{"name":"iszero","nativeSrc":"10716:6:6","nodeType":"YulIdentifier","src":"10716:6:6"},"nativeSrc":"10716:282:6","nodeType":"YulFunctionCall","src":"10716:282:6"},"nativeSrc":"10713:404:6","nodeType":"YulIf","src":"10713:404:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11137:4:6","nodeType":"YulLiteral","src":"11137:4:6","type":"","value":"0x60"},{"kind":"number","nativeSrc":"11143:1:6","nodeType":"YulLiteral","src":"11143:1:6","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"11130:6:6","nodeType":"YulIdentifier","src":"11130:6:6"},"nativeSrc":"11130:15:6","nodeType":"YulFunctionCall","src":"11130:15:6"},"nativeSrc":"11130:15:6","nodeType":"YulExpressionStatement","src":"11130:15:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11199:4:6","nodeType":"YulLiteral","src":"11199:4:6","type":"","value":"0x40"},{"name":"m","nativeSrc":"11205:1:6","nodeType":"YulIdentifier","src":"11205:1:6"}],"functionName":{"name":"mstore","nativeSrc":"11192:6:6","nodeType":"YulIdentifier","src":"11192:6:6"},"nativeSrc":"11192:15:6","nodeType":"YulFunctionCall","src":"11192:15:6"},"nativeSrc":"11192:15:6","nodeType":"YulExpressionStatement","src":"11192:15:6"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2876,"isOffset":false,"isSlot":false,"src":"10557:6:6","valueSize":1},{"declaration":2871,"isOffset":false,"isSlot":false,"src":"9881:4:6","valueSize":1},{"declaration":2873,"isOffset":false,"isSlot":false,"src":"9816:2:6","valueSize":1},{"declaration":2869,"isOffset":false,"isSlot":false,"src":"10282:5:6","valueSize":1},{"declaration":2869,"isOffset":false,"isSlot":false,"src":"10933:5:6","valueSize":1}],"id":2878,"nodeType":"InlineAssembly","src":"9713:1540:6"}]},"documentation":{"id":2867,"nodeType":"StructuredDocumentation","src":"9326:205:6","text":"@dev Sends all of ERC20 `token` from `from` to `to`.\n Reverts upon failure.\n The `from` account must have their entire balance approved for\n the current contract to manage."},"id":2880,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferAllFrom","nameLocation":"9545:19:6","nodeType":"FunctionDefinition","parameters":{"id":2874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2869,"mutability":"mutable","name":"token","nameLocation":"9573:5:6","nodeType":"VariableDeclaration","scope":2880,"src":"9565:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2868,"name":"address","nodeType":"ElementaryTypeName","src":"9565:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2871,"mutability":"mutable","name":"from","nameLocation":"9588:4:6","nodeType":"VariableDeclaration","scope":2880,"src":"9580:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2870,"name":"address","nodeType":"ElementaryTypeName","src":"9580:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2873,"mutability":"mutable","name":"to","nameLocation":"9602:2:6","nodeType":"VariableDeclaration","scope":2880,"src":"9594:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2872,"name":"address","nodeType":"ElementaryTypeName","src":"9594:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9564:41:6"},"returnParameters":{"id":2877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2876,"mutability":"mutable","name":"amount","nameLocation":"9648:6:6","nodeType":"VariableDeclaration","scope":2880,"src":"9640:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2875,"name":"uint256","nodeType":"ElementaryTypeName","src":"9640:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9639:16:6"},"scope":2941,"src":"9536:1723:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2891,"nodeType":"Block","src":"11449:865:6","statements":[{"AST":{"nativeSrc":"11511:797:6","nodeType":"YulBlock","src":"11511:797:6","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11532:4:6","nodeType":"YulLiteral","src":"11532:4:6","type":"","value":"0x14"},{"name":"to","nativeSrc":"11538:2:6","nodeType":"YulIdentifier","src":"11538:2:6"}],"functionName":{"name":"mstore","nativeSrc":"11525:6:6","nodeType":"YulIdentifier","src":"11525:6:6"},"nativeSrc":"11525:16:6","nodeType":"YulFunctionCall","src":"11525:16:6"},"nativeSrc":"11525:16:6","nodeType":"YulExpressionStatement","src":"11525:16:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11589:4:6","nodeType":"YulLiteral","src":"11589:4:6","type":"","value":"0x34"},{"name":"amount","nativeSrc":"11595:6:6","nodeType":"YulIdentifier","src":"11595:6:6"}],"functionName":{"name":"mstore","nativeSrc":"11582:6:6","nodeType":"YulIdentifier","src":"11582:6:6"},"nativeSrc":"11582:20:6","nodeType":"YulFunctionCall","src":"11582:20:6"},"nativeSrc":"11582:20:6","nodeType":"YulExpressionStatement","src":"11582:20:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11654:4:6","nodeType":"YulLiteral","src":"11654:4:6","type":"","value":"0x00"},{"kind":"number","nativeSrc":"11660:34:6","nodeType":"YulLiteral","src":"11660:34:6","type":"","value":"0xa9059cbb000000000000000000000000"}],"functionName":{"name":"mstore","nativeSrc":"11647:6:6","nodeType":"YulIdentifier","src":"11647:6:6"},"nativeSrc":"11647:48:6","nodeType":"YulFunctionCall","src":"11647:48:6"},"nativeSrc":"11647:48:6","nodeType":"YulExpressionStatement","src":"11647:48:6"},{"body":{"nativeSrc":"12087:114:6","nodeType":"YulBlock","src":"12087:114:6","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12112:4:6","nodeType":"YulLiteral","src":"12112:4:6","type":"","value":"0x00"},{"kind":"number","nativeSrc":"12118:10:6","nodeType":"YulLiteral","src":"12118:10:6","type":"","value":"0x90b8ec18"}],"functionName":{"name":"mstore","nativeSrc":"12105:6:6","nodeType":"YulIdentifier","src":"12105:6:6"},"nativeSrc":"12105:24:6","nodeType":"YulFunctionCall","src":"12105:24:6"},"nativeSrc":"12105:24:6","nodeType":"YulExpressionStatement","src":"12105:24:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"12176:4:6","nodeType":"YulLiteral","src":"12176:4:6","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"12182:4:6","nodeType":"YulLiteral","src":"12182:4:6","type":"","value":"0x04"}],"functionName":{"name":"revert","nativeSrc":"12169:6:6","nodeType":"YulIdentifier","src":"12169:6:6"},"nativeSrc":"12169:18:6","nodeType":"YulFunctionCall","src":"12169:18:6"},"nativeSrc":"12169:18:6","nodeType":"YulExpressionStatement","src":"12169:18:6"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"11925:4:6","nodeType":"YulLiteral","src":"11925:4:6","type":"","value":"0x00"}],"functionName":{"name":"mload","nativeSrc":"11919:5:6","nodeType":"YulIdentifier","src":"11919:5:6"},"nativeSrc":"11919:11:6","nodeType":"YulFunctionCall","src":"11919:11:6"},{"kind":"number","nativeSrc":"11932:1:6","nodeType":"YulLiteral","src":"11932:1:6","type":"","value":"1"}],"functionName":{"name":"eq","nativeSrc":"11916:2:6","nodeType":"YulIdentifier","src":"11916:2:6"},"nativeSrc":"11916:18:6","nodeType":"YulFunctionCall","src":"11916:18:6"},{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"11943:14:6","nodeType":"YulIdentifier","src":"11943:14:6"},"nativeSrc":"11943:16:6","nodeType":"YulFunctionCall","src":"11943:16:6"}],"functionName":{"name":"iszero","nativeSrc":"11936:6:6","nodeType":"YulIdentifier","src":"11936:6:6"},"nativeSrc":"11936:24:6","nodeType":"YulFunctionCall","src":"11936:24:6"}],"functionName":{"name":"or","nativeSrc":"11913:2:6","nodeType":"YulIdentifier","src":"11913:2:6"},"nativeSrc":"11913:48:6","nodeType":"YulFunctionCall","src":"11913:48:6"},{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"12014:3:6","nodeType":"YulIdentifier","src":"12014:3:6"},"nativeSrc":"12014:5:6","nodeType":"YulFunctionCall","src":"12014:5:6"},{"name":"token","nativeSrc":"12021:5:6","nodeType":"YulIdentifier","src":"12021:5:6"},{"kind":"number","nativeSrc":"12028:1:6","nodeType":"YulLiteral","src":"12028:1:6","type":"","value":"0"},{"kind":"number","nativeSrc":"12031:4:6","nodeType":"YulLiteral","src":"12031:4:6","type":"","value":"0x10"},{"kind":"number","nativeSrc":"12037:4:6","nodeType":"YulLiteral","src":"12037:4:6","type":"","value":"0x44"},{"kind":"number","nativeSrc":"12043:4:6","nodeType":"YulLiteral","src":"12043:4:6","type":"","value":"0x00"},{"kind":"number","nativeSrc":"12049:4:6","nodeType":"YulLiteral","src":"12049:4:6","type":"","value":"0x20"}],"functionName":{"name":"call","nativeSrc":"12009:4:6","nodeType":"YulIdentifier","src":"12009:4:6"},"nativeSrc":"12009:45:6","nodeType":"YulFunctionCall","src":"12009:45:6"}],"functionName":{"name":"and","nativeSrc":"11828:3:6","nodeType":"YulIdentifier","src":"11828:3:6"},"nativeSrc":"11828:244:6","nodeType":"YulFunctionCall","src":"11828:244:6"}],"functionName":{"name":"iszero","nativeSrc":"11804:6:6","nodeType":"YulIdentifier","src":"11804:6:6"},"nativeSrc":"11804:282:6","nodeType":"YulFunctionCall","src":"11804:282:6"},"nativeSrc":"11801:400:6","nodeType":"YulIf","src":"11801:400:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"12221:4:6","nodeType":"YulLiteral","src":"12221:4:6","type":"","value":"0x34"},{"kind":"number","nativeSrc":"12227:1:6","nodeType":"YulLiteral","src":"12227:1:6","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"12214:6:6","nodeType":"YulIdentifier","src":"12214:6:6"},"nativeSrc":"12214:15:6","nodeType":"YulFunctionCall","src":"12214:15:6"},"nativeSrc":"12214:15:6","nodeType":"YulExpressionStatement","src":"12214:15:6"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2887,"isOffset":false,"isSlot":false,"src":"11595:6:6","valueSize":1},{"declaration":2885,"isOffset":false,"isSlot":false,"src":"11538:2:6","valueSize":1},{"declaration":2883,"isOffset":false,"isSlot":false,"src":"12021:5:6","valueSize":1}],"id":2890,"nodeType":"InlineAssembly","src":"11502:806:6"}]},"documentation":{"id":2881,"nodeType":"StructuredDocumentation","src":"11265:105:6","text":"@dev Sends `amount` of ERC20 `token` from the current contract to `to`.\n Reverts upon failure."},"id":2892,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransfer","nameLocation":"11384:12:6","nodeType":"FunctionDefinition","parameters":{"id":2888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2883,"mutability":"mutable","name":"token","nameLocation":"11405:5:6","nodeType":"VariableDeclaration","scope":2892,"src":"11397:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2882,"name":"address","nodeType":"ElementaryTypeName","src":"11397:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2885,"mutability":"mutable","name":"to","nameLocation":"11420:2:6","nodeType":"VariableDeclaration","scope":2892,"src":"11412:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2884,"name":"address","nodeType":"ElementaryTypeName","src":"11412:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2887,"mutability":"mutable","name":"amount","nameLocation":"11432:6:6","nodeType":"VariableDeclaration","scope":2892,"src":"11424:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2886,"name":"uint256","nodeType":"ElementaryTypeName","src":"11424:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11396:43:6"},"returnParameters":{"id":2889,"nodeType":"ParameterList","parameters":[],"src":"11449:0:6"},"scope":2941,"src":"11375:939:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2903,"nodeType":"Block","src":"12511:1526:6","statements":[{"AST":{"nativeSrc":"12573:1458:6","nodeType":"YulBlock","src":"12573:1458:6","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12594:4:6","nodeType":"YulLiteral","src":"12594:4:6","type":"","value":"0x00"},{"kind":"number","nativeSrc":"12600:10:6","nodeType":"YulLiteral","src":"12600:10:6","type":"","value":"0x70a08231"}],"functionName":{"name":"mstore","nativeSrc":"12587:6:6","nodeType":"YulIdentifier","src":"12587:6:6"},"nativeSrc":"12587:24:6","nodeType":"YulFunctionCall","src":"12587:24:6"},"nativeSrc":"12587:24:6","nodeType":"YulExpressionStatement","src":"12587:24:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"12687:4:6","nodeType":"YulLiteral","src":"12687:4:6","type":"","value":"0x20"},{"arguments":[],"functionName":{"name":"address","nativeSrc":"12693:7:6","nodeType":"YulIdentifier","src":"12693:7:6"},"nativeSrc":"12693:9:6","nodeType":"YulFunctionCall","src":"12693:9:6"}],"functionName":{"name":"mstore","nativeSrc":"12680:6:6","nodeType":"YulIdentifier","src":"12680:6:6"},"nativeSrc":"12680:23:6","nodeType":"YulFunctionCall","src":"12680:23:6"},"nativeSrc":"12680:23:6","nodeType":"YulExpressionStatement","src":"12680:23:6"},{"body":{"nativeSrc":"13091:114:6","nodeType":"YulBlock","src":"13091:114:6","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13116:4:6","nodeType":"YulLiteral","src":"13116:4:6","type":"","value":"0x00"},{"kind":"number","nativeSrc":"13122:10:6","nodeType":"YulLiteral","src":"13122:10:6","type":"","value":"0x90b8ec18"}],"functionName":{"name":"mstore","nativeSrc":"13109:6:6","nodeType":"YulIdentifier","src":"13109:6:6"},"nativeSrc":"13109:24:6","nodeType":"YulFunctionCall","src":"13109:24:6"},"nativeSrc":"13109:24:6","nodeType":"YulExpressionStatement","src":"13109:24:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"13180:4:6","nodeType":"YulLiteral","src":"13180:4:6","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"13186:4:6","nodeType":"YulLiteral","src":"13186:4:6","type":"","value":"0x04"}],"functionName":{"name":"revert","nativeSrc":"13173:6:6","nodeType":"YulIdentifier","src":"13173:6:6"},"nativeSrc":"13173:18:6","nodeType":"YulFunctionCall","src":"13173:18:6"},"nativeSrc":"13173:18:6","nodeType":"YulExpressionStatement","src":"13173:18:6"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"12934:14:6","nodeType":"YulIdentifier","src":"12934:14:6"},"nativeSrc":"12934:16:6","nodeType":"YulFunctionCall","src":"12934:16:6"},{"kind":"number","nativeSrc":"12952:4:6","nodeType":"YulLiteral","src":"12952:4:6","type":"","value":"0x1f"}],"functionName":{"name":"gt","nativeSrc":"12931:2:6","nodeType":"YulIdentifier","src":"12931:2:6"},"nativeSrc":"12931:26:6","nodeType":"YulFunctionCall","src":"12931:26:6"},{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"13021:3:6","nodeType":"YulIdentifier","src":"13021:3:6"},"nativeSrc":"13021:5:6","nodeType":"YulFunctionCall","src":"13021:5:6"},{"name":"token","nativeSrc":"13028:5:6","nodeType":"YulIdentifier","src":"13028:5:6"},{"kind":"number","nativeSrc":"13035:4:6","nodeType":"YulLiteral","src":"13035:4:6","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"13041:4:6","nodeType":"YulLiteral","src":"13041:4:6","type":"","value":"0x24"},{"kind":"number","nativeSrc":"13047:4:6","nodeType":"YulLiteral","src":"13047:4:6","type":"","value":"0x34"},{"kind":"number","nativeSrc":"13053:4:6","nodeType":"YulLiteral","src":"13053:4:6","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"13010:10:6","nodeType":"YulIdentifier","src":"13010:10:6"},"nativeSrc":"13010:48:6","nodeType":"YulFunctionCall","src":"13010:48:6"}],"functionName":{"name":"and","nativeSrc":"12846:3:6","nodeType":"YulIdentifier","src":"12846:3:6"},"nativeSrc":"12846:230:6","nodeType":"YulFunctionCall","src":"12846:230:6"}],"functionName":{"name":"iszero","nativeSrc":"12822:6:6","nodeType":"YulIdentifier","src":"12822:6:6"},"nativeSrc":"12822:268:6","nodeType":"YulFunctionCall","src":"12822:268:6"},"nativeSrc":"12819:386:6","nodeType":"YulIf","src":"12819:386:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"13225:4:6","nodeType":"YulLiteral","src":"13225:4:6","type":"","value":"0x14"},{"name":"to","nativeSrc":"13231:2:6","nodeType":"YulIdentifier","src":"13231:2:6"}],"functionName":{"name":"mstore","nativeSrc":"13218:6:6","nodeType":"YulIdentifier","src":"13218:6:6"},"nativeSrc":"13218:16:6","nodeType":"YulFunctionCall","src":"13218:16:6"},"nativeSrc":"13218:16:6","nodeType":"YulExpressionStatement","src":"13218:16:6"},{"nativeSrc":"13275:21:6","nodeType":"YulAssignment","src":"13275:21:6","value":{"arguments":[{"kind":"number","nativeSrc":"13291:4:6","nodeType":"YulLiteral","src":"13291:4:6","type":"","value":"0x34"}],"functionName":{"name":"mload","nativeSrc":"13285:5:6","nodeType":"YulIdentifier","src":"13285:5:6"},"nativeSrc":"13285:11:6","nodeType":"YulFunctionCall","src":"13285:11:6"},"variableNames":[{"name":"amount","nativeSrc":"13275:6:6","nodeType":"YulIdentifier","src":"13275:6:6"}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"13377:4:6","nodeType":"YulLiteral","src":"13377:4:6","type":"","value":"0x00"},{"kind":"number","nativeSrc":"13383:34:6","nodeType":"YulLiteral","src":"13383:34:6","type":"","value":"0xa9059cbb000000000000000000000000"}],"functionName":{"name":"mstore","nativeSrc":"13370:6:6","nodeType":"YulIdentifier","src":"13370:6:6"},"nativeSrc":"13370:48:6","nodeType":"YulFunctionCall","src":"13370:48:6"},"nativeSrc":"13370:48:6","nodeType":"YulExpressionStatement","src":"13370:48:6"},{"body":{"nativeSrc":"13810:114:6","nodeType":"YulBlock","src":"13810:114:6","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13835:4:6","nodeType":"YulLiteral","src":"13835:4:6","type":"","value":"0x00"},{"kind":"number","nativeSrc":"13841:10:6","nodeType":"YulLiteral","src":"13841:10:6","type":"","value":"0x90b8ec18"}],"functionName":{"name":"mstore","nativeSrc":"13828:6:6","nodeType":"YulIdentifier","src":"13828:6:6"},"nativeSrc":"13828:24:6","nodeType":"YulFunctionCall","src":"13828:24:6"},"nativeSrc":"13828:24:6","nodeType":"YulExpressionStatement","src":"13828:24:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"13899:4:6","nodeType":"YulLiteral","src":"13899:4:6","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"13905:4:6","nodeType":"YulLiteral","src":"13905:4:6","type":"","value":"0x04"}],"functionName":{"name":"revert","nativeSrc":"13892:6:6","nodeType":"YulIdentifier","src":"13892:6:6"},"nativeSrc":"13892:18:6","nodeType":"YulFunctionCall","src":"13892:18:6"},"nativeSrc":"13892:18:6","nodeType":"YulExpressionStatement","src":"13892:18:6"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"13648:4:6","nodeType":"YulLiteral","src":"13648:4:6","type":"","value":"0x00"}],"functionName":{"name":"mload","nativeSrc":"13642:5:6","nodeType":"YulIdentifier","src":"13642:5:6"},"nativeSrc":"13642:11:6","nodeType":"YulFunctionCall","src":"13642:11:6"},{"kind":"number","nativeSrc":"13655:1:6","nodeType":"YulLiteral","src":"13655:1:6","type":"","value":"1"}],"functionName":{"name":"eq","nativeSrc":"13639:2:6","nodeType":"YulIdentifier","src":"13639:2:6"},"nativeSrc":"13639:18:6","nodeType":"YulFunctionCall","src":"13639:18:6"},{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"13666:14:6","nodeType":"YulIdentifier","src":"13666:14:6"},"nativeSrc":"13666:16:6","nodeType":"YulFunctionCall","src":"13666:16:6"}],"functionName":{"name":"iszero","nativeSrc":"13659:6:6","nodeType":"YulIdentifier","src":"13659:6:6"},"nativeSrc":"13659:24:6","nodeType":"YulFunctionCall","src":"13659:24:6"}],"functionName":{"name":"or","nativeSrc":"13636:2:6","nodeType":"YulIdentifier","src":"13636:2:6"},"nativeSrc":"13636:48:6","nodeType":"YulFunctionCall","src":"13636:48:6"},{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"13737:3:6","nodeType":"YulIdentifier","src":"13737:3:6"},"nativeSrc":"13737:5:6","nodeType":"YulFunctionCall","src":"13737:5:6"},{"name":"token","nativeSrc":"13744:5:6","nodeType":"YulIdentifier","src":"13744:5:6"},{"kind":"number","nativeSrc":"13751:1:6","nodeType":"YulLiteral","src":"13751:1:6","type":"","value":"0"},{"kind":"number","nativeSrc":"13754:4:6","nodeType":"YulLiteral","src":"13754:4:6","type":"","value":"0x10"},{"kind":"number","nativeSrc":"13760:4:6","nodeType":"YulLiteral","src":"13760:4:6","type":"","value":"0x44"},{"kind":"number","nativeSrc":"13766:4:6","nodeType":"YulLiteral","src":"13766:4:6","type":"","value":"0x00"},{"kind":"number","nativeSrc":"13772:4:6","nodeType":"YulLiteral","src":"13772:4:6","type":"","value":"0x20"}],"functionName":{"name":"call","nativeSrc":"13732:4:6","nodeType":"YulIdentifier","src":"13732:4:6"},"nativeSrc":"13732:45:6","nodeType":"YulFunctionCall","src":"13732:45:6"}],"functionName":{"name":"and","nativeSrc":"13551:3:6","nodeType":"YulIdentifier","src":"13551:3:6"},"nativeSrc":"13551:244:6","nodeType":"YulFunctionCall","src":"13551:244:6"}],"functionName":{"name":"iszero","nativeSrc":"13527:6:6","nodeType":"YulIdentifier","src":"13527:6:6"},"nativeSrc":"13527:282:6","nodeType":"YulFunctionCall","src":"13527:282:6"},"nativeSrc":"13524:400:6","nodeType":"YulIf","src":"13524:400:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"13944:4:6","nodeType":"YulLiteral","src":"13944:4:6","type":"","value":"0x34"},{"kind":"number","nativeSrc":"13950:1:6","nodeType":"YulLiteral","src":"13950:1:6","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"13937:6:6","nodeType":"YulIdentifier","src":"13937:6:6"},"nativeSrc":"13937:15:6","nodeType":"YulFunctionCall","src":"13937:15:6"},"nativeSrc":"13937:15:6","nodeType":"YulExpressionStatement","src":"13937:15:6"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2900,"isOffset":false,"isSlot":false,"src":"13275:6:6","valueSize":1},{"declaration":2897,"isOffset":false,"isSlot":false,"src":"13231:2:6","valueSize":1},{"declaration":2895,"isOffset":false,"isSlot":false,"src":"13028:5:6","valueSize":1},{"declaration":2895,"isOffset":false,"isSlot":false,"src":"13744:5:6","valueSize":1}],"id":2902,"nodeType":"InlineAssembly","src":"12564:1467:6"}]},"documentation":{"id":2893,"nodeType":"StructuredDocumentation","src":"12320:100:6","text":"@dev Sends all of ERC20 `token` from the current contract to `to`.\n Reverts upon failure."},"id":2904,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferAll","nameLocation":"12434:15:6","nodeType":"FunctionDefinition","parameters":{"id":2898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2895,"mutability":"mutable","name":"token","nameLocation":"12458:5:6","nodeType":"VariableDeclaration","scope":2904,"src":"12450:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2894,"name":"address","nodeType":"ElementaryTypeName","src":"12450:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2897,"mutability":"mutable","name":"to","nameLocation":"12473:2:6","nodeType":"VariableDeclaration","scope":2904,"src":"12465:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2896,"name":"address","nodeType":"ElementaryTypeName","src":"12465:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12449:27:6"},"returnParameters":{"id":2901,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2900,"mutability":"mutable","name":"amount","nameLocation":"12503:6:6","nodeType":"VariableDeclaration","scope":2904,"src":"12495:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2899,"name":"uint256","nodeType":"ElementaryTypeName","src":"12495:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12494:16:6"},"scope":2941,"src":"12425:1612:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2915,"nodeType":"Block","src":"14244:863:6","statements":[{"AST":{"nativeSrc":"14306:795:6","nodeType":"YulBlock","src":"14306:795:6","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14327:4:6","nodeType":"YulLiteral","src":"14327:4:6","type":"","value":"0x14"},{"name":"to","nativeSrc":"14333:2:6","nodeType":"YulIdentifier","src":"14333:2:6"}],"functionName":{"name":"mstore","nativeSrc":"14320:6:6","nodeType":"YulIdentifier","src":"14320:6:6"},"nativeSrc":"14320:16:6","nodeType":"YulFunctionCall","src":"14320:16:6"},"nativeSrc":"14320:16:6","nodeType":"YulExpressionStatement","src":"14320:16:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14384:4:6","nodeType":"YulLiteral","src":"14384:4:6","type":"","value":"0x34"},{"name":"amount","nativeSrc":"14390:6:6","nodeType":"YulIdentifier","src":"14390:6:6"}],"functionName":{"name":"mstore","nativeSrc":"14377:6:6","nodeType":"YulIdentifier","src":"14377:6:6"},"nativeSrc":"14377:20:6","nodeType":"YulFunctionCall","src":"14377:20:6"},"nativeSrc":"14377:20:6","nodeType":"YulExpressionStatement","src":"14377:20:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14449:4:6","nodeType":"YulLiteral","src":"14449:4:6","type":"","value":"0x00"},{"kind":"number","nativeSrc":"14455:34:6","nodeType":"YulLiteral","src":"14455:34:6","type":"","value":"0x095ea7b3000000000000000000000000"}],"functionName":{"name":"mstore","nativeSrc":"14442:6:6","nodeType":"YulIdentifier","src":"14442:6:6"},"nativeSrc":"14442:48:6","nodeType":"YulFunctionCall","src":"14442:48:6"},"nativeSrc":"14442:48:6","nodeType":"YulExpressionStatement","src":"14442:48:6"},{"body":{"nativeSrc":"14881:113:6","nodeType":"YulBlock","src":"14881:113:6","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14906:4:6","nodeType":"YulLiteral","src":"14906:4:6","type":"","value":"0x00"},{"kind":"number","nativeSrc":"14912:10:6","nodeType":"YulLiteral","src":"14912:10:6","type":"","value":"0x3e3f8f73"}],"functionName":{"name":"mstore","nativeSrc":"14899:6:6","nodeType":"YulIdentifier","src":"14899:6:6"},"nativeSrc":"14899:24:6","nodeType":"YulFunctionCall","src":"14899:24:6"},"nativeSrc":"14899:24:6","nodeType":"YulExpressionStatement","src":"14899:24:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14969:4:6","nodeType":"YulLiteral","src":"14969:4:6","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"14975:4:6","nodeType":"YulLiteral","src":"14975:4:6","type":"","value":"0x04"}],"functionName":{"name":"revert","nativeSrc":"14962:6:6","nodeType":"YulIdentifier","src":"14962:6:6"},"nativeSrc":"14962:18:6","nodeType":"YulFunctionCall","src":"14962:18:6"},"nativeSrc":"14962:18:6","nodeType":"YulExpressionStatement","src":"14962:18:6"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"14719:4:6","nodeType":"YulLiteral","src":"14719:4:6","type":"","value":"0x00"}],"functionName":{"name":"mload","nativeSrc":"14713:5:6","nodeType":"YulIdentifier","src":"14713:5:6"},"nativeSrc":"14713:11:6","nodeType":"YulFunctionCall","src":"14713:11:6"},{"kind":"number","nativeSrc":"14726:1:6","nodeType":"YulLiteral","src":"14726:1:6","type":"","value":"1"}],"functionName":{"name":"eq","nativeSrc":"14710:2:6","nodeType":"YulIdentifier","src":"14710:2:6"},"nativeSrc":"14710:18:6","nodeType":"YulFunctionCall","src":"14710:18:6"},{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"14737:14:6","nodeType":"YulIdentifier","src":"14737:14:6"},"nativeSrc":"14737:16:6","nodeType":"YulFunctionCall","src":"14737:16:6"}],"functionName":{"name":"iszero","nativeSrc":"14730:6:6","nodeType":"YulIdentifier","src":"14730:6:6"},"nativeSrc":"14730:24:6","nodeType":"YulFunctionCall","src":"14730:24:6"}],"functionName":{"name":"or","nativeSrc":"14707:2:6","nodeType":"YulIdentifier","src":"14707:2:6"},"nativeSrc":"14707:48:6","nodeType":"YulFunctionCall","src":"14707:48:6"},{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"14808:3:6","nodeType":"YulIdentifier","src":"14808:3:6"},"nativeSrc":"14808:5:6","nodeType":"YulFunctionCall","src":"14808:5:6"},{"name":"token","nativeSrc":"14815:5:6","nodeType":"YulIdentifier","src":"14815:5:6"},{"kind":"number","nativeSrc":"14822:1:6","nodeType":"YulLiteral","src":"14822:1:6","type":"","value":"0"},{"kind":"number","nativeSrc":"14825:4:6","nodeType":"YulLiteral","src":"14825:4:6","type":"","value":"0x10"},{"kind":"number","nativeSrc":"14831:4:6","nodeType":"YulLiteral","src":"14831:4:6","type":"","value":"0x44"},{"kind":"number","nativeSrc":"14837:4:6","nodeType":"YulLiteral","src":"14837:4:6","type":"","value":"0x00"},{"kind":"number","nativeSrc":"14843:4:6","nodeType":"YulLiteral","src":"14843:4:6","type":"","value":"0x20"}],"functionName":{"name":"call","nativeSrc":"14803:4:6","nodeType":"YulIdentifier","src":"14803:4:6"},"nativeSrc":"14803:45:6","nodeType":"YulFunctionCall","src":"14803:45:6"}],"functionName":{"name":"and","nativeSrc":"14622:3:6","nodeType":"YulIdentifier","src":"14622:3:6"},"nativeSrc":"14622:244:6","nodeType":"YulFunctionCall","src":"14622:244:6"}],"functionName":{"name":"iszero","nativeSrc":"14598:6:6","nodeType":"YulIdentifier","src":"14598:6:6"},"nativeSrc":"14598:282:6","nodeType":"YulFunctionCall","src":"14598:282:6"},"nativeSrc":"14595:399:6","nodeType":"YulIf","src":"14595:399:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15014:4:6","nodeType":"YulLiteral","src":"15014:4:6","type":"","value":"0x34"},{"kind":"number","nativeSrc":"15020:1:6","nodeType":"YulLiteral","src":"15020:1:6","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"15007:6:6","nodeType":"YulIdentifier","src":"15007:6:6"},"nativeSrc":"15007:15:6","nodeType":"YulFunctionCall","src":"15007:15:6"},"nativeSrc":"15007:15:6","nodeType":"YulExpressionStatement","src":"15007:15:6"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2911,"isOffset":false,"isSlot":false,"src":"14390:6:6","valueSize":1},{"declaration":2909,"isOffset":false,"isSlot":false,"src":"14333:2:6","valueSize":1},{"declaration":2907,"isOffset":false,"isSlot":false,"src":"14815:5:6","valueSize":1}],"id":2914,"nodeType":"InlineAssembly","src":"14297:804:6"}]},"documentation":{"id":2905,"nodeType":"StructuredDocumentation","src":"14043:123:6","text":"@dev Sets `amount` of ERC20 `token` for `to` to manage on behalf of the current contract.\n Reverts upon failure."},"id":2916,"implemented":true,"kind":"function","modifiers":[],"name":"safeApprove","nameLocation":"14180:11:6","nodeType":"FunctionDefinition","parameters":{"id":2912,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2907,"mutability":"mutable","name":"token","nameLocation":"14200:5:6","nodeType":"VariableDeclaration","scope":2916,"src":"14192:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2906,"name":"address","nodeType":"ElementaryTypeName","src":"14192:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2909,"mutability":"mutable","name":"to","nameLocation":"14215:2:6","nodeType":"VariableDeclaration","scope":2916,"src":"14207:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2908,"name":"address","nodeType":"ElementaryTypeName","src":"14207:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2911,"mutability":"mutable","name":"amount","nameLocation":"14227:6:6","nodeType":"VariableDeclaration","scope":2916,"src":"14219:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2910,"name":"uint256","nodeType":"ElementaryTypeName","src":"14219:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14191:43:6"},"returnParameters":{"id":2913,"nodeType":"ParameterList","parameters":[],"src":"14244:0:6"},"scope":2941,"src":"14171:936:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2927,"nodeType":"Block","src":"15500:1542:6","statements":[{"AST":{"nativeSrc":"15562:1474:6","nodeType":"YulBlock","src":"15562:1474:6","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15583:4:6","nodeType":"YulLiteral","src":"15583:4:6","type":"","value":"0x14"},{"name":"to","nativeSrc":"15589:2:6","nodeType":"YulIdentifier","src":"15589:2:6"}],"functionName":{"name":"mstore","nativeSrc":"15576:6:6","nodeType":"YulIdentifier","src":"15576:6:6"},"nativeSrc":"15576:16:6","nodeType":"YulFunctionCall","src":"15576:16:6"},"nativeSrc":"15576:16:6","nodeType":"YulExpressionStatement","src":"15576:16:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15640:4:6","nodeType":"YulLiteral","src":"15640:4:6","type":"","value":"0x34"},{"name":"amount","nativeSrc":"15646:6:6","nodeType":"YulIdentifier","src":"15646:6:6"}],"functionName":{"name":"mstore","nativeSrc":"15633:6:6","nodeType":"YulIdentifier","src":"15633:6:6"},"nativeSrc":"15633:20:6","nodeType":"YulFunctionCall","src":"15633:20:6"},"nativeSrc":"15633:20:6","nodeType":"YulExpressionStatement","src":"15633:20:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15705:4:6","nodeType":"YulLiteral","src":"15705:4:6","type":"","value":"0x00"},{"kind":"number","nativeSrc":"15711:34:6","nodeType":"YulLiteral","src":"15711:34:6","type":"","value":"0x095ea7b3000000000000000000000000"}],"functionName":{"name":"mstore","nativeSrc":"15698:6:6","nodeType":"YulIdentifier","src":"15698:6:6"},"nativeSrc":"15698:48:6","nodeType":"YulFunctionCall","src":"15698:48:6"},"nativeSrc":"15698:48:6","nodeType":"YulExpressionStatement","src":"15698:48:6"},{"body":{"nativeSrc":"16136:793:6","nodeType":"YulBlock","src":"16136:793:6","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"16161:4:6","nodeType":"YulLiteral","src":"16161:4:6","type":"","value":"0x34"},{"kind":"number","nativeSrc":"16167:1:6","nodeType":"YulLiteral","src":"16167:1:6","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"16154:6:6","nodeType":"YulIdentifier","src":"16154:6:6"},"nativeSrc":"16154:15:6","nodeType":"YulFunctionCall","src":"16154:15:6"},"nativeSrc":"16154:15:6","nodeType":"YulExpressionStatement","src":"16154:15:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16222:4:6","nodeType":"YulLiteral","src":"16222:4:6","type":"","value":"0x00"},{"kind":"number","nativeSrc":"16228:34:6","nodeType":"YulLiteral","src":"16228:34:6","type":"","value":"0x095ea7b3000000000000000000000000"}],"functionName":{"name":"mstore","nativeSrc":"16215:6:6","nodeType":"YulIdentifier","src":"16215:6:6"},"nativeSrc":"16215:48:6","nodeType":"YulFunctionCall","src":"16215:48:6"},"nativeSrc":"16215:48:6","nodeType":"YulExpressionStatement","src":"16215:48:6"},{"expression":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"16320:3:6","nodeType":"YulIdentifier","src":"16320:3:6"},"nativeSrc":"16320:5:6","nodeType":"YulFunctionCall","src":"16320:5:6"},{"name":"token","nativeSrc":"16327:5:6","nodeType":"YulIdentifier","src":"16327:5:6"},{"kind":"number","nativeSrc":"16334:1:6","nodeType":"YulLiteral","src":"16334:1:6","type":"","value":"0"},{"kind":"number","nativeSrc":"16337:4:6","nodeType":"YulLiteral","src":"16337:4:6","type":"","value":"0x10"},{"kind":"number","nativeSrc":"16343:4:6","nodeType":"YulLiteral","src":"16343:4:6","type":"","value":"0x44"},{"arguments":[],"functionName":{"name":"codesize","nativeSrc":"16349:8:6","nodeType":"YulIdentifier","src":"16349:8:6"},"nativeSrc":"16349:10:6","nodeType":"YulFunctionCall","src":"16349:10:6"},{"kind":"number","nativeSrc":"16361:4:6","nodeType":"YulLiteral","src":"16361:4:6","type":"","value":"0x00"}],"functionName":{"name":"call","nativeSrc":"16315:4:6","nodeType":"YulIdentifier","src":"16315:4:6"},"nativeSrc":"16315:51:6","nodeType":"YulFunctionCall","src":"16315:51:6"}],"functionName":{"name":"pop","nativeSrc":"16311:3:6","nodeType":"YulIdentifier","src":"16311:3:6"},"nativeSrc":"16311:56:6","nodeType":"YulFunctionCall","src":"16311:56:6"},"nativeSrc":"16311:56:6","nodeType":"YulExpressionStatement","src":"16311:56:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16414:4:6","nodeType":"YulLiteral","src":"16414:4:6","type":"","value":"0x34"},{"name":"amount","nativeSrc":"16420:6:6","nodeType":"YulIdentifier","src":"16420:6:6"}],"functionName":{"name":"mstore","nativeSrc":"16407:6:6","nodeType":"YulIdentifier","src":"16407:6:6"},"nativeSrc":"16407:20:6","nodeType":"YulFunctionCall","src":"16407:20:6"},"nativeSrc":"16407:20:6","nodeType":"YulExpressionStatement","src":"16407:20:6"},{"body":{"nativeSrc":"16790:125:6","nodeType":"YulBlock","src":"16790:125:6","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"16819:4:6","nodeType":"YulLiteral","src":"16819:4:6","type":"","value":"0x00"},{"kind":"number","nativeSrc":"16825:10:6","nodeType":"YulLiteral","src":"16825:10:6","type":"","value":"0x3e3f8f73"}],"functionName":{"name":"mstore","nativeSrc":"16812:6:6","nodeType":"YulIdentifier","src":"16812:6:6"},"nativeSrc":"16812:24:6","nodeType":"YulFunctionCall","src":"16812:24:6"},"nativeSrc":"16812:24:6","nodeType":"YulExpressionStatement","src":"16812:24:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16886:4:6","nodeType":"YulLiteral","src":"16886:4:6","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"16892:4:6","nodeType":"YulLiteral","src":"16892:4:6","type":"","value":"0x04"}],"functionName":{"name":"revert","nativeSrc":"16879:6:6","nodeType":"YulIdentifier","src":"16879:6:6"},"nativeSrc":"16879:18:6","nodeType":"YulFunctionCall","src":"16879:18:6"},"nativeSrc":"16879:18:6","nodeType":"YulExpressionStatement","src":"16879:18:6"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"16616:4:6","nodeType":"YulLiteral","src":"16616:4:6","type":"","value":"0x00"}],"functionName":{"name":"mload","nativeSrc":"16610:5:6","nodeType":"YulIdentifier","src":"16610:5:6"},"nativeSrc":"16610:11:6","nodeType":"YulFunctionCall","src":"16610:11:6"},{"kind":"number","nativeSrc":"16623:1:6","nodeType":"YulLiteral","src":"16623:1:6","type":"","value":"1"}],"functionName":{"name":"eq","nativeSrc":"16607:2:6","nodeType":"YulIdentifier","src":"16607:2:6"},"nativeSrc":"16607:18:6","nodeType":"YulFunctionCall","src":"16607:18:6"},{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"16634:14:6","nodeType":"YulIdentifier","src":"16634:14:6"},"nativeSrc":"16634:16:6","nodeType":"YulFunctionCall","src":"16634:16:6"}],"functionName":{"name":"iszero","nativeSrc":"16627:6:6","nodeType":"YulIdentifier","src":"16627:6:6"},"nativeSrc":"16627:24:6","nodeType":"YulFunctionCall","src":"16627:24:6"}],"functionName":{"name":"or","nativeSrc":"16604:2:6","nodeType":"YulIdentifier","src":"16604:2:6"},"nativeSrc":"16604:48:6","nodeType":"YulFunctionCall","src":"16604:48:6"},{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"16709:3:6","nodeType":"YulIdentifier","src":"16709:3:6"},"nativeSrc":"16709:5:6","nodeType":"YulFunctionCall","src":"16709:5:6"},{"name":"token","nativeSrc":"16716:5:6","nodeType":"YulIdentifier","src":"16716:5:6"},{"kind":"number","nativeSrc":"16723:1:6","nodeType":"YulLiteral","src":"16723:1:6","type":"","value":"0"},{"kind":"number","nativeSrc":"16726:4:6","nodeType":"YulLiteral","src":"16726:4:6","type":"","value":"0x10"},{"kind":"number","nativeSrc":"16732:4:6","nodeType":"YulLiteral","src":"16732:4:6","type":"","value":"0x44"},{"kind":"number","nativeSrc":"16738:4:6","nodeType":"YulLiteral","src":"16738:4:6","type":"","value":"0x00"},{"kind":"number","nativeSrc":"16744:4:6","nodeType":"YulLiteral","src":"16744:4:6","type":"","value":"0x20"}],"functionName":{"name":"call","nativeSrc":"16704:4:6","nodeType":"YulIdentifier","src":"16704:4:6"},"nativeSrc":"16704:45:6","nodeType":"YulFunctionCall","src":"16704:45:6"}],"functionName":{"name":"and","nativeSrc":"16575:3:6","nodeType":"YulIdentifier","src":"16575:3:6"},"nativeSrc":"16575:196:6","nodeType":"YulFunctionCall","src":"16575:196:6"}],"functionName":{"name":"iszero","nativeSrc":"16547:6:6","nodeType":"YulIdentifier","src":"16547:6:6"},"nativeSrc":"16547:242:6","nodeType":"YulFunctionCall","src":"16547:242:6"},"nativeSrc":"16544:371:6","nodeType":"YulIf","src":"16544:371:6"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"15974:4:6","nodeType":"YulLiteral","src":"15974:4:6","type":"","value":"0x00"}],"functionName":{"name":"mload","nativeSrc":"15968:5:6","nodeType":"YulIdentifier","src":"15968:5:6"},"nativeSrc":"15968:11:6","nodeType":"YulFunctionCall","src":"15968:11:6"},{"kind":"number","nativeSrc":"15981:1:6","nodeType":"YulLiteral","src":"15981:1:6","type":"","value":"1"}],"functionName":{"name":"eq","nativeSrc":"15965:2:6","nodeType":"YulIdentifier","src":"15965:2:6"},"nativeSrc":"15965:18:6","nodeType":"YulFunctionCall","src":"15965:18:6"},{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"15992:14:6","nodeType":"YulIdentifier","src":"15992:14:6"},"nativeSrc":"15992:16:6","nodeType":"YulFunctionCall","src":"15992:16:6"}],"functionName":{"name":"iszero","nativeSrc":"15985:6:6","nodeType":"YulIdentifier","src":"15985:6:6"},"nativeSrc":"15985:24:6","nodeType":"YulFunctionCall","src":"15985:24:6"}],"functionName":{"name":"or","nativeSrc":"15962:2:6","nodeType":"YulIdentifier","src":"15962:2:6"},"nativeSrc":"15962:48:6","nodeType":"YulFunctionCall","src":"15962:48:6"},{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"16063:3:6","nodeType":"YulIdentifier","src":"16063:3:6"},"nativeSrc":"16063:5:6","nodeType":"YulFunctionCall","src":"16063:5:6"},{"name":"token","nativeSrc":"16070:5:6","nodeType":"YulIdentifier","src":"16070:5:6"},{"kind":"number","nativeSrc":"16077:1:6","nodeType":"YulLiteral","src":"16077:1:6","type":"","value":"0"},{"kind":"number","nativeSrc":"16080:4:6","nodeType":"YulLiteral","src":"16080:4:6","type":"","value":"0x10"},{"kind":"number","nativeSrc":"16086:4:6","nodeType":"YulLiteral","src":"16086:4:6","type":"","value":"0x44"},{"kind":"number","nativeSrc":"16092:4:6","nodeType":"YulLiteral","src":"16092:4:6","type":"","value":"0x00"},{"kind":"number","nativeSrc":"16098:4:6","nodeType":"YulLiteral","src":"16098:4:6","type":"","value":"0x20"}],"functionName":{"name":"call","nativeSrc":"16058:4:6","nodeType":"YulIdentifier","src":"16058:4:6"},"nativeSrc":"16058:45:6","nodeType":"YulFunctionCall","src":"16058:45:6"}],"functionName":{"name":"and","nativeSrc":"15877:3:6","nodeType":"YulIdentifier","src":"15877:3:6"},"nativeSrc":"15877:244:6","nodeType":"YulFunctionCall","src":"15877:244:6"}],"functionName":{"name":"iszero","nativeSrc":"15853:6:6","nodeType":"YulIdentifier","src":"15853:6:6"},"nativeSrc":"15853:282:6","nodeType":"YulFunctionCall","src":"15853:282:6"},"nativeSrc":"15850:1079:6","nodeType":"YulIf","src":"15850:1079:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16949:4:6","nodeType":"YulLiteral","src":"16949:4:6","type":"","value":"0x34"},{"kind":"number","nativeSrc":"16955:1:6","nodeType":"YulLiteral","src":"16955:1:6","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"16942:6:6","nodeType":"YulIdentifier","src":"16942:6:6"},"nativeSrc":"16942:15:6","nodeType":"YulFunctionCall","src":"16942:15:6"},"nativeSrc":"16942:15:6","nodeType":"YulExpressionStatement","src":"16942:15:6"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2923,"isOffset":false,"isSlot":false,"src":"15646:6:6","valueSize":1},{"declaration":2923,"isOffset":false,"isSlot":false,"src":"16420:6:6","valueSize":1},{"declaration":2921,"isOffset":false,"isSlot":false,"src":"15589:2:6","valueSize":1},{"declaration":2919,"isOffset":false,"isSlot":false,"src":"16070:5:6","valueSize":1},{"declaration":2919,"isOffset":false,"isSlot":false,"src":"16327:5:6","valueSize":1},{"declaration":2919,"isOffset":false,"isSlot":false,"src":"16716:5:6","valueSize":1}],"id":2926,"nodeType":"InlineAssembly","src":"15553:1483:6"}]},"documentation":{"id":2917,"nodeType":"StructuredDocumentation","src":"15113:300:6","text":"@dev Sets `amount` of ERC20 `token` for `to` to manage on behalf of the current contract.\n If the initial attempt to approve fails, attempts to reset the approved amount to zero,\n then retries the approval again (some tokens, e.g. USDT, requires this).\n Reverts upon failure."},"id":2928,"implemented":true,"kind":"function","modifiers":[],"name":"safeApproveWithRetry","nameLocation":"15427:20:6","nodeType":"FunctionDefinition","parameters":{"id":2924,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2919,"mutability":"mutable","name":"token","nameLocation":"15456:5:6","nodeType":"VariableDeclaration","scope":2928,"src":"15448:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2918,"name":"address","nodeType":"ElementaryTypeName","src":"15448:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2921,"mutability":"mutable","name":"to","nameLocation":"15471:2:6","nodeType":"VariableDeclaration","scope":2928,"src":"15463:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2920,"name":"address","nodeType":"ElementaryTypeName","src":"15463:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2923,"mutability":"mutable","name":"amount","nameLocation":"15483:6:6","nodeType":"VariableDeclaration","scope":2928,"src":"15475:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2922,"name":"uint256","nodeType":"ElementaryTypeName","src":"15475:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15447:43:6"},"returnParameters":{"id":2925,"nodeType":"ParameterList","parameters":[],"src":"15500:0:6"},"scope":2941,"src":"15418:1624:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2939,"nodeType":"Block","src":"17259:589:6","statements":[{"AST":{"nativeSrc":"17321:521:6","nodeType":"YulBlock","src":"17321:521:6","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"17342:4:6","nodeType":"YulLiteral","src":"17342:4:6","type":"","value":"0x14"},{"name":"account","nativeSrc":"17348:7:6","nodeType":"YulIdentifier","src":"17348:7:6"}],"functionName":{"name":"mstore","nativeSrc":"17335:6:6","nodeType":"YulIdentifier","src":"17335:6:6"},"nativeSrc":"17335:21:6","nodeType":"YulFunctionCall","src":"17335:21:6"},"nativeSrc":"17335:21:6","nodeType":"YulExpressionStatement","src":"17335:21:6"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"17409:4:6","nodeType":"YulLiteral","src":"17409:4:6","type":"","value":"0x00"},{"kind":"number","nativeSrc":"17415:34:6","nodeType":"YulLiteral","src":"17415:34:6","type":"","value":"0x70a08231000000000000000000000000"}],"functionName":{"name":"mstore","nativeSrc":"17402:6:6","nodeType":"YulIdentifier","src":"17402:6:6"},"nativeSrc":"17402:48:6","nodeType":"YulFunctionCall","src":"17402:48:6"},"nativeSrc":"17402:48:6","nodeType":"YulExpressionStatement","src":"17402:48:6"},{"nativeSrc":"17488:344:6","nodeType":"YulAssignment","src":"17488:344:6","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"17545:4:6","nodeType":"YulLiteral","src":"17545:4:6","type":"","value":"0x20"}],"functionName":{"name":"mload","nativeSrc":"17539:5:6","nodeType":"YulIdentifier","src":"17539:5:6"},"nativeSrc":"17539:11:6","nodeType":"YulFunctionCall","src":"17539:11:6"},{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"17664:14:6","nodeType":"YulIdentifier","src":"17664:14:6"},"nativeSrc":"17664:16:6","nodeType":"YulFunctionCall","src":"17664:16:6"},{"kind":"number","nativeSrc":"17682:4:6","nodeType":"YulLiteral","src":"17682:4:6","type":"","value":"0x1f"}],"functionName":{"name":"gt","nativeSrc":"17661:2:6","nodeType":"YulIdentifier","src":"17661:2:6"},"nativeSrc":"17661:26:6","nodeType":"YulFunctionCall","src":"17661:26:6"},{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"17755:3:6","nodeType":"YulIdentifier","src":"17755:3:6"},"nativeSrc":"17755:5:6","nodeType":"YulFunctionCall","src":"17755:5:6"},{"name":"token","nativeSrc":"17762:5:6","nodeType":"YulIdentifier","src":"17762:5:6"},{"kind":"number","nativeSrc":"17769:4:6","nodeType":"YulLiteral","src":"17769:4:6","type":"","value":"0x10"},{"kind":"number","nativeSrc":"17775:4:6","nodeType":"YulLiteral","src":"17775:4:6","type":"","value":"0x24"},{"kind":"number","nativeSrc":"17781:4:6","nodeType":"YulLiteral","src":"17781:4:6","type":"","value":"0x20"},{"kind":"number","nativeSrc":"17787:4:6","nodeType":"YulLiteral","src":"17787:4:6","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"17744:10:6","nodeType":"YulIdentifier","src":"17744:10:6"},"nativeSrc":"17744:48:6","nodeType":"YulFunctionCall","src":"17744:48:6"}],"functionName":{"name":"and","nativeSrc":"17572:3:6","nodeType":"YulIdentifier","src":"17572:3:6"},"nativeSrc":"17572:242:6","nodeType":"YulFunctionCall","src":"17572:242:6"}],"functionName":{"name":"mul","nativeSrc":"17514:3:6","nodeType":"YulIdentifier","src":"17514:3:6"},"nativeSrc":"17514:318:6","nodeType":"YulFunctionCall","src":"17514:318:6"},"variableNames":[{"name":"amount","nativeSrc":"17488:6:6","nodeType":"YulIdentifier","src":"17488:6:6"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2933,"isOffset":false,"isSlot":false,"src":"17348:7:6","valueSize":1},{"declaration":2936,"isOffset":false,"isSlot":false,"src":"17488:6:6","valueSize":1},{"declaration":2931,"isOffset":false,"isSlot":false,"src":"17762:5:6","valueSize":1}],"id":2938,"nodeType":"InlineAssembly","src":"17312:530:6"}]},"documentation":{"id":2929,"nodeType":"StructuredDocumentation","src":"17048:116:6","text":"@dev Returns the amount of ERC20 `token` owned by `account`.\n Returns zero if the `token` does not exist."},"id":2940,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"17178:9:6","nodeType":"FunctionDefinition","parameters":{"id":2934,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2931,"mutability":"mutable","name":"token","nameLocation":"17196:5:6","nodeType":"VariableDeclaration","scope":2940,"src":"17188:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2930,"name":"address","nodeType":"ElementaryTypeName","src":"17188:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2933,"mutability":"mutable","name":"account","nameLocation":"17211:7:6","nodeType":"VariableDeclaration","scope":2940,"src":"17203:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2932,"name":"address","nodeType":"ElementaryTypeName","src":"17203:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"17187:32:6"},"returnParameters":{"id":2937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2936,"mutability":"mutable","name":"amount","nameLocation":"17251:6:6","nodeType":"VariableDeclaration","scope":2940,"src":"17243:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2935,"name":"uint256","nodeType":"ElementaryTypeName","src":"17243:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17242:16:6"},"scope":2941,"src":"17169:679:6","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":2942,"src":"589:17261:6","usedErrors":[2751,2754,2757,2760],"usedEvents":[]}],"src":"32:17819:6"},"id":6},"solady/src/utils/SignatureCheckerLib.sol":{"ast":{"absolutePath":"solady/src/utils/SignatureCheckerLib.sol","exportedSymbols":{"SignatureCheckerLib":[3097]},"id":3098,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2943,"literals":["solidity","^","0.8",".4"],"nodeType":"PragmaDirective","src":"32:23:7"},{"abstract":false,"baseContracts":[],"canonicalName":"SignatureCheckerLib","contractDependencies":[],"contractKind":"library","documentation":{"id":2944,"nodeType":"StructuredDocumentation","src":"57:1381:7","text":"@notice Signature verification helper that supports both ECDSA signatures from EOAs\n and ERC1271 signatures from smart contract wallets like Argent and Gnosis safe.\n @author Solady (https://github.com/vectorized/solady/blob/main/src/utils/SignatureCheckerLib.sol)\n @author Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/SignatureChecker.sol)\n @dev Note:\n - The signature checking functions use the ecrecover precompile (0x1).\n - The `bytes memory signature` variants use the identity precompile (0x4)\n   to copy memory internally.\n - Unlike ECDSA signatures, contract signatures are revocable.\n - As of Solady version 0.0.134, all `bytes signature` variants accept both\n   regular 65-byte `(r, s, v)` and EIP-2098 `(r, vs)` short form signatures.\n   See: https://eips.ethereum.org/EIPS/eip-2098\n   This is for calldata efficiency on smart accounts prevalent on L2s.\n WARNING! Do NOT use signatures as unique identifiers:\n - Use a nonce in the digest to prevent replay attacks on the same contract.\n - Use EIP-712 for the digest to prevent replay attacks across different chains and contracts.\n   EIP-712 also enables readable signing of typed data for better user safety.\n This implementation does NOT check if a signature is non-malleable."},"fullyImplemented":true,"id":3097,"linearizedBaseContracts":[3097],"name":"SignatureCheckerLib","nameLocation":"1446:19:7","nodeType":"ContractDefinition","nodes":[{"body":{"id":2957,"nodeType":"Block","src":"2128:4006:7","statements":[{"AST":{"nativeSrc":"2190:3938:7","nodeType":"YulBlock","src":"2190:3938:7","statements":[{"body":{"nativeSrc":"2332:3786:7","nodeType":"YulBlock","src":"2332:3786:7","statements":[{"nativeSrc":"2350:20:7","nodeType":"YulVariableDeclaration","src":"2350:20:7","value":{"arguments":[{"kind":"number","nativeSrc":"2365:4:7","nodeType":"YulLiteral","src":"2365:4:7","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"2359:5:7","nodeType":"YulIdentifier","src":"2359:5:7"},"nativeSrc":"2359:11:7","nodeType":"YulFunctionCall","src":"2359:11:7"},"variables":[{"name":"m","nativeSrc":"2354:1:7","nodeType":"YulTypedName","src":"2354:1:7","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2394:4:7","nodeType":"YulLiteral","src":"2394:4:7","type":"","value":"0x00"},{"name":"hash","nativeSrc":"2400:4:7","nodeType":"YulIdentifier","src":"2400:4:7"}],"functionName":{"name":"mstore","nativeSrc":"2387:6:7","nodeType":"YulIdentifier","src":"2387:6:7"},"nativeSrc":"2387:18:7","nodeType":"YulFunctionCall","src":"2387:18:7"},"nativeSrc":"2387:18:7","nodeType":"YulExpressionStatement","src":"2387:18:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2429:4:7","nodeType":"YulLiteral","src":"2429:4:7","type":"","value":"0x40"},{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"2445:9:7","nodeType":"YulIdentifier","src":"2445:9:7"},{"kind":"number","nativeSrc":"2456:4:7","nodeType":"YulLiteral","src":"2456:4:7","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2441:3:7","nodeType":"YulIdentifier","src":"2441:3:7"},"nativeSrc":"2441:20:7","nodeType":"YulFunctionCall","src":"2441:20:7"}],"functionName":{"name":"mload","nativeSrc":"2435:5:7","nodeType":"YulIdentifier","src":"2435:5:7"},"nativeSrc":"2435:27:7","nodeType":"YulFunctionCall","src":"2435:27:7"}],"functionName":{"name":"mstore","nativeSrc":"2422:6:7","nodeType":"YulIdentifier","src":"2422:6:7"},"nativeSrc":"2422:41:7","nodeType":"YulFunctionCall","src":"2422:41:7"},"nativeSrc":"2422:41:7","nodeType":"YulExpressionStatement","src":"2422:41:7"},{"body":{"nativeSrc":"2516:1049:7","nodeType":"YulBlock","src":"2516:1049:7","statements":[{"nativeSrc":"2538:37:7","nodeType":"YulVariableDeclaration","src":"2538:37:7","value":{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"2558:9:7","nodeType":"YulIdentifier","src":"2558:9:7"},{"kind":"number","nativeSrc":"2569:4:7","nodeType":"YulLiteral","src":"2569:4:7","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"2554:3:7","nodeType":"YulIdentifier","src":"2554:3:7"},"nativeSrc":"2554:20:7","nodeType":"YulFunctionCall","src":"2554:20:7"}],"functionName":{"name":"mload","nativeSrc":"2548:5:7","nodeType":"YulIdentifier","src":"2548:5:7"},"nativeSrc":"2548:27:7","nodeType":"YulFunctionCall","src":"2548:27:7"},"variables":[{"name":"vs","nativeSrc":"2542:2:7","nodeType":"YulTypedName","src":"2542:2:7","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2603:4:7","nodeType":"YulLiteral","src":"2603:4:7","type":"","value":"0x20"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2617:3:7","nodeType":"YulLiteral","src":"2617:3:7","type":"","value":"255"},{"name":"vs","nativeSrc":"2622:2:7","nodeType":"YulIdentifier","src":"2622:2:7"}],"functionName":{"name":"shr","nativeSrc":"2613:3:7","nodeType":"YulIdentifier","src":"2613:3:7"},"nativeSrc":"2613:12:7","nodeType":"YulFunctionCall","src":"2613:12:7"},{"kind":"number","nativeSrc":"2627:2:7","nodeType":"YulLiteral","src":"2627:2:7","type":"","value":"27"}],"functionName":{"name":"add","nativeSrc":"2609:3:7","nodeType":"YulIdentifier","src":"2609:3:7"},"nativeSrc":"2609:21:7","nodeType":"YulFunctionCall","src":"2609:21:7"}],"functionName":{"name":"mstore","nativeSrc":"2596:6:7","nodeType":"YulIdentifier","src":"2596:6:7"},"nativeSrc":"2596:35:7","nodeType":"YulFunctionCall","src":"2596:35:7"},"nativeSrc":"2596:35:7","nodeType":"YulExpressionStatement","src":"2596:35:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"2667:4:7","nodeType":"YulLiteral","src":"2667:4:7","type":"","value":"0x60"},{"arguments":[{"kind":"number","nativeSrc":"2677:1:7","nodeType":"YulLiteral","src":"2677:1:7","type":"","value":"1"},{"arguments":[{"kind":"number","nativeSrc":"2684:1:7","nodeType":"YulLiteral","src":"2684:1:7","type":"","value":"1"},{"name":"vs","nativeSrc":"2687:2:7","nodeType":"YulIdentifier","src":"2687:2:7"}],"functionName":{"name":"shl","nativeSrc":"2680:3:7","nodeType":"YulIdentifier","src":"2680:3:7"},"nativeSrc":"2680:10:7","nodeType":"YulFunctionCall","src":"2680:10:7"}],"functionName":{"name":"shr","nativeSrc":"2673:3:7","nodeType":"YulIdentifier","src":"2673:3:7"},"nativeSrc":"2673:18:7","nodeType":"YulFunctionCall","src":"2673:18:7"}],"functionName":{"name":"mstore","nativeSrc":"2660:6:7","nodeType":"YulIdentifier","src":"2660:6:7"},"nativeSrc":"2660:32:7","nodeType":"YulFunctionCall","src":"2660:32:7"},"nativeSrc":"2660:32:7","nodeType":"YulExpressionStatement","src":"2660:32:7"},{"nativeSrc":"2721:417:7","nodeType":"YulVariableDeclaration","src":"2721:417:7","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"2794:3:7","nodeType":"YulIdentifier","src":"2794:3:7"},"nativeSrc":"2794:5:7","nodeType":"YulFunctionCall","src":"2794:5:7"},{"kind":"number","nativeSrc":"2872:1:7","nodeType":"YulLiteral","src":"2872:1:7","type":"","value":"1"},{"kind":"number","nativeSrc":"2930:4:7","nodeType":"YulLiteral","src":"2930:4:7","type":"","value":"0x00"},{"kind":"number","nativeSrc":"2983:4:7","nodeType":"YulLiteral","src":"2983:4:7","type":"","value":"0x80"},{"kind":"number","nativeSrc":"3035:4:7","nodeType":"YulLiteral","src":"3035:4:7","type":"","value":"0x01"},{"kind":"number","nativeSrc":"3089:4:7","nodeType":"YulLiteral","src":"3089:4:7","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"2754:10:7","nodeType":"YulIdentifier","src":"2754:10:7"},"nativeSrc":"2754:384:7","nodeType":"YulFunctionCall","src":"2754:384:7"},"variables":[{"name":"t","nativeSrc":"2725:1:7","nodeType":"YulTypedName","src":"2725:1:7","type":""}]},{"body":{"nativeSrc":"3315:232:7","nodeType":"YulBlock","src":"3315:232:7","statements":[{"nativeSrc":"3341:12:7","nodeType":"YulAssignment","src":"3341:12:7","value":{"kind":"number","nativeSrc":"3352:1:7","nodeType":"YulLiteral","src":"3352:1:7","type":"","value":"1"},"variableNames":[{"name":"isValid","nativeSrc":"3341:7:7","nodeType":"YulIdentifier","src":"3341:7:7"}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3385:4:7","nodeType":"YulLiteral","src":"3385:4:7","type":"","value":"0x60"},{"kind":"number","nativeSrc":"3391:1:7","nodeType":"YulLiteral","src":"3391:1:7","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"3378:6:7","nodeType":"YulIdentifier","src":"3378:6:7"},"nativeSrc":"3378:15:7","nodeType":"YulFunctionCall","src":"3378:15:7"},"nativeSrc":"3378:15:7","nodeType":"YulExpressionStatement","src":"3378:15:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3451:4:7","nodeType":"YulLiteral","src":"3451:4:7","type":"","value":"0x40"},{"name":"m","nativeSrc":"3457:1:7","nodeType":"YulIdentifier","src":"3457:1:7"}],"functionName":{"name":"mstore","nativeSrc":"3444:6:7","nodeType":"YulIdentifier","src":"3444:6:7"},"nativeSrc":"3444:15:7","nodeType":"YulFunctionCall","src":"3444:15:7"},"nativeSrc":"3444:15:7","nodeType":"YulExpressionStatement","src":"3444:15:7"},{"nativeSrc":"3520:5:7","nodeType":"YulBreak","src":"3520:5:7"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"3272:14:7","nodeType":"YulIdentifier","src":"3272:14:7"},"nativeSrc":"3272:16:7","nodeType":"YulFunctionCall","src":"3272:16:7"}],"functionName":{"name":"iszero","nativeSrc":"3265:6:7","nodeType":"YulIdentifier","src":"3265:6:7"},"nativeSrc":"3265:24:7","nodeType":"YulFunctionCall","src":"3265:24:7"},{"arguments":[{"name":"signer","nativeSrc":"3295:6:7","nodeType":"YulIdentifier","src":"3295:6:7"},{"arguments":[{"name":"t","nativeSrc":"3309:1:7","nodeType":"YulIdentifier","src":"3309:1:7"}],"functionName":{"name":"mload","nativeSrc":"3303:5:7","nodeType":"YulIdentifier","src":"3303:5:7"},"nativeSrc":"3303:8:7","nodeType":"YulFunctionCall","src":"3303:8:7"}],"functionName":{"name":"xor","nativeSrc":"3291:3:7","nodeType":"YulIdentifier","src":"3291:3:7"},"nativeSrc":"3291:21:7","nodeType":"YulFunctionCall","src":"3291:21:7"}],"functionName":{"name":"or","nativeSrc":"3262:2:7","nodeType":"YulIdentifier","src":"3262:2:7"},"nativeSrc":"3262:51:7","nodeType":"YulFunctionCall","src":"3262:51:7"}],"functionName":{"name":"iszero","nativeSrc":"3255:6:7","nodeType":"YulIdentifier","src":"3255:6:7"},"nativeSrc":"3255:59:7","nodeType":"YulFunctionCall","src":"3255:59:7"},"nativeSrc":"3252:295:7","nodeType":"YulIf","src":"3252:295:7"}]},"condition":{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"2500:9:7","nodeType":"YulIdentifier","src":"2500:9:7"}],"functionName":{"name":"mload","nativeSrc":"2494:5:7","nodeType":"YulIdentifier","src":"2494:5:7"},"nativeSrc":"2494:16:7","nodeType":"YulFunctionCall","src":"2494:16:7"},{"kind":"number","nativeSrc":"2512:2:7","nodeType":"YulLiteral","src":"2512:2:7","type":"","value":"64"}],"functionName":{"name":"eq","nativeSrc":"2491:2:7","nodeType":"YulIdentifier","src":"2491:2:7"},"nativeSrc":"2491:24:7","nodeType":"YulFunctionCall","src":"2491:24:7"},"nativeSrc":"2488:1077:7","nodeType":"YulIf","src":"2488:1077:7"},{"body":{"nativeSrc":"3610:1015:7","nodeType":"YulBlock","src":"3610:1015:7","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3639:4:7","nodeType":"YulLiteral","src":"3639:4:7","type":"","value":"0x20"},{"arguments":[{"kind":"number","nativeSrc":"3650:1:7","nodeType":"YulLiteral","src":"3650:1:7","type":"","value":"0"},{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"3663:9:7","nodeType":"YulIdentifier","src":"3663:9:7"},{"kind":"number","nativeSrc":"3674:4:7","nodeType":"YulLiteral","src":"3674:4:7","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"3659:3:7","nodeType":"YulIdentifier","src":"3659:3:7"},"nativeSrc":"3659:20:7","nodeType":"YulFunctionCall","src":"3659:20:7"}],"functionName":{"name":"mload","nativeSrc":"3653:5:7","nodeType":"YulIdentifier","src":"3653:5:7"},"nativeSrc":"3653:27:7","nodeType":"YulFunctionCall","src":"3653:27:7"}],"functionName":{"name":"byte","nativeSrc":"3645:4:7","nodeType":"YulIdentifier","src":"3645:4:7"},"nativeSrc":"3645:36:7","nodeType":"YulFunctionCall","src":"3645:36:7"}],"functionName":{"name":"mstore","nativeSrc":"3632:6:7","nodeType":"YulIdentifier","src":"3632:6:7"},"nativeSrc":"3632:50:7","nodeType":"YulFunctionCall","src":"3632:50:7"},"nativeSrc":"3632:50:7","nodeType":"YulExpressionStatement","src":"3632:50:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3718:4:7","nodeType":"YulLiteral","src":"3718:4:7","type":"","value":"0x60"},{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"3734:9:7","nodeType":"YulIdentifier","src":"3734:9:7"},{"kind":"number","nativeSrc":"3745:4:7","nodeType":"YulLiteral","src":"3745:4:7","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"3730:3:7","nodeType":"YulIdentifier","src":"3730:3:7"},"nativeSrc":"3730:20:7","nodeType":"YulFunctionCall","src":"3730:20:7"}],"functionName":{"name":"mload","nativeSrc":"3724:5:7","nodeType":"YulIdentifier","src":"3724:5:7"},"nativeSrc":"3724:27:7","nodeType":"YulFunctionCall","src":"3724:27:7"}],"functionName":{"name":"mstore","nativeSrc":"3711:6:7","nodeType":"YulIdentifier","src":"3711:6:7"},"nativeSrc":"3711:41:7","nodeType":"YulFunctionCall","src":"3711:41:7"},"nativeSrc":"3711:41:7","nodeType":"YulExpressionStatement","src":"3711:41:7"},{"nativeSrc":"3781:417:7","nodeType":"YulVariableDeclaration","src":"3781:417:7","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"3854:3:7","nodeType":"YulIdentifier","src":"3854:3:7"},"nativeSrc":"3854:5:7","nodeType":"YulFunctionCall","src":"3854:5:7"},{"kind":"number","nativeSrc":"3932:1:7","nodeType":"YulLiteral","src":"3932:1:7","type":"","value":"1"},{"kind":"number","nativeSrc":"3990:4:7","nodeType":"YulLiteral","src":"3990:4:7","type":"","value":"0x00"},{"kind":"number","nativeSrc":"4043:4:7","nodeType":"YulLiteral","src":"4043:4:7","type":"","value":"0x80"},{"kind":"number","nativeSrc":"4095:4:7","nodeType":"YulLiteral","src":"4095:4:7","type":"","value":"0x01"},{"kind":"number","nativeSrc":"4149:4:7","nodeType":"YulLiteral","src":"4149:4:7","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"3814:10:7","nodeType":"YulIdentifier","src":"3814:10:7"},"nativeSrc":"3814:384:7","nodeType":"YulFunctionCall","src":"3814:384:7"},"variables":[{"name":"t","nativeSrc":"3785:1:7","nodeType":"YulTypedName","src":"3785:1:7","type":""}]},{"body":{"nativeSrc":"4375:232:7","nodeType":"YulBlock","src":"4375:232:7","statements":[{"nativeSrc":"4401:12:7","nodeType":"YulAssignment","src":"4401:12:7","value":{"kind":"number","nativeSrc":"4412:1:7","nodeType":"YulLiteral","src":"4412:1:7","type":"","value":"1"},"variableNames":[{"name":"isValid","nativeSrc":"4401:7:7","nodeType":"YulIdentifier","src":"4401:7:7"}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4445:4:7","nodeType":"YulLiteral","src":"4445:4:7","type":"","value":"0x60"},{"kind":"number","nativeSrc":"4451:1:7","nodeType":"YulLiteral","src":"4451:1:7","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"4438:6:7","nodeType":"YulIdentifier","src":"4438:6:7"},"nativeSrc":"4438:15:7","nodeType":"YulFunctionCall","src":"4438:15:7"},"nativeSrc":"4438:15:7","nodeType":"YulExpressionStatement","src":"4438:15:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4511:4:7","nodeType":"YulLiteral","src":"4511:4:7","type":"","value":"0x40"},{"name":"m","nativeSrc":"4517:1:7","nodeType":"YulIdentifier","src":"4517:1:7"}],"functionName":{"name":"mstore","nativeSrc":"4504:6:7","nodeType":"YulIdentifier","src":"4504:6:7"},"nativeSrc":"4504:15:7","nodeType":"YulFunctionCall","src":"4504:15:7"},"nativeSrc":"4504:15:7","nodeType":"YulExpressionStatement","src":"4504:15:7"},{"nativeSrc":"4580:5:7","nodeType":"YulBreak","src":"4580:5:7"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"4332:14:7","nodeType":"YulIdentifier","src":"4332:14:7"},"nativeSrc":"4332:16:7","nodeType":"YulFunctionCall","src":"4332:16:7"}],"functionName":{"name":"iszero","nativeSrc":"4325:6:7","nodeType":"YulIdentifier","src":"4325:6:7"},"nativeSrc":"4325:24:7","nodeType":"YulFunctionCall","src":"4325:24:7"},{"arguments":[{"name":"signer","nativeSrc":"4355:6:7","nodeType":"YulIdentifier","src":"4355:6:7"},{"arguments":[{"name":"t","nativeSrc":"4369:1:7","nodeType":"YulIdentifier","src":"4369:1:7"}],"functionName":{"name":"mload","nativeSrc":"4363:5:7","nodeType":"YulIdentifier","src":"4363:5:7"},"nativeSrc":"4363:8:7","nodeType":"YulFunctionCall","src":"4363:8:7"}],"functionName":{"name":"xor","nativeSrc":"4351:3:7","nodeType":"YulIdentifier","src":"4351:3:7"},"nativeSrc":"4351:21:7","nodeType":"YulFunctionCall","src":"4351:21:7"}],"functionName":{"name":"or","nativeSrc":"4322:2:7","nodeType":"YulIdentifier","src":"4322:2:7"},"nativeSrc":"4322:51:7","nodeType":"YulFunctionCall","src":"4322:51:7"}],"functionName":{"name":"iszero","nativeSrc":"4315:6:7","nodeType":"YulIdentifier","src":"4315:6:7"},"nativeSrc":"4315:59:7","nodeType":"YulFunctionCall","src":"4315:59:7"},"nativeSrc":"4312:295:7","nodeType":"YulIf","src":"4312:295:7"}]},"condition":{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"3594:9:7","nodeType":"YulIdentifier","src":"3594:9:7"}],"functionName":{"name":"mload","nativeSrc":"3588:5:7","nodeType":"YulIdentifier","src":"3588:5:7"},"nativeSrc":"3588:16:7","nodeType":"YulFunctionCall","src":"3588:16:7"},{"kind":"number","nativeSrc":"3606:2:7","nodeType":"YulLiteral","src":"3606:2:7","type":"","value":"65"}],"functionName":{"name":"eq","nativeSrc":"3585:2:7","nodeType":"YulIdentifier","src":"3585:2:7"},"nativeSrc":"3585:24:7","nodeType":"YulFunctionCall","src":"3585:24:7"},"nativeSrc":"3582:1043:7","nodeType":"YulIf","src":"3582:1043:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4649:4:7","nodeType":"YulLiteral","src":"4649:4:7","type":"","value":"0x60"},{"kind":"number","nativeSrc":"4655:1:7","nodeType":"YulLiteral","src":"4655:1:7","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"4642:6:7","nodeType":"YulIdentifier","src":"4642:6:7"},"nativeSrc":"4642:15:7","nodeType":"YulFunctionCall","src":"4642:15:7"},"nativeSrc":"4642:15:7","nodeType":"YulExpressionStatement","src":"4642:15:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"4707:4:7","nodeType":"YulLiteral","src":"4707:4:7","type":"","value":"0x40"},{"name":"m","nativeSrc":"4713:1:7","nodeType":"YulIdentifier","src":"4713:1:7"}],"functionName":{"name":"mstore","nativeSrc":"4700:6:7","nodeType":"YulIdentifier","src":"4700:6:7"},"nativeSrc":"4700:15:7","nodeType":"YulFunctionCall","src":"4700:15:7"},"nativeSrc":"4700:15:7","nodeType":"YulExpressionStatement","src":"4700:15:7"},{"nativeSrc":"4769:29:7","nodeType":"YulVariableDeclaration","src":"4769:29:7","value":{"arguments":[{"kind":"number","nativeSrc":"4782:3:7","nodeType":"YulLiteral","src":"4782:3:7","type":"","value":"224"},{"kind":"number","nativeSrc":"4787:10:7","nodeType":"YulLiteral","src":"4787:10:7","type":"","value":"0x1626ba7e"}],"functionName":{"name":"shl","nativeSrc":"4778:3:7","nodeType":"YulIdentifier","src":"4778:3:7"},"nativeSrc":"4778:20:7","nodeType":"YulFunctionCall","src":"4778:20:7"},"variables":[{"name":"f","nativeSrc":"4773:1:7","nodeType":"YulTypedName","src":"4773:1:7","type":""}]},{"expression":{"arguments":[{"name":"m","nativeSrc":"4822:1:7","nodeType":"YulIdentifier","src":"4822:1:7"},{"name":"f","nativeSrc":"4825:1:7","nodeType":"YulIdentifier","src":"4825:1:7"}],"functionName":{"name":"mstore","nativeSrc":"4815:6:7","nodeType":"YulIdentifier","src":"4815:6:7"},"nativeSrc":"4815:12:7","nodeType":"YulFunctionCall","src":"4815:12:7"},"nativeSrc":"4815:12:7","nodeType":"YulExpressionStatement","src":"4815:12:7"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"4914:1:7","nodeType":"YulIdentifier","src":"4914:1:7"},{"kind":"number","nativeSrc":"4917:4:7","nodeType":"YulLiteral","src":"4917:4:7","type":"","value":"0x04"}],"functionName":{"name":"add","nativeSrc":"4910:3:7","nodeType":"YulIdentifier","src":"4910:3:7"},"nativeSrc":"4910:12:7","nodeType":"YulFunctionCall","src":"4910:12:7"},{"name":"hash","nativeSrc":"4924:4:7","nodeType":"YulIdentifier","src":"4924:4:7"}],"functionName":{"name":"mstore","nativeSrc":"4903:6:7","nodeType":"YulIdentifier","src":"4903:6:7"},"nativeSrc":"4903:26:7","nodeType":"YulFunctionCall","src":"4903:26:7"},"nativeSrc":"4903:26:7","nodeType":"YulExpressionStatement","src":"4903:26:7"},{"nativeSrc":"4946:21:7","nodeType":"YulVariableDeclaration","src":"4946:21:7","value":{"arguments":[{"name":"m","nativeSrc":"4959:1:7","nodeType":"YulIdentifier","src":"4959:1:7"},{"kind":"number","nativeSrc":"4962:4:7","nodeType":"YulLiteral","src":"4962:4:7","type":"","value":"0x24"}],"functionName":{"name":"add","nativeSrc":"4955:3:7","nodeType":"YulIdentifier","src":"4955:3:7"},"nativeSrc":"4955:12:7","nodeType":"YulFunctionCall","src":"4955:12:7"},"variables":[{"name":"d","nativeSrc":"4950:1:7","nodeType":"YulTypedName","src":"4950:1:7","type":""}]},{"expression":{"arguments":[{"name":"d","nativeSrc":"4991:1:7","nodeType":"YulIdentifier","src":"4991:1:7"},{"kind":"number","nativeSrc":"4994:4:7","nodeType":"YulLiteral","src":"4994:4:7","type":"","value":"0x40"}],"functionName":{"name":"mstore","nativeSrc":"4984:6:7","nodeType":"YulIdentifier","src":"4984:6:7"},"nativeSrc":"4984:15:7","nodeType":"YulFunctionCall","src":"4984:15:7"},"nativeSrc":"4984:15:7","nodeType":"YulExpressionStatement","src":"4984:15:7"},{"nativeSrc":"5112:36:7","nodeType":"YulVariableDeclaration","src":"5112:36:7","value":{"arguments":[{"kind":"number","nativeSrc":"5125:4:7","nodeType":"YulLiteral","src":"5125:4:7","type":"","value":"0x20"},{"arguments":[{"name":"signature","nativeSrc":"5137:9:7","nodeType":"YulIdentifier","src":"5137:9:7"}],"functionName":{"name":"mload","nativeSrc":"5131:5:7","nodeType":"YulIdentifier","src":"5131:5:7"},"nativeSrc":"5131:16:7","nodeType":"YulFunctionCall","src":"5131:16:7"}],"functionName":{"name":"add","nativeSrc":"5121:3:7","nodeType":"YulIdentifier","src":"5121:3:7"},"nativeSrc":"5121:27:7","nodeType":"YulFunctionCall","src":"5121:27:7"},"variables":[{"name":"n","nativeSrc":"5116:1:7","nodeType":"YulTypedName","src":"5116:1:7","type":""}]},{"expression":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"5180:3:7","nodeType":"YulIdentifier","src":"5180:3:7"},"nativeSrc":"5180:5:7","nodeType":"YulFunctionCall","src":"5180:5:7"},{"kind":"number","nativeSrc":"5187:1:7","nodeType":"YulLiteral","src":"5187:1:7","type":"","value":"4"},{"name":"signature","nativeSrc":"5190:9:7","nodeType":"YulIdentifier","src":"5190:9:7"},{"name":"n","nativeSrc":"5201:1:7","nodeType":"YulIdentifier","src":"5201:1:7"},{"arguments":[{"name":"m","nativeSrc":"5208:1:7","nodeType":"YulIdentifier","src":"5208:1:7"},{"kind":"number","nativeSrc":"5211:4:7","nodeType":"YulLiteral","src":"5211:4:7","type":"","value":"0x44"}],"functionName":{"name":"add","nativeSrc":"5204:3:7","nodeType":"YulIdentifier","src":"5204:3:7"},"nativeSrc":"5204:12:7","nodeType":"YulFunctionCall","src":"5204:12:7"},{"name":"n","nativeSrc":"5218:1:7","nodeType":"YulIdentifier","src":"5218:1:7"}],"functionName":{"name":"staticcall","nativeSrc":"5169:10:7","nodeType":"YulIdentifier","src":"5169:10:7"},"nativeSrc":"5169:51:7","nodeType":"YulFunctionCall","src":"5169:51:7"}],"functionName":{"name":"pop","nativeSrc":"5165:3:7","nodeType":"YulIdentifier","src":"5165:3:7"},"nativeSrc":"5165:56:7","nodeType":"YulFunctionCall","src":"5165:56:7"},"nativeSrc":"5165:56:7","nodeType":"YulExpressionStatement","src":"5165:56:7"},{"nativeSrc":"5285:797:7","nodeType":"YulAssignment","src":"5285:797:7","value":{"arguments":[{"arguments":[{"arguments":[{"name":"d","nativeSrc":"5424:1:7","nodeType":"YulIdentifier","src":"5424:1:7"}],"functionName":{"name":"mload","nativeSrc":"5418:5:7","nodeType":"YulIdentifier","src":"5418:5:7"},"nativeSrc":"5418:8:7","nodeType":"YulFunctionCall","src":"5418:8:7"},{"name":"f","nativeSrc":"5428:1:7","nodeType":"YulIdentifier","src":"5428:1:7"}],"functionName":{"name":"eq","nativeSrc":"5415:2:7","nodeType":"YulIdentifier","src":"5415:2:7"},"nativeSrc":"5415:15:7","nodeType":"YulFunctionCall","src":"5415:15:7"},{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"5700:3:7","nodeType":"YulIdentifier","src":"5700:3:7"},"nativeSrc":"5700:5:7","nodeType":"YulFunctionCall","src":"5700:5:7"},{"name":"signer","nativeSrc":"5749:6:7","nodeType":"YulIdentifier","src":"5749:6:7"},{"name":"m","nativeSrc":"5806:1:7","nodeType":"YulIdentifier","src":"5806:1:7"},{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"5870:14:7","nodeType":"YulIdentifier","src":"5870:14:7"},"nativeSrc":"5870:16:7","nodeType":"YulFunctionCall","src":"5870:16:7"},{"kind":"number","nativeSrc":"5888:4:7","nodeType":"YulLiteral","src":"5888:4:7","type":"","value":"0x44"}],"functionName":{"name":"add","nativeSrc":"5866:3:7","nodeType":"YulIdentifier","src":"5866:3:7"},"nativeSrc":"5866:27:7","nodeType":"YulFunctionCall","src":"5866:27:7"},{"name":"d","nativeSrc":"5952:1:7","nodeType":"YulIdentifier","src":"5952:1:7"},{"kind":"number","nativeSrc":"6004:4:7","nodeType":"YulLiteral","src":"6004:4:7","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"5664:10:7","nodeType":"YulIdentifier","src":"5664:10:7"},"nativeSrc":"5664:400:7","nodeType":"YulFunctionCall","src":"5664:400:7"}],"functionName":{"name":"and","nativeSrc":"5296:3:7","nodeType":"YulIdentifier","src":"5296:3:7"},"nativeSrc":"5296:786:7","nodeType":"YulFunctionCall","src":"5296:786:7"},"variableNames":[{"name":"isValid","nativeSrc":"5285:7:7","nodeType":"YulIdentifier","src":"5285:7:7"}]},{"nativeSrc":"6099:5:7","nodeType":"YulBreak","src":"6099:5:7"}]},"condition":{"name":"signer","nativeSrc":"2322:6:7","nodeType":"YulIdentifier","src":"2322:6:7"},"nativeSrc":"2279:3839:7","nodeType":"YulForLoop","post":{"nativeSrc":"2329:2:7","nodeType":"YulBlock","src":"2329:2:7","statements":[]},"pre":{"nativeSrc":"2283:38:7","nodeType":"YulBlock","src":"2283:38:7","statements":[{"nativeSrc":"2285:34:7","nodeType":"YulAssignment","src":"2285:34:7","value":{"arguments":[{"kind":"number","nativeSrc":"2299:2:7","nodeType":"YulLiteral","src":"2299:2:7","type":"","value":"96"},{"arguments":[{"kind":"number","nativeSrc":"2307:2:7","nodeType":"YulLiteral","src":"2307:2:7","type":"","value":"96"},{"name":"signer","nativeSrc":"2311:6:7","nodeType":"YulIdentifier","src":"2311:6:7"}],"functionName":{"name":"shl","nativeSrc":"2303:3:7","nodeType":"YulIdentifier","src":"2303:3:7"},"nativeSrc":"2303:15:7","nodeType":"YulFunctionCall","src":"2303:15:7"}],"functionName":{"name":"shr","nativeSrc":"2295:3:7","nodeType":"YulIdentifier","src":"2295:3:7"},"nativeSrc":"2295:24:7","nodeType":"YulFunctionCall","src":"2295:24:7"},"variableNames":[{"name":"signer","nativeSrc":"2285:6:7","nodeType":"YulIdentifier","src":"2285:6:7"}]}]},"src":"2279:3839:7"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2949,"isOffset":false,"isSlot":false,"src":"2400:4:7","valueSize":1},{"declaration":2949,"isOffset":false,"isSlot":false,"src":"4924:4:7","valueSize":1},{"declaration":2954,"isOffset":false,"isSlot":false,"src":"3341:7:7","valueSize":1},{"declaration":2954,"isOffset":false,"isSlot":false,"src":"4401:7:7","valueSize":1},{"declaration":2954,"isOffset":false,"isSlot":false,"src":"5285:7:7","valueSize":1},{"declaration":2951,"isOffset":false,"isSlot":false,"src":"2445:9:7","valueSize":1},{"declaration":2951,"isOffset":false,"isSlot":false,"src":"2500:9:7","valueSize":1},{"declaration":2951,"isOffset":false,"isSlot":false,"src":"2558:9:7","valueSize":1},{"declaration":2951,"isOffset":false,"isSlot":false,"src":"3594:9:7","valueSize":1},{"declaration":2951,"isOffset":false,"isSlot":false,"src":"3663:9:7","valueSize":1},{"declaration":2951,"isOffset":false,"isSlot":false,"src":"3734:9:7","valueSize":1},{"declaration":2951,"isOffset":false,"isSlot":false,"src":"5137:9:7","valueSize":1},{"declaration":2951,"isOffset":false,"isSlot":false,"src":"5190:9:7","valueSize":1},{"declaration":2947,"isOffset":false,"isSlot":false,"src":"2285:6:7","valueSize":1},{"declaration":2947,"isOffset":false,"isSlot":false,"src":"2311:6:7","valueSize":1},{"declaration":2947,"isOffset":false,"isSlot":false,"src":"2322:6:7","valueSize":1},{"declaration":2947,"isOffset":false,"isSlot":false,"src":"3295:6:7","valueSize":1},{"declaration":2947,"isOffset":false,"isSlot":false,"src":"4355:6:7","valueSize":1},{"declaration":2947,"isOffset":false,"isSlot":false,"src":"5749:6:7","valueSize":1}],"id":2956,"nodeType":"InlineAssembly","src":"2181:3947:7"}]},"documentation":{"id":2945,"nodeType":"StructuredDocumentation","src":"1755:220:7","text":"@dev Returns whether `signature` is valid for `signer` and `hash`.\n If `signer` is a smart contract, the signature is validated with ERC1271.\n Otherwise, the signature is validated with `ECDSA.recover`."},"id":2958,"implemented":true,"kind":"function","modifiers":[],"name":"isValidSignatureNow","nameLocation":"1989:19:7","nodeType":"FunctionDefinition","parameters":{"id":2952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2947,"mutability":"mutable","name":"signer","nameLocation":"2017:6:7","nodeType":"VariableDeclaration","scope":2958,"src":"2009:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2946,"name":"address","nodeType":"ElementaryTypeName","src":"2009:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2949,"mutability":"mutable","name":"hash","nameLocation":"2033:4:7","nodeType":"VariableDeclaration","scope":2958,"src":"2025:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2948,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2025:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2951,"mutability":"mutable","name":"signature","nameLocation":"2052:9:7","nodeType":"VariableDeclaration","scope":2958,"src":"2039:22:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2950,"name":"bytes","nodeType":"ElementaryTypeName","src":"2039:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2008:54:7"},"returnParameters":{"id":2955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2954,"mutability":"mutable","name":"isValid","nameLocation":"2115:7:7","nodeType":"VariableDeclaration","scope":2958,"src":"2110:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2953,"name":"bool","nodeType":"ElementaryTypeName","src":"2110:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2109:14:7"},"scope":3097,"src":"1980:4154:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2971,"nodeType":"Block","src":"6523:4055:7","statements":[{"AST":{"nativeSrc":"6585:3987:7","nodeType":"YulBlock","src":"6585:3987:7","statements":[{"body":{"nativeSrc":"6727:3835:7","nodeType":"YulBlock","src":"6727:3835:7","statements":[{"nativeSrc":"6745:20:7","nodeType":"YulVariableDeclaration","src":"6745:20:7","value":{"arguments":[{"kind":"number","nativeSrc":"6760:4:7","nodeType":"YulLiteral","src":"6760:4:7","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"6754:5:7","nodeType":"YulIdentifier","src":"6754:5:7"},"nativeSrc":"6754:11:7","nodeType":"YulFunctionCall","src":"6754:11:7"},"variables":[{"name":"m","nativeSrc":"6749:1:7","nodeType":"YulTypedName","src":"6749:1:7","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"6789:4:7","nodeType":"YulLiteral","src":"6789:4:7","type":"","value":"0x00"},{"name":"hash","nativeSrc":"6795:4:7","nodeType":"YulIdentifier","src":"6795:4:7"}],"functionName":{"name":"mstore","nativeSrc":"6782:6:7","nodeType":"YulIdentifier","src":"6782:6:7"},"nativeSrc":"6782:18:7","nodeType":"YulFunctionCall","src":"6782:18:7"},"nativeSrc":"6782:18:7","nodeType":"YulExpressionStatement","src":"6782:18:7"},{"body":{"nativeSrc":"6845:1136:7","nodeType":"YulBlock","src":"6845:1136:7","statements":[{"nativeSrc":"6867:51:7","nodeType":"YulVariableDeclaration","src":"6867:51:7","value":{"arguments":[{"arguments":[{"name":"signature.offset","nativeSrc":"6894:16:7","nodeType":"YulIdentifier","src":"6894:16:7"},{"kind":"number","nativeSrc":"6912:4:7","nodeType":"YulLiteral","src":"6912:4:7","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6890:3:7","nodeType":"YulIdentifier","src":"6890:3:7"},"nativeSrc":"6890:27:7","nodeType":"YulFunctionCall","src":"6890:27:7"}],"functionName":{"name":"calldataload","nativeSrc":"6877:12:7","nodeType":"YulIdentifier","src":"6877:12:7"},"nativeSrc":"6877:41:7","nodeType":"YulFunctionCall","src":"6877:41:7"},"variables":[{"name":"vs","nativeSrc":"6871:2:7","nodeType":"YulTypedName","src":"6871:2:7","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"6946:4:7","nodeType":"YulLiteral","src":"6946:4:7","type":"","value":"0x20"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"6960:3:7","nodeType":"YulLiteral","src":"6960:3:7","type":"","value":"255"},{"name":"vs","nativeSrc":"6965:2:7","nodeType":"YulIdentifier","src":"6965:2:7"}],"functionName":{"name":"shr","nativeSrc":"6956:3:7","nodeType":"YulIdentifier","src":"6956:3:7"},"nativeSrc":"6956:12:7","nodeType":"YulFunctionCall","src":"6956:12:7"},{"kind":"number","nativeSrc":"6970:2:7","nodeType":"YulLiteral","src":"6970:2:7","type":"","value":"27"}],"functionName":{"name":"add","nativeSrc":"6952:3:7","nodeType":"YulIdentifier","src":"6952:3:7"},"nativeSrc":"6952:21:7","nodeType":"YulFunctionCall","src":"6952:21:7"}],"functionName":{"name":"mstore","nativeSrc":"6939:6:7","nodeType":"YulIdentifier","src":"6939:6:7"},"nativeSrc":"6939:35:7","nodeType":"YulFunctionCall","src":"6939:35:7"},"nativeSrc":"6939:35:7","nodeType":"YulExpressionStatement","src":"6939:35:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7010:4:7","nodeType":"YulLiteral","src":"7010:4:7","type":"","value":"0x40"},{"arguments":[{"name":"signature.offset","nativeSrc":"7029:16:7","nodeType":"YulIdentifier","src":"7029:16:7"}],"functionName":{"name":"calldataload","nativeSrc":"7016:12:7","nodeType":"YulIdentifier","src":"7016:12:7"},"nativeSrc":"7016:30:7","nodeType":"YulFunctionCall","src":"7016:30:7"}],"functionName":{"name":"mstore","nativeSrc":"7003:6:7","nodeType":"YulIdentifier","src":"7003:6:7"},"nativeSrc":"7003:44:7","nodeType":"YulFunctionCall","src":"7003:44:7"},"nativeSrc":"7003:44:7","nodeType":"YulExpressionStatement","src":"7003:44:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7083:4:7","nodeType":"YulLiteral","src":"7083:4:7","type":"","value":"0x60"},{"arguments":[{"kind":"number","nativeSrc":"7093:1:7","nodeType":"YulLiteral","src":"7093:1:7","type":"","value":"1"},{"arguments":[{"kind":"number","nativeSrc":"7100:1:7","nodeType":"YulLiteral","src":"7100:1:7","type":"","value":"1"},{"name":"vs","nativeSrc":"7103:2:7","nodeType":"YulIdentifier","src":"7103:2:7"}],"functionName":{"name":"shl","nativeSrc":"7096:3:7","nodeType":"YulIdentifier","src":"7096:3:7"},"nativeSrc":"7096:10:7","nodeType":"YulFunctionCall","src":"7096:10:7"}],"functionName":{"name":"shr","nativeSrc":"7089:3:7","nodeType":"YulIdentifier","src":"7089:3:7"},"nativeSrc":"7089:18:7","nodeType":"YulFunctionCall","src":"7089:18:7"}],"functionName":{"name":"mstore","nativeSrc":"7076:6:7","nodeType":"YulIdentifier","src":"7076:6:7"},"nativeSrc":"7076:32:7","nodeType":"YulFunctionCall","src":"7076:32:7"},"nativeSrc":"7076:32:7","nodeType":"YulExpressionStatement","src":"7076:32:7"},{"nativeSrc":"7137:417:7","nodeType":"YulVariableDeclaration","src":"7137:417:7","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"7210:3:7","nodeType":"YulIdentifier","src":"7210:3:7"},"nativeSrc":"7210:5:7","nodeType":"YulFunctionCall","src":"7210:5:7"},{"kind":"number","nativeSrc":"7288:1:7","nodeType":"YulLiteral","src":"7288:1:7","type":"","value":"1"},{"kind":"number","nativeSrc":"7346:4:7","nodeType":"YulLiteral","src":"7346:4:7","type":"","value":"0x00"},{"kind":"number","nativeSrc":"7399:4:7","nodeType":"YulLiteral","src":"7399:4:7","type":"","value":"0x80"},{"kind":"number","nativeSrc":"7451:4:7","nodeType":"YulLiteral","src":"7451:4:7","type":"","value":"0x01"},{"kind":"number","nativeSrc":"7505:4:7","nodeType":"YulLiteral","src":"7505:4:7","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"7170:10:7","nodeType":"YulIdentifier","src":"7170:10:7"},"nativeSrc":"7170:384:7","nodeType":"YulFunctionCall","src":"7170:384:7"},"variables":[{"name":"t","nativeSrc":"7141:1:7","nodeType":"YulTypedName","src":"7141:1:7","type":""}]},{"body":{"nativeSrc":"7731:232:7","nodeType":"YulBlock","src":"7731:232:7","statements":[{"nativeSrc":"7757:12:7","nodeType":"YulAssignment","src":"7757:12:7","value":{"kind":"number","nativeSrc":"7768:1:7","nodeType":"YulLiteral","src":"7768:1:7","type":"","value":"1"},"variableNames":[{"name":"isValid","nativeSrc":"7757:7:7","nodeType":"YulIdentifier","src":"7757:7:7"}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7801:4:7","nodeType":"YulLiteral","src":"7801:4:7","type":"","value":"0x60"},{"kind":"number","nativeSrc":"7807:1:7","nodeType":"YulLiteral","src":"7807:1:7","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"7794:6:7","nodeType":"YulIdentifier","src":"7794:6:7"},"nativeSrc":"7794:15:7","nodeType":"YulFunctionCall","src":"7794:15:7"},"nativeSrc":"7794:15:7","nodeType":"YulExpressionStatement","src":"7794:15:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7867:4:7","nodeType":"YulLiteral","src":"7867:4:7","type":"","value":"0x40"},{"name":"m","nativeSrc":"7873:1:7","nodeType":"YulIdentifier","src":"7873:1:7"}],"functionName":{"name":"mstore","nativeSrc":"7860:6:7","nodeType":"YulIdentifier","src":"7860:6:7"},"nativeSrc":"7860:15:7","nodeType":"YulFunctionCall","src":"7860:15:7"},"nativeSrc":"7860:15:7","nodeType":"YulExpressionStatement","src":"7860:15:7"},{"nativeSrc":"7936:5:7","nodeType":"YulBreak","src":"7936:5:7"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"7688:14:7","nodeType":"YulIdentifier","src":"7688:14:7"},"nativeSrc":"7688:16:7","nodeType":"YulFunctionCall","src":"7688:16:7"}],"functionName":{"name":"iszero","nativeSrc":"7681:6:7","nodeType":"YulIdentifier","src":"7681:6:7"},"nativeSrc":"7681:24:7","nodeType":"YulFunctionCall","src":"7681:24:7"},{"arguments":[{"name":"signer","nativeSrc":"7711:6:7","nodeType":"YulIdentifier","src":"7711:6:7"},{"arguments":[{"name":"t","nativeSrc":"7725:1:7","nodeType":"YulIdentifier","src":"7725:1:7"}],"functionName":{"name":"mload","nativeSrc":"7719:5:7","nodeType":"YulIdentifier","src":"7719:5:7"},"nativeSrc":"7719:8:7","nodeType":"YulFunctionCall","src":"7719:8:7"}],"functionName":{"name":"xor","nativeSrc":"7707:3:7","nodeType":"YulIdentifier","src":"7707:3:7"},"nativeSrc":"7707:21:7","nodeType":"YulFunctionCall","src":"7707:21:7"}],"functionName":{"name":"or","nativeSrc":"7678:2:7","nodeType":"YulIdentifier","src":"7678:2:7"},"nativeSrc":"7678:51:7","nodeType":"YulFunctionCall","src":"7678:51:7"}],"functionName":{"name":"iszero","nativeSrc":"7671:6:7","nodeType":"YulIdentifier","src":"7671:6:7"},"nativeSrc":"7671:59:7","nodeType":"YulFunctionCall","src":"7671:59:7"},"nativeSrc":"7668:295:7","nodeType":"YulIf","src":"7668:295:7"}]},"condition":{"arguments":[{"name":"signature.length","nativeSrc":"6823:16:7","nodeType":"YulIdentifier","src":"6823:16:7"},{"kind":"number","nativeSrc":"6841:2:7","nodeType":"YulLiteral","src":"6841:2:7","type":"","value":"64"}],"functionName":{"name":"eq","nativeSrc":"6820:2:7","nodeType":"YulIdentifier","src":"6820:2:7"},"nativeSrc":"6820:24:7","nodeType":"YulFunctionCall","src":"6820:24:7"},"nativeSrc":"6817:1164:7","nodeType":"YulIf","src":"6817:1164:7"},{"body":{"nativeSrc":"8026:1035:7","nodeType":"YulBlock","src":"8026:1035:7","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8055:4:7","nodeType":"YulLiteral","src":"8055:4:7","type":"","value":"0x20"},{"arguments":[{"kind":"number","nativeSrc":"8066:1:7","nodeType":"YulLiteral","src":"8066:1:7","type":"","value":"0"},{"arguments":[{"arguments":[{"name":"signature.offset","nativeSrc":"8086:16:7","nodeType":"YulIdentifier","src":"8086:16:7"},{"kind":"number","nativeSrc":"8104:4:7","nodeType":"YulLiteral","src":"8104:4:7","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"8082:3:7","nodeType":"YulIdentifier","src":"8082:3:7"},"nativeSrc":"8082:27:7","nodeType":"YulFunctionCall","src":"8082:27:7"}],"functionName":{"name":"calldataload","nativeSrc":"8069:12:7","nodeType":"YulIdentifier","src":"8069:12:7"},"nativeSrc":"8069:41:7","nodeType":"YulFunctionCall","src":"8069:41:7"}],"functionName":{"name":"byte","nativeSrc":"8061:4:7","nodeType":"YulIdentifier","src":"8061:4:7"},"nativeSrc":"8061:50:7","nodeType":"YulFunctionCall","src":"8061:50:7"}],"functionName":{"name":"mstore","nativeSrc":"8048:6:7","nodeType":"YulIdentifier","src":"8048:6:7"},"nativeSrc":"8048:64:7","nodeType":"YulFunctionCall","src":"8048:64:7"},"nativeSrc":"8048:64:7","nodeType":"YulExpressionStatement","src":"8048:64:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8154:4:7","nodeType":"YulLiteral","src":"8154:4:7","type":"","value":"0x40"},{"name":"signature.offset","nativeSrc":"8160:16:7","nodeType":"YulIdentifier","src":"8160:16:7"},{"kind":"number","nativeSrc":"8178:4:7","nodeType":"YulLiteral","src":"8178:4:7","type":"","value":"0x40"}],"functionName":{"name":"calldatacopy","nativeSrc":"8141:12:7","nodeType":"YulIdentifier","src":"8141:12:7"},"nativeSrc":"8141:42:7","nodeType":"YulFunctionCall","src":"8141:42:7"},"nativeSrc":"8141:42:7","nodeType":"YulExpressionStatement","src":"8141:42:7"},{"nativeSrc":"8217:417:7","nodeType":"YulVariableDeclaration","src":"8217:417:7","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"8290:3:7","nodeType":"YulIdentifier","src":"8290:3:7"},"nativeSrc":"8290:5:7","nodeType":"YulFunctionCall","src":"8290:5:7"},{"kind":"number","nativeSrc":"8368:1:7","nodeType":"YulLiteral","src":"8368:1:7","type":"","value":"1"},{"kind":"number","nativeSrc":"8426:4:7","nodeType":"YulLiteral","src":"8426:4:7","type":"","value":"0x00"},{"kind":"number","nativeSrc":"8479:4:7","nodeType":"YulLiteral","src":"8479:4:7","type":"","value":"0x80"},{"kind":"number","nativeSrc":"8531:4:7","nodeType":"YulLiteral","src":"8531:4:7","type":"","value":"0x01"},{"kind":"number","nativeSrc":"8585:4:7","nodeType":"YulLiteral","src":"8585:4:7","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"8250:10:7","nodeType":"YulIdentifier","src":"8250:10:7"},"nativeSrc":"8250:384:7","nodeType":"YulFunctionCall","src":"8250:384:7"},"variables":[{"name":"t","nativeSrc":"8221:1:7","nodeType":"YulTypedName","src":"8221:1:7","type":""}]},{"body":{"nativeSrc":"8811:232:7","nodeType":"YulBlock","src":"8811:232:7","statements":[{"nativeSrc":"8837:12:7","nodeType":"YulAssignment","src":"8837:12:7","value":{"kind":"number","nativeSrc":"8848:1:7","nodeType":"YulLiteral","src":"8848:1:7","type":"","value":"1"},"variableNames":[{"name":"isValid","nativeSrc":"8837:7:7","nodeType":"YulIdentifier","src":"8837:7:7"}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8881:4:7","nodeType":"YulLiteral","src":"8881:4:7","type":"","value":"0x60"},{"kind":"number","nativeSrc":"8887:1:7","nodeType":"YulLiteral","src":"8887:1:7","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"8874:6:7","nodeType":"YulIdentifier","src":"8874:6:7"},"nativeSrc":"8874:15:7","nodeType":"YulFunctionCall","src":"8874:15:7"},"nativeSrc":"8874:15:7","nodeType":"YulExpressionStatement","src":"8874:15:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"8947:4:7","nodeType":"YulLiteral","src":"8947:4:7","type":"","value":"0x40"},{"name":"m","nativeSrc":"8953:1:7","nodeType":"YulIdentifier","src":"8953:1:7"}],"functionName":{"name":"mstore","nativeSrc":"8940:6:7","nodeType":"YulIdentifier","src":"8940:6:7"},"nativeSrc":"8940:15:7","nodeType":"YulFunctionCall","src":"8940:15:7"},"nativeSrc":"8940:15:7","nodeType":"YulExpressionStatement","src":"8940:15:7"},{"nativeSrc":"9016:5:7","nodeType":"YulBreak","src":"9016:5:7"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"8768:14:7","nodeType":"YulIdentifier","src":"8768:14:7"},"nativeSrc":"8768:16:7","nodeType":"YulFunctionCall","src":"8768:16:7"}],"functionName":{"name":"iszero","nativeSrc":"8761:6:7","nodeType":"YulIdentifier","src":"8761:6:7"},"nativeSrc":"8761:24:7","nodeType":"YulFunctionCall","src":"8761:24:7"},{"arguments":[{"name":"signer","nativeSrc":"8791:6:7","nodeType":"YulIdentifier","src":"8791:6:7"},{"arguments":[{"name":"t","nativeSrc":"8805:1:7","nodeType":"YulIdentifier","src":"8805:1:7"}],"functionName":{"name":"mload","nativeSrc":"8799:5:7","nodeType":"YulIdentifier","src":"8799:5:7"},"nativeSrc":"8799:8:7","nodeType":"YulFunctionCall","src":"8799:8:7"}],"functionName":{"name":"xor","nativeSrc":"8787:3:7","nodeType":"YulIdentifier","src":"8787:3:7"},"nativeSrc":"8787:21:7","nodeType":"YulFunctionCall","src":"8787:21:7"}],"functionName":{"name":"or","nativeSrc":"8758:2:7","nodeType":"YulIdentifier","src":"8758:2:7"},"nativeSrc":"8758:51:7","nodeType":"YulFunctionCall","src":"8758:51:7"}],"functionName":{"name":"iszero","nativeSrc":"8751:6:7","nodeType":"YulIdentifier","src":"8751:6:7"},"nativeSrc":"8751:59:7","nodeType":"YulFunctionCall","src":"8751:59:7"},"nativeSrc":"8748:295:7","nodeType":"YulIf","src":"8748:295:7"}]},"condition":{"arguments":[{"name":"signature.length","nativeSrc":"8004:16:7","nodeType":"YulIdentifier","src":"8004:16:7"},{"kind":"number","nativeSrc":"8022:2:7","nodeType":"YulLiteral","src":"8022:2:7","type":"","value":"65"}],"functionName":{"name":"eq","nativeSrc":"8001:2:7","nodeType":"YulIdentifier","src":"8001:2:7"},"nativeSrc":"8001:24:7","nodeType":"YulFunctionCall","src":"8001:24:7"},"nativeSrc":"7998:1063:7","nodeType":"YulIf","src":"7998:1063:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9085:4:7","nodeType":"YulLiteral","src":"9085:4:7","type":"","value":"0x60"},{"kind":"number","nativeSrc":"9091:1:7","nodeType":"YulLiteral","src":"9091:1:7","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"9078:6:7","nodeType":"YulIdentifier","src":"9078:6:7"},"nativeSrc":"9078:15:7","nodeType":"YulFunctionCall","src":"9078:15:7"},"nativeSrc":"9078:15:7","nodeType":"YulExpressionStatement","src":"9078:15:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"9143:4:7","nodeType":"YulLiteral","src":"9143:4:7","type":"","value":"0x40"},{"name":"m","nativeSrc":"9149:1:7","nodeType":"YulIdentifier","src":"9149:1:7"}],"functionName":{"name":"mstore","nativeSrc":"9136:6:7","nodeType":"YulIdentifier","src":"9136:6:7"},"nativeSrc":"9136:15:7","nodeType":"YulFunctionCall","src":"9136:15:7"},"nativeSrc":"9136:15:7","nodeType":"YulExpressionStatement","src":"9136:15:7"},{"nativeSrc":"9205:29:7","nodeType":"YulVariableDeclaration","src":"9205:29:7","value":{"arguments":[{"kind":"number","nativeSrc":"9218:3:7","nodeType":"YulLiteral","src":"9218:3:7","type":"","value":"224"},{"kind":"number","nativeSrc":"9223:10:7","nodeType":"YulLiteral","src":"9223:10:7","type":"","value":"0x1626ba7e"}],"functionName":{"name":"shl","nativeSrc":"9214:3:7","nodeType":"YulIdentifier","src":"9214:3:7"},"nativeSrc":"9214:20:7","nodeType":"YulFunctionCall","src":"9214:20:7"},"variables":[{"name":"f","nativeSrc":"9209:1:7","nodeType":"YulTypedName","src":"9209:1:7","type":""}]},{"expression":{"arguments":[{"name":"m","nativeSrc":"9258:1:7","nodeType":"YulIdentifier","src":"9258:1:7"},{"name":"f","nativeSrc":"9261:1:7","nodeType":"YulIdentifier","src":"9261:1:7"}],"functionName":{"name":"mstore","nativeSrc":"9251:6:7","nodeType":"YulIdentifier","src":"9251:6:7"},"nativeSrc":"9251:12:7","nodeType":"YulFunctionCall","src":"9251:12:7"},"nativeSrc":"9251:12:7","nodeType":"YulExpressionStatement","src":"9251:12:7"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"9350:1:7","nodeType":"YulIdentifier","src":"9350:1:7"},{"kind":"number","nativeSrc":"9353:4:7","nodeType":"YulLiteral","src":"9353:4:7","type":"","value":"0x04"}],"functionName":{"name":"add","nativeSrc":"9346:3:7","nodeType":"YulIdentifier","src":"9346:3:7"},"nativeSrc":"9346:12:7","nodeType":"YulFunctionCall","src":"9346:12:7"},{"name":"hash","nativeSrc":"9360:4:7","nodeType":"YulIdentifier","src":"9360:4:7"}],"functionName":{"name":"mstore","nativeSrc":"9339:6:7","nodeType":"YulIdentifier","src":"9339:6:7"},"nativeSrc":"9339:26:7","nodeType":"YulFunctionCall","src":"9339:26:7"},"nativeSrc":"9339:26:7","nodeType":"YulExpressionStatement","src":"9339:26:7"},{"nativeSrc":"9382:21:7","nodeType":"YulVariableDeclaration","src":"9382:21:7","value":{"arguments":[{"name":"m","nativeSrc":"9395:1:7","nodeType":"YulIdentifier","src":"9395:1:7"},{"kind":"number","nativeSrc":"9398:4:7","nodeType":"YulLiteral","src":"9398:4:7","type":"","value":"0x24"}],"functionName":{"name":"add","nativeSrc":"9391:3:7","nodeType":"YulIdentifier","src":"9391:3:7"},"nativeSrc":"9391:12:7","nodeType":"YulFunctionCall","src":"9391:12:7"},"variables":[{"name":"d","nativeSrc":"9386:1:7","nodeType":"YulTypedName","src":"9386:1:7","type":""}]},{"expression":{"arguments":[{"name":"d","nativeSrc":"9427:1:7","nodeType":"YulIdentifier","src":"9427:1:7"},{"kind":"number","nativeSrc":"9430:4:7","nodeType":"YulLiteral","src":"9430:4:7","type":"","value":"0x40"}],"functionName":{"name":"mstore","nativeSrc":"9420:6:7","nodeType":"YulIdentifier","src":"9420:6:7"},"nativeSrc":"9420:15:7","nodeType":"YulFunctionCall","src":"9420:15:7"},"nativeSrc":"9420:15:7","nodeType":"YulExpressionStatement","src":"9420:15:7"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"9513:1:7","nodeType":"YulIdentifier","src":"9513:1:7"},{"kind":"number","nativeSrc":"9516:4:7","nodeType":"YulLiteral","src":"9516:4:7","type":"","value":"0x44"}],"functionName":{"name":"add","nativeSrc":"9509:3:7","nodeType":"YulIdentifier","src":"9509:3:7"},"nativeSrc":"9509:12:7","nodeType":"YulFunctionCall","src":"9509:12:7"},{"name":"signature.length","nativeSrc":"9523:16:7","nodeType":"YulIdentifier","src":"9523:16:7"}],"functionName":{"name":"mstore","nativeSrc":"9502:6:7","nodeType":"YulIdentifier","src":"9502:6:7"},"nativeSrc":"9502:38:7","nodeType":"YulFunctionCall","src":"9502:38:7"},"nativeSrc":"9502:38:7","nodeType":"YulExpressionStatement","src":"9502:38:7"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"9620:1:7","nodeType":"YulIdentifier","src":"9620:1:7"},{"kind":"number","nativeSrc":"9623:4:7","nodeType":"YulLiteral","src":"9623:4:7","type":"","value":"0x64"}],"functionName":{"name":"add","nativeSrc":"9616:3:7","nodeType":"YulIdentifier","src":"9616:3:7"},"nativeSrc":"9616:12:7","nodeType":"YulFunctionCall","src":"9616:12:7"},{"name":"signature.offset","nativeSrc":"9630:16:7","nodeType":"YulIdentifier","src":"9630:16:7"},{"name":"signature.length","nativeSrc":"9648:16:7","nodeType":"YulIdentifier","src":"9648:16:7"}],"functionName":{"name":"calldatacopy","nativeSrc":"9603:12:7","nodeType":"YulIdentifier","src":"9603:12:7"},"nativeSrc":"9603:62:7","nodeType":"YulFunctionCall","src":"9603:62:7"},"nativeSrc":"9603:62:7","nodeType":"YulExpressionStatement","src":"9603:62:7"},{"nativeSrc":"9729:797:7","nodeType":"YulAssignment","src":"9729:797:7","value":{"arguments":[{"arguments":[{"arguments":[{"name":"d","nativeSrc":"9868:1:7","nodeType":"YulIdentifier","src":"9868:1:7"}],"functionName":{"name":"mload","nativeSrc":"9862:5:7","nodeType":"YulIdentifier","src":"9862:5:7"},"nativeSrc":"9862:8:7","nodeType":"YulFunctionCall","src":"9862:8:7"},{"name":"f","nativeSrc":"9872:1:7","nodeType":"YulIdentifier","src":"9872:1:7"}],"functionName":{"name":"eq","nativeSrc":"9859:2:7","nodeType":"YulIdentifier","src":"9859:2:7"},"nativeSrc":"9859:15:7","nodeType":"YulFunctionCall","src":"9859:15:7"},{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"10144:3:7","nodeType":"YulIdentifier","src":"10144:3:7"},"nativeSrc":"10144:5:7","nodeType":"YulFunctionCall","src":"10144:5:7"},{"name":"signer","nativeSrc":"10193:6:7","nodeType":"YulIdentifier","src":"10193:6:7"},{"name":"m","nativeSrc":"10250:1:7","nodeType":"YulIdentifier","src":"10250:1:7"},{"arguments":[{"name":"signature.length","nativeSrc":"10314:16:7","nodeType":"YulIdentifier","src":"10314:16:7"},{"kind":"number","nativeSrc":"10332:4:7","nodeType":"YulLiteral","src":"10332:4:7","type":"","value":"0x64"}],"functionName":{"name":"add","nativeSrc":"10310:3:7","nodeType":"YulIdentifier","src":"10310:3:7"},"nativeSrc":"10310:27:7","nodeType":"YulFunctionCall","src":"10310:27:7"},{"name":"d","nativeSrc":"10396:1:7","nodeType":"YulIdentifier","src":"10396:1:7"},{"kind":"number","nativeSrc":"10448:4:7","nodeType":"YulLiteral","src":"10448:4:7","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"10108:10:7","nodeType":"YulIdentifier","src":"10108:10:7"},"nativeSrc":"10108:400:7","nodeType":"YulFunctionCall","src":"10108:400:7"}],"functionName":{"name":"and","nativeSrc":"9740:3:7","nodeType":"YulIdentifier","src":"9740:3:7"},"nativeSrc":"9740:786:7","nodeType":"YulFunctionCall","src":"9740:786:7"},"variableNames":[{"name":"isValid","nativeSrc":"9729:7:7","nodeType":"YulIdentifier","src":"9729:7:7"}]},{"nativeSrc":"10543:5:7","nodeType":"YulBreak","src":"10543:5:7"}]},"condition":{"name":"signer","nativeSrc":"6717:6:7","nodeType":"YulIdentifier","src":"6717:6:7"},"nativeSrc":"6674:3888:7","nodeType":"YulForLoop","post":{"nativeSrc":"6724:2:7","nodeType":"YulBlock","src":"6724:2:7","statements":[]},"pre":{"nativeSrc":"6678:38:7","nodeType":"YulBlock","src":"6678:38:7","statements":[{"nativeSrc":"6680:34:7","nodeType":"YulAssignment","src":"6680:34:7","value":{"arguments":[{"kind":"number","nativeSrc":"6694:2:7","nodeType":"YulLiteral","src":"6694:2:7","type":"","value":"96"},{"arguments":[{"kind":"number","nativeSrc":"6702:2:7","nodeType":"YulLiteral","src":"6702:2:7","type":"","value":"96"},{"name":"signer","nativeSrc":"6706:6:7","nodeType":"YulIdentifier","src":"6706:6:7"}],"functionName":{"name":"shl","nativeSrc":"6698:3:7","nodeType":"YulIdentifier","src":"6698:3:7"},"nativeSrc":"6698:15:7","nodeType":"YulFunctionCall","src":"6698:15:7"}],"functionName":{"name":"shr","nativeSrc":"6690:3:7","nodeType":"YulIdentifier","src":"6690:3:7"},"nativeSrc":"6690:24:7","nodeType":"YulFunctionCall","src":"6690:24:7"},"variableNames":[{"name":"signer","nativeSrc":"6680:6:7","nodeType":"YulIdentifier","src":"6680:6:7"}]}]},"src":"6674:3888:7"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2963,"isOffset":false,"isSlot":false,"src":"6795:4:7","valueSize":1},{"declaration":2963,"isOffset":false,"isSlot":false,"src":"9360:4:7","valueSize":1},{"declaration":2968,"isOffset":false,"isSlot":false,"src":"7757:7:7","valueSize":1},{"declaration":2968,"isOffset":false,"isSlot":false,"src":"8837:7:7","valueSize":1},{"declaration":2968,"isOffset":false,"isSlot":false,"src":"9729:7:7","valueSize":1},{"declaration":2965,"isOffset":false,"isSlot":false,"src":"10314:16:7","suffix":"length","valueSize":1},{"declaration":2965,"isOffset":false,"isSlot":false,"src":"6823:16:7","suffix":"length","valueSize":1},{"declaration":2965,"isOffset":false,"isSlot":false,"src":"8004:16:7","suffix":"length","valueSize":1},{"declaration":2965,"isOffset":false,"isSlot":false,"src":"9523:16:7","suffix":"length","valueSize":1},{"declaration":2965,"isOffset":false,"isSlot":false,"src":"9648:16:7","suffix":"length","valueSize":1},{"declaration":2965,"isOffset":true,"isSlot":false,"src":"6894:16:7","suffix":"offset","valueSize":1},{"declaration":2965,"isOffset":true,"isSlot":false,"src":"7029:16:7","suffix":"offset","valueSize":1},{"declaration":2965,"isOffset":true,"isSlot":false,"src":"8086:16:7","suffix":"offset","valueSize":1},{"declaration":2965,"isOffset":true,"isSlot":false,"src":"8160:16:7","suffix":"offset","valueSize":1},{"declaration":2965,"isOffset":true,"isSlot":false,"src":"9630:16:7","suffix":"offset","valueSize":1},{"declaration":2961,"isOffset":false,"isSlot":false,"src":"10193:6:7","valueSize":1},{"declaration":2961,"isOffset":false,"isSlot":false,"src":"6680:6:7","valueSize":1},{"declaration":2961,"isOffset":false,"isSlot":false,"src":"6706:6:7","valueSize":1},{"declaration":2961,"isOffset":false,"isSlot":false,"src":"6717:6:7","valueSize":1},{"declaration":2961,"isOffset":false,"isSlot":false,"src":"7711:6:7","valueSize":1},{"declaration":2961,"isOffset":false,"isSlot":false,"src":"8791:6:7","valueSize":1}],"id":2970,"nodeType":"InlineAssembly","src":"6576:3996:7"}]},"documentation":{"id":2959,"nodeType":"StructuredDocumentation","src":"6140:220:7","text":"@dev Returns whether `signature` is valid for `signer` and `hash`.\n If `signer` is a smart contract, the signature is validated with ERC1271.\n Otherwise, the signature is validated with `ECDSA.recover`."},"id":2972,"implemented":true,"kind":"function","modifiers":[],"name":"isValidSignatureNowCalldata","nameLocation":"6374:27:7","nodeType":"FunctionDefinition","parameters":{"id":2966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2961,"mutability":"mutable","name":"signer","nameLocation":"6410:6:7","nodeType":"VariableDeclaration","scope":2972,"src":"6402:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2960,"name":"address","nodeType":"ElementaryTypeName","src":"6402:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2963,"mutability":"mutable","name":"hash","nameLocation":"6426:4:7","nodeType":"VariableDeclaration","scope":2972,"src":"6418:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2962,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6418:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2965,"mutability":"mutable","name":"signature","nameLocation":"6447:9:7","nodeType":"VariableDeclaration","scope":2972,"src":"6432:24:7","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2964,"name":"bytes","nodeType":"ElementaryTypeName","src":"6432:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6401:56:7"},"returnParameters":{"id":2969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2968,"mutability":"mutable","name":"isValid","nameLocation":"6510:7:7","nodeType":"VariableDeclaration","scope":2972,"src":"6505:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2967,"name":"bool","nodeType":"ElementaryTypeName","src":"6505:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6504:14:7"},"scope":3097,"src":"6365:4213:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2987,"nodeType":"Block","src":"10970:2765:7","statements":[{"AST":{"nativeSrc":"11032:2697:7","nodeType":"YulBlock","src":"11032:2697:7","statements":[{"body":{"nativeSrc":"11174:2545:7","nodeType":"YulBlock","src":"11174:2545:7","statements":[{"nativeSrc":"11192:20:7","nodeType":"YulVariableDeclaration","src":"11192:20:7","value":{"arguments":[{"kind":"number","nativeSrc":"11207:4:7","nodeType":"YulLiteral","src":"11207:4:7","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"11201:5:7","nodeType":"YulIdentifier","src":"11201:5:7"},"nativeSrc":"11201:11:7","nodeType":"YulFunctionCall","src":"11201:11:7"},"variables":[{"name":"m","nativeSrc":"11196:1:7","nodeType":"YulTypedName","src":"11196:1:7","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11236:4:7","nodeType":"YulLiteral","src":"11236:4:7","type":"","value":"0x00"},{"name":"hash","nativeSrc":"11242:4:7","nodeType":"YulIdentifier","src":"11242:4:7"}],"functionName":{"name":"mstore","nativeSrc":"11229:6:7","nodeType":"YulIdentifier","src":"11229:6:7"},"nativeSrc":"11229:18:7","nodeType":"YulFunctionCall","src":"11229:18:7"},"nativeSrc":"11229:18:7","nodeType":"YulExpressionStatement","src":"11229:18:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11271:4:7","nodeType":"YulLiteral","src":"11271:4:7","type":"","value":"0x20"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"11285:3:7","nodeType":"YulLiteral","src":"11285:3:7","type":"","value":"255"},{"name":"vs","nativeSrc":"11290:2:7","nodeType":"YulIdentifier","src":"11290:2:7"}],"functionName":{"name":"shr","nativeSrc":"11281:3:7","nodeType":"YulIdentifier","src":"11281:3:7"},"nativeSrc":"11281:12:7","nodeType":"YulFunctionCall","src":"11281:12:7"},{"kind":"number","nativeSrc":"11295:2:7","nodeType":"YulLiteral","src":"11295:2:7","type":"","value":"27"}],"functionName":{"name":"add","nativeSrc":"11277:3:7","nodeType":"YulIdentifier","src":"11277:3:7"},"nativeSrc":"11277:21:7","nodeType":"YulFunctionCall","src":"11277:21:7"}],"functionName":{"name":"mstore","nativeSrc":"11264:6:7","nodeType":"YulIdentifier","src":"11264:6:7"},"nativeSrc":"11264:35:7","nodeType":"YulFunctionCall","src":"11264:35:7"},"nativeSrc":"11264:35:7","nodeType":"YulExpressionStatement","src":"11264:35:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11331:4:7","nodeType":"YulLiteral","src":"11331:4:7","type":"","value":"0x40"},{"name":"r","nativeSrc":"11337:1:7","nodeType":"YulIdentifier","src":"11337:1:7"}],"functionName":{"name":"mstore","nativeSrc":"11324:6:7","nodeType":"YulIdentifier","src":"11324:6:7"},"nativeSrc":"11324:15:7","nodeType":"YulFunctionCall","src":"11324:15:7"},"nativeSrc":"11324:15:7","nodeType":"YulExpressionStatement","src":"11324:15:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11371:4:7","nodeType":"YulLiteral","src":"11371:4:7","type":"","value":"0x60"},{"arguments":[{"kind":"number","nativeSrc":"11381:1:7","nodeType":"YulLiteral","src":"11381:1:7","type":"","value":"1"},{"arguments":[{"kind":"number","nativeSrc":"11388:1:7","nodeType":"YulLiteral","src":"11388:1:7","type":"","value":"1"},{"name":"vs","nativeSrc":"11391:2:7","nodeType":"YulIdentifier","src":"11391:2:7"}],"functionName":{"name":"shl","nativeSrc":"11384:3:7","nodeType":"YulIdentifier","src":"11384:3:7"},"nativeSrc":"11384:10:7","nodeType":"YulFunctionCall","src":"11384:10:7"}],"functionName":{"name":"shr","nativeSrc":"11377:3:7","nodeType":"YulIdentifier","src":"11377:3:7"},"nativeSrc":"11377:18:7","nodeType":"YulFunctionCall","src":"11377:18:7"}],"functionName":{"name":"mstore","nativeSrc":"11364:6:7","nodeType":"YulIdentifier","src":"11364:6:7"},"nativeSrc":"11364:32:7","nodeType":"YulFunctionCall","src":"11364:32:7"},"nativeSrc":"11364:32:7","nodeType":"YulExpressionStatement","src":"11364:32:7"},{"nativeSrc":"11421:385:7","nodeType":"YulVariableDeclaration","src":"11421:385:7","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"11486:3:7","nodeType":"YulIdentifier","src":"11486:3:7"},"nativeSrc":"11486:5:7","nodeType":"YulFunctionCall","src":"11486:5:7"},{"kind":"number","nativeSrc":"11560:1:7","nodeType":"YulLiteral","src":"11560:1:7","type":"","value":"1"},{"kind":"number","nativeSrc":"11614:4:7","nodeType":"YulLiteral","src":"11614:4:7","type":"","value":"0x00"},{"kind":"number","nativeSrc":"11663:4:7","nodeType":"YulLiteral","src":"11663:4:7","type":"","value":"0x80"},{"kind":"number","nativeSrc":"11711:4:7","nodeType":"YulLiteral","src":"11711:4:7","type":"","value":"0x01"},{"kind":"number","nativeSrc":"11761:4:7","nodeType":"YulLiteral","src":"11761:4:7","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"11450:10:7","nodeType":"YulIdentifier","src":"11450:10:7"},"nativeSrc":"11450:356:7","nodeType":"YulFunctionCall","src":"11450:356:7"},"variables":[{"name":"t","nativeSrc":"11425:1:7","nodeType":"YulTypedName","src":"11425:1:7","type":""}]},{"body":{"nativeSrc":"11975:212:7","nodeType":"YulBlock","src":"11975:212:7","statements":[{"nativeSrc":"11997:12:7","nodeType":"YulAssignment","src":"11997:12:7","value":{"kind":"number","nativeSrc":"12008:1:7","nodeType":"YulLiteral","src":"12008:1:7","type":"","value":"1"},"variableNames":[{"name":"isValid","nativeSrc":"11997:7:7","nodeType":"YulIdentifier","src":"11997:7:7"}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"12037:4:7","nodeType":"YulLiteral","src":"12037:4:7","type":"","value":"0x60"},{"kind":"number","nativeSrc":"12043:1:7","nodeType":"YulLiteral","src":"12043:1:7","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"12030:6:7","nodeType":"YulIdentifier","src":"12030:6:7"},"nativeSrc":"12030:15:7","nodeType":"YulFunctionCall","src":"12030:15:7"},"nativeSrc":"12030:15:7","nodeType":"YulExpressionStatement","src":"12030:15:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"12099:4:7","nodeType":"YulLiteral","src":"12099:4:7","type":"","value":"0x40"},{"name":"m","nativeSrc":"12105:1:7","nodeType":"YulIdentifier","src":"12105:1:7"}],"functionName":{"name":"mstore","nativeSrc":"12092:6:7","nodeType":"YulIdentifier","src":"12092:6:7"},"nativeSrc":"12092:15:7","nodeType":"YulFunctionCall","src":"12092:15:7"},"nativeSrc":"12092:15:7","nodeType":"YulExpressionStatement","src":"12092:15:7"},{"nativeSrc":"12164:5:7","nodeType":"YulBreak","src":"12164:5:7"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"11932:14:7","nodeType":"YulIdentifier","src":"11932:14:7"},"nativeSrc":"11932:16:7","nodeType":"YulFunctionCall","src":"11932:16:7"}],"functionName":{"name":"iszero","nativeSrc":"11925:6:7","nodeType":"YulIdentifier","src":"11925:6:7"},"nativeSrc":"11925:24:7","nodeType":"YulFunctionCall","src":"11925:24:7"},{"arguments":[{"name":"signer","nativeSrc":"11955:6:7","nodeType":"YulIdentifier","src":"11955:6:7"},{"arguments":[{"name":"t","nativeSrc":"11969:1:7","nodeType":"YulIdentifier","src":"11969:1:7"}],"functionName":{"name":"mload","nativeSrc":"11963:5:7","nodeType":"YulIdentifier","src":"11963:5:7"},"nativeSrc":"11963:8:7","nodeType":"YulFunctionCall","src":"11963:8:7"}],"functionName":{"name":"xor","nativeSrc":"11951:3:7","nodeType":"YulIdentifier","src":"11951:3:7"},"nativeSrc":"11951:21:7","nodeType":"YulFunctionCall","src":"11951:21:7"}],"functionName":{"name":"or","nativeSrc":"11922:2:7","nodeType":"YulIdentifier","src":"11922:2:7"},"nativeSrc":"11922:51:7","nodeType":"YulFunctionCall","src":"11922:51:7"}],"functionName":{"name":"iszero","nativeSrc":"11915:6:7","nodeType":"YulIdentifier","src":"11915:6:7"},"nativeSrc":"11915:59:7","nodeType":"YulFunctionCall","src":"11915:59:7"},"nativeSrc":"11912:275:7","nodeType":"YulIf","src":"11912:275:7"},{"nativeSrc":"12205:29:7","nodeType":"YulVariableDeclaration","src":"12205:29:7","value":{"arguments":[{"kind":"number","nativeSrc":"12218:3:7","nodeType":"YulLiteral","src":"12218:3:7","type":"","value":"224"},{"kind":"number","nativeSrc":"12223:10:7","nodeType":"YulLiteral","src":"12223:10:7","type":"","value":"0x1626ba7e"}],"functionName":{"name":"shl","nativeSrc":"12214:3:7","nodeType":"YulIdentifier","src":"12214:3:7"},"nativeSrc":"12214:20:7","nodeType":"YulFunctionCall","src":"12214:20:7"},"variables":[{"name":"f","nativeSrc":"12209:1:7","nodeType":"YulTypedName","src":"12209:1:7","type":""}]},{"expression":{"arguments":[{"name":"m","nativeSrc":"12258:1:7","nodeType":"YulIdentifier","src":"12258:1:7"},{"name":"f","nativeSrc":"12261:1:7","nodeType":"YulIdentifier","src":"12261:1:7"}],"functionName":{"name":"mstore","nativeSrc":"12251:6:7","nodeType":"YulIdentifier","src":"12251:6:7"},"nativeSrc":"12251:12:7","nodeType":"YulFunctionCall","src":"12251:12:7"},"nativeSrc":"12251:12:7","nodeType":"YulExpressionStatement","src":"12251:12:7"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"12350:1:7","nodeType":"YulIdentifier","src":"12350:1:7"},{"kind":"number","nativeSrc":"12353:4:7","nodeType":"YulLiteral","src":"12353:4:7","type":"","value":"0x04"}],"functionName":{"name":"add","nativeSrc":"12346:3:7","nodeType":"YulIdentifier","src":"12346:3:7"},"nativeSrc":"12346:12:7","nodeType":"YulFunctionCall","src":"12346:12:7"},{"name":"hash","nativeSrc":"12360:4:7","nodeType":"YulIdentifier","src":"12360:4:7"}],"functionName":{"name":"mstore","nativeSrc":"12339:6:7","nodeType":"YulIdentifier","src":"12339:6:7"},"nativeSrc":"12339:26:7","nodeType":"YulFunctionCall","src":"12339:26:7"},"nativeSrc":"12339:26:7","nodeType":"YulExpressionStatement","src":"12339:26:7"},{"nativeSrc":"12382:21:7","nodeType":"YulVariableDeclaration","src":"12382:21:7","value":{"arguments":[{"name":"m","nativeSrc":"12395:1:7","nodeType":"YulIdentifier","src":"12395:1:7"},{"kind":"number","nativeSrc":"12398:4:7","nodeType":"YulLiteral","src":"12398:4:7","type":"","value":"0x24"}],"functionName":{"name":"add","nativeSrc":"12391:3:7","nodeType":"YulIdentifier","src":"12391:3:7"},"nativeSrc":"12391:12:7","nodeType":"YulFunctionCall","src":"12391:12:7"},"variables":[{"name":"d","nativeSrc":"12386:1:7","nodeType":"YulTypedName","src":"12386:1:7","type":""}]},{"expression":{"arguments":[{"name":"d","nativeSrc":"12427:1:7","nodeType":"YulIdentifier","src":"12427:1:7"},{"kind":"number","nativeSrc":"12430:4:7","nodeType":"YulLiteral","src":"12430:4:7","type":"","value":"0x40"}],"functionName":{"name":"mstore","nativeSrc":"12420:6:7","nodeType":"YulIdentifier","src":"12420:6:7"},"nativeSrc":"12420:15:7","nodeType":"YulFunctionCall","src":"12420:15:7"},"nativeSrc":"12420:15:7","nodeType":"YulExpressionStatement","src":"12420:15:7"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"12513:1:7","nodeType":"YulIdentifier","src":"12513:1:7"},{"kind":"number","nativeSrc":"12516:4:7","nodeType":"YulLiteral","src":"12516:4:7","type":"","value":"0x44"}],"functionName":{"name":"add","nativeSrc":"12509:3:7","nodeType":"YulIdentifier","src":"12509:3:7"},"nativeSrc":"12509:12:7","nodeType":"YulFunctionCall","src":"12509:12:7"},{"kind":"number","nativeSrc":"12523:2:7","nodeType":"YulLiteral","src":"12523:2:7","type":"","value":"65"}],"functionName":{"name":"mstore","nativeSrc":"12502:6:7","nodeType":"YulIdentifier","src":"12502:6:7"},"nativeSrc":"12502:24:7","nodeType":"YulFunctionCall","src":"12502:24:7"},"nativeSrc":"12502:24:7","nodeType":"YulExpressionStatement","src":"12502:24:7"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"12582:1:7","nodeType":"YulIdentifier","src":"12582:1:7"},{"kind":"number","nativeSrc":"12585:4:7","nodeType":"YulLiteral","src":"12585:4:7","type":"","value":"0x64"}],"functionName":{"name":"add","nativeSrc":"12578:3:7","nodeType":"YulIdentifier","src":"12578:3:7"},"nativeSrc":"12578:12:7","nodeType":"YulFunctionCall","src":"12578:12:7"},{"name":"r","nativeSrc":"12592:1:7","nodeType":"YulIdentifier","src":"12592:1:7"}],"functionName":{"name":"mstore","nativeSrc":"12571:6:7","nodeType":"YulIdentifier","src":"12571:6:7"},"nativeSrc":"12571:23:7","nodeType":"YulFunctionCall","src":"12571:23:7"},"nativeSrc":"12571:23:7","nodeType":"YulExpressionStatement","src":"12571:23:7"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"12630:1:7","nodeType":"YulIdentifier","src":"12630:1:7"},{"kind":"number","nativeSrc":"12633:4:7","nodeType":"YulLiteral","src":"12633:4:7","type":"","value":"0x84"}],"functionName":{"name":"add","nativeSrc":"12626:3:7","nodeType":"YulIdentifier","src":"12626:3:7"},"nativeSrc":"12626:12:7","nodeType":"YulFunctionCall","src":"12626:12:7"},{"arguments":[{"kind":"number","nativeSrc":"12646:4:7","nodeType":"YulLiteral","src":"12646:4:7","type":"","value":"0x60"}],"functionName":{"name":"mload","nativeSrc":"12640:5:7","nodeType":"YulIdentifier","src":"12640:5:7"},"nativeSrc":"12640:11:7","nodeType":"YulFunctionCall","src":"12640:11:7"}],"functionName":{"name":"mstore","nativeSrc":"12619:6:7","nodeType":"YulIdentifier","src":"12619:6:7"},"nativeSrc":"12619:33:7","nodeType":"YulFunctionCall","src":"12619:33:7"},"nativeSrc":"12619:33:7","nodeType":"YulExpressionStatement","src":"12619:33:7"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"12689:1:7","nodeType":"YulIdentifier","src":"12689:1:7"},{"kind":"number","nativeSrc":"12692:4:7","nodeType":"YulLiteral","src":"12692:4:7","type":"","value":"0xa4"}],"functionName":{"name":"add","nativeSrc":"12685:3:7","nodeType":"YulIdentifier","src":"12685:3:7"},"nativeSrc":"12685:12:7","nodeType":"YulFunctionCall","src":"12685:12:7"},{"arguments":[{"kind":"number","nativeSrc":"12705:4:7","nodeType":"YulLiteral","src":"12705:4:7","type":"","value":"0x20"}],"functionName":{"name":"mload","nativeSrc":"12699:5:7","nodeType":"YulIdentifier","src":"12699:5:7"},"nativeSrc":"12699:11:7","nodeType":"YulFunctionCall","src":"12699:11:7"}],"functionName":{"name":"mstore8","nativeSrc":"12677:7:7","nodeType":"YulIdentifier","src":"12677:7:7"},"nativeSrc":"12677:34:7","nodeType":"YulFunctionCall","src":"12677:34:7"},"nativeSrc":"12677:34:7","nodeType":"YulExpressionStatement","src":"12677:34:7"},{"nativeSrc":"12783:774:7","nodeType":"YulAssignment","src":"12783:774:7","value":{"arguments":[{"arguments":[{"arguments":[{"name":"d","nativeSrc":"12922:1:7","nodeType":"YulIdentifier","src":"12922:1:7"}],"functionName":{"name":"mload","nativeSrc":"12916:5:7","nodeType":"YulIdentifier","src":"12916:5:7"},"nativeSrc":"12916:8:7","nodeType":"YulFunctionCall","src":"12916:8:7"},{"name":"f","nativeSrc":"12926:1:7","nodeType":"YulIdentifier","src":"12926:1:7"}],"functionName":{"name":"eq","nativeSrc":"12913:2:7","nodeType":"YulIdentifier","src":"12913:2:7"},"nativeSrc":"12913:15:7","nodeType":"YulFunctionCall","src":"12913:15:7"},{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"13198:3:7","nodeType":"YulIdentifier","src":"13198:3:7"},"nativeSrc":"13198:5:7","nodeType":"YulFunctionCall","src":"13198:5:7"},{"name":"signer","nativeSrc":"13247:6:7","nodeType":"YulIdentifier","src":"13247:6:7"},{"name":"m","nativeSrc":"13304:1:7","nodeType":"YulIdentifier","src":"13304:1:7"},{"kind":"number","nativeSrc":"13364:4:7","nodeType":"YulLiteral","src":"13364:4:7","type":"","value":"0xa5"},{"name":"d","nativeSrc":"13427:1:7","nodeType":"YulIdentifier","src":"13427:1:7"},{"kind":"number","nativeSrc":"13479:4:7","nodeType":"YulLiteral","src":"13479:4:7","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"13162:10:7","nodeType":"YulIdentifier","src":"13162:10:7"},"nativeSrc":"13162:377:7","nodeType":"YulFunctionCall","src":"13162:377:7"}],"functionName":{"name":"and","nativeSrc":"12794:3:7","nodeType":"YulIdentifier","src":"12794:3:7"},"nativeSrc":"12794:763:7","nodeType":"YulFunctionCall","src":"12794:763:7"},"variableNames":[{"name":"isValid","nativeSrc":"12783:7:7","nodeType":"YulIdentifier","src":"12783:7:7"}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"13581:4:7","nodeType":"YulLiteral","src":"13581:4:7","type":"","value":"0x60"},{"kind":"number","nativeSrc":"13587:1:7","nodeType":"YulLiteral","src":"13587:1:7","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"13574:6:7","nodeType":"YulIdentifier","src":"13574:6:7"},"nativeSrc":"13574:15:7","nodeType":"YulFunctionCall","src":"13574:15:7"},"nativeSrc":"13574:15:7","nodeType":"YulExpressionStatement","src":"13574:15:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"13639:4:7","nodeType":"YulLiteral","src":"13639:4:7","type":"","value":"0x40"},{"name":"m","nativeSrc":"13645:1:7","nodeType":"YulIdentifier","src":"13645:1:7"}],"functionName":{"name":"mstore","nativeSrc":"13632:6:7","nodeType":"YulIdentifier","src":"13632:6:7"},"nativeSrc":"13632:15:7","nodeType":"YulFunctionCall","src":"13632:15:7"},"nativeSrc":"13632:15:7","nodeType":"YulExpressionStatement","src":"13632:15:7"},{"nativeSrc":"13700:5:7","nodeType":"YulBreak","src":"13700:5:7"}]},"condition":{"name":"signer","nativeSrc":"11164:6:7","nodeType":"YulIdentifier","src":"11164:6:7"},"nativeSrc":"11121:2598:7","nodeType":"YulForLoop","post":{"nativeSrc":"11171:2:7","nodeType":"YulBlock","src":"11171:2:7","statements":[]},"pre":{"nativeSrc":"11125:38:7","nodeType":"YulBlock","src":"11125:38:7","statements":[{"nativeSrc":"11127:34:7","nodeType":"YulAssignment","src":"11127:34:7","value":{"arguments":[{"kind":"number","nativeSrc":"11141:2:7","nodeType":"YulLiteral","src":"11141:2:7","type":"","value":"96"},{"arguments":[{"kind":"number","nativeSrc":"11149:2:7","nodeType":"YulLiteral","src":"11149:2:7","type":"","value":"96"},{"name":"signer","nativeSrc":"11153:6:7","nodeType":"YulIdentifier","src":"11153:6:7"}],"functionName":{"name":"shl","nativeSrc":"11145:3:7","nodeType":"YulIdentifier","src":"11145:3:7"},"nativeSrc":"11145:15:7","nodeType":"YulFunctionCall","src":"11145:15:7"}],"functionName":{"name":"shr","nativeSrc":"11137:3:7","nodeType":"YulIdentifier","src":"11137:3:7"},"nativeSrc":"11137:24:7","nodeType":"YulFunctionCall","src":"11137:24:7"},"variableNames":[{"name":"signer","nativeSrc":"11127:6:7","nodeType":"YulIdentifier","src":"11127:6:7"}]}]},"src":"11121:2598:7"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2977,"isOffset":false,"isSlot":false,"src":"11242:4:7","valueSize":1},{"declaration":2977,"isOffset":false,"isSlot":false,"src":"12360:4:7","valueSize":1},{"declaration":2984,"isOffset":false,"isSlot":false,"src":"11997:7:7","valueSize":1},{"declaration":2984,"isOffset":false,"isSlot":false,"src":"12783:7:7","valueSize":1},{"declaration":2979,"isOffset":false,"isSlot":false,"src":"11337:1:7","valueSize":1},{"declaration":2979,"isOffset":false,"isSlot":false,"src":"12592:1:7","valueSize":1},{"declaration":2975,"isOffset":false,"isSlot":false,"src":"11127:6:7","valueSize":1},{"declaration":2975,"isOffset":false,"isSlot":false,"src":"11153:6:7","valueSize":1},{"declaration":2975,"isOffset":false,"isSlot":false,"src":"11164:6:7","valueSize":1},{"declaration":2975,"isOffset":false,"isSlot":false,"src":"11955:6:7","valueSize":1},{"declaration":2975,"isOffset":false,"isSlot":false,"src":"13247:6:7","valueSize":1},{"declaration":2981,"isOffset":false,"isSlot":false,"src":"11290:2:7","valueSize":1},{"declaration":2981,"isOffset":false,"isSlot":false,"src":"11391:2:7","valueSize":1}],"id":2986,"nodeType":"InlineAssembly","src":"11023:2706:7"}]},"documentation":{"id":2973,"nodeType":"StructuredDocumentation","src":"10584:234:7","text":"@dev Returns whether the signature (`r`, `vs`) is valid for `signer` and `hash`.\n If `signer` is a smart contract, the signature is validated with ERC1271.\n Otherwise, the signature is validated with `ECDSA.recover`."},"id":2988,"implemented":true,"kind":"function","modifiers":[],"name":"isValidSignatureNow","nameLocation":"10832:19:7","nodeType":"FunctionDefinition","parameters":{"id":2982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2975,"mutability":"mutable","name":"signer","nameLocation":"10860:6:7","nodeType":"VariableDeclaration","scope":2988,"src":"10852:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2974,"name":"address","nodeType":"ElementaryTypeName","src":"10852:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2977,"mutability":"mutable","name":"hash","nameLocation":"10876:4:7","nodeType":"VariableDeclaration","scope":2988,"src":"10868:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2976,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10868:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2979,"mutability":"mutable","name":"r","nameLocation":"10890:1:7","nodeType":"VariableDeclaration","scope":2988,"src":"10882:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2978,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10882:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2981,"mutability":"mutable","name":"vs","nameLocation":"10901:2:7","nodeType":"VariableDeclaration","scope":2988,"src":"10893:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2980,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10893:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"10851:53:7"},"returnParameters":{"id":2985,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2984,"mutability":"mutable","name":"isValid","nameLocation":"10957:7:7","nodeType":"VariableDeclaration","scope":2988,"src":"10952:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2983,"name":"bool","nodeType":"ElementaryTypeName","src":"10952:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10951:14:7"},"scope":3097,"src":"10823:2912:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3005,"nodeType":"Block","src":"14139:2719:7","statements":[{"AST":{"nativeSrc":"14201:2651:7","nodeType":"YulBlock","src":"14201:2651:7","statements":[{"body":{"nativeSrc":"14343:2499:7","nodeType":"YulBlock","src":"14343:2499:7","statements":[{"nativeSrc":"14361:20:7","nodeType":"YulVariableDeclaration","src":"14361:20:7","value":{"arguments":[{"kind":"number","nativeSrc":"14376:4:7","nodeType":"YulLiteral","src":"14376:4:7","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"14370:5:7","nodeType":"YulIdentifier","src":"14370:5:7"},"nativeSrc":"14370:11:7","nodeType":"YulFunctionCall","src":"14370:11:7"},"variables":[{"name":"m","nativeSrc":"14365:1:7","nodeType":"YulTypedName","src":"14365:1:7","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14405:4:7","nodeType":"YulLiteral","src":"14405:4:7","type":"","value":"0x00"},{"name":"hash","nativeSrc":"14411:4:7","nodeType":"YulIdentifier","src":"14411:4:7"}],"functionName":{"name":"mstore","nativeSrc":"14398:6:7","nodeType":"YulIdentifier","src":"14398:6:7"},"nativeSrc":"14398:18:7","nodeType":"YulFunctionCall","src":"14398:18:7"},"nativeSrc":"14398:18:7","nodeType":"YulExpressionStatement","src":"14398:18:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14440:4:7","nodeType":"YulLiteral","src":"14440:4:7","type":"","value":"0x20"},{"arguments":[{"name":"v","nativeSrc":"14450:1:7","nodeType":"YulIdentifier","src":"14450:1:7"},{"kind":"number","nativeSrc":"14453:4:7","nodeType":"YulLiteral","src":"14453:4:7","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"14446:3:7","nodeType":"YulIdentifier","src":"14446:3:7"},"nativeSrc":"14446:12:7","nodeType":"YulFunctionCall","src":"14446:12:7"}],"functionName":{"name":"mstore","nativeSrc":"14433:6:7","nodeType":"YulIdentifier","src":"14433:6:7"},"nativeSrc":"14433:26:7","nodeType":"YulFunctionCall","src":"14433:26:7"},"nativeSrc":"14433:26:7","nodeType":"YulExpressionStatement","src":"14433:26:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14491:4:7","nodeType":"YulLiteral","src":"14491:4:7","type":"","value":"0x40"},{"name":"r","nativeSrc":"14497:1:7","nodeType":"YulIdentifier","src":"14497:1:7"}],"functionName":{"name":"mstore","nativeSrc":"14484:6:7","nodeType":"YulIdentifier","src":"14484:6:7"},"nativeSrc":"14484:15:7","nodeType":"YulFunctionCall","src":"14484:15:7"},"nativeSrc":"14484:15:7","nodeType":"YulExpressionStatement","src":"14484:15:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14531:4:7","nodeType":"YulLiteral","src":"14531:4:7","type":"","value":"0x60"},{"name":"s","nativeSrc":"14537:1:7","nodeType":"YulIdentifier","src":"14537:1:7"}],"functionName":{"name":"mstore","nativeSrc":"14524:6:7","nodeType":"YulIdentifier","src":"14524:6:7"},"nativeSrc":"14524:15:7","nodeType":"YulFunctionCall","src":"14524:15:7"},"nativeSrc":"14524:15:7","nodeType":"YulExpressionStatement","src":"14524:15:7"},{"nativeSrc":"14564:385:7","nodeType":"YulVariableDeclaration","src":"14564:385:7","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"14629:3:7","nodeType":"YulIdentifier","src":"14629:3:7"},"nativeSrc":"14629:5:7","nodeType":"YulFunctionCall","src":"14629:5:7"},{"kind":"number","nativeSrc":"14703:1:7","nodeType":"YulLiteral","src":"14703:1:7","type":"","value":"1"},{"kind":"number","nativeSrc":"14757:4:7","nodeType":"YulLiteral","src":"14757:4:7","type":"","value":"0x00"},{"kind":"number","nativeSrc":"14806:4:7","nodeType":"YulLiteral","src":"14806:4:7","type":"","value":"0x80"},{"kind":"number","nativeSrc":"14854:4:7","nodeType":"YulLiteral","src":"14854:4:7","type":"","value":"0x01"},{"kind":"number","nativeSrc":"14904:4:7","nodeType":"YulLiteral","src":"14904:4:7","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"14593:10:7","nodeType":"YulIdentifier","src":"14593:10:7"},"nativeSrc":"14593:356:7","nodeType":"YulFunctionCall","src":"14593:356:7"},"variables":[{"name":"t","nativeSrc":"14568:1:7","nodeType":"YulTypedName","src":"14568:1:7","type":""}]},{"body":{"nativeSrc":"15118:212:7","nodeType":"YulBlock","src":"15118:212:7","statements":[{"nativeSrc":"15140:12:7","nodeType":"YulAssignment","src":"15140:12:7","value":{"kind":"number","nativeSrc":"15151:1:7","nodeType":"YulLiteral","src":"15151:1:7","type":"","value":"1"},"variableNames":[{"name":"isValid","nativeSrc":"15140:7:7","nodeType":"YulIdentifier","src":"15140:7:7"}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15180:4:7","nodeType":"YulLiteral","src":"15180:4:7","type":"","value":"0x60"},{"kind":"number","nativeSrc":"15186:1:7","nodeType":"YulLiteral","src":"15186:1:7","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"15173:6:7","nodeType":"YulIdentifier","src":"15173:6:7"},"nativeSrc":"15173:15:7","nodeType":"YulFunctionCall","src":"15173:15:7"},"nativeSrc":"15173:15:7","nodeType":"YulExpressionStatement","src":"15173:15:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15242:4:7","nodeType":"YulLiteral","src":"15242:4:7","type":"","value":"0x40"},{"name":"m","nativeSrc":"15248:1:7","nodeType":"YulIdentifier","src":"15248:1:7"}],"functionName":{"name":"mstore","nativeSrc":"15235:6:7","nodeType":"YulIdentifier","src":"15235:6:7"},"nativeSrc":"15235:15:7","nodeType":"YulFunctionCall","src":"15235:15:7"},"nativeSrc":"15235:15:7","nodeType":"YulExpressionStatement","src":"15235:15:7"},{"nativeSrc":"15307:5:7","nodeType":"YulBreak","src":"15307:5:7"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"15075:14:7","nodeType":"YulIdentifier","src":"15075:14:7"},"nativeSrc":"15075:16:7","nodeType":"YulFunctionCall","src":"15075:16:7"}],"functionName":{"name":"iszero","nativeSrc":"15068:6:7","nodeType":"YulIdentifier","src":"15068:6:7"},"nativeSrc":"15068:24:7","nodeType":"YulFunctionCall","src":"15068:24:7"},{"arguments":[{"name":"signer","nativeSrc":"15098:6:7","nodeType":"YulIdentifier","src":"15098:6:7"},{"arguments":[{"name":"t","nativeSrc":"15112:1:7","nodeType":"YulIdentifier","src":"15112:1:7"}],"functionName":{"name":"mload","nativeSrc":"15106:5:7","nodeType":"YulIdentifier","src":"15106:5:7"},"nativeSrc":"15106:8:7","nodeType":"YulFunctionCall","src":"15106:8:7"}],"functionName":{"name":"xor","nativeSrc":"15094:3:7","nodeType":"YulIdentifier","src":"15094:3:7"},"nativeSrc":"15094:21:7","nodeType":"YulFunctionCall","src":"15094:21:7"}],"functionName":{"name":"or","nativeSrc":"15065:2:7","nodeType":"YulIdentifier","src":"15065:2:7"},"nativeSrc":"15065:51:7","nodeType":"YulFunctionCall","src":"15065:51:7"}],"functionName":{"name":"iszero","nativeSrc":"15058:6:7","nodeType":"YulIdentifier","src":"15058:6:7"},"nativeSrc":"15058:59:7","nodeType":"YulFunctionCall","src":"15058:59:7"},"nativeSrc":"15055:275:7","nodeType":"YulIf","src":"15055:275:7"},{"nativeSrc":"15348:29:7","nodeType":"YulVariableDeclaration","src":"15348:29:7","value":{"arguments":[{"kind":"number","nativeSrc":"15361:3:7","nodeType":"YulLiteral","src":"15361:3:7","type":"","value":"224"},{"kind":"number","nativeSrc":"15366:10:7","nodeType":"YulLiteral","src":"15366:10:7","type":"","value":"0x1626ba7e"}],"functionName":{"name":"shl","nativeSrc":"15357:3:7","nodeType":"YulIdentifier","src":"15357:3:7"},"nativeSrc":"15357:20:7","nodeType":"YulFunctionCall","src":"15357:20:7"},"variables":[{"name":"f","nativeSrc":"15352:1:7","nodeType":"YulTypedName","src":"15352:1:7","type":""}]},{"expression":{"arguments":[{"name":"m","nativeSrc":"15401:1:7","nodeType":"YulIdentifier","src":"15401:1:7"},{"name":"f","nativeSrc":"15404:1:7","nodeType":"YulIdentifier","src":"15404:1:7"}],"functionName":{"name":"mstore","nativeSrc":"15394:6:7","nodeType":"YulIdentifier","src":"15394:6:7"},"nativeSrc":"15394:12:7","nodeType":"YulFunctionCall","src":"15394:12:7"},"nativeSrc":"15394:12:7","nodeType":"YulExpressionStatement","src":"15394:12:7"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"15493:1:7","nodeType":"YulIdentifier","src":"15493:1:7"},{"kind":"number","nativeSrc":"15496:4:7","nodeType":"YulLiteral","src":"15496:4:7","type":"","value":"0x04"}],"functionName":{"name":"add","nativeSrc":"15489:3:7","nodeType":"YulIdentifier","src":"15489:3:7"},"nativeSrc":"15489:12:7","nodeType":"YulFunctionCall","src":"15489:12:7"},{"name":"hash","nativeSrc":"15503:4:7","nodeType":"YulIdentifier","src":"15503:4:7"}],"functionName":{"name":"mstore","nativeSrc":"15482:6:7","nodeType":"YulIdentifier","src":"15482:6:7"},"nativeSrc":"15482:26:7","nodeType":"YulFunctionCall","src":"15482:26:7"},"nativeSrc":"15482:26:7","nodeType":"YulExpressionStatement","src":"15482:26:7"},{"nativeSrc":"15525:21:7","nodeType":"YulVariableDeclaration","src":"15525:21:7","value":{"arguments":[{"name":"m","nativeSrc":"15538:1:7","nodeType":"YulIdentifier","src":"15538:1:7"},{"kind":"number","nativeSrc":"15541:4:7","nodeType":"YulLiteral","src":"15541:4:7","type":"","value":"0x24"}],"functionName":{"name":"add","nativeSrc":"15534:3:7","nodeType":"YulIdentifier","src":"15534:3:7"},"nativeSrc":"15534:12:7","nodeType":"YulFunctionCall","src":"15534:12:7"},"variables":[{"name":"d","nativeSrc":"15529:1:7","nodeType":"YulTypedName","src":"15529:1:7","type":""}]},{"expression":{"arguments":[{"name":"d","nativeSrc":"15570:1:7","nodeType":"YulIdentifier","src":"15570:1:7"},{"kind":"number","nativeSrc":"15573:4:7","nodeType":"YulLiteral","src":"15573:4:7","type":"","value":"0x40"}],"functionName":{"name":"mstore","nativeSrc":"15563:6:7","nodeType":"YulIdentifier","src":"15563:6:7"},"nativeSrc":"15563:15:7","nodeType":"YulFunctionCall","src":"15563:15:7"},"nativeSrc":"15563:15:7","nodeType":"YulExpressionStatement","src":"15563:15:7"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"15656:1:7","nodeType":"YulIdentifier","src":"15656:1:7"},{"kind":"number","nativeSrc":"15659:4:7","nodeType":"YulLiteral","src":"15659:4:7","type":"","value":"0x44"}],"functionName":{"name":"add","nativeSrc":"15652:3:7","nodeType":"YulIdentifier","src":"15652:3:7"},"nativeSrc":"15652:12:7","nodeType":"YulFunctionCall","src":"15652:12:7"},{"kind":"number","nativeSrc":"15666:2:7","nodeType":"YulLiteral","src":"15666:2:7","type":"","value":"65"}],"functionName":{"name":"mstore","nativeSrc":"15645:6:7","nodeType":"YulIdentifier","src":"15645:6:7"},"nativeSrc":"15645:24:7","nodeType":"YulFunctionCall","src":"15645:24:7"},"nativeSrc":"15645:24:7","nodeType":"YulExpressionStatement","src":"15645:24:7"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"15725:1:7","nodeType":"YulIdentifier","src":"15725:1:7"},{"kind":"number","nativeSrc":"15728:4:7","nodeType":"YulLiteral","src":"15728:4:7","type":"","value":"0x64"}],"functionName":{"name":"add","nativeSrc":"15721:3:7","nodeType":"YulIdentifier","src":"15721:3:7"},"nativeSrc":"15721:12:7","nodeType":"YulFunctionCall","src":"15721:12:7"},{"name":"r","nativeSrc":"15735:1:7","nodeType":"YulIdentifier","src":"15735:1:7"}],"functionName":{"name":"mstore","nativeSrc":"15714:6:7","nodeType":"YulIdentifier","src":"15714:6:7"},"nativeSrc":"15714:23:7","nodeType":"YulFunctionCall","src":"15714:23:7"},"nativeSrc":"15714:23:7","nodeType":"YulExpressionStatement","src":"15714:23:7"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"15773:1:7","nodeType":"YulIdentifier","src":"15773:1:7"},{"kind":"number","nativeSrc":"15776:4:7","nodeType":"YulLiteral","src":"15776:4:7","type":"","value":"0x84"}],"functionName":{"name":"add","nativeSrc":"15769:3:7","nodeType":"YulIdentifier","src":"15769:3:7"},"nativeSrc":"15769:12:7","nodeType":"YulFunctionCall","src":"15769:12:7"},{"name":"s","nativeSrc":"15783:1:7","nodeType":"YulIdentifier","src":"15783:1:7"}],"functionName":{"name":"mstore","nativeSrc":"15762:6:7","nodeType":"YulIdentifier","src":"15762:6:7"},"nativeSrc":"15762:23:7","nodeType":"YulFunctionCall","src":"15762:23:7"},"nativeSrc":"15762:23:7","nodeType":"YulExpressionStatement","src":"15762:23:7"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"15822:1:7","nodeType":"YulIdentifier","src":"15822:1:7"},{"kind":"number","nativeSrc":"15825:4:7","nodeType":"YulLiteral","src":"15825:4:7","type":"","value":"0xa4"}],"functionName":{"name":"add","nativeSrc":"15818:3:7","nodeType":"YulIdentifier","src":"15818:3:7"},"nativeSrc":"15818:12:7","nodeType":"YulFunctionCall","src":"15818:12:7"},{"name":"v","nativeSrc":"15832:1:7","nodeType":"YulIdentifier","src":"15832:1:7"}],"functionName":{"name":"mstore8","nativeSrc":"15810:7:7","nodeType":"YulIdentifier","src":"15810:7:7"},"nativeSrc":"15810:24:7","nodeType":"YulFunctionCall","src":"15810:24:7"},"nativeSrc":"15810:24:7","nodeType":"YulExpressionStatement","src":"15810:24:7"},{"nativeSrc":"15906:774:7","nodeType":"YulAssignment","src":"15906:774:7","value":{"arguments":[{"arguments":[{"arguments":[{"name":"d","nativeSrc":"16045:1:7","nodeType":"YulIdentifier","src":"16045:1:7"}],"functionName":{"name":"mload","nativeSrc":"16039:5:7","nodeType":"YulIdentifier","src":"16039:5:7"},"nativeSrc":"16039:8:7","nodeType":"YulFunctionCall","src":"16039:8:7"},{"name":"f","nativeSrc":"16049:1:7","nodeType":"YulIdentifier","src":"16049:1:7"}],"functionName":{"name":"eq","nativeSrc":"16036:2:7","nodeType":"YulIdentifier","src":"16036:2:7"},"nativeSrc":"16036:15:7","nodeType":"YulFunctionCall","src":"16036:15:7"},{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"16321:3:7","nodeType":"YulIdentifier","src":"16321:3:7"},"nativeSrc":"16321:5:7","nodeType":"YulFunctionCall","src":"16321:5:7"},{"name":"signer","nativeSrc":"16370:6:7","nodeType":"YulIdentifier","src":"16370:6:7"},{"name":"m","nativeSrc":"16427:1:7","nodeType":"YulIdentifier","src":"16427:1:7"},{"kind":"number","nativeSrc":"16487:4:7","nodeType":"YulLiteral","src":"16487:4:7","type":"","value":"0xa5"},{"name":"d","nativeSrc":"16550:1:7","nodeType":"YulIdentifier","src":"16550:1:7"},{"kind":"number","nativeSrc":"16602:4:7","nodeType":"YulLiteral","src":"16602:4:7","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"16285:10:7","nodeType":"YulIdentifier","src":"16285:10:7"},"nativeSrc":"16285:377:7","nodeType":"YulFunctionCall","src":"16285:377:7"}],"functionName":{"name":"and","nativeSrc":"15917:3:7","nodeType":"YulIdentifier","src":"15917:3:7"},"nativeSrc":"15917:763:7","nodeType":"YulFunctionCall","src":"15917:763:7"},"variableNames":[{"name":"isValid","nativeSrc":"15906:7:7","nodeType":"YulIdentifier","src":"15906:7:7"}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16704:4:7","nodeType":"YulLiteral","src":"16704:4:7","type":"","value":"0x60"},{"kind":"number","nativeSrc":"16710:1:7","nodeType":"YulLiteral","src":"16710:1:7","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"16697:6:7","nodeType":"YulIdentifier","src":"16697:6:7"},"nativeSrc":"16697:15:7","nodeType":"YulFunctionCall","src":"16697:15:7"},"nativeSrc":"16697:15:7","nodeType":"YulExpressionStatement","src":"16697:15:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"16762:4:7","nodeType":"YulLiteral","src":"16762:4:7","type":"","value":"0x40"},{"name":"m","nativeSrc":"16768:1:7","nodeType":"YulIdentifier","src":"16768:1:7"}],"functionName":{"name":"mstore","nativeSrc":"16755:6:7","nodeType":"YulIdentifier","src":"16755:6:7"},"nativeSrc":"16755:15:7","nodeType":"YulFunctionCall","src":"16755:15:7"},"nativeSrc":"16755:15:7","nodeType":"YulExpressionStatement","src":"16755:15:7"},{"nativeSrc":"16823:5:7","nodeType":"YulBreak","src":"16823:5:7"}]},"condition":{"name":"signer","nativeSrc":"14333:6:7","nodeType":"YulIdentifier","src":"14333:6:7"},"nativeSrc":"14290:2552:7","nodeType":"YulForLoop","post":{"nativeSrc":"14340:2:7","nodeType":"YulBlock","src":"14340:2:7","statements":[]},"pre":{"nativeSrc":"14294:38:7","nodeType":"YulBlock","src":"14294:38:7","statements":[{"nativeSrc":"14296:34:7","nodeType":"YulAssignment","src":"14296:34:7","value":{"arguments":[{"kind":"number","nativeSrc":"14310:2:7","nodeType":"YulLiteral","src":"14310:2:7","type":"","value":"96"},{"arguments":[{"kind":"number","nativeSrc":"14318:2:7","nodeType":"YulLiteral","src":"14318:2:7","type":"","value":"96"},{"name":"signer","nativeSrc":"14322:6:7","nodeType":"YulIdentifier","src":"14322:6:7"}],"functionName":{"name":"shl","nativeSrc":"14314:3:7","nodeType":"YulIdentifier","src":"14314:3:7"},"nativeSrc":"14314:15:7","nodeType":"YulFunctionCall","src":"14314:15:7"}],"functionName":{"name":"shr","nativeSrc":"14306:3:7","nodeType":"YulIdentifier","src":"14306:3:7"},"nativeSrc":"14306:24:7","nodeType":"YulFunctionCall","src":"14306:24:7"},"variableNames":[{"name":"signer","nativeSrc":"14296:6:7","nodeType":"YulIdentifier","src":"14296:6:7"}]}]},"src":"14290:2552:7"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":2993,"isOffset":false,"isSlot":false,"src":"14411:4:7","valueSize":1},{"declaration":2993,"isOffset":false,"isSlot":false,"src":"15503:4:7","valueSize":1},{"declaration":3002,"isOffset":false,"isSlot":false,"src":"15140:7:7","valueSize":1},{"declaration":3002,"isOffset":false,"isSlot":false,"src":"15906:7:7","valueSize":1},{"declaration":2997,"isOffset":false,"isSlot":false,"src":"14497:1:7","valueSize":1},{"declaration":2997,"isOffset":false,"isSlot":false,"src":"15735:1:7","valueSize":1},{"declaration":2999,"isOffset":false,"isSlot":false,"src":"14537:1:7","valueSize":1},{"declaration":2999,"isOffset":false,"isSlot":false,"src":"15783:1:7","valueSize":1},{"declaration":2991,"isOffset":false,"isSlot":false,"src":"14296:6:7","valueSize":1},{"declaration":2991,"isOffset":false,"isSlot":false,"src":"14322:6:7","valueSize":1},{"declaration":2991,"isOffset":false,"isSlot":false,"src":"14333:6:7","valueSize":1},{"declaration":2991,"isOffset":false,"isSlot":false,"src":"15098:6:7","valueSize":1},{"declaration":2991,"isOffset":false,"isSlot":false,"src":"16370:6:7","valueSize":1},{"declaration":2995,"isOffset":false,"isSlot":false,"src":"14450:1:7","valueSize":1},{"declaration":2995,"isOffset":false,"isSlot":false,"src":"15832:1:7","valueSize":1}],"id":3004,"nodeType":"InlineAssembly","src":"14192:2660:7"}]},"documentation":{"id":2989,"nodeType":"StructuredDocumentation","src":"13741:238:7","text":"@dev Returns whether the signature (`v`, `r`, `s`) is valid for `signer` and `hash`.\n If `signer` is a smart contract, the signature is validated with ERC1271.\n Otherwise, the signature is validated with `ECDSA.recover`."},"id":3006,"implemented":true,"kind":"function","modifiers":[],"name":"isValidSignatureNow","nameLocation":"13993:19:7","nodeType":"FunctionDefinition","parameters":{"id":3000,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2991,"mutability":"mutable","name":"signer","nameLocation":"14021:6:7","nodeType":"VariableDeclaration","scope":3006,"src":"14013:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2990,"name":"address","nodeType":"ElementaryTypeName","src":"14013:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2993,"mutability":"mutable","name":"hash","nameLocation":"14037:4:7","nodeType":"VariableDeclaration","scope":3006,"src":"14029:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2992,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14029:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2995,"mutability":"mutable","name":"v","nameLocation":"14049:1:7","nodeType":"VariableDeclaration","scope":3006,"src":"14043:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2994,"name":"uint8","nodeType":"ElementaryTypeName","src":"14043:5:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":2997,"mutability":"mutable","name":"r","nameLocation":"14060:1:7","nodeType":"VariableDeclaration","scope":3006,"src":"14052:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2996,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14052:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2999,"mutability":"mutable","name":"s","nameLocation":"14071:1:7","nodeType":"VariableDeclaration","scope":3006,"src":"14063:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2998,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14063:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"14012:61:7"},"returnParameters":{"id":3003,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3002,"mutability":"mutable","name":"isValid","nameLocation":"14126:7:7","nodeType":"VariableDeclaration","scope":3006,"src":"14121:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3001,"name":"bool","nodeType":"ElementaryTypeName","src":"14121:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14120:14:7"},"scope":3097,"src":"13984:2874:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3019,"nodeType":"Block","src":"17397:1346:7","statements":[{"AST":{"nativeSrc":"17459:1278:7","nodeType":"YulBlock","src":"17459:1278:7","statements":[{"nativeSrc":"17473:20:7","nodeType":"YulVariableDeclaration","src":"17473:20:7","value":{"arguments":[{"kind":"number","nativeSrc":"17488:4:7","nodeType":"YulLiteral","src":"17488:4:7","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"17482:5:7","nodeType":"YulIdentifier","src":"17482:5:7"},"nativeSrc":"17482:11:7","nodeType":"YulFunctionCall","src":"17482:11:7"},"variables":[{"name":"m","nativeSrc":"17477:1:7","nodeType":"YulTypedName","src":"17477:1:7","type":""}]},{"nativeSrc":"17506:29:7","nodeType":"YulVariableDeclaration","src":"17506:29:7","value":{"arguments":[{"kind":"number","nativeSrc":"17519:3:7","nodeType":"YulLiteral","src":"17519:3:7","type":"","value":"224"},{"kind":"number","nativeSrc":"17524:10:7","nodeType":"YulLiteral","src":"17524:10:7","type":"","value":"0x1626ba7e"}],"functionName":{"name":"shl","nativeSrc":"17515:3:7","nodeType":"YulIdentifier","src":"17515:3:7"},"nativeSrc":"17515:20:7","nodeType":"YulFunctionCall","src":"17515:20:7"},"variables":[{"name":"f","nativeSrc":"17510:1:7","nodeType":"YulTypedName","src":"17510:1:7","type":""}]},{"expression":{"arguments":[{"name":"m","nativeSrc":"17555:1:7","nodeType":"YulIdentifier","src":"17555:1:7"},{"name":"f","nativeSrc":"17558:1:7","nodeType":"YulIdentifier","src":"17558:1:7"}],"functionName":{"name":"mstore","nativeSrc":"17548:6:7","nodeType":"YulIdentifier","src":"17548:6:7"},"nativeSrc":"17548:12:7","nodeType":"YulFunctionCall","src":"17548:12:7"},"nativeSrc":"17548:12:7","nodeType":"YulExpressionStatement","src":"17548:12:7"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"17643:1:7","nodeType":"YulIdentifier","src":"17643:1:7"},{"kind":"number","nativeSrc":"17646:4:7","nodeType":"YulLiteral","src":"17646:4:7","type":"","value":"0x04"}],"functionName":{"name":"add","nativeSrc":"17639:3:7","nodeType":"YulIdentifier","src":"17639:3:7"},"nativeSrc":"17639:12:7","nodeType":"YulFunctionCall","src":"17639:12:7"},{"name":"hash","nativeSrc":"17653:4:7","nodeType":"YulIdentifier","src":"17653:4:7"}],"functionName":{"name":"mstore","nativeSrc":"17632:6:7","nodeType":"YulIdentifier","src":"17632:6:7"},"nativeSrc":"17632:26:7","nodeType":"YulFunctionCall","src":"17632:26:7"},"nativeSrc":"17632:26:7","nodeType":"YulExpressionStatement","src":"17632:26:7"},{"nativeSrc":"17671:21:7","nodeType":"YulVariableDeclaration","src":"17671:21:7","value":{"arguments":[{"name":"m","nativeSrc":"17684:1:7","nodeType":"YulIdentifier","src":"17684:1:7"},{"kind":"number","nativeSrc":"17687:4:7","nodeType":"YulLiteral","src":"17687:4:7","type":"","value":"0x24"}],"functionName":{"name":"add","nativeSrc":"17680:3:7","nodeType":"YulIdentifier","src":"17680:3:7"},"nativeSrc":"17680:12:7","nodeType":"YulFunctionCall","src":"17680:12:7"},"variables":[{"name":"d","nativeSrc":"17675:1:7","nodeType":"YulTypedName","src":"17675:1:7","type":""}]},{"expression":{"arguments":[{"name":"d","nativeSrc":"17712:1:7","nodeType":"YulIdentifier","src":"17712:1:7"},{"kind":"number","nativeSrc":"17715:4:7","nodeType":"YulLiteral","src":"17715:4:7","type":"","value":"0x40"}],"functionName":{"name":"mstore","nativeSrc":"17705:6:7","nodeType":"YulIdentifier","src":"17705:6:7"},"nativeSrc":"17705:15:7","nodeType":"YulFunctionCall","src":"17705:15:7"},"nativeSrc":"17705:15:7","nodeType":"YulExpressionStatement","src":"17705:15:7"},{"nativeSrc":"17825:36:7","nodeType":"YulVariableDeclaration","src":"17825:36:7","value":{"arguments":[{"kind":"number","nativeSrc":"17838:4:7","nodeType":"YulLiteral","src":"17838:4:7","type":"","value":"0x20"},{"arguments":[{"name":"signature","nativeSrc":"17850:9:7","nodeType":"YulIdentifier","src":"17850:9:7"}],"functionName":{"name":"mload","nativeSrc":"17844:5:7","nodeType":"YulIdentifier","src":"17844:5:7"},"nativeSrc":"17844:16:7","nodeType":"YulFunctionCall","src":"17844:16:7"}],"functionName":{"name":"add","nativeSrc":"17834:3:7","nodeType":"YulIdentifier","src":"17834:3:7"},"nativeSrc":"17834:27:7","nodeType":"YulFunctionCall","src":"17834:27:7"},"variables":[{"name":"n","nativeSrc":"17829:1:7","nodeType":"YulTypedName","src":"17829:1:7","type":""}]},{"expression":{"arguments":[{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"17889:3:7","nodeType":"YulIdentifier","src":"17889:3:7"},"nativeSrc":"17889:5:7","nodeType":"YulFunctionCall","src":"17889:5:7"},{"kind":"number","nativeSrc":"17896:1:7","nodeType":"YulLiteral","src":"17896:1:7","type":"","value":"4"},{"name":"signature","nativeSrc":"17899:9:7","nodeType":"YulIdentifier","src":"17899:9:7"},{"name":"n","nativeSrc":"17910:1:7","nodeType":"YulIdentifier","src":"17910:1:7"},{"arguments":[{"name":"m","nativeSrc":"17917:1:7","nodeType":"YulIdentifier","src":"17917:1:7"},{"kind":"number","nativeSrc":"17920:4:7","nodeType":"YulLiteral","src":"17920:4:7","type":"","value":"0x44"}],"functionName":{"name":"add","nativeSrc":"17913:3:7","nodeType":"YulIdentifier","src":"17913:3:7"},"nativeSrc":"17913:12:7","nodeType":"YulFunctionCall","src":"17913:12:7"},{"name":"n","nativeSrc":"17927:1:7","nodeType":"YulIdentifier","src":"17927:1:7"}],"functionName":{"name":"staticcall","nativeSrc":"17878:10:7","nodeType":"YulIdentifier","src":"17878:10:7"},"nativeSrc":"17878:51:7","nodeType":"YulFunctionCall","src":"17878:51:7"}],"functionName":{"name":"pop","nativeSrc":"17874:3:7","nodeType":"YulIdentifier","src":"17874:3:7"},"nativeSrc":"17874:56:7","nodeType":"YulFunctionCall","src":"17874:56:7"},"nativeSrc":"17874:56:7","nodeType":"YulExpressionStatement","src":"17874:56:7"},{"nativeSrc":"17986:741:7","nodeType":"YulAssignment","src":"17986:741:7","value":{"arguments":[{"arguments":[{"arguments":[{"name":"d","nativeSrc":"18117:1:7","nodeType":"YulIdentifier","src":"18117:1:7"}],"functionName":{"name":"mload","nativeSrc":"18111:5:7","nodeType":"YulIdentifier","src":"18111:5:7"},"nativeSrc":"18111:8:7","nodeType":"YulFunctionCall","src":"18111:8:7"},{"name":"f","nativeSrc":"18121:1:7","nodeType":"YulIdentifier","src":"18121:1:7"}],"functionName":{"name":"eq","nativeSrc":"18108:2:7","nodeType":"YulIdentifier","src":"18108:2:7"},"nativeSrc":"18108:15:7","nodeType":"YulFunctionCall","src":"18108:15:7"},{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"18373:3:7","nodeType":"YulIdentifier","src":"18373:3:7"},"nativeSrc":"18373:5:7","nodeType":"YulFunctionCall","src":"18373:5:7"},{"name":"signer","nativeSrc":"18418:6:7","nodeType":"YulIdentifier","src":"18418:6:7"},{"name":"m","nativeSrc":"18471:1:7","nodeType":"YulIdentifier","src":"18471:1:7"},{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"18531:14:7","nodeType":"YulIdentifier","src":"18531:14:7"},"nativeSrc":"18531:16:7","nodeType":"YulFunctionCall","src":"18531:16:7"},{"kind":"number","nativeSrc":"18549:4:7","nodeType":"YulLiteral","src":"18549:4:7","type":"","value":"0x44"}],"functionName":{"name":"add","nativeSrc":"18527:3:7","nodeType":"YulIdentifier","src":"18527:3:7"},"nativeSrc":"18527:27:7","nodeType":"YulFunctionCall","src":"18527:27:7"},{"name":"d","nativeSrc":"18609:1:7","nodeType":"YulIdentifier","src":"18609:1:7"},{"kind":"number","nativeSrc":"18657:4:7","nodeType":"YulLiteral","src":"18657:4:7","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"18341:10:7","nodeType":"YulIdentifier","src":"18341:10:7"},"nativeSrc":"18341:372:7","nodeType":"YulFunctionCall","src":"18341:372:7"}],"functionName":{"name":"and","nativeSrc":"17997:3:7","nodeType":"YulIdentifier","src":"17997:3:7"},"nativeSrc":"17997:730:7","nodeType":"YulFunctionCall","src":"17997:730:7"},"variableNames":[{"name":"isValid","nativeSrc":"17986:7:7","nodeType":"YulIdentifier","src":"17986:7:7"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":3011,"isOffset":false,"isSlot":false,"src":"17653:4:7","valueSize":1},{"declaration":3016,"isOffset":false,"isSlot":false,"src":"17986:7:7","valueSize":1},{"declaration":3013,"isOffset":false,"isSlot":false,"src":"17850:9:7","valueSize":1},{"declaration":3013,"isOffset":false,"isSlot":false,"src":"17899:9:7","valueSize":1},{"declaration":3009,"isOffset":false,"isSlot":false,"src":"18418:6:7","valueSize":1}],"id":3018,"nodeType":"InlineAssembly","src":"17450:1287:7"}]},"documentation":{"id":3007,"nodeType":"StructuredDocumentation","src":"17147:90:7","text":"@dev Returns whether `signature` is valid for `hash` for an ERC1271 `signer` contract."},"id":3020,"implemented":true,"kind":"function","modifiers":[],"name":"isValidERC1271SignatureNow","nameLocation":"17251:26:7","nodeType":"FunctionDefinition","parameters":{"id":3014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3009,"mutability":"mutable","name":"signer","nameLocation":"17286:6:7","nodeType":"VariableDeclaration","scope":3020,"src":"17278:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3008,"name":"address","nodeType":"ElementaryTypeName","src":"17278:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3011,"mutability":"mutable","name":"hash","nameLocation":"17302:4:7","nodeType":"VariableDeclaration","scope":3020,"src":"17294:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3010,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17294:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3013,"mutability":"mutable","name":"signature","nameLocation":"17321:9:7","nodeType":"VariableDeclaration","scope":3020,"src":"17308:22:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3012,"name":"bytes","nodeType":"ElementaryTypeName","src":"17308:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"17277:54:7"},"returnParameters":{"id":3017,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3016,"mutability":"mutable","name":"isValid","nameLocation":"17384:7:7","nodeType":"VariableDeclaration","scope":3020,"src":"17379:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3015,"name":"bool","nodeType":"ElementaryTypeName","src":"17379:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"17378:14:7"},"scope":3097,"src":"17242:1501:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3033,"nodeType":"Block","src":"19011:1354:7","statements":[{"AST":{"nativeSrc":"19073:1286:7","nodeType":"YulBlock","src":"19073:1286:7","statements":[{"nativeSrc":"19087:20:7","nodeType":"YulVariableDeclaration","src":"19087:20:7","value":{"arguments":[{"kind":"number","nativeSrc":"19102:4:7","nodeType":"YulLiteral","src":"19102:4:7","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"19096:5:7","nodeType":"YulIdentifier","src":"19096:5:7"},"nativeSrc":"19096:11:7","nodeType":"YulFunctionCall","src":"19096:11:7"},"variables":[{"name":"m","nativeSrc":"19091:1:7","nodeType":"YulTypedName","src":"19091:1:7","type":""}]},{"nativeSrc":"19120:29:7","nodeType":"YulVariableDeclaration","src":"19120:29:7","value":{"arguments":[{"kind":"number","nativeSrc":"19133:3:7","nodeType":"YulLiteral","src":"19133:3:7","type":"","value":"224"},{"kind":"number","nativeSrc":"19138:10:7","nodeType":"YulLiteral","src":"19138:10:7","type":"","value":"0x1626ba7e"}],"functionName":{"name":"shl","nativeSrc":"19129:3:7","nodeType":"YulIdentifier","src":"19129:3:7"},"nativeSrc":"19129:20:7","nodeType":"YulFunctionCall","src":"19129:20:7"},"variables":[{"name":"f","nativeSrc":"19124:1:7","nodeType":"YulTypedName","src":"19124:1:7","type":""}]},{"expression":{"arguments":[{"name":"m","nativeSrc":"19169:1:7","nodeType":"YulIdentifier","src":"19169:1:7"},{"name":"f","nativeSrc":"19172:1:7","nodeType":"YulIdentifier","src":"19172:1:7"}],"functionName":{"name":"mstore","nativeSrc":"19162:6:7","nodeType":"YulIdentifier","src":"19162:6:7"},"nativeSrc":"19162:12:7","nodeType":"YulFunctionCall","src":"19162:12:7"},"nativeSrc":"19162:12:7","nodeType":"YulExpressionStatement","src":"19162:12:7"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"19257:1:7","nodeType":"YulIdentifier","src":"19257:1:7"},{"kind":"number","nativeSrc":"19260:4:7","nodeType":"YulLiteral","src":"19260:4:7","type":"","value":"0x04"}],"functionName":{"name":"add","nativeSrc":"19253:3:7","nodeType":"YulIdentifier","src":"19253:3:7"},"nativeSrc":"19253:12:7","nodeType":"YulFunctionCall","src":"19253:12:7"},{"name":"hash","nativeSrc":"19267:4:7","nodeType":"YulIdentifier","src":"19267:4:7"}],"functionName":{"name":"mstore","nativeSrc":"19246:6:7","nodeType":"YulIdentifier","src":"19246:6:7"},"nativeSrc":"19246:26:7","nodeType":"YulFunctionCall","src":"19246:26:7"},"nativeSrc":"19246:26:7","nodeType":"YulExpressionStatement","src":"19246:26:7"},{"nativeSrc":"19285:21:7","nodeType":"YulVariableDeclaration","src":"19285:21:7","value":{"arguments":[{"name":"m","nativeSrc":"19298:1:7","nodeType":"YulIdentifier","src":"19298:1:7"},{"kind":"number","nativeSrc":"19301:4:7","nodeType":"YulLiteral","src":"19301:4:7","type":"","value":"0x24"}],"functionName":{"name":"add","nativeSrc":"19294:3:7","nodeType":"YulIdentifier","src":"19294:3:7"},"nativeSrc":"19294:12:7","nodeType":"YulFunctionCall","src":"19294:12:7"},"variables":[{"name":"d","nativeSrc":"19289:1:7","nodeType":"YulTypedName","src":"19289:1:7","type":""}]},{"expression":{"arguments":[{"name":"d","nativeSrc":"19326:1:7","nodeType":"YulIdentifier","src":"19326:1:7"},{"kind":"number","nativeSrc":"19329:4:7","nodeType":"YulLiteral","src":"19329:4:7","type":"","value":"0x40"}],"functionName":{"name":"mstore","nativeSrc":"19319:6:7","nodeType":"YulIdentifier","src":"19319:6:7"},"nativeSrc":"19319:15:7","nodeType":"YulFunctionCall","src":"19319:15:7"},"nativeSrc":"19319:15:7","nodeType":"YulExpressionStatement","src":"19319:15:7"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"19408:1:7","nodeType":"YulIdentifier","src":"19408:1:7"},{"kind":"number","nativeSrc":"19411:4:7","nodeType":"YulLiteral","src":"19411:4:7","type":"","value":"0x44"}],"functionName":{"name":"add","nativeSrc":"19404:3:7","nodeType":"YulIdentifier","src":"19404:3:7"},"nativeSrc":"19404:12:7","nodeType":"YulFunctionCall","src":"19404:12:7"},{"name":"signature.length","nativeSrc":"19418:16:7","nodeType":"YulIdentifier","src":"19418:16:7"}],"functionName":{"name":"mstore","nativeSrc":"19397:6:7","nodeType":"YulIdentifier","src":"19397:6:7"},"nativeSrc":"19397:38:7","nodeType":"YulFunctionCall","src":"19397:38:7"},"nativeSrc":"19397:38:7","nodeType":"YulExpressionStatement","src":"19397:38:7"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"19507:1:7","nodeType":"YulIdentifier","src":"19507:1:7"},{"kind":"number","nativeSrc":"19510:4:7","nodeType":"YulLiteral","src":"19510:4:7","type":"","value":"0x64"}],"functionName":{"name":"add","nativeSrc":"19503:3:7","nodeType":"YulIdentifier","src":"19503:3:7"},"nativeSrc":"19503:12:7","nodeType":"YulFunctionCall","src":"19503:12:7"},{"name":"signature.offset","nativeSrc":"19517:16:7","nodeType":"YulIdentifier","src":"19517:16:7"},{"name":"signature.length","nativeSrc":"19535:16:7","nodeType":"YulIdentifier","src":"19535:16:7"}],"functionName":{"name":"calldatacopy","nativeSrc":"19490:12:7","nodeType":"YulIdentifier","src":"19490:12:7"},"nativeSrc":"19490:62:7","nodeType":"YulFunctionCall","src":"19490:62:7"},"nativeSrc":"19490:62:7","nodeType":"YulExpressionStatement","src":"19490:62:7"},{"nativeSrc":"19608:741:7","nodeType":"YulAssignment","src":"19608:741:7","value":{"arguments":[{"arguments":[{"arguments":[{"name":"d","nativeSrc":"19739:1:7","nodeType":"YulIdentifier","src":"19739:1:7"}],"functionName":{"name":"mload","nativeSrc":"19733:5:7","nodeType":"YulIdentifier","src":"19733:5:7"},"nativeSrc":"19733:8:7","nodeType":"YulFunctionCall","src":"19733:8:7"},{"name":"f","nativeSrc":"19743:1:7","nodeType":"YulIdentifier","src":"19743:1:7"}],"functionName":{"name":"eq","nativeSrc":"19730:2:7","nodeType":"YulIdentifier","src":"19730:2:7"},"nativeSrc":"19730:15:7","nodeType":"YulFunctionCall","src":"19730:15:7"},{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"19995:3:7","nodeType":"YulIdentifier","src":"19995:3:7"},"nativeSrc":"19995:5:7","nodeType":"YulFunctionCall","src":"19995:5:7"},{"name":"signer","nativeSrc":"20040:6:7","nodeType":"YulIdentifier","src":"20040:6:7"},{"name":"m","nativeSrc":"20093:1:7","nodeType":"YulIdentifier","src":"20093:1:7"},{"arguments":[{"name":"signature.length","nativeSrc":"20153:16:7","nodeType":"YulIdentifier","src":"20153:16:7"},{"kind":"number","nativeSrc":"20171:4:7","nodeType":"YulLiteral","src":"20171:4:7","type":"","value":"0x64"}],"functionName":{"name":"add","nativeSrc":"20149:3:7","nodeType":"YulIdentifier","src":"20149:3:7"},"nativeSrc":"20149:27:7","nodeType":"YulFunctionCall","src":"20149:27:7"},{"name":"d","nativeSrc":"20231:1:7","nodeType":"YulIdentifier","src":"20231:1:7"},{"kind":"number","nativeSrc":"20279:4:7","nodeType":"YulLiteral","src":"20279:4:7","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"19963:10:7","nodeType":"YulIdentifier","src":"19963:10:7"},"nativeSrc":"19963:372:7","nodeType":"YulFunctionCall","src":"19963:372:7"}],"functionName":{"name":"and","nativeSrc":"19619:3:7","nodeType":"YulIdentifier","src":"19619:3:7"},"nativeSrc":"19619:730:7","nodeType":"YulFunctionCall","src":"19619:730:7"},"variableNames":[{"name":"isValid","nativeSrc":"19608:7:7","nodeType":"YulIdentifier","src":"19608:7:7"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":3025,"isOffset":false,"isSlot":false,"src":"19267:4:7","valueSize":1},{"declaration":3030,"isOffset":false,"isSlot":false,"src":"19608:7:7","valueSize":1},{"declaration":3027,"isOffset":false,"isSlot":false,"src":"19418:16:7","suffix":"length","valueSize":1},{"declaration":3027,"isOffset":false,"isSlot":false,"src":"19535:16:7","suffix":"length","valueSize":1},{"declaration":3027,"isOffset":false,"isSlot":false,"src":"20153:16:7","suffix":"length","valueSize":1},{"declaration":3027,"isOffset":true,"isSlot":false,"src":"19517:16:7","suffix":"offset","valueSize":1},{"declaration":3023,"isOffset":false,"isSlot":false,"src":"20040:6:7","valueSize":1}],"id":3032,"nodeType":"InlineAssembly","src":"19064:1295:7"}]},"documentation":{"id":3021,"nodeType":"StructuredDocumentation","src":"18749:90:7","text":"@dev Returns whether `signature` is valid for `hash` for an ERC1271 `signer` contract."},"id":3034,"implemented":true,"kind":"function","modifiers":[],"name":"isValidERC1271SignatureNowCalldata","nameLocation":"18853:34:7","nodeType":"FunctionDefinition","parameters":{"id":3028,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3023,"mutability":"mutable","name":"signer","nameLocation":"18905:6:7","nodeType":"VariableDeclaration","scope":3034,"src":"18897:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3022,"name":"address","nodeType":"ElementaryTypeName","src":"18897:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3025,"mutability":"mutable","name":"hash","nameLocation":"18929:4:7","nodeType":"VariableDeclaration","scope":3034,"src":"18921:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3024,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18921:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3027,"mutability":"mutable","name":"signature","nameLocation":"18958:9:7","nodeType":"VariableDeclaration","scope":3034,"src":"18943:24:7","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3026,"name":"bytes","nodeType":"ElementaryTypeName","src":"18943:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18887:86:7"},"returnParameters":{"id":3031,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3030,"mutability":"mutable","name":"isValid","nameLocation":"19002:7:7","nodeType":"VariableDeclaration","scope":3034,"src":"18997:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3029,"name":"bool","nodeType":"ElementaryTypeName","src":"18997:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"18996:14:7"},"scope":3097,"src":"18844:1521:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3049,"nodeType":"Block","src":"20642:1398:7","statements":[{"AST":{"nativeSrc":"20704:1330:7","nodeType":"YulBlock","src":"20704:1330:7","statements":[{"nativeSrc":"20718:20:7","nodeType":"YulVariableDeclaration","src":"20718:20:7","value":{"arguments":[{"kind":"number","nativeSrc":"20733:4:7","nodeType":"YulLiteral","src":"20733:4:7","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"20727:5:7","nodeType":"YulIdentifier","src":"20727:5:7"},"nativeSrc":"20727:11:7","nodeType":"YulFunctionCall","src":"20727:11:7"},"variables":[{"name":"m","nativeSrc":"20722:1:7","nodeType":"YulTypedName","src":"20722:1:7","type":""}]},{"nativeSrc":"20751:29:7","nodeType":"YulVariableDeclaration","src":"20751:29:7","value":{"arguments":[{"kind":"number","nativeSrc":"20764:3:7","nodeType":"YulLiteral","src":"20764:3:7","type":"","value":"224"},{"kind":"number","nativeSrc":"20769:10:7","nodeType":"YulLiteral","src":"20769:10:7","type":"","value":"0x1626ba7e"}],"functionName":{"name":"shl","nativeSrc":"20760:3:7","nodeType":"YulIdentifier","src":"20760:3:7"},"nativeSrc":"20760:20:7","nodeType":"YulFunctionCall","src":"20760:20:7"},"variables":[{"name":"f","nativeSrc":"20755:1:7","nodeType":"YulTypedName","src":"20755:1:7","type":""}]},{"expression":{"arguments":[{"name":"m","nativeSrc":"20800:1:7","nodeType":"YulIdentifier","src":"20800:1:7"},{"name":"f","nativeSrc":"20803:1:7","nodeType":"YulIdentifier","src":"20803:1:7"}],"functionName":{"name":"mstore","nativeSrc":"20793:6:7","nodeType":"YulIdentifier","src":"20793:6:7"},"nativeSrc":"20793:12:7","nodeType":"YulFunctionCall","src":"20793:12:7"},"nativeSrc":"20793:12:7","nodeType":"YulExpressionStatement","src":"20793:12:7"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"20888:1:7","nodeType":"YulIdentifier","src":"20888:1:7"},{"kind":"number","nativeSrc":"20891:4:7","nodeType":"YulLiteral","src":"20891:4:7","type":"","value":"0x04"}],"functionName":{"name":"add","nativeSrc":"20884:3:7","nodeType":"YulIdentifier","src":"20884:3:7"},"nativeSrc":"20884:12:7","nodeType":"YulFunctionCall","src":"20884:12:7"},{"name":"hash","nativeSrc":"20898:4:7","nodeType":"YulIdentifier","src":"20898:4:7"}],"functionName":{"name":"mstore","nativeSrc":"20877:6:7","nodeType":"YulIdentifier","src":"20877:6:7"},"nativeSrc":"20877:26:7","nodeType":"YulFunctionCall","src":"20877:26:7"},"nativeSrc":"20877:26:7","nodeType":"YulExpressionStatement","src":"20877:26:7"},{"nativeSrc":"20916:21:7","nodeType":"YulVariableDeclaration","src":"20916:21:7","value":{"arguments":[{"name":"m","nativeSrc":"20929:1:7","nodeType":"YulIdentifier","src":"20929:1:7"},{"kind":"number","nativeSrc":"20932:4:7","nodeType":"YulLiteral","src":"20932:4:7","type":"","value":"0x24"}],"functionName":{"name":"add","nativeSrc":"20925:3:7","nodeType":"YulIdentifier","src":"20925:3:7"},"nativeSrc":"20925:12:7","nodeType":"YulFunctionCall","src":"20925:12:7"},"variables":[{"name":"d","nativeSrc":"20920:1:7","nodeType":"YulTypedName","src":"20920:1:7","type":""}]},{"expression":{"arguments":[{"name":"d","nativeSrc":"20957:1:7","nodeType":"YulIdentifier","src":"20957:1:7"},{"kind":"number","nativeSrc":"20960:4:7","nodeType":"YulLiteral","src":"20960:4:7","type":"","value":"0x40"}],"functionName":{"name":"mstore","nativeSrc":"20950:6:7","nodeType":"YulIdentifier","src":"20950:6:7"},"nativeSrc":"20950:15:7","nodeType":"YulFunctionCall","src":"20950:15:7"},"nativeSrc":"20950:15:7","nodeType":"YulExpressionStatement","src":"20950:15:7"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"21039:1:7","nodeType":"YulIdentifier","src":"21039:1:7"},{"kind":"number","nativeSrc":"21042:4:7","nodeType":"YulLiteral","src":"21042:4:7","type":"","value":"0x44"}],"functionName":{"name":"add","nativeSrc":"21035:3:7","nodeType":"YulIdentifier","src":"21035:3:7"},"nativeSrc":"21035:12:7","nodeType":"YulFunctionCall","src":"21035:12:7"},{"kind":"number","nativeSrc":"21049:2:7","nodeType":"YulLiteral","src":"21049:2:7","type":"","value":"65"}],"functionName":{"name":"mstore","nativeSrc":"21028:6:7","nodeType":"YulIdentifier","src":"21028:6:7"},"nativeSrc":"21028:24:7","nodeType":"YulFunctionCall","src":"21028:24:7"},"nativeSrc":"21028:24:7","nodeType":"YulExpressionStatement","src":"21028:24:7"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"21104:1:7","nodeType":"YulIdentifier","src":"21104:1:7"},{"kind":"number","nativeSrc":"21107:4:7","nodeType":"YulLiteral","src":"21107:4:7","type":"","value":"0x64"}],"functionName":{"name":"add","nativeSrc":"21100:3:7","nodeType":"YulIdentifier","src":"21100:3:7"},"nativeSrc":"21100:12:7","nodeType":"YulFunctionCall","src":"21100:12:7"},{"name":"r","nativeSrc":"21114:1:7","nodeType":"YulIdentifier","src":"21114:1:7"}],"functionName":{"name":"mstore","nativeSrc":"21093:6:7","nodeType":"YulIdentifier","src":"21093:6:7"},"nativeSrc":"21093:23:7","nodeType":"YulFunctionCall","src":"21093:23:7"},"nativeSrc":"21093:23:7","nodeType":"YulExpressionStatement","src":"21093:23:7"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"21148:1:7","nodeType":"YulIdentifier","src":"21148:1:7"},{"kind":"number","nativeSrc":"21151:4:7","nodeType":"YulLiteral","src":"21151:4:7","type":"","value":"0x84"}],"functionName":{"name":"add","nativeSrc":"21144:3:7","nodeType":"YulIdentifier","src":"21144:3:7"},"nativeSrc":"21144:12:7","nodeType":"YulFunctionCall","src":"21144:12:7"},{"arguments":[{"kind":"number","nativeSrc":"21162:1:7","nodeType":"YulLiteral","src":"21162:1:7","type":"","value":"1"},{"arguments":[{"kind":"number","nativeSrc":"21169:1:7","nodeType":"YulLiteral","src":"21169:1:7","type":"","value":"1"},{"name":"vs","nativeSrc":"21172:2:7","nodeType":"YulIdentifier","src":"21172:2:7"}],"functionName":{"name":"shl","nativeSrc":"21165:3:7","nodeType":"YulIdentifier","src":"21165:3:7"},"nativeSrc":"21165:10:7","nodeType":"YulFunctionCall","src":"21165:10:7"}],"functionName":{"name":"shr","nativeSrc":"21158:3:7","nodeType":"YulIdentifier","src":"21158:3:7"},"nativeSrc":"21158:18:7","nodeType":"YulFunctionCall","src":"21158:18:7"}],"functionName":{"name":"mstore","nativeSrc":"21137:6:7","nodeType":"YulIdentifier","src":"21137:6:7"},"nativeSrc":"21137:40:7","nodeType":"YulFunctionCall","src":"21137:40:7"},"nativeSrc":"21137:40:7","nodeType":"YulExpressionStatement","src":"21137:40:7"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"21210:1:7","nodeType":"YulIdentifier","src":"21210:1:7"},{"kind":"number","nativeSrc":"21213:4:7","nodeType":"YulLiteral","src":"21213:4:7","type":"","value":"0xa4"}],"functionName":{"name":"add","nativeSrc":"21206:3:7","nodeType":"YulIdentifier","src":"21206:3:7"},"nativeSrc":"21206:12:7","nodeType":"YulFunctionCall","src":"21206:12:7"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"21228:3:7","nodeType":"YulLiteral","src":"21228:3:7","type":"","value":"255"},{"name":"vs","nativeSrc":"21233:2:7","nodeType":"YulIdentifier","src":"21233:2:7"}],"functionName":{"name":"shr","nativeSrc":"21224:3:7","nodeType":"YulIdentifier","src":"21224:3:7"},"nativeSrc":"21224:12:7","nodeType":"YulFunctionCall","src":"21224:12:7"},{"kind":"number","nativeSrc":"21238:2:7","nodeType":"YulLiteral","src":"21238:2:7","type":"","value":"27"}],"functionName":{"name":"add","nativeSrc":"21220:3:7","nodeType":"YulIdentifier","src":"21220:3:7"},"nativeSrc":"21220:21:7","nodeType":"YulFunctionCall","src":"21220:21:7"}],"functionName":{"name":"mstore8","nativeSrc":"21198:7:7","nodeType":"YulIdentifier","src":"21198:7:7"},"nativeSrc":"21198:44:7","nodeType":"YulFunctionCall","src":"21198:44:7"},"nativeSrc":"21198:44:7","nodeType":"YulExpressionStatement","src":"21198:44:7"},{"nativeSrc":"21306:718:7","nodeType":"YulAssignment","src":"21306:718:7","value":{"arguments":[{"arguments":[{"arguments":[{"name":"d","nativeSrc":"21437:1:7","nodeType":"YulIdentifier","src":"21437:1:7"}],"functionName":{"name":"mload","nativeSrc":"21431:5:7","nodeType":"YulIdentifier","src":"21431:5:7"},"nativeSrc":"21431:8:7","nodeType":"YulFunctionCall","src":"21431:8:7"},{"name":"f","nativeSrc":"21441:1:7","nodeType":"YulIdentifier","src":"21441:1:7"}],"functionName":{"name":"eq","nativeSrc":"21428:2:7","nodeType":"YulIdentifier","src":"21428:2:7"},"nativeSrc":"21428:15:7","nodeType":"YulFunctionCall","src":"21428:15:7"},{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"21693:3:7","nodeType":"YulIdentifier","src":"21693:3:7"},"nativeSrc":"21693:5:7","nodeType":"YulFunctionCall","src":"21693:5:7"},{"name":"signer","nativeSrc":"21738:6:7","nodeType":"YulIdentifier","src":"21738:6:7"},{"name":"m","nativeSrc":"21791:1:7","nodeType":"YulIdentifier","src":"21791:1:7"},{"kind":"number","nativeSrc":"21847:4:7","nodeType":"YulLiteral","src":"21847:4:7","type":"","value":"0xa5"},{"name":"d","nativeSrc":"21906:1:7","nodeType":"YulIdentifier","src":"21906:1:7"},{"kind":"number","nativeSrc":"21954:4:7","nodeType":"YulLiteral","src":"21954:4:7","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"21661:10:7","nodeType":"YulIdentifier","src":"21661:10:7"},"nativeSrc":"21661:349:7","nodeType":"YulFunctionCall","src":"21661:349:7"}],"functionName":{"name":"and","nativeSrc":"21317:3:7","nodeType":"YulIdentifier","src":"21317:3:7"},"nativeSrc":"21317:707:7","nodeType":"YulFunctionCall","src":"21317:707:7"},"variableNames":[{"name":"isValid","nativeSrc":"21306:7:7","nodeType":"YulIdentifier","src":"21306:7:7"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":3039,"isOffset":false,"isSlot":false,"src":"20898:4:7","valueSize":1},{"declaration":3046,"isOffset":false,"isSlot":false,"src":"21306:7:7","valueSize":1},{"declaration":3041,"isOffset":false,"isSlot":false,"src":"21114:1:7","valueSize":1},{"declaration":3037,"isOffset":false,"isSlot":false,"src":"21738:6:7","valueSize":1},{"declaration":3043,"isOffset":false,"isSlot":false,"src":"21172:2:7","valueSize":1},{"declaration":3043,"isOffset":false,"isSlot":false,"src":"21233:2:7","valueSize":1}],"id":3048,"nodeType":"InlineAssembly","src":"20695:1339:7"}]},"documentation":{"id":3035,"nodeType":"StructuredDocumentation","src":"20371:112:7","text":"@dev Returns whether the signature (`r`, `vs`) is valid for `hash`\n for an ERC1271 `signer` contract."},"id":3050,"implemented":true,"kind":"function","modifiers":[],"name":"isValidERC1271SignatureNow","nameLocation":"20497:26:7","nodeType":"FunctionDefinition","parameters":{"id":3044,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3037,"mutability":"mutable","name":"signer","nameLocation":"20532:6:7","nodeType":"VariableDeclaration","scope":3050,"src":"20524:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3036,"name":"address","nodeType":"ElementaryTypeName","src":"20524:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3039,"mutability":"mutable","name":"hash","nameLocation":"20548:4:7","nodeType":"VariableDeclaration","scope":3050,"src":"20540:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3038,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20540:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3041,"mutability":"mutable","name":"r","nameLocation":"20562:1:7","nodeType":"VariableDeclaration","scope":3050,"src":"20554:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3040,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20554:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3043,"mutability":"mutable","name":"vs","nameLocation":"20573:2:7","nodeType":"VariableDeclaration","scope":3050,"src":"20565:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3042,"name":"bytes32","nodeType":"ElementaryTypeName","src":"20565:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"20523:53:7"},"returnParameters":{"id":3047,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3046,"mutability":"mutable","name":"isValid","nameLocation":"20629:7:7","nodeType":"VariableDeclaration","scope":3050,"src":"20624:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3045,"name":"bool","nodeType":"ElementaryTypeName","src":"20624:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"20623:14:7"},"scope":3097,"src":"20488:1552:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3067,"nodeType":"Block","src":"22329:1361:7","statements":[{"AST":{"nativeSrc":"22391:1293:7","nodeType":"YulBlock","src":"22391:1293:7","statements":[{"nativeSrc":"22405:20:7","nodeType":"YulVariableDeclaration","src":"22405:20:7","value":{"arguments":[{"kind":"number","nativeSrc":"22420:4:7","nodeType":"YulLiteral","src":"22420:4:7","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"22414:5:7","nodeType":"YulIdentifier","src":"22414:5:7"},"nativeSrc":"22414:11:7","nodeType":"YulFunctionCall","src":"22414:11:7"},"variables":[{"name":"m","nativeSrc":"22409:1:7","nodeType":"YulTypedName","src":"22409:1:7","type":""}]},{"nativeSrc":"22438:29:7","nodeType":"YulVariableDeclaration","src":"22438:29:7","value":{"arguments":[{"kind":"number","nativeSrc":"22451:3:7","nodeType":"YulLiteral","src":"22451:3:7","type":"","value":"224"},{"kind":"number","nativeSrc":"22456:10:7","nodeType":"YulLiteral","src":"22456:10:7","type":"","value":"0x1626ba7e"}],"functionName":{"name":"shl","nativeSrc":"22447:3:7","nodeType":"YulIdentifier","src":"22447:3:7"},"nativeSrc":"22447:20:7","nodeType":"YulFunctionCall","src":"22447:20:7"},"variables":[{"name":"f","nativeSrc":"22442:1:7","nodeType":"YulTypedName","src":"22442:1:7","type":""}]},{"expression":{"arguments":[{"name":"m","nativeSrc":"22487:1:7","nodeType":"YulIdentifier","src":"22487:1:7"},{"name":"f","nativeSrc":"22490:1:7","nodeType":"YulIdentifier","src":"22490:1:7"}],"functionName":{"name":"mstore","nativeSrc":"22480:6:7","nodeType":"YulIdentifier","src":"22480:6:7"},"nativeSrc":"22480:12:7","nodeType":"YulFunctionCall","src":"22480:12:7"},"nativeSrc":"22480:12:7","nodeType":"YulExpressionStatement","src":"22480:12:7"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"22575:1:7","nodeType":"YulIdentifier","src":"22575:1:7"},{"kind":"number","nativeSrc":"22578:4:7","nodeType":"YulLiteral","src":"22578:4:7","type":"","value":"0x04"}],"functionName":{"name":"add","nativeSrc":"22571:3:7","nodeType":"YulIdentifier","src":"22571:3:7"},"nativeSrc":"22571:12:7","nodeType":"YulFunctionCall","src":"22571:12:7"},{"name":"hash","nativeSrc":"22585:4:7","nodeType":"YulIdentifier","src":"22585:4:7"}],"functionName":{"name":"mstore","nativeSrc":"22564:6:7","nodeType":"YulIdentifier","src":"22564:6:7"},"nativeSrc":"22564:26:7","nodeType":"YulFunctionCall","src":"22564:26:7"},"nativeSrc":"22564:26:7","nodeType":"YulExpressionStatement","src":"22564:26:7"},{"nativeSrc":"22603:21:7","nodeType":"YulVariableDeclaration","src":"22603:21:7","value":{"arguments":[{"name":"m","nativeSrc":"22616:1:7","nodeType":"YulIdentifier","src":"22616:1:7"},{"kind":"number","nativeSrc":"22619:4:7","nodeType":"YulLiteral","src":"22619:4:7","type":"","value":"0x24"}],"functionName":{"name":"add","nativeSrc":"22612:3:7","nodeType":"YulIdentifier","src":"22612:3:7"},"nativeSrc":"22612:12:7","nodeType":"YulFunctionCall","src":"22612:12:7"},"variables":[{"name":"d","nativeSrc":"22607:1:7","nodeType":"YulTypedName","src":"22607:1:7","type":""}]},{"expression":{"arguments":[{"name":"d","nativeSrc":"22644:1:7","nodeType":"YulIdentifier","src":"22644:1:7"},{"kind":"number","nativeSrc":"22647:4:7","nodeType":"YulLiteral","src":"22647:4:7","type":"","value":"0x40"}],"functionName":{"name":"mstore","nativeSrc":"22637:6:7","nodeType":"YulIdentifier","src":"22637:6:7"},"nativeSrc":"22637:15:7","nodeType":"YulFunctionCall","src":"22637:15:7"},"nativeSrc":"22637:15:7","nodeType":"YulExpressionStatement","src":"22637:15:7"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"22726:1:7","nodeType":"YulIdentifier","src":"22726:1:7"},{"kind":"number","nativeSrc":"22729:4:7","nodeType":"YulLiteral","src":"22729:4:7","type":"","value":"0x44"}],"functionName":{"name":"add","nativeSrc":"22722:3:7","nodeType":"YulIdentifier","src":"22722:3:7"},"nativeSrc":"22722:12:7","nodeType":"YulFunctionCall","src":"22722:12:7"},{"kind":"number","nativeSrc":"22736:2:7","nodeType":"YulLiteral","src":"22736:2:7","type":"","value":"65"}],"functionName":{"name":"mstore","nativeSrc":"22715:6:7","nodeType":"YulIdentifier","src":"22715:6:7"},"nativeSrc":"22715:24:7","nodeType":"YulFunctionCall","src":"22715:24:7"},"nativeSrc":"22715:24:7","nodeType":"YulExpressionStatement","src":"22715:24:7"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"22791:1:7","nodeType":"YulIdentifier","src":"22791:1:7"},{"kind":"number","nativeSrc":"22794:4:7","nodeType":"YulLiteral","src":"22794:4:7","type":"","value":"0x64"}],"functionName":{"name":"add","nativeSrc":"22787:3:7","nodeType":"YulIdentifier","src":"22787:3:7"},"nativeSrc":"22787:12:7","nodeType":"YulFunctionCall","src":"22787:12:7"},{"name":"r","nativeSrc":"22801:1:7","nodeType":"YulIdentifier","src":"22801:1:7"}],"functionName":{"name":"mstore","nativeSrc":"22780:6:7","nodeType":"YulIdentifier","src":"22780:6:7"},"nativeSrc":"22780:23:7","nodeType":"YulFunctionCall","src":"22780:23:7"},"nativeSrc":"22780:23:7","nodeType":"YulExpressionStatement","src":"22780:23:7"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"22835:1:7","nodeType":"YulIdentifier","src":"22835:1:7"},{"kind":"number","nativeSrc":"22838:4:7","nodeType":"YulLiteral","src":"22838:4:7","type":"","value":"0x84"}],"functionName":{"name":"add","nativeSrc":"22831:3:7","nodeType":"YulIdentifier","src":"22831:3:7"},"nativeSrc":"22831:12:7","nodeType":"YulFunctionCall","src":"22831:12:7"},{"name":"s","nativeSrc":"22845:1:7","nodeType":"YulIdentifier","src":"22845:1:7"}],"functionName":{"name":"mstore","nativeSrc":"22824:6:7","nodeType":"YulIdentifier","src":"22824:6:7"},"nativeSrc":"22824:23:7","nodeType":"YulFunctionCall","src":"22824:23:7"},"nativeSrc":"22824:23:7","nodeType":"YulExpressionStatement","src":"22824:23:7"},{"expression":{"arguments":[{"arguments":[{"name":"m","nativeSrc":"22880:1:7","nodeType":"YulIdentifier","src":"22880:1:7"},{"kind":"number","nativeSrc":"22883:4:7","nodeType":"YulLiteral","src":"22883:4:7","type":"","value":"0xa4"}],"functionName":{"name":"add","nativeSrc":"22876:3:7","nodeType":"YulIdentifier","src":"22876:3:7"},"nativeSrc":"22876:12:7","nodeType":"YulFunctionCall","src":"22876:12:7"},{"name":"v","nativeSrc":"22890:1:7","nodeType":"YulIdentifier","src":"22890:1:7"}],"functionName":{"name":"mstore8","nativeSrc":"22868:7:7","nodeType":"YulIdentifier","src":"22868:7:7"},"nativeSrc":"22868:24:7","nodeType":"YulFunctionCall","src":"22868:24:7"},"nativeSrc":"22868:24:7","nodeType":"YulExpressionStatement","src":"22868:24:7"},{"nativeSrc":"22956:718:7","nodeType":"YulAssignment","src":"22956:718:7","value":{"arguments":[{"arguments":[{"arguments":[{"name":"d","nativeSrc":"23087:1:7","nodeType":"YulIdentifier","src":"23087:1:7"}],"functionName":{"name":"mload","nativeSrc":"23081:5:7","nodeType":"YulIdentifier","src":"23081:5:7"},"nativeSrc":"23081:8:7","nodeType":"YulFunctionCall","src":"23081:8:7"},{"name":"f","nativeSrc":"23091:1:7","nodeType":"YulIdentifier","src":"23091:1:7"}],"functionName":{"name":"eq","nativeSrc":"23078:2:7","nodeType":"YulIdentifier","src":"23078:2:7"},"nativeSrc":"23078:15:7","nodeType":"YulFunctionCall","src":"23078:15:7"},{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"23343:3:7","nodeType":"YulIdentifier","src":"23343:3:7"},"nativeSrc":"23343:5:7","nodeType":"YulFunctionCall","src":"23343:5:7"},{"name":"signer","nativeSrc":"23388:6:7","nodeType":"YulIdentifier","src":"23388:6:7"},{"name":"m","nativeSrc":"23441:1:7","nodeType":"YulIdentifier","src":"23441:1:7"},{"kind":"number","nativeSrc":"23497:4:7","nodeType":"YulLiteral","src":"23497:4:7","type":"","value":"0xa5"},{"name":"d","nativeSrc":"23556:1:7","nodeType":"YulIdentifier","src":"23556:1:7"},{"kind":"number","nativeSrc":"23604:4:7","nodeType":"YulLiteral","src":"23604:4:7","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"23311:10:7","nodeType":"YulIdentifier","src":"23311:10:7"},"nativeSrc":"23311:349:7","nodeType":"YulFunctionCall","src":"23311:349:7"}],"functionName":{"name":"and","nativeSrc":"22967:3:7","nodeType":"YulIdentifier","src":"22967:3:7"},"nativeSrc":"22967:707:7","nodeType":"YulFunctionCall","src":"22967:707:7"},"variableNames":[{"name":"isValid","nativeSrc":"22956:7:7","nodeType":"YulIdentifier","src":"22956:7:7"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":3055,"isOffset":false,"isSlot":false,"src":"22585:4:7","valueSize":1},{"declaration":3064,"isOffset":false,"isSlot":false,"src":"22956:7:7","valueSize":1},{"declaration":3059,"isOffset":false,"isSlot":false,"src":"22801:1:7","valueSize":1},{"declaration":3061,"isOffset":false,"isSlot":false,"src":"22845:1:7","valueSize":1},{"declaration":3053,"isOffset":false,"isSlot":false,"src":"23388:6:7","valueSize":1},{"declaration":3057,"isOffset":false,"isSlot":false,"src":"22890:1:7","valueSize":1}],"id":3066,"nodeType":"InlineAssembly","src":"22382:1302:7"}]},"documentation":{"id":3051,"nodeType":"StructuredDocumentation","src":"22046:116:7","text":"@dev Returns whether the signature (`v`, `r`, `s`) is valid for `hash`\n for an ERC1271 `signer` contract."},"id":3068,"implemented":true,"kind":"function","modifiers":[],"name":"isValidERC1271SignatureNow","nameLocation":"22176:26:7","nodeType":"FunctionDefinition","parameters":{"id":3062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3053,"mutability":"mutable","name":"signer","nameLocation":"22211:6:7","nodeType":"VariableDeclaration","scope":3068,"src":"22203:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3052,"name":"address","nodeType":"ElementaryTypeName","src":"22203:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3055,"mutability":"mutable","name":"hash","nameLocation":"22227:4:7","nodeType":"VariableDeclaration","scope":3068,"src":"22219:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3054,"name":"bytes32","nodeType":"ElementaryTypeName","src":"22219:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3057,"mutability":"mutable","name":"v","nameLocation":"22239:1:7","nodeType":"VariableDeclaration","scope":3068,"src":"22233:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3056,"name":"uint8","nodeType":"ElementaryTypeName","src":"22233:5:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3059,"mutability":"mutable","name":"r","nameLocation":"22250:1:7","nodeType":"VariableDeclaration","scope":3068,"src":"22242:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3058,"name":"bytes32","nodeType":"ElementaryTypeName","src":"22242:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3061,"mutability":"mutable","name":"s","nameLocation":"22261:1:7","nodeType":"VariableDeclaration","scope":3068,"src":"22253:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3060,"name":"bytes32","nodeType":"ElementaryTypeName","src":"22253:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"22202:61:7"},"returnParameters":{"id":3065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3064,"mutability":"mutable","name":"isValid","nameLocation":"22316:7:7","nodeType":"VariableDeclaration","scope":3068,"src":"22311:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3063,"name":"bool","nodeType":"ElementaryTypeName","src":"22311:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"22310:14:7"},"scope":3097,"src":"22167:1523:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3077,"nodeType":"Block","src":"24311:324:7","statements":[{"AST":{"nativeSrc":"24373:256:7","nodeType":"YulBlock","src":"24373:256:7","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"24394:4:7","nodeType":"YulLiteral","src":"24394:4:7","type":"","value":"0x20"},{"name":"hash","nativeSrc":"24400:4:7","nodeType":"YulIdentifier","src":"24400:4:7"}],"functionName":{"name":"mstore","nativeSrc":"24387:6:7","nodeType":"YulIdentifier","src":"24387:6:7"},"nativeSrc":"24387:18:7","nodeType":"YulFunctionCall","src":"24387:18:7"},"nativeSrc":"24387:18:7","nodeType":"YulExpressionStatement","src":"24387:18:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"24468:4:7","nodeType":"YulLiteral","src":"24468:4:7","type":"","value":"0x00"},{"hexValue":"0000000019457468657265756d205369676e6564204d6573736167653a0a3332","kind":"string","nativeSrc":"24474:50:7","nodeType":"YulLiteral","src":"24474:50:7","type":"","value":"\u0000\u0000\u0000\u0000\u0019Ethereum Signed Message:\n32"}],"functionName":{"name":"mstore","nativeSrc":"24461:6:7","nodeType":"YulIdentifier","src":"24461:6:7"},"nativeSrc":"24461:64:7","nodeType":"YulFunctionCall","src":"24461:64:7"},"nativeSrc":"24461:64:7","nodeType":"YulExpressionStatement","src":"24461:64:7"},{"nativeSrc":"24551:31:7","nodeType":"YulAssignment","src":"24551:31:7","value":{"arguments":[{"kind":"number","nativeSrc":"24571:4:7","nodeType":"YulLiteral","src":"24571:4:7","type":"","value":"0x04"},{"kind":"number","nativeSrc":"24577:4:7","nodeType":"YulLiteral","src":"24577:4:7","type":"","value":"0x3c"}],"functionName":{"name":"keccak256","nativeSrc":"24561:9:7","nodeType":"YulIdentifier","src":"24561:9:7"},"nativeSrc":"24561:21:7","nodeType":"YulFunctionCall","src":"24561:21:7"},"variableNames":[{"name":"result","nativeSrc":"24551:6:7","nodeType":"YulIdentifier","src":"24551:6:7"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":3071,"isOffset":false,"isSlot":false,"src":"24400:4:7","valueSize":1},{"declaration":3074,"isOffset":false,"isSlot":false,"src":"24551:6:7","valueSize":1}],"id":3076,"nodeType":"InlineAssembly","src":"24364:265:7"}]},"documentation":{"id":3069,"nodeType":"StructuredDocumentation","src":"23979:242:7","text":"@dev Returns an Ethereum Signed Message, created from a `hash`.\n This produces a hash corresponding to the one signed with the\n [`eth_sign`](https://eth.wiki/json-rpc/API#eth_sign)\n JSON-RPC method as part of EIP-191."},"id":3078,"implemented":true,"kind":"function","modifiers":[],"name":"toEthSignedMessageHash","nameLocation":"24235:22:7","nodeType":"FunctionDefinition","parameters":{"id":3072,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3071,"mutability":"mutable","name":"hash","nameLocation":"24266:4:7","nodeType":"VariableDeclaration","scope":3078,"src":"24258:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3070,"name":"bytes32","nodeType":"ElementaryTypeName","src":"24258:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"24257:14:7"},"returnParameters":{"id":3075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3074,"mutability":"mutable","name":"result","nameLocation":"24303:6:7","nodeType":"VariableDeclaration","scope":3078,"src":"24295:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3073,"name":"bytes32","nodeType":"ElementaryTypeName","src":"24295:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"24294:16:7"},"scope":3097,"src":"24226:409:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3087,"nodeType":"Block","src":"25028:1019:7","statements":[{"AST":{"nativeSrc":"25090:951:7","nodeType":"YulBlock","src":"25090:951:7","statements":[{"nativeSrc":"25104:23:7","nodeType":"YulVariableDeclaration","src":"25104:23:7","value":{"arguments":[{"name":"s","nativeSrc":"25125:1:7","nodeType":"YulIdentifier","src":"25125:1:7"}],"functionName":{"name":"mload","nativeSrc":"25119:5:7","nodeType":"YulIdentifier","src":"25119:5:7"},"nativeSrc":"25119:8:7","nodeType":"YulFunctionCall","src":"25119:8:7"},"variables":[{"name":"sLength","nativeSrc":"25108:7:7","nodeType":"YulTypedName","src":"25108:7:7","type":""}]},{"nativeSrc":"25140:13:7","nodeType":"YulVariableDeclaration","src":"25140:13:7","value":{"kind":"number","nativeSrc":"25149:4:7","nodeType":"YulLiteral","src":"25149:4:7","type":"","value":"0x20"},"variables":[{"name":"o","nativeSrc":"25144:1:7","nodeType":"YulTypedName","src":"25144:1:7","type":""}]},{"expression":{"arguments":[{"name":"o","nativeSrc":"25173:1:7","nodeType":"YulIdentifier","src":"25173:1:7"},{"hexValue":"19457468657265756d205369676e6564204d6573736167653a0a","kind":"string","nativeSrc":"25176:32:7","nodeType":"YulLiteral","src":"25176:32:7","type":"","value":"\u0019Ethereum Signed Message:\n"}],"functionName":{"name":"mstore","nativeSrc":"25166:6:7","nodeType":"YulIdentifier","src":"25166:6:7"},"nativeSrc":"25166:43:7","nodeType":"YulFunctionCall","src":"25166:43:7"},"nativeSrc":"25166:43:7","nodeType":"YulExpressionStatement","src":"25166:43:7"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"25261:4:7","nodeType":"YulLiteral","src":"25261:4:7","type":"","value":"0x00"},{"kind":"number","nativeSrc":"25267:4:7","nodeType":"YulLiteral","src":"25267:4:7","type":"","value":"0x00"}],"functionName":{"name":"mstore","nativeSrc":"25254:6:7","nodeType":"YulIdentifier","src":"25254:6:7"},"nativeSrc":"25254:18:7","nodeType":"YulFunctionCall","src":"25254:18:7"},"nativeSrc":"25254:18:7","nodeType":"YulExpressionStatement","src":"25254:18:7"},{"body":{"nativeSrc":"25409:177:7","nodeType":"YulBlock","src":"25409:177:7","statements":[{"nativeSrc":"25427:14:7","nodeType":"YulAssignment","src":"25427:14:7","value":{"arguments":[{"name":"o","nativeSrc":"25436:1:7","nodeType":"YulIdentifier","src":"25436:1:7"},{"kind":"number","nativeSrc":"25439:1:7","nodeType":"YulLiteral","src":"25439:1:7","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"25432:3:7","nodeType":"YulIdentifier","src":"25432:3:7"},"nativeSrc":"25432:9:7","nodeType":"YulFunctionCall","src":"25432:9:7"},"variableNames":[{"name":"o","nativeSrc":"25427:1:7","nodeType":"YulIdentifier","src":"25427:1:7"}]},{"expression":{"arguments":[{"name":"o","nativeSrc":"25466:1:7","nodeType":"YulIdentifier","src":"25466:1:7"},{"arguments":[{"kind":"number","nativeSrc":"25473:2:7","nodeType":"YulLiteral","src":"25473:2:7","type":"","value":"48"},{"arguments":[{"name":"temp","nativeSrc":"25481:4:7","nodeType":"YulIdentifier","src":"25481:4:7"},{"kind":"number","nativeSrc":"25487:2:7","nodeType":"YulLiteral","src":"25487:2:7","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"25477:3:7","nodeType":"YulIdentifier","src":"25477:3:7"},"nativeSrc":"25477:13:7","nodeType":"YulFunctionCall","src":"25477:13:7"}],"functionName":{"name":"add","nativeSrc":"25469:3:7","nodeType":"YulIdentifier","src":"25469:3:7"},"nativeSrc":"25469:22:7","nodeType":"YulFunctionCall","src":"25469:22:7"}],"functionName":{"name":"mstore8","nativeSrc":"25458:7:7","nodeType":"YulIdentifier","src":"25458:7:7"},"nativeSrc":"25458:34:7","nodeType":"YulFunctionCall","src":"25458:34:7"},"nativeSrc":"25458:34:7","nodeType":"YulExpressionStatement","src":"25458:34:7"},{"nativeSrc":"25509:21:7","nodeType":"YulAssignment","src":"25509:21:7","value":{"arguments":[{"name":"temp","nativeSrc":"25521:4:7","nodeType":"YulIdentifier","src":"25521:4:7"},{"kind":"number","nativeSrc":"25527:2:7","nodeType":"YulLiteral","src":"25527:2:7","type":"","value":"10"}],"functionName":{"name":"div","nativeSrc":"25517:3:7","nodeType":"YulIdentifier","src":"25517:3:7"},"nativeSrc":"25517:13:7","nodeType":"YulFunctionCall","src":"25517:13:7"},"variableNames":[{"name":"temp","nativeSrc":"25509:4:7","nodeType":"YulIdentifier","src":"25509:4:7"}]},{"body":{"nativeSrc":"25563:9:7","nodeType":"YulBlock","src":"25563:9:7","statements":[{"nativeSrc":"25565:5:7","nodeType":"YulBreak","src":"25565:5:7"}]},"condition":{"arguments":[{"name":"temp","nativeSrc":"25557:4:7","nodeType":"YulIdentifier","src":"25557:4:7"}],"functionName":{"name":"iszero","nativeSrc":"25550:6:7","nodeType":"YulIdentifier","src":"25550:6:7"},"nativeSrc":"25550:12:7","nodeType":"YulFunctionCall","src":"25550:12:7"},"nativeSrc":"25547:25:7","nodeType":"YulIf","src":"25547:25:7"}]},"condition":{"kind":"number","nativeSrc":"25404:1:7","nodeType":"YulLiteral","src":"25404:1:7","type":"","value":"1"},"nativeSrc":"25376:210:7","nodeType":"YulForLoop","post":{"nativeSrc":"25406:2:7","nodeType":"YulBlock","src":"25406:2:7","statements":[]},"pre":{"nativeSrc":"25380:23:7","nodeType":"YulBlock","src":"25380:23:7","statements":[{"nativeSrc":"25382:19:7","nodeType":"YulVariableDeclaration","src":"25382:19:7","value":{"name":"sLength","nativeSrc":"25394:7:7","nodeType":"YulIdentifier","src":"25394:7:7"},"variables":[{"name":"temp","nativeSrc":"25386:4:7","nodeType":"YulTypedName","src":"25386:4:7","type":""}]}]},"src":"25376:210:7"},{"nativeSrc":"25599:21:7","nodeType":"YulVariableDeclaration","src":"25599:21:7","value":{"arguments":[{"kind":"number","nativeSrc":"25612:4:7","nodeType":"YulLiteral","src":"25612:4:7","type":"","value":"0x3a"},{"name":"o","nativeSrc":"25618:1:7","nodeType":"YulIdentifier","src":"25618:1:7"}],"functionName":{"name":"sub","nativeSrc":"25608:3:7","nodeType":"YulIdentifier","src":"25608:3:7"},"nativeSrc":"25608:12:7","nodeType":"YulFunctionCall","src":"25608:12:7"},"variables":[{"name":"n","nativeSrc":"25603:1:7","nodeType":"YulTypedName","src":"25603:1:7","type":""}]},{"expression":{"arguments":[{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"25776:14:7","nodeType":"YulIdentifier","src":"25776:14:7"},"nativeSrc":"25776:16:7","nodeType":"YulFunctionCall","src":"25776:16:7"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"25794:14:7","nodeType":"YulIdentifier","src":"25794:14:7"},"nativeSrc":"25794:16:7","nodeType":"YulFunctionCall","src":"25794:16:7"},{"arguments":[{"name":"n","nativeSrc":"25815:1:7","nodeType":"YulIdentifier","src":"25815:1:7"},{"kind":"number","nativeSrc":"25818:4:7","nodeType":"YulLiteral","src":"25818:4:7","type":"","value":"0x20"}],"functionName":{"name":"gt","nativeSrc":"25812:2:7","nodeType":"YulIdentifier","src":"25812:2:7"},"nativeSrc":"25812:11:7","nodeType":"YulFunctionCall","src":"25812:11:7"}],"functionName":{"name":"returndatacopy","nativeSrc":"25761:14:7","nodeType":"YulIdentifier","src":"25761:14:7"},"nativeSrc":"25761:63:7","nodeType":"YulFunctionCall","src":"25761:63:7"},"nativeSrc":"25761:63:7","nodeType":"YulExpressionStatement","src":"25761:63:7"},{"expression":{"arguments":[{"name":"s","nativeSrc":"25844:1:7","nodeType":"YulIdentifier","src":"25844:1:7"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"25856:4:7","nodeType":"YulLiteral","src":"25856:4:7","type":"","value":"0x00"}],"functionName":{"name":"mload","nativeSrc":"25850:5:7","nodeType":"YulIdentifier","src":"25850:5:7"},"nativeSrc":"25850:11:7","nodeType":"YulFunctionCall","src":"25850:11:7"},{"arguments":[{"name":"n","nativeSrc":"25869:1:7","nodeType":"YulIdentifier","src":"25869:1:7"}],"functionName":{"name":"mload","nativeSrc":"25863:5:7","nodeType":"YulIdentifier","src":"25863:5:7"},"nativeSrc":"25863:8:7","nodeType":"YulFunctionCall","src":"25863:8:7"}],"functionName":{"name":"or","nativeSrc":"25847:2:7","nodeType":"YulIdentifier","src":"25847:2:7"},"nativeSrc":"25847:25:7","nodeType":"YulFunctionCall","src":"25847:25:7"}],"functionName":{"name":"mstore","nativeSrc":"25837:6:7","nodeType":"YulIdentifier","src":"25837:6:7"},"nativeSrc":"25837:36:7","nodeType":"YulFunctionCall","src":"25837:36:7"},"nativeSrc":"25837:36:7","nodeType":"YulExpressionStatement","src":"25837:36:7"},{"nativeSrc":"25919:58:7","nodeType":"YulAssignment","src":"25919:58:7","value":{"arguments":[{"arguments":[{"name":"s","nativeSrc":"25943:1:7","nodeType":"YulIdentifier","src":"25943:1:7"},{"arguments":[{"kind":"number","nativeSrc":"25950:4:7","nodeType":"YulLiteral","src":"25950:4:7","type":"","value":"0x20"},{"name":"n","nativeSrc":"25956:1:7","nodeType":"YulIdentifier","src":"25956:1:7"}],"functionName":{"name":"sub","nativeSrc":"25946:3:7","nodeType":"YulIdentifier","src":"25946:3:7"},"nativeSrc":"25946:12:7","nodeType":"YulFunctionCall","src":"25946:12:7"}],"functionName":{"name":"add","nativeSrc":"25939:3:7","nodeType":"YulIdentifier","src":"25939:3:7"},"nativeSrc":"25939:20:7","nodeType":"YulFunctionCall","src":"25939:20:7"},{"arguments":[{"name":"n","nativeSrc":"25965:1:7","nodeType":"YulIdentifier","src":"25965:1:7"},{"name":"sLength","nativeSrc":"25968:7:7","nodeType":"YulIdentifier","src":"25968:7:7"}],"functionName":{"name":"add","nativeSrc":"25961:3:7","nodeType":"YulIdentifier","src":"25961:3:7"},"nativeSrc":"25961:15:7","nodeType":"YulFunctionCall","src":"25961:15:7"}],"functionName":{"name":"keccak256","nativeSrc":"25929:9:7","nodeType":"YulIdentifier","src":"25929:9:7"},"nativeSrc":"25929:48:7","nodeType":"YulFunctionCall","src":"25929:48:7"},"variableNames":[{"name":"result","nativeSrc":"25919:6:7","nodeType":"YulIdentifier","src":"25919:6:7"}]},{"expression":{"arguments":[{"name":"s","nativeSrc":"25997:1:7","nodeType":"YulIdentifier","src":"25997:1:7"},{"name":"sLength","nativeSrc":"26000:7:7","nodeType":"YulIdentifier","src":"26000:7:7"}],"functionName":{"name":"mstore","nativeSrc":"25990:6:7","nodeType":"YulIdentifier","src":"25990:6:7"},"nativeSrc":"25990:18:7","nodeType":"YulFunctionCall","src":"25990:18:7"},"nativeSrc":"25990:18:7","nodeType":"YulExpressionStatement","src":"25990:18:7"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":3084,"isOffset":false,"isSlot":false,"src":"25919:6:7","valueSize":1},{"declaration":3081,"isOffset":false,"isSlot":false,"src":"25125:1:7","valueSize":1},{"declaration":3081,"isOffset":false,"isSlot":false,"src":"25844:1:7","valueSize":1},{"declaration":3081,"isOffset":false,"isSlot":false,"src":"25943:1:7","valueSize":1},{"declaration":3081,"isOffset":false,"isSlot":false,"src":"25997:1:7","valueSize":1}],"id":3086,"nodeType":"InlineAssembly","src":"25081:960:7"}]},"documentation":{"id":3079,"nodeType":"StructuredDocumentation","src":"24641:295:7","text":"@dev Returns an Ethereum Signed Message, created from `s`.\n This produces a hash corresponding to the one signed with the\n [`eth_sign`](https://eth.wiki/json-rpc/API#eth_sign)\n JSON-RPC method as part of EIP-191.\n Note: Supports lengths of `s` up to 999999 bytes."},"id":3088,"implemented":true,"kind":"function","modifiers":[],"name":"toEthSignedMessageHash","nameLocation":"24950:22:7","nodeType":"FunctionDefinition","parameters":{"id":3082,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3081,"mutability":"mutable","name":"s","nameLocation":"24986:1:7","nodeType":"VariableDeclaration","scope":3088,"src":"24973:14:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3080,"name":"bytes","nodeType":"ElementaryTypeName","src":"24973:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"24972:16:7"},"returnParameters":{"id":3085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3084,"mutability":"mutable","name":"result","nameLocation":"25020:6:7","nodeType":"VariableDeclaration","scope":3088,"src":"25012:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3083,"name":"bytes32","nodeType":"ElementaryTypeName","src":"25012:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"25011:16:7"},"scope":3097,"src":"24941:1106:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3095,"nodeType":"Block","src":"26457:113:7","statements":[{"AST":{"nativeSrc":"26519:45:7","nodeType":"YulBlock","src":"26519:45:7","statements":[{"nativeSrc":"26533:21:7","nodeType":"YulAssignment","src":"26533:21:7","value":{"kind":"number","nativeSrc":"26553:1:7","nodeType":"YulLiteral","src":"26553:1:7","type":"","value":"0"},"variableNames":[{"name":"signature.length","nativeSrc":"26533:16:7","nodeType":"YulIdentifier","src":"26533:16:7"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":3092,"isOffset":false,"isSlot":false,"src":"26533:16:7","suffix":"length","valueSize":1}],"id":3094,"nodeType":"InlineAssembly","src":"26510:54:7"}]},"documentation":{"id":3089,"nodeType":"StructuredDocumentation","src":"26336:41:7","text":"@dev Returns an empty calldata bytes."},"id":3096,"implemented":true,"kind":"function","modifiers":[],"name":"emptySignature","nameLocation":"26391:14:7","nodeType":"FunctionDefinition","parameters":{"id":3090,"nodeType":"ParameterList","parameters":[],"src":"26405:2:7"},"returnParameters":{"id":3093,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3092,"mutability":"mutable","name":"signature","nameLocation":"26446:9:7","nodeType":"VariableDeclaration","scope":3096,"src":"26431:24:7","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3091,"name":"bytes","nodeType":"ElementaryTypeName","src":"26431:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"26430:26:7"},"scope":3097,"src":"26382:188:7","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":3098,"src":"1438:25134:7","usedErrors":[],"usedEvents":[]}],"src":"32:26541:7"},"id":7}},"contracts":{"contracts/SwapERC20.sol":{"SwapERC20":{"abi":[{"inputs":[{"internalType":"uint256","name":"_protocolFee","type":"uint256"},{"internalType":"uint256","name":"_protocolFeeLight","type":"uint256"},{"internalType":"address","name":"_protocolFeeWallet","type":"address"},{"internalType":"uint256","name":"_bonusScale","type":"uint256"},{"internalType":"uint256","name":"_bonusMax","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadyInitialized","type":"error"},{"inputs":[],"name":"MaxTooHigh","type":"error"},{"inputs":[],"name":"NewOwnerIsZeroAddress","type":"error"},{"inputs":[],"name":"NoHandoverRequest","type":"error"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"NonceAlreadyUsed","type":"error"},{"inputs":[],"name":"OrderExpired","type":"error"},{"inputs":[],"name":"ProtocolFeeInvalid","type":"error"},{"inputs":[],"name":"ProtocolFeeLightInvalid","type":"error"},{"inputs":[],"name":"ProtocolFeeWalletInvalid","type":"error"},{"inputs":[],"name":"ScaleTooHigh","type":"error"},{"inputs":[],"name":"SignatoryInvalid","type":"error"},{"inputs":[],"name":"SignatureInvalid","type":"error"},{"inputs":[],"name":"StakingInvalid","type":"error"},{"inputs":[],"name":"TransferFromFailed","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"signer","type":"address"},{"indexed":true,"internalType":"address","name":"signerWallet","type":"address"}],"name":"Authorize","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"nonce","type":"uint256"},{"indexed":true,"internalType":"address","name":"signerWallet","type":"address"}],"name":"Cancel","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pendingOwner","type":"address"}],"name":"OwnershipHandoverCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pendingOwner","type":"address"}],"name":"OwnershipHandoverRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"signer","type":"address"},{"indexed":true,"internalType":"address","name":"signerWallet","type":"address"}],"name":"Revoke","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"bonusMax","type":"uint256"}],"name":"SetBonusMax","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"bonusScale","type":"uint256"}],"name":"SetBonusScale","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"protocolFee","type":"uint256"}],"name":"SetProtocolFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"protocolFeeLight","type":"uint256"}],"name":"SetProtocolFeeLight","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"feeWallet","type":"address"}],"name":"SetProtocolFeeWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"staking","type":"address"}],"name":"SetStaking","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"nonce","type":"uint256"},{"indexed":true,"internalType":"address","name":"signerWallet","type":"address"}],"name":"SwapERC20","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FEE_DIVISOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ORDER_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"signatory","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"authorized","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bonusMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bonusScale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"stakingBalance","type":"uint256"},{"internalType":"uint256","name":"feeAmount","type":"uint256"}],"name":"calculateBonus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"calculateProtocolFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"nonces","type":"uint256[]"}],"name":"cancel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cancelOwnershipHandover","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"senderWallet","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"address","name":"signerWallet","type":"address"},{"internalType":"address","name":"signerToken","type":"address"},{"internalType":"uint256","name":"signerAmount","type":"uint256"},{"internalType":"address","name":"senderToken","type":"address"},{"internalType":"uint256","name":"senderAmount","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"check","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pendingOwner","type":"address"}],"name":"completeOwnershipHandover","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"nonceUsed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"result","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pendingOwner","type":"address"}],"name":"ownershipHandoverExpiresAt","outputs":[{"internalType":"uint256","name":"result","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolFeeLight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protocolFeeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"requestOwnershipHandover","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"revoke","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_bonusMax","type":"uint256"}],"name":"setBonusMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_bonusScale","type":"uint256"}],"name":"setBonusScale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_protocolFee","type":"uint256"}],"name":"setProtocolFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_protocolFeeLight","type":"uint256"}],"name":"setProtocolFeeLight","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_protocolFeeWallet","type":"address"}],"name":"setProtocolFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_stakingToken","type":"address"}],"name":"setStaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"address","name":"signerWallet","type":"address"},{"internalType":"address","name":"signerToken","type":"address"},{"internalType":"uint256","name":"signerAmount","type":"uint256"},{"internalType":"address","name":"senderToken","type":"address"},{"internalType":"uint256","name":"senderAmount","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"swap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"address","name":"signerWallet","type":"address"},{"internalType":"address","name":"signerToken","type":"address"},{"internalType":"uint256","name":"signerAmount","type":"uint256"},{"internalType":"address","name":"senderToken","type":"address"},{"internalType":"uint256","name":"senderAmount","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"swapAnySender","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"address","name":"signerWallet","type":"address"},{"internalType":"address","name":"signerToken","type":"address"},{"internalType":"uint256","name":"signerAmount","type":"uint256"},{"internalType":"address","name":"senderToken","type":"address"},{"internalType":"uint256","name":"senderAmount","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"swapLight","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_151":{"entryPoint":null,"id":151,"parameterSlots":5,"returnSlots":0},"@_2552":{"entryPoint":null,"id":2552,"parameterSlots":0,"returnSlots":0},"@_buildDomainSeparator_2728":{"entryPoint":null,"id":2728,"parameterSlots":0,"returnSlots":1},"@_cachedDomainSeparatorInvalidated_2744":{"entryPoint":null,"id":2744,"parameterSlots":0,"returnSlots":1},"@_domainNameAndVersionMayChange_2567":{"entryPoint":null,"id":2567,"parameterSlots":0,"returnSlots":1},"@_domainNameAndVersion_169":{"entryPoint":null,"id":169,"parameterSlots":0,"returnSlots":2},"@_domainSeparator_2596":{"entryPoint":536,"id":2596,"parameterSlots":0,"returnSlots":1},"@_guardInitializeOwner_1745":{"entryPoint":null,"id":1745,"parameterSlots":0,"returnSlots":1},"@_initializeOwner_1759":{"entryPoint":476,"id":1759,"parameterSlots":1,"returnSlots":0},"abi_decode_tuple_t_uint256t_uint256t_addresst_uint256t_uint256_fromMemory":{"entryPoint":629,"id":null,"parameterSlots":2,"returnSlots":5}},"generatedSources":[{"ast":{"nativeSrc":"0:552:8","nodeType":"YulBlock","src":"0:552:8","statements":[{"nativeSrc":"6:3:8","nodeType":"YulBlock","src":"6:3:8","statements":[]},{"body":{"nativeSrc":"163:387:8","nodeType":"YulBlock","src":"163:387:8","statements":[{"body":{"nativeSrc":"210:16:8","nodeType":"YulBlock","src":"210:16:8","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"219:1:8","nodeType":"YulLiteral","src":"219:1:8","type":"","value":"0"},{"kind":"number","nativeSrc":"222:1:8","nodeType":"YulLiteral","src":"222:1:8","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"212:6:8","nodeType":"YulIdentifier","src":"212:6:8"},"nativeSrc":"212:12:8","nodeType":"YulFunctionCall","src":"212:12:8"},"nativeSrc":"212:12:8","nodeType":"YulExpressionStatement","src":"212:12:8"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"184:7:8","nodeType":"YulIdentifier","src":"184:7:8"},{"name":"headStart","nativeSrc":"193:9:8","nodeType":"YulIdentifier","src":"193:9:8"}],"functionName":{"name":"sub","nativeSrc":"180:3:8","nodeType":"YulIdentifier","src":"180:3:8"},"nativeSrc":"180:23:8","nodeType":"YulFunctionCall","src":"180:23:8"},{"kind":"number","nativeSrc":"205:3:8","nodeType":"YulLiteral","src":"205:3:8","type":"","value":"160"}],"functionName":{"name":"slt","nativeSrc":"176:3:8","nodeType":"YulIdentifier","src":"176:3:8"},"nativeSrc":"176:33:8","nodeType":"YulFunctionCall","src":"176:33:8"},"nativeSrc":"173:53:8","nodeType":"YulIf","src":"173:53:8"},{"nativeSrc":"235:26:8","nodeType":"YulAssignment","src":"235:26:8","value":{"arguments":[{"name":"headStart","nativeSrc":"251:9:8","nodeType":"YulIdentifier","src":"251:9:8"}],"functionName":{"name":"mload","nativeSrc":"245:5:8","nodeType":"YulIdentifier","src":"245:5:8"},"nativeSrc":"245:16:8","nodeType":"YulFunctionCall","src":"245:16:8"},"variableNames":[{"name":"value0","nativeSrc":"235:6:8","nodeType":"YulIdentifier","src":"235:6:8"}]},{"nativeSrc":"270:35:8","nodeType":"YulAssignment","src":"270:35:8","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"290:9:8","nodeType":"YulIdentifier","src":"290:9:8"},{"kind":"number","nativeSrc":"301:2:8","nodeType":"YulLiteral","src":"301:2:8","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"286:3:8","nodeType":"YulIdentifier","src":"286:3:8"},"nativeSrc":"286:18:8","nodeType":"YulFunctionCall","src":"286:18:8"}],"functionName":{"name":"mload","nativeSrc":"280:5:8","nodeType":"YulIdentifier","src":"280:5:8"},"nativeSrc":"280:25:8","nodeType":"YulFunctionCall","src":"280:25:8"},"variableNames":[{"name":"value1","nativeSrc":"270:6:8","nodeType":"YulIdentifier","src":"270:6:8"}]},{"nativeSrc":"314:38:8","nodeType":"YulVariableDeclaration","src":"314:38:8","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"337:9:8","nodeType":"YulIdentifier","src":"337:9:8"},{"kind":"number","nativeSrc":"348:2:8","nodeType":"YulLiteral","src":"348:2:8","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"333:3:8","nodeType":"YulIdentifier","src":"333:3:8"},"nativeSrc":"333:18:8","nodeType":"YulFunctionCall","src":"333:18:8"}],"functionName":{"name":"mload","nativeSrc":"327:5:8","nodeType":"YulIdentifier","src":"327:5:8"},"nativeSrc":"327:25:8","nodeType":"YulFunctionCall","src":"327:25:8"},"variables":[{"name":"value","nativeSrc":"318:5:8","nodeType":"YulTypedName","src":"318:5:8","type":""}]},{"body":{"nativeSrc":"415:16:8","nodeType":"YulBlock","src":"415:16:8","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"424:1:8","nodeType":"YulLiteral","src":"424:1:8","type":"","value":"0"},{"kind":"number","nativeSrc":"427:1:8","nodeType":"YulLiteral","src":"427:1:8","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"417:6:8","nodeType":"YulIdentifier","src":"417:6:8"},"nativeSrc":"417:12:8","nodeType":"YulFunctionCall","src":"417:12:8"},"nativeSrc":"417:12:8","nodeType":"YulExpressionStatement","src":"417:12:8"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"374:5:8","nodeType":"YulIdentifier","src":"374:5:8"},{"arguments":[{"name":"value","nativeSrc":"385:5:8","nodeType":"YulIdentifier","src":"385:5:8"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"400:3:8","nodeType":"YulLiteral","src":"400:3:8","type":"","value":"160"},{"kind":"number","nativeSrc":"405:1:8","nodeType":"YulLiteral","src":"405:1:8","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"396:3:8","nodeType":"YulIdentifier","src":"396:3:8"},"nativeSrc":"396:11:8","nodeType":"YulFunctionCall","src":"396:11:8"},{"kind":"number","nativeSrc":"409:1:8","nodeType":"YulLiteral","src":"409:1:8","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"392:3:8","nodeType":"YulIdentifier","src":"392:3:8"},"nativeSrc":"392:19:8","nodeType":"YulFunctionCall","src":"392:19:8"}],"functionName":{"name":"and","nativeSrc":"381:3:8","nodeType":"YulIdentifier","src":"381:3:8"},"nativeSrc":"381:31:8","nodeType":"YulFunctionCall","src":"381:31:8"}],"functionName":{"name":"eq","nativeSrc":"371:2:8","nodeType":"YulIdentifier","src":"371:2:8"},"nativeSrc":"371:42:8","nodeType":"YulFunctionCall","src":"371:42:8"}],"functionName":{"name":"iszero","nativeSrc":"364:6:8","nodeType":"YulIdentifier","src":"364:6:8"},"nativeSrc":"364:50:8","nodeType":"YulFunctionCall","src":"364:50:8"},"nativeSrc":"361:70:8","nodeType":"YulIf","src":"361:70:8"},{"nativeSrc":"440:15:8","nodeType":"YulAssignment","src":"440:15:8","value":{"name":"value","nativeSrc":"450:5:8","nodeType":"YulIdentifier","src":"450:5:8"},"variableNames":[{"name":"value2","nativeSrc":"440:6:8","nodeType":"YulIdentifier","src":"440:6:8"}]},{"nativeSrc":"464:35:8","nodeType":"YulAssignment","src":"464:35:8","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"484:9:8","nodeType":"YulIdentifier","src":"484:9:8"},{"kind":"number","nativeSrc":"495:2:8","nodeType":"YulLiteral","src":"495:2:8","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"480:3:8","nodeType":"YulIdentifier","src":"480:3:8"},"nativeSrc":"480:18:8","nodeType":"YulFunctionCall","src":"480:18:8"}],"functionName":{"name":"mload","nativeSrc":"474:5:8","nodeType":"YulIdentifier","src":"474:5:8"},"nativeSrc":"474:25:8","nodeType":"YulFunctionCall","src":"474:25:8"},"variableNames":[{"name":"value3","nativeSrc":"464:6:8","nodeType":"YulIdentifier","src":"464:6:8"}]},{"nativeSrc":"508:36:8","nodeType":"YulAssignment","src":"508:36:8","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"528:9:8","nodeType":"YulIdentifier","src":"528:9:8"},{"kind":"number","nativeSrc":"539:3:8","nodeType":"YulLiteral","src":"539:3:8","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"524:3:8","nodeType":"YulIdentifier","src":"524:3:8"},"nativeSrc":"524:19:8","nodeType":"YulFunctionCall","src":"524:19:8"}],"functionName":{"name":"mload","nativeSrc":"518:5:8","nodeType":"YulIdentifier","src":"518:5:8"},"nativeSrc":"518:26:8","nodeType":"YulFunctionCall","src":"518:26:8"},"variableNames":[{"name":"value4","nativeSrc":"508:6:8","nodeType":"YulIdentifier","src":"508:6:8"}]}]},"name":"abi_decode_tuple_t_uint256t_uint256t_addresst_uint256t_uint256_fromMemory","nativeSrc":"14:536:8","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"97:9:8","nodeType":"YulTypedName","src":"97:9:8","type":""},{"name":"dataEnd","nativeSrc":"108:7:8","nodeType":"YulTypedName","src":"108:7:8","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"120:6:8","nodeType":"YulTypedName","src":"120:6:8","type":""},{"name":"value1","nativeSrc":"128:6:8","nodeType":"YulTypedName","src":"128:6:8","type":""},{"name":"value2","nativeSrc":"136:6:8","nodeType":"YulTypedName","src":"136:6:8","type":""},{"name":"value3","nativeSrc":"144:6:8","nodeType":"YulTypedName","src":"144:6:8","type":""},{"name":"value4","nativeSrc":"152:6:8","nodeType":"YulTypedName","src":"152:6:8","type":""}],"src":"14:536:8"}]},"contents":"{\n    { }\n    function abi_decode_tuple_t_uint256t_uint256t_addresst_uint256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n        let value := mload(add(headStart, 64))\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value2 := value\n        value3 := mload(add(headStart, 96))\n        value4 := mload(add(headStart, 128))\n    }\n}","id":8,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"6101406040523480156200001257600080fd5b5060405162002fbd38038062002fbd833981016040819052620000359162000275565b306080524660a05260608062000082604080518082018252600a8152690535741505f45524332360b41b60208083019190915282518084019093526003835262342e3360e81b9083015291565b815160209283012081519183019190912060c082905260e08190526040805160008051602062002f9d8339815191528152938401929092529082015246606082015230608082015260a090206101005250506127108510620000f75760405163f37b175b60e01b815260040160405180910390fd5b61271084106200011a57604051633d9ef52760e21b815260040160405180910390fd5b6001600160a01b0383166200014257604051633360533760e11b815260040160405180910390fd5b60648111156200016557604051631ba349c560e31b815260040160405180910390fd5b604d821115620001885760405163cca4057d60e01b815260040160405180910390fd5b6200019333620001dc565b6200019d62000218565b61012052600294909455600392909255600480546001600160a01b0319166001600160a01b0392909216919091179055600691909155600555620002ce565b6001600160a01b0316638b78c6d8198190558060007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b610100516200023160a051608051301446909114161590565b1562000272575060c05160e0516040805160008051602062002f9d8339815191528152602081019390935282015246606082015230608082015260a0902090565b90565b600080600080600060a086880312156200028e57600080fd5b85516020870151604088015191965094506001600160a01b0381168114620002b557600080fd5b6060870151608090970151959894975095949392505050565b60805160a05160c05160e0516101005161012051612c7f6200031e600039600061028f01526000612144015260006121fe015260006121d801526000612188015260006121650152612c7f6000f3fe6080604052600436106102195760003560e01c80638ff390991161011d578063b9cb01b0116100b0578063f04e283e1161007f578063f4ebc69911610064578063f4ebc6991461062d578063f973a20914610643578063fee81cf41461065857600080fd5b8063f04e283e14610607578063f2fde38b1461061a57600080fd5b8063b9cb01b014610577578063bfd4e557146105a4578063c5c62a7d146105c4578063cbf7c6c3146105da57600080fd5b8063b0e21e8a116100ec578063b0e21e8a146104e9578063b6549f75146104ff578063b6a5d7de14610514578063b91816111461053457600080fd5b80638ff390991461047357806398956069146104935780639cff19e0146104b35780639e93ad8e146104d357600080fd5b80636f72fd20116101b0578063787dce3d1161017f5780637ce78525116101645780637ce78525146103f757806384b0196e146104175780638da5cb5b1461043f57600080fd5b8063787dce3d146103c15780637aba86d2146103e157600080fd5b80636f72fd20146103275780636fb30d4314610347578063715018a61461036757806372f702f31461036f57600080fd5b80633eb1af24116101ec5780633eb1af24146102bf57806346e4480d146102df57806352c5f1f5146102ff57806354d1f13d1461031f57600080fd5b80631647795e1461021e57806325692962146102535780632e3408231461025d5780633644e5151461027d575b600080fd5b34801561022a57600080fd5b5061023e610239366004612638565b61068b565b60405190151581526020015b60405180910390f35b61025b6106ee565b005b34801561026957600080fd5b5061025b610278366004612662565b61073e565b34801561028957600080fd5b506102b17f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200161024a565b3480156102cb57600080fd5b5061025b6102da3660046126e8565b6107b1565b3480156102eb57600080fd5b5061025b6102fa36600461278a565b610838565b34801561030b57600080fd5b506102b161031a366004612638565b610c88565b61025b610d92565b34801561033357600080fd5b506102b161034236600461281a565b610dce565b34801561035357600080fd5b5061025b61036236600461283c565b610e25565b61025b610ea4565b34801561037b57600080fd5b5060075461039c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161024a565b3480156103cd57600080fd5b5061025b6103dc36600461283c565b610eb8565b3480156103ed57600080fd5b506102b160065481565b34801561040357600080fd5b5061025b610412366004612855565b610f30565b34801561042357600080fd5b5061042c610ff4565b60405161024a97969594939291906128d4565b34801561044b57600080fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275461039c565b34801561047f57600080fd5b5061025b61048e366004612855565b61109d565b34801561049f57600080fd5b5061025b6104ae3660046126e8565b611161565b3480156104bf57600080fd5b5061025b6104ce36600461283c565b611174565b3480156104df57600080fd5b506102b161271081565b3480156104f557600080fd5b506102b160025481565b34801561050b57600080fd5b5061025b6111ec565b34801561052057600080fd5b5061025b61052f366004612855565b611269565b34801561054057600080fd5b5061039c61054f366004612855565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b34801561058357600080fd5b506105976105923660046126e8565b611331565b60405161024a9190612996565b3480156105b057600080fd5b5061025b6105bf36600461283c565b611ba4565b3480156105d057600080fd5b506102b160055481565b3480156105e657600080fd5b5060045461039c9073ffffffffffffffffffffffffffffffffffffffff1681565b61025b610615366004612855565b611c1c565b61025b610628366004612855565b611c5c565b34801561063957600080fd5b506102b160035481565b34801561064f57600080fd5b506102b1611c83565b34801561066457600080fd5b506102b1610673366004612855565b63389a75e1600c908152600091909152602090205490565b60008061069a61010084612a38565b905060006106aa61010085612a4c565b73ffffffffffffffffffffffffffffffffffffffff861660009081526020818152604080832095835294905292909220546001921c82169091149150505b92915050565b60006202a30067ffffffffffffffff164201905063389a75e1600c5233600052806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b60005b818110156107ac57600083838381811061075d5761075d612a60565b9050602002013590506107703382611db3565b156107a357604051339082907f8dd3c361eb2366ff27c2db0eb07b9261f1d052570742ab8c9a0c326f37aa576d90600090a35b50600101610741565b505050565b6107c58a8a8a8a8a60008b8b8b8b8b611e62565b6107d185338a87611fd3565b6107dd87898d89611fd3565b6107e8878988612030565b60405173ffffffffffffffffffffffffffffffffffffffff8916908b907f4294f3cfba9ff22cfa9cb602947f7656aa160c0a6c8fa406a28e12bed6bf209390600090a35050505050505050505050565b428911610871576040517fc56873ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610a4d610a45604051602001610990907f4f7264657245524332302875696e74323536206e6f6e63652c75696e7432353681527f206578706972792c61646472657373207369676e657257616c6c65742c61646460208201527f72657373207369676e6572546f6b656e2c75696e74323536207369676e65724160408201527f6d6f756e742c000000000000000000000000000000000000000000000000000060608201527f75696e743235362070726f746f636f6c4665652c616464726573732073656e6460668201527f657257616c6c65742c616464726573732073656e646572546f6b656e2c75696e60868201527f743235362073656e646572416d6f756e7429000000000000000000000000000060a682015260b80190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600354918401529082018f9052606082018e905273ffffffffffffffffffffffffffffffffffffffff808e166080840152808d1660a084015260c083018c905260e08301919091523361010083015289166101208201526101408101889052610160015b60405160208183030381529060405280519060200120612142565b85858561225a565b905073ffffffffffffffffffffffffffffffffffffffff8116610a9c576040517f37e8456b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aa6818c611db3565b610ae4576040517f91cab504000000000000000000000000000000000000000000000000000000008152600481018c90526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8981166000908152600160205260409020541615610b795773ffffffffffffffffffffffffffffffffffffffff808a16600090815260016020526040902054828216911614610b74576040517f37e8456b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bde565b8873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610bde576040517f37e8456b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bea86338b88611fd3565b610bf6888a338a611fd3565b600454600354610c38918a918c9173ffffffffffffffffffffffffffffffffffffffff169061271090610c29908d612a8f565b610c339190612a38565b611fd3565b60405173ffffffffffffffffffffffffffffffffffffffff8a16908c907f4294f3cfba9ff22cfa9cb602947f7656aa160c0a6c8fa406a28e12bed6bf209390600090a35050505050505050505050565b60008061271060025484610c9c9190612a8f565b610ca69190612a38565b60075490915073ffffffffffffffffffffffffffffffffffffffff1615801590610cd05750600081115b15610d8b576007546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152600092610d76929116906370a08231906024015b602060405180830381865afa158015610d4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d709190612aa6565b83610dce565b9050610d828183612abf565b925050506106e8565b9392505050565b63389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b60008083600554600a610de19190612bf2565b610deb9190612bfe565b90506064818486600654610dff9190612a8f565b610e099190612a8f565b610e139190612a38565b610e1d9190612a38565b949350505050565b610e2d612298565b604d811115610e68576040517fcca4057d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058190556040518181527fcc5b12dfbda3644d5f3190b40ad8215d4aaac870df5c8112735085679d7cc333906020015b60405180910390a150565b610eac612298565b610eb660006122ce565b565b610ec0612298565b6127108110610efb576040517ff37b175b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fdc0410a296e1e33943a772020d333d5f99319d7fcad932a484c53889f7aaa2b190602001610e99565b610f38612298565b73ffffffffffffffffffffffffffffffffffffffff8116610f85576040517f66c0a66e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f8b2a800ce9e2e7ccdf4741ae0e41b1f16983192291080ae3b78ac4296ddf598a90600090a250565b7f0f00000000000000000000000000000000000000000000000000000000000000606080600080808361108b604080518082018252600a81527f535741505f4552433230000000000000000000000000000000000000000000006020808301919091528251808401909352600383527f342e3300000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b6110a5612298565b73ffffffffffffffffffffffffffffffffffffffff81166110f2576040517f71758b7c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f58fd5d9c33114e6edf8ea5d30956f8d1a4ab112b004f99928b4bcf1b87d6666290600090a250565b6107c58a8a8a8a8a338b8b8b8b8b611e62565b61117c612298565b60648111156111b7576040517fdd1a4e2800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068190556040518181527fb113403a9e8b9f0173354acc3a5d210c86be40bb7259c19c55cea02227c5026f90602001610e99565b3360008181526001602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000008116909155905173ffffffffffffffffffffffffffffffffffffffff909116929183917fd7426110292f20fe59e73ccf52124e0f5440a756507c91c7b0a6c50e1eb1a23a9190a350565b73ffffffffffffffffffffffffffffffffffffffff81166112b6576040517fcd4b78cf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360008181526001602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8616908117909155905190917f30468de898bda644e26bab66e5a2241a3aa6aaf527257f5ca54e0f65204ba14a91a350565b6040805160078082526101008201909252606091600091906020820160e080368337019050506040805161016081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052919250908d8160000181815250508c8160200181815250508b816040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508a816060019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505089816080018181525050888160c0019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050878160e00181815250508681610100019060ff16908160ff1681525050858161012001818152505084816101400181815250508e8160a0019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600081604001519050600073ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115a95773ffffffffffffffffffffffffffffffffffffffff908116600090815260016020526040902054165b611632816115dd846000015185602001518660400151876060015188608001518960a001518a60c001518b60e00151612334565b60408051602081018c90529081018a90527fff0000000000000000000000000000000000000000000000000000000000000060f88d901b1660608201526061015b6040516020818303038152906040526124fd565b611685577f5369676e6174757265496e76616c696400000000000000000000000000000000848461166281612c11565b95508151811061167457611674612a60565b6020026020010181815250506116e3565b61169381836000015161068b565b156116e3577f4e6f6e6365416c7265616479557365640000000000000000000000000000000084846116c481612c11565b9550815181106116d6576116d6612a60565b6020026020010181815250505b428260200151101561173a577f4f72646572457870697265640000000000000000000000000000000000000000848461171b81612c11565b95508151811061172d5761172d612a60565b6020026020010181815250505b60a082015173ffffffffffffffffffffffffffffffffffffffff16156119525760c082015160a08301516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156117d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f99190612aa6565b60c084015160a08501516040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015230602482015292935060009291169063dd62ed3e90604401602060405180830381865afa15801561187b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189f9190612aa6565b90508360e001518110156118f8577f53656e646572416c6c6f77616e63654c6f77000000000000000000000000000086866118d981612c11565b9750815181106118eb576118eb612a60565b6020026020010181815250505b8360e0015182101561194f577f53656e64657242616c616e63654c6f7700000000000000000000000000000000868661193081612c11565b97508151811061194257611942612a60565b6020026020010181815250505b50505b606082015160408084015190517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156119cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f19190612aa6565b606084015160408086015190517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015230602482015292935060009291169063dd62ed3e90604401602060405180830381865afa158015611a73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a979190612aa6565b905060006127106002548660800151611ab09190612a8f565b611aba9190612a38565b9050808560800151611acc9190612bfe565b821015611b1e577f5369676e6572416c6c6f77616e63654c6f7700000000000000000000000000008787611aff81612c11565b985081518110611b1157611b11612a60565b6020026020010181815250505b808560800151611b2e9190612bfe565b831015611b80577f5369676e657242616c616e63654c6f77000000000000000000000000000000008787611b6181612c11565b985081518110611b7357611b73612a60565b6020026020010181815250505b86518614611b8c578587525b5094955050505050509b9a5050505050505050505050565b611bac612298565b6127108110611be7576040517ff67bd49c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527f312cc1a9b7287129a22395b9572a3c9ed09ce456f02b519efb34e12bb429eed090602001610e99565b611c24612298565b63389a75e1600c52806000526020600c208054421115611c4c57636f5e88186000526004601cfd5b60009055611c59816122ce565b50565b611c64612298565b8060601b611c7a57637448fbae6000526004601cfd5b611c59816122ce565b604051602001611d9a907f4f7264657245524332302875696e74323536206e6f6e63652c75696e7432353681527f206578706972792c61646472657373207369676e657257616c6c65742c61646460208201527f72657373207369676e6572546f6b656e2c75696e74323536207369676e65724160408201527f6d6f756e742c000000000000000000000000000000000000000000000000000060608201527f75696e743235362070726f746f636f6c4665652c616464726573732073656e6460668201527f657257616c6c65742c616464726573732073656e646572546f6b656e2c75696e60868201527f743235362073656e646572416d6f756e7429000000000000000000000000000060a682015260b80190565b6040516020818303038152906040528051906020012081565b600080611dc261010084612a38565b90506000611dd261010085612a4c565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260208181526040808320868452909152902054909150600181831c81169003611e1d57600093505050506106e8565b73ffffffffffffffffffffffffffffffffffffffff86166000908152602081815260408083209583529490529290922060019182901b92909217909155905092915050565b428a11611e9b576040517fc56873ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808a166000908152600160205260409020548a911615611ef35773ffffffffffffffffffffffffffffffffffffffff908116600090815260016020526040902054165b611f4c81611f078e8e8e8e8e8e8e8e612334565b60408051602081018890529081018690527fff0000000000000000000000000000000000000000000000000000000000000060f889901b16606082015260610161161e565b611f82576040517f37e8456b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f8c818d611db3565b611fc5576040517f91cab504000000000000000000000000000000000000000000000000000000008152600481018d9052602401610adb565b505050505050505050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c52602060006064601c6000895af13d15600160005114171661202257637939f4246000526004601cfd5b600060605260405250505050565b6000612710600254836120439190612a8f565b61204d9190612a38565b9050801561213c5760075460009073ffffffffffffffffffffffffffffffffffffffff16156120d1576007546040517f70a082310000000000000000000000000000000000000000000000000000000081523360048201526120ce9173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401610d2f565b90505b8015612113576120e385853384611fd3565b60045461210e908690869073ffffffffffffffffffffffffffffffffffffffff16610c338587612abf565b61213a565b60045461213a908690869073ffffffffffffffffffffffffffffffffffffffff1685611fd3565b505b50505050565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f00000000000000000000000000000000000000000000000000000000000000004614166122355750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b67190100000000000060005280601a5281603a52604260182090506000603a52919050565b60006040518560005260ff85166020528360405282606052602060406080600060015afa5060006060523d6060185191508060405250949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610eb6576382b429006000526004601cfd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a355565b60006124f0604051602001612450907f4f7264657245524332302875696e74323536206e6f6e63652c75696e7432353681527f206578706972792c61646472657373207369676e657257616c6c65742c61646460208201527f72657373207369676e6572546f6b656e2c75696e74323536207369676e65724160408201527f6d6f756e742c000000000000000000000000000000000000000000000000000060608201527f75696e743235362070726f746f636f6c4665652c616464726573732073656e6460668201527f657257616c6c65742c616464726573732073656e646572546f6b656e2c75696e60868201527f743235362073656e646572416d6f756e7429000000000000000000000000000060a682015260b80190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600254918401529082018c9052606082018b905273ffffffffffffffffffffffffffffffffffffffff808b166080840152808a1660a084015260c0830189905260e08301919091528087166101008301528516610120820152610140810184905261016001610a2a565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff9092169160008315610d8b57604051836000526020830151604052604083510361257a576040830151601b8160ff1c016020528060011b60011c60605250602060016080600060015afa805186183d151761257857506000606052604052506001610d8b565b505b60418351036125c057606083015160001a6020526040830151606052602060016080600060015afa805186183d15176125be57506000606052604052506001610d8b565b505b600060605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa505060208160443d01858a5afa9051909114169150509392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461263357600080fd5b919050565b6000806040838503121561264b57600080fd5b6126548361260f565b946020939093013593505050565b6000806020838503121561267557600080fd5b823567ffffffffffffffff8082111561268d57600080fd5b818501915085601f8301126126a157600080fd5b8135818111156126b057600080fd5b8660208260051b85010111156126c557600080fd5b60209290920196919550909350505050565b803560ff8116811461263357600080fd5b60008060008060008060008060008060006101608c8e03121561270a57600080fd5b6127138c61260f565b9a5060208c0135995060408c0135985061272f60608d0161260f565b975061273d60808d0161260f565b965060a08c0135955061275260c08d0161260f565b945060e08c013593506127686101008d016126d7565b92506101208c013591506101408c013590509295989b509295989b9093969950565b6000806000806000806000806000806101408b8d0312156127aa57600080fd5b8a35995060208b013598506127c160408c0161260f565b97506127cf60608c0161260f565b965060808b013595506127e460a08c0161260f565b945060c08b013593506127f960e08c016126d7565b92506101008b013591506101208b013590509295989b9194979a5092959850565b6000806040838503121561282d57600080fd5b50508035926020909101359150565b60006020828403121561284e57600080fd5b5035919050565b60006020828403121561286757600080fd5b610d8b8261260f565b6000815180845260005b818110156128965760208185018101518683018201520161287a565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e0602084015261291160e084018a612870565b8381036040850152612923818a612870565b6060850189905273ffffffffffffffffffffffffffffffffffffffff8816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b8181101561298457835183529284019291840191600101612968565b50909c9b505050505050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156129ce578351835292840192918401916001016129b2565b50909695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082612a4757612a476129da565b500490565b600082612a5b57612a5b6129da565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80820281158282048414176106e8576106e8612a09565b600060208284031215612ab857600080fd5b5051919050565b818103818111156106e8576106e8612a09565b600181815b80851115612b2b57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115612b1157612b11612a09565b80851615612b1e57918102915b93841c9390800290612ad7565b509250929050565b600082612b42575060016106e8565b81612b4f575060006106e8565b8160018114612b655760028114612b6f57612b8b565b60019150506106e8565b60ff841115612b8057612b80612a09565b50506001821b6106e8565b5060208310610133831016604e8410600b8410161715612bae575081810a6106e8565b612bb88383612ad2565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115612bea57612bea612a09565b029392505050565b6000610d8b8383612b33565b808201808211156106e8576106e8612a09565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612c4257612c42612a09565b506001019056fea2646970667358221220f355c0d8ce46a5293d481ec82fb135843d0aa37929f048c3b60d1f2a4231747764736f6c634300081700338b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f","opcodes":"PUSH2 0x140 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x2FBD CODESIZE SUB DUP1 PUSH3 0x2FBD DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x275 JUMP JUMPDEST ADDRESS PUSH1 0x80 MSTORE CHAINID PUSH1 0xA0 MSTORE PUSH1 0x60 DUP1 PUSH3 0x82 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xA DUP2 MSTORE PUSH10 0x535741505F455243323 PUSH1 0xB4 SHL PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x3 DUP4 MSTORE PUSH3 0x342E33 PUSH1 0xE8 SHL SWAP1 DUP4 ADD MSTORE SWAP2 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 DUP2 MLOAD SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0xC0 DUP3 SWAP1 MSTORE PUSH1 0xE0 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F9D DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 MSTORE SWAP4 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 DUP3 ADD MSTORE CHAINID PUSH1 0x60 DUP3 ADD MSTORE ADDRESS PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 SWAP1 KECCAK256 PUSH2 0x100 MSTORE POP POP PUSH2 0x2710 DUP6 LT PUSH3 0xF7 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF37B175B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2710 DUP5 LT PUSH3 0x11A JUMPI PUSH1 0x40 MLOAD PUSH4 0x3D9EF527 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH3 0x142 JUMPI PUSH1 0x40 MLOAD PUSH4 0x33605337 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x64 DUP2 GT ISZERO PUSH3 0x165 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1BA349C5 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x4D DUP3 GT ISZERO PUSH3 0x188 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCCA4057D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x193 CALLER PUSH3 0x1DC JUMP JUMPDEST PUSH3 0x19D PUSH3 0x218 JUMP JUMPDEST PUSH2 0x120 MSTORE PUSH1 0x2 SWAP5 SWAP1 SWAP5 SSTORE PUSH1 0x3 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x6 SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x5 SSTORE PUSH3 0x2CE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8B78C6D8 NOT DUP2 SWAP1 SSTORE DUP1 PUSH1 0x0 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 DUP2 DUP1 LOG3 POP JUMP JUMPDEST PUSH2 0x100 MLOAD PUSH3 0x231 PUSH1 0xA0 MLOAD PUSH1 0x80 MLOAD ADDRESS EQ CHAINID SWAP1 SWAP2 EQ AND ISZERO SWAP1 JUMP JUMPDEST ISZERO PUSH3 0x272 JUMPI POP PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F9D DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 ADD MSTORE CHAINID PUSH1 0x60 DUP3 ADD MSTORE ADDRESS PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH3 0x28E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 MLOAD PUSH1 0x20 DUP8 ADD MLOAD PUSH1 0x40 DUP9 ADD MLOAD SWAP2 SWAP7 POP SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x2B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP8 ADD MLOAD PUSH1 0x80 SWAP1 SWAP8 ADD MLOAD SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x2C7F PUSH3 0x31E PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH2 0x28F ADD MSTORE PUSH1 0x0 PUSH2 0x2144 ADD MSTORE PUSH1 0x0 PUSH2 0x21FE ADD MSTORE PUSH1 0x0 PUSH2 0x21D8 ADD MSTORE PUSH1 0x0 PUSH2 0x2188 ADD MSTORE PUSH1 0x0 PUSH2 0x2165 ADD MSTORE PUSH2 0x2C7F PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x219 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8FF39099 GT PUSH2 0x11D JUMPI DUP1 PUSH4 0xB9CB01B0 GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0xF04E283E GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xF4EBC699 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xF4EBC699 EQ PUSH2 0x62D JUMPI DUP1 PUSH4 0xF973A209 EQ PUSH2 0x643 JUMPI DUP1 PUSH4 0xFEE81CF4 EQ PUSH2 0x658 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xF04E283E EQ PUSH2 0x607 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x61A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB9CB01B0 EQ PUSH2 0x577 JUMPI DUP1 PUSH4 0xBFD4E557 EQ PUSH2 0x5A4 JUMPI DUP1 PUSH4 0xC5C62A7D EQ PUSH2 0x5C4 JUMPI DUP1 PUSH4 0xCBF7C6C3 EQ PUSH2 0x5DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB0E21E8A GT PUSH2 0xEC JUMPI DUP1 PUSH4 0xB0E21E8A EQ PUSH2 0x4E9 JUMPI DUP1 PUSH4 0xB6549F75 EQ PUSH2 0x4FF JUMPI DUP1 PUSH4 0xB6A5D7DE EQ PUSH2 0x514 JUMPI DUP1 PUSH4 0xB9181611 EQ PUSH2 0x534 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8FF39099 EQ PUSH2 0x473 JUMPI DUP1 PUSH4 0x98956069 EQ PUSH2 0x493 JUMPI DUP1 PUSH4 0x9CFF19E0 EQ PUSH2 0x4B3 JUMPI DUP1 PUSH4 0x9E93AD8E EQ PUSH2 0x4D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6F72FD20 GT PUSH2 0x1B0 JUMPI DUP1 PUSH4 0x787DCE3D GT PUSH2 0x17F JUMPI DUP1 PUSH4 0x7CE78525 GT PUSH2 0x164 JUMPI DUP1 PUSH4 0x7CE78525 EQ PUSH2 0x3F7 JUMPI DUP1 PUSH4 0x84B0196E EQ PUSH2 0x417 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x43F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x787DCE3D EQ PUSH2 0x3C1 JUMPI DUP1 PUSH4 0x7ABA86D2 EQ PUSH2 0x3E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6F72FD20 EQ PUSH2 0x327 JUMPI DUP1 PUSH4 0x6FB30D43 EQ PUSH2 0x347 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x367 JUMPI DUP1 PUSH4 0x72F702F3 EQ PUSH2 0x36F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3EB1AF24 GT PUSH2 0x1EC JUMPI DUP1 PUSH4 0x3EB1AF24 EQ PUSH2 0x2BF JUMPI DUP1 PUSH4 0x46E4480D EQ PUSH2 0x2DF JUMPI DUP1 PUSH4 0x52C5F1F5 EQ PUSH2 0x2FF JUMPI DUP1 PUSH4 0x54D1F13D EQ PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1647795E EQ PUSH2 0x21E JUMPI DUP1 PUSH4 0x25692962 EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x2E340823 EQ PUSH2 0x25D JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x27D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23E PUSH2 0x239 CALLDATASIZE PUSH1 0x4 PUSH2 0x2638 JUMP JUMPDEST PUSH2 0x68B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x25B PUSH2 0x6EE JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x269 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25B PUSH2 0x278 CALLDATASIZE PUSH1 0x4 PUSH2 0x2662 JUMP JUMPDEST PUSH2 0x73E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x289 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B1 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x24A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25B PUSH2 0x2DA CALLDATASIZE PUSH1 0x4 PUSH2 0x26E8 JUMP JUMPDEST PUSH2 0x7B1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25B PUSH2 0x2FA CALLDATASIZE PUSH1 0x4 PUSH2 0x278A JUMP JUMPDEST PUSH2 0x838 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B1 PUSH2 0x31A CALLDATASIZE PUSH1 0x4 PUSH2 0x2638 JUMP JUMPDEST PUSH2 0xC88 JUMP JUMPDEST PUSH2 0x25B PUSH2 0xD92 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x333 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B1 PUSH2 0x342 CALLDATASIZE PUSH1 0x4 PUSH2 0x281A JUMP JUMPDEST PUSH2 0xDCE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x353 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25B PUSH2 0x362 CALLDATASIZE PUSH1 0x4 PUSH2 0x283C JUMP JUMPDEST PUSH2 0xE25 JUMP JUMPDEST PUSH2 0x25B PUSH2 0xEA4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x37B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x7 SLOAD PUSH2 0x39C SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x24A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25B PUSH2 0x3DC CALLDATASIZE PUSH1 0x4 PUSH2 0x283C JUMP JUMPDEST PUSH2 0xEB8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B1 PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x403 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25B PUSH2 0x412 CALLDATASIZE PUSH1 0x4 PUSH2 0x2855 JUMP JUMPDEST PUSH2 0xF30 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x423 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x42C PUSH2 0xFF4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x24A SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x28D4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74873927 SLOAD PUSH2 0x39C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x47F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25B PUSH2 0x48E CALLDATASIZE PUSH1 0x4 PUSH2 0x2855 JUMP JUMPDEST PUSH2 0x109D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x49F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25B PUSH2 0x4AE CALLDATASIZE PUSH1 0x4 PUSH2 0x26E8 JUMP JUMPDEST PUSH2 0x1161 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25B PUSH2 0x4CE CALLDATASIZE PUSH1 0x4 PUSH2 0x283C JUMP JUMPDEST PUSH2 0x1174 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B1 PUSH2 0x2710 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B1 PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x50B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25B PUSH2 0x11EC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x520 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25B PUSH2 0x52F CALLDATASIZE PUSH1 0x4 PUSH2 0x2855 JUMP JUMPDEST PUSH2 0x1269 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x540 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39C PUSH2 0x54F CALLDATASIZE PUSH1 0x4 PUSH2 0x2855 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x583 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x597 PUSH2 0x592 CALLDATASIZE PUSH1 0x4 PUSH2 0x26E8 JUMP JUMPDEST PUSH2 0x1331 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x24A SWAP2 SWAP1 PUSH2 0x2996 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25B PUSH2 0x5BF CALLDATASIZE PUSH1 0x4 PUSH2 0x283C JUMP JUMPDEST PUSH2 0x1BA4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B1 PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 SLOAD PUSH2 0x39C SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x25B PUSH2 0x615 CALLDATASIZE PUSH1 0x4 PUSH2 0x2855 JUMP JUMPDEST PUSH2 0x1C1C JUMP JUMPDEST PUSH2 0x25B PUSH2 0x628 CALLDATASIZE PUSH1 0x4 PUSH2 0x2855 JUMP JUMPDEST PUSH2 0x1C5C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x639 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B1 PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x64F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B1 PUSH2 0x1C83 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x664 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B1 PUSH2 0x673 CALLDATASIZE PUSH1 0x4 PUSH2 0x2855 JUMP JUMPDEST PUSH4 0x389A75E1 PUSH1 0xC SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x69A PUSH2 0x100 DUP5 PUSH2 0x2A38 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x6AA PUSH2 0x100 DUP6 PUSH2 0x2A4C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 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 SLOAD PUSH1 0x1 SWAP3 SHR DUP3 AND SWAP1 SWAP2 EQ SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x2A300 PUSH8 0xFFFFFFFFFFFFFFFF AND TIMESTAMP ADD SWAP1 POP PUSH4 0x389A75E1 PUSH1 0xC MSTORE CALLER PUSH1 0x0 MSTORE DUP1 PUSH1 0x20 PUSH1 0xC KECCAK256 SSTORE CALLER PUSH32 0xDBF36A107DA19E49527A7176A1BABF963B4B0FF8CDE35EE35D6CD8F1F9AC7E1D PUSH1 0x0 DUP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x7AC JUMPI PUSH1 0x0 DUP4 DUP4 DUP4 DUP2 DUP2 LT PUSH2 0x75D JUMPI PUSH2 0x75D PUSH2 0x2A60 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP PUSH2 0x770 CALLER DUP3 PUSH2 0x1DB3 JUMP JUMPDEST ISZERO PUSH2 0x7A3 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 DUP3 SWAP1 PUSH32 0x8DD3C361EB2366FF27C2DB0EB07B9261F1D052570742AB8C9A0C326F37AA576D SWAP1 PUSH1 0x0 SWAP1 LOG3 JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x741 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x7C5 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH1 0x0 DUP12 DUP12 DUP12 DUP12 DUP12 PUSH2 0x1E62 JUMP JUMPDEST PUSH2 0x7D1 DUP6 CALLER DUP11 DUP8 PUSH2 0x1FD3 JUMP JUMPDEST PUSH2 0x7DD DUP8 DUP10 DUP14 DUP10 PUSH2 0x1FD3 JUMP JUMPDEST PUSH2 0x7E8 DUP8 DUP10 DUP9 PUSH2 0x2030 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP1 DUP12 SWAP1 PUSH32 0x4294F3CFBA9FF22CFA9CB602947F7656AA160C0A6C8FA406A28E12BED6BF2093 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST TIMESTAMP DUP10 GT PUSH2 0x871 JUMPI PUSH1 0x40 MLOAD PUSH32 0xC56873BA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA4D PUSH2 0xA45 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x990 SWAP1 PUSH32 0x4F7264657245524332302875696E74323536206E6F6E63652C75696E74323536 DUP2 MSTORE PUSH32 0x206578706972792C61646472657373207369676E657257616C6C65742C616464 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x72657373207369676E6572546F6B656E2C75696E74323536207369676E657241 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6D6F756E742C0000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x75696E743235362070726F746F636F6C4665652C616464726573732073656E64 PUSH1 0x66 DUP3 ADD MSTORE PUSH32 0x657257616C6C65742C616464726573732073656E646572546F6B656E2C75696E PUSH1 0x86 DUP3 ADD MSTORE PUSH32 0x743235362073656E646572416D6F756E74290000000000000000000000000000 PUSH1 0xA6 DUP3 ADD MSTORE PUSH1 0xB8 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x3 SLOAD SWAP2 DUP5 ADD MSTORE SWAP1 DUP3 ADD DUP16 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP15 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP15 AND PUSH1 0x80 DUP5 ADD MSTORE DUP1 DUP14 AND PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD DUP13 SWAP1 MSTORE PUSH1 0xE0 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE CALLER PUSH2 0x100 DUP4 ADD MSTORE DUP10 AND PUSH2 0x120 DUP3 ADD MSTORE PUSH2 0x140 DUP2 ADD DUP9 SWAP1 MSTORE PUSH2 0x160 ADD JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0x2142 JUMP JUMPDEST DUP6 DUP6 DUP6 PUSH2 0x225A JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xA9C JUMPI PUSH1 0x40 MLOAD PUSH32 0x37E8456B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xAA6 DUP2 DUP13 PUSH2 0x1DB3 JUMP JUMPDEST PUSH2 0xAE4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x91CAB50400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP13 SWAP1 MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND ISZERO PUSH2 0xB79 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 DUP3 AND SWAP2 AND EQ PUSH2 0xB74 JUMPI PUSH1 0x40 MLOAD PUSH32 0x37E8456B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xBDE JUMP JUMPDEST DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xBDE JUMPI PUSH1 0x40 MLOAD PUSH32 0x37E8456B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xBEA DUP7 CALLER DUP12 DUP9 PUSH2 0x1FD3 JUMP JUMPDEST PUSH2 0xBF6 DUP9 DUP11 CALLER DUP11 PUSH2 0x1FD3 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x3 SLOAD PUSH2 0xC38 SWAP2 DUP11 SWAP2 DUP13 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH2 0x2710 SWAP1 PUSH2 0xC29 SWAP1 DUP14 PUSH2 0x2A8F JUMP JUMPDEST PUSH2 0xC33 SWAP2 SWAP1 PUSH2 0x2A38 JUMP JUMPDEST PUSH2 0x1FD3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND SWAP1 DUP13 SWAP1 PUSH32 0x4294F3CFBA9FF22CFA9CB602947F7656AA160C0A6C8FA406A28E12BED6BF2093 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2710 PUSH1 0x2 SLOAD DUP5 PUSH2 0xC9C SWAP2 SWAP1 PUSH2 0x2A8F JUMP JUMPDEST PUSH2 0xCA6 SWAP2 SWAP1 PUSH2 0x2A38 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0xCD0 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST ISZERO PUSH2 0xD8B JUMPI PUSH1 0x7 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x0 SWAP3 PUSH2 0xD76 SWAP3 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD4C 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 0xD70 SWAP2 SWAP1 PUSH2 0x2AA6 JUMP JUMPDEST DUP4 PUSH2 0xDCE JUMP JUMPDEST SWAP1 POP PUSH2 0xD82 DUP2 DUP4 PUSH2 0x2ABF JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x6E8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x389A75E1 PUSH1 0xC MSTORE CALLER PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 PUSH1 0xC KECCAK256 SSTORE CALLER PUSH32 0xFA7B8EAB7DA67F412CC9575ED43464468F9BFBAE89D1675917346CA6D8FE3C92 PUSH1 0x0 DUP1 LOG2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x5 SLOAD PUSH1 0xA PUSH2 0xDE1 SWAP2 SWAP1 PUSH2 0x2BF2 JUMP JUMPDEST PUSH2 0xDEB SWAP2 SWAP1 PUSH2 0x2BFE JUMP JUMPDEST SWAP1 POP PUSH1 0x64 DUP2 DUP5 DUP7 PUSH1 0x6 SLOAD PUSH2 0xDFF SWAP2 SWAP1 PUSH2 0x2A8F JUMP JUMPDEST PUSH2 0xE09 SWAP2 SWAP1 PUSH2 0x2A8F JUMP JUMPDEST PUSH2 0xE13 SWAP2 SWAP1 PUSH2 0x2A38 JUMP JUMPDEST PUSH2 0xE1D SWAP2 SWAP1 PUSH2 0x2A38 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xE2D PUSH2 0x2298 JUMP JUMPDEST PUSH1 0x4D DUP2 GT ISZERO PUSH2 0xE68 JUMPI PUSH1 0x40 MLOAD PUSH32 0xCCA4057D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH32 0xCC5B12DFBDA3644D5F3190B40AD8215D4AAAC870DF5C8112735085679D7CC333 SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0xEAC PUSH2 0x2298 JUMP JUMPDEST PUSH2 0xEB6 PUSH1 0x0 PUSH2 0x22CE JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xEC0 PUSH2 0x2298 JUMP JUMPDEST PUSH2 0x2710 DUP2 LT PUSH2 0xEFB JUMPI PUSH1 0x40 MLOAD PUSH32 0xF37B175B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH32 0xDC0410A296E1E33943A772020D333D5F99319D7FCAD932A484C53889F7AAA2B1 SWAP1 PUSH1 0x20 ADD PUSH2 0xE99 JUMP JUMPDEST PUSH2 0xF38 PUSH2 0x2298 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xF85 JUMPI PUSH1 0x40 MLOAD PUSH32 0x66C0A66E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0x8B2A800CE9E2E7CCDF4741AE0E41B1F16983192291080AE3B78AC4296DDF598A SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH32 0xF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP1 PUSH1 0x0 DUP1 DUP1 DUP4 PUSH2 0x108B PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xA DUP2 MSTORE PUSH32 0x535741505F455243323000000000000000000000000000000000000000000000 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x3 DUP4 MSTORE PUSH32 0x342E330000000000000000000000000000000000000000000000000000000000 SWAP1 DUP4 ADD MSTORE SWAP2 JUMP JUMPDEST SWAP8 SWAP9 SWAP1 SWAP8 SWAP7 POP CHAINID SWAP6 POP ADDRESS SWAP5 POP SWAP2 SWAP3 POP SWAP1 JUMP JUMPDEST PUSH2 0x10A5 PUSH2 0x2298 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x10F2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x71758B7C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0x58FD5D9C33114E6EDF8EA5D30956F8D1A4AB112B004F99928B4BCF1B87D66662 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x7C5 DUP11 DUP11 DUP11 DUP11 DUP11 CALLER DUP12 DUP12 DUP12 DUP12 DUP12 PUSH2 0x1E62 JUMP JUMPDEST PUSH2 0x117C PUSH2 0x2298 JUMP JUMPDEST PUSH1 0x64 DUP2 GT ISZERO PUSH2 0x11B7 JUMPI PUSH1 0x40 MLOAD PUSH32 0xDD1A4E2800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH32 0xB113403A9E8B9F0173354ACC3A5D210C86BE40BB7259C19C55CEA02227C5026F SWAP1 PUSH1 0x20 ADD PUSH2 0xE99 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP2 AND SWAP1 SWAP2 SSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP3 SWAP2 DUP4 SWAP2 PUSH32 0xD7426110292F20FE59E73CCF52124E0F5440A756507C91C7B0A6C50E1EB1A23A SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x12B6 JUMPI PUSH1 0x40 MLOAD PUSH32 0xCD4B78CF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP1 SWAP2 PUSH32 0x30468DE898BDA644E26BAB66E5A2241A3AA6AAF527257F5CA54E0F65204BA14A SWAP2 LOG3 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x7 DUP1 DUP3 MSTORE PUSH2 0x100 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD PUSH1 0xE0 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP PUSH1 0x40 DUP1 MLOAD PUSH2 0x160 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xC0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xE0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x100 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x120 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x140 DUP2 ADD DUP3 SWAP1 MSTORE SWAP2 SWAP3 POP SWAP1 DUP14 DUP2 PUSH1 0x0 ADD DUP2 DUP2 MSTORE POP POP DUP13 DUP2 PUSH1 0x20 ADD DUP2 DUP2 MSTORE POP POP DUP12 DUP2 PUSH1 0x40 ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP11 DUP2 PUSH1 0x60 ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP10 DUP2 PUSH1 0x80 ADD DUP2 DUP2 MSTORE POP POP DUP9 DUP2 PUSH1 0xC0 ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP8 DUP2 PUSH1 0xE0 ADD DUP2 DUP2 MSTORE POP POP DUP7 DUP2 PUSH2 0x100 ADD SWAP1 PUSH1 0xFF AND SWAP1 DUP2 PUSH1 0xFF AND DUP2 MSTORE POP POP DUP6 DUP2 PUSH2 0x120 ADD DUP2 DUP2 MSTORE POP POP DUP5 DUP2 PUSH2 0x140 ADD DUP2 DUP2 MSTORE POP POP DUP15 DUP2 PUSH1 0xA0 ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH1 0x0 DUP2 PUSH1 0x40 ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x15A9 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND JUMPDEST PUSH2 0x1632 DUP2 PUSH2 0x15DD DUP5 PUSH1 0x0 ADD MLOAD DUP6 PUSH1 0x20 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD DUP8 PUSH1 0x60 ADD MLOAD DUP9 PUSH1 0x80 ADD MLOAD DUP10 PUSH1 0xA0 ADD MLOAD DUP11 PUSH1 0xC0 ADD MLOAD DUP12 PUSH1 0xE0 ADD MLOAD PUSH2 0x2334 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP13 SWAP1 MSTORE SWAP1 DUP2 ADD DUP11 SWAP1 MSTORE PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0xF8 DUP14 SWAP1 SHL AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x61 ADD JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH2 0x24FD JUMP JUMPDEST PUSH2 0x1685 JUMPI PUSH32 0x5369676E6174757265496E76616C696400000000000000000000000000000000 DUP5 DUP5 PUSH2 0x1662 DUP2 PUSH2 0x2C11 JUMP JUMPDEST SWAP6 POP DUP2 MLOAD DUP2 LT PUSH2 0x1674 JUMPI PUSH2 0x1674 PUSH2 0x2A60 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x16E3 JUMP JUMPDEST PUSH2 0x1693 DUP2 DUP4 PUSH1 0x0 ADD MLOAD PUSH2 0x68B JUMP JUMPDEST ISZERO PUSH2 0x16E3 JUMPI PUSH32 0x4E6F6E6365416C72656164795573656400000000000000000000000000000000 DUP5 DUP5 PUSH2 0x16C4 DUP2 PUSH2 0x2C11 JUMP JUMPDEST SWAP6 POP DUP2 MLOAD DUP2 LT PUSH2 0x16D6 JUMPI PUSH2 0x16D6 PUSH2 0x2A60 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP JUMPDEST TIMESTAMP DUP3 PUSH1 0x20 ADD MLOAD LT ISZERO PUSH2 0x173A JUMPI PUSH32 0x4F72646572457870697265640000000000000000000000000000000000000000 DUP5 DUP5 PUSH2 0x171B DUP2 PUSH2 0x2C11 JUMP JUMPDEST SWAP6 POP DUP2 MLOAD DUP2 LT PUSH2 0x172D JUMPI PUSH2 0x172D PUSH2 0x2A60 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP JUMPDEST PUSH1 0xA0 DUP3 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0x1952 JUMPI PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0xA0 DUP4 ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP3 SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17D5 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 0x17F9 SWAP2 SWAP1 PUSH2 0x2AA6 JUMP JUMPDEST PUSH1 0xC0 DUP5 ADD MLOAD PUSH1 0xA0 DUP6 ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 SWAP2 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x187B 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 0x189F SWAP2 SWAP1 PUSH2 0x2AA6 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0xE0 ADD MLOAD DUP2 LT ISZERO PUSH2 0x18F8 JUMPI PUSH32 0x53656E646572416C6C6F77616E63654C6F770000000000000000000000000000 DUP7 DUP7 PUSH2 0x18D9 DUP2 PUSH2 0x2C11 JUMP JUMPDEST SWAP8 POP DUP2 MLOAD DUP2 LT PUSH2 0x18EB JUMPI PUSH2 0x18EB PUSH2 0x2A60 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP JUMPDEST DUP4 PUSH1 0xE0 ADD MLOAD DUP3 LT ISZERO PUSH2 0x194F JUMPI PUSH32 0x53656E64657242616C616E63654C6F7700000000000000000000000000000000 DUP7 DUP7 PUSH2 0x1930 DUP2 PUSH2 0x2C11 JUMP JUMPDEST SWAP8 POP DUP2 MLOAD DUP2 LT PUSH2 0x1942 JUMPI PUSH2 0x1942 PUSH2 0x2A60 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP POP JUMPDEST PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x40 DUP1 DUP5 ADD MLOAD SWAP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP3 SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19CD 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 0x19F1 SWAP2 SWAP1 PUSH2 0x2AA6 JUMP JUMPDEST PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x40 DUP1 DUP7 ADD MLOAD SWAP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 SWAP2 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A73 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 0x1A97 SWAP2 SWAP1 PUSH2 0x2AA6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2710 PUSH1 0x2 SLOAD DUP7 PUSH1 0x80 ADD MLOAD PUSH2 0x1AB0 SWAP2 SWAP1 PUSH2 0x2A8F JUMP JUMPDEST PUSH2 0x1ABA SWAP2 SWAP1 PUSH2 0x2A38 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 PUSH1 0x80 ADD MLOAD PUSH2 0x1ACC SWAP2 SWAP1 PUSH2 0x2BFE JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0x1B1E JUMPI PUSH32 0x5369676E6572416C6C6F77616E63654C6F770000000000000000000000000000 DUP8 DUP8 PUSH2 0x1AFF DUP2 PUSH2 0x2C11 JUMP JUMPDEST SWAP9 POP DUP2 MLOAD DUP2 LT PUSH2 0x1B11 JUMPI PUSH2 0x1B11 PUSH2 0x2A60 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP JUMPDEST DUP1 DUP6 PUSH1 0x80 ADD MLOAD PUSH2 0x1B2E SWAP2 SWAP1 PUSH2 0x2BFE JUMP JUMPDEST DUP4 LT ISZERO PUSH2 0x1B80 JUMPI PUSH32 0x5369676E657242616C616E63654C6F7700000000000000000000000000000000 DUP8 DUP8 PUSH2 0x1B61 DUP2 PUSH2 0x2C11 JUMP JUMPDEST SWAP9 POP DUP2 MLOAD DUP2 LT PUSH2 0x1B73 JUMPI PUSH2 0x1B73 PUSH2 0x2A60 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP JUMPDEST DUP7 MLOAD DUP7 EQ PUSH2 0x1B8C JUMPI DUP6 DUP8 MSTORE JUMPDEST POP SWAP5 SWAP6 POP POP POP POP POP POP SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1BAC PUSH2 0x2298 JUMP JUMPDEST PUSH2 0x2710 DUP2 LT PUSH2 0x1BE7 JUMPI PUSH1 0x40 MLOAD PUSH32 0xF67BD49C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH32 0x312CC1A9B7287129A22395B9572A3C9ED09CE456F02B519EFB34E12BB429EED0 SWAP1 PUSH1 0x20 ADD PUSH2 0xE99 JUMP JUMPDEST PUSH2 0x1C24 PUSH2 0x2298 JUMP JUMPDEST PUSH4 0x389A75E1 PUSH1 0xC MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0xC KECCAK256 DUP1 SLOAD TIMESTAMP GT ISZERO PUSH2 0x1C4C JUMPI PUSH4 0x6F5E8818 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x1C REVERT JUMPDEST PUSH1 0x0 SWAP1 SSTORE PUSH2 0x1C59 DUP2 PUSH2 0x22CE JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1C64 PUSH2 0x2298 JUMP JUMPDEST DUP1 PUSH1 0x60 SHL PUSH2 0x1C7A JUMPI PUSH4 0x7448FBAE PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x1C REVERT JUMPDEST PUSH2 0x1C59 DUP2 PUSH2 0x22CE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1D9A SWAP1 PUSH32 0x4F7264657245524332302875696E74323536206E6F6E63652C75696E74323536 DUP2 MSTORE PUSH32 0x206578706972792C61646472657373207369676E657257616C6C65742C616464 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x72657373207369676E6572546F6B656E2C75696E74323536207369676E657241 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6D6F756E742C0000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x75696E743235362070726F746F636F6C4665652C616464726573732073656E64 PUSH1 0x66 DUP3 ADD MSTORE PUSH32 0x657257616C6C65742C616464726573732073656E646572546F6B656E2C75696E PUSH1 0x86 DUP3 ADD MSTORE PUSH32 0x743235362073656E646572416D6F756E74290000000000000000000000000000 PUSH1 0xA6 DUP3 ADD MSTORE PUSH1 0xB8 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1DC2 PUSH2 0x100 DUP5 PUSH2 0x2A38 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1DD2 PUSH2 0x100 DUP6 PUSH2 0x2A4C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 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 SWAP1 SWAP2 POP PUSH1 0x1 DUP2 DUP4 SHR DUP2 AND SWAP1 SUB PUSH2 0x1E1D JUMPI PUSH1 0x0 SWAP4 POP POP POP POP PUSH2 0x6E8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 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 PUSH1 0x1 SWAP2 DUP3 SWAP1 SHL SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST TIMESTAMP DUP11 GT PUSH2 0x1E9B JUMPI PUSH1 0x40 MLOAD PUSH32 0xC56873BA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP11 SWAP2 AND ISZERO PUSH2 0x1EF3 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND JUMPDEST PUSH2 0x1F4C DUP2 PUSH2 0x1F07 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 PUSH2 0x2334 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 DUP2 ADD DUP7 SWAP1 MSTORE PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0xF8 DUP10 SWAP1 SHL AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x61 ADD PUSH2 0x161E JUMP JUMPDEST PUSH2 0x1F82 JUMPI PUSH1 0x40 MLOAD PUSH32 0x37E8456B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1F8C DUP2 DUP14 PUSH2 0x1DB3 JUMP JUMPDEST PUSH2 0x1FC5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x91CAB50400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP14 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xADB JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 PUSH1 0x60 MSTORE DUP3 PUSH1 0x40 MSTORE DUP4 PUSH1 0x60 SHL PUSH1 0x2C MSTORE PUSH16 0x23B872DD000000000000000000000000 PUSH1 0xC MSTORE PUSH1 0x20 PUSH1 0x0 PUSH1 0x64 PUSH1 0x1C PUSH1 0x0 DUP10 GAS CALL RETURNDATASIZE ISZERO PUSH1 0x1 PUSH1 0x0 MLOAD EQ OR AND PUSH2 0x2022 JUMPI PUSH4 0x7939F424 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x1C REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 MSTORE PUSH1 0x40 MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2710 PUSH1 0x2 SLOAD DUP4 PUSH2 0x2043 SWAP2 SWAP1 PUSH2 0x2A8F JUMP JUMPDEST PUSH2 0x204D SWAP2 SWAP1 PUSH2 0x2A38 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x213C JUMPI PUSH1 0x7 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0x20D1 JUMPI PUSH1 0x7 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x20CE SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH2 0xD2F JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x2113 JUMPI PUSH2 0x20E3 DUP6 DUP6 CALLER DUP5 PUSH2 0x1FD3 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x210E SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xC33 DUP6 DUP8 PUSH2 0x2ABF JUMP JUMPDEST PUSH2 0x213A JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x213A SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH2 0x1FD3 JUMP JUMPDEST POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH32 0x0 ADDRESS EQ PUSH32 0x0 CHAINID EQ AND PUSH2 0x2235 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 MSTORE PUSH32 0x0 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE CHAINID PUSH1 0x60 DUP3 ADD MSTORE ADDRESS PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 SWAP1 KECCAK256 JUMPDEST PUSH8 0x1901000000000000 PUSH1 0x0 MSTORE DUP1 PUSH1 0x1A MSTORE DUP2 PUSH1 0x3A MSTORE PUSH1 0x42 PUSH1 0x18 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x3A MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP6 PUSH1 0x0 MSTORE PUSH1 0xFF DUP6 AND PUSH1 0x20 MSTORE DUP4 PUSH1 0x40 MSTORE DUP3 PUSH1 0x60 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH1 0x80 PUSH1 0x0 PUSH1 0x1 GAS STATICCALL POP PUSH1 0x0 PUSH1 0x60 MSTORE RETURNDATASIZE PUSH1 0x60 XOR MLOAD SWAP2 POP DUP1 PUSH1 0x40 MSTORE POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74873927 SLOAD CALLER EQ PUSH2 0xEB6 JUMPI PUSH4 0x82B42900 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x1C REVERT JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74873927 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x0 DUP1 LOG3 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24F0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2450 SWAP1 PUSH32 0x4F7264657245524332302875696E74323536206E6F6E63652C75696E74323536 DUP2 MSTORE PUSH32 0x206578706972792C61646472657373207369676E657257616C6C65742C616464 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x72657373207369676E6572546F6B656E2C75696E74323536207369676E657241 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6D6F756E742C0000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x75696E743235362070726F746F636F6C4665652C616464726573732073656E64 PUSH1 0x66 DUP3 ADD MSTORE PUSH32 0x657257616C6C65742C616464726573732073656E646572546F6B656E2C75696E PUSH1 0x86 DUP3 ADD MSTORE PUSH32 0x743235362073656E646572416D6F756E74290000000000000000000000000000 PUSH1 0xA6 DUP3 ADD MSTORE PUSH1 0xB8 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x2 SLOAD SWAP2 DUP5 ADD MSTORE SWAP1 DUP3 ADD DUP13 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP12 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP12 AND PUSH1 0x80 DUP5 ADD MSTORE DUP1 DUP11 AND PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD DUP10 SWAP1 MSTORE PUSH1 0xE0 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 DUP8 AND PUSH2 0x100 DUP4 ADD MSTORE DUP6 AND PUSH2 0x120 DUP3 ADD MSTORE PUSH2 0x140 DUP2 ADD DUP5 SWAP1 MSTORE PUSH2 0x160 ADD PUSH2 0xA2A JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH1 0x0 DUP4 ISZERO PUSH2 0xD8B JUMPI PUSH1 0x40 MLOAD DUP4 PUSH1 0x0 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 MSTORE PUSH1 0x40 DUP4 MLOAD SUB PUSH2 0x257A JUMPI PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x1B DUP2 PUSH1 0xFF SHR ADD PUSH1 0x20 MSTORE DUP1 PUSH1 0x1 SHL PUSH1 0x1 SHR PUSH1 0x60 MSTORE POP PUSH1 0x20 PUSH1 0x1 PUSH1 0x80 PUSH1 0x0 PUSH1 0x1 GAS STATICCALL DUP1 MLOAD DUP7 XOR RETURNDATASIZE ISZERO OR PUSH2 0x2578 JUMPI POP PUSH1 0x0 PUSH1 0x60 MSTORE PUSH1 0x40 MSTORE POP PUSH1 0x1 PUSH2 0xD8B JUMP JUMPDEST POP JUMPDEST PUSH1 0x41 DUP4 MLOAD SUB PUSH2 0x25C0 JUMPI PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x0 BYTE PUSH1 0x20 MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 MSTORE PUSH1 0x20 PUSH1 0x1 PUSH1 0x80 PUSH1 0x0 PUSH1 0x1 GAS STATICCALL DUP1 MLOAD DUP7 XOR RETURNDATASIZE ISZERO OR PUSH2 0x25BE JUMPI POP PUSH1 0x0 PUSH1 0x60 MSTORE PUSH1 0x40 MSTORE POP PUSH1 0x1 PUSH2 0xD8B JUMP JUMPDEST POP JUMPDEST PUSH1 0x0 PUSH1 0x60 MSTORE DUP1 PUSH1 0x40 MSTORE PUSH4 0x1626BA7E PUSH1 0xE0 SHL DUP1 DUP3 MSTORE DUP5 PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD PUSH1 0x40 DUP2 MSTORE DUP5 MLOAD PUSH1 0x20 ADD DUP1 PUSH1 0x44 DUP6 ADD DUP3 DUP9 PUSH1 0x4 GAS STATICCALL POP POP PUSH1 0x20 DUP2 PUSH1 0x44 RETURNDATASIZE ADD DUP6 DUP11 GAS STATICCALL SWAP1 MLOAD SWAP1 SWAP2 EQ AND SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2633 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x264B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2654 DUP4 PUSH2 0x260F JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2675 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x268D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x26A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x26B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x26C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x2633 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x160 DUP13 DUP15 SUB SLT ISZERO PUSH2 0x270A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2713 DUP13 PUSH2 0x260F JUMP JUMPDEST SWAP11 POP PUSH1 0x20 DUP13 ADD CALLDATALOAD SWAP10 POP PUSH1 0x40 DUP13 ADD CALLDATALOAD SWAP9 POP PUSH2 0x272F PUSH1 0x60 DUP14 ADD PUSH2 0x260F JUMP JUMPDEST SWAP8 POP PUSH2 0x273D PUSH1 0x80 DUP14 ADD PUSH2 0x260F JUMP JUMPDEST SWAP7 POP PUSH1 0xA0 DUP13 ADD CALLDATALOAD SWAP6 POP PUSH2 0x2752 PUSH1 0xC0 DUP14 ADD PUSH2 0x260F JUMP JUMPDEST SWAP5 POP PUSH1 0xE0 DUP13 ADD CALLDATALOAD SWAP4 POP PUSH2 0x2768 PUSH2 0x100 DUP14 ADD PUSH2 0x26D7 JUMP JUMPDEST SWAP3 POP PUSH2 0x120 DUP13 ADD CALLDATALOAD SWAP2 POP PUSH2 0x140 DUP13 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP12 POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP1 SWAP4 SWAP7 SWAP10 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x140 DUP12 DUP14 SUB SLT ISZERO PUSH2 0x27AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP11 CALLDATALOAD SWAP10 POP PUSH1 0x20 DUP12 ADD CALLDATALOAD SWAP9 POP PUSH2 0x27C1 PUSH1 0x40 DUP13 ADD PUSH2 0x260F JUMP JUMPDEST SWAP8 POP PUSH2 0x27CF PUSH1 0x60 DUP13 ADD PUSH2 0x260F JUMP JUMPDEST SWAP7 POP PUSH1 0x80 DUP12 ADD CALLDATALOAD SWAP6 POP PUSH2 0x27E4 PUSH1 0xA0 DUP13 ADD PUSH2 0x260F JUMP JUMPDEST SWAP5 POP PUSH1 0xC0 DUP12 ADD CALLDATALOAD SWAP4 POP PUSH2 0x27F9 PUSH1 0xE0 DUP13 ADD PUSH2 0x26D7 JUMP JUMPDEST SWAP3 POP PUSH2 0x100 DUP12 ADD CALLDATALOAD SWAP2 POP PUSH2 0x120 DUP12 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x282D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x284E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2867 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD8B DUP3 PUSH2 0x260F JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2896 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x287A JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP9 AND DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 PUSH1 0xE0 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2911 PUSH1 0xE0 DUP5 ADD DUP11 PUSH2 0x2870 JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x2923 DUP2 DUP11 PUSH2 0x2870 JUMP JUMPDEST PUSH1 0x60 DUP6 ADD DUP10 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD DUP8 SWAP1 MSTORE DUP5 DUP2 SUB PUSH1 0xC0 DUP7 ADD MSTORE DUP6 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP9 ADD SWAP4 POP SWAP1 SWAP2 ADD SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2984 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2968 JUMP JUMPDEST POP SWAP1 SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP 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 0x29CE JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x29B2 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2A47 JUMPI PUSH2 0x2A47 PUSH2 0x29DA JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2A5B JUMPI PUSH2 0x2A5B PUSH2 0x29DA JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x6E8 JUMPI PUSH2 0x6E8 PUSH2 0x2A09 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2AB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x6E8 JUMPI PUSH2 0x6E8 PUSH2 0x2A09 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 JUMPDEST DUP1 DUP6 GT ISZERO PUSH2 0x2B2B JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x2B11 JUMPI PUSH2 0x2B11 PUSH2 0x2A09 JUMP JUMPDEST DUP1 DUP6 AND ISZERO PUSH2 0x2B1E JUMPI SWAP2 DUP2 MUL SWAP2 JUMPDEST SWAP4 DUP5 SHR SWAP4 SWAP1 DUP1 MUL SWAP1 PUSH2 0x2AD7 JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2B42 JUMPI POP PUSH1 0x1 PUSH2 0x6E8 JUMP JUMPDEST DUP2 PUSH2 0x2B4F JUMPI POP PUSH1 0x0 PUSH2 0x6E8 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x2B65 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x2B6F JUMPI PUSH2 0x2B8B JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x6E8 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x2B80 JUMPI PUSH2 0x2B80 PUSH2 0x2A09 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x6E8 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x2BAE JUMPI POP DUP2 DUP2 EXP PUSH2 0x6E8 JUMP JUMPDEST PUSH2 0x2BB8 DUP4 DUP4 PUSH2 0x2AD2 JUMP JUMPDEST DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x2BEA JUMPI PUSH2 0x2BEA PUSH2 0x2A09 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD8B DUP4 DUP4 PUSH2 0x2B33 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x6E8 JUMPI PUSH2 0x6E8 PUSH2 0x2A09 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x2C42 JUMPI PUSH2 0x2C42 PUSH2 0x2A09 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURN SSTORE 0xC0 0xD8 0xCE CHAINID 0xA5 0x29 RETURNDATASIZE BASEFEE 0x1E 0xC8 0x2F 0xB1 CALLDATALOAD DUP5 RETURNDATASIZE EXP LOG3 PUSH26 0x29F048C3B60D1F2A4231747764736F6C634300081700338B73C3 0xC6 SWAP12 0xB8 INVALID RETURNDATASIZE MLOAD 0x2E 0xCC 0x4C 0xF7 MSIZE 0xCC PUSH26 0x239F7B179B0FFACAA9A75D522B39400F00000000000000000000 ","sourceMap":"549:21883:0:-:0;;;2158:737;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2157:4:5;2119:45;;2191:13;2174:30;;2215:18;;2331:23;3164:19:0;;;;;;;;;;;-1:-1:-1;;;3164:19:0;;;;;;;;3189:15;;;;;;;;;;;-1:-1:-1;;;3189:15:0;;;;3164:19;3032:177;2331:23:5;2431:22;;;;;;;2545:25;;;;;;;;;2580:26;;;;2616:32;;;;2828:4;2822:11;;-1:-1:-1;;;;;;;;;;;2883:27:5;;2934:12;;;2927:30;;;;2981:12;;;2974:33;3045:9;3038:4;3031:12;;3024:31;3093:9;3086:4;3079:12;;3072:31;3146:4;3133:18;;3184:34;;-1:-1:-1;;992:5:0;2321:27;;2317:60;;2357:20;;-1:-1:-1;;;2357:20:0;;;;;;;;;;;2317:60;992:5;2387:17;:32;2383:70;;2428:25;;-1:-1:-1;;;2428:25:0;;;;;;;;;;;2383:70;-1:-1:-1;;;;;2463:32:0;;2459:71;;2504:26;;-1:-1:-1;;;2504:26:0;;;;;;;;;;;2459:71;1084:3;2540:9;:19;2536:44;;;2568:12;;-1:-1:-1;;;2568:12:0;;;;;;;;;;;2536:44;1128:2;2590:11;:23;2586:50;;;2622:14;;-1:-1:-1;;;2622:14:0;;;;;;;;;;;2586:50;2643:28;2660:10;2643:16;:28::i;:::-;2697:18;:16;:18::i;:::-;2678:37;;2722:11;:26;;;;2754:16;:36;;;;2796:17;:38;;-1:-1:-1;;;;;;2796:38:0;-1:-1:-1;;;;;2796:38:0;;;;;;;;;;2840:8;:20;;;;2866:10;:24;549:21883;;4883:1190:2;-1:-1:-1;;;;;5793:26:2;-1:-1:-1;;5876:29:2;;;5793:26;6031:1;5991:38;6031:1;;5980:63;4883:1190;:::o;4799:347:5:-;5017:22;;5057:35;9069:14;;9114:11;;9255:9;9252:25;9225:9;9222:28;;;9218:60;9211:68;;8955:340;5057:35;5053:76;;;-1:-1:-1;8383:15:5;;8426:18;;8545:4;8539:11;;-1:-1:-1;;;;;;;;;;;8596:27:5;;8650:4;8643:12;;8636:31;;;;8701:12;;8694:33;8761:9;8754:4;8747:12;;8740:31;8805:9;8798:4;8791:12;;8784:31;8854:4;8841:18;;;4799:347::o;5053:76::-;4799:347;:::o;14:536:8:-;120:6;128;136;144;152;205:3;193:9;184:7;180:23;176:33;173:53;;;222:1;219;212:12;173:53;245:16;;301:2;286:18;;280:25;348:2;333:18;;327:25;245:16;;-1:-1:-1;280:25:8;-1:-1:-1;;;;;;381:31:8;;371:42;;361:70;;427:1;424;417:12;361:70;495:2;480:18;;474:25;539:3;524:19;;;518:26;14:536;;;;-1:-1:-1;450:5:8;474:25;518:26;14:536;-1:-1:-1;;;14:536:8:o;:::-;549:21883:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@DOMAIN_SEPARATOR_23":{"entryPoint":null,"id":23,"parameterSlots":0,"returnSlots":0},"@FEE_DIVISOR_35":{"entryPoint":null,"id":35,"parameterSlots":0,"returnSlots":0},"@ORDER_TYPEHASH_32":{"entryPoint":7299,"id":32,"parameterSlots":0,"returnSlots":0},"@_buildDomainSeparator_2728":{"entryPoint":null,"id":2728,"parameterSlots":0,"returnSlots":1},"@_cachedDomainSeparatorInvalidated_2744":{"entryPoint":null,"id":2744,"parameterSlots":0,"returnSlots":1},"@_checkOwner_1779":{"entryPoint":8856,"id":1779,"parameterSlots":0,"returnSlots":0},"@_check_1321":{"entryPoint":7778,"id":1321,"parameterSlots":11,"returnSlots":0},"@_domainNameAndVersionMayChange_2567":{"entryPoint":null,"id":2567,"parameterSlots":0,"returnSlots":1},"@_domainNameAndVersion_169":{"entryPoint":null,"id":169,"parameterSlots":0,"returnSlots":2},"@_getOrderHash_1362":{"entryPoint":9012,"id":1362,"parameterSlots":8,"returnSlots":1},"@_guardInitializeOwner_1745":{"entryPoint":null,"id":1745,"parameterSlots":0,"returnSlots":1},"@_hashTypedData_2628":{"entryPoint":8514,"id":2628,"parameterSlots":1,"returnSlots":1},"@_markNonceAsUsed_1231":{"entryPoint":7603,"id":1231,"parameterSlots":2,"returnSlots":1},"@_ownershipHandoverValidFor_1790":{"entryPoint":null,"id":1790,"parameterSlots":0,"returnSlots":1},"@_setOwner_1773":{"entryPoint":8910,"id":1773,"parameterSlots":1,"returnSlots":0},"@_transferProtocolFee_1447":{"entryPoint":8240,"id":1447,"parameterSlots":3,"returnSlots":0},"@authorize_645":{"entryPoint":4713,"id":645,"parameterSlots":1,"returnSlots":0},"@authorized_56":{"entryPoint":null,"id":56,"parameterSlots":0,"returnSlots":0},"@bonusMax_66":{"entryPoint":null,"id":66,"parameterSlots":0,"returnSlots":0},"@bonusScale_64":{"entryPoint":null,"id":64,"parameterSlots":0,"returnSlots":0},"@calculateBonus_1082":{"entryPoint":3534,"id":1082,"parameterSlots":2,"returnSlots":1},"@calculateProtocolFee_1133":{"entryPoint":3208,"id":1133,"parameterSlots":2,"returnSlots":1},"@cancelOwnershipHandover_1839":{"entryPoint":3474,"id":1839,"parameterSlots":0,"returnSlots":0},"@cancel_711":{"entryPoint":1854,"id":711,"parameterSlots":2,"returnSlots":0},"@check_1048":{"entryPoint":4913,"id":1048,"parameterSlots":11,"returnSlots":1},"@completeOwnershipHandover_1853":{"entryPoint":7196,"id":1853,"parameterSlots":1,"returnSlots":0},"@eip712Domain_2679":{"entryPoint":4084,"id":2679,"parameterSlots":0,"returnSlots":7},"@isValidSignatureNow_2958":{"entryPoint":9469,"id":2958,"parameterSlots":3,"returnSlots":1},"@nonceUsed_1170":{"entryPoint":1675,"id":1170,"parameterSlots":2,"returnSlots":1},"@owner_1861":{"entryPoint":null,"id":1861,"parameterSlots":0,"returnSlots":1},"@ownershipHandoverExpiresAt_1871":{"entryPoint":null,"id":1871,"parameterSlots":1,"returnSlots":1},"@protocolFeeLight_60":{"entryPoint":null,"id":60,"parameterSlots":0,"returnSlots":0},"@protocolFeeWallet_62":{"entryPoint":null,"id":62,"parameterSlots":0,"returnSlots":0},"@protocolFee_58":{"entryPoint":null,"id":58,"parameterSlots":0,"returnSlots":0},"@renounceOwnership_1818":{"entryPoint":3748,"id":1818,"parameterSlots":0,"returnSlots":0},"@requestOwnershipHandover_1833":{"entryPoint":1774,"id":1833,"parameterSlots":0,"returnSlots":0},"@revoke_670":{"entryPoint":4588,"id":670,"parameterSlots":0,"returnSlots":0},"@safeTransferFrom_2866":{"entryPoint":8147,"id":2866,"parameterSlots":4,"returnSlots":0},"@setBonusMax_563":{"entryPoint":4468,"id":563,"parameterSlots":1,"returnSlots":0},"@setBonusScale_587":{"entryPoint":3621,"id":587,"parameterSlots":1,"returnSlots":0},"@setProtocolFeeLight_512":{"entryPoint":7076,"id":512,"parameterSlots":1,"returnSlots":0},"@setProtocolFeeWallet_539":{"entryPoint":3888,"id":539,"parameterSlots":1,"returnSlots":0},"@setProtocolFee_488":{"entryPoint":3768,"id":488,"parameterSlots":1,"returnSlots":0},"@setStaking_614":{"entryPoint":4253,"id":614,"parameterSlots":1,"returnSlots":0},"@stakingToken_68":{"entryPoint":null,"id":68,"parameterSlots":0,"returnSlots":0},"@swapAnySender_317":{"entryPoint":1969,"id":317,"parameterSlots":11,"returnSlots":0},"@swapLight_464":{"entryPoint":2104,"id":464,"parameterSlots":10,"returnSlots":0},"@swap_242":{"entryPoint":4449,"id":242,"parameterSlots":11,"returnSlots":0},"@transferOwnership_1804":{"entryPoint":7260,"id":1804,"parameterSlots":1,"returnSlots":0},"@tryRecover_2413":{"entryPoint":8794,"id":2413,"parameterSlots":4,"returnSlots":1},"abi_decode_address":{"entryPoint":9743,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":10325,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":9784,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256t_uint256t_addresst_addresst_uint256t_addresst_uint256t_uint8t_bytes32t_bytes32":{"entryPoint":9960,"id":null,"parameterSlots":2,"returnSlots":11},"abi_decode_tuple_t_array$_t_uint256_$dyn_calldata_ptr":{"entryPoint":9826,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256":{"entryPoint":10300,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":10918,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_uint256":{"entryPoint":10266,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256t_uint256t_addresst_addresst_uint256t_addresst_uint256t_uint8t_bytes32t_bytes32":{"entryPoint":10122,"id":null,"parameterSlots":2,"returnSlots":10},"abi_decode_uint8":{"entryPoint":9943,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_string":{"entryPoint":10352,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes32_t_bytes32_t_uint8__to_t_bytes32_t_bytes32_t_uint8__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_packed_t_stringliteral_a35663569bd702bea491990a007131496e4d3753f9234d1b7e68f8b412726917_t_stringliteral_6ba965eabc6eaeed812e8920669228dfe87f072ba49959aba6545388ff29ea5b__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":10646,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes1_t_string_memory_ptr_t_string_memory_ptr_t_uint256_t_address_t_bytes32_t_array$_t_uint256_$dyn_memory_ptr__to_t_bytes1_t_string_memory_ptr_t_string_memory_ptr_t_uint256_t_address_t_bytes32_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":10452,"id":null,"parameterSlots":8,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_uint256_t_uint256_t_address_t_address_t_uint256_t_uint256_t_address_t_address_t_uint256__to_t_bytes32_t_uint256_t_uint256_t_address_t_address_t_uint256_t_uint256_t_address_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":11,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":11262,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_t_uint256":{"entryPoint":10808,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_helper":{"entryPoint":10962,"id":null,"parameterSlots":2,"returnSlots":2},"checked_exp_t_uint256_t_uint256":{"entryPoint":11250,"id":null,"parameterSlots":2,"returnSlots":1},"checked_exp_unsigned":{"entryPoint":11059,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint256":{"entryPoint":10895,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":10943,"id":null,"parameterSlots":2,"returnSlots":1},"increment_t_uint256":{"entryPoint":11281,"id":null,"parameterSlots":1,"returnSlots":1},"mod_t_uint256":{"entryPoint":10828,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x11":{"entryPoint":10761,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":10714,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":10848,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:12564:8","nodeType":"YulBlock","src":"0:12564:8","statements":[{"nativeSrc":"6:3:8","nodeType":"YulBlock","src":"6:3:8","statements":[]},{"body":{"nativeSrc":"63:147:8","nodeType":"YulBlock","src":"63:147:8","statements":[{"nativeSrc":"73:29:8","nodeType":"YulAssignment","src":"73:29:8","value":{"arguments":[{"name":"offset","nativeSrc":"95:6:8","nodeType":"YulIdentifier","src":"95:6:8"}],"functionName":{"name":"calldataload","nativeSrc":"82:12:8","nodeType":"YulIdentifier","src":"82:12:8"},"nativeSrc":"82:20:8","nodeType":"YulFunctionCall","src":"82:20:8"},"variableNames":[{"name":"value","nativeSrc":"73:5:8","nodeType":"YulIdentifier","src":"73:5:8"}]},{"body":{"nativeSrc":"188:16:8","nodeType":"YulBlock","src":"188:16:8","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"197:1:8","nodeType":"YulLiteral","src":"197:1:8","type":"","value":"0"},{"kind":"number","nativeSrc":"200:1:8","nodeType":"YulLiteral","src":"200:1:8","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"190:6:8","nodeType":"YulIdentifier","src":"190:6:8"},"nativeSrc":"190:12:8","nodeType":"YulFunctionCall","src":"190:12:8"},"nativeSrc":"190:12:8","nodeType":"YulExpressionStatement","src":"190:12:8"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"124:5:8","nodeType":"YulIdentifier","src":"124:5:8"},{"arguments":[{"name":"value","nativeSrc":"135:5:8","nodeType":"YulIdentifier","src":"135:5:8"},{"kind":"number","nativeSrc":"142:42:8","nodeType":"YulLiteral","src":"142:42:8","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"131:3:8","nodeType":"YulIdentifier","src":"131:3:8"},"nativeSrc":"131:54:8","nodeType":"YulFunctionCall","src":"131:54:8"}],"functionName":{"name":"eq","nativeSrc":"121:2:8","nodeType":"YulIdentifier","src":"121:2:8"},"nativeSrc":"121:65:8","nodeType":"YulFunctionCall","src":"121:65:8"}],"functionName":{"name":"iszero","nativeSrc":"114:6:8","nodeType":"YulIdentifier","src":"114:6:8"},"nativeSrc":"114:73:8","nodeType":"YulFunctionCall","src":"114:73:8"},"nativeSrc":"111:93:8","nodeType":"YulIf","src":"111:93:8"}]},"name":"abi_decode_address","nativeSrc":"14:196:8","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"42:6:8","nodeType":"YulTypedName","src":"42:6:8","type":""}],"returnVariables":[{"name":"value","nativeSrc":"53:5:8","nodeType":"YulTypedName","src":"53:5:8","type":""}],"src":"14:196:8"},{"body":{"nativeSrc":"302:167:8","nodeType":"YulBlock","src":"302:167:8","statements":[{"body":{"nativeSrc":"348:16:8","nodeType":"YulBlock","src":"348:16:8","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"357:1:8","nodeType":"YulLiteral","src":"357:1:8","type":"","value":"0"},{"kind":"number","nativeSrc":"360:1:8","nodeType":"YulLiteral","src":"360:1:8","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"350:6:8","nodeType":"YulIdentifier","src":"350:6:8"},"nativeSrc":"350:12:8","nodeType":"YulFunctionCall","src":"350:12:8"},"nativeSrc":"350:12:8","nodeType":"YulExpressionStatement","src":"350:12:8"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"323:7:8","nodeType":"YulIdentifier","src":"323:7:8"},{"name":"headStart","nativeSrc":"332:9:8","nodeType":"YulIdentifier","src":"332:9:8"}],"functionName":{"name":"sub","nativeSrc":"319:3:8","nodeType":"YulIdentifier","src":"319:3:8"},"nativeSrc":"319:23:8","nodeType":"YulFunctionCall","src":"319:23:8"},{"kind":"number","nativeSrc":"344:2:8","nodeType":"YulLiteral","src":"344:2:8","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"315:3:8","nodeType":"YulIdentifier","src":"315:3:8"},"nativeSrc":"315:32:8","nodeType":"YulFunctionCall","src":"315:32:8"},"nativeSrc":"312:52:8","nodeType":"YulIf","src":"312:52:8"},{"nativeSrc":"373:39:8","nodeType":"YulAssignment","src":"373:39:8","value":{"arguments":[{"name":"headStart","nativeSrc":"402:9:8","nodeType":"YulIdentifier","src":"402:9:8"}],"functionName":{"name":"abi_decode_address","nativeSrc":"383:18:8","nodeType":"YulIdentifier","src":"383:18:8"},"nativeSrc":"383:29:8","nodeType":"YulFunctionCall","src":"383:29:8"},"variableNames":[{"name":"value0","nativeSrc":"373:6:8","nodeType":"YulIdentifier","src":"373:6:8"}]},{"nativeSrc":"421:42:8","nodeType":"YulAssignment","src":"421:42:8","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"448:9:8","nodeType":"YulIdentifier","src":"448:9:8"},{"kind":"number","nativeSrc":"459:2:8","nodeType":"YulLiteral","src":"459:2:8","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"444:3:8","nodeType":"YulIdentifier","src":"444:3:8"},"nativeSrc":"444:18:8","nodeType":"YulFunctionCall","src":"444:18:8"}],"functionName":{"name":"calldataload","nativeSrc":"431:12:8","nodeType":"YulIdentifier","src":"431:12:8"},"nativeSrc":"431:32:8","nodeType":"YulFunctionCall","src":"431:32:8"},"variableNames":[{"name":"value1","nativeSrc":"421:6:8","nodeType":"YulIdentifier","src":"421:6:8"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nativeSrc":"215:254:8","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"260:9:8","nodeType":"YulTypedName","src":"260:9:8","type":""},{"name":"dataEnd","nativeSrc":"271:7:8","nodeType":"YulTypedName","src":"271:7:8","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"283:6:8","nodeType":"YulTypedName","src":"283:6:8","type":""},{"name":"value1","nativeSrc":"291:6:8","nodeType":"YulTypedName","src":"291:6:8","type":""}],"src":"215:254:8"},{"body":{"nativeSrc":"569:92:8","nodeType":"YulBlock","src":"569:92:8","statements":[{"nativeSrc":"579:26:8","nodeType":"YulAssignment","src":"579:26:8","value":{"arguments":[{"name":"headStart","nativeSrc":"591:9:8","nodeType":"YulIdentifier","src":"591:9:8"},{"kind":"number","nativeSrc":"602:2:8","nodeType":"YulLiteral","src":"602:2:8","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"587:3:8","nodeType":"YulIdentifier","src":"587:3:8"},"nativeSrc":"587:18:8","nodeType":"YulFunctionCall","src":"587:18:8"},"variableNames":[{"name":"tail","nativeSrc":"579:4:8","nodeType":"YulIdentifier","src":"579:4:8"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"621:9:8","nodeType":"YulIdentifier","src":"621:9:8"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"646:6:8","nodeType":"YulIdentifier","src":"646:6:8"}],"functionName":{"name":"iszero","nativeSrc":"639:6:8","nodeType":"YulIdentifier","src":"639:6:8"},"nativeSrc":"639:14:8","nodeType":"YulFunctionCall","src":"639:14:8"}],"functionName":{"name":"iszero","nativeSrc":"632:6:8","nodeType":"YulIdentifier","src":"632:6:8"},"nativeSrc":"632:22:8","nodeType":"YulFunctionCall","src":"632:22:8"}],"functionName":{"name":"mstore","nativeSrc":"614:6:8","nodeType":"YulIdentifier","src":"614:6:8"},"nativeSrc":"614:41:8","nodeType":"YulFunctionCall","src":"614:41:8"},"nativeSrc":"614:41:8","nodeType":"YulExpressionStatement","src":"614:41:8"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nativeSrc":"474:187:8","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"538:9:8","nodeType":"YulTypedName","src":"538:9:8","type":""},{"name":"value0","nativeSrc":"549:6:8","nodeType":"YulTypedName","src":"549:6:8","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"560:4:8","nodeType":"YulTypedName","src":"560:4:8","type":""}],"src":"474:187:8"},{"body":{"nativeSrc":"771:510:8","nodeType":"YulBlock","src":"771:510:8","statements":[{"body":{"nativeSrc":"817:16:8","nodeType":"YulBlock","src":"817:16:8","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"826:1:8","nodeType":"YulLiteral","src":"826:1:8","type":"","value":"0"},{"kind":"number","nativeSrc":"829:1:8","nodeType":"YulLiteral","src":"829:1:8","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"819:6:8","nodeType":"YulIdentifier","src":"819:6:8"},"nativeSrc":"819:12:8","nodeType":"YulFunctionCall","src":"819:12:8"},"nativeSrc":"819:12:8","nodeType":"YulExpressionStatement","src":"819:12:8"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"792:7:8","nodeType":"YulIdentifier","src":"792:7:8"},{"name":"headStart","nativeSrc":"801:9:8","nodeType":"YulIdentifier","src":"801:9:8"}],"functionName":{"name":"sub","nativeSrc":"788:3:8","nodeType":"YulIdentifier","src":"788:3:8"},"nativeSrc":"788:23:8","nodeType":"YulFunctionCall","src":"788:23:8"},{"kind":"number","nativeSrc":"813:2:8","nodeType":"YulLiteral","src":"813:2:8","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"784:3:8","nodeType":"YulIdentifier","src":"784:3:8"},"nativeSrc":"784:32:8","nodeType":"YulFunctionCall","src":"784:32:8"},"nativeSrc":"781:52:8","nodeType":"YulIf","src":"781:52:8"},{"nativeSrc":"842:37:8","nodeType":"YulVariableDeclaration","src":"842:37:8","value":{"arguments":[{"name":"headStart","nativeSrc":"869:9:8","nodeType":"YulIdentifier","src":"869:9:8"}],"functionName":{"name":"calldataload","nativeSrc":"856:12:8","nodeType":"YulIdentifier","src":"856:12:8"},"nativeSrc":"856:23:8","nodeType":"YulFunctionCall","src":"856:23:8"},"variables":[{"name":"offset","nativeSrc":"846:6:8","nodeType":"YulTypedName","src":"846:6:8","type":""}]},{"nativeSrc":"888:28:8","nodeType":"YulVariableDeclaration","src":"888:28:8","value":{"kind":"number","nativeSrc":"898:18:8","nodeType":"YulLiteral","src":"898:18:8","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nativeSrc":"892:2:8","nodeType":"YulTypedName","src":"892:2:8","type":""}]},{"body":{"nativeSrc":"943:16:8","nodeType":"YulBlock","src":"943:16:8","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"952:1:8","nodeType":"YulLiteral","src":"952:1:8","type":"","value":"0"},{"kind":"number","nativeSrc":"955:1:8","nodeType":"YulLiteral","src":"955:1:8","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"945:6:8","nodeType":"YulIdentifier","src":"945:6:8"},"nativeSrc":"945:12:8","nodeType":"YulFunctionCall","src":"945:12:8"},"nativeSrc":"945:12:8","nodeType":"YulExpressionStatement","src":"945:12:8"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"931:6:8","nodeType":"YulIdentifier","src":"931:6:8"},{"name":"_1","nativeSrc":"939:2:8","nodeType":"YulIdentifier","src":"939:2:8"}],"functionName":{"name":"gt","nativeSrc":"928:2:8","nodeType":"YulIdentifier","src":"928:2:8"},"nativeSrc":"928:14:8","nodeType":"YulFunctionCall","src":"928:14:8"},"nativeSrc":"925:34:8","nodeType":"YulIf","src":"925:34:8"},{"nativeSrc":"968:32:8","nodeType":"YulVariableDeclaration","src":"968:32:8","value":{"arguments":[{"name":"headStart","nativeSrc":"982:9:8","nodeType":"YulIdentifier","src":"982:9:8"},{"name":"offset","nativeSrc":"993:6:8","nodeType":"YulIdentifier","src":"993:6:8"}],"functionName":{"name":"add","nativeSrc":"978:3:8","nodeType":"YulIdentifier","src":"978:3:8"},"nativeSrc":"978:22:8","nodeType":"YulFunctionCall","src":"978:22:8"},"variables":[{"name":"_2","nativeSrc":"972:2:8","nodeType":"YulTypedName","src":"972:2:8","type":""}]},{"body":{"nativeSrc":"1048:16:8","nodeType":"YulBlock","src":"1048:16:8","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1057:1:8","nodeType":"YulLiteral","src":"1057:1:8","type":"","value":"0"},{"kind":"number","nativeSrc":"1060:1:8","nodeType":"YulLiteral","src":"1060:1:8","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1050:6:8","nodeType":"YulIdentifier","src":"1050:6:8"},"nativeSrc":"1050:12:8","nodeType":"YulFunctionCall","src":"1050:12:8"},"nativeSrc":"1050:12:8","nodeType":"YulExpressionStatement","src":"1050:12:8"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nativeSrc":"1027:2:8","nodeType":"YulIdentifier","src":"1027:2:8"},{"kind":"number","nativeSrc":"1031:4:8","nodeType":"YulLiteral","src":"1031:4:8","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"1023:3:8","nodeType":"YulIdentifier","src":"1023:3:8"},"nativeSrc":"1023:13:8","nodeType":"YulFunctionCall","src":"1023:13:8"},{"name":"dataEnd","nativeSrc":"1038:7:8","nodeType":"YulIdentifier","src":"1038:7:8"}],"functionName":{"name":"slt","nativeSrc":"1019:3:8","nodeType":"YulIdentifier","src":"1019:3:8"},"nativeSrc":"1019:27:8","nodeType":"YulFunctionCall","src":"1019:27:8"}],"functionName":{"name":"iszero","nativeSrc":"1012:6:8","nodeType":"YulIdentifier","src":"1012:6:8"},"nativeSrc":"1012:35:8","nodeType":"YulFunctionCall","src":"1012:35:8"},"nativeSrc":"1009:55:8","nodeType":"YulIf","src":"1009:55:8"},{"nativeSrc":"1073:30:8","nodeType":"YulVariableDeclaration","src":"1073:30:8","value":{"arguments":[{"name":"_2","nativeSrc":"1100:2:8","nodeType":"YulIdentifier","src":"1100:2:8"}],"functionName":{"name":"calldataload","nativeSrc":"1087:12:8","nodeType":"YulIdentifier","src":"1087:12:8"},"nativeSrc":"1087:16:8","nodeType":"YulFunctionCall","src":"1087:16:8"},"variables":[{"name":"length","nativeSrc":"1077:6:8","nodeType":"YulTypedName","src":"1077:6:8","type":""}]},{"body":{"nativeSrc":"1130:16:8","nodeType":"YulBlock","src":"1130:16:8","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1139:1:8","nodeType":"YulLiteral","src":"1139:1:8","type":"","value":"0"},{"kind":"number","nativeSrc":"1142:1:8","nodeType":"YulLiteral","src":"1142:1:8","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1132:6:8","nodeType":"YulIdentifier","src":"1132:6:8"},"nativeSrc":"1132:12:8","nodeType":"YulFunctionCall","src":"1132:12:8"},"nativeSrc":"1132:12:8","nodeType":"YulExpressionStatement","src":"1132:12:8"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"1118:6:8","nodeType":"YulIdentifier","src":"1118:6:8"},{"name":"_1","nativeSrc":"1126:2:8","nodeType":"YulIdentifier","src":"1126:2:8"}],"functionName":{"name":"gt","nativeSrc":"1115:2:8","nodeType":"YulIdentifier","src":"1115:2:8"},"nativeSrc":"1115:14:8","nodeType":"YulFunctionCall","src":"1115:14:8"},"nativeSrc":"1112:34:8","nodeType":"YulIf","src":"1112:34:8"},{"body":{"nativeSrc":"1204:16:8","nodeType":"YulBlock","src":"1204:16:8","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1213:1:8","nodeType":"YulLiteral","src":"1213:1:8","type":"","value":"0"},{"kind":"number","nativeSrc":"1216:1:8","nodeType":"YulLiteral","src":"1216:1:8","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1206:6:8","nodeType":"YulIdentifier","src":"1206:6:8"},"nativeSrc":"1206:12:8","nodeType":"YulFunctionCall","src":"1206:12:8"},"nativeSrc":"1206:12:8","nodeType":"YulExpressionStatement","src":"1206:12:8"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nativeSrc":"1169:2:8","nodeType":"YulIdentifier","src":"1169:2:8"},{"arguments":[{"kind":"number","nativeSrc":"1177:1:8","nodeType":"YulLiteral","src":"1177:1:8","type":"","value":"5"},{"name":"length","nativeSrc":"1180:6:8","nodeType":"YulIdentifier","src":"1180:6:8"}],"functionName":{"name":"shl","nativeSrc":"1173:3:8","nodeType":"YulIdentifier","src":"1173:3:8"},"nativeSrc":"1173:14:8","nodeType":"YulFunctionCall","src":"1173:14:8"}],"functionName":{"name":"add","nativeSrc":"1165:3:8","nodeType":"YulIdentifier","src":"1165:3:8"},"nativeSrc":"1165:23:8","nodeType":"YulFunctionCall","src":"1165:23:8"},{"kind":"number","nativeSrc":"1190:2:8","nodeType":"YulLiteral","src":"1190:2:8","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1161:3:8","nodeType":"YulIdentifier","src":"1161:3:8"},"nativeSrc":"1161:32:8","nodeType":"YulFunctionCall","src":"1161:32:8"},{"name":"dataEnd","nativeSrc":"1195:7:8","nodeType":"YulIdentifier","src":"1195:7:8"}],"functionName":{"name":"gt","nativeSrc":"1158:2:8","nodeType":"YulIdentifier","src":"1158:2:8"},"nativeSrc":"1158:45:8","nodeType":"YulFunctionCall","src":"1158:45:8"},"nativeSrc":"1155:65:8","nodeType":"YulIf","src":"1155:65:8"},{"nativeSrc":"1229:21:8","nodeType":"YulAssignment","src":"1229:21:8","value":{"arguments":[{"name":"_2","nativeSrc":"1243:2:8","nodeType":"YulIdentifier","src":"1243:2:8"},{"kind":"number","nativeSrc":"1247:2:8","nodeType":"YulLiteral","src":"1247:2:8","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1239:3:8","nodeType":"YulIdentifier","src":"1239:3:8"},"nativeSrc":"1239:11:8","nodeType":"YulFunctionCall","src":"1239:11:8"},"variableNames":[{"name":"value0","nativeSrc":"1229:6:8","nodeType":"YulIdentifier","src":"1229:6:8"}]},{"nativeSrc":"1259:16:8","nodeType":"YulAssignment","src":"1259:16:8","value":{"name":"length","nativeSrc":"1269:6:8","nodeType":"YulIdentifier","src":"1269:6:8"},"variableNames":[{"name":"value1","nativeSrc":"1259:6:8","nodeType":"YulIdentifier","src":"1259:6:8"}]}]},"name":"abi_decode_tuple_t_array$_t_uint256_$dyn_calldata_ptr","nativeSrc":"666:615:8","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"729:9:8","nodeType":"YulTypedName","src":"729:9:8","type":""},{"name":"dataEnd","nativeSrc":"740:7:8","nodeType":"YulTypedName","src":"740:7:8","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"752:6:8","nodeType":"YulTypedName","src":"752:6:8","type":""},{"name":"value1","nativeSrc":"760:6:8","nodeType":"YulTypedName","src":"760:6:8","type":""}],"src":"666:615:8"},{"body":{"nativeSrc":"1387:76:8","nodeType":"YulBlock","src":"1387:76:8","statements":[{"nativeSrc":"1397:26:8","nodeType":"YulAssignment","src":"1397:26:8","value":{"arguments":[{"name":"headStart","nativeSrc":"1409:9:8","nodeType":"YulIdentifier","src":"1409:9:8"},{"kind":"number","nativeSrc":"1420:2:8","nodeType":"YulLiteral","src":"1420:2:8","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1405:3:8","nodeType":"YulIdentifier","src":"1405:3:8"},"nativeSrc":"1405:18:8","nodeType":"YulFunctionCall","src":"1405:18:8"},"variableNames":[{"name":"tail","nativeSrc":"1397:4:8","nodeType":"YulIdentifier","src":"1397:4:8"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1439:9:8","nodeType":"YulIdentifier","src":"1439:9:8"},{"name":"value0","nativeSrc":"1450:6:8","nodeType":"YulIdentifier","src":"1450:6:8"}],"functionName":{"name":"mstore","nativeSrc":"1432:6:8","nodeType":"YulIdentifier","src":"1432:6:8"},"nativeSrc":"1432:25:8","nodeType":"YulFunctionCall","src":"1432:25:8"},"nativeSrc":"1432:25:8","nodeType":"YulExpressionStatement","src":"1432:25:8"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nativeSrc":"1286:177:8","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1356:9:8","nodeType":"YulTypedName","src":"1356:9:8","type":""},{"name":"value0","nativeSrc":"1367:6:8","nodeType":"YulTypedName","src":"1367:6:8","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1378:4:8","nodeType":"YulTypedName","src":"1378:4:8","type":""}],"src":"1286:177:8"},{"body":{"nativeSrc":"1515:109:8","nodeType":"YulBlock","src":"1515:109:8","statements":[{"nativeSrc":"1525:29:8","nodeType":"YulAssignment","src":"1525:29:8","value":{"arguments":[{"name":"offset","nativeSrc":"1547:6:8","nodeType":"YulIdentifier","src":"1547:6:8"}],"functionName":{"name":"calldataload","nativeSrc":"1534:12:8","nodeType":"YulIdentifier","src":"1534:12:8"},"nativeSrc":"1534:20:8","nodeType":"YulFunctionCall","src":"1534:20:8"},"variableNames":[{"name":"value","nativeSrc":"1525:5:8","nodeType":"YulIdentifier","src":"1525:5:8"}]},{"body":{"nativeSrc":"1602:16:8","nodeType":"YulBlock","src":"1602:16:8","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1611:1:8","nodeType":"YulLiteral","src":"1611:1:8","type":"","value":"0"},{"kind":"number","nativeSrc":"1614:1:8","nodeType":"YulLiteral","src":"1614:1:8","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1604:6:8","nodeType":"YulIdentifier","src":"1604:6:8"},"nativeSrc":"1604:12:8","nodeType":"YulFunctionCall","src":"1604:12:8"},"nativeSrc":"1604:12:8","nodeType":"YulExpressionStatement","src":"1604:12:8"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1576:5:8","nodeType":"YulIdentifier","src":"1576:5:8"},{"arguments":[{"name":"value","nativeSrc":"1587:5:8","nodeType":"YulIdentifier","src":"1587:5:8"},{"kind":"number","nativeSrc":"1594:4:8","nodeType":"YulLiteral","src":"1594:4:8","type":"","value":"0xff"}],"functionName":{"name":"and","nativeSrc":"1583:3:8","nodeType":"YulIdentifier","src":"1583:3:8"},"nativeSrc":"1583:16:8","nodeType":"YulFunctionCall","src":"1583:16:8"}],"functionName":{"name":"eq","nativeSrc":"1573:2:8","nodeType":"YulIdentifier","src":"1573:2:8"},"nativeSrc":"1573:27:8","nodeType":"YulFunctionCall","src":"1573:27:8"}],"functionName":{"name":"iszero","nativeSrc":"1566:6:8","nodeType":"YulIdentifier","src":"1566:6:8"},"nativeSrc":"1566:35:8","nodeType":"YulFunctionCall","src":"1566:35:8"},"nativeSrc":"1563:55:8","nodeType":"YulIf","src":"1563:55:8"}]},"name":"abi_decode_uint8","nativeSrc":"1468:156:8","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1494:6:8","nodeType":"YulTypedName","src":"1494:6:8","type":""}],"returnVariables":[{"name":"value","nativeSrc":"1505:5:8","nodeType":"YulTypedName","src":"1505:5:8","type":""}],"src":"1468:156:8"},{"body":{"nativeSrc":"1868:657:8","nodeType":"YulBlock","src":"1868:657:8","statements":[{"body":{"nativeSrc":"1915:16:8","nodeType":"YulBlock","src":"1915:16:8","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1924:1:8","nodeType":"YulLiteral","src":"1924:1:8","type":"","value":"0"},{"kind":"number","nativeSrc":"1927:1:8","nodeType":"YulLiteral","src":"1927:1:8","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1917:6:8","nodeType":"YulIdentifier","src":"1917:6:8"},"nativeSrc":"1917:12:8","nodeType":"YulFunctionCall","src":"1917:12:8"},"nativeSrc":"1917:12:8","nodeType":"YulExpressionStatement","src":"1917:12:8"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"1889:7:8","nodeType":"YulIdentifier","src":"1889:7:8"},{"name":"headStart","nativeSrc":"1898:9:8","nodeType":"YulIdentifier","src":"1898:9:8"}],"functionName":{"name":"sub","nativeSrc":"1885:3:8","nodeType":"YulIdentifier","src":"1885:3:8"},"nativeSrc":"1885:23:8","nodeType":"YulFunctionCall","src":"1885:23:8"},{"kind":"number","nativeSrc":"1910:3:8","nodeType":"YulLiteral","src":"1910:3:8","type":"","value":"352"}],"functionName":{"name":"slt","nativeSrc":"1881:3:8","nodeType":"YulIdentifier","src":"1881:3:8"},"nativeSrc":"1881:33:8","nodeType":"YulFunctionCall","src":"1881:33:8"},"nativeSrc":"1878:53:8","nodeType":"YulIf","src":"1878:53:8"},{"nativeSrc":"1940:39:8","nodeType":"YulAssignment","src":"1940:39:8","value":{"arguments":[{"name":"headStart","nativeSrc":"1969:9:8","nodeType":"YulIdentifier","src":"1969:9:8"}],"functionName":{"name":"abi_decode_address","nativeSrc":"1950:18:8","nodeType":"YulIdentifier","src":"1950:18:8"},"nativeSrc":"1950:29:8","nodeType":"YulFunctionCall","src":"1950:29:8"},"variableNames":[{"name":"value0","nativeSrc":"1940:6:8","nodeType":"YulIdentifier","src":"1940:6:8"}]},{"nativeSrc":"1988:42:8","nodeType":"YulAssignment","src":"1988:42:8","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2015:9:8","nodeType":"YulIdentifier","src":"2015:9:8"},{"kind":"number","nativeSrc":"2026:2:8","nodeType":"YulLiteral","src":"2026:2:8","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2011:3:8","nodeType":"YulIdentifier","src":"2011:3:8"},"nativeSrc":"2011:18:8","nodeType":"YulFunctionCall","src":"2011:18:8"}],"functionName":{"name":"calldataload","nativeSrc":"1998:12:8","nodeType":"YulIdentifier","src":"1998:12:8"},"nativeSrc":"1998:32:8","nodeType":"YulFunctionCall","src":"1998:32:8"},"variableNames":[{"name":"value1","nativeSrc":"1988:6:8","nodeType":"YulIdentifier","src":"1988:6:8"}]},{"nativeSrc":"2039:42:8","nodeType":"YulAssignment","src":"2039:42:8","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2066:9:8","nodeType":"YulIdentifier","src":"2066:9:8"},{"kind":"number","nativeSrc":"2077:2:8","nodeType":"YulLiteral","src":"2077:2:8","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2062:3:8","nodeType":"YulIdentifier","src":"2062:3:8"},"nativeSrc":"2062:18:8","nodeType":"YulFunctionCall","src":"2062:18:8"}],"functionName":{"name":"calldataload","nativeSrc":"2049:12:8","nodeType":"YulIdentifier","src":"2049:12:8"},"nativeSrc":"2049:32:8","nodeType":"YulFunctionCall","src":"2049:32:8"},"variableNames":[{"name":"value2","nativeSrc":"2039:6:8","nodeType":"YulIdentifier","src":"2039:6:8"}]},{"nativeSrc":"2090:48:8","nodeType":"YulAssignment","src":"2090:48:8","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2123:9:8","nodeType":"YulIdentifier","src":"2123:9:8"},{"kind":"number","nativeSrc":"2134:2:8","nodeType":"YulLiteral","src":"2134:2:8","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"2119:3:8","nodeType":"YulIdentifier","src":"2119:3:8"},"nativeSrc":"2119:18:8","nodeType":"YulFunctionCall","src":"2119:18:8"}],"functionName":{"name":"abi_decode_address","nativeSrc":"2100:18:8","nodeType":"YulIdentifier","src":"2100:18:8"},"nativeSrc":"2100:38:8","nodeType":"YulFunctionCall","src":"2100:38:8"},"variableNames":[{"name":"value3","nativeSrc":"2090:6:8","nodeType":"YulIdentifier","src":"2090:6:8"}]},{"nativeSrc":"2147:49:8","nodeType":"YulAssignment","src":"2147:49:8","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2180:9:8","nodeType":"YulIdentifier","src":"2180:9:8"},{"kind":"number","nativeSrc":"2191:3:8","nodeType":"YulLiteral","src":"2191:3:8","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"2176:3:8","nodeType":"YulIdentifier","src":"2176:3:8"},"nativeSrc":"2176:19:8","nodeType":"YulFunctionCall","src":"2176:19:8"}],"functionName":{"name":"abi_decode_address","nativeSrc":"2157:18:8","nodeType":"YulIdentifier","src":"2157:18:8"},"nativeSrc":"2157:39:8","nodeType":"YulFunctionCall","src":"2157:39:8"},"variableNames":[{"name":"value4","nativeSrc":"2147:6:8","nodeType":"YulIdentifier","src":"2147:6:8"}]},{"nativeSrc":"2205:43:8","nodeType":"YulAssignment","src":"2205:43:8","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2232:9:8","nodeType":"YulIdentifier","src":"2232:9:8"},{"kind":"number","nativeSrc":"2243:3:8","nodeType":"YulLiteral","src":"2243:3:8","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"2228:3:8","nodeType":"YulIdentifier","src":"2228:3:8"},"nativeSrc":"2228:19:8","nodeType":"YulFunctionCall","src":"2228:19:8"}],"functionName":{"name":"calldataload","nativeSrc":"2215:12:8","nodeType":"YulIdentifier","src":"2215:12:8"},"nativeSrc":"2215:33:8","nodeType":"YulFunctionCall","src":"2215:33:8"},"variableNames":[{"name":"value5","nativeSrc":"2205:6:8","nodeType":"YulIdentifier","src":"2205:6:8"}]},{"nativeSrc":"2257:49:8","nodeType":"YulAssignment","src":"2257:49:8","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2290:9:8","nodeType":"YulIdentifier","src":"2290:9:8"},{"kind":"number","nativeSrc":"2301:3:8","nodeType":"YulLiteral","src":"2301:3:8","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"2286:3:8","nodeType":"YulIdentifier","src":"2286:3:8"},"nativeSrc":"2286:19:8","nodeType":"YulFunctionCall","src":"2286:19:8"}],"functionName":{"name":"abi_decode_address","nativeSrc":"2267:18:8","nodeType":"YulIdentifier","src":"2267:18:8"},"nativeSrc":"2267:39:8","nodeType":"YulFunctionCall","src":"2267:39:8"},"variableNames":[{"name":"value6","nativeSrc":"2257:6:8","nodeType":"YulIdentifier","src":"2257:6:8"}]},{"nativeSrc":"2315:43:8","nodeType":"YulAssignment","src":"2315:43:8","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2342:9:8","nodeType":"YulIdentifier","src":"2342:9:8"},{"kind":"number","nativeSrc":"2353:3:8","nodeType":"YulLiteral","src":"2353:3:8","type":"","value":"224"}],"functionName":{"name":"add","nativeSrc":"2338:3:8","nodeType":"YulIdentifier","src":"2338:3:8"},"nativeSrc":"2338:19:8","nodeType":"YulFunctionCall","src":"2338:19:8"}],"functionName":{"name":"calldataload","nativeSrc":"2325:12:8","nodeType":"YulIdentifier","src":"2325:12:8"},"nativeSrc":"2325:33:8","nodeType":"YulFunctionCall","src":"2325:33:8"},"variableNames":[{"name":"value7","nativeSrc":"2315:6:8","nodeType":"YulIdentifier","src":"2315:6:8"}]},{"nativeSrc":"2367:47:8","nodeType":"YulAssignment","src":"2367:47:8","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2398:9:8","nodeType":"YulIdentifier","src":"2398:9:8"},{"kind":"number","nativeSrc":"2409:3:8","nodeType":"YulLiteral","src":"2409:3:8","type":"","value":"256"}],"functionName":{"name":"add","nativeSrc":"2394:3:8","nodeType":"YulIdentifier","src":"2394:3:8"},"nativeSrc":"2394:19:8","nodeType":"YulFunctionCall","src":"2394:19:8"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"2377:16:8","nodeType":"YulIdentifier","src":"2377:16:8"},"nativeSrc":"2377:37:8","nodeType":"YulFunctionCall","src":"2377:37:8"},"variableNames":[{"name":"value8","nativeSrc":"2367:6:8","nodeType":"YulIdentifier","src":"2367:6:8"}]},{"nativeSrc":"2423:43:8","nodeType":"YulAssignment","src":"2423:43:8","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2450:9:8","nodeType":"YulIdentifier","src":"2450:9:8"},{"kind":"number","nativeSrc":"2461:3:8","nodeType":"YulLiteral","src":"2461:3:8","type":"","value":"288"}],"functionName":{"name":"add","nativeSrc":"2446:3:8","nodeType":"YulIdentifier","src":"2446:3:8"},"nativeSrc":"2446:19:8","nodeType":"YulFunctionCall","src":"2446:19:8"}],"functionName":{"name":"calldataload","nativeSrc":"2433:12:8","nodeType":"YulIdentifier","src":"2433:12:8"},"nativeSrc":"2433:33:8","nodeType":"YulFunctionCall","src":"2433:33:8"},"variableNames":[{"name":"value9","nativeSrc":"2423:6:8","nodeType":"YulIdentifier","src":"2423:6:8"}]},{"nativeSrc":"2475:44:8","nodeType":"YulAssignment","src":"2475:44:8","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2503:9:8","nodeType":"YulIdentifier","src":"2503:9:8"},{"kind":"number","nativeSrc":"2514:3:8","nodeType":"YulLiteral","src":"2514:3:8","type":"","value":"320"}],"functionName":{"name":"add","nativeSrc":"2499:3:8","nodeType":"YulIdentifier","src":"2499:3:8"},"nativeSrc":"2499:19:8","nodeType":"YulFunctionCall","src":"2499:19:8"}],"functionName":{"name":"calldataload","nativeSrc":"2486:12:8","nodeType":"YulIdentifier","src":"2486:12:8"},"nativeSrc":"2486:33:8","nodeType":"YulFunctionCall","src":"2486:33:8"},"variableNames":[{"name":"value10","nativeSrc":"2475:7:8","nodeType":"YulIdentifier","src":"2475:7:8"}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_uint256t_addresst_addresst_uint256t_addresst_uint256t_uint8t_bytes32t_bytes32","nativeSrc":"1629:896:8","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1753:9:8","nodeType":"YulTypedName","src":"1753:9:8","type":""},{"name":"dataEnd","nativeSrc":"1764:7:8","nodeType":"YulTypedName","src":"1764:7:8","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"1776:6:8","nodeType":"YulTypedName","src":"1776:6:8","type":""},{"name":"value1","nativeSrc":"1784:6:8","nodeType":"YulTypedName","src":"1784:6:8","type":""},{"name":"value2","nativeSrc":"1792:6:8","nodeType":"YulTypedName","src":"1792:6:8","type":""},{"name":"value3","nativeSrc":"1800:6:8","nodeType":"YulTypedName","src":"1800:6:8","type":""},{"name":"value4","nativeSrc":"1808:6:8","nodeType":"YulTypedName","src":"1808:6:8","type":""},{"name":"value5","nativeSrc":"1816:6:8","nodeType":"YulTypedName","src":"1816:6:8","type":""},{"name":"value6","nativeSrc":"1824:6:8","nodeType":"YulTypedName","src":"1824:6:8","type":""},{"name":"value7","nativeSrc":"1832:6:8","nodeType":"YulTypedName","src":"1832:6:8","type":""},{"name":"value8","nativeSrc":"1840:6:8","nodeType":"YulTypedName","src":"1840:6:8","type":""},{"name":"value9","nativeSrc":"1848:6:8","nodeType":"YulTypedName","src":"1848:6:8","type":""},{"name":"value10","nativeSrc":"1856:7:8","nodeType":"YulTypedName","src":"1856:7:8","type":""}],"src":"1629:896:8"},{"body":{"nativeSrc":"2751:598:8","nodeType":"YulBlock","src":"2751:598:8","statements":[{"body":{"nativeSrc":"2798:16:8","nodeType":"YulBlock","src":"2798:16:8","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2807:1:8","nodeType":"YulLiteral","src":"2807:1:8","type":"","value":"0"},{"kind":"number","nativeSrc":"2810:1:8","nodeType":"YulLiteral","src":"2810:1:8","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2800:6:8","nodeType":"YulIdentifier","src":"2800:6:8"},"nativeSrc":"2800:12:8","nodeType":"YulFunctionCall","src":"2800:12:8"},"nativeSrc":"2800:12:8","nodeType":"YulExpressionStatement","src":"2800:12:8"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2772:7:8","nodeType":"YulIdentifier","src":"2772:7:8"},{"name":"headStart","nativeSrc":"2781:9:8","nodeType":"YulIdentifier","src":"2781:9:8"}],"functionName":{"name":"sub","nativeSrc":"2768:3:8","nodeType":"YulIdentifier","src":"2768:3:8"},"nativeSrc":"2768:23:8","nodeType":"YulFunctionCall","src":"2768:23:8"},{"kind":"number","nativeSrc":"2793:3:8","nodeType":"YulLiteral","src":"2793:3:8","type":"","value":"320"}],"functionName":{"name":"slt","nativeSrc":"2764:3:8","nodeType":"YulIdentifier","src":"2764:3:8"},"nativeSrc":"2764:33:8","nodeType":"YulFunctionCall","src":"2764:33:8"},"nativeSrc":"2761:53:8","nodeType":"YulIf","src":"2761:53:8"},{"nativeSrc":"2823:33:8","nodeType":"YulAssignment","src":"2823:33:8","value":{"arguments":[{"name":"headStart","nativeSrc":"2846:9:8","nodeType":"YulIdentifier","src":"2846:9:8"}],"functionName":{"name":"calldataload","nativeSrc":"2833:12:8","nodeType":"YulIdentifier","src":"2833:12:8"},"nativeSrc":"2833:23:8","nodeType":"YulFunctionCall","src":"2833:23:8"},"variableNames":[{"name":"value0","nativeSrc":"2823:6:8","nodeType":"YulIdentifier","src":"2823:6:8"}]},{"nativeSrc":"2865:42:8","nodeType":"YulAssignment","src":"2865:42:8","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2892:9:8","nodeType":"YulIdentifier","src":"2892:9:8"},{"kind":"number","nativeSrc":"2903:2:8","nodeType":"YulLiteral","src":"2903:2:8","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2888:3:8","nodeType":"YulIdentifier","src":"2888:3:8"},"nativeSrc":"2888:18:8","nodeType":"YulFunctionCall","src":"2888:18:8"}],"functionName":{"name":"calldataload","nativeSrc":"2875:12:8","nodeType":"YulIdentifier","src":"2875:12:8"},"nativeSrc":"2875:32:8","nodeType":"YulFunctionCall","src":"2875:32:8"},"variableNames":[{"name":"value1","nativeSrc":"2865:6:8","nodeType":"YulIdentifier","src":"2865:6:8"}]},{"nativeSrc":"2916:48:8","nodeType":"YulAssignment","src":"2916:48:8","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2949:9:8","nodeType":"YulIdentifier","src":"2949:9:8"},{"kind":"number","nativeSrc":"2960:2:8","nodeType":"YulLiteral","src":"2960:2:8","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2945:3:8","nodeType":"YulIdentifier","src":"2945:3:8"},"nativeSrc":"2945:18:8","nodeType":"YulFunctionCall","src":"2945:18:8"}],"functionName":{"name":"abi_decode_address","nativeSrc":"2926:18:8","nodeType":"YulIdentifier","src":"2926:18:8"},"nativeSrc":"2926:38:8","nodeType":"YulFunctionCall","src":"2926:38:8"},"variableNames":[{"name":"value2","nativeSrc":"2916:6:8","nodeType":"YulIdentifier","src":"2916:6:8"}]},{"nativeSrc":"2973:48:8","nodeType":"YulAssignment","src":"2973:48:8","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3006:9:8","nodeType":"YulIdentifier","src":"3006:9:8"},{"kind":"number","nativeSrc":"3017:2:8","nodeType":"YulLiteral","src":"3017:2:8","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"3002:3:8","nodeType":"YulIdentifier","src":"3002:3:8"},"nativeSrc":"3002:18:8","nodeType":"YulFunctionCall","src":"3002:18:8"}],"functionName":{"name":"abi_decode_address","nativeSrc":"2983:18:8","nodeType":"YulIdentifier","src":"2983:18:8"},"nativeSrc":"2983:38:8","nodeType":"YulFunctionCall","src":"2983:38:8"},"variableNames":[{"name":"value3","nativeSrc":"2973:6:8","nodeType":"YulIdentifier","src":"2973:6:8"}]},{"nativeSrc":"3030:43:8","nodeType":"YulAssignment","src":"3030:43:8","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3057:9:8","nodeType":"YulIdentifier","src":"3057:9:8"},{"kind":"number","nativeSrc":"3068:3:8","nodeType":"YulLiteral","src":"3068:3:8","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"3053:3:8","nodeType":"YulIdentifier","src":"3053:3:8"},"nativeSrc":"3053:19:8","nodeType":"YulFunctionCall","src":"3053:19:8"}],"functionName":{"name":"calldataload","nativeSrc":"3040:12:8","nodeType":"YulIdentifier","src":"3040:12:8"},"nativeSrc":"3040:33:8","nodeType":"YulFunctionCall","src":"3040:33:8"},"variableNames":[{"name":"value4","nativeSrc":"3030:6:8","nodeType":"YulIdentifier","src":"3030:6:8"}]},{"nativeSrc":"3082:49:8","nodeType":"YulAssignment","src":"3082:49:8","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3115:9:8","nodeType":"YulIdentifier","src":"3115:9:8"},{"kind":"number","nativeSrc":"3126:3:8","nodeType":"YulLiteral","src":"3126:3:8","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"3111:3:8","nodeType":"YulIdentifier","src":"3111:3:8"},"nativeSrc":"3111:19:8","nodeType":"YulFunctionCall","src":"3111:19:8"}],"functionName":{"name":"abi_decode_address","nativeSrc":"3092:18:8","nodeType":"YulIdentifier","src":"3092:18:8"},"nativeSrc":"3092:39:8","nodeType":"YulFunctionCall","src":"3092:39:8"},"variableNames":[{"name":"value5","nativeSrc":"3082:6:8","nodeType":"YulIdentifier","src":"3082:6:8"}]},{"nativeSrc":"3140:43:8","nodeType":"YulAssignment","src":"3140:43:8","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3167:9:8","nodeType":"YulIdentifier","src":"3167:9:8"},{"kind":"number","nativeSrc":"3178:3:8","nodeType":"YulLiteral","src":"3178:3:8","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"3163:3:8","nodeType":"YulIdentifier","src":"3163:3:8"},"nativeSrc":"3163:19:8","nodeType":"YulFunctionCall","src":"3163:19:8"}],"functionName":{"name":"calldataload","nativeSrc":"3150:12:8","nodeType":"YulIdentifier","src":"3150:12:8"},"nativeSrc":"3150:33:8","nodeType":"YulFunctionCall","src":"3150:33:8"},"variableNames":[{"name":"value6","nativeSrc":"3140:6:8","nodeType":"YulIdentifier","src":"3140:6:8"}]},{"nativeSrc":"3192:47:8","nodeType":"YulAssignment","src":"3192:47:8","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3223:9:8","nodeType":"YulIdentifier","src":"3223:9:8"},{"kind":"number","nativeSrc":"3234:3:8","nodeType":"YulLiteral","src":"3234:3:8","type":"","value":"224"}],"functionName":{"name":"add","nativeSrc":"3219:3:8","nodeType":"YulIdentifier","src":"3219:3:8"},"nativeSrc":"3219:19:8","nodeType":"YulFunctionCall","src":"3219:19:8"}],"functionName":{"name":"abi_decode_uint8","nativeSrc":"3202:16:8","nodeType":"YulIdentifier","src":"3202:16:8"},"nativeSrc":"3202:37:8","nodeType":"YulFunctionCall","src":"3202:37:8"},"variableNames":[{"name":"value7","nativeSrc":"3192:6:8","nodeType":"YulIdentifier","src":"3192:6:8"}]},{"nativeSrc":"3248:43:8","nodeType":"YulAssignment","src":"3248:43:8","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3275:9:8","nodeType":"YulIdentifier","src":"3275:9:8"},{"kind":"number","nativeSrc":"3286:3:8","nodeType":"YulLiteral","src":"3286:3:8","type":"","value":"256"}],"functionName":{"name":"add","nativeSrc":"3271:3:8","nodeType":"YulIdentifier","src":"3271:3:8"},"nativeSrc":"3271:19:8","nodeType":"YulFunctionCall","src":"3271:19:8"}],"functionName":{"name":"calldataload","nativeSrc":"3258:12:8","nodeType":"YulIdentifier","src":"3258:12:8"},"nativeSrc":"3258:33:8","nodeType":"YulFunctionCall","src":"3258:33:8"},"variableNames":[{"name":"value8","nativeSrc":"3248:6:8","nodeType":"YulIdentifier","src":"3248:6:8"}]},{"nativeSrc":"3300:43:8","nodeType":"YulAssignment","src":"3300:43:8","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3327:9:8","nodeType":"YulIdentifier","src":"3327:9:8"},{"kind":"number","nativeSrc":"3338:3:8","nodeType":"YulLiteral","src":"3338:3:8","type":"","value":"288"}],"functionName":{"name":"add","nativeSrc":"3323:3:8","nodeType":"YulIdentifier","src":"3323:3:8"},"nativeSrc":"3323:19:8","nodeType":"YulFunctionCall","src":"3323:19:8"}],"functionName":{"name":"calldataload","nativeSrc":"3310:12:8","nodeType":"YulIdentifier","src":"3310:12:8"},"nativeSrc":"3310:33:8","nodeType":"YulFunctionCall","src":"3310:33:8"},"variableNames":[{"name":"value9","nativeSrc":"3300:6:8","nodeType":"YulIdentifier","src":"3300:6:8"}]}]},"name":"abi_decode_tuple_t_uint256t_uint256t_addresst_addresst_uint256t_addresst_uint256t_uint8t_bytes32t_bytes32","nativeSrc":"2530:819:8","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2645:9:8","nodeType":"YulTypedName","src":"2645:9:8","type":""},{"name":"dataEnd","nativeSrc":"2656:7:8","nodeType":"YulTypedName","src":"2656:7:8","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2668:6:8","nodeType":"YulTypedName","src":"2668:6:8","type":""},{"name":"value1","nativeSrc":"2676:6:8","nodeType":"YulTypedName","src":"2676:6:8","type":""},{"name":"value2","nativeSrc":"2684:6:8","nodeType":"YulTypedName","src":"2684:6:8","type":""},{"name":"value3","nativeSrc":"2692:6:8","nodeType":"YulTypedName","src":"2692:6:8","type":""},{"name":"value4","nativeSrc":"2700:6:8","nodeType":"YulTypedName","src":"2700:6:8","type":""},{"name":"value5","nativeSrc":"2708:6:8","nodeType":"YulTypedName","src":"2708:6:8","type":""},{"name":"value6","nativeSrc":"2716:6:8","nodeType":"YulTypedName","src":"2716:6:8","type":""},{"name":"value7","nativeSrc":"2724:6:8","nodeType":"YulTypedName","src":"2724:6:8","type":""},{"name":"value8","nativeSrc":"2732:6:8","nodeType":"YulTypedName","src":"2732:6:8","type":""},{"name":"value9","nativeSrc":"2740:6:8","nodeType":"YulTypedName","src":"2740:6:8","type":""}],"src":"2530:819:8"},{"body":{"nativeSrc":"3455:76:8","nodeType":"YulBlock","src":"3455:76:8","statements":[{"nativeSrc":"3465:26:8","nodeType":"YulAssignment","src":"3465:26:8","value":{"arguments":[{"name":"headStart","nativeSrc":"3477:9:8","nodeType":"YulIdentifier","src":"3477:9:8"},{"kind":"number","nativeSrc":"3488:2:8","nodeType":"YulLiteral","src":"3488:2:8","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3473:3:8","nodeType":"YulIdentifier","src":"3473:3:8"},"nativeSrc":"3473:18:8","nodeType":"YulFunctionCall","src":"3473:18:8"},"variableNames":[{"name":"tail","nativeSrc":"3465:4:8","nodeType":"YulIdentifier","src":"3465:4:8"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"3507:9:8","nodeType":"YulIdentifier","src":"3507:9:8"},{"name":"value0","nativeSrc":"3518:6:8","nodeType":"YulIdentifier","src":"3518:6:8"}],"functionName":{"name":"mstore","nativeSrc":"3500:6:8","nodeType":"YulIdentifier","src":"3500:6:8"},"nativeSrc":"3500:25:8","nodeType":"YulFunctionCall","src":"3500:25:8"},"nativeSrc":"3500:25:8","nodeType":"YulExpressionStatement","src":"3500:25:8"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"3354:177:8","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3424:9:8","nodeType":"YulTypedName","src":"3424:9:8","type":""},{"name":"value0","nativeSrc":"3435:6:8","nodeType":"YulTypedName","src":"3435:6:8","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"3446:4:8","nodeType":"YulTypedName","src":"3446:4:8","type":""}],"src":"3354:177:8"},{"body":{"nativeSrc":"3623:161:8","nodeType":"YulBlock","src":"3623:161:8","statements":[{"body":{"nativeSrc":"3669:16:8","nodeType":"YulBlock","src":"3669:16:8","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3678:1:8","nodeType":"YulLiteral","src":"3678:1:8","type":"","value":"0"},{"kind":"number","nativeSrc":"3681:1:8","nodeType":"YulLiteral","src":"3681:1:8","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3671:6:8","nodeType":"YulIdentifier","src":"3671:6:8"},"nativeSrc":"3671:12:8","nodeType":"YulFunctionCall","src":"3671:12:8"},"nativeSrc":"3671:12:8","nodeType":"YulExpressionStatement","src":"3671:12:8"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3644:7:8","nodeType":"YulIdentifier","src":"3644:7:8"},{"name":"headStart","nativeSrc":"3653:9:8","nodeType":"YulIdentifier","src":"3653:9:8"}],"functionName":{"name":"sub","nativeSrc":"3640:3:8","nodeType":"YulIdentifier","src":"3640:3:8"},"nativeSrc":"3640:23:8","nodeType":"YulFunctionCall","src":"3640:23:8"},{"kind":"number","nativeSrc":"3665:2:8","nodeType":"YulLiteral","src":"3665:2:8","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"3636:3:8","nodeType":"YulIdentifier","src":"3636:3:8"},"nativeSrc":"3636:32:8","nodeType":"YulFunctionCall","src":"3636:32:8"},"nativeSrc":"3633:52:8","nodeType":"YulIf","src":"3633:52:8"},{"nativeSrc":"3694:33:8","nodeType":"YulAssignment","src":"3694:33:8","value":{"arguments":[{"name":"headStart","nativeSrc":"3717:9:8","nodeType":"YulIdentifier","src":"3717:9:8"}],"functionName":{"name":"calldataload","nativeSrc":"3704:12:8","nodeType":"YulIdentifier","src":"3704:12:8"},"nativeSrc":"3704:23:8","nodeType":"YulFunctionCall","src":"3704:23:8"},"variableNames":[{"name":"value0","nativeSrc":"3694:6:8","nodeType":"YulIdentifier","src":"3694:6:8"}]},{"nativeSrc":"3736:42:8","nodeType":"YulAssignment","src":"3736:42:8","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3763:9:8","nodeType":"YulIdentifier","src":"3763:9:8"},{"kind":"number","nativeSrc":"3774:2:8","nodeType":"YulLiteral","src":"3774:2:8","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3759:3:8","nodeType":"YulIdentifier","src":"3759:3:8"},"nativeSrc":"3759:18:8","nodeType":"YulFunctionCall","src":"3759:18:8"}],"functionName":{"name":"calldataload","nativeSrc":"3746:12:8","nodeType":"YulIdentifier","src":"3746:12:8"},"nativeSrc":"3746:32:8","nodeType":"YulFunctionCall","src":"3746:32:8"},"variableNames":[{"name":"value1","nativeSrc":"3736:6:8","nodeType":"YulIdentifier","src":"3736:6:8"}]}]},"name":"abi_decode_tuple_t_uint256t_uint256","nativeSrc":"3536:248:8","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3581:9:8","nodeType":"YulTypedName","src":"3581:9:8","type":""},{"name":"dataEnd","nativeSrc":"3592:7:8","nodeType":"YulTypedName","src":"3592:7:8","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3604:6:8","nodeType":"YulTypedName","src":"3604:6:8","type":""},{"name":"value1","nativeSrc":"3612:6:8","nodeType":"YulTypedName","src":"3612:6:8","type":""}],"src":"3536:248:8"},{"body":{"nativeSrc":"3859:110:8","nodeType":"YulBlock","src":"3859:110:8","statements":[{"body":{"nativeSrc":"3905:16:8","nodeType":"YulBlock","src":"3905:16:8","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3914:1:8","nodeType":"YulLiteral","src":"3914:1:8","type":"","value":"0"},{"kind":"number","nativeSrc":"3917:1:8","nodeType":"YulLiteral","src":"3917:1:8","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3907:6:8","nodeType":"YulIdentifier","src":"3907:6:8"},"nativeSrc":"3907:12:8","nodeType":"YulFunctionCall","src":"3907:12:8"},"nativeSrc":"3907:12:8","nodeType":"YulExpressionStatement","src":"3907:12:8"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3880:7:8","nodeType":"YulIdentifier","src":"3880:7:8"},{"name":"headStart","nativeSrc":"3889:9:8","nodeType":"YulIdentifier","src":"3889:9:8"}],"functionName":{"name":"sub","nativeSrc":"3876:3:8","nodeType":"YulIdentifier","src":"3876:3:8"},"nativeSrc":"3876:23:8","nodeType":"YulFunctionCall","src":"3876:23:8"},{"kind":"number","nativeSrc":"3901:2:8","nodeType":"YulLiteral","src":"3901:2:8","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"3872:3:8","nodeType":"YulIdentifier","src":"3872:3:8"},"nativeSrc":"3872:32:8","nodeType":"YulFunctionCall","src":"3872:32:8"},"nativeSrc":"3869:52:8","nodeType":"YulIf","src":"3869:52:8"},{"nativeSrc":"3930:33:8","nodeType":"YulAssignment","src":"3930:33:8","value":{"arguments":[{"name":"headStart","nativeSrc":"3953:9:8","nodeType":"YulIdentifier","src":"3953:9:8"}],"functionName":{"name":"calldataload","nativeSrc":"3940:12:8","nodeType":"YulIdentifier","src":"3940:12:8"},"nativeSrc":"3940:23:8","nodeType":"YulFunctionCall","src":"3940:23:8"},"variableNames":[{"name":"value0","nativeSrc":"3930:6:8","nodeType":"YulIdentifier","src":"3930:6:8"}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"3789:180:8","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3825:9:8","nodeType":"YulTypedName","src":"3825:9:8","type":""},{"name":"dataEnd","nativeSrc":"3836:7:8","nodeType":"YulTypedName","src":"3836:7:8","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3848:6:8","nodeType":"YulTypedName","src":"3848:6:8","type":""}],"src":"3789:180:8"},{"body":{"nativeSrc":"4075:125:8","nodeType":"YulBlock","src":"4075:125:8","statements":[{"nativeSrc":"4085:26:8","nodeType":"YulAssignment","src":"4085:26:8","value":{"arguments":[{"name":"headStart","nativeSrc":"4097:9:8","nodeType":"YulIdentifier","src":"4097:9:8"},{"kind":"number","nativeSrc":"4108:2:8","nodeType":"YulLiteral","src":"4108:2:8","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"4093:3:8","nodeType":"YulIdentifier","src":"4093:3:8"},"nativeSrc":"4093:18:8","nodeType":"YulFunctionCall","src":"4093:18:8"},"variableNames":[{"name":"tail","nativeSrc":"4085:4:8","nodeType":"YulIdentifier","src":"4085:4:8"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"4127:9:8","nodeType":"YulIdentifier","src":"4127:9:8"},{"arguments":[{"name":"value0","nativeSrc":"4142:6:8","nodeType":"YulIdentifier","src":"4142:6:8"},{"kind":"number","nativeSrc":"4150:42:8","nodeType":"YulLiteral","src":"4150:42:8","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"4138:3:8","nodeType":"YulIdentifier","src":"4138:3:8"},"nativeSrc":"4138:55:8","nodeType":"YulFunctionCall","src":"4138:55:8"}],"functionName":{"name":"mstore","nativeSrc":"4120:6:8","nodeType":"YulIdentifier","src":"4120:6:8"},"nativeSrc":"4120:74:8","nodeType":"YulFunctionCall","src":"4120:74:8"},"nativeSrc":"4120:74:8","nodeType":"YulExpressionStatement","src":"4120:74:8"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"3974:226:8","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4044:9:8","nodeType":"YulTypedName","src":"4044:9:8","type":""},{"name":"value0","nativeSrc":"4055:6:8","nodeType":"YulTypedName","src":"4055:6:8","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"4066:4:8","nodeType":"YulTypedName","src":"4066:4:8","type":""}],"src":"3974:226:8"},{"body":{"nativeSrc":"4275:116:8","nodeType":"YulBlock","src":"4275:116:8","statements":[{"body":{"nativeSrc":"4321:16:8","nodeType":"YulBlock","src":"4321:16:8","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4330:1:8","nodeType":"YulLiteral","src":"4330:1:8","type":"","value":"0"},{"kind":"number","nativeSrc":"4333:1:8","nodeType":"YulLiteral","src":"4333:1:8","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4323:6:8","nodeType":"YulIdentifier","src":"4323:6:8"},"nativeSrc":"4323:12:8","nodeType":"YulFunctionCall","src":"4323:12:8"},"nativeSrc":"4323:12:8","nodeType":"YulExpressionStatement","src":"4323:12:8"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4296:7:8","nodeType":"YulIdentifier","src":"4296:7:8"},{"name":"headStart","nativeSrc":"4305:9:8","nodeType":"YulIdentifier","src":"4305:9:8"}],"functionName":{"name":"sub","nativeSrc":"4292:3:8","nodeType":"YulIdentifier","src":"4292:3:8"},"nativeSrc":"4292:23:8","nodeType":"YulFunctionCall","src":"4292:23:8"},{"kind":"number","nativeSrc":"4317:2:8","nodeType":"YulLiteral","src":"4317:2:8","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4288:3:8","nodeType":"YulIdentifier","src":"4288:3:8"},"nativeSrc":"4288:32:8","nodeType":"YulFunctionCall","src":"4288:32:8"},"nativeSrc":"4285:52:8","nodeType":"YulIf","src":"4285:52:8"},{"nativeSrc":"4346:39:8","nodeType":"YulAssignment","src":"4346:39:8","value":{"arguments":[{"name":"headStart","nativeSrc":"4375:9:8","nodeType":"YulIdentifier","src":"4375:9:8"}],"functionName":{"name":"abi_decode_address","nativeSrc":"4356:18:8","nodeType":"YulIdentifier","src":"4356:18:8"},"nativeSrc":"4356:29:8","nodeType":"YulFunctionCall","src":"4356:29:8"},"variableNames":[{"name":"value0","nativeSrc":"4346:6:8","nodeType":"YulIdentifier","src":"4346:6:8"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"4205:186:8","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4241:9:8","nodeType":"YulTypedName","src":"4241:9:8","type":""},{"name":"dataEnd","nativeSrc":"4252:7:8","nodeType":"YulTypedName","src":"4252:7:8","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4264:6:8","nodeType":"YulTypedName","src":"4264:6:8","type":""}],"src":"4205:186:8"},{"body":{"nativeSrc":"4446:432:8","nodeType":"YulBlock","src":"4446:432:8","statements":[{"nativeSrc":"4456:26:8","nodeType":"YulVariableDeclaration","src":"4456:26:8","value":{"arguments":[{"name":"value","nativeSrc":"4476:5:8","nodeType":"YulIdentifier","src":"4476:5:8"}],"functionName":{"name":"mload","nativeSrc":"4470:5:8","nodeType":"YulIdentifier","src":"4470:5:8"},"nativeSrc":"4470:12:8","nodeType":"YulFunctionCall","src":"4470:12:8"},"variables":[{"name":"length","nativeSrc":"4460:6:8","nodeType":"YulTypedName","src":"4460:6:8","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"4498:3:8","nodeType":"YulIdentifier","src":"4498:3:8"},{"name":"length","nativeSrc":"4503:6:8","nodeType":"YulIdentifier","src":"4503:6:8"}],"functionName":{"name":"mstore","nativeSrc":"4491:6:8","nodeType":"YulIdentifier","src":"4491:6:8"},"nativeSrc":"4491:19:8","nodeType":"YulFunctionCall","src":"4491:19:8"},"nativeSrc":"4491:19:8","nodeType":"YulExpressionStatement","src":"4491:19:8"},{"nativeSrc":"4519:10:8","nodeType":"YulVariableDeclaration","src":"4519:10:8","value":{"kind":"number","nativeSrc":"4528:1:8","nodeType":"YulLiteral","src":"4528:1:8","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"4523:1:8","nodeType":"YulTypedName","src":"4523:1:8","type":""}]},{"body":{"nativeSrc":"4590:110:8","nodeType":"YulBlock","src":"4590:110:8","statements":[{"nativeSrc":"4604:14:8","nodeType":"YulVariableDeclaration","src":"4604:14:8","value":{"kind":"number","nativeSrc":"4614:4:8","nodeType":"YulLiteral","src":"4614:4:8","type":"","value":"0x20"},"variables":[{"name":"_1","nativeSrc":"4608:2:8","nodeType":"YulTypedName","src":"4608:2:8","type":""}]},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"4646:3:8","nodeType":"YulIdentifier","src":"4646:3:8"},{"name":"i","nativeSrc":"4651:1:8","nodeType":"YulIdentifier","src":"4651:1:8"}],"functionName":{"name":"add","nativeSrc":"4642:3:8","nodeType":"YulIdentifier","src":"4642:3:8"},"nativeSrc":"4642:11:8","nodeType":"YulFunctionCall","src":"4642:11:8"},{"name":"_1","nativeSrc":"4655:2:8","nodeType":"YulIdentifier","src":"4655:2:8"}],"functionName":{"name":"add","nativeSrc":"4638:3:8","nodeType":"YulIdentifier","src":"4638:3:8"},"nativeSrc":"4638:20:8","nodeType":"YulFunctionCall","src":"4638:20:8"},{"arguments":[{"arguments":[{"arguments":[{"name":"value","nativeSrc":"4674:5:8","nodeType":"YulIdentifier","src":"4674:5:8"},{"name":"i","nativeSrc":"4681:1:8","nodeType":"YulIdentifier","src":"4681:1:8"}],"functionName":{"name":"add","nativeSrc":"4670:3:8","nodeType":"YulIdentifier","src":"4670:3:8"},"nativeSrc":"4670:13:8","nodeType":"YulFunctionCall","src":"4670:13:8"},{"name":"_1","nativeSrc":"4685:2:8","nodeType":"YulIdentifier","src":"4685:2:8"}],"functionName":{"name":"add","nativeSrc":"4666:3:8","nodeType":"YulIdentifier","src":"4666:3:8"},"nativeSrc":"4666:22:8","nodeType":"YulFunctionCall","src":"4666:22:8"}],"functionName":{"name":"mload","nativeSrc":"4660:5:8","nodeType":"YulIdentifier","src":"4660:5:8"},"nativeSrc":"4660:29:8","nodeType":"YulFunctionCall","src":"4660:29:8"}],"functionName":{"name":"mstore","nativeSrc":"4631:6:8","nodeType":"YulIdentifier","src":"4631:6:8"},"nativeSrc":"4631:59:8","nodeType":"YulFunctionCall","src":"4631:59:8"},"nativeSrc":"4631:59:8","nodeType":"YulExpressionStatement","src":"4631:59:8"}]},"condition":{"arguments":[{"name":"i","nativeSrc":"4549:1:8","nodeType":"YulIdentifier","src":"4549:1:8"},{"name":"length","nativeSrc":"4552:6:8","nodeType":"YulIdentifier","src":"4552:6:8"}],"functionName":{"name":"lt","nativeSrc":"4546:2:8","nodeType":"YulIdentifier","src":"4546:2:8"},"nativeSrc":"4546:13:8","nodeType":"YulFunctionCall","src":"4546:13:8"},"nativeSrc":"4538:162:8","nodeType":"YulForLoop","post":{"nativeSrc":"4560:21:8","nodeType":"YulBlock","src":"4560:21:8","statements":[{"nativeSrc":"4562:17:8","nodeType":"YulAssignment","src":"4562:17:8","value":{"arguments":[{"name":"i","nativeSrc":"4571:1:8","nodeType":"YulIdentifier","src":"4571:1:8"},{"kind":"number","nativeSrc":"4574:4:8","nodeType":"YulLiteral","src":"4574:4:8","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4567:3:8","nodeType":"YulIdentifier","src":"4567:3:8"},"nativeSrc":"4567:12:8","nodeType":"YulFunctionCall","src":"4567:12:8"},"variableNames":[{"name":"i","nativeSrc":"4562:1:8","nodeType":"YulIdentifier","src":"4562:1:8"}]}]},"pre":{"nativeSrc":"4542:3:8","nodeType":"YulBlock","src":"4542:3:8","statements":[]},"src":"4538:162:8"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"4724:3:8","nodeType":"YulIdentifier","src":"4724:3:8"},{"name":"length","nativeSrc":"4729:6:8","nodeType":"YulIdentifier","src":"4729:6:8"}],"functionName":{"name":"add","nativeSrc":"4720:3:8","nodeType":"YulIdentifier","src":"4720:3:8"},"nativeSrc":"4720:16:8","nodeType":"YulFunctionCall","src":"4720:16:8"},{"kind":"number","nativeSrc":"4738:4:8","nodeType":"YulLiteral","src":"4738:4:8","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4716:3:8","nodeType":"YulIdentifier","src":"4716:3:8"},"nativeSrc":"4716:27:8","nodeType":"YulFunctionCall","src":"4716:27:8"},{"kind":"number","nativeSrc":"4745:1:8","nodeType":"YulLiteral","src":"4745:1:8","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"4709:6:8","nodeType":"YulIdentifier","src":"4709:6:8"},"nativeSrc":"4709:38:8","nodeType":"YulFunctionCall","src":"4709:38:8"},"nativeSrc":"4709:38:8","nodeType":"YulExpressionStatement","src":"4709:38:8"},{"nativeSrc":"4756:116:8","nodeType":"YulAssignment","src":"4756:116:8","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"4771:3:8","nodeType":"YulIdentifier","src":"4771:3:8"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"4784:6:8","nodeType":"YulIdentifier","src":"4784:6:8"},{"kind":"number","nativeSrc":"4792:2:8","nodeType":"YulLiteral","src":"4792:2:8","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"4780:3:8","nodeType":"YulIdentifier","src":"4780:3:8"},"nativeSrc":"4780:15:8","nodeType":"YulFunctionCall","src":"4780:15:8"},{"kind":"number","nativeSrc":"4797:66:8","nodeType":"YulLiteral","src":"4797:66:8","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nativeSrc":"4776:3:8","nodeType":"YulIdentifier","src":"4776:3:8"},"nativeSrc":"4776:88:8","nodeType":"YulFunctionCall","src":"4776:88:8"}],"functionName":{"name":"add","nativeSrc":"4767:3:8","nodeType":"YulIdentifier","src":"4767:3:8"},"nativeSrc":"4767:98:8","nodeType":"YulFunctionCall","src":"4767:98:8"},{"kind":"number","nativeSrc":"4867:4:8","nodeType":"YulLiteral","src":"4867:4:8","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"4763:3:8","nodeType":"YulIdentifier","src":"4763:3:8"},"nativeSrc":"4763:109:8","nodeType":"YulFunctionCall","src":"4763:109:8"},"variableNames":[{"name":"end","nativeSrc":"4756:3:8","nodeType":"YulIdentifier","src":"4756:3:8"}]}]},"name":"abi_encode_string","nativeSrc":"4396:482:8","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"4423:5:8","nodeType":"YulTypedName","src":"4423:5:8","type":""},{"name":"pos","nativeSrc":"4430:3:8","nodeType":"YulTypedName","src":"4430:3:8","type":""}],"returnVariables":[{"name":"end","nativeSrc":"4438:3:8","nodeType":"YulTypedName","src":"4438:3:8","type":""}],"src":"4396:482:8"},{"body":{"nativeSrc":"5240:978:8","nodeType":"YulBlock","src":"5240:978:8","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"5257:9:8","nodeType":"YulIdentifier","src":"5257:9:8"},{"arguments":[{"name":"value0","nativeSrc":"5272:6:8","nodeType":"YulIdentifier","src":"5272:6:8"},{"kind":"number","nativeSrc":"5280:66:8","nodeType":"YulLiteral","src":"5280:66:8","type":"","value":"0xff00000000000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nativeSrc":"5268:3:8","nodeType":"YulIdentifier","src":"5268:3:8"},"nativeSrc":"5268:79:8","nodeType":"YulFunctionCall","src":"5268:79:8"}],"functionName":{"name":"mstore","nativeSrc":"5250:6:8","nodeType":"YulIdentifier","src":"5250:6:8"},"nativeSrc":"5250:98:8","nodeType":"YulFunctionCall","src":"5250:98:8"},"nativeSrc":"5250:98:8","nodeType":"YulExpressionStatement","src":"5250:98:8"},{"nativeSrc":"5357:12:8","nodeType":"YulVariableDeclaration","src":"5357:12:8","value":{"kind":"number","nativeSrc":"5367:2:8","nodeType":"YulLiteral","src":"5367:2:8","type":"","value":"32"},"variables":[{"name":"_1","nativeSrc":"5361:2:8","nodeType":"YulTypedName","src":"5361:2:8","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5389:9:8","nodeType":"YulIdentifier","src":"5389:9:8"},{"kind":"number","nativeSrc":"5400:2:8","nodeType":"YulLiteral","src":"5400:2:8","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5385:3:8","nodeType":"YulIdentifier","src":"5385:3:8"},"nativeSrc":"5385:18:8","nodeType":"YulFunctionCall","src":"5385:18:8"},{"kind":"number","nativeSrc":"5405:3:8","nodeType":"YulLiteral","src":"5405:3:8","type":"","value":"224"}],"functionName":{"name":"mstore","nativeSrc":"5378:6:8","nodeType":"YulIdentifier","src":"5378:6:8"},"nativeSrc":"5378:31:8","nodeType":"YulFunctionCall","src":"5378:31:8"},"nativeSrc":"5378:31:8","nodeType":"YulExpressionStatement","src":"5378:31:8"},{"nativeSrc":"5418:60:8","nodeType":"YulVariableDeclaration","src":"5418:60:8","value":{"arguments":[{"name":"value1","nativeSrc":"5450:6:8","nodeType":"YulIdentifier","src":"5450:6:8"},{"arguments":[{"name":"headStart","nativeSrc":"5462:9:8","nodeType":"YulIdentifier","src":"5462:9:8"},{"kind":"number","nativeSrc":"5473:3:8","nodeType":"YulLiteral","src":"5473:3:8","type":"","value":"224"}],"functionName":{"name":"add","nativeSrc":"5458:3:8","nodeType":"YulIdentifier","src":"5458:3:8"},"nativeSrc":"5458:19:8","nodeType":"YulFunctionCall","src":"5458:19:8"}],"functionName":{"name":"abi_encode_string","nativeSrc":"5432:17:8","nodeType":"YulIdentifier","src":"5432:17:8"},"nativeSrc":"5432:46:8","nodeType":"YulFunctionCall","src":"5432:46:8"},"variables":[{"name":"tail_1","nativeSrc":"5422:6:8","nodeType":"YulTypedName","src":"5422:6:8","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5498:9:8","nodeType":"YulIdentifier","src":"5498:9:8"},{"kind":"number","nativeSrc":"5509:2:8","nodeType":"YulLiteral","src":"5509:2:8","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5494:3:8","nodeType":"YulIdentifier","src":"5494:3:8"},"nativeSrc":"5494:18:8","nodeType":"YulFunctionCall","src":"5494:18:8"},{"arguments":[{"name":"tail_1","nativeSrc":"5518:6:8","nodeType":"YulIdentifier","src":"5518:6:8"},{"name":"headStart","nativeSrc":"5526:9:8","nodeType":"YulIdentifier","src":"5526:9:8"}],"functionName":{"name":"sub","nativeSrc":"5514:3:8","nodeType":"YulIdentifier","src":"5514:3:8"},"nativeSrc":"5514:22:8","nodeType":"YulFunctionCall","src":"5514:22:8"}],"functionName":{"name":"mstore","nativeSrc":"5487:6:8","nodeType":"YulIdentifier","src":"5487:6:8"},"nativeSrc":"5487:50:8","nodeType":"YulFunctionCall","src":"5487:50:8"},"nativeSrc":"5487:50:8","nodeType":"YulExpressionStatement","src":"5487:50:8"},{"nativeSrc":"5546:47:8","nodeType":"YulVariableDeclaration","src":"5546:47:8","value":{"arguments":[{"name":"value2","nativeSrc":"5578:6:8","nodeType":"YulIdentifier","src":"5578:6:8"},{"name":"tail_1","nativeSrc":"5586:6:8","nodeType":"YulIdentifier","src":"5586:6:8"}],"functionName":{"name":"abi_encode_string","nativeSrc":"5560:17:8","nodeType":"YulIdentifier","src":"5560:17:8"},"nativeSrc":"5560:33:8","nodeType":"YulFunctionCall","src":"5560:33:8"},"variables":[{"name":"tail_2","nativeSrc":"5550:6:8","nodeType":"YulTypedName","src":"5550:6:8","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5613:9:8","nodeType":"YulIdentifier","src":"5613:9:8"},{"kind":"number","nativeSrc":"5624:2:8","nodeType":"YulLiteral","src":"5624:2:8","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"5609:3:8","nodeType":"YulIdentifier","src":"5609:3:8"},"nativeSrc":"5609:18:8","nodeType":"YulFunctionCall","src":"5609:18:8"},{"name":"value3","nativeSrc":"5629:6:8","nodeType":"YulIdentifier","src":"5629:6:8"}],"functionName":{"name":"mstore","nativeSrc":"5602:6:8","nodeType":"YulIdentifier","src":"5602:6:8"},"nativeSrc":"5602:34:8","nodeType":"YulFunctionCall","src":"5602:34:8"},"nativeSrc":"5602:34:8","nodeType":"YulExpressionStatement","src":"5602:34:8"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5656:9:8","nodeType":"YulIdentifier","src":"5656:9:8"},{"kind":"number","nativeSrc":"5667:3:8","nodeType":"YulLiteral","src":"5667:3:8","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"5652:3:8","nodeType":"YulIdentifier","src":"5652:3:8"},"nativeSrc":"5652:19:8","nodeType":"YulFunctionCall","src":"5652:19:8"},{"arguments":[{"name":"value4","nativeSrc":"5677:6:8","nodeType":"YulIdentifier","src":"5677:6:8"},{"kind":"number","nativeSrc":"5685:42:8","nodeType":"YulLiteral","src":"5685:42:8","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"5673:3:8","nodeType":"YulIdentifier","src":"5673:3:8"},"nativeSrc":"5673:55:8","nodeType":"YulFunctionCall","src":"5673:55:8"}],"functionName":{"name":"mstore","nativeSrc":"5645:6:8","nodeType":"YulIdentifier","src":"5645:6:8"},"nativeSrc":"5645:84:8","nodeType":"YulFunctionCall","src":"5645:84:8"},"nativeSrc":"5645:84:8","nodeType":"YulExpressionStatement","src":"5645:84:8"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5749:9:8","nodeType":"YulIdentifier","src":"5749:9:8"},{"kind":"number","nativeSrc":"5760:3:8","nodeType":"YulLiteral","src":"5760:3:8","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"5745:3:8","nodeType":"YulIdentifier","src":"5745:3:8"},"nativeSrc":"5745:19:8","nodeType":"YulFunctionCall","src":"5745:19:8"},{"name":"value5","nativeSrc":"5766:6:8","nodeType":"YulIdentifier","src":"5766:6:8"}],"functionName":{"name":"mstore","nativeSrc":"5738:6:8","nodeType":"YulIdentifier","src":"5738:6:8"},"nativeSrc":"5738:35:8","nodeType":"YulFunctionCall","src":"5738:35:8"},"nativeSrc":"5738:35:8","nodeType":"YulExpressionStatement","src":"5738:35:8"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5793:9:8","nodeType":"YulIdentifier","src":"5793:9:8"},{"kind":"number","nativeSrc":"5804:3:8","nodeType":"YulLiteral","src":"5804:3:8","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"5789:3:8","nodeType":"YulIdentifier","src":"5789:3:8"},"nativeSrc":"5789:19:8","nodeType":"YulFunctionCall","src":"5789:19:8"},{"arguments":[{"name":"tail_2","nativeSrc":"5814:6:8","nodeType":"YulIdentifier","src":"5814:6:8"},{"name":"headStart","nativeSrc":"5822:9:8","nodeType":"YulIdentifier","src":"5822:9:8"}],"functionName":{"name":"sub","nativeSrc":"5810:3:8","nodeType":"YulIdentifier","src":"5810:3:8"},"nativeSrc":"5810:22:8","nodeType":"YulFunctionCall","src":"5810:22:8"}],"functionName":{"name":"mstore","nativeSrc":"5782:6:8","nodeType":"YulIdentifier","src":"5782:6:8"},"nativeSrc":"5782:51:8","nodeType":"YulFunctionCall","src":"5782:51:8"},"nativeSrc":"5782:51:8","nodeType":"YulExpressionStatement","src":"5782:51:8"},{"nativeSrc":"5842:17:8","nodeType":"YulVariableDeclaration","src":"5842:17:8","value":{"name":"tail_2","nativeSrc":"5853:6:8","nodeType":"YulIdentifier","src":"5853:6:8"},"variables":[{"name":"pos","nativeSrc":"5846:3:8","nodeType":"YulTypedName","src":"5846:3:8","type":""}]},{"nativeSrc":"5868:27:8","nodeType":"YulVariableDeclaration","src":"5868:27:8","value":{"arguments":[{"name":"value6","nativeSrc":"5888:6:8","nodeType":"YulIdentifier","src":"5888:6:8"}],"functionName":{"name":"mload","nativeSrc":"5882:5:8","nodeType":"YulIdentifier","src":"5882:5:8"},"nativeSrc":"5882:13:8","nodeType":"YulFunctionCall","src":"5882:13:8"},"variables":[{"name":"length","nativeSrc":"5872:6:8","nodeType":"YulTypedName","src":"5872:6:8","type":""}]},{"expression":{"arguments":[{"name":"tail_2","nativeSrc":"5911:6:8","nodeType":"YulIdentifier","src":"5911:6:8"},{"name":"length","nativeSrc":"5919:6:8","nodeType":"YulIdentifier","src":"5919:6:8"}],"functionName":{"name":"mstore","nativeSrc":"5904:6:8","nodeType":"YulIdentifier","src":"5904:6:8"},"nativeSrc":"5904:22:8","nodeType":"YulFunctionCall","src":"5904:22:8"},"nativeSrc":"5904:22:8","nodeType":"YulExpressionStatement","src":"5904:22:8"},{"nativeSrc":"5935:22:8","nodeType":"YulAssignment","src":"5935:22:8","value":{"arguments":[{"name":"tail_2","nativeSrc":"5946:6:8","nodeType":"YulIdentifier","src":"5946:6:8"},{"kind":"number","nativeSrc":"5954:2:8","nodeType":"YulLiteral","src":"5954:2:8","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5942:3:8","nodeType":"YulIdentifier","src":"5942:3:8"},"nativeSrc":"5942:15:8","nodeType":"YulFunctionCall","src":"5942:15:8"},"variableNames":[{"name":"pos","nativeSrc":"5935:3:8","nodeType":"YulIdentifier","src":"5935:3:8"}]},{"nativeSrc":"5966:29:8","nodeType":"YulVariableDeclaration","src":"5966:29:8","value":{"arguments":[{"name":"value6","nativeSrc":"5984:6:8","nodeType":"YulIdentifier","src":"5984:6:8"},{"kind":"number","nativeSrc":"5992:2:8","nodeType":"YulLiteral","src":"5992:2:8","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5980:3:8","nodeType":"YulIdentifier","src":"5980:3:8"},"nativeSrc":"5980:15:8","nodeType":"YulFunctionCall","src":"5980:15:8"},"variables":[{"name":"srcPtr","nativeSrc":"5970:6:8","nodeType":"YulTypedName","src":"5970:6:8","type":""}]},{"nativeSrc":"6004:10:8","nodeType":"YulVariableDeclaration","src":"6004:10:8","value":{"kind":"number","nativeSrc":"6013:1:8","nodeType":"YulLiteral","src":"6013:1:8","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"6008:1:8","nodeType":"YulTypedName","src":"6008:1:8","type":""}]},{"body":{"nativeSrc":"6072:120:8","nodeType":"YulBlock","src":"6072:120:8","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"6093:3:8","nodeType":"YulIdentifier","src":"6093:3:8"},{"arguments":[{"name":"srcPtr","nativeSrc":"6104:6:8","nodeType":"YulIdentifier","src":"6104:6:8"}],"functionName":{"name":"mload","nativeSrc":"6098:5:8","nodeType":"YulIdentifier","src":"6098:5:8"},"nativeSrc":"6098:13:8","nodeType":"YulFunctionCall","src":"6098:13:8"}],"functionName":{"name":"mstore","nativeSrc":"6086:6:8","nodeType":"YulIdentifier","src":"6086:6:8"},"nativeSrc":"6086:26:8","nodeType":"YulFunctionCall","src":"6086:26:8"},"nativeSrc":"6086:26:8","nodeType":"YulExpressionStatement","src":"6086:26:8"},{"nativeSrc":"6125:19:8","nodeType":"YulAssignment","src":"6125:19:8","value":{"arguments":[{"name":"pos","nativeSrc":"6136:3:8","nodeType":"YulIdentifier","src":"6136:3:8"},{"name":"_1","nativeSrc":"6141:2:8","nodeType":"YulIdentifier","src":"6141:2:8"}],"functionName":{"name":"add","nativeSrc":"6132:3:8","nodeType":"YulIdentifier","src":"6132:3:8"},"nativeSrc":"6132:12:8","nodeType":"YulFunctionCall","src":"6132:12:8"},"variableNames":[{"name":"pos","nativeSrc":"6125:3:8","nodeType":"YulIdentifier","src":"6125:3:8"}]},{"nativeSrc":"6157:25:8","nodeType":"YulAssignment","src":"6157:25:8","value":{"arguments":[{"name":"srcPtr","nativeSrc":"6171:6:8","nodeType":"YulIdentifier","src":"6171:6:8"},{"name":"_1","nativeSrc":"6179:2:8","nodeType":"YulIdentifier","src":"6179:2:8"}],"functionName":{"name":"add","nativeSrc":"6167:3:8","nodeType":"YulIdentifier","src":"6167:3:8"},"nativeSrc":"6167:15:8","nodeType":"YulFunctionCall","src":"6167:15:8"},"variableNames":[{"name":"srcPtr","nativeSrc":"6157:6:8","nodeType":"YulIdentifier","src":"6157:6:8"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"6034:1:8","nodeType":"YulIdentifier","src":"6034:1:8"},{"name":"length","nativeSrc":"6037:6:8","nodeType":"YulIdentifier","src":"6037:6:8"}],"functionName":{"name":"lt","nativeSrc":"6031:2:8","nodeType":"YulIdentifier","src":"6031:2:8"},"nativeSrc":"6031:13:8","nodeType":"YulFunctionCall","src":"6031:13:8"},"nativeSrc":"6023:169:8","nodeType":"YulForLoop","post":{"nativeSrc":"6045:18:8","nodeType":"YulBlock","src":"6045:18:8","statements":[{"nativeSrc":"6047:14:8","nodeType":"YulAssignment","src":"6047:14:8","value":{"arguments":[{"name":"i","nativeSrc":"6056:1:8","nodeType":"YulIdentifier","src":"6056:1:8"},{"kind":"number","nativeSrc":"6059:1:8","nodeType":"YulLiteral","src":"6059:1:8","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"6052:3:8","nodeType":"YulIdentifier","src":"6052:3:8"},"nativeSrc":"6052:9:8","nodeType":"YulFunctionCall","src":"6052:9:8"},"variableNames":[{"name":"i","nativeSrc":"6047:1:8","nodeType":"YulIdentifier","src":"6047:1:8"}]}]},"pre":{"nativeSrc":"6027:3:8","nodeType":"YulBlock","src":"6027:3:8","statements":[]},"src":"6023:169:8"},{"nativeSrc":"6201:11:8","nodeType":"YulAssignment","src":"6201:11:8","value":{"name":"pos","nativeSrc":"6209:3:8","nodeType":"YulIdentifier","src":"6209:3:8"},"variableNames":[{"name":"tail","nativeSrc":"6201:4:8","nodeType":"YulIdentifier","src":"6201:4:8"}]}]},"name":"abi_encode_tuple_t_bytes1_t_string_memory_ptr_t_string_memory_ptr_t_uint256_t_address_t_bytes32_t_array$_t_uint256_$dyn_memory_ptr__to_t_bytes1_t_string_memory_ptr_t_string_memory_ptr_t_uint256_t_address_t_bytes32_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed","nativeSrc":"4883:1335:8","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5161:9:8","nodeType":"YulTypedName","src":"5161:9:8","type":""},{"name":"value6","nativeSrc":"5172:6:8","nodeType":"YulTypedName","src":"5172:6:8","type":""},{"name":"value5","nativeSrc":"5180:6:8","nodeType":"YulTypedName","src":"5180:6:8","type":""},{"name":"value4","nativeSrc":"5188:6:8","nodeType":"YulTypedName","src":"5188:6:8","type":""},{"name":"value3","nativeSrc":"5196:6:8","nodeType":"YulTypedName","src":"5196:6:8","type":""},{"name":"value2","nativeSrc":"5204:6:8","nodeType":"YulTypedName","src":"5204:6:8","type":""},{"name":"value1","nativeSrc":"5212:6:8","nodeType":"YulTypedName","src":"5212:6:8","type":""},{"name":"value0","nativeSrc":"5220:6:8","nodeType":"YulTypedName","src":"5220:6:8","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"5231:4:8","nodeType":"YulTypedName","src":"5231:4:8","type":""}],"src":"4883:1335:8"},{"body":{"nativeSrc":"6374:481:8","nodeType":"YulBlock","src":"6374:481:8","statements":[{"nativeSrc":"6384:12:8","nodeType":"YulVariableDeclaration","src":"6384:12:8","value":{"kind":"number","nativeSrc":"6394:2:8","nodeType":"YulLiteral","src":"6394:2:8","type":"","value":"32"},"variables":[{"name":"_1","nativeSrc":"6388:2:8","nodeType":"YulTypedName","src":"6388:2:8","type":""}]},{"nativeSrc":"6405:32:8","nodeType":"YulVariableDeclaration","src":"6405:32:8","value":{"arguments":[{"name":"headStart","nativeSrc":"6423:9:8","nodeType":"YulIdentifier","src":"6423:9:8"},{"kind":"number","nativeSrc":"6434:2:8","nodeType":"YulLiteral","src":"6434:2:8","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6419:3:8","nodeType":"YulIdentifier","src":"6419:3:8"},"nativeSrc":"6419:18:8","nodeType":"YulFunctionCall","src":"6419:18:8"},"variables":[{"name":"tail_1","nativeSrc":"6409:6:8","nodeType":"YulTypedName","src":"6409:6:8","type":""}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"6453:9:8","nodeType":"YulIdentifier","src":"6453:9:8"},{"kind":"number","nativeSrc":"6464:2:8","nodeType":"YulLiteral","src":"6464:2:8","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"6446:6:8","nodeType":"YulIdentifier","src":"6446:6:8"},"nativeSrc":"6446:21:8","nodeType":"YulFunctionCall","src":"6446:21:8"},"nativeSrc":"6446:21:8","nodeType":"YulExpressionStatement","src":"6446:21:8"},{"nativeSrc":"6476:17:8","nodeType":"YulVariableDeclaration","src":"6476:17:8","value":{"name":"tail_1","nativeSrc":"6487:6:8","nodeType":"YulIdentifier","src":"6487:6:8"},"variables":[{"name":"pos","nativeSrc":"6480:3:8","nodeType":"YulTypedName","src":"6480:3:8","type":""}]},{"nativeSrc":"6502:27:8","nodeType":"YulVariableDeclaration","src":"6502:27:8","value":{"arguments":[{"name":"value0","nativeSrc":"6522:6:8","nodeType":"YulIdentifier","src":"6522:6:8"}],"functionName":{"name":"mload","nativeSrc":"6516:5:8","nodeType":"YulIdentifier","src":"6516:5:8"},"nativeSrc":"6516:13:8","nodeType":"YulFunctionCall","src":"6516:13:8"},"variables":[{"name":"length","nativeSrc":"6506:6:8","nodeType":"YulTypedName","src":"6506:6:8","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nativeSrc":"6545:6:8","nodeType":"YulIdentifier","src":"6545:6:8"},{"name":"length","nativeSrc":"6553:6:8","nodeType":"YulIdentifier","src":"6553:6:8"}],"functionName":{"name":"mstore","nativeSrc":"6538:6:8","nodeType":"YulIdentifier","src":"6538:6:8"},"nativeSrc":"6538:22:8","nodeType":"YulFunctionCall","src":"6538:22:8"},"nativeSrc":"6538:22:8","nodeType":"YulExpressionStatement","src":"6538:22:8"},{"nativeSrc":"6569:25:8","nodeType":"YulAssignment","src":"6569:25:8","value":{"arguments":[{"name":"headStart","nativeSrc":"6580:9:8","nodeType":"YulIdentifier","src":"6580:9:8"},{"kind":"number","nativeSrc":"6591:2:8","nodeType":"YulLiteral","src":"6591:2:8","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"6576:3:8","nodeType":"YulIdentifier","src":"6576:3:8"},"nativeSrc":"6576:18:8","nodeType":"YulFunctionCall","src":"6576:18:8"},"variableNames":[{"name":"pos","nativeSrc":"6569:3:8","nodeType":"YulIdentifier","src":"6569:3:8"}]},{"nativeSrc":"6603:29:8","nodeType":"YulVariableDeclaration","src":"6603:29:8","value":{"arguments":[{"name":"value0","nativeSrc":"6621:6:8","nodeType":"YulIdentifier","src":"6621:6:8"},{"kind":"number","nativeSrc":"6629:2:8","nodeType":"YulLiteral","src":"6629:2:8","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6617:3:8","nodeType":"YulIdentifier","src":"6617:3:8"},"nativeSrc":"6617:15:8","nodeType":"YulFunctionCall","src":"6617:15:8"},"variables":[{"name":"srcPtr","nativeSrc":"6607:6:8","nodeType":"YulTypedName","src":"6607:6:8","type":""}]},{"nativeSrc":"6641:10:8","nodeType":"YulVariableDeclaration","src":"6641:10:8","value":{"kind":"number","nativeSrc":"6650:1:8","nodeType":"YulLiteral","src":"6650:1:8","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"6645:1:8","nodeType":"YulTypedName","src":"6645:1:8","type":""}]},{"body":{"nativeSrc":"6709:120:8","nodeType":"YulBlock","src":"6709:120:8","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"6730:3:8","nodeType":"YulIdentifier","src":"6730:3:8"},{"arguments":[{"name":"srcPtr","nativeSrc":"6741:6:8","nodeType":"YulIdentifier","src":"6741:6:8"}],"functionName":{"name":"mload","nativeSrc":"6735:5:8","nodeType":"YulIdentifier","src":"6735:5:8"},"nativeSrc":"6735:13:8","nodeType":"YulFunctionCall","src":"6735:13:8"}],"functionName":{"name":"mstore","nativeSrc":"6723:6:8","nodeType":"YulIdentifier","src":"6723:6:8"},"nativeSrc":"6723:26:8","nodeType":"YulFunctionCall","src":"6723:26:8"},"nativeSrc":"6723:26:8","nodeType":"YulExpressionStatement","src":"6723:26:8"},{"nativeSrc":"6762:19:8","nodeType":"YulAssignment","src":"6762:19:8","value":{"arguments":[{"name":"pos","nativeSrc":"6773:3:8","nodeType":"YulIdentifier","src":"6773:3:8"},{"name":"_1","nativeSrc":"6778:2:8","nodeType":"YulIdentifier","src":"6778:2:8"}],"functionName":{"name":"add","nativeSrc":"6769:3:8","nodeType":"YulIdentifier","src":"6769:3:8"},"nativeSrc":"6769:12:8","nodeType":"YulFunctionCall","src":"6769:12:8"},"variableNames":[{"name":"pos","nativeSrc":"6762:3:8","nodeType":"YulIdentifier","src":"6762:3:8"}]},{"nativeSrc":"6794:25:8","nodeType":"YulAssignment","src":"6794:25:8","value":{"arguments":[{"name":"srcPtr","nativeSrc":"6808:6:8","nodeType":"YulIdentifier","src":"6808:6:8"},{"name":"_1","nativeSrc":"6816:2:8","nodeType":"YulIdentifier","src":"6816:2:8"}],"functionName":{"name":"add","nativeSrc":"6804:3:8","nodeType":"YulIdentifier","src":"6804:3:8"},"nativeSrc":"6804:15:8","nodeType":"YulFunctionCall","src":"6804:15:8"},"variableNames":[{"name":"srcPtr","nativeSrc":"6794:6:8","nodeType":"YulIdentifier","src":"6794:6:8"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"6671:1:8","nodeType":"YulIdentifier","src":"6671:1:8"},{"name":"length","nativeSrc":"6674:6:8","nodeType":"YulIdentifier","src":"6674:6:8"}],"functionName":{"name":"lt","nativeSrc":"6668:2:8","nodeType":"YulIdentifier","src":"6668:2:8"},"nativeSrc":"6668:13:8","nodeType":"YulFunctionCall","src":"6668:13:8"},"nativeSrc":"6660:169:8","nodeType":"YulForLoop","post":{"nativeSrc":"6682:18:8","nodeType":"YulBlock","src":"6682:18:8","statements":[{"nativeSrc":"6684:14:8","nodeType":"YulAssignment","src":"6684:14:8","value":{"arguments":[{"name":"i","nativeSrc":"6693:1:8","nodeType":"YulIdentifier","src":"6693:1:8"},{"kind":"number","nativeSrc":"6696:1:8","nodeType":"YulLiteral","src":"6696:1:8","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"6689:3:8","nodeType":"YulIdentifier","src":"6689:3:8"},"nativeSrc":"6689:9:8","nodeType":"YulFunctionCall","src":"6689:9:8"},"variableNames":[{"name":"i","nativeSrc":"6684:1:8","nodeType":"YulIdentifier","src":"6684:1:8"}]}]},"pre":{"nativeSrc":"6664:3:8","nodeType":"YulBlock","src":"6664:3:8","statements":[]},"src":"6660:169:8"},{"nativeSrc":"6838:11:8","nodeType":"YulAssignment","src":"6838:11:8","value":{"name":"pos","nativeSrc":"6846:3:8","nodeType":"YulIdentifier","src":"6846:3:8"},"variableNames":[{"name":"tail","nativeSrc":"6838:4:8","nodeType":"YulIdentifier","src":"6838:4:8"}]}]},"name":"abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed","nativeSrc":"6223:632:8","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6343:9:8","nodeType":"YulTypedName","src":"6343:9:8","type":""},{"name":"value0","nativeSrc":"6354:6:8","nodeType":"YulTypedName","src":"6354:6:8","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"6365:4:8","nodeType":"YulTypedName","src":"6365:4:8","type":""}],"src":"6223:632:8"},{"body":{"nativeSrc":"6892:152:8","nodeType":"YulBlock","src":"6892:152:8","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6909:1:8","nodeType":"YulLiteral","src":"6909:1:8","type":"","value":"0"},{"kind":"number","nativeSrc":"6912:77:8","nodeType":"YulLiteral","src":"6912:77:8","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"6902:6:8","nodeType":"YulIdentifier","src":"6902:6:8"},"nativeSrc":"6902:88:8","nodeType":"YulFunctionCall","src":"6902:88:8"},"nativeSrc":"6902:88:8","nodeType":"YulExpressionStatement","src":"6902:88:8"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7006:1:8","nodeType":"YulLiteral","src":"7006:1:8","type":"","value":"4"},{"kind":"number","nativeSrc":"7009:4:8","nodeType":"YulLiteral","src":"7009:4:8","type":"","value":"0x12"}],"functionName":{"name":"mstore","nativeSrc":"6999:6:8","nodeType":"YulIdentifier","src":"6999:6:8"},"nativeSrc":"6999:15:8","nodeType":"YulFunctionCall","src":"6999:15:8"},"nativeSrc":"6999:15:8","nodeType":"YulExpressionStatement","src":"6999:15:8"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7030:1:8","nodeType":"YulLiteral","src":"7030:1:8","type":"","value":"0"},{"kind":"number","nativeSrc":"7033:4:8","nodeType":"YulLiteral","src":"7033:4:8","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"7023:6:8","nodeType":"YulIdentifier","src":"7023:6:8"},"nativeSrc":"7023:15:8","nodeType":"YulFunctionCall","src":"7023:15:8"},"nativeSrc":"7023:15:8","nodeType":"YulExpressionStatement","src":"7023:15:8"}]},"name":"panic_error_0x12","nativeSrc":"6860:184:8","nodeType":"YulFunctionDefinition","src":"6860:184:8"},{"body":{"nativeSrc":"7081:152:8","nodeType":"YulBlock","src":"7081:152:8","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7098:1:8","nodeType":"YulLiteral","src":"7098:1:8","type":"","value":"0"},{"kind":"number","nativeSrc":"7101:77:8","nodeType":"YulLiteral","src":"7101:77:8","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"7091:6:8","nodeType":"YulIdentifier","src":"7091:6:8"},"nativeSrc":"7091:88:8","nodeType":"YulFunctionCall","src":"7091:88:8"},"nativeSrc":"7091:88:8","nodeType":"YulExpressionStatement","src":"7091:88:8"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7195:1:8","nodeType":"YulLiteral","src":"7195:1:8","type":"","value":"4"},{"kind":"number","nativeSrc":"7198:4:8","nodeType":"YulLiteral","src":"7198:4:8","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"7188:6:8","nodeType":"YulIdentifier","src":"7188:6:8"},"nativeSrc":"7188:15:8","nodeType":"YulFunctionCall","src":"7188:15:8"},"nativeSrc":"7188:15:8","nodeType":"YulExpressionStatement","src":"7188:15:8"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7219:1:8","nodeType":"YulLiteral","src":"7219:1:8","type":"","value":"0"},{"kind":"number","nativeSrc":"7222:4:8","nodeType":"YulLiteral","src":"7222:4:8","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"7212:6:8","nodeType":"YulIdentifier","src":"7212:6:8"},"nativeSrc":"7212:15:8","nodeType":"YulFunctionCall","src":"7212:15:8"},"nativeSrc":"7212:15:8","nodeType":"YulExpressionStatement","src":"7212:15:8"}]},"name":"panic_error_0x11","nativeSrc":"7049:184:8","nodeType":"YulFunctionDefinition","src":"7049:184:8"},{"body":{"nativeSrc":"7284:74:8","nodeType":"YulBlock","src":"7284:74:8","statements":[{"body":{"nativeSrc":"7307:22:8","nodeType":"YulBlock","src":"7307:22:8","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x12","nativeSrc":"7309:16:8","nodeType":"YulIdentifier","src":"7309:16:8"},"nativeSrc":"7309:18:8","nodeType":"YulFunctionCall","src":"7309:18:8"},"nativeSrc":"7309:18:8","nodeType":"YulExpressionStatement","src":"7309:18:8"}]},"condition":{"arguments":[{"name":"y","nativeSrc":"7304:1:8","nodeType":"YulIdentifier","src":"7304:1:8"}],"functionName":{"name":"iszero","nativeSrc":"7297:6:8","nodeType":"YulIdentifier","src":"7297:6:8"},"nativeSrc":"7297:9:8","nodeType":"YulFunctionCall","src":"7297:9:8"},"nativeSrc":"7294:35:8","nodeType":"YulIf","src":"7294:35:8"},{"nativeSrc":"7338:14:8","nodeType":"YulAssignment","src":"7338:14:8","value":{"arguments":[{"name":"x","nativeSrc":"7347:1:8","nodeType":"YulIdentifier","src":"7347:1:8"},{"name":"y","nativeSrc":"7350:1:8","nodeType":"YulIdentifier","src":"7350:1:8"}],"functionName":{"name":"div","nativeSrc":"7343:3:8","nodeType":"YulIdentifier","src":"7343:3:8"},"nativeSrc":"7343:9:8","nodeType":"YulFunctionCall","src":"7343:9:8"},"variableNames":[{"name":"r","nativeSrc":"7338:1:8","nodeType":"YulIdentifier","src":"7338:1:8"}]}]},"name":"checked_div_t_uint256","nativeSrc":"7238:120:8","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"7269:1:8","nodeType":"YulTypedName","src":"7269:1:8","type":""},{"name":"y","nativeSrc":"7272:1:8","nodeType":"YulTypedName","src":"7272:1:8","type":""}],"returnVariables":[{"name":"r","nativeSrc":"7278:1:8","nodeType":"YulTypedName","src":"7278:1:8","type":""}],"src":"7238:120:8"},{"body":{"nativeSrc":"7401:74:8","nodeType":"YulBlock","src":"7401:74:8","statements":[{"body":{"nativeSrc":"7424:22:8","nodeType":"YulBlock","src":"7424:22:8","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x12","nativeSrc":"7426:16:8","nodeType":"YulIdentifier","src":"7426:16:8"},"nativeSrc":"7426:18:8","nodeType":"YulFunctionCall","src":"7426:18:8"},"nativeSrc":"7426:18:8","nodeType":"YulExpressionStatement","src":"7426:18:8"}]},"condition":{"arguments":[{"name":"y","nativeSrc":"7421:1:8","nodeType":"YulIdentifier","src":"7421:1:8"}],"functionName":{"name":"iszero","nativeSrc":"7414:6:8","nodeType":"YulIdentifier","src":"7414:6:8"},"nativeSrc":"7414:9:8","nodeType":"YulFunctionCall","src":"7414:9:8"},"nativeSrc":"7411:35:8","nodeType":"YulIf","src":"7411:35:8"},{"nativeSrc":"7455:14:8","nodeType":"YulAssignment","src":"7455:14:8","value":{"arguments":[{"name":"x","nativeSrc":"7464:1:8","nodeType":"YulIdentifier","src":"7464:1:8"},{"name":"y","nativeSrc":"7467:1:8","nodeType":"YulIdentifier","src":"7467:1:8"}],"functionName":{"name":"mod","nativeSrc":"7460:3:8","nodeType":"YulIdentifier","src":"7460:3:8"},"nativeSrc":"7460:9:8","nodeType":"YulFunctionCall","src":"7460:9:8"},"variableNames":[{"name":"r","nativeSrc":"7455:1:8","nodeType":"YulIdentifier","src":"7455:1:8"}]}]},"name":"mod_t_uint256","nativeSrc":"7363:112:8","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"7386:1:8","nodeType":"YulTypedName","src":"7386:1:8","type":""},{"name":"y","nativeSrc":"7389:1:8","nodeType":"YulTypedName","src":"7389:1:8","type":""}],"returnVariables":[{"name":"r","nativeSrc":"7395:1:8","nodeType":"YulTypedName","src":"7395:1:8","type":""}],"src":"7363:112:8"},{"body":{"nativeSrc":"7512:152:8","nodeType":"YulBlock","src":"7512:152:8","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7529:1:8","nodeType":"YulLiteral","src":"7529:1:8","type":"","value":"0"},{"kind":"number","nativeSrc":"7532:77:8","nodeType":"YulLiteral","src":"7532:77:8","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"7522:6:8","nodeType":"YulIdentifier","src":"7522:6:8"},"nativeSrc":"7522:88:8","nodeType":"YulFunctionCall","src":"7522:88:8"},"nativeSrc":"7522:88:8","nodeType":"YulExpressionStatement","src":"7522:88:8"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7626:1:8","nodeType":"YulLiteral","src":"7626:1:8","type":"","value":"4"},{"kind":"number","nativeSrc":"7629:4:8","nodeType":"YulLiteral","src":"7629:4:8","type":"","value":"0x32"}],"functionName":{"name":"mstore","nativeSrc":"7619:6:8","nodeType":"YulIdentifier","src":"7619:6:8"},"nativeSrc":"7619:15:8","nodeType":"YulFunctionCall","src":"7619:15:8"},"nativeSrc":"7619:15:8","nodeType":"YulExpressionStatement","src":"7619:15:8"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"7650:1:8","nodeType":"YulLiteral","src":"7650:1:8","type":"","value":"0"},{"kind":"number","nativeSrc":"7653:4:8","nodeType":"YulLiteral","src":"7653:4:8","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"7643:6:8","nodeType":"YulIdentifier","src":"7643:6:8"},"nativeSrc":"7643:15:8","nodeType":"YulFunctionCall","src":"7643:15:8"},"nativeSrc":"7643:15:8","nodeType":"YulExpressionStatement","src":"7643:15:8"}]},"name":"panic_error_0x32","nativeSrc":"7480:184:8","nodeType":"YulFunctionDefinition","src":"7480:184:8"},{"body":{"nativeSrc":"7962:445:8","nodeType":"YulBlock","src":"7962:445:8","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"7979:3:8","nodeType":"YulIdentifier","src":"7979:3:8"},{"hexValue":"4f7264657245524332302875696e74323536206e6f6e63652c75696e74323536","kind":"string","nativeSrc":"7984:34:8","nodeType":"YulLiteral","src":"7984:34:8","type":"","value":"OrderERC20(uint256 nonce,uint256"}],"functionName":{"name":"mstore","nativeSrc":"7972:6:8","nodeType":"YulIdentifier","src":"7972:6:8"},"nativeSrc":"7972:47:8","nodeType":"YulFunctionCall","src":"7972:47:8"},"nativeSrc":"7972:47:8","nodeType":"YulExpressionStatement","src":"7972:47:8"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"8039:3:8","nodeType":"YulIdentifier","src":"8039:3:8"},{"kind":"number","nativeSrc":"8044:2:8","nodeType":"YulLiteral","src":"8044:2:8","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8035:3:8","nodeType":"YulIdentifier","src":"8035:3:8"},"nativeSrc":"8035:12:8","nodeType":"YulFunctionCall","src":"8035:12:8"},{"hexValue":"206578706972792c61646472657373207369676e657257616c6c65742c616464","kind":"string","nativeSrc":"8049:34:8","nodeType":"YulLiteral","src":"8049:34:8","type":"","value":" expiry,address signerWallet,add"}],"functionName":{"name":"mstore","nativeSrc":"8028:6:8","nodeType":"YulIdentifier","src":"8028:6:8"},"nativeSrc":"8028:56:8","nodeType":"YulFunctionCall","src":"8028:56:8"},"nativeSrc":"8028:56:8","nodeType":"YulExpressionStatement","src":"8028:56:8"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"8104:3:8","nodeType":"YulIdentifier","src":"8104:3:8"},{"kind":"number","nativeSrc":"8109:2:8","nodeType":"YulLiteral","src":"8109:2:8","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"8100:3:8","nodeType":"YulIdentifier","src":"8100:3:8"},"nativeSrc":"8100:12:8","nodeType":"YulFunctionCall","src":"8100:12:8"},{"hexValue":"72657373207369676e6572546f6b656e2c75696e74323536207369676e657241","kind":"string","nativeSrc":"8114:34:8","nodeType":"YulLiteral","src":"8114:34:8","type":"","value":"ress signerToken,uint256 signerA"}],"functionName":{"name":"mstore","nativeSrc":"8093:6:8","nodeType":"YulIdentifier","src":"8093:6:8"},"nativeSrc":"8093:56:8","nodeType":"YulFunctionCall","src":"8093:56:8"},"nativeSrc":"8093:56:8","nodeType":"YulExpressionStatement","src":"8093:56:8"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"8169:3:8","nodeType":"YulIdentifier","src":"8169:3:8"},{"kind":"number","nativeSrc":"8174:2:8","nodeType":"YulLiteral","src":"8174:2:8","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"8165:3:8","nodeType":"YulIdentifier","src":"8165:3:8"},"nativeSrc":"8165:12:8","nodeType":"YulFunctionCall","src":"8165:12:8"},{"hexValue":"6d6f756e742c","kind":"string","nativeSrc":"8179:8:8","nodeType":"YulLiteral","src":"8179:8:8","type":"","value":"mount,"}],"functionName":{"name":"mstore","nativeSrc":"8158:6:8","nodeType":"YulIdentifier","src":"8158:6:8"},"nativeSrc":"8158:30:8","nodeType":"YulFunctionCall","src":"8158:30:8"},"nativeSrc":"8158:30:8","nodeType":"YulExpressionStatement","src":"8158:30:8"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"8208:3:8","nodeType":"YulIdentifier","src":"8208:3:8"},{"kind":"number","nativeSrc":"8213:3:8","nodeType":"YulLiteral","src":"8213:3:8","type":"","value":"102"}],"functionName":{"name":"add","nativeSrc":"8204:3:8","nodeType":"YulIdentifier","src":"8204:3:8"},"nativeSrc":"8204:13:8","nodeType":"YulFunctionCall","src":"8204:13:8"},{"hexValue":"75696e743235362070726f746f636f6c4665652c616464726573732073656e64","kind":"string","nativeSrc":"8219:34:8","nodeType":"YulLiteral","src":"8219:34:8","type":"","value":"uint256 protocolFee,address send"}],"functionName":{"name":"mstore","nativeSrc":"8197:6:8","nodeType":"YulIdentifier","src":"8197:6:8"},"nativeSrc":"8197:57:8","nodeType":"YulFunctionCall","src":"8197:57:8"},"nativeSrc":"8197:57:8","nodeType":"YulExpressionStatement","src":"8197:57:8"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"8274:3:8","nodeType":"YulIdentifier","src":"8274:3:8"},{"kind":"number","nativeSrc":"8279:3:8","nodeType":"YulLiteral","src":"8279:3:8","type":"","value":"134"}],"functionName":{"name":"add","nativeSrc":"8270:3:8","nodeType":"YulIdentifier","src":"8270:3:8"},"nativeSrc":"8270:13:8","nodeType":"YulFunctionCall","src":"8270:13:8"},{"hexValue":"657257616c6c65742c616464726573732073656e646572546f6b656e2c75696e","kind":"string","nativeSrc":"8285:34:8","nodeType":"YulLiteral","src":"8285:34:8","type":"","value":"erWallet,address senderToken,uin"}],"functionName":{"name":"mstore","nativeSrc":"8263:6:8","nodeType":"YulIdentifier","src":"8263:6:8"},"nativeSrc":"8263:57:8","nodeType":"YulFunctionCall","src":"8263:57:8"},"nativeSrc":"8263:57:8","nodeType":"YulExpressionStatement","src":"8263:57:8"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"8340:3:8","nodeType":"YulIdentifier","src":"8340:3:8"},{"kind":"number","nativeSrc":"8345:3:8","nodeType":"YulLiteral","src":"8345:3:8","type":"","value":"166"}],"functionName":{"name":"add","nativeSrc":"8336:3:8","nodeType":"YulIdentifier","src":"8336:3:8"},"nativeSrc":"8336:13:8","nodeType":"YulFunctionCall","src":"8336:13:8"},{"hexValue":"743235362073656e646572416d6f756e7429","kind":"string","nativeSrc":"8351:20:8","nodeType":"YulLiteral","src":"8351:20:8","type":"","value":"t256 senderAmount)"}],"functionName":{"name":"mstore","nativeSrc":"8329:6:8","nodeType":"YulIdentifier","src":"8329:6:8"},"nativeSrc":"8329:43:8","nodeType":"YulFunctionCall","src":"8329:43:8"},"nativeSrc":"8329:43:8","nodeType":"YulExpressionStatement","src":"8329:43:8"},{"nativeSrc":"8381:20:8","nodeType":"YulAssignment","src":"8381:20:8","value":{"arguments":[{"name":"pos","nativeSrc":"8392:3:8","nodeType":"YulIdentifier","src":"8392:3:8"},{"kind":"number","nativeSrc":"8397:3:8","nodeType":"YulLiteral","src":"8397:3:8","type":"","value":"184"}],"functionName":{"name":"add","nativeSrc":"8388:3:8","nodeType":"YulIdentifier","src":"8388:3:8"},"nativeSrc":"8388:13:8","nodeType":"YulFunctionCall","src":"8388:13:8"},"variableNames":[{"name":"end","nativeSrc":"8381:3:8","nodeType":"YulIdentifier","src":"8381:3:8"}]}]},"name":"abi_encode_tuple_packed_t_stringliteral_a35663569bd702bea491990a007131496e4d3753f9234d1b7e68f8b412726917_t_stringliteral_6ba965eabc6eaeed812e8920669228dfe87f072ba49959aba6545388ff29ea5b__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"7669:738:8","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"7946:3:8","nodeType":"YulTypedName","src":"7946:3:8","type":""}],"returnVariables":[{"name":"end","nativeSrc":"7954:3:8","nodeType":"YulTypedName","src":"7954:3:8","type":""}],"src":"7669:738:8"},{"body":{"nativeSrc":"8765:567:8","nodeType":"YulBlock","src":"8765:567:8","statements":[{"nativeSrc":"8775:27:8","nodeType":"YulAssignment","src":"8775:27:8","value":{"arguments":[{"name":"headStart","nativeSrc":"8787:9:8","nodeType":"YulIdentifier","src":"8787:9:8"},{"kind":"number","nativeSrc":"8798:3:8","nodeType":"YulLiteral","src":"8798:3:8","type":"","value":"320"}],"functionName":{"name":"add","nativeSrc":"8783:3:8","nodeType":"YulIdentifier","src":"8783:3:8"},"nativeSrc":"8783:19:8","nodeType":"YulFunctionCall","src":"8783:19:8"},"variableNames":[{"name":"tail","nativeSrc":"8775:4:8","nodeType":"YulIdentifier","src":"8775:4:8"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8818:9:8","nodeType":"YulIdentifier","src":"8818:9:8"},{"name":"value0","nativeSrc":"8829:6:8","nodeType":"YulIdentifier","src":"8829:6:8"}],"functionName":{"name":"mstore","nativeSrc":"8811:6:8","nodeType":"YulIdentifier","src":"8811:6:8"},"nativeSrc":"8811:25:8","nodeType":"YulFunctionCall","src":"8811:25:8"},"nativeSrc":"8811:25:8","nodeType":"YulExpressionStatement","src":"8811:25:8"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8856:9:8","nodeType":"YulIdentifier","src":"8856:9:8"},{"kind":"number","nativeSrc":"8867:2:8","nodeType":"YulLiteral","src":"8867:2:8","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8852:3:8","nodeType":"YulIdentifier","src":"8852:3:8"},"nativeSrc":"8852:18:8","nodeType":"YulFunctionCall","src":"8852:18:8"},{"name":"value1","nativeSrc":"8872:6:8","nodeType":"YulIdentifier","src":"8872:6:8"}],"functionName":{"name":"mstore","nativeSrc":"8845:6:8","nodeType":"YulIdentifier","src":"8845:6:8"},"nativeSrc":"8845:34:8","nodeType":"YulFunctionCall","src":"8845:34:8"},"nativeSrc":"8845:34:8","nodeType":"YulExpressionStatement","src":"8845:34:8"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8899:9:8","nodeType":"YulIdentifier","src":"8899:9:8"},{"kind":"number","nativeSrc":"8910:2:8","nodeType":"YulLiteral","src":"8910:2:8","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"8895:3:8","nodeType":"YulIdentifier","src":"8895:3:8"},"nativeSrc":"8895:18:8","nodeType":"YulFunctionCall","src":"8895:18:8"},{"name":"value2","nativeSrc":"8915:6:8","nodeType":"YulIdentifier","src":"8915:6:8"}],"functionName":{"name":"mstore","nativeSrc":"8888:6:8","nodeType":"YulIdentifier","src":"8888:6:8"},"nativeSrc":"8888:34:8","nodeType":"YulFunctionCall","src":"8888:34:8"},"nativeSrc":"8888:34:8","nodeType":"YulExpressionStatement","src":"8888:34:8"},{"nativeSrc":"8931:52:8","nodeType":"YulVariableDeclaration","src":"8931:52:8","value":{"kind":"number","nativeSrc":"8941:42:8","nodeType":"YulLiteral","src":"8941:42:8","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nativeSrc":"8935:2:8","nodeType":"YulTypedName","src":"8935:2:8","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9003:9:8","nodeType":"YulIdentifier","src":"9003:9:8"},{"kind":"number","nativeSrc":"9014:2:8","nodeType":"YulLiteral","src":"9014:2:8","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"8999:3:8","nodeType":"YulIdentifier","src":"8999:3:8"},"nativeSrc":"8999:18:8","nodeType":"YulFunctionCall","src":"8999:18:8"},{"arguments":[{"name":"value3","nativeSrc":"9023:6:8","nodeType":"YulIdentifier","src":"9023:6:8"},{"name":"_1","nativeSrc":"9031:2:8","nodeType":"YulIdentifier","src":"9031:2:8"}],"functionName":{"name":"and","nativeSrc":"9019:3:8","nodeType":"YulIdentifier","src":"9019:3:8"},"nativeSrc":"9019:15:8","nodeType":"YulFunctionCall","src":"9019:15:8"}],"functionName":{"name":"mstore","nativeSrc":"8992:6:8","nodeType":"YulIdentifier","src":"8992:6:8"},"nativeSrc":"8992:43:8","nodeType":"YulFunctionCall","src":"8992:43:8"},"nativeSrc":"8992:43:8","nodeType":"YulExpressionStatement","src":"8992:43:8"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9055:9:8","nodeType":"YulIdentifier","src":"9055:9:8"},{"kind":"number","nativeSrc":"9066:3:8","nodeType":"YulLiteral","src":"9066:3:8","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"9051:3:8","nodeType":"YulIdentifier","src":"9051:3:8"},"nativeSrc":"9051:19:8","nodeType":"YulFunctionCall","src":"9051:19:8"},{"arguments":[{"name":"value4","nativeSrc":"9076:6:8","nodeType":"YulIdentifier","src":"9076:6:8"},{"name":"_1","nativeSrc":"9084:2:8","nodeType":"YulIdentifier","src":"9084:2:8"}],"functionName":{"name":"and","nativeSrc":"9072:3:8","nodeType":"YulIdentifier","src":"9072:3:8"},"nativeSrc":"9072:15:8","nodeType":"YulFunctionCall","src":"9072:15:8"}],"functionName":{"name":"mstore","nativeSrc":"9044:6:8","nodeType":"YulIdentifier","src":"9044:6:8"},"nativeSrc":"9044:44:8","nodeType":"YulFunctionCall","src":"9044:44:8"},"nativeSrc":"9044:44:8","nodeType":"YulExpressionStatement","src":"9044:44:8"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9108:9:8","nodeType":"YulIdentifier","src":"9108:9:8"},{"kind":"number","nativeSrc":"9119:3:8","nodeType":"YulLiteral","src":"9119:3:8","type":"","value":"160"}],"functionName":{"name":"add","nativeSrc":"9104:3:8","nodeType":"YulIdentifier","src":"9104:3:8"},"nativeSrc":"9104:19:8","nodeType":"YulFunctionCall","src":"9104:19:8"},{"name":"value5","nativeSrc":"9125:6:8","nodeType":"YulIdentifier","src":"9125:6:8"}],"functionName":{"name":"mstore","nativeSrc":"9097:6:8","nodeType":"YulIdentifier","src":"9097:6:8"},"nativeSrc":"9097:35:8","nodeType":"YulFunctionCall","src":"9097:35:8"},"nativeSrc":"9097:35:8","nodeType":"YulExpressionStatement","src":"9097:35:8"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9152:9:8","nodeType":"YulIdentifier","src":"9152:9:8"},{"kind":"number","nativeSrc":"9163:3:8","nodeType":"YulLiteral","src":"9163:3:8","type":"","value":"192"}],"functionName":{"name":"add","nativeSrc":"9148:3:8","nodeType":"YulIdentifier","src":"9148:3:8"},"nativeSrc":"9148:19:8","nodeType":"YulFunctionCall","src":"9148:19:8"},{"name":"value6","nativeSrc":"9169:6:8","nodeType":"YulIdentifier","src":"9169:6:8"}],"functionName":{"name":"mstore","nativeSrc":"9141:6:8","nodeType":"YulIdentifier","src":"9141:6:8"},"nativeSrc":"9141:35:8","nodeType":"YulFunctionCall","src":"9141:35:8"},"nativeSrc":"9141:35:8","nodeType":"YulExpressionStatement","src":"9141:35:8"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9196:9:8","nodeType":"YulIdentifier","src":"9196:9:8"},{"kind":"number","nativeSrc":"9207:3:8","nodeType":"YulLiteral","src":"9207:3:8","type":"","value":"224"}],"functionName":{"name":"add","nativeSrc":"9192:3:8","nodeType":"YulIdentifier","src":"9192:3:8"},"nativeSrc":"9192:19:8","nodeType":"YulFunctionCall","src":"9192:19:8"},{"arguments":[{"name":"value7","nativeSrc":"9217:6:8","nodeType":"YulIdentifier","src":"9217:6:8"},{"name":"_1","nativeSrc":"9225:2:8","nodeType":"YulIdentifier","src":"9225:2:8"}],"functionName":{"name":"and","nativeSrc":"9213:3:8","nodeType":"YulIdentifier","src":"9213:3:8"},"nativeSrc":"9213:15:8","nodeType":"YulFunctionCall","src":"9213:15:8"}],"functionName":{"name":"mstore","nativeSrc":"9185:6:8","nodeType":"YulIdentifier","src":"9185:6:8"},"nativeSrc":"9185:44:8","nodeType":"YulFunctionCall","src":"9185:44:8"},"nativeSrc":"9185:44:8","nodeType":"YulExpressionStatement","src":"9185:44:8"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9249:9:8","nodeType":"YulIdentifier","src":"9249:9:8"},{"kind":"number","nativeSrc":"9260:3:8","nodeType":"YulLiteral","src":"9260:3:8","type":"","value":"256"}],"functionName":{"name":"add","nativeSrc":"9245:3:8","nodeType":"YulIdentifier","src":"9245:3:8"},"nativeSrc":"9245:19:8","nodeType":"YulFunctionCall","src":"9245:19:8"},{"arguments":[{"name":"value8","nativeSrc":"9270:6:8","nodeType":"YulIdentifier","src":"9270:6:8"},{"name":"_1","nativeSrc":"9278:2:8","nodeType":"YulIdentifier","src":"9278:2:8"}],"functionName":{"name":"and","nativeSrc":"9266:3:8","nodeType":"YulIdentifier","src":"9266:3:8"},"nativeSrc":"9266:15:8","nodeType":"YulFunctionCall","src":"9266:15:8"}],"functionName":{"name":"mstore","nativeSrc":"9238:6:8","nodeType":"YulIdentifier","src":"9238:6:8"},"nativeSrc":"9238:44:8","nodeType":"YulFunctionCall","src":"9238:44:8"},"nativeSrc":"9238:44:8","nodeType":"YulExpressionStatement","src":"9238:44:8"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9302:9:8","nodeType":"YulIdentifier","src":"9302:9:8"},{"kind":"number","nativeSrc":"9313:3:8","nodeType":"YulLiteral","src":"9313:3:8","type":"","value":"288"}],"functionName":{"name":"add","nativeSrc":"9298:3:8","nodeType":"YulIdentifier","src":"9298:3:8"},"nativeSrc":"9298:19:8","nodeType":"YulFunctionCall","src":"9298:19:8"},{"name":"value9","nativeSrc":"9319:6:8","nodeType":"YulIdentifier","src":"9319:6:8"}],"functionName":{"name":"mstore","nativeSrc":"9291:6:8","nodeType":"YulIdentifier","src":"9291:6:8"},"nativeSrc":"9291:35:8","nodeType":"YulFunctionCall","src":"9291:35:8"},"nativeSrc":"9291:35:8","nodeType":"YulExpressionStatement","src":"9291:35:8"}]},"name":"abi_encode_tuple_t_bytes32_t_uint256_t_uint256_t_address_t_address_t_uint256_t_uint256_t_address_t_address_t_uint256__to_t_bytes32_t_uint256_t_uint256_t_address_t_address_t_uint256_t_uint256_t_address_t_address_t_uint256__fromStack_reversed","nativeSrc":"8412:920:8","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8662:9:8","nodeType":"YulTypedName","src":"8662:9:8","type":""},{"name":"value9","nativeSrc":"8673:6:8","nodeType":"YulTypedName","src":"8673:6:8","type":""},{"name":"value8","nativeSrc":"8681:6:8","nodeType":"YulTypedName","src":"8681:6:8","type":""},{"name":"value7","nativeSrc":"8689:6:8","nodeType":"YulTypedName","src":"8689:6:8","type":""},{"name":"value6","nativeSrc":"8697:6:8","nodeType":"YulTypedName","src":"8697:6:8","type":""},{"name":"value5","nativeSrc":"8705:6:8","nodeType":"YulTypedName","src":"8705:6:8","type":""},{"name":"value4","nativeSrc":"8713:6:8","nodeType":"YulTypedName","src":"8713:6:8","type":""},{"name":"value3","nativeSrc":"8721:6:8","nodeType":"YulTypedName","src":"8721:6:8","type":""},{"name":"value2","nativeSrc":"8729:6:8","nodeType":"YulTypedName","src":"8729:6:8","type":""},{"name":"value1","nativeSrc":"8737:6:8","nodeType":"YulTypedName","src":"8737:6:8","type":""},{"name":"value0","nativeSrc":"8745:6:8","nodeType":"YulTypedName","src":"8745:6:8","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8756:4:8","nodeType":"YulTypedName","src":"8756:4:8","type":""}],"src":"8412:920:8"},{"body":{"nativeSrc":"9389:116:8","nodeType":"YulBlock","src":"9389:116:8","statements":[{"nativeSrc":"9399:20:8","nodeType":"YulAssignment","src":"9399:20:8","value":{"arguments":[{"name":"x","nativeSrc":"9414:1:8","nodeType":"YulIdentifier","src":"9414:1:8"},{"name":"y","nativeSrc":"9417:1:8","nodeType":"YulIdentifier","src":"9417:1:8"}],"functionName":{"name":"mul","nativeSrc":"9410:3:8","nodeType":"YulIdentifier","src":"9410:3:8"},"nativeSrc":"9410:9:8","nodeType":"YulFunctionCall","src":"9410:9:8"},"variableNames":[{"name":"product","nativeSrc":"9399:7:8","nodeType":"YulIdentifier","src":"9399:7:8"}]},{"body":{"nativeSrc":"9477:22:8","nodeType":"YulBlock","src":"9477:22:8","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"9479:16:8","nodeType":"YulIdentifier","src":"9479:16:8"},"nativeSrc":"9479:18:8","nodeType":"YulFunctionCall","src":"9479:18:8"},"nativeSrc":"9479:18:8","nodeType":"YulExpressionStatement","src":"9479:18:8"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nativeSrc":"9448:1:8","nodeType":"YulIdentifier","src":"9448:1:8"}],"functionName":{"name":"iszero","nativeSrc":"9441:6:8","nodeType":"YulIdentifier","src":"9441:6:8"},"nativeSrc":"9441:9:8","nodeType":"YulFunctionCall","src":"9441:9:8"},{"arguments":[{"name":"y","nativeSrc":"9455:1:8","nodeType":"YulIdentifier","src":"9455:1:8"},{"arguments":[{"name":"product","nativeSrc":"9462:7:8","nodeType":"YulIdentifier","src":"9462:7:8"},{"name":"x","nativeSrc":"9471:1:8","nodeType":"YulIdentifier","src":"9471:1:8"}],"functionName":{"name":"div","nativeSrc":"9458:3:8","nodeType":"YulIdentifier","src":"9458:3:8"},"nativeSrc":"9458:15:8","nodeType":"YulFunctionCall","src":"9458:15:8"}],"functionName":{"name":"eq","nativeSrc":"9452:2:8","nodeType":"YulIdentifier","src":"9452:2:8"},"nativeSrc":"9452:22:8","nodeType":"YulFunctionCall","src":"9452:22:8"}],"functionName":{"name":"or","nativeSrc":"9438:2:8","nodeType":"YulIdentifier","src":"9438:2:8"},"nativeSrc":"9438:37:8","nodeType":"YulFunctionCall","src":"9438:37:8"}],"functionName":{"name":"iszero","nativeSrc":"9431:6:8","nodeType":"YulIdentifier","src":"9431:6:8"},"nativeSrc":"9431:45:8","nodeType":"YulFunctionCall","src":"9431:45:8"},"nativeSrc":"9428:71:8","nodeType":"YulIf","src":"9428:71:8"}]},"name":"checked_mul_t_uint256","nativeSrc":"9337:168:8","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"9368:1:8","nodeType":"YulTypedName","src":"9368:1:8","type":""},{"name":"y","nativeSrc":"9371:1:8","nodeType":"YulTypedName","src":"9371:1:8","type":""}],"returnVariables":[{"name":"product","nativeSrc":"9377:7:8","nodeType":"YulTypedName","src":"9377:7:8","type":""}],"src":"9337:168:8"},{"body":{"nativeSrc":"9591:103:8","nodeType":"YulBlock","src":"9591:103:8","statements":[{"body":{"nativeSrc":"9637:16:8","nodeType":"YulBlock","src":"9637:16:8","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9646:1:8","nodeType":"YulLiteral","src":"9646:1:8","type":"","value":"0"},{"kind":"number","nativeSrc":"9649:1:8","nodeType":"YulLiteral","src":"9649:1:8","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9639:6:8","nodeType":"YulIdentifier","src":"9639:6:8"},"nativeSrc":"9639:12:8","nodeType":"YulFunctionCall","src":"9639:12:8"},"nativeSrc":"9639:12:8","nodeType":"YulExpressionStatement","src":"9639:12:8"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"9612:7:8","nodeType":"YulIdentifier","src":"9612:7:8"},{"name":"headStart","nativeSrc":"9621:9:8","nodeType":"YulIdentifier","src":"9621:9:8"}],"functionName":{"name":"sub","nativeSrc":"9608:3:8","nodeType":"YulIdentifier","src":"9608:3:8"},"nativeSrc":"9608:23:8","nodeType":"YulFunctionCall","src":"9608:23:8"},{"kind":"number","nativeSrc":"9633:2:8","nodeType":"YulLiteral","src":"9633:2:8","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"9604:3:8","nodeType":"YulIdentifier","src":"9604:3:8"},"nativeSrc":"9604:32:8","nodeType":"YulFunctionCall","src":"9604:32:8"},"nativeSrc":"9601:52:8","nodeType":"YulIf","src":"9601:52:8"},{"nativeSrc":"9662:26:8","nodeType":"YulAssignment","src":"9662:26:8","value":{"arguments":[{"name":"headStart","nativeSrc":"9678:9:8","nodeType":"YulIdentifier","src":"9678:9:8"}],"functionName":{"name":"mload","nativeSrc":"9672:5:8","nodeType":"YulIdentifier","src":"9672:5:8"},"nativeSrc":"9672:16:8","nodeType":"YulFunctionCall","src":"9672:16:8"},"variableNames":[{"name":"value0","nativeSrc":"9662:6:8","nodeType":"YulIdentifier","src":"9662:6:8"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nativeSrc":"9510:184:8","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9557:9:8","nodeType":"YulTypedName","src":"9557:9:8","type":""},{"name":"dataEnd","nativeSrc":"9568:7:8","nodeType":"YulTypedName","src":"9568:7:8","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"9580:6:8","nodeType":"YulTypedName","src":"9580:6:8","type":""}],"src":"9510:184:8"},{"body":{"nativeSrc":"9748:79:8","nodeType":"YulBlock","src":"9748:79:8","statements":[{"nativeSrc":"9758:17:8","nodeType":"YulAssignment","src":"9758:17:8","value":{"arguments":[{"name":"x","nativeSrc":"9770:1:8","nodeType":"YulIdentifier","src":"9770:1:8"},{"name":"y","nativeSrc":"9773:1:8","nodeType":"YulIdentifier","src":"9773:1:8"}],"functionName":{"name":"sub","nativeSrc":"9766:3:8","nodeType":"YulIdentifier","src":"9766:3:8"},"nativeSrc":"9766:9:8","nodeType":"YulFunctionCall","src":"9766:9:8"},"variableNames":[{"name":"diff","nativeSrc":"9758:4:8","nodeType":"YulIdentifier","src":"9758:4:8"}]},{"body":{"nativeSrc":"9799:22:8","nodeType":"YulBlock","src":"9799:22:8","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"9801:16:8","nodeType":"YulIdentifier","src":"9801:16:8"},"nativeSrc":"9801:18:8","nodeType":"YulFunctionCall","src":"9801:18:8"},"nativeSrc":"9801:18:8","nodeType":"YulExpressionStatement","src":"9801:18:8"}]},"condition":{"arguments":[{"name":"diff","nativeSrc":"9790:4:8","nodeType":"YulIdentifier","src":"9790:4:8"},{"name":"x","nativeSrc":"9796:1:8","nodeType":"YulIdentifier","src":"9796:1:8"}],"functionName":{"name":"gt","nativeSrc":"9787:2:8","nodeType":"YulIdentifier","src":"9787:2:8"},"nativeSrc":"9787:11:8","nodeType":"YulFunctionCall","src":"9787:11:8"},"nativeSrc":"9784:37:8","nodeType":"YulIf","src":"9784:37:8"}]},"name":"checked_sub_t_uint256","nativeSrc":"9699:128:8","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"9730:1:8","nodeType":"YulTypedName","src":"9730:1:8","type":""},{"name":"y","nativeSrc":"9733:1:8","nodeType":"YulTypedName","src":"9733:1:8","type":""}],"returnVariables":[{"name":"diff","nativeSrc":"9739:4:8","nodeType":"YulTypedName","src":"9739:4:8","type":""}],"src":"9699:128:8"},{"body":{"nativeSrc":"9896:412:8","nodeType":"YulBlock","src":"9896:412:8","statements":[{"nativeSrc":"9906:16:8","nodeType":"YulVariableDeclaration","src":"9906:16:8","value":{"kind":"number","nativeSrc":"9921:1:8","nodeType":"YulLiteral","src":"9921:1:8","type":"","value":"1"},"variables":[{"name":"power_1","nativeSrc":"9910:7:8","nodeType":"YulTypedName","src":"9910:7:8","type":""}]},{"nativeSrc":"9931:10:8","nodeType":"YulAssignment","src":"9931:10:8","value":{"kind":"number","nativeSrc":"9940:1:8","nodeType":"YulLiteral","src":"9940:1:8","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"9931:5:8","nodeType":"YulIdentifier","src":"9931:5:8"}]},{"nativeSrc":"9950:13:8","nodeType":"YulAssignment","src":"9950:13:8","value":{"name":"_base","nativeSrc":"9958:5:8","nodeType":"YulIdentifier","src":"9958:5:8"},"variableNames":[{"name":"base","nativeSrc":"9950:4:8","nodeType":"YulIdentifier","src":"9950:4:8"}]},{"body":{"nativeSrc":"10014:288:8","nodeType":"YulBlock","src":"10014:288:8","statements":[{"body":{"nativeSrc":"10119:22:8","nodeType":"YulBlock","src":"10119:22:8","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"10121:16:8","nodeType":"YulIdentifier","src":"10121:16:8"},"nativeSrc":"10121:18:8","nodeType":"YulFunctionCall","src":"10121:18:8"},"nativeSrc":"10121:18:8","nodeType":"YulExpressionStatement","src":"10121:18:8"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"10034:4:8","nodeType":"YulIdentifier","src":"10034:4:8"},{"arguments":[{"kind":"number","nativeSrc":"10044:66:8","nodeType":"YulLiteral","src":"10044:66:8","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},{"name":"base","nativeSrc":"10112:4:8","nodeType":"YulIdentifier","src":"10112:4:8"}],"functionName":{"name":"div","nativeSrc":"10040:3:8","nodeType":"YulIdentifier","src":"10040:3:8"},"nativeSrc":"10040:77:8","nodeType":"YulFunctionCall","src":"10040:77:8"}],"functionName":{"name":"gt","nativeSrc":"10031:2:8","nodeType":"YulIdentifier","src":"10031:2:8"},"nativeSrc":"10031:87:8","nodeType":"YulFunctionCall","src":"10031:87:8"},"nativeSrc":"10028:113:8","nodeType":"YulIf","src":"10028:113:8"},{"body":{"nativeSrc":"10180:29:8","nodeType":"YulBlock","src":"10180:29:8","statements":[{"nativeSrc":"10182:25:8","nodeType":"YulAssignment","src":"10182:25:8","value":{"arguments":[{"name":"power","nativeSrc":"10195:5:8","nodeType":"YulIdentifier","src":"10195:5:8"},{"name":"base","nativeSrc":"10202:4:8","nodeType":"YulIdentifier","src":"10202:4:8"}],"functionName":{"name":"mul","nativeSrc":"10191:3:8","nodeType":"YulIdentifier","src":"10191:3:8"},"nativeSrc":"10191:16:8","nodeType":"YulFunctionCall","src":"10191:16:8"},"variableNames":[{"name":"power","nativeSrc":"10182:5:8","nodeType":"YulIdentifier","src":"10182:5:8"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"10161:8:8","nodeType":"YulIdentifier","src":"10161:8:8"},{"name":"power_1","nativeSrc":"10171:7:8","nodeType":"YulIdentifier","src":"10171:7:8"}],"functionName":{"name":"and","nativeSrc":"10157:3:8","nodeType":"YulIdentifier","src":"10157:3:8"},"nativeSrc":"10157:22:8","nodeType":"YulFunctionCall","src":"10157:22:8"},"nativeSrc":"10154:55:8","nodeType":"YulIf","src":"10154:55:8"},{"nativeSrc":"10222:23:8","nodeType":"YulAssignment","src":"10222:23:8","value":{"arguments":[{"name":"base","nativeSrc":"10234:4:8","nodeType":"YulIdentifier","src":"10234:4:8"},{"name":"base","nativeSrc":"10240:4:8","nodeType":"YulIdentifier","src":"10240:4:8"}],"functionName":{"name":"mul","nativeSrc":"10230:3:8","nodeType":"YulIdentifier","src":"10230:3:8"},"nativeSrc":"10230:15:8","nodeType":"YulFunctionCall","src":"10230:15:8"},"variableNames":[{"name":"base","nativeSrc":"10222:4:8","nodeType":"YulIdentifier","src":"10222:4:8"}]},{"nativeSrc":"10258:34:8","nodeType":"YulAssignment","src":"10258:34:8","value":{"arguments":[{"name":"power_1","nativeSrc":"10274:7:8","nodeType":"YulIdentifier","src":"10274:7:8"},{"name":"exponent","nativeSrc":"10283:8:8","nodeType":"YulIdentifier","src":"10283:8:8"}],"functionName":{"name":"shr","nativeSrc":"10270:3:8","nodeType":"YulIdentifier","src":"10270:3:8"},"nativeSrc":"10270:22:8","nodeType":"YulFunctionCall","src":"10270:22:8"},"variableNames":[{"name":"exponent","nativeSrc":"10258:8:8","nodeType":"YulIdentifier","src":"10258:8:8"}]}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"9983:8:8","nodeType":"YulIdentifier","src":"9983:8:8"},{"name":"power_1","nativeSrc":"9993:7:8","nodeType":"YulIdentifier","src":"9993:7:8"}],"functionName":{"name":"gt","nativeSrc":"9980:2:8","nodeType":"YulIdentifier","src":"9980:2:8"},"nativeSrc":"9980:21:8","nodeType":"YulFunctionCall","src":"9980:21:8"},"nativeSrc":"9972:330:8","nodeType":"YulForLoop","post":{"nativeSrc":"10002:3:8","nodeType":"YulBlock","src":"10002:3:8","statements":[]},"pre":{"nativeSrc":"9976:3:8","nodeType":"YulBlock","src":"9976:3:8","statements":[]},"src":"9972:330:8"}]},"name":"checked_exp_helper","nativeSrc":"9832:476:8","nodeType":"YulFunctionDefinition","parameters":[{"name":"_base","nativeSrc":"9860:5:8","nodeType":"YulTypedName","src":"9860:5:8","type":""},{"name":"exponent","nativeSrc":"9867:8:8","nodeType":"YulTypedName","src":"9867:8:8","type":""}],"returnVariables":[{"name":"power","nativeSrc":"9880:5:8","nodeType":"YulTypedName","src":"9880:5:8","type":""},{"name":"base","nativeSrc":"9887:4:8","nodeType":"YulTypedName","src":"9887:4:8","type":""}],"src":"9832:476:8"},{"body":{"nativeSrc":"10372:807:8","nodeType":"YulBlock","src":"10372:807:8","statements":[{"body":{"nativeSrc":"10410:52:8","nodeType":"YulBlock","src":"10410:52:8","statements":[{"nativeSrc":"10424:10:8","nodeType":"YulAssignment","src":"10424:10:8","value":{"kind":"number","nativeSrc":"10433:1:8","nodeType":"YulLiteral","src":"10433:1:8","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"10424:5:8","nodeType":"YulIdentifier","src":"10424:5:8"}]},{"nativeSrc":"10447:5:8","nodeType":"YulLeave","src":"10447:5:8"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"10392:8:8","nodeType":"YulIdentifier","src":"10392:8:8"}],"functionName":{"name":"iszero","nativeSrc":"10385:6:8","nodeType":"YulIdentifier","src":"10385:6:8"},"nativeSrc":"10385:16:8","nodeType":"YulFunctionCall","src":"10385:16:8"},"nativeSrc":"10382:80:8","nodeType":"YulIf","src":"10382:80:8"},{"body":{"nativeSrc":"10495:52:8","nodeType":"YulBlock","src":"10495:52:8","statements":[{"nativeSrc":"10509:10:8","nodeType":"YulAssignment","src":"10509:10:8","value":{"kind":"number","nativeSrc":"10518:1:8","nodeType":"YulLiteral","src":"10518:1:8","type":"","value":"0"},"variableNames":[{"name":"power","nativeSrc":"10509:5:8","nodeType":"YulIdentifier","src":"10509:5:8"}]},{"nativeSrc":"10532:5:8","nodeType":"YulLeave","src":"10532:5:8"}]},"condition":{"arguments":[{"name":"base","nativeSrc":"10481:4:8","nodeType":"YulIdentifier","src":"10481:4:8"}],"functionName":{"name":"iszero","nativeSrc":"10474:6:8","nodeType":"YulIdentifier","src":"10474:6:8"},"nativeSrc":"10474:12:8","nodeType":"YulFunctionCall","src":"10474:12:8"},"nativeSrc":"10471:76:8","nodeType":"YulIf","src":"10471:76:8"},{"cases":[{"body":{"nativeSrc":"10583:52:8","nodeType":"YulBlock","src":"10583:52:8","statements":[{"nativeSrc":"10597:10:8","nodeType":"YulAssignment","src":"10597:10:8","value":{"kind":"number","nativeSrc":"10606:1:8","nodeType":"YulLiteral","src":"10606:1:8","type":"","value":"1"},"variableNames":[{"name":"power","nativeSrc":"10597:5:8","nodeType":"YulIdentifier","src":"10597:5:8"}]},{"nativeSrc":"10620:5:8","nodeType":"YulLeave","src":"10620:5:8"}]},"nativeSrc":"10576:59:8","nodeType":"YulCase","src":"10576:59:8","value":{"kind":"number","nativeSrc":"10581:1:8","nodeType":"YulLiteral","src":"10581:1:8","type":"","value":"1"}},{"body":{"nativeSrc":"10651:123:8","nodeType":"YulBlock","src":"10651:123:8","statements":[{"body":{"nativeSrc":"10686:22:8","nodeType":"YulBlock","src":"10686:22:8","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"10688:16:8","nodeType":"YulIdentifier","src":"10688:16:8"},"nativeSrc":"10688:18:8","nodeType":"YulFunctionCall","src":"10688:18:8"},"nativeSrc":"10688:18:8","nodeType":"YulExpressionStatement","src":"10688:18:8"}]},"condition":{"arguments":[{"name":"exponent","nativeSrc":"10671:8:8","nodeType":"YulIdentifier","src":"10671:8:8"},{"kind":"number","nativeSrc":"10681:3:8","nodeType":"YulLiteral","src":"10681:3:8","type":"","value":"255"}],"functionName":{"name":"gt","nativeSrc":"10668:2:8","nodeType":"YulIdentifier","src":"10668:2:8"},"nativeSrc":"10668:17:8","nodeType":"YulFunctionCall","src":"10668:17:8"},"nativeSrc":"10665:43:8","nodeType":"YulIf","src":"10665:43:8"},{"nativeSrc":"10721:25:8","nodeType":"YulAssignment","src":"10721:25:8","value":{"arguments":[{"name":"exponent","nativeSrc":"10734:8:8","nodeType":"YulIdentifier","src":"10734:8:8"},{"kind":"number","nativeSrc":"10744:1:8","nodeType":"YulLiteral","src":"10744:1:8","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"10730:3:8","nodeType":"YulIdentifier","src":"10730:3:8"},"nativeSrc":"10730:16:8","nodeType":"YulFunctionCall","src":"10730:16:8"},"variableNames":[{"name":"power","nativeSrc":"10721:5:8","nodeType":"YulIdentifier","src":"10721:5:8"}]},{"nativeSrc":"10759:5:8","nodeType":"YulLeave","src":"10759:5:8"}]},"nativeSrc":"10644:130:8","nodeType":"YulCase","src":"10644:130:8","value":{"kind":"number","nativeSrc":"10649:1:8","nodeType":"YulLiteral","src":"10649:1:8","type":"","value":"2"}}],"expression":{"name":"base","nativeSrc":"10563:4:8","nodeType":"YulIdentifier","src":"10563:4:8"},"nativeSrc":"10556:218:8","nodeType":"YulSwitch","src":"10556:218:8"},{"body":{"nativeSrc":"10872:70:8","nodeType":"YulBlock","src":"10872:70:8","statements":[{"nativeSrc":"10886:28:8","nodeType":"YulAssignment","src":"10886:28:8","value":{"arguments":[{"name":"base","nativeSrc":"10899:4:8","nodeType":"YulIdentifier","src":"10899:4:8"},{"name":"exponent","nativeSrc":"10905:8:8","nodeType":"YulIdentifier","src":"10905:8:8"}],"functionName":{"name":"exp","nativeSrc":"10895:3:8","nodeType":"YulIdentifier","src":"10895:3:8"},"nativeSrc":"10895:19:8","nodeType":"YulFunctionCall","src":"10895:19:8"},"variableNames":[{"name":"power","nativeSrc":"10886:5:8","nodeType":"YulIdentifier","src":"10886:5:8"}]},{"nativeSrc":"10927:5:8","nodeType":"YulLeave","src":"10927:5:8"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"base","nativeSrc":"10796:4:8","nodeType":"YulIdentifier","src":"10796:4:8"},{"kind":"number","nativeSrc":"10802:2:8","nodeType":"YulLiteral","src":"10802:2:8","type":"","value":"11"}],"functionName":{"name":"lt","nativeSrc":"10793:2:8","nodeType":"YulIdentifier","src":"10793:2:8"},"nativeSrc":"10793:12:8","nodeType":"YulFunctionCall","src":"10793:12:8"},{"arguments":[{"name":"exponent","nativeSrc":"10810:8:8","nodeType":"YulIdentifier","src":"10810:8:8"},{"kind":"number","nativeSrc":"10820:2:8","nodeType":"YulLiteral","src":"10820:2:8","type":"","value":"78"}],"functionName":{"name":"lt","nativeSrc":"10807:2:8","nodeType":"YulIdentifier","src":"10807:2:8"},"nativeSrc":"10807:16:8","nodeType":"YulFunctionCall","src":"10807:16:8"}],"functionName":{"name":"and","nativeSrc":"10789:3:8","nodeType":"YulIdentifier","src":"10789:3:8"},"nativeSrc":"10789:35:8","nodeType":"YulFunctionCall","src":"10789:35:8"},{"arguments":[{"arguments":[{"name":"base","nativeSrc":"10833:4:8","nodeType":"YulIdentifier","src":"10833:4:8"},{"kind":"number","nativeSrc":"10839:3:8","nodeType":"YulLiteral","src":"10839:3:8","type":"","value":"307"}],"functionName":{"name":"lt","nativeSrc":"10830:2:8","nodeType":"YulIdentifier","src":"10830:2:8"},"nativeSrc":"10830:13:8","nodeType":"YulFunctionCall","src":"10830:13:8"},{"arguments":[{"name":"exponent","nativeSrc":"10848:8:8","nodeType":"YulIdentifier","src":"10848:8:8"},{"kind":"number","nativeSrc":"10858:2:8","nodeType":"YulLiteral","src":"10858:2:8","type":"","value":"32"}],"functionName":{"name":"lt","nativeSrc":"10845:2:8","nodeType":"YulIdentifier","src":"10845:2:8"},"nativeSrc":"10845:16:8","nodeType":"YulFunctionCall","src":"10845:16:8"}],"functionName":{"name":"and","nativeSrc":"10826:3:8","nodeType":"YulIdentifier","src":"10826:3:8"},"nativeSrc":"10826:36:8","nodeType":"YulFunctionCall","src":"10826:36:8"}],"functionName":{"name":"or","nativeSrc":"10786:2:8","nodeType":"YulIdentifier","src":"10786:2:8"},"nativeSrc":"10786:77:8","nodeType":"YulFunctionCall","src":"10786:77:8"},"nativeSrc":"10783:159:8","nodeType":"YulIf","src":"10783:159:8"},{"nativeSrc":"10951:57:8","nodeType":"YulVariableDeclaration","src":"10951:57:8","value":{"arguments":[{"name":"base","nativeSrc":"10993:4:8","nodeType":"YulIdentifier","src":"10993:4:8"},{"name":"exponent","nativeSrc":"10999:8:8","nodeType":"YulIdentifier","src":"10999:8:8"}],"functionName":{"name":"checked_exp_helper","nativeSrc":"10974:18:8","nodeType":"YulIdentifier","src":"10974:18:8"},"nativeSrc":"10974:34:8","nodeType":"YulFunctionCall","src":"10974:34:8"},"variables":[{"name":"power_1","nativeSrc":"10955:7:8","nodeType":"YulTypedName","src":"10955:7:8","type":""},{"name":"base_1","nativeSrc":"10964:6:8","nodeType":"YulTypedName","src":"10964:6:8","type":""}]},{"body":{"nativeSrc":"11113:22:8","nodeType":"YulBlock","src":"11113:22:8","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"11115:16:8","nodeType":"YulIdentifier","src":"11115:16:8"},"nativeSrc":"11115:18:8","nodeType":"YulFunctionCall","src":"11115:18:8"},"nativeSrc":"11115:18:8","nodeType":"YulExpressionStatement","src":"11115:18:8"}]},"condition":{"arguments":[{"name":"power_1","nativeSrc":"11023:7:8","nodeType":"YulIdentifier","src":"11023:7:8"},{"arguments":[{"kind":"number","nativeSrc":"11036:66:8","nodeType":"YulLiteral","src":"11036:66:8","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},{"name":"base_1","nativeSrc":"11104:6:8","nodeType":"YulIdentifier","src":"11104:6:8"}],"functionName":{"name":"div","nativeSrc":"11032:3:8","nodeType":"YulIdentifier","src":"11032:3:8"},"nativeSrc":"11032:79:8","nodeType":"YulFunctionCall","src":"11032:79:8"}],"functionName":{"name":"gt","nativeSrc":"11020:2:8","nodeType":"YulIdentifier","src":"11020:2:8"},"nativeSrc":"11020:92:8","nodeType":"YulFunctionCall","src":"11020:92:8"},"nativeSrc":"11017:118:8","nodeType":"YulIf","src":"11017:118:8"},{"nativeSrc":"11144:29:8","nodeType":"YulAssignment","src":"11144:29:8","value":{"arguments":[{"name":"power_1","nativeSrc":"11157:7:8","nodeType":"YulIdentifier","src":"11157:7:8"},{"name":"base_1","nativeSrc":"11166:6:8","nodeType":"YulIdentifier","src":"11166:6:8"}],"functionName":{"name":"mul","nativeSrc":"11153:3:8","nodeType":"YulIdentifier","src":"11153:3:8"},"nativeSrc":"11153:20:8","nodeType":"YulFunctionCall","src":"11153:20:8"},"variableNames":[{"name":"power","nativeSrc":"11144:5:8","nodeType":"YulIdentifier","src":"11144:5:8"}]}]},"name":"checked_exp_unsigned","nativeSrc":"10313:866:8","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"10343:4:8","nodeType":"YulTypedName","src":"10343:4:8","type":""},{"name":"exponent","nativeSrc":"10349:8:8","nodeType":"YulTypedName","src":"10349:8:8","type":""}],"returnVariables":[{"name":"power","nativeSrc":"10362:5:8","nodeType":"YulTypedName","src":"10362:5:8","type":""}],"src":"10313:866:8"},{"body":{"nativeSrc":"11254:61:8","nodeType":"YulBlock","src":"11254:61:8","statements":[{"nativeSrc":"11264:45:8","nodeType":"YulAssignment","src":"11264:45:8","value":{"arguments":[{"name":"base","nativeSrc":"11294:4:8","nodeType":"YulIdentifier","src":"11294:4:8"},{"name":"exponent","nativeSrc":"11300:8:8","nodeType":"YulIdentifier","src":"11300:8:8"}],"functionName":{"name":"checked_exp_unsigned","nativeSrc":"11273:20:8","nodeType":"YulIdentifier","src":"11273:20:8"},"nativeSrc":"11273:36:8","nodeType":"YulFunctionCall","src":"11273:36:8"},"variableNames":[{"name":"power","nativeSrc":"11264:5:8","nodeType":"YulIdentifier","src":"11264:5:8"}]}]},"name":"checked_exp_t_uint256_t_uint256","nativeSrc":"11184:131:8","nodeType":"YulFunctionDefinition","parameters":[{"name":"base","nativeSrc":"11225:4:8","nodeType":"YulTypedName","src":"11225:4:8","type":""},{"name":"exponent","nativeSrc":"11231:8:8","nodeType":"YulTypedName","src":"11231:8:8","type":""}],"returnVariables":[{"name":"power","nativeSrc":"11244:5:8","nodeType":"YulTypedName","src":"11244:5:8","type":""}],"src":"11184:131:8"},{"body":{"nativeSrc":"11368:77:8","nodeType":"YulBlock","src":"11368:77:8","statements":[{"nativeSrc":"11378:16:8","nodeType":"YulAssignment","src":"11378:16:8","value":{"arguments":[{"name":"x","nativeSrc":"11389:1:8","nodeType":"YulIdentifier","src":"11389:1:8"},{"name":"y","nativeSrc":"11392:1:8","nodeType":"YulIdentifier","src":"11392:1:8"}],"functionName":{"name":"add","nativeSrc":"11385:3:8","nodeType":"YulIdentifier","src":"11385:3:8"},"nativeSrc":"11385:9:8","nodeType":"YulFunctionCall","src":"11385:9:8"},"variableNames":[{"name":"sum","nativeSrc":"11378:3:8","nodeType":"YulIdentifier","src":"11378:3:8"}]},{"body":{"nativeSrc":"11417:22:8","nodeType":"YulBlock","src":"11417:22:8","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"11419:16:8","nodeType":"YulIdentifier","src":"11419:16:8"},"nativeSrc":"11419:18:8","nodeType":"YulFunctionCall","src":"11419:18:8"},"nativeSrc":"11419:18:8","nodeType":"YulExpressionStatement","src":"11419:18:8"}]},"condition":{"arguments":[{"name":"x","nativeSrc":"11409:1:8","nodeType":"YulIdentifier","src":"11409:1:8"},{"name":"sum","nativeSrc":"11412:3:8","nodeType":"YulIdentifier","src":"11412:3:8"}],"functionName":{"name":"gt","nativeSrc":"11406:2:8","nodeType":"YulIdentifier","src":"11406:2:8"},"nativeSrc":"11406:10:8","nodeType":"YulFunctionCall","src":"11406:10:8"},"nativeSrc":"11403:36:8","nodeType":"YulIf","src":"11403:36:8"}]},"name":"checked_add_t_uint256","nativeSrc":"11320:125:8","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"11351:1:8","nodeType":"YulTypedName","src":"11351:1:8","type":""},{"name":"y","nativeSrc":"11354:1:8","nodeType":"YulTypedName","src":"11354:1:8","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"11360:3:8","nodeType":"YulTypedName","src":"11360:3:8","type":""}],"src":"11320:125:8"},{"body":{"nativeSrc":"11482:152:8","nodeType":"YulBlock","src":"11482:152:8","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11499:1:8","nodeType":"YulLiteral","src":"11499:1:8","type":"","value":"0"},{"kind":"number","nativeSrc":"11502:77:8","nodeType":"YulLiteral","src":"11502:77:8","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nativeSrc":"11492:6:8","nodeType":"YulIdentifier","src":"11492:6:8"},"nativeSrc":"11492:88:8","nodeType":"YulFunctionCall","src":"11492:88:8"},"nativeSrc":"11492:88:8","nodeType":"YulExpressionStatement","src":"11492:88:8"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11596:1:8","nodeType":"YulLiteral","src":"11596:1:8","type":"","value":"4"},{"kind":"number","nativeSrc":"11599:4:8","nodeType":"YulLiteral","src":"11599:4:8","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"11589:6:8","nodeType":"YulIdentifier","src":"11589:6:8"},"nativeSrc":"11589:15:8","nodeType":"YulFunctionCall","src":"11589:15:8"},"nativeSrc":"11589:15:8","nodeType":"YulExpressionStatement","src":"11589:15:8"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"11620:1:8","nodeType":"YulLiteral","src":"11620:1:8","type":"","value":"0"},{"kind":"number","nativeSrc":"11623:4:8","nodeType":"YulLiteral","src":"11623:4:8","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"11613:6:8","nodeType":"YulIdentifier","src":"11613:6:8"},"nativeSrc":"11613:15:8","nodeType":"YulFunctionCall","src":"11613:15:8"},"nativeSrc":"11613:15:8","nodeType":"YulExpressionStatement","src":"11613:15:8"}]},"name":"panic_error_0x41","nativeSrc":"11450:184:8","nodeType":"YulFunctionDefinition","src":"11450:184:8"},{"body":{"nativeSrc":"11810:220:8","nodeType":"YulBlock","src":"11810:220:8","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"11827:3:8","nodeType":"YulIdentifier","src":"11827:3:8"},{"name":"value0","nativeSrc":"11832:6:8","nodeType":"YulIdentifier","src":"11832:6:8"}],"functionName":{"name":"mstore","nativeSrc":"11820:6:8","nodeType":"YulIdentifier","src":"11820:6:8"},"nativeSrc":"11820:19:8","nodeType":"YulFunctionCall","src":"11820:19:8"},"nativeSrc":"11820:19:8","nodeType":"YulExpressionStatement","src":"11820:19:8"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"11859:3:8","nodeType":"YulIdentifier","src":"11859:3:8"},{"kind":"number","nativeSrc":"11864:2:8","nodeType":"YulLiteral","src":"11864:2:8","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11855:3:8","nodeType":"YulIdentifier","src":"11855:3:8"},"nativeSrc":"11855:12:8","nodeType":"YulFunctionCall","src":"11855:12:8"},{"name":"value1","nativeSrc":"11869:6:8","nodeType":"YulIdentifier","src":"11869:6:8"}],"functionName":{"name":"mstore","nativeSrc":"11848:6:8","nodeType":"YulIdentifier","src":"11848:6:8"},"nativeSrc":"11848:28:8","nodeType":"YulFunctionCall","src":"11848:28:8"},"nativeSrc":"11848:28:8","nodeType":"YulExpressionStatement","src":"11848:28:8"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"11896:3:8","nodeType":"YulIdentifier","src":"11896:3:8"},{"kind":"number","nativeSrc":"11901:2:8","nodeType":"YulLiteral","src":"11901:2:8","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"11892:3:8","nodeType":"YulIdentifier","src":"11892:3:8"},"nativeSrc":"11892:12:8","nodeType":"YulFunctionCall","src":"11892:12:8"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"11914:3:8","nodeType":"YulLiteral","src":"11914:3:8","type":"","value":"248"},{"name":"value2","nativeSrc":"11919:6:8","nodeType":"YulIdentifier","src":"11919:6:8"}],"functionName":{"name":"shl","nativeSrc":"11910:3:8","nodeType":"YulIdentifier","src":"11910:3:8"},"nativeSrc":"11910:16:8","nodeType":"YulFunctionCall","src":"11910:16:8"},{"kind":"number","nativeSrc":"11928:66:8","nodeType":"YulLiteral","src":"11928:66:8","type":"","value":"0xff00000000000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nativeSrc":"11906:3:8","nodeType":"YulIdentifier","src":"11906:3:8"},"nativeSrc":"11906:89:8","nodeType":"YulFunctionCall","src":"11906:89:8"}],"functionName":{"name":"mstore","nativeSrc":"11885:6:8","nodeType":"YulIdentifier","src":"11885:6:8"},"nativeSrc":"11885:111:8","nodeType":"YulFunctionCall","src":"11885:111:8"},"nativeSrc":"11885:111:8","nodeType":"YulExpressionStatement","src":"11885:111:8"},{"nativeSrc":"12005:19:8","nodeType":"YulAssignment","src":"12005:19:8","value":{"arguments":[{"name":"pos","nativeSrc":"12016:3:8","nodeType":"YulIdentifier","src":"12016:3:8"},{"kind":"number","nativeSrc":"12021:2:8","nodeType":"YulLiteral","src":"12021:2:8","type":"","value":"65"}],"functionName":{"name":"add","nativeSrc":"12012:3:8","nodeType":"YulIdentifier","src":"12012:3:8"},"nativeSrc":"12012:12:8","nodeType":"YulFunctionCall","src":"12012:12:8"},"variableNames":[{"name":"end","nativeSrc":"12005:3:8","nodeType":"YulIdentifier","src":"12005:3:8"}]}]},"name":"abi_encode_tuple_packed_t_bytes32_t_bytes32_t_uint8__to_t_bytes32_t_bytes32_t_uint8__nonPadded_inplace_fromStack_reversed","nativeSrc":"11639:391:8","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"11770:3:8","nodeType":"YulTypedName","src":"11770:3:8","type":""},{"name":"value2","nativeSrc":"11775:6:8","nodeType":"YulTypedName","src":"11775:6:8","type":""},{"name":"value1","nativeSrc":"11783:6:8","nodeType":"YulTypedName","src":"11783:6:8","type":""},{"name":"value0","nativeSrc":"11791:6:8","nodeType":"YulTypedName","src":"11791:6:8","type":""}],"returnVariables":[{"name":"end","nativeSrc":"11802:3:8","nodeType":"YulTypedName","src":"11802:3:8","type":""}],"src":"11639:391:8"},{"body":{"nativeSrc":"12082:148:8","nodeType":"YulBlock","src":"12082:148:8","statements":[{"body":{"nativeSrc":"12173:22:8","nodeType":"YulBlock","src":"12173:22:8","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"12175:16:8","nodeType":"YulIdentifier","src":"12175:16:8"},"nativeSrc":"12175:18:8","nodeType":"YulFunctionCall","src":"12175:18:8"},"nativeSrc":"12175:18:8","nodeType":"YulExpressionStatement","src":"12175:18:8"}]},"condition":{"arguments":[{"name":"value","nativeSrc":"12098:5:8","nodeType":"YulIdentifier","src":"12098:5:8"},{"kind":"number","nativeSrc":"12105:66:8","nodeType":"YulLiteral","src":"12105:66:8","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"eq","nativeSrc":"12095:2:8","nodeType":"YulIdentifier","src":"12095:2:8"},"nativeSrc":"12095:77:8","nodeType":"YulFunctionCall","src":"12095:77:8"},"nativeSrc":"12092:103:8","nodeType":"YulIf","src":"12092:103:8"},{"nativeSrc":"12204:20:8","nodeType":"YulAssignment","src":"12204:20:8","value":{"arguments":[{"name":"value","nativeSrc":"12215:5:8","nodeType":"YulIdentifier","src":"12215:5:8"},{"kind":"number","nativeSrc":"12222:1:8","nodeType":"YulLiteral","src":"12222:1:8","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"12211:3:8","nodeType":"YulIdentifier","src":"12211:3:8"},"nativeSrc":"12211:13:8","nodeType":"YulFunctionCall","src":"12211:13:8"},"variableNames":[{"name":"ret","nativeSrc":"12204:3:8","nodeType":"YulIdentifier","src":"12204:3:8"}]}]},"name":"increment_t_uint256","nativeSrc":"12035:195:8","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"12064:5:8","nodeType":"YulTypedName","src":"12064:5:8","type":""}],"returnVariables":[{"name":"ret","nativeSrc":"12074:3:8","nodeType":"YulTypedName","src":"12074:3:8","type":""}],"src":"12035:195:8"},{"body":{"nativeSrc":"12364:198:8","nodeType":"YulBlock","src":"12364:198:8","statements":[{"nativeSrc":"12374:26:8","nodeType":"YulAssignment","src":"12374:26:8","value":{"arguments":[{"name":"headStart","nativeSrc":"12386:9:8","nodeType":"YulIdentifier","src":"12386:9:8"},{"kind":"number","nativeSrc":"12397:2:8","nodeType":"YulLiteral","src":"12397:2:8","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"12382:3:8","nodeType":"YulIdentifier","src":"12382:3:8"},"nativeSrc":"12382:18:8","nodeType":"YulFunctionCall","src":"12382:18:8"},"variableNames":[{"name":"tail","nativeSrc":"12374:4:8","nodeType":"YulIdentifier","src":"12374:4:8"}]},{"nativeSrc":"12409:52:8","nodeType":"YulVariableDeclaration","src":"12409:52:8","value":{"kind":"number","nativeSrc":"12419:42:8","nodeType":"YulLiteral","src":"12419:42:8","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nativeSrc":"12413:2:8","nodeType":"YulTypedName","src":"12413:2:8","type":""}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"12477:9:8","nodeType":"YulIdentifier","src":"12477:9:8"},{"arguments":[{"name":"value0","nativeSrc":"12492:6:8","nodeType":"YulIdentifier","src":"12492:6:8"},{"name":"_1","nativeSrc":"12500:2:8","nodeType":"YulIdentifier","src":"12500:2:8"}],"functionName":{"name":"and","nativeSrc":"12488:3:8","nodeType":"YulIdentifier","src":"12488:3:8"},"nativeSrc":"12488:15:8","nodeType":"YulFunctionCall","src":"12488:15:8"}],"functionName":{"name":"mstore","nativeSrc":"12470:6:8","nodeType":"YulIdentifier","src":"12470:6:8"},"nativeSrc":"12470:34:8","nodeType":"YulFunctionCall","src":"12470:34:8"},"nativeSrc":"12470:34:8","nodeType":"YulExpressionStatement","src":"12470:34:8"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12524:9:8","nodeType":"YulIdentifier","src":"12524:9:8"},{"kind":"number","nativeSrc":"12535:2:8","nodeType":"YulLiteral","src":"12535:2:8","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"12520:3:8","nodeType":"YulIdentifier","src":"12520:3:8"},"nativeSrc":"12520:18:8","nodeType":"YulFunctionCall","src":"12520:18:8"},{"arguments":[{"name":"value1","nativeSrc":"12544:6:8","nodeType":"YulIdentifier","src":"12544:6:8"},{"name":"_1","nativeSrc":"12552:2:8","nodeType":"YulIdentifier","src":"12552:2:8"}],"functionName":{"name":"and","nativeSrc":"12540:3:8","nodeType":"YulIdentifier","src":"12540:3:8"},"nativeSrc":"12540:15:8","nodeType":"YulFunctionCall","src":"12540:15:8"}],"functionName":{"name":"mstore","nativeSrc":"12513:6:8","nodeType":"YulIdentifier","src":"12513:6:8"},"nativeSrc":"12513:43:8","nodeType":"YulFunctionCall","src":"12513:43:8"},"nativeSrc":"12513:43:8","nodeType":"YulExpressionStatement","src":"12513:43:8"}]},"name":"abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed","nativeSrc":"12235:327:8","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12325:9:8","nodeType":"YulTypedName","src":"12325:9:8","type":""},{"name":"value1","nativeSrc":"12336:6:8","nodeType":"YulTypedName","src":"12336:6:8","type":""},{"name":"value0","nativeSrc":"12344:6:8","nodeType":"YulTypedName","src":"12344:6:8","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"12355:4:8","nodeType":"YulTypedName","src":"12355:4:8","type":""}],"src":"12235:327:8"}]},"contents":"{\n    { }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\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_decode_tuple_t_array$_t_uint256_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, shl(5, length)), 32), dataEnd) { revert(0, 0) }\n        value0 := add(_2, 32)\n        value1 := length\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_uint8(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint256t_uint256t_addresst_addresst_uint256t_addresst_uint256t_uint8t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10\n    {\n        if slt(sub(dataEnd, headStart), 352) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        value3 := abi_decode_address(add(headStart, 96))\n        value4 := abi_decode_address(add(headStart, 128))\n        value5 := calldataload(add(headStart, 160))\n        value6 := abi_decode_address(add(headStart, 192))\n        value7 := calldataload(add(headStart, 224))\n        value8 := abi_decode_uint8(add(headStart, 256))\n        value9 := calldataload(add(headStart, 288))\n        value10 := calldataload(add(headStart, 320))\n    }\n    function abi_decode_tuple_t_uint256t_uint256t_addresst_addresst_uint256t_addresst_uint256t_uint8t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7, value8, value9\n    {\n        if slt(sub(dataEnd, headStart), 320) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := abi_decode_address(add(headStart, 64))\n        value3 := abi_decode_address(add(headStart, 96))\n        value4 := calldataload(add(headStart, 128))\n        value5 := abi_decode_address(add(headStart, 160))\n        value6 := calldataload(add(headStart, 192))\n        value7 := abi_decode_uint8(add(headStart, 224))\n        value8 := calldataload(add(headStart, 256))\n        value9 := calldataload(add(headStart, 288))\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_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(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, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            let _1 := 0x20\n            mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n        }\n        mstore(add(add(pos, length), 0x20), 0)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_t_bytes1_t_string_memory_ptr_t_string_memory_ptr_t_uint256_t_address_t_bytes32_t_array$_t_uint256_$dyn_memory_ptr__to_t_bytes1_t_string_memory_ptr_t_string_memory_ptr_t_uint256_t_address_t_bytes32_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, 0xff00000000000000000000000000000000000000000000000000000000000000))\n        let _1 := 32\n        mstore(add(headStart, 32), 224)\n        let tail_1 := abi_encode_string(value1, add(headStart, 224))\n        mstore(add(headStart, 64), sub(tail_1, headStart))\n        let tail_2 := abi_encode_string(value2, tail_1)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 160), value5)\n        mstore(add(headStart, 192), sub(tail_2, headStart))\n        let pos := tail_2\n        let length := mload(value6)\n        mstore(tail_2, length)\n        pos := add(tail_2, 32)\n        let srcPtr := add(value6, 32)\n        let i := 0\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_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, 32)\n        mstore(headStart, 32)\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, 32)\n        let i := 0\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 panic_error_0x12()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y) { panic_error_0x12() }\n        r := div(x, y)\n    }\n    function mod_t_uint256(x, y) -> r\n    {\n        if iszero(y) { panic_error_0x12() }\n        r := mod(x, y)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_a35663569bd702bea491990a007131496e4d3753f9234d1b7e68f8b412726917_t_stringliteral_6ba965eabc6eaeed812e8920669228dfe87f072ba49959aba6545388ff29ea5b__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"OrderERC20(uint256 nonce,uint256\")\n        mstore(add(pos, 32), \" expiry,address signerWallet,add\")\n        mstore(add(pos, 64), \"ress signerToken,uint256 signerA\")\n        mstore(add(pos, 96), \"mount,\")\n        mstore(add(pos, 102), \"uint256 protocolFee,address send\")\n        mstore(add(pos, 134), \"erWallet,address senderToken,uin\")\n        mstore(add(pos, 166), \"t256 senderAmount)\")\n        end := add(pos, 184)\n    }\n    function abi_encode_tuple_t_bytes32_t_uint256_t_uint256_t_address_t_address_t_uint256_t_uint256_t_address_t_address_t_uint256__to_t_bytes32_t_uint256_t_uint256_t_address_t_address_t_uint256_t_uint256_t_address_t_address_t_uint256__fromStack_reversed(headStart, value9, value8, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 320)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 96), and(value3, _1))\n        mstore(add(headStart, 128), and(value4, _1))\n        mstore(add(headStart, 160), value5)\n        mstore(add(headStart, 192), value6)\n        mstore(add(headStart, 224), and(value7, _1))\n        mstore(add(headStart, 256), and(value8, _1))\n        mstore(add(headStart, 288), value9)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        product := mul(x, y)\n        if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function checked_exp_helper(_base, exponent) -> power, base\n    {\n        let power_1 := 1\n        power := 1\n        base := _base\n        for { } gt(exponent, power_1) { }\n        {\n            if gt(base, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, base)) { panic_error_0x11() }\n            if and(exponent, power_1) { power := mul(power, base) }\n            base := mul(base, base)\n            exponent := shr(power_1, exponent)\n        }\n    }\n    function checked_exp_unsigned(base, exponent) -> power\n    {\n        if iszero(exponent)\n        {\n            power := 1\n            leave\n        }\n        if iszero(base)\n        {\n            power := 0\n            leave\n        }\n        switch base\n        case 1 {\n            power := 1\n            leave\n        }\n        case 2 {\n            if gt(exponent, 255) { panic_error_0x11() }\n            power := shl(exponent, 1)\n            leave\n        }\n        if or(and(lt(base, 11), lt(exponent, 78)), and(lt(base, 307), lt(exponent, 32)))\n        {\n            power := exp(base, exponent)\n            leave\n        }\n        let power_1, base_1 := checked_exp_helper(base, exponent)\n        if gt(power_1, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, base_1)) { panic_error_0x11() }\n        power := mul(power_1, base_1)\n    }\n    function checked_exp_t_uint256_t_uint256(base, exponent) -> power\n    {\n        power := checked_exp_unsigned(base, exponent)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_packed_t_bytes32_t_bytes32_t_uint8__to_t_bytes32_t_bytes32_t_uint8__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        mstore(pos, value0)\n        mstore(add(pos, 32), value1)\n        mstore(add(pos, 64), and(shl(248, value2), 0xff00000000000000000000000000000000000000000000000000000000000000))\n        end := add(pos, 65)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n    }\n}","id":8,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"23":[{"length":32,"start":655}],"2451":[{"length":32,"start":8549}],"2453":[{"length":32,"start":8584}],"2455":[{"length":32,"start":8664}],"2457":[{"length":32,"start":8702}],"2459":[{"length":32,"start":8516}]},"linkReferences":{},"object":"6080604052600436106102195760003560e01c80638ff390991161011d578063b9cb01b0116100b0578063f04e283e1161007f578063f4ebc69911610064578063f4ebc6991461062d578063f973a20914610643578063fee81cf41461065857600080fd5b8063f04e283e14610607578063f2fde38b1461061a57600080fd5b8063b9cb01b014610577578063bfd4e557146105a4578063c5c62a7d146105c4578063cbf7c6c3146105da57600080fd5b8063b0e21e8a116100ec578063b0e21e8a146104e9578063b6549f75146104ff578063b6a5d7de14610514578063b91816111461053457600080fd5b80638ff390991461047357806398956069146104935780639cff19e0146104b35780639e93ad8e146104d357600080fd5b80636f72fd20116101b0578063787dce3d1161017f5780637ce78525116101645780637ce78525146103f757806384b0196e146104175780638da5cb5b1461043f57600080fd5b8063787dce3d146103c15780637aba86d2146103e157600080fd5b80636f72fd20146103275780636fb30d4314610347578063715018a61461036757806372f702f31461036f57600080fd5b80633eb1af24116101ec5780633eb1af24146102bf57806346e4480d146102df57806352c5f1f5146102ff57806354d1f13d1461031f57600080fd5b80631647795e1461021e57806325692962146102535780632e3408231461025d5780633644e5151461027d575b600080fd5b34801561022a57600080fd5b5061023e610239366004612638565b61068b565b60405190151581526020015b60405180910390f35b61025b6106ee565b005b34801561026957600080fd5b5061025b610278366004612662565b61073e565b34801561028957600080fd5b506102b17f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200161024a565b3480156102cb57600080fd5b5061025b6102da3660046126e8565b6107b1565b3480156102eb57600080fd5b5061025b6102fa36600461278a565b610838565b34801561030b57600080fd5b506102b161031a366004612638565b610c88565b61025b610d92565b34801561033357600080fd5b506102b161034236600461281a565b610dce565b34801561035357600080fd5b5061025b61036236600461283c565b610e25565b61025b610ea4565b34801561037b57600080fd5b5060075461039c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161024a565b3480156103cd57600080fd5b5061025b6103dc36600461283c565b610eb8565b3480156103ed57600080fd5b506102b160065481565b34801561040357600080fd5b5061025b610412366004612855565b610f30565b34801561042357600080fd5b5061042c610ff4565b60405161024a97969594939291906128d4565b34801561044b57600080fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275461039c565b34801561047f57600080fd5b5061025b61048e366004612855565b61109d565b34801561049f57600080fd5b5061025b6104ae3660046126e8565b611161565b3480156104bf57600080fd5b5061025b6104ce36600461283c565b611174565b3480156104df57600080fd5b506102b161271081565b3480156104f557600080fd5b506102b160025481565b34801561050b57600080fd5b5061025b6111ec565b34801561052057600080fd5b5061025b61052f366004612855565b611269565b34801561054057600080fd5b5061039c61054f366004612855565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b34801561058357600080fd5b506105976105923660046126e8565b611331565b60405161024a9190612996565b3480156105b057600080fd5b5061025b6105bf36600461283c565b611ba4565b3480156105d057600080fd5b506102b160055481565b3480156105e657600080fd5b5060045461039c9073ffffffffffffffffffffffffffffffffffffffff1681565b61025b610615366004612855565b611c1c565b61025b610628366004612855565b611c5c565b34801561063957600080fd5b506102b160035481565b34801561064f57600080fd5b506102b1611c83565b34801561066457600080fd5b506102b1610673366004612855565b63389a75e1600c908152600091909152602090205490565b60008061069a61010084612a38565b905060006106aa61010085612a4c565b73ffffffffffffffffffffffffffffffffffffffff861660009081526020818152604080832095835294905292909220546001921c82169091149150505b92915050565b60006202a30067ffffffffffffffff164201905063389a75e1600c5233600052806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b60005b818110156107ac57600083838381811061075d5761075d612a60565b9050602002013590506107703382611db3565b156107a357604051339082907f8dd3c361eb2366ff27c2db0eb07b9261f1d052570742ab8c9a0c326f37aa576d90600090a35b50600101610741565b505050565b6107c58a8a8a8a8a60008b8b8b8b8b611e62565b6107d185338a87611fd3565b6107dd87898d89611fd3565b6107e8878988612030565b60405173ffffffffffffffffffffffffffffffffffffffff8916908b907f4294f3cfba9ff22cfa9cb602947f7656aa160c0a6c8fa406a28e12bed6bf209390600090a35050505050505050505050565b428911610871576040517fc56873ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610a4d610a45604051602001610990907f4f7264657245524332302875696e74323536206e6f6e63652c75696e7432353681527f206578706972792c61646472657373207369676e657257616c6c65742c61646460208201527f72657373207369676e6572546f6b656e2c75696e74323536207369676e65724160408201527f6d6f756e742c000000000000000000000000000000000000000000000000000060608201527f75696e743235362070726f746f636f6c4665652c616464726573732073656e6460668201527f657257616c6c65742c616464726573732073656e646572546f6b656e2c75696e60868201527f743235362073656e646572416d6f756e7429000000000000000000000000000060a682015260b80190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600354918401529082018f9052606082018e905273ffffffffffffffffffffffffffffffffffffffff808e166080840152808d1660a084015260c083018c905260e08301919091523361010083015289166101208201526101408101889052610160015b60405160208183030381529060405280519060200120612142565b85858561225a565b905073ffffffffffffffffffffffffffffffffffffffff8116610a9c576040517f37e8456b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aa6818c611db3565b610ae4576040517f91cab504000000000000000000000000000000000000000000000000000000008152600481018c90526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8981166000908152600160205260409020541615610b795773ffffffffffffffffffffffffffffffffffffffff808a16600090815260016020526040902054828216911614610b74576040517f37e8456b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bde565b8873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610bde576040517f37e8456b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bea86338b88611fd3565b610bf6888a338a611fd3565b600454600354610c38918a918c9173ffffffffffffffffffffffffffffffffffffffff169061271090610c29908d612a8f565b610c339190612a38565b611fd3565b60405173ffffffffffffffffffffffffffffffffffffffff8a16908c907f4294f3cfba9ff22cfa9cb602947f7656aa160c0a6c8fa406a28e12bed6bf209390600090a35050505050505050505050565b60008061271060025484610c9c9190612a8f565b610ca69190612a38565b60075490915073ffffffffffffffffffffffffffffffffffffffff1615801590610cd05750600081115b15610d8b576007546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152600092610d76929116906370a08231906024015b602060405180830381865afa158015610d4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d709190612aa6565b83610dce565b9050610d828183612abf565b925050506106e8565b9392505050565b63389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b60008083600554600a610de19190612bf2565b610deb9190612bfe565b90506064818486600654610dff9190612a8f565b610e099190612a8f565b610e139190612a38565b610e1d9190612a38565b949350505050565b610e2d612298565b604d811115610e68576040517fcca4057d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058190556040518181527fcc5b12dfbda3644d5f3190b40ad8215d4aaac870df5c8112735085679d7cc333906020015b60405180910390a150565b610eac612298565b610eb660006122ce565b565b610ec0612298565b6127108110610efb576040517ff37b175b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fdc0410a296e1e33943a772020d333d5f99319d7fcad932a484c53889f7aaa2b190602001610e99565b610f38612298565b73ffffffffffffffffffffffffffffffffffffffff8116610f85576040517f66c0a66e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f8b2a800ce9e2e7ccdf4741ae0e41b1f16983192291080ae3b78ac4296ddf598a90600090a250565b7f0f00000000000000000000000000000000000000000000000000000000000000606080600080808361108b604080518082018252600a81527f535741505f4552433230000000000000000000000000000000000000000000006020808301919091528251808401909352600383527f342e3300000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b6110a5612298565b73ffffffffffffffffffffffffffffffffffffffff81166110f2576040517f71758b7c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f58fd5d9c33114e6edf8ea5d30956f8d1a4ab112b004f99928b4bcf1b87d6666290600090a250565b6107c58a8a8a8a8a338b8b8b8b8b611e62565b61117c612298565b60648111156111b7576040517fdd1a4e2800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068190556040518181527fb113403a9e8b9f0173354acc3a5d210c86be40bb7259c19c55cea02227c5026f90602001610e99565b3360008181526001602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000008116909155905173ffffffffffffffffffffffffffffffffffffffff909116929183917fd7426110292f20fe59e73ccf52124e0f5440a756507c91c7b0a6c50e1eb1a23a9190a350565b73ffffffffffffffffffffffffffffffffffffffff81166112b6576040517fcd4b78cf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360008181526001602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8616908117909155905190917f30468de898bda644e26bab66e5a2241a3aa6aaf527257f5ca54e0f65204ba14a91a350565b6040805160078082526101008201909252606091600091906020820160e080368337019050506040805161016081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052919250908d8160000181815250508c8160200181815250508b816040019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508a816060019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505089816080018181525050888160c0019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050878160e00181815250508681610100019060ff16908160ff1681525050858161012001818152505084816101400181815250508e8160a0019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600081604001519050600073ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115a95773ffffffffffffffffffffffffffffffffffffffff908116600090815260016020526040902054165b611632816115dd846000015185602001518660400151876060015188608001518960a001518a60c001518b60e00151612334565b60408051602081018c90529081018a90527fff0000000000000000000000000000000000000000000000000000000000000060f88d901b1660608201526061015b6040516020818303038152906040526124fd565b611685577f5369676e6174757265496e76616c696400000000000000000000000000000000848461166281612c11565b95508151811061167457611674612a60565b6020026020010181815250506116e3565b61169381836000015161068b565b156116e3577f4e6f6e6365416c7265616479557365640000000000000000000000000000000084846116c481612c11565b9550815181106116d6576116d6612a60565b6020026020010181815250505b428260200151101561173a577f4f72646572457870697265640000000000000000000000000000000000000000848461171b81612c11565b95508151811061172d5761172d612a60565b6020026020010181815250505b60a082015173ffffffffffffffffffffffffffffffffffffffff16156119525760c082015160a08301516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156117d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f99190612aa6565b60c084015160a08501516040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015230602482015292935060009291169063dd62ed3e90604401602060405180830381865afa15801561187b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189f9190612aa6565b90508360e001518110156118f8577f53656e646572416c6c6f77616e63654c6f77000000000000000000000000000086866118d981612c11565b9750815181106118eb576118eb612a60565b6020026020010181815250505b8360e0015182101561194f577f53656e64657242616c616e63654c6f7700000000000000000000000000000000868661193081612c11565b97508151811061194257611942612a60565b6020026020010181815250505b50505b606082015160408084015190517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015260009291909116906370a0823190602401602060405180830381865afa1580156119cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f19190612aa6565b606084015160408086015190517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015230602482015292935060009291169063dd62ed3e90604401602060405180830381865afa158015611a73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a979190612aa6565b905060006127106002548660800151611ab09190612a8f565b611aba9190612a38565b9050808560800151611acc9190612bfe565b821015611b1e577f5369676e6572416c6c6f77616e63654c6f7700000000000000000000000000008787611aff81612c11565b985081518110611b1157611b11612a60565b6020026020010181815250505b808560800151611b2e9190612bfe565b831015611b80577f5369676e657242616c616e63654c6f77000000000000000000000000000000008787611b6181612c11565b985081518110611b7357611b73612a60565b6020026020010181815250505b86518614611b8c578587525b5094955050505050509b9a5050505050505050505050565b611bac612298565b6127108110611be7576040517ff67bd49c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038190556040518181527f312cc1a9b7287129a22395b9572a3c9ed09ce456f02b519efb34e12bb429eed090602001610e99565b611c24612298565b63389a75e1600c52806000526020600c208054421115611c4c57636f5e88186000526004601cfd5b60009055611c59816122ce565b50565b611c64612298565b8060601b611c7a57637448fbae6000526004601cfd5b611c59816122ce565b604051602001611d9a907f4f7264657245524332302875696e74323536206e6f6e63652c75696e7432353681527f206578706972792c61646472657373207369676e657257616c6c65742c61646460208201527f72657373207369676e6572546f6b656e2c75696e74323536207369676e65724160408201527f6d6f756e742c000000000000000000000000000000000000000000000000000060608201527f75696e743235362070726f746f636f6c4665652c616464726573732073656e6460668201527f657257616c6c65742c616464726573732073656e646572546f6b656e2c75696e60868201527f743235362073656e646572416d6f756e7429000000000000000000000000000060a682015260b80190565b6040516020818303038152906040528051906020012081565b600080611dc261010084612a38565b90506000611dd261010085612a4c565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260208181526040808320868452909152902054909150600181831c81169003611e1d57600093505050506106e8565b73ffffffffffffffffffffffffffffffffffffffff86166000908152602081815260408083209583529490529290922060019182901b92909217909155905092915050565b428a11611e9b576040517fc56873ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808a166000908152600160205260409020548a911615611ef35773ffffffffffffffffffffffffffffffffffffffff908116600090815260016020526040902054165b611f4c81611f078e8e8e8e8e8e8e8e612334565b60408051602081018890529081018690527fff0000000000000000000000000000000000000000000000000000000000000060f889901b16606082015260610161161e565b611f82576040517f37e8456b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f8c818d611db3565b611fc5576040517f91cab504000000000000000000000000000000000000000000000000000000008152600481018d9052602401610adb565b505050505050505050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c52602060006064601c6000895af13d15600160005114171661202257637939f4246000526004601cfd5b600060605260405250505050565b6000612710600254836120439190612a8f565b61204d9190612a38565b9050801561213c5760075460009073ffffffffffffffffffffffffffffffffffffffff16156120d1576007546040517f70a082310000000000000000000000000000000000000000000000000000000081523360048201526120ce9173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401610d2f565b90505b8015612113576120e385853384611fd3565b60045461210e908690869073ffffffffffffffffffffffffffffffffffffffff16610c338587612abf565b61213a565b60045461213a908690869073ffffffffffffffffffffffffffffffffffffffff1685611fd3565b505b50505050565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f00000000000000000000000000000000000000000000000000000000000000004614166122355750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b67190100000000000060005280601a5281603a52604260182090506000603a52919050565b60006040518560005260ff85166020528360405282606052602060406080600060015afa5060006060523d6060185191508060405250949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610eb6576382b429006000526004601cfd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a355565b60006124f0604051602001612450907f4f7264657245524332302875696e74323536206e6f6e63652c75696e7432353681527f206578706972792c61646472657373207369676e657257616c6c65742c61646460208201527f72657373207369676e6572546f6b656e2c75696e74323536207369676e65724160408201527f6d6f756e742c000000000000000000000000000000000000000000000000000060608201527f75696e743235362070726f746f636f6c4665652c616464726573732073656e6460668201527f657257616c6c65742c616464726573732073656e646572546f6b656e2c75696e60868201527f743235362073656e646572416d6f756e7429000000000000000000000000000060a682015260b80190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600254918401529082018c9052606082018b905273ffffffffffffffffffffffffffffffffffffffff808b166080840152808a1660a084015260c0830189905260e08301919091528087166101008301528516610120820152610140810184905261016001610a2a565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff9092169160008315610d8b57604051836000526020830151604052604083510361257a576040830151601b8160ff1c016020528060011b60011c60605250602060016080600060015afa805186183d151761257857506000606052604052506001610d8b565b505b60418351036125c057606083015160001a6020526040830151606052602060016080600060015afa805186183d15176125be57506000606052604052506001610d8b565b505b600060605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa505060208160443d01858a5afa9051909114169150509392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461263357600080fd5b919050565b6000806040838503121561264b57600080fd5b6126548361260f565b946020939093013593505050565b6000806020838503121561267557600080fd5b823567ffffffffffffffff8082111561268d57600080fd5b818501915085601f8301126126a157600080fd5b8135818111156126b057600080fd5b8660208260051b85010111156126c557600080fd5b60209290920196919550909350505050565b803560ff8116811461263357600080fd5b60008060008060008060008060008060006101608c8e03121561270a57600080fd5b6127138c61260f565b9a5060208c0135995060408c0135985061272f60608d0161260f565b975061273d60808d0161260f565b965060a08c0135955061275260c08d0161260f565b945060e08c013593506127686101008d016126d7565b92506101208c013591506101408c013590509295989b509295989b9093969950565b6000806000806000806000806000806101408b8d0312156127aa57600080fd5b8a35995060208b013598506127c160408c0161260f565b97506127cf60608c0161260f565b965060808b013595506127e460a08c0161260f565b945060c08b013593506127f960e08c016126d7565b92506101008b013591506101208b013590509295989b9194979a5092959850565b6000806040838503121561282d57600080fd5b50508035926020909101359150565b60006020828403121561284e57600080fd5b5035919050565b60006020828403121561286757600080fd5b610d8b8261260f565b6000815180845260005b818110156128965760208185018101518683018201520161287a565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e0602084015261291160e084018a612870565b8381036040850152612923818a612870565b6060850189905273ffffffffffffffffffffffffffffffffffffffff8816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b8181101561298457835183529284019291840191600101612968565b50909c9b505050505050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156129ce578351835292840192918401916001016129b2565b50909695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082612a4757612a476129da565b500490565b600082612a5b57612a5b6129da565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80820281158282048414176106e8576106e8612a09565b600060208284031215612ab857600080fd5b5051919050565b818103818111156106e8576106e8612a09565b600181815b80851115612b2b57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115612b1157612b11612a09565b80851615612b1e57918102915b93841c9390800290612ad7565b509250929050565b600082612b42575060016106e8565b81612b4f575060006106e8565b8160018114612b655760028114612b6f57612b8b565b60019150506106e8565b60ff841115612b8057612b80612a09565b50506001821b6106e8565b5060208310610133831016604e8410600b8410161715612bae575081810a6106e8565b612bb88383612ad2565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115612bea57612bea612a09565b029392505050565b6000610d8b8383612b33565b808201808211156106e8576106e8612a09565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612c4257612c42612a09565b506001019056fea2646970667358221220f355c0d8ce46a5293d481ec82fb135843d0aa37929f048c3b60d1f2a4231747764736f6c63430008170033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x219 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8FF39099 GT PUSH2 0x11D JUMPI DUP1 PUSH4 0xB9CB01B0 GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0xF04E283E GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xF4EBC699 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xF4EBC699 EQ PUSH2 0x62D JUMPI DUP1 PUSH4 0xF973A209 EQ PUSH2 0x643 JUMPI DUP1 PUSH4 0xFEE81CF4 EQ PUSH2 0x658 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xF04E283E EQ PUSH2 0x607 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x61A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB9CB01B0 EQ PUSH2 0x577 JUMPI DUP1 PUSH4 0xBFD4E557 EQ PUSH2 0x5A4 JUMPI DUP1 PUSH4 0xC5C62A7D EQ PUSH2 0x5C4 JUMPI DUP1 PUSH4 0xCBF7C6C3 EQ PUSH2 0x5DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB0E21E8A GT PUSH2 0xEC JUMPI DUP1 PUSH4 0xB0E21E8A EQ PUSH2 0x4E9 JUMPI DUP1 PUSH4 0xB6549F75 EQ PUSH2 0x4FF JUMPI DUP1 PUSH4 0xB6A5D7DE EQ PUSH2 0x514 JUMPI DUP1 PUSH4 0xB9181611 EQ PUSH2 0x534 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8FF39099 EQ PUSH2 0x473 JUMPI DUP1 PUSH4 0x98956069 EQ PUSH2 0x493 JUMPI DUP1 PUSH4 0x9CFF19E0 EQ PUSH2 0x4B3 JUMPI DUP1 PUSH4 0x9E93AD8E EQ PUSH2 0x4D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6F72FD20 GT PUSH2 0x1B0 JUMPI DUP1 PUSH4 0x787DCE3D GT PUSH2 0x17F JUMPI DUP1 PUSH4 0x7CE78525 GT PUSH2 0x164 JUMPI DUP1 PUSH4 0x7CE78525 EQ PUSH2 0x3F7 JUMPI DUP1 PUSH4 0x84B0196E EQ PUSH2 0x417 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x43F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x787DCE3D EQ PUSH2 0x3C1 JUMPI DUP1 PUSH4 0x7ABA86D2 EQ PUSH2 0x3E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6F72FD20 EQ PUSH2 0x327 JUMPI DUP1 PUSH4 0x6FB30D43 EQ PUSH2 0x347 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x367 JUMPI DUP1 PUSH4 0x72F702F3 EQ PUSH2 0x36F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3EB1AF24 GT PUSH2 0x1EC JUMPI DUP1 PUSH4 0x3EB1AF24 EQ PUSH2 0x2BF JUMPI DUP1 PUSH4 0x46E4480D EQ PUSH2 0x2DF JUMPI DUP1 PUSH4 0x52C5F1F5 EQ PUSH2 0x2FF JUMPI DUP1 PUSH4 0x54D1F13D EQ PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1647795E EQ PUSH2 0x21E JUMPI DUP1 PUSH4 0x25692962 EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x2E340823 EQ PUSH2 0x25D JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x27D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23E PUSH2 0x239 CALLDATASIZE PUSH1 0x4 PUSH2 0x2638 JUMP JUMPDEST PUSH2 0x68B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x25B PUSH2 0x6EE JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x269 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25B PUSH2 0x278 CALLDATASIZE PUSH1 0x4 PUSH2 0x2662 JUMP JUMPDEST PUSH2 0x73E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x289 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B1 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x24A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25B PUSH2 0x2DA CALLDATASIZE PUSH1 0x4 PUSH2 0x26E8 JUMP JUMPDEST PUSH2 0x7B1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25B PUSH2 0x2FA CALLDATASIZE PUSH1 0x4 PUSH2 0x278A JUMP JUMPDEST PUSH2 0x838 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B1 PUSH2 0x31A CALLDATASIZE PUSH1 0x4 PUSH2 0x2638 JUMP JUMPDEST PUSH2 0xC88 JUMP JUMPDEST PUSH2 0x25B PUSH2 0xD92 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x333 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B1 PUSH2 0x342 CALLDATASIZE PUSH1 0x4 PUSH2 0x281A JUMP JUMPDEST PUSH2 0xDCE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x353 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25B PUSH2 0x362 CALLDATASIZE PUSH1 0x4 PUSH2 0x283C JUMP JUMPDEST PUSH2 0xE25 JUMP JUMPDEST PUSH2 0x25B PUSH2 0xEA4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x37B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x7 SLOAD PUSH2 0x39C SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x24A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25B PUSH2 0x3DC CALLDATASIZE PUSH1 0x4 PUSH2 0x283C JUMP JUMPDEST PUSH2 0xEB8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B1 PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x403 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25B PUSH2 0x412 CALLDATASIZE PUSH1 0x4 PUSH2 0x2855 JUMP JUMPDEST PUSH2 0xF30 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x423 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x42C PUSH2 0xFF4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x24A SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x28D4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74873927 SLOAD PUSH2 0x39C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x47F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25B PUSH2 0x48E CALLDATASIZE PUSH1 0x4 PUSH2 0x2855 JUMP JUMPDEST PUSH2 0x109D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x49F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25B PUSH2 0x4AE CALLDATASIZE PUSH1 0x4 PUSH2 0x26E8 JUMP JUMPDEST PUSH2 0x1161 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25B PUSH2 0x4CE CALLDATASIZE PUSH1 0x4 PUSH2 0x283C JUMP JUMPDEST PUSH2 0x1174 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B1 PUSH2 0x2710 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B1 PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x50B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25B PUSH2 0x11EC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x520 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25B PUSH2 0x52F CALLDATASIZE PUSH1 0x4 PUSH2 0x2855 JUMP JUMPDEST PUSH2 0x1269 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x540 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x39C PUSH2 0x54F CALLDATASIZE PUSH1 0x4 PUSH2 0x2855 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x583 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x597 PUSH2 0x592 CALLDATASIZE PUSH1 0x4 PUSH2 0x26E8 JUMP JUMPDEST PUSH2 0x1331 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x24A SWAP2 SWAP1 PUSH2 0x2996 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25B PUSH2 0x5BF CALLDATASIZE PUSH1 0x4 PUSH2 0x283C JUMP JUMPDEST PUSH2 0x1BA4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B1 PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 SLOAD PUSH2 0x39C SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x25B PUSH2 0x615 CALLDATASIZE PUSH1 0x4 PUSH2 0x2855 JUMP JUMPDEST PUSH2 0x1C1C JUMP JUMPDEST PUSH2 0x25B PUSH2 0x628 CALLDATASIZE PUSH1 0x4 PUSH2 0x2855 JUMP JUMPDEST PUSH2 0x1C5C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x639 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B1 PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x64F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B1 PUSH2 0x1C83 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x664 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B1 PUSH2 0x673 CALLDATASIZE PUSH1 0x4 PUSH2 0x2855 JUMP JUMPDEST PUSH4 0x389A75E1 PUSH1 0xC SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x69A PUSH2 0x100 DUP5 PUSH2 0x2A38 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x6AA PUSH2 0x100 DUP6 PUSH2 0x2A4C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 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 SLOAD PUSH1 0x1 SWAP3 SHR DUP3 AND SWAP1 SWAP2 EQ SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x2A300 PUSH8 0xFFFFFFFFFFFFFFFF AND TIMESTAMP ADD SWAP1 POP PUSH4 0x389A75E1 PUSH1 0xC MSTORE CALLER PUSH1 0x0 MSTORE DUP1 PUSH1 0x20 PUSH1 0xC KECCAK256 SSTORE CALLER PUSH32 0xDBF36A107DA19E49527A7176A1BABF963B4B0FF8CDE35EE35D6CD8F1F9AC7E1D PUSH1 0x0 DUP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x7AC JUMPI PUSH1 0x0 DUP4 DUP4 DUP4 DUP2 DUP2 LT PUSH2 0x75D JUMPI PUSH2 0x75D PUSH2 0x2A60 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP PUSH2 0x770 CALLER DUP3 PUSH2 0x1DB3 JUMP JUMPDEST ISZERO PUSH2 0x7A3 JUMPI PUSH1 0x40 MLOAD CALLER SWAP1 DUP3 SWAP1 PUSH32 0x8DD3C361EB2366FF27C2DB0EB07B9261F1D052570742AB8C9A0C326F37AA576D SWAP1 PUSH1 0x0 SWAP1 LOG3 JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x741 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x7C5 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH1 0x0 DUP12 DUP12 DUP12 DUP12 DUP12 PUSH2 0x1E62 JUMP JUMPDEST PUSH2 0x7D1 DUP6 CALLER DUP11 DUP8 PUSH2 0x1FD3 JUMP JUMPDEST PUSH2 0x7DD DUP8 DUP10 DUP14 DUP10 PUSH2 0x1FD3 JUMP JUMPDEST PUSH2 0x7E8 DUP8 DUP10 DUP9 PUSH2 0x2030 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP1 DUP12 SWAP1 PUSH32 0x4294F3CFBA9FF22CFA9CB602947F7656AA160C0A6C8FA406A28E12BED6BF2093 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST TIMESTAMP DUP10 GT PUSH2 0x871 JUMPI PUSH1 0x40 MLOAD PUSH32 0xC56873BA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA4D PUSH2 0xA45 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x990 SWAP1 PUSH32 0x4F7264657245524332302875696E74323536206E6F6E63652C75696E74323536 DUP2 MSTORE PUSH32 0x206578706972792C61646472657373207369676E657257616C6C65742C616464 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x72657373207369676E6572546F6B656E2C75696E74323536207369676E657241 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6D6F756E742C0000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x75696E743235362070726F746F636F6C4665652C616464726573732073656E64 PUSH1 0x66 DUP3 ADD MSTORE PUSH32 0x657257616C6C65742C616464726573732073656E646572546F6B656E2C75696E PUSH1 0x86 DUP3 ADD MSTORE PUSH32 0x743235362073656E646572416D6F756E74290000000000000000000000000000 PUSH1 0xA6 DUP3 ADD MSTORE PUSH1 0xB8 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x3 SLOAD SWAP2 DUP5 ADD MSTORE SWAP1 DUP3 ADD DUP16 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP15 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP15 AND PUSH1 0x80 DUP5 ADD MSTORE DUP1 DUP14 AND PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD DUP13 SWAP1 MSTORE PUSH1 0xE0 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE CALLER PUSH2 0x100 DUP4 ADD MSTORE DUP10 AND PUSH2 0x120 DUP3 ADD MSTORE PUSH2 0x140 DUP2 ADD DUP9 SWAP1 MSTORE PUSH2 0x160 ADD JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0x2142 JUMP JUMPDEST DUP6 DUP6 DUP6 PUSH2 0x225A JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xA9C JUMPI PUSH1 0x40 MLOAD PUSH32 0x37E8456B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xAA6 DUP2 DUP13 PUSH2 0x1DB3 JUMP JUMPDEST PUSH2 0xAE4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x91CAB50400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP13 SWAP1 MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND ISZERO PUSH2 0xB79 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP3 DUP3 AND SWAP2 AND EQ PUSH2 0xB74 JUMPI PUSH1 0x40 MLOAD PUSH32 0x37E8456B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xBDE JUMP JUMPDEST DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xBDE JUMPI PUSH1 0x40 MLOAD PUSH32 0x37E8456B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xBEA DUP7 CALLER DUP12 DUP9 PUSH2 0x1FD3 JUMP JUMPDEST PUSH2 0xBF6 DUP9 DUP11 CALLER DUP11 PUSH2 0x1FD3 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x3 SLOAD PUSH2 0xC38 SWAP2 DUP11 SWAP2 DUP13 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH2 0x2710 SWAP1 PUSH2 0xC29 SWAP1 DUP14 PUSH2 0x2A8F JUMP JUMPDEST PUSH2 0xC33 SWAP2 SWAP1 PUSH2 0x2A38 JUMP JUMPDEST PUSH2 0x1FD3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND SWAP1 DUP13 SWAP1 PUSH32 0x4294F3CFBA9FF22CFA9CB602947F7656AA160C0A6C8FA406A28E12BED6BF2093 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2710 PUSH1 0x2 SLOAD DUP5 PUSH2 0xC9C SWAP2 SWAP1 PUSH2 0x2A8F JUMP JUMPDEST PUSH2 0xCA6 SWAP2 SWAP1 PUSH2 0x2A38 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0xCD0 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST ISZERO PUSH2 0xD8B JUMPI PUSH1 0x7 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x0 SWAP3 PUSH2 0xD76 SWAP3 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD4C 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 0xD70 SWAP2 SWAP1 PUSH2 0x2AA6 JUMP JUMPDEST DUP4 PUSH2 0xDCE JUMP JUMPDEST SWAP1 POP PUSH2 0xD82 DUP2 DUP4 PUSH2 0x2ABF JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x6E8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x389A75E1 PUSH1 0xC MSTORE CALLER PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x20 PUSH1 0xC KECCAK256 SSTORE CALLER PUSH32 0xFA7B8EAB7DA67F412CC9575ED43464468F9BFBAE89D1675917346CA6D8FE3C92 PUSH1 0x0 DUP1 LOG2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x5 SLOAD PUSH1 0xA PUSH2 0xDE1 SWAP2 SWAP1 PUSH2 0x2BF2 JUMP JUMPDEST PUSH2 0xDEB SWAP2 SWAP1 PUSH2 0x2BFE JUMP JUMPDEST SWAP1 POP PUSH1 0x64 DUP2 DUP5 DUP7 PUSH1 0x6 SLOAD PUSH2 0xDFF SWAP2 SWAP1 PUSH2 0x2A8F JUMP JUMPDEST PUSH2 0xE09 SWAP2 SWAP1 PUSH2 0x2A8F JUMP JUMPDEST PUSH2 0xE13 SWAP2 SWAP1 PUSH2 0x2A38 JUMP JUMPDEST PUSH2 0xE1D SWAP2 SWAP1 PUSH2 0x2A38 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0xE2D PUSH2 0x2298 JUMP JUMPDEST PUSH1 0x4D DUP2 GT ISZERO PUSH2 0xE68 JUMPI PUSH1 0x40 MLOAD PUSH32 0xCCA4057D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH32 0xCC5B12DFBDA3644D5F3190B40AD8215D4AAAC870DF5C8112735085679D7CC333 SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0xEAC PUSH2 0x2298 JUMP JUMPDEST PUSH2 0xEB6 PUSH1 0x0 PUSH2 0x22CE JUMP JUMPDEST JUMP JUMPDEST PUSH2 0xEC0 PUSH2 0x2298 JUMP JUMPDEST PUSH2 0x2710 DUP2 LT PUSH2 0xEFB JUMPI PUSH1 0x40 MLOAD PUSH32 0xF37B175B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH32 0xDC0410A296E1E33943A772020D333D5F99319D7FCAD932A484C53889F7AAA2B1 SWAP1 PUSH1 0x20 ADD PUSH2 0xE99 JUMP JUMPDEST PUSH2 0xF38 PUSH2 0x2298 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xF85 JUMPI PUSH1 0x40 MLOAD PUSH32 0x66C0A66E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0x8B2A800CE9E2E7CCDF4741AE0E41B1F16983192291080AE3B78AC4296DDF598A SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH32 0xF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP1 PUSH1 0x0 DUP1 DUP1 DUP4 PUSH2 0x108B PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xA DUP2 MSTORE PUSH32 0x535741505F455243323000000000000000000000000000000000000000000000 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x3 DUP4 MSTORE PUSH32 0x342E330000000000000000000000000000000000000000000000000000000000 SWAP1 DUP4 ADD MSTORE SWAP2 JUMP JUMPDEST SWAP8 SWAP9 SWAP1 SWAP8 SWAP7 POP CHAINID SWAP6 POP ADDRESS SWAP5 POP SWAP2 SWAP3 POP SWAP1 JUMP JUMPDEST PUSH2 0x10A5 PUSH2 0x2298 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x10F2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x71758B7C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0x58FD5D9C33114E6EDF8EA5D30956F8D1A4AB112B004F99928B4BCF1B87D66662 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0x7C5 DUP11 DUP11 DUP11 DUP11 DUP11 CALLER DUP12 DUP12 DUP12 DUP12 DUP12 PUSH2 0x1E62 JUMP JUMPDEST PUSH2 0x117C PUSH2 0x2298 JUMP JUMPDEST PUSH1 0x64 DUP2 GT ISZERO PUSH2 0x11B7 JUMPI PUSH1 0x40 MLOAD PUSH32 0xDD1A4E2800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH32 0xB113403A9E8B9F0173354ACC3A5D210C86BE40BB7259C19C55CEA02227C5026F SWAP1 PUSH1 0x20 ADD PUSH2 0xE99 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP2 AND SWAP1 SWAP2 SSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP3 SWAP2 DUP4 SWAP2 PUSH32 0xD7426110292F20FE59E73CCF52124E0F5440A756507C91C7B0A6C50E1EB1A23A SWAP2 SWAP1 LOG3 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x12B6 JUMPI PUSH1 0x40 MLOAD PUSH32 0xCD4B78CF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP1 SWAP2 PUSH32 0x30468DE898BDA644E26BAB66E5A2241A3AA6AAF527257F5CA54E0F65204BA14A SWAP2 LOG3 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x7 DUP1 DUP3 MSTORE PUSH2 0x100 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD PUSH1 0xE0 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP PUSH1 0x40 DUP1 MLOAD PUSH2 0x160 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xC0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xE0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x100 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x120 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x140 DUP2 ADD DUP3 SWAP1 MSTORE SWAP2 SWAP3 POP SWAP1 DUP14 DUP2 PUSH1 0x0 ADD DUP2 DUP2 MSTORE POP POP DUP13 DUP2 PUSH1 0x20 ADD DUP2 DUP2 MSTORE POP POP DUP12 DUP2 PUSH1 0x40 ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP11 DUP2 PUSH1 0x60 ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP10 DUP2 PUSH1 0x80 ADD DUP2 DUP2 MSTORE POP POP DUP9 DUP2 PUSH1 0xC0 ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP8 DUP2 PUSH1 0xE0 ADD DUP2 DUP2 MSTORE POP POP DUP7 DUP2 PUSH2 0x100 ADD SWAP1 PUSH1 0xFF AND SWAP1 DUP2 PUSH1 0xFF AND DUP2 MSTORE POP POP DUP6 DUP2 PUSH2 0x120 ADD DUP2 DUP2 MSTORE POP POP DUP5 DUP2 PUSH2 0x140 ADD DUP2 DUP2 MSTORE POP POP DUP15 DUP2 PUSH1 0xA0 ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH1 0x0 DUP2 PUSH1 0x40 ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x15A9 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND JUMPDEST PUSH2 0x1632 DUP2 PUSH2 0x15DD DUP5 PUSH1 0x0 ADD MLOAD DUP6 PUSH1 0x20 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD DUP8 PUSH1 0x60 ADD MLOAD DUP9 PUSH1 0x80 ADD MLOAD DUP10 PUSH1 0xA0 ADD MLOAD DUP11 PUSH1 0xC0 ADD MLOAD DUP12 PUSH1 0xE0 ADD MLOAD PUSH2 0x2334 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP13 SWAP1 MSTORE SWAP1 DUP2 ADD DUP11 SWAP1 MSTORE PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0xF8 DUP14 SWAP1 SHL AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x61 ADD JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH2 0x24FD JUMP JUMPDEST PUSH2 0x1685 JUMPI PUSH32 0x5369676E6174757265496E76616C696400000000000000000000000000000000 DUP5 DUP5 PUSH2 0x1662 DUP2 PUSH2 0x2C11 JUMP JUMPDEST SWAP6 POP DUP2 MLOAD DUP2 LT PUSH2 0x1674 JUMPI PUSH2 0x1674 PUSH2 0x2A60 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x16E3 JUMP JUMPDEST PUSH2 0x1693 DUP2 DUP4 PUSH1 0x0 ADD MLOAD PUSH2 0x68B JUMP JUMPDEST ISZERO PUSH2 0x16E3 JUMPI PUSH32 0x4E6F6E6365416C72656164795573656400000000000000000000000000000000 DUP5 DUP5 PUSH2 0x16C4 DUP2 PUSH2 0x2C11 JUMP JUMPDEST SWAP6 POP DUP2 MLOAD DUP2 LT PUSH2 0x16D6 JUMPI PUSH2 0x16D6 PUSH2 0x2A60 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP JUMPDEST TIMESTAMP DUP3 PUSH1 0x20 ADD MLOAD LT ISZERO PUSH2 0x173A JUMPI PUSH32 0x4F72646572457870697265640000000000000000000000000000000000000000 DUP5 DUP5 PUSH2 0x171B DUP2 PUSH2 0x2C11 JUMP JUMPDEST SWAP6 POP DUP2 MLOAD DUP2 LT PUSH2 0x172D JUMPI PUSH2 0x172D PUSH2 0x2A60 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP JUMPDEST PUSH1 0xA0 DUP3 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0x1952 JUMPI PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0xA0 DUP4 ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP3 SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17D5 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 0x17F9 SWAP2 SWAP1 PUSH2 0x2AA6 JUMP JUMPDEST PUSH1 0xC0 DUP5 ADD MLOAD PUSH1 0xA0 DUP6 ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 SWAP2 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x187B 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 0x189F SWAP2 SWAP1 PUSH2 0x2AA6 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0xE0 ADD MLOAD DUP2 LT ISZERO PUSH2 0x18F8 JUMPI PUSH32 0x53656E646572416C6C6F77616E63654C6F770000000000000000000000000000 DUP7 DUP7 PUSH2 0x18D9 DUP2 PUSH2 0x2C11 JUMP JUMPDEST SWAP8 POP DUP2 MLOAD DUP2 LT PUSH2 0x18EB JUMPI PUSH2 0x18EB PUSH2 0x2A60 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP JUMPDEST DUP4 PUSH1 0xE0 ADD MLOAD DUP3 LT ISZERO PUSH2 0x194F JUMPI PUSH32 0x53656E64657242616C616E63654C6F7700000000000000000000000000000000 DUP7 DUP7 PUSH2 0x1930 DUP2 PUSH2 0x2C11 JUMP JUMPDEST SWAP8 POP DUP2 MLOAD DUP2 LT PUSH2 0x1942 JUMPI PUSH2 0x1942 PUSH2 0x2A60 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP POP JUMPDEST PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x40 DUP1 DUP5 ADD MLOAD SWAP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP3 SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19CD 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 0x19F1 SWAP2 SWAP1 PUSH2 0x2AA6 JUMP JUMPDEST PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x40 DUP1 DUP7 ADD MLOAD SWAP1 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 SWAP2 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A73 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 0x1A97 SWAP2 SWAP1 PUSH2 0x2AA6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2710 PUSH1 0x2 SLOAD DUP7 PUSH1 0x80 ADD MLOAD PUSH2 0x1AB0 SWAP2 SWAP1 PUSH2 0x2A8F JUMP JUMPDEST PUSH2 0x1ABA SWAP2 SWAP1 PUSH2 0x2A38 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 PUSH1 0x80 ADD MLOAD PUSH2 0x1ACC SWAP2 SWAP1 PUSH2 0x2BFE JUMP JUMPDEST DUP3 LT ISZERO PUSH2 0x1B1E JUMPI PUSH32 0x5369676E6572416C6C6F77616E63654C6F770000000000000000000000000000 DUP8 DUP8 PUSH2 0x1AFF DUP2 PUSH2 0x2C11 JUMP JUMPDEST SWAP9 POP DUP2 MLOAD DUP2 LT PUSH2 0x1B11 JUMPI PUSH2 0x1B11 PUSH2 0x2A60 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP JUMPDEST DUP1 DUP6 PUSH1 0x80 ADD MLOAD PUSH2 0x1B2E SWAP2 SWAP1 PUSH2 0x2BFE JUMP JUMPDEST DUP4 LT ISZERO PUSH2 0x1B80 JUMPI PUSH32 0x5369676E657242616C616E63654C6F7700000000000000000000000000000000 DUP8 DUP8 PUSH2 0x1B61 DUP2 PUSH2 0x2C11 JUMP JUMPDEST SWAP9 POP DUP2 MLOAD DUP2 LT PUSH2 0x1B73 JUMPI PUSH2 0x1B73 PUSH2 0x2A60 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP JUMPDEST DUP7 MLOAD DUP7 EQ PUSH2 0x1B8C JUMPI DUP6 DUP8 MSTORE JUMPDEST POP SWAP5 SWAP6 POP POP POP POP POP POP SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1BAC PUSH2 0x2298 JUMP JUMPDEST PUSH2 0x2710 DUP2 LT PUSH2 0x1BE7 JUMPI PUSH1 0x40 MLOAD PUSH32 0xF67BD49C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x3 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH32 0x312CC1A9B7287129A22395B9572A3C9ED09CE456F02B519EFB34E12BB429EED0 SWAP1 PUSH1 0x20 ADD PUSH2 0xE99 JUMP JUMPDEST PUSH2 0x1C24 PUSH2 0x2298 JUMP JUMPDEST PUSH4 0x389A75E1 PUSH1 0xC MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0xC KECCAK256 DUP1 SLOAD TIMESTAMP GT ISZERO PUSH2 0x1C4C JUMPI PUSH4 0x6F5E8818 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x1C REVERT JUMPDEST PUSH1 0x0 SWAP1 SSTORE PUSH2 0x1C59 DUP2 PUSH2 0x22CE JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1C64 PUSH2 0x2298 JUMP JUMPDEST DUP1 PUSH1 0x60 SHL PUSH2 0x1C7A JUMPI PUSH4 0x7448FBAE PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x1C REVERT JUMPDEST PUSH2 0x1C59 DUP2 PUSH2 0x22CE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1D9A SWAP1 PUSH32 0x4F7264657245524332302875696E74323536206E6F6E63652C75696E74323536 DUP2 MSTORE PUSH32 0x206578706972792C61646472657373207369676E657257616C6C65742C616464 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x72657373207369676E6572546F6B656E2C75696E74323536207369676E657241 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6D6F756E742C0000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x75696E743235362070726F746F636F6C4665652C616464726573732073656E64 PUSH1 0x66 DUP3 ADD MSTORE PUSH32 0x657257616C6C65742C616464726573732073656E646572546F6B656E2C75696E PUSH1 0x86 DUP3 ADD MSTORE PUSH32 0x743235362073656E646572416D6F756E74290000000000000000000000000000 PUSH1 0xA6 DUP3 ADD MSTORE PUSH1 0xB8 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1DC2 PUSH2 0x100 DUP5 PUSH2 0x2A38 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1DD2 PUSH2 0x100 DUP6 PUSH2 0x2A4C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 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 SWAP1 SWAP2 POP PUSH1 0x1 DUP2 DUP4 SHR DUP2 AND SWAP1 SUB PUSH2 0x1E1D JUMPI PUSH1 0x0 SWAP4 POP POP POP POP PUSH2 0x6E8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 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 PUSH1 0x1 SWAP2 DUP3 SWAP1 SHL SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST TIMESTAMP DUP11 GT PUSH2 0x1E9B JUMPI PUSH1 0x40 MLOAD PUSH32 0xC56873BA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP11 SWAP2 AND ISZERO PUSH2 0x1EF3 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND JUMPDEST PUSH2 0x1F4C DUP2 PUSH2 0x1F07 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 PUSH2 0x2334 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 DUP2 ADD DUP7 SWAP1 MSTORE PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0xF8 DUP10 SWAP1 SHL AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x61 ADD PUSH2 0x161E JUMP JUMPDEST PUSH2 0x1F82 JUMPI PUSH1 0x40 MLOAD PUSH32 0x37E8456B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1F8C DUP2 DUP14 PUSH2 0x1DB3 JUMP JUMPDEST PUSH2 0x1FC5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x91CAB50400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP14 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xADB JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 PUSH1 0x60 MSTORE DUP3 PUSH1 0x40 MSTORE DUP4 PUSH1 0x60 SHL PUSH1 0x2C MSTORE PUSH16 0x23B872DD000000000000000000000000 PUSH1 0xC MSTORE PUSH1 0x20 PUSH1 0x0 PUSH1 0x64 PUSH1 0x1C PUSH1 0x0 DUP10 GAS CALL RETURNDATASIZE ISZERO PUSH1 0x1 PUSH1 0x0 MLOAD EQ OR AND PUSH2 0x2022 JUMPI PUSH4 0x7939F424 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x1C REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 MSTORE PUSH1 0x40 MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2710 PUSH1 0x2 SLOAD DUP4 PUSH2 0x2043 SWAP2 SWAP1 PUSH2 0x2A8F JUMP JUMPDEST PUSH2 0x204D SWAP2 SWAP1 PUSH2 0x2A38 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x213C JUMPI PUSH1 0x7 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0x20D1 JUMPI PUSH1 0x7 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH2 0x20CE SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH2 0xD2F JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 ISZERO PUSH2 0x2113 JUMPI PUSH2 0x20E3 DUP6 DUP6 CALLER DUP5 PUSH2 0x1FD3 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x210E SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xC33 DUP6 DUP8 PUSH2 0x2ABF JUMP JUMPDEST PUSH2 0x213A JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH2 0x213A SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH2 0x1FD3 JUMP JUMPDEST POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH32 0x0 ADDRESS EQ PUSH32 0x0 CHAINID EQ AND PUSH2 0x2235 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 MSTORE PUSH32 0x0 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE CHAINID PUSH1 0x60 DUP3 ADD MSTORE ADDRESS PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 SWAP1 KECCAK256 JUMPDEST PUSH8 0x1901000000000000 PUSH1 0x0 MSTORE DUP1 PUSH1 0x1A MSTORE DUP2 PUSH1 0x3A MSTORE PUSH1 0x42 PUSH1 0x18 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x3A MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP6 PUSH1 0x0 MSTORE PUSH1 0xFF DUP6 AND PUSH1 0x20 MSTORE DUP4 PUSH1 0x40 MSTORE DUP3 PUSH1 0x60 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH1 0x80 PUSH1 0x0 PUSH1 0x1 GAS STATICCALL POP PUSH1 0x0 PUSH1 0x60 MSTORE RETURNDATASIZE PUSH1 0x60 XOR MLOAD SWAP2 POP DUP1 PUSH1 0x40 MSTORE POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74873927 SLOAD CALLER EQ PUSH2 0xEB6 JUMPI PUSH4 0x82B42900 PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x1C REVERT JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74873927 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 DUP3 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 PUSH1 0x0 DUP1 LOG3 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24F0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2450 SWAP1 PUSH32 0x4F7264657245524332302875696E74323536206E6F6E63652C75696E74323536 DUP2 MSTORE PUSH32 0x206578706972792C61646472657373207369676E657257616C6C65742C616464 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x72657373207369676E6572546F6B656E2C75696E74323536207369676E657241 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6D6F756E742C0000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x75696E743235362070726F746F636F6C4665652C616464726573732073656E64 PUSH1 0x66 DUP3 ADD MSTORE PUSH32 0x657257616C6C65742C616464726573732073656E646572546F6B656E2C75696E PUSH1 0x86 DUP3 ADD MSTORE PUSH32 0x743235362073656E646572416D6F756E74290000000000000000000000000000 PUSH1 0xA6 DUP3 ADD MSTORE PUSH1 0xB8 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x2 SLOAD SWAP2 DUP5 ADD MSTORE SWAP1 DUP3 ADD DUP13 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP12 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP12 AND PUSH1 0x80 DUP5 ADD MSTORE DUP1 DUP11 AND PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0xC0 DUP4 ADD DUP10 SWAP1 MSTORE PUSH1 0xE0 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 DUP8 AND PUSH2 0x100 DUP4 ADD MSTORE DUP6 AND PUSH2 0x120 DUP3 ADD MSTORE PUSH2 0x140 DUP2 ADD DUP5 SWAP1 MSTORE PUSH2 0x160 ADD PUSH2 0xA2A JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH1 0x0 DUP4 ISZERO PUSH2 0xD8B JUMPI PUSH1 0x40 MLOAD DUP4 PUSH1 0x0 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 MSTORE PUSH1 0x40 DUP4 MLOAD SUB PUSH2 0x257A JUMPI PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x1B DUP2 PUSH1 0xFF SHR ADD PUSH1 0x20 MSTORE DUP1 PUSH1 0x1 SHL PUSH1 0x1 SHR PUSH1 0x60 MSTORE POP PUSH1 0x20 PUSH1 0x1 PUSH1 0x80 PUSH1 0x0 PUSH1 0x1 GAS STATICCALL DUP1 MLOAD DUP7 XOR RETURNDATASIZE ISZERO OR PUSH2 0x2578 JUMPI POP PUSH1 0x0 PUSH1 0x60 MSTORE PUSH1 0x40 MSTORE POP PUSH1 0x1 PUSH2 0xD8B JUMP JUMPDEST POP JUMPDEST PUSH1 0x41 DUP4 MLOAD SUB PUSH2 0x25C0 JUMPI PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x0 BYTE PUSH1 0x20 MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x60 MSTORE PUSH1 0x20 PUSH1 0x1 PUSH1 0x80 PUSH1 0x0 PUSH1 0x1 GAS STATICCALL DUP1 MLOAD DUP7 XOR RETURNDATASIZE ISZERO OR PUSH2 0x25BE JUMPI POP PUSH1 0x0 PUSH1 0x60 MSTORE PUSH1 0x40 MSTORE POP PUSH1 0x1 PUSH2 0xD8B JUMP JUMPDEST POP JUMPDEST PUSH1 0x0 PUSH1 0x60 MSTORE DUP1 PUSH1 0x40 MSTORE PUSH4 0x1626BA7E PUSH1 0xE0 SHL DUP1 DUP3 MSTORE DUP5 PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD PUSH1 0x40 DUP2 MSTORE DUP5 MLOAD PUSH1 0x20 ADD DUP1 PUSH1 0x44 DUP6 ADD DUP3 DUP9 PUSH1 0x4 GAS STATICCALL POP POP PUSH1 0x20 DUP2 PUSH1 0x44 RETURNDATASIZE ADD DUP6 DUP11 GAS STATICCALL SWAP1 MLOAD SWAP1 SWAP2 EQ AND SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2633 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x264B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2654 DUP4 PUSH2 0x260F JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2675 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x268D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x26A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x26B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x26C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x2633 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x160 DUP13 DUP15 SUB SLT ISZERO PUSH2 0x270A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2713 DUP13 PUSH2 0x260F JUMP JUMPDEST SWAP11 POP PUSH1 0x20 DUP13 ADD CALLDATALOAD SWAP10 POP PUSH1 0x40 DUP13 ADD CALLDATALOAD SWAP9 POP PUSH2 0x272F PUSH1 0x60 DUP14 ADD PUSH2 0x260F JUMP JUMPDEST SWAP8 POP PUSH2 0x273D PUSH1 0x80 DUP14 ADD PUSH2 0x260F JUMP JUMPDEST SWAP7 POP PUSH1 0xA0 DUP13 ADD CALLDATALOAD SWAP6 POP PUSH2 0x2752 PUSH1 0xC0 DUP14 ADD PUSH2 0x260F JUMP JUMPDEST SWAP5 POP PUSH1 0xE0 DUP13 ADD CALLDATALOAD SWAP4 POP PUSH2 0x2768 PUSH2 0x100 DUP14 ADD PUSH2 0x26D7 JUMP JUMPDEST SWAP3 POP PUSH2 0x120 DUP13 ADD CALLDATALOAD SWAP2 POP PUSH2 0x140 DUP13 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP12 POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP1 SWAP4 SWAP7 SWAP10 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x140 DUP12 DUP14 SUB SLT ISZERO PUSH2 0x27AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP11 CALLDATALOAD SWAP10 POP PUSH1 0x20 DUP12 ADD CALLDATALOAD SWAP9 POP PUSH2 0x27C1 PUSH1 0x40 DUP13 ADD PUSH2 0x260F JUMP JUMPDEST SWAP8 POP PUSH2 0x27CF PUSH1 0x60 DUP13 ADD PUSH2 0x260F JUMP JUMPDEST SWAP7 POP PUSH1 0x80 DUP12 ADD CALLDATALOAD SWAP6 POP PUSH2 0x27E4 PUSH1 0xA0 DUP13 ADD PUSH2 0x260F JUMP JUMPDEST SWAP5 POP PUSH1 0xC0 DUP12 ADD CALLDATALOAD SWAP4 POP PUSH2 0x27F9 PUSH1 0xE0 DUP13 ADD PUSH2 0x26D7 JUMP JUMPDEST SWAP3 POP PUSH2 0x100 DUP12 ADD CALLDATALOAD SWAP2 POP PUSH2 0x120 DUP12 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x282D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x284E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2867 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD8B DUP3 PUSH2 0x260F JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2896 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x287A JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP9 AND DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 PUSH1 0xE0 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2911 PUSH1 0xE0 DUP5 ADD DUP11 PUSH2 0x2870 JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x2923 DUP2 DUP11 PUSH2 0x2870 JUMP JUMPDEST PUSH1 0x60 DUP6 ADD DUP10 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xA0 DUP6 ADD DUP8 SWAP1 MSTORE DUP5 DUP2 SUB PUSH1 0xC0 DUP7 ADD MSTORE DUP6 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP9 ADD SWAP4 POP SWAP1 SWAP2 ADD SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2984 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2968 JUMP JUMPDEST POP SWAP1 SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP 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 0x29CE JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x29B2 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2A47 JUMPI PUSH2 0x2A47 PUSH2 0x29DA JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2A5B JUMPI PUSH2 0x2A5B PUSH2 0x29DA JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0x6E8 JUMPI PUSH2 0x6E8 PUSH2 0x2A09 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2AB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x6E8 JUMPI PUSH2 0x6E8 PUSH2 0x2A09 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 JUMPDEST DUP1 DUP6 GT ISZERO PUSH2 0x2B2B JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x2B11 JUMPI PUSH2 0x2B11 PUSH2 0x2A09 JUMP JUMPDEST DUP1 DUP6 AND ISZERO PUSH2 0x2B1E JUMPI SWAP2 DUP2 MUL SWAP2 JUMPDEST SWAP4 DUP5 SHR SWAP4 SWAP1 DUP1 MUL SWAP1 PUSH2 0x2AD7 JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2B42 JUMPI POP PUSH1 0x1 PUSH2 0x6E8 JUMP JUMPDEST DUP2 PUSH2 0x2B4F JUMPI POP PUSH1 0x0 PUSH2 0x6E8 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x2B65 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x2B6F JUMPI PUSH2 0x2B8B JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x6E8 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x2B80 JUMPI PUSH2 0x2B80 PUSH2 0x2A09 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x6E8 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x2BAE JUMPI POP DUP2 DUP2 EXP PUSH2 0x6E8 JUMP JUMPDEST PUSH2 0x2BB8 DUP4 DUP4 PUSH2 0x2AD2 JUMP JUMPDEST DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x2BEA JUMPI PUSH2 0x2BEA PUSH2 0x2A09 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD8B DUP4 DUP4 PUSH2 0x2B33 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x6E8 JUMPI PUSH2 0x6E8 PUSH2 0x2A09 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x2C42 JUMPI PUSH2 0x2C42 PUSH2 0x2A09 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURN SSTORE 0xC0 0xD8 0xCE CHAINID 0xA5 0x29 RETURNDATASIZE BASEFEE 0x1E 0xC8 0x2F 0xB1 CALLDATALOAD DUP5 RETURNDATASIZE EXP LOG3 PUSH26 0x29F048C3B60D1F2A4231747764736F6C63430008170033000000 ","sourceMap":"549:21883:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17399:249;;;;;;;;;;-1:-1:-1;17399:249:0;;;;;:::i;:::-;;:::i;:::-;;;639:14:8;;632:22;614:41;;602:2;587:18;17399:249:0;;;;;;;;9021:617:2;;;:::i;:::-;;12465:284:0;;;;;;;;;;-1:-1:-1;12465:284:0;;;;;:::i;:::-;;:::i;603:41::-;;;;;;;;;;;;;;;;;;1432:25:8;;;1420:2;1405:18;603:41:0;1286:177:8;5688:1009:0;;;;;;;;;;-1:-1:-1;5688:1009:0;;;;;:::i;:::-;;:::i;7442:2059::-;;;;;;;;;;-1:-1:-1;7442:2059:0;;;;;:::i;:::-;;:::i;16769:466::-;;;;;;;;;;-1:-1:-1;16769:466:0;;;;;:::i;:::-;;:::i;9720:456:2:-;;;:::i;16393:254:0:-;;;;;;;;;;-1:-1:-1;16393:254:0;;;;;:::i;:::-;;:::i;11086:191::-;;;;;;;;;;-1:-1:-1;11086:191:0;;;;;:::i;:::-;;:::i;8762:100:2:-;;;:::i;1780:27:0:-;;;;;;;;;;-1:-1:-1;1780:27:0;;;;;;;;;;;4150:42:8;4138:55;;;4120:74;;4108:2;4093:18;1780:27:0;3974:226:8;9617:250:0;;;;;;;;;;-1:-1:-1;9617:250:0;;;;;:::i;:::-;;:::i;1753:23::-;;;;;;;;;;;;;;;;10406:299;;;;;;;;;;-1:-1:-1;10406:299:0;;;;;:::i;:::-;;:::i;6989:596:5:-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;11408:182:2:-;;;;;;;;;;-1:-1:-1;11562:11:2;11556:18;11408:182;;11385:247:0;;;;;;;;;;-1:-1:-1;11385:247:0;;;;;:::i;:::-;;:::i;3941:1000::-;;;;;;;;;;-1:-1:-1;3941:1000:0;;;;;:::i;:::-;;:::i;10807:173::-;;;;;;;;;;-1:-1:-1;10807:173:0;;;;;:::i;:::-;;:::i;954:43::-;;;;;;;;;;;;992:5;954:43;;1623:26;;;;;;;;;;;;;;;;12070:152;;;;;;;;;;;;;:::i;11785:204::-;;;;;;;;;;-1:-1:-1;11785:204:0;;;;;:::i;:::-;;:::i;1564:54::-;;;;;;;;;;-1:-1:-1;1564:54:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13522:2739;;;;;;;;;;-1:-1:-1;13522:2739:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;9994:290::-;;;;;;;;;;-1:-1:-1;9994:290:0;;;;;:::i;:::-;;:::i;1724:25::-;;;;;;;;;;;;;;;;1688:32;;;;;;;;;;-1:-1:-1;1688:32:0;;;;;;;;10363:708:2;;;;;;:::i;:::-;;:::i;8348:349::-;;;;;;:::i;:::-;;:::i;1653:31:0:-;;;;;;;;;;;;;;;;649:300;;;;;;;;;;;;;:::i;11693:435:2:-;;;;;;;;;;-1:-1:-1;11693:435:2;;;;;:::i;:::-;11963:19;11957:4;11950:33;;;11812:14;11996:26;;;;12106:4;12090:21;;12084:28;;11693:435;17399:249:0;17491:4;;17522:11;17530:3;17522:5;:11;:::i;:::-;17503:30;-1:-1:-1;17539:20:0;17562:11;17570:3;17562:5;:11;:::i;:::-;17587:20;;;:12;:20;;;;;;;;;;;:30;;;;;;;;;;;17637:1;17587:46;;17586:52;;:57;;;;-1:-1:-1;;17399:249:0;;;;;:::o;9021:617:2:-;9114:15;7972:9;9132:46;;:15;:46;9114:64;;9346:19;9340:4;9333:33;9396:8;9390:4;9383:22;9452:7;9445:4;9439;9429:21;9422:38;9599:8;9552:45;9549:1;9546;9541:67;9248:374;9021:617::o;12465:284:0:-;12537:9;12532:213;12548:17;;;12532:213;;;12577:13;12593:6;;12600:1;12593:9;;;;;;;:::i;:::-;;;;;;;12577:25;;12614:35;12631:10;12643:5;12614:16;:35::i;:::-;12610:90;;;12666:25;;12680:10;;12673:5;;12666:25;;;;;12610:90;-1:-1:-1;12727:3:0;;12532:213;;;;12465:284;;:::o;5688:1009::-;6005:182;6019:5;6032:6;6046:12;6066:11;6085:12;6113:1;6123:11;6142:12;6162:1;6171;6180;6005:6;:182::i;:::-;6238:115;6278:11;6297:10;6315:12;6335;6238:32;:115::i;:::-;6407:114;6447:11;6466:12;6486:9;6503:12;6407:32;:114::i;:::-;6571:61;6592:11;6605:12;6619;6571:20;:61::i;:::-;6662:30;;;;;;6672:5;;6662:30;;;;;5688:1009;;;;;;;;;;;:::o;7442:2059::-;7752:15;7742:6;:25;7738:52;;7776:14;;;;;;;;;;;;;;7738:52;7854:17;7874:391;7898:334;711:232;;;;;;7984:34:8;7972:47;;8049:34;8044:2;8035:12;;8028:56;8114:34;8109:2;8100:12;;8093:56;8179:8;8174:2;8165:12;;8158:30;8219:34;8213:3;8204:13;;8197:57;8285:34;8279:3;8270:13;;8263:57;8351:20;8345:3;8336:13;;8329:43;8397:3;8388:13;;7669:738;711:232:0;;;;;;;;;;;;;;694:255;;711:232;694:255;;;;8111:16;;7943:271;;;8811:25:8;8852:18;;;8845:34;;;8895:18;;;8888:34;;;8941:42;9019:15;;;8999:18;;;8992:43;9072:15;;;9051:19;;;9044:44;9104:19;;;9097:35;;;9148:19;;;9141:35;;;;8141:10:0;9192:19:8;;;9185:44;9266:15;;9245:19;;;9238:44;9298:19;;;9291:35;;;8783:19;;7943:271:0;;;;;;;;;;;;;7922:302;;;;;;7898:14;:334::i;:::-;8240:1;8249;8258;7874:16;:391::i;:::-;7854:411;-1:-1:-1;8315:23:0;;;8311:54;;8347:18;;;;;;;;;;;;;;8311:54;8441:34;8458:9;8469:5;8441:16;:34::i;:::-;8436:71;;8484:23;;;;;;;;1432:25:8;;;1405:18;;8484:23:0;;;;;;;;8436:71;8564:38;:24;;;8600:1;8564:24;;;:10;:24;;;;;;;:38;8560:326;;8699:24;;;;;;;;:10;:24;;;;;;8686:37;;;8699:24;;8686:37;8682:68;;8732:18;;;;;;;;;;;;;;8682:68;8560:326;;;8840:12;8827:25;;:9;:25;;;8823:56;;8861:18;;;;;;;;;;;;;;8823:56;8936:115;8976:11;8995:10;9013:12;9033;8936:32;:115::i;:::-;9102;9142:11;9161:12;9181:10;9199:12;9102:32;:115::i;:::-;9358:17;;9399:16;;9279:157;;9319:11;;9338:12;;9358:17;;;992:5;;9384:31;;:12;:31;:::i;:::-;9383:47;;;;:::i;:::-;9279:32;:157::i;:::-;9466:30;;;;;;9476:5;;9466:30;;;;;7693:1808;7442:2059;;;;;;;;;;:::o;16769:466::-;16875:7;16935:17;992:5;16965:11;;16956:6;:20;;;;:::i;:::-;16955:36;;;;:::i;:::-;17001:12;;16935:56;;-1:-1:-1;17001:26:0;:12;:26;;;;:43;;;17043:1;17031:9;:13;17001:43;16997:212;;;17106:12;;17100:37;;;;;17106:12;4138:55:8;;;17100:37:0;;;4120:74:8;17054:19:0;;17076:88;;17106:12;;;17100:29;;4093:18:8;;17100:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17147:9;17076:14;:88::i;:::-;17054:110;-1:-1:-1;17179:23:0;17054:110;17179:9;:23;:::i;:::-;17172:30;;;;;;16997:212;17221:9;16769:466;-1:-1:-1;;;16769:466:0:o;9720:456:2:-;9922:19;9916:4;9909:33;9968:8;9962:4;9955:22;10020:1;10013:4;10007;9997:21;9990:32;10151:8;10105:44;10102:1;10099;10094:66;9720:456::o;16393:254:0:-;16493:7;16508:15;16556:14;16542:10;;16535:2;16527:25;;;;:::i;:::-;16526:44;;;;:::i;:::-;16508:62;;1084:3;16625:7;16612:9;16595:14;16584:8;;:25;;;;:::i;:::-;:37;;;;:::i;:::-;16583:49;;;;:::i;:::-;:59;;;;:::i;:::-;16576:66;16393:254;-1:-1:-1;;;;16393:254:0:o;11086:191::-;12517:13:2;:11;:13::i;:::-;1128:2:0::1;11159:11;:23;11155:50;;;11191:14;;;;;;;;;;;;;;11155:50;11211:10;:24:::0;;;11246:26:::1;::::0;1432:25:8;;;11246:26:0::1;::::0;1420:2:8;1405:18;11246:26:0::1;;;;;;;;11086:191:::0;:::o;8762:100:2:-;12517:13;:11;:13::i;:::-;8834:21:::1;8852:1;8834:9;:21::i;:::-;8762:100::o:0;9617:250:0:-;12517:13:2;:11;:13::i;:::-;992:5:0::1;9735:12;:27;9731:60;;9771:20;;;;;;;;;;;;;;9731:60;9797:11;:26:::0;;;9834:28:::1;::::0;1432:25:8;;;9834:28:0::1;::::0;1420:2:8;1405:18;9834:28:0::1;1286:177:8::0;10406:299:0;12517:13:2;:11;:13::i;:::-;10538:32:0::1;::::0;::::1;10534:71;;10579:26;;;;;;;;;;;;;;10534:71;10611:17;:38:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;10660:40:::1;::::0;::::1;::::0;-1:-1:-1;;10660:40:0::1;10406:299:::0;:::o;6989:596:5:-;7327:16;7114:18;;7087:13;;;7114:18;7385:23;3164:19:0;;;;;;;;;;;;;;;;;;;;3189:15;;;;;;;;;;;;;;;;3164:19;3032:177;7385:23:5;6989:596;;7367:41;;;-1:-1:-1;7428:13:5;;-1:-1:-1;7479:4:5;;-1:-1:-1;6989:596:5;;-1:-1:-1;6989:596:5;:::o;11385:247:0:-;12517:13:2;:11;:13::i;:::-;11505:27:0::1;::::0;::::1;11501:56;;11541:16;;;;;;;;;;;;;;11501:56;11563:12;:28:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;11602:25:::1;::::0;::::1;::::0;-1:-1:-1;;11602:25:0::1;11385:247:::0;:::o;3941:1000::-;4249:182;4263:5;4276:6;4290:12;4310:11;4329:12;4349:10;4367:11;4386:12;4406:1;4415;4424;4249:6;:182::i;10807:173::-;12517:13:2;:11;:13::i;:::-;1084:3:0::1;10876:9;:19;10872:44;;;10904:12;;;;;;;;;;;;;;10872:44;10922:8;:20:::0;;;10953:22:::1;::::0;1432:25:8;;;10953:22:0::1;::::0;1420:2:8;1405:18;10953:22:0::1;1286:177:8::0;12070:152:0;12137:10;12112:11;12126:22;;;:10;:22;;;;;;;;12154:29;;;;;;12194:23;;12126:22;;;;;12137:10;12126:22;;12194:23;;12112:11;12194:23;12106:116;12070:152::o;11785:204::-;11851:23;;;11847:54;;11883:18;;;;;;;;;;;;;;11847:54;11918:10;11907:22;;;;:10;:22;;;;;;:34;;;;:22;:34;;;;;;;;11952:32;;11907:34;;11952:32;;;11785:204;:::o;13522:2739::-;13850:30;;;1044:1;13850:30;;;;;;;;;13800:16;;13824:23;;13850:30;;;;;;;;;;;-1:-1:-1;;;;;;;;;;13886:13:0;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13824:56:0;;-1:-1:-1;13886:13:0;13949:5;13935;:11;;:19;;;;;13975:6;13960:5;:12;;:21;;;;;14008:12;13987:5;:18;;:33;;;;;;;;;;;14046:11;14026:5;:17;;:31;;;;;;;;;;;14084:12;14063:5;:18;;:33;;;;;14122:11;14102:5;:17;;:31;;;;;;;;;;;14160:12;14139:5;:18;;:33;;;;;14188:1;14178:5;:7;;:11;;;;;;;;;;;14205:1;14195:5;:7;;:11;;;;;14222:1;14212:5;:7;;:11;;;;;14250:12;14229:5;:18;;:33;;;;;;;;;;;14320:17;14340:5;:18;;;14320:38;;14401:1;14368:35;;:10;:21;14379:9;14368:21;;;;;;;;;;;;;;;;;;;;;;;;;:35;;;14364:89;;14425:21;;;;;;;;:10;:21;;;;;;;14364:89;14471:359;14520:9;14539:248;14564:5;:11;;;14587:5;:12;;;14611:5;:18;;;14641:5;:17;;;14670:5;:18;;;14700:5;:18;;;14730:5;:17;;;14759:5;:18;;;14539:13;:248::i;:::-;14797:25;;;;;;11820:19:8;;;11855:12;;;11848:28;;;11928:66;11914:3;11910:16;;;11906:89;11892:12;;;11885:111;12012:12;;14797:25:0;;;;;;;;;;;;;14471:39;:359::i;:::-;14459:525;;14845:36;:6;14852:7;;;;:::i;:::-;;;14845:15;;;;;;;;:::i;:::-;;;;;;:36;;;;;14459:525;;;14898:33;14908:9;14919:5;:11;;;14898:9;:33::i;:::-;14894:90;;;14941:36;:6;14948:7;;;;:::i;:::-;;;14941:15;;;;;;;;:::i;:::-;;;;;;:36;;;;;14894:90;15009:15;14994:5;:12;;;:30;14990:83;;;15034:32;:6;15041:7;;;;:::i;:::-;;;15034:15;;;;;;;;:::i;:::-;;;;;;:32;;;;;14990:83;15083:18;;;;:32;;;15079:485;;15155:17;;;;15193:18;;;;15149:70;;;;;:34;4138:55:8;;;15149:70:0;;;4120:74:8;15125:21:0;;15149:34;;;;;;;4093:18:8;;15149:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15260:17;;;;15298:18;;;;15254:93;;;;;:34;12488:15:8;;;15254:93:0;;;12470:34:8;15334:4:0;12520:18:8;;;12513:43;15125:94:0;;-1:-1:-1;15228:23:0;;15254:34;;;;;12382:18:8;;15254:93:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15228:119;;15378:5;:18;;;15360:15;:36;15356:99;;;15408:38;:6;15415:7;;;;:::i;:::-;;;15408:15;;;;;;;;:::i;:::-;;;;;;:38;;;;;15356:99;15483:5;:18;;;15467:13;:34;15463:95;;;15513:36;:6;15520:7;;;;:::i;:::-;;;15513:15;;;;;;;;:::i;:::-;;;;;;:36;;;;;15463:95;15117:447;;15079:485;15600:17;;;;15636:18;;;;;15594:66;;;;;:34;4138:55:8;;;15594:66:0;;;4120:74:8;15570:21:0;;15594:34;;;;;;;4093:18:8;;15594:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15699:17;;;;15735:18;;;;;15693:87;;;;;:34;12488:15:8;;;15693:87:0;;;12470:34:8;15769:4:0;12520:18:8;;;12513:43;15570:90:0;;-1:-1:-1;15667:23:0;;15693:34;;;;;12382:18:8;;15693:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15667:113;;15787:23;992:5;15835:11;;15814:5;:18;;;:32;;;;:::i;:::-;15813:48;;;;:::i;:::-;15787:74;;15911:15;15890:5;:18;;;:36;;;;:::i;:::-;15872:15;:54;15868:113;;;15936:38;:6;15943:7;;;;:::i;:::-;;;15936:15;;;;;;;;:::i;:::-;;;;;;:38;;;;;15868:113;16028:15;16007:5;:18;;;:36;;;;:::i;:::-;15991:13;:52;15987:109;;;16053:36;:6;16060:7;;;;:::i;:::-;;;16053:15;;;;;;;;:::i;:::-;;;;;;:36;;;;;15987:109;16160:6;:13;16151:5;:22;16147:90;;16217:5;16209:6;16202:21;16147:90;-1:-1:-1;16250:6:0;;-1:-1:-1;;;;;;13522:2739:0;;;;;;;;;;;;;:::o;9994:290::-;12517:13:2;:11;:13::i;:::-;992:5:0::1;10122:17;:32;10118:70;;10163:25;;;;;;;;;;;;;;10118:70;10194:16;:36:::0;;;10241:38:::1;::::0;1432:25:8;;;10241:38:0::1;::::0;1420:2:8;1405:18;10241:38:0::1;1286:177:8::0;10363:708:2;12517:13;:11;:13::i;:::-;10597:19:::1;10591:4;10584:33;10643:12;10637:4;10630:26;10705:4;10699;10689:21;10811:12;10805:19;10792:11;10789:36;10786:157;;;10857:10;10851:4;10844:24;10924:4;10918;10911:18;10786:157;11020:1;10999:23:::0;;11041::::1;11051:12:::0;11041:9:::1;:23::i;:::-;10363:708:::0;:::o;8348:349::-;12517:13;:11;:13::i;:::-;8520:8:::1;8516:2;8512:17;8502:150;;8562:10;8556:4;8549:24;8633:4;8627;8620:18;8502:150;8671:19;8681:8;8671:9;:19::i;649:300:0:-:0;711:232;;;;;;7984:34:8;7972:47;;8049:34;8044:2;8035:12;;8028:56;8114:34;8109:2;8100:12;;8093:56;8179:8;8174:2;8165:12;;8158:30;8219:34;8213:3;8204:13;;8197:57;8285:34;8279:3;8270:13;;8263:57;8351:20;8345:3;8336:13;;8329:43;8397:3;8388:13;;7669:738;711:232:0;;;;;;;;;;;;;694:255;;;;;;649:300;:::o;17925:433::-;18011:4;;18042:11;18050:3;18042:5;:11;:::i;:::-;18023:30;-1:-1:-1;18059:20:0;18082:11;18090:3;18082:5;:11;:::i;:::-;18115:20;;;18099:13;18115:20;;;;;;;;;;;:30;;;;;;;;;18059:34;;-1:-1:-1;18225:1:0;18200:21;;;18199:27;;:32;;18195:65;;18248:5;18241:12;;;;;;;18195:65;18266:20;;;:12;:20;;;;;;;;;;;:30;;;;;;;;;;18316:1;18308:26;;;;18299:36;;;;18266:69;;;18316:1;-1:-1:-1;17925:433:0;;;;:::o;19042:1107::-;19365:15;19355:6;:25;19351:52;;19389:14;;;;;;;;;;;;;;19351:52;19503:35;:21;;;19461:17;19503:21;;;:10;:21;;;;;;19481:12;;19503:21;:35;19499:89;;19560:21;;;;;;;;:10;:21;;;;;;;19499:89;19659:311;19708:9;19727:200;19752:5;19769:6;19787:12;19811:11;19834:12;19858;19882:11;19905:12;19727:13;:200::i;:::-;19937:25;;;;;;11820:19:8;;;11855:12;;;11848:28;;;11928:66;11914:3;11910:16;;;11906:89;11892:12;;;11885:111;12012:12;;19937:25:0;11639:391:8;19659:311:0;19647:355;;19984:18;;;;;;;;;;;;;;19647:355;20078:34;20095:9;20106:5;20078:16;:34::i;:::-;20073:71;;20121:23;;;;;;;;1432:25:8;;;1405:18;;20121:23:0;1286:177:8;20073:71:0;19306:843;19042:1107;;;;;;;;;;;:::o;8181:1139:6:-;8364:4;8358:11;8429:6;8423:4;8416:20;8494:2;8488:4;8481:16;8559:4;8555:2;8551:13;8545:4;8538:27;8621:34;8615:4;8608:48;9022:4;9016;9010;9004;9001:1;8994:5;8987;8982:45;8916:16;8909:24;8905:1;8898:4;8892:11;8889:18;8886:48;8801:244;8774:404;;9091:10;9085:4;9078:24;9159:4;9153;9146:18;8774:404;9204:1;9198:4;9191:15;9260:4;9253:15;-1:-1:-1;;;;8181:1139:6:o;21222:1208:0:-;21383:17;992:5;21413:11;;21404:6;:20;;;;:::i;:::-;21403:36;;;;:::i;:::-;21383:56;-1:-1:-1;21449:13:0;;21445:981;;21503:12;;21472:19;;21503:26;:12;:26;21499:220;;21644:12;;21638:41;;;;;21668:10;21638:41;;;4120:74:8;21612:98:0;;21644:12;;;21638:29;;4093:18:8;;21638:41:0;3974:226:8;21612:98:0;21598:112;;21499:220;21730:15;;21726:694;;21817:134;21861:11;21884:12;21908:10;21930:11;21817:32;:134::i;:::-;22121:17;;22030:153;;22074:11;;22097:12;;22121:17;;22150:23;22162:11;22150:9;:23;:::i;22030:153::-;21726:694;;;22363:17;;22272:139;;22316:11;;22339:12;;22363:17;;22392:9;22272:32;:139::i;:::-;21464:962;21445:981;21335:1095;21222:1208;;;:::o;5757:885:5:-;6066:22;9114:11;9255:9;9252:25;9069:14;9225:9;9222:28;9218:60;6102:73;;-1:-1:-1;8545:4:5;8539:11;;8606:16;8596:27;;8383:15;8650:4;8643:12;;8636:31;8426:18;8701:12;;;8694:33;;;;8761:9;8754:4;8747:12;;8740:31;8805:9;8798:4;8791:12;;8784:31;8854:4;8841:18;;6102:73;6309:18;6303:4;6296:32;6375:6;6369:4;6362:20;6439:10;6433:4;6426:24;6515:4;6509;6499:21;6489:31;;6624:1;6618:4;6611:15;5757:885;;;:::o;14080:1040:4:-;14192:14;14303:4;14297:11;14368:4;14362;14355:18;14406:4;14403:1;14399:12;14393:4;14386:26;14438:1;14432:4;14425:15;14466:1;14460:4;14453:15;14789:4;14743;14699;14654;14604:1;14534:5;14502:328;14481:363;14870:1;14864:4;14857:15;15022:16;15016:4;15012:27;15006:34;14996:44;;15066:1;15060:4;15053:15;;14080:1040;;;;;;:::o;7292:355:2:-;7504:11;7498:18;7488:8;7485:32;7475:156;;7550:10;7544:4;7537:24;7612:4;7606;7599:18;6145:1089;6857:11;7093:16;;6941:26;;;;;;;7053:38;7050:1;;7042:78;7177:27;6145:1089::o;20439:606:0:-;20681:7;20709:331;711:232;;;;;;7984:34:8;7972:47;;8049:34;8044:2;8035:12;;8028:56;8114:34;8109:2;8100:12;;8093:56;8179:8;8174:2;8165:12;;8158:30;8219:34;8213:3;8204:13;;8197:57;8285:34;8279:3;8270:13;;8263:57;8351:20;8345:3;8336:13;;8329:43;8397:3;8388:13;;7669:738;711:232:0;;;;;;;;;;;;;;694:255;;711:232;694:255;;;;20922:11;;20754:268;;;8811:25:8;8852:18;;;8845:34;;;8895:18;;;8888:34;;;8941:42;9019:15;;;8999:18;;;8992:43;9072:15;;;9051:19;;;9044:44;9104:19;;;9097:35;;;9148:19;;;9141:35;;;;9213:15;;;9192:19;;;9185:44;9266:15;;9245:19;;;9238:44;9298:19;;;9291:35;;;8783:19;;20754:268:0;8412:920:8;20709:331:0;20696:344;20439:606;-1:-1:-1;;;;;;;;;20439:606:0:o;1980:4154:7:-;2295:24;;;;;2110:12;2322:6;2279:3839;;;2365:4;2359:11;2400:4;2394;2387:18;2456:4;2445:9;2441:20;2435:27;2429:4;2422:41;2512:2;2500:9;2494:16;2491:24;2488:1077;;2569:4;2558:9;2554:20;2548:27;2627:2;2622;2617:3;2613:12;2609:21;2603:4;2596:35;2687:2;2684:1;2680:10;2677:1;2673:18;2667:4;2660:32;;3089:4;3035;2983;2930;2872:1;2794:5;2754:384;3309:1;3303:8;3295:6;3291:21;3272:16;3265:24;3262:51;3252:295;;-1:-1:-1;3391:1:7;3385:4;3378:15;3451:4;3444:15;-1:-1:-1;3352:1:7;3520:5;;3252:295;;2488:1077;3606:2;3594:9;3588:16;3585:24;3582:1043;;3674:4;3663:9;3659:20;3653:27;3650:1;3645:36;3639:4;3632:50;3745:4;3734:9;3730:20;3724:27;3718:4;3711:41;4149:4;4095;4043;3990;3932:1;3854:5;3814:384;4369:1;4363:8;4355:6;4351:21;4332:16;4325:24;4322:51;4312:295;;-1:-1:-1;4451:1:7;4445:4;4438:15;4511:4;4504:15;-1:-1:-1;4412:1:7;4580:5;;4312:295;;3582:1043;4655:1;4649:4;4642:15;4713:1;4707:4;4700:15;4787:10;4782:3;4778:20;4825:1;4822;4815:12;4924:4;4917;4914:1;4910:12;4903:26;4962:4;4959:1;4955:12;4994:4;4991:1;4984:15;5137:9;5131:16;5125:4;5121:27;5218:1;5211:4;5208:1;5204:12;5201:1;5190:9;5187:1;5180:5;5169:51;5165:56;;6004:4;5952:1;5888:4;5870:16;5866:27;5806:1;5749:6;5700:5;5664:400;5418:8;;5415:15;;;5296:786;;-1:-1:-1;;1980:4154:7;;;;;:::o;14:196:8:-;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:254::-;283:6;291;344:2;332:9;323:7;319:23;315:32;312:52;;;360:1;357;350:12;312:52;383:29;402:9;383:29;:::i;:::-;373:39;459:2;444:18;;;;431:32;;-1:-1:-1;;;215:254:8:o;666:615::-;752:6;760;813:2;801:9;792:7;788:23;784:32;781:52;;;829:1;826;819:12;781:52;869:9;856:23;898:18;939:2;931:6;928:14;925:34;;;955:1;952;945:12;925:34;993:6;982:9;978:22;968:32;;1038:7;1031:4;1027:2;1023:13;1019:27;1009:55;;1060:1;1057;1050:12;1009:55;1100:2;1087:16;1126:2;1118:6;1115:14;1112:34;;;1142:1;1139;1132:12;1112:34;1195:7;1190:2;1180:6;1177:1;1173:14;1169:2;1165:23;1161:32;1158:45;1155:65;;;1216:1;1213;1206:12;1155:65;1247:2;1239:11;;;;;1269:6;;-1:-1:-1;666:615:8;;-1:-1:-1;;;;666:615:8:o;1468:156::-;1534:20;;1594:4;1583:16;;1573:27;;1563:55;;1614:1;1611;1604:12;1629:896;1776:6;1784;1792;1800;1808;1816;1824;1832;1840;1848;1856:7;1910:3;1898:9;1889:7;1885:23;1881:33;1878:53;;;1927:1;1924;1917:12;1878:53;1950:29;1969:9;1950:29;:::i;:::-;1940:39;;2026:2;2015:9;2011:18;1998:32;1988:42;;2077:2;2066:9;2062:18;2049:32;2039:42;;2100:38;2134:2;2123:9;2119:18;2100:38;:::i;:::-;2090:48;;2157:39;2191:3;2180:9;2176:19;2157:39;:::i;:::-;2147:49;;2243:3;2232:9;2228:19;2215:33;2205:43;;2267:39;2301:3;2290:9;2286:19;2267:39;:::i;:::-;2257:49;;2353:3;2342:9;2338:19;2325:33;2315:43;;2377:37;2409:3;2398:9;2394:19;2377:37;:::i;:::-;2367:47;;2461:3;2450:9;2446:19;2433:33;2423:43;;2514:3;2503:9;2499:19;2486:33;2475:44;;1629:896;;;;;;;;;;;;;;:::o;2530:819::-;2668:6;2676;2684;2692;2700;2708;2716;2724;2732;2740;2793:3;2781:9;2772:7;2768:23;2764:33;2761:53;;;2810:1;2807;2800:12;2761:53;2846:9;2833:23;2823:33;;2903:2;2892:9;2888:18;2875:32;2865:42;;2926:38;2960:2;2949:9;2945:18;2926:38;:::i;:::-;2916:48;;2983:38;3017:2;3006:9;3002:18;2983:38;:::i;:::-;2973:48;;3068:3;3057:9;3053:19;3040:33;3030:43;;3092:39;3126:3;3115:9;3111:19;3092:39;:::i;:::-;3082:49;;3178:3;3167:9;3163:19;3150:33;3140:43;;3202:37;3234:3;3223:9;3219:19;3202:37;:::i;:::-;3192:47;;3286:3;3275:9;3271:19;3258:33;3248:43;;3338:3;3327:9;3323:19;3310:33;3300:43;;2530:819;;;;;;;;;;;;;:::o;3536:248::-;3604:6;3612;3665:2;3653:9;3644:7;3640:23;3636:32;3633:52;;;3681:1;3678;3671:12;3633:52;-1:-1:-1;;3704:23:8;;;3774:2;3759:18;;;3746:32;;-1:-1:-1;3536:248:8:o;3789:180::-;3848:6;3901:2;3889:9;3880:7;3876:23;3872:32;3869:52;;;3917:1;3914;3907:12;3869:52;-1:-1:-1;3940:23:8;;3789:180;-1:-1:-1;3789:180:8:o;4205:186::-;4264:6;4317:2;4305:9;4296:7;4292:23;4288:32;4285:52;;;4333:1;4330;4323:12;4285:52;4356:29;4375:9;4356:29;:::i;4396:482::-;4438:3;4476:5;4470:12;4503:6;4498:3;4491:19;4528:1;4538:162;4552:6;4549:1;4546:13;4538:162;;;4614:4;4670:13;;;4666:22;;4660:29;4642:11;;;4638:20;;4631:59;4567:12;4538:162;;;4542:3;4745:1;4738:4;4729:6;4724:3;4720:16;4716:27;4709:38;4867:4;4797:66;4792:2;4784:6;4780:15;4776:88;4771:3;4767:98;4763:109;4756:116;;;4396:482;;;;:::o;4883:1335::-;5280:66;5272:6;5268:79;5257:9;5250:98;5231:4;5367:2;5405:3;5400:2;5389:9;5385:18;5378:31;5432:46;5473:3;5462:9;5458:19;5450:6;5432:46;:::i;:::-;5526:9;5518:6;5514:22;5509:2;5498:9;5494:18;5487:50;5560:33;5586:6;5578;5560:33;:::i;:::-;5624:2;5609:18;;5602:34;;;5685:42;5673:55;;5667:3;5652:19;;5645:84;5760:3;5745:19;;5738:35;;;5810:22;;;5804:3;5789:19;;5782:51;5882:13;;5904:22;;;5954:2;5980:15;;;;-1:-1:-1;5942:15:8;;;;-1:-1:-1;6023:169:8;6037:6;6034:1;6031:13;6023:169;;;6098:13;;6086:26;;6167:15;;;;6132:12;;;;6059:1;6052:9;6023:169;;;-1:-1:-1;6209:3:8;;4883:1335;-1:-1:-1;;;;;;;;;;;;4883:1335:8:o;6223:632::-;6394:2;6446:21;;;6516:13;;6419:18;;;6538:22;;;6365:4;;6394:2;6617:15;;;;6591:2;6576:18;;;6365:4;6660:169;6674:6;6671:1;6668:13;6660:169;;;6735:13;;6723:26;;6804:15;;;;6769:12;;;;6696:1;6689:9;6660:169;;;-1:-1:-1;6846:3:8;;6223:632;-1:-1:-1;;;;;;6223:632:8:o;6860:184::-;6912:77;6909:1;6902:88;7009:4;7006:1;6999:15;7033:4;7030:1;7023:15;7049:184;7101:77;7098:1;7091:88;7198:4;7195:1;7188:15;7222:4;7219:1;7212:15;7238:120;7278:1;7304;7294:35;;7309:18;;:::i;:::-;-1:-1:-1;7343:9:8;;7238:120::o;7363:112::-;7395:1;7421;7411:35;;7426:18;;:::i;:::-;-1:-1:-1;7460:9:8;;7363:112::o;7480:184::-;7532:77;7529:1;7522:88;7629:4;7626:1;7619:15;7653:4;7650:1;7643:15;9337:168;9410:9;;;9441;;9458:15;;;9452:22;;9438:37;9428:71;;9479:18;;:::i;9510:184::-;9580:6;9633:2;9621:9;9612:7;9608:23;9604:32;9601:52;;;9649:1;9646;9639:12;9601:52;-1:-1:-1;9672:16:8;;9510:184;-1:-1:-1;9510:184:8:o;9699:128::-;9766:9;;;9787:11;;;9784:37;;;9801:18;;:::i;9832:476::-;9921:1;9958:5;9921:1;9972:330;9993:7;9983:8;9980:21;9972:330;;;10112:4;10044:66;10040:77;10034:4;10031:87;10028:113;;;10121:18;;:::i;:::-;10171:7;10161:8;10157:22;10154:55;;;10191:16;;;;10154:55;10270:22;;;;10230:15;;;;9972:330;;;9976:3;9832:476;;;;;:::o;10313:866::-;10362:5;10392:8;10382:80;;-1:-1:-1;10433:1:8;10447:5;;10382:80;10481:4;10471:76;;-1:-1:-1;10518:1:8;10532:5;;10471:76;10563:4;10581:1;10576:59;;;;10649:1;10644:130;;;;10556:218;;10576:59;10606:1;10597:10;;10620:5;;;10644:130;10681:3;10671:8;10668:17;10665:43;;;10688:18;;:::i;:::-;-1:-1:-1;;10744:1:8;10730:16;;10759:5;;10556:218;;10858:2;10848:8;10845:16;10839:3;10833:4;10830:13;10826:36;10820:2;10810:8;10807:16;10802:2;10796:4;10793:12;10789:35;10786:77;10783:159;;;-1:-1:-1;10895:19:8;;;10927:5;;10783:159;10974:34;10999:8;10993:4;10974:34;:::i;:::-;11104:6;11036:66;11032:79;11023:7;11020:92;11017:118;;;11115:18;;:::i;:::-;11153:20;;10313:866;-1:-1:-1;;;10313:866:8:o;11184:131::-;11244:5;11273:36;11300:8;11294:4;11273:36;:::i;11320:125::-;11385:9;;;11406:10;;;11403:36;;;11419:18;;:::i;12035:195::-;12074:3;12105:66;12098:5;12095:77;12092:103;;12175:18;;:::i;:::-;-1:-1:-1;12222:1:8;12211:13;;12035:195::o"},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","FEE_DIVISOR()":"9e93ad8e","ORDER_TYPEHASH()":"f973a209","authorize(address)":"b6a5d7de","authorized(address)":"b9181611","bonusMax()":"7aba86d2","bonusScale()":"c5c62a7d","calculateBonus(uint256,uint256)":"6f72fd20","calculateProtocolFee(address,uint256)":"52c5f1f5","cancel(uint256[])":"2e340823","cancelOwnershipHandover()":"54d1f13d","check(address,uint256,uint256,address,address,uint256,address,uint256,uint8,bytes32,bytes32)":"b9cb01b0","completeOwnershipHandover(address)":"f04e283e","eip712Domain()":"84b0196e","nonceUsed(address,uint256)":"1647795e","owner()":"8da5cb5b","ownershipHandoverExpiresAt(address)":"fee81cf4","protocolFee()":"b0e21e8a","protocolFeeLight()":"f4ebc699","protocolFeeWallet()":"cbf7c6c3","renounceOwnership()":"715018a6","requestOwnershipHandover()":"25692962","revoke()":"b6549f75","setBonusMax(uint256)":"9cff19e0","setBonusScale(uint256)":"6fb30d43","setProtocolFee(uint256)":"787dce3d","setProtocolFeeLight(uint256)":"bfd4e557","setProtocolFeeWallet(address)":"7ce78525","setStaking(address)":"8ff39099","stakingToken()":"72f702f3","swap(address,uint256,uint256,address,address,uint256,address,uint256,uint8,bytes32,bytes32)":"98956069","swapAnySender(address,uint256,uint256,address,address,uint256,address,uint256,uint8,bytes32,bytes32)":"3eb1af24","swapLight(uint256,uint256,address,address,uint256,address,uint256,uint8,bytes32,bytes32)":"46e4480d","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_protocolFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_protocolFeeLight\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_protocolFeeWallet\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_bonusScale\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_bonusMax\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewOwnerIsZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoHandoverRequest\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"NonceAlreadyUsed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OrderExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProtocolFeeInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProtocolFeeLightInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProtocolFeeWalletInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ScaleTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatoryInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatureInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StakingInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferFromFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"signerWallet\",\"type\":\"address\"}],\"name\":\"Authorize\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"signerWallet\",\"type\":\"address\"}],\"name\":\"Cancel\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pendingOwner\",\"type\":\"address\"}],\"name\":\"OwnershipHandoverCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pendingOwner\",\"type\":\"address\"}],\"name\":\"OwnershipHandoverRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"signerWallet\",\"type\":\"address\"}],\"name\":\"Revoke\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bonusMax\",\"type\":\"uint256\"}],\"name\":\"SetBonusMax\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bonusScale\",\"type\":\"uint256\"}],\"name\":\"SetBonusScale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFee\",\"type\":\"uint256\"}],\"name\":\"SetProtocolFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFeeLight\",\"type\":\"uint256\"}],\"name\":\"SetProtocolFeeLight\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"feeWallet\",\"type\":\"address\"}],\"name\":\"SetProtocolFeeWallet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"staking\",\"type\":\"address\"}],\"name\":\"SetStaking\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"signerWallet\",\"type\":\"address\"}],\"name\":\"SwapERC20\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FEE_DIVISOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ORDER_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signatory\",\"type\":\"address\"}],\"name\":\"authorize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"authorized\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bonusMax\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bonusScale\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakingBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"}],\"name\":\"calculateBonus\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wallet\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"calculateProtocolFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"nonces\",\"type\":\"uint256[]\"}],\"name\":\"cancel\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cancelOwnershipHandover\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderWallet\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"signerWallet\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"signerToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"signerAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"senderToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"senderAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"check\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pendingOwner\",\"type\":\"address\"}],\"name\":\"completeOwnershipHandover\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"nonceUsed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"result\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pendingOwner\",\"type\":\"address\"}],\"name\":\"ownershipHandoverExpiresAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"result\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolFeeLight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolFeeWallet\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"requestOwnershipHandover\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revoke\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_bonusMax\",\"type\":\"uint256\"}],\"name\":\"setBonusMax\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_bonusScale\",\"type\":\"uint256\"}],\"name\":\"setBonusScale\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_protocolFee\",\"type\":\"uint256\"}],\"name\":\"setProtocolFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_protocolFeeLight\",\"type\":\"uint256\"}],\"name\":\"setProtocolFeeLight\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_protocolFeeWallet\",\"type\":\"address\"}],\"name\":\"setProtocolFeeWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_stakingToken\",\"type\":\"address\"}],\"name\":\"setStaking\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakingToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"signerWallet\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"signerToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"signerAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"senderToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"senderAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"signerWallet\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"signerToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"signerAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"senderToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"senderAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"swapAnySender\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"signerWallet\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"signerToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"signerAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"senderToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"senderAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"swapLight\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AlreadyInitialized()\":[{\"details\":\"Cannot double-initialize.\"}],\"NewOwnerIsZeroAddress()\":[{\"details\":\"The `newOwner` cannot be the zero address.\"}],\"NoHandoverRequest()\":[{\"details\":\"The `pendingOwner` does not have a valid handover request.\"}],\"Unauthorized()\":[{\"details\":\"The caller is not authorized to call the function.\"}]},\"events\":{\"OwnershipHandoverCanceled(address)\":{\"details\":\"The ownership handover to `pendingOwner` has been canceled.\"},\"OwnershipHandoverRequested(address)\":{\"details\":\"An ownership handover to `pendingOwner` has been requested.\"},\"OwnershipTransferred(address,address)\":{\"details\":\"The ownership is transferred from `oldOwner` to `newOwner`. This event is intentionally kept the same as OpenZeppelin's Ownable to be compatible with indexers and [EIP-173](https://eips.ethereum.org/EIPS/eip-173), despite it not being as lightweight as a single argument event.\"}},\"kind\":\"dev\",\"methods\":{\"authorize(address)\":{\"details\":\"Emits an Authorize event\",\"params\":{\"signatory\":\"address Wallet of the signatory to authorize\"}},\"calculateBonus(uint256,uint256)\":{\"params\":{\"feeAmount\":\"uint256\",\"stakingBalance\":\"uint256\"}},\"calculateProtocolFee(address,uint256)\":{\"params\":{\"amount\":\"uint256\",\"wallet\":\"address\"}},\"cancel(uint256[])\":{\"details\":\"Cancelled nonces are marked as usedEmits a Cancel eventOut of gas may occur in arrays of length > 400\",\"params\":{\"nonces\":\"uint256[] List of nonces to cancel\"}},\"cancelOwnershipHandover()\":{\"details\":\"Cancels the two-step ownership handover to the caller, if any.\"},\"check(address,uint256,uint256,address,address,uint256,address,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"expiry\":\"uint256 Expiry in seconds since 1 January 1970\",\"nonce\":\"uint256 Unique and should be sequential\",\"r\":\"bytes32 \\\"r\\\" value of the ECDSA signature\",\"s\":\"bytes32 \\\"s\\\" value of the ECDSA signature\",\"senderAmount\":\"uint256 Amount transferred from the sender\",\"senderToken\":\"address ERC20 token transferred from the sender\",\"senderWallet\":\"address Wallet that would send the order\",\"signerAmount\":\"uint256 Amount transferred from the signer\",\"signerToken\":\"address ERC20 token transferred from the signer\",\"signerWallet\":\"address Wallet of the signer\",\"v\":\"uint8 \\\"v\\\" value of the ECDSA signature\"},\"returns\":{\"_0\":\"bytes32[] errors\"}},\"completeOwnershipHandover(address)\":{\"details\":\"Allows the owner to complete the two-step ownership handover to `pendingOwner`. Reverts if there is no existing ownership handover requested by `pendingOwner`.\"},\"constructor\":{\"details\":\"Sets domain and version for EIP712 signatures\",\"params\":{\"_bonusMax\":\"uint256 max bonus percentage\",\"_bonusScale\":\"uin256 scale factor for bonus\",\"_protocolFee\":\"uin256 protocol fee to be assessed on swaps\",\"_protocolFeeWallet\":\"address destination for protocol fees\"}},\"eip712Domain()\":{\"details\":\"See: https://eips.ethereum.org/EIPS/eip-5267\"},\"nonceUsed(address,uint256)\":{\"params\":{\"nonce\":\"uint256 Nonce being checked\",\"signer\":\"address Address of the signer\"}},\"owner()\":{\"details\":\"Returns the owner of the contract.\"},\"ownershipHandoverExpiresAt(address)\":{\"details\":\"Returns the expiry timestamp for the two-step ownership handover to `pendingOwner`.\"},\"renounceOwnership()\":{\"details\":\"Allows the owner to renounce their ownership.\"},\"requestOwnershipHandover()\":{\"details\":\"Request a two-step ownership handover to the caller. The request will automatically expire in 48 hours (172800 seconds) by default.\"},\"revoke()\":{\"details\":\"Emits a Revoke event\"},\"setBonusMax(uint256)\":{\"details\":\"Only owner\",\"params\":{\"_bonusMax\":\"uint256\"}},\"setBonusScale(uint256)\":{\"details\":\"Only owner\",\"params\":{\"_bonusScale\":\"uint256\"}},\"setProtocolFee(uint256)\":{\"params\":{\"_protocolFee\":\"uint256 Value of the fee in basis points\"}},\"setProtocolFeeLight(uint256)\":{\"params\":{\"_protocolFeeLight\":\"uint256 Value of the fee in basis points\"}},\"setProtocolFeeWallet(address)\":{\"params\":{\"_protocolFeeWallet\":\"address Wallet to transfer fee to\"}},\"setStaking(address)\":{\"params\":{\"_stakingToken\":\"address Token to check balances on\"}},\"swap(address,uint256,uint256,address,address,uint256,address,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"expiry\":\"uint256 Expiry in seconds since 1 January 1970\",\"nonce\":\"uint256 Unique and should be sequential\",\"r\":\"bytes32 \\\"r\\\" value of the ECDSA signature\",\"recipient\":\"address Wallet to receive sender proceeds\",\"s\":\"bytes32 \\\"s\\\" value of the ECDSA signature\",\"senderAmount\":\"uint256 Amount transferred from the sender\",\"senderToken\":\"address ERC20 token transferred from the sender\",\"signerAmount\":\"uint256 Amount transferred from the signer\",\"signerToken\":\"address ERC20 token transferred from the signer\",\"signerWallet\":\"address Wallet of the signer\",\"v\":\"uint8 \\\"v\\\" value of the ECDSA signature\"}},\"swapAnySender(address,uint256,uint256,address,address,uint256,address,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"expiry\":\"uint256 Expiry in seconds since 1 January 1970\",\"nonce\":\"uint256 Unique and should be sequential\",\"r\":\"bytes32 \\\"r\\\" value of the ECDSA signature\",\"recipient\":\"address Wallet to receive sender proceeds\",\"s\":\"bytes32 \\\"s\\\" value of the ECDSA signature\",\"senderAmount\":\"uint256 Amount transferred from the sender\",\"senderToken\":\"address ERC20 token transferred from the sender\",\"signerAmount\":\"uint256 Amount transferred from the signer\",\"signerToken\":\"address ERC20 token transferred from the signer\",\"signerWallet\":\"address Wallet of the signer\",\"v\":\"uint8 \\\"v\\\" value of the ECDSA signature\"}},\"swapLight(uint256,uint256,address,address,uint256,address,uint256,uint8,bytes32,bytes32)\":{\"details\":\"No transfer checks. Only use with known tokens.\",\"params\":{\"expiry\":\"uint256 Expiry in seconds since 1 January 1970\",\"nonce\":\"uint256 Unique and should be sequential\",\"r\":\"bytes32 \\\"r\\\" value of the ECDSA signature\",\"s\":\"bytes32 \\\"s\\\" value of the ECDSA signature\",\"senderAmount\":\"uint256 Amount transferred from the sender\",\"senderToken\":\"address ERC20 token transferred from the sender\",\"signerAmount\":\"uint256 Amount transferred from the signer\",\"signerToken\":\"address ERC20 token transferred from the signer\",\"signerWallet\":\"address Wallet of the signer\",\"v\":\"uint8 \\\"v\\\" value of the ECDSA signature\"}},\"transferOwnership(address)\":{\"details\":\"Allows the owner to transfer the ownership to `newOwner`.\"}},\"stateVariables\":{\"_nonceGroups\":{\"details\":\"The nonce group is computed as nonce / 256, so each group of 256 sequential nonces uses the same keyThe nonce states are encoded as 256 bits, for each nonce in the group 0 means available and 1 means used\"}},\"title\":\"AirSwap: Atomic ERC20 Token Swap\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"authorize(address)\":{\"notice\":\"Authorize a signatory\"},\"calculateBonus(uint256,uint256)\":{\"notice\":\"Calculates bonus from staking balance\"},\"calculateProtocolFee(address,uint256)\":{\"notice\":\"Calculates protocol fee for an account\"},\"cancel(uint256[])\":{\"notice\":\"Cancel one or more nonces\"},\"check(address,uint256,uint256,address,address,uint256,address,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Checks an order for errors\"},\"constructor\":{\"notice\":\"SwapERC20 constructor\"},\"nonceUsed(address,uint256)\":{\"notice\":\"Returns true if the nonce has been used\"},\"revoke()\":{\"notice\":\"Revoke the signatory\"},\"setBonusMax(uint256)\":{\"notice\":\"Set staking bonus max\"},\"setBonusScale(uint256)\":{\"notice\":\"Set staking bonus scale\"},\"setProtocolFee(uint256)\":{\"notice\":\"Set the protocol fee\"},\"setProtocolFeeLight(uint256)\":{\"notice\":\"Set the light protocol fee\"},\"setProtocolFeeWallet(address)\":{\"notice\":\"Set the protocol fee wallet\"},\"setStaking(address)\":{\"notice\":\"Set staking token\"},\"swap(address,uint256,uint256,address,address,uint256,address,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Atomic ERC20 Swap\"},\"swapAnySender(address,uint256,uint256,address,address,uint256,address,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Atomic ERC20 Swap for Any Sender\"},\"swapLight(uint256,uint256,address,address,uint256,address,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Swap Atomic ERC20 Swap (Minimal Gas)\"}},\"notice\":\"https://www.airswap.io/\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/SwapERC20.sol\":\"SwapERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/SwapERC20.sol\":{\"keccak256\":\"0x695e1d5ba10be9c75b8430ecad9dc103c3b82d84987df55ed5e41e4f0c868fcd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aafc0d6ccedc9b9b1276016bb094e46774a9de2a34a471fa809129c7a485ebb1\",\"dweb:/ipfs/Qma4cjk6VgRgrtXJymVwuCDB2Eg9urfuAZX6AuzkVGc9D8\"]},\"contracts/interfaces/ISwapERC20.sol\":{\"keccak256\":\"0x00cb3ec17b3f4d87429f1d27fe05900f0be64355c3e39ca3558f897115035c8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72426c04742c77b642884e910c116a33f4767596b4901ca276dab80f07fb3f56\",\"dweb:/ipfs/QmdgonHQkzo9nEUhJCoo1FrunLnBBARNDcsJTYXbto7VxX\"]},\"solady/src/auth/Ownable.sol\":{\"keccak256\":\"0xc208cdd9de02bbf4b5edad18b88e23a2be7ff56d2287d5649329dc7cda64b9a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8fba079cc7230c617f7493a2e97873f88e59a53a5018fcb2e2b6ac42d8aa5a3\",\"dweb:/ipfs/QmTXg8GSt8hsK2cZhbPFrund1mrwVdkLQmEPoQaFy4fhjs\"]},\"solady/src/tokens/ERC20.sol\":{\"keccak256\":\"0xb4a3f9ba8a05107f7370de42cff57f3ad26dafd438712c11531a5892de2f59e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f0a9ca06e3cf6dea1f9a4c5599581573b7d81cd64dc3afb582f325ccf5fdd6dc\",\"dweb:/ipfs/Qmb9r5dDceNF4W8S5u6i85RsNTgE5XG9HbTXkyS25ad3C6\"]},\"solady/src/utils/ECDSA.sol\":{\"keccak256\":\"0x317f8208d1f03356e8f709eec8e2c579d6be227099a26f777cc9ec8a06814ae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f437b1683add465da31ecc92259d056d11edb4ea95dff22a8519fdabd82423dc\",\"dweb:/ipfs/QmbsFH26DQtnb97yqfF6Bw7CULFXupcra1x1xcq2Yy63FY\"]},\"solady/src/utils/EIP712.sol\":{\"keccak256\":\"0xb5c4c8ac5368c9785b4e30314f4ad6f3ae13bdc21679007735681d13da797bec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4456a4eaa8748f802fd1188db6405d18c452eb7c0dde84a49b49a7f94b5970d\",\"dweb:/ipfs/QmZzsFn4VwvBFy2MJVJXvntCQsDRCXbRrSKKfXxXv9jYGM\"]},\"solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0xf98506fade18a92e3d8d0a0ca0bdaeaa099d7620aac2a9d76b5f3d0bcd10691c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a3495c9d108bc69951a12c5ce9f05851cc921f0bb69e2505756e79f3ddab4e1a\",\"dweb:/ipfs/QmT3XwbmdbQCxw7iNcF7DoiypDd5vs2ETFWirXqmJ86Meg\"]},\"solady/src/utils/SignatureCheckerLib.sol\":{\"keccak256\":\"0x7a7acc59723ed291f24d9a2ed019109c8be69f32701f35f8a61dc7fff6652379\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7bab15a03dfca0567d7472933ee4e776fc21f9dfb6c4dbc06934fa75eceeff5e\",\"dweb:/ipfs/QmPUuKsRwpZXz15DpsoJMMPN9DtZiRvMfwjqJScxkppNsP\"]}},\"version\":1}"}},"contracts/interfaces/ISwapERC20.sol":{"ISwapERC20":{"abi":[{"inputs":[],"name":"MaxTooHigh","type":"error"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"NonceAlreadyUsed","type":"error"},{"inputs":[],"name":"OrderExpired","type":"error"},{"inputs":[],"name":"ProtocolFeeInvalid","type":"error"},{"inputs":[],"name":"ProtocolFeeLightInvalid","type":"error"},{"inputs":[],"name":"ProtocolFeeWalletInvalid","type":"error"},{"inputs":[],"name":"ScaleTooHigh","type":"error"},{"inputs":[],"name":"SignatoryInvalid","type":"error"},{"inputs":[],"name":"SignatureInvalid","type":"error"},{"inputs":[],"name":"StakingInvalid","type":"error"},{"inputs":[],"name":"TransferFromFailed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"signer","type":"address"},{"indexed":true,"internalType":"address","name":"signerWallet","type":"address"}],"name":"Authorize","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"nonce","type":"uint256"},{"indexed":true,"internalType":"address","name":"signerWallet","type":"address"}],"name":"Cancel","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"signer","type":"address"},{"indexed":true,"internalType":"address","name":"signerWallet","type":"address"}],"name":"Revoke","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"bonusMax","type":"uint256"}],"name":"SetBonusMax","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"bonusScale","type":"uint256"}],"name":"SetBonusScale","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"protocolFee","type":"uint256"}],"name":"SetProtocolFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"protocolFeeLight","type":"uint256"}],"name":"SetProtocolFeeLight","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"feeWallet","type":"address"}],"name":"SetProtocolFeeWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"staking","type":"address"}],"name":"SetStaking","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"nonce","type":"uint256"},{"indexed":true,"internalType":"address","name":"signerWallet","type":"address"}],"name":"SwapERC20","type":"event"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"authorized","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"calculateProtocolFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"nonces","type":"uint256[]"}],"name":"cancel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"senderWallet","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"address","name":"signerWallet","type":"address"},{"internalType":"address","name":"signerToken","type":"address"},{"internalType":"uint256","name":"signerAmount","type":"uint256"},{"internalType":"address","name":"senderToken","type":"address"},{"internalType":"uint256","name":"senderAmount","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"check","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"nonceUsed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"revoke","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"address","name":"signerWallet","type":"address"},{"internalType":"address","name":"signerToken","type":"address"},{"internalType":"uint256","name":"signerAmount","type":"uint256"},{"internalType":"address","name":"senderToken","type":"address"},{"internalType":"uint256","name":"senderAmount","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"swap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"address","name":"signerWallet","type":"address"},{"internalType":"address","name":"signerToken","type":"address"},{"internalType":"uint256","name":"signerAmount","type":"uint256"},{"internalType":"address","name":"senderToken","type":"address"},{"internalType":"uint256","name":"senderAmount","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"swapAnySender","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"address","name":"signerWallet","type":"address"},{"internalType":"address","name":"signerToken","type":"address"},{"internalType":"uint256","name":"signerAmount","type":"uint256"},{"internalType":"address","name":"senderToken","type":"address"},{"internalType":"uint256","name":"senderAmount","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"swapLight","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"authorize(address)":"b6a5d7de","authorized(address)":"b9181611","calculateProtocolFee(address,uint256)":"52c5f1f5","cancel(uint256[])":"2e340823","check(address,uint256,uint256,address,address,uint256,address,uint256,uint8,bytes32,bytes32)":"b9cb01b0","nonceUsed(address,uint256)":"1647795e","revoke()":"b6549f75","swap(address,uint256,uint256,address,address,uint256,address,uint256,uint8,bytes32,bytes32)":"98956069","swapAnySender(address,uint256,uint256,address,address,uint256,address,uint256,uint8,bytes32,bytes32)":"3eb1af24","swapLight(uint256,uint256,address,address,uint256,address,uint256,uint8,bytes32,bytes32)":"46e4480d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"MaxTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"NonceAlreadyUsed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OrderExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProtocolFeeInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProtocolFeeLightInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProtocolFeeWalletInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ScaleTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatoryInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatureInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StakingInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferFromFailed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"signerWallet\",\"type\":\"address\"}],\"name\":\"Authorize\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"signerWallet\",\"type\":\"address\"}],\"name\":\"Cancel\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"signerWallet\",\"type\":\"address\"}],\"name\":\"Revoke\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bonusMax\",\"type\":\"uint256\"}],\"name\":\"SetBonusMax\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bonusScale\",\"type\":\"uint256\"}],\"name\":\"SetBonusScale\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFee\",\"type\":\"uint256\"}],\"name\":\"SetProtocolFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFeeLight\",\"type\":\"uint256\"}],\"name\":\"SetProtocolFeeLight\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"feeWallet\",\"type\":\"address\"}],\"name\":\"SetProtocolFeeWallet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"staking\",\"type\":\"address\"}],\"name\":\"SetStaking\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"signerWallet\",\"type\":\"address\"}],\"name\":\"SwapERC20\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"authorize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"authorized\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"calculateProtocolFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"nonces\",\"type\":\"uint256[]\"}],\"name\":\"cancel\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderWallet\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"signerWallet\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"signerToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"signerAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"senderToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"senderAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"check\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"nonceUsed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revoke\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"signerWallet\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"signerToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"signerAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"senderToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"senderAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"signerWallet\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"signerToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"signerAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"senderToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"senderAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"swapAnySender\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"signerWallet\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"signerToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"signerAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"senderToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"senderAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"swapLight\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/ISwapERC20.sol\":\"ISwapERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/ISwapERC20.sol\":{\"keccak256\":\"0x00cb3ec17b3f4d87429f1d27fe05900f0be64355c3e39ca3558f897115035c8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72426c04742c77b642884e910c116a33f4767596b4901ca276dab80f07fb3f56\",\"dweb:/ipfs/QmdgonHQkzo9nEUhJCoo1FrunLnBBARNDcsJTYXbto7VxX\"]}},\"version\":1}"}},"solady/src/auth/Ownable.sol":{"Ownable":{"abi":[{"inputs":[],"name":"AlreadyInitialized","type":"error"},{"inputs":[],"name":"NewOwnerIsZeroAddress","type":"error"},{"inputs":[],"name":"NoHandoverRequest","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pendingOwner","type":"address"}],"name":"OwnershipHandoverCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pendingOwner","type":"address"}],"name":"OwnershipHandoverRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"cancelOwnershipHandover","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pendingOwner","type":"address"}],"name":"completeOwnershipHandover","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"result","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pendingOwner","type":"address"}],"name":"ownershipHandoverExpiresAt","outputs":[{"internalType":"uint256","name":"result","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"requestOwnershipHandover","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"cancelOwnershipHandover()":"54d1f13d","completeOwnershipHandover(address)":"f04e283e","owner()":"8da5cb5b","ownershipHandoverExpiresAt(address)":"fee81cf4","renounceOwnership()":"715018a6","requestOwnershipHandover()":"25692962","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NewOwnerIsZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoHandoverRequest\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pendingOwner\",\"type\":\"address\"}],\"name\":\"OwnershipHandoverCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pendingOwner\",\"type\":\"address\"}],\"name\":\"OwnershipHandoverRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"cancelOwnershipHandover\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pendingOwner\",\"type\":\"address\"}],\"name\":\"completeOwnershipHandover\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"result\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pendingOwner\",\"type\":\"address\"}],\"name\":\"ownershipHandoverExpiresAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"result\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"requestOwnershipHandover\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Solady (https://github.com/vectorized/solady/blob/main/src/auth/Ownable.sol)\",\"details\":\"Note: This implementation does NOT auto-initialize the owner to `msg.sender`. You MUST call the `_initializeOwner` in the constructor / initializer. While the ownable portion follows [EIP-173](https://eips.ethereum.org/EIPS/eip-173) for compatibility, the nomenclature for the 2-step ownership handover may be unique to this codebase.\",\"errors\":{\"AlreadyInitialized()\":[{\"details\":\"Cannot double-initialize.\"}],\"NewOwnerIsZeroAddress()\":[{\"details\":\"The `newOwner` cannot be the zero address.\"}],\"NoHandoverRequest()\":[{\"details\":\"The `pendingOwner` does not have a valid handover request.\"}],\"Unauthorized()\":[{\"details\":\"The caller is not authorized to call the function.\"}]},\"events\":{\"OwnershipHandoverCanceled(address)\":{\"details\":\"The ownership handover to `pendingOwner` has been canceled.\"},\"OwnershipHandoverRequested(address)\":{\"details\":\"An ownership handover to `pendingOwner` has been requested.\"},\"OwnershipTransferred(address,address)\":{\"details\":\"The ownership is transferred from `oldOwner` to `newOwner`. This event is intentionally kept the same as OpenZeppelin's Ownable to be compatible with indexers and [EIP-173](https://eips.ethereum.org/EIPS/eip-173), despite it not being as lightweight as a single argument event.\"}},\"kind\":\"dev\",\"methods\":{\"cancelOwnershipHandover()\":{\"details\":\"Cancels the two-step ownership handover to the caller, if any.\"},\"completeOwnershipHandover(address)\":{\"details\":\"Allows the owner to complete the two-step ownership handover to `pendingOwner`. Reverts if there is no existing ownership handover requested by `pendingOwner`.\"},\"owner()\":{\"details\":\"Returns the owner of the contract.\"},\"ownershipHandoverExpiresAt(address)\":{\"details\":\"Returns the expiry timestamp for the two-step ownership handover to `pendingOwner`.\"},\"renounceOwnership()\":{\"details\":\"Allows the owner to renounce their ownership.\"},\"requestOwnershipHandover()\":{\"details\":\"Request a two-step ownership handover to the caller. The request will automatically expire in 48 hours (172800 seconds) by default.\"},\"transferOwnership(address)\":{\"details\":\"Allows the owner to transfer the ownership to `newOwner`.\"}},\"stateVariables\":{\"_OWNERSHIP_HANDOVER_CANCELED_EVENT_SIGNATURE\":{\"details\":\"`keccak256(bytes(\\\"OwnershipHandoverCanceled(address)\\\"))`.\"},\"_OWNERSHIP_HANDOVER_REQUESTED_EVENT_SIGNATURE\":{\"details\":\"`keccak256(bytes(\\\"OwnershipHandoverRequested(address)\\\"))`.\"},\"_OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE\":{\"details\":\"`keccak256(bytes(\\\"OwnershipTransferred(address,address)\\\"))`.\"},\"_OWNER_SLOT\":{\"details\":\"The owner slot is given by: `bytes32(~uint256(uint32(bytes4(keccak256(\\\"_OWNER_SLOT_NOT\\\")))))`. It is intentionally chosen to be a high value to avoid collision with lower slots. The choice of manual storage layout is to enable compatibility with both regular and upgradeable contracts.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Simple single owner authorization mixin.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"solady/src/auth/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"solady/src/auth/Ownable.sol\":{\"keccak256\":\"0xc208cdd9de02bbf4b5edad18b88e23a2be7ff56d2287d5649329dc7cda64b9a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8fba079cc7230c617f7493a2e97873f88e59a53a5018fcb2e2b6ac42d8aa5a3\",\"dweb:/ipfs/QmTXg8GSt8hsK2cZhbPFrund1mrwVdkLQmEPoQaFy4fhjs\"]}},\"version\":1}"}},"solady/src/tokens/ERC20.sol":{"ERC20":{"abi":[{"inputs":[],"name":"AllowanceOverflow","type":"error"},{"inputs":[],"name":"AllowanceUnderflow","type":"error"},{"inputs":[],"name":"InsufficientAllowance","type":"error"},{"inputs":[],"name":"InsufficientBalance","type":"error"},{"inputs":[],"name":"InvalidPermit","type":"error"},{"inputs":[],"name":"PermitExpired","type":"error"},{"inputs":[],"name":"TotalSupplyOverflow","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","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":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"result","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"result","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"result","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"result","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"result","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","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":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AllowanceOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AllowanceUnderflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPermit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PermitExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TotalSupplyOverflow\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"result\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"result\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"result\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"result\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"result\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Solady (https://github.com/vectorized/solady/blob/main/src/tokens/ERC20.sol)Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC20.sol)Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol)\",\"details\":\"Note: - The ERC20 standard allows minting and transferring to and from the zero address,   minting and transferring zero tokens, as well as self-approvals.   For performance, this implementation WILL NOT revert for such actions.   Please add any checks with overrides if desired. - The `permit` function uses the ecrecover precompile (0x1). If you are overriding: - NEVER violate the ERC20 invariant:   the total sum of all balances must be equal to `totalSupply()`. - Check that the overridden function is actually used in the function you want to   change the behavior of. Much of the code has been manually inlined for performance.\",\"errors\":{\"AllowanceOverflow()\":[{\"details\":\"The allowance has overflowed.\"}],\"AllowanceUnderflow()\":[{\"details\":\"The allowance has underflowed.\"}],\"InsufficientAllowance()\":[{\"details\":\"Insufficient allowance.\"}],\"InsufficientBalance()\":[{\"details\":\"Insufficient balance.\"}],\"InvalidPermit()\":[{\"details\":\"The permit is invalid.\"}],\"PermitExpired()\":[{\"details\":\"The permit has expired.\"}],\"TotalSupplyOverflow()\":[{\"details\":\"The total supply has overflowed.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `amount` tokens is approved by `owner` to be used by `spender`.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `amount` tokens is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the EIP-712 domain separator for the EIP-2612 permit.\"},\"allowance(address,address)\":{\"details\":\"Returns the amount of tokens that `spender` can spend on behalf of `owner`.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Emits a {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `owner`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"Returns the current nonce for `owner`. This value is used to compute the signature for EIP-2612 permit.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over the tokens of `owner`, authorized by a signed approval by `owner`. Emits a {Approval} event.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Transfer `amount` tokens from the caller to `to`. Requirements: - `from` must at least have `amount`. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `amount` tokens from `from` to `to`. Note: Does not update the allowance if it is the maximum uint256 value. Requirements: - `from` must at least have `amount`. - The caller must have at least `amount` of allowance to transfer the tokens of `from`. Emits a {Transfer} event.\"}},\"stateVariables\":{\"_ALLOWANCE_SLOT_SEED\":{\"details\":\"The allowance slot of (`owner`, `spender`) is given by: ```     mstore(0x20, spender)     mstore(0x0c, _ALLOWANCE_SLOT_SEED)     mstore(0x00, owner)     let allowanceSlot := keccak256(0x0c, 0x34) ```\"},\"_APPROVAL_EVENT_SIGNATURE\":{\"details\":\"`keccak256(bytes(\\\"Approval(address,address,uint256)\\\"))`.\"},\"_BALANCE_SLOT_SEED\":{\"details\":\"The balance slot of `owner` is given by: ```     mstore(0x0c, _BALANCE_SLOT_SEED)     mstore(0x00, owner)     let balanceSlot := keccak256(0x0c, 0x20) ```\"},\"_DOMAIN_TYPEHASH\":{\"details\":\"`keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\")`.\"},\"_NONCES_SLOT_SEED\":{\"details\":\"The nonce slot of `owner` is given by: ```     mstore(0x0c, _NONCES_SLOT_SEED)     mstore(0x00, owner)     let nonceSlot := keccak256(0x0c, 0x20) ```\"},\"_NONCES_SLOT_SEED_WITH_SIGNATURE_PREFIX\":{\"details\":\"`(_NONCES_SLOT_SEED << 16) | 0x1901`.\"},\"_PERMIT_TYPEHASH\":{\"details\":\"`keccak256(\\\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\\\")`.\"},\"_TOTAL_SUPPLY_SLOT\":{\"details\":\"The storage slot for the total supply.\"},\"_TRANSFER_EVENT_SIGNATURE\":{\"details\":\"`keccak256(bytes(\\\"Transfer(address,address,uint256)\\\"))`.\"},\"_VERSION_HASH\":{\"details\":\"`keccak256(\\\"1\\\")`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Simple ERC20 + EIP-2612 implementation.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"solady/src/tokens/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"solady/src/tokens/ERC20.sol\":{\"keccak256\":\"0xb4a3f9ba8a05107f7370de42cff57f3ad26dafd438712c11531a5892de2f59e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f0a9ca06e3cf6dea1f9a4c5599581573b7d81cd64dc3afb582f325ccf5fdd6dc\",\"dweb:/ipfs/Qmb9r5dDceNF4W8S5u6i85RsNTgE5XG9HbTXkyS25ad3C6\"]}},\"version\":1}"}},"solady/src/utils/ECDSA.sol":{"ECDSA":{"abi":[{"inputs":[],"name":"InvalidSignature","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209dcc464c167b1017b4da405765a92b5bce5dfa8ca6a4e518977e402c1ca3dbe264736f6c63430008170033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 SWAP14 0xCC CHAINID 0x4C AND PUSH28 0x1017B4DA405765A92B5BCE5DFA8CA6A4E518977E402C1CA3DBE26473 PUSH16 0x6C634300081700330000000000000000 ","sourceMap":"1453:16549:4:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1453:16549:4;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209dcc464c167b1017b4da405765a92b5bce5dfa8ca6a4e518977e402c1ca3dbe264736f6c63430008170033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP14 0xCC CHAINID 0x4C AND PUSH28 0x1017B4DA405765A92B5BCE5DFA8CA6A4E518977E402C1CA3DBE26473 PUSH16 0x6C634300081700330000000000000000 ","sourceMap":"1453:16549:4:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"Solady (https://github.com/vectorized/solady/blob/main/src/utils/ECDSA.sol)Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/ECDSA.sol)Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/ECDSA.sol)\",\"details\":\"Note: - The recovery functions use the ecrecover precompile (0x1). - As of Solady version 0.0.68, the `recover` variants will revert upon recovery failure.   This is for more safety by default.   Use the `tryRecover` variants if you need to get the zero address back   upon recovery failure instead. - As of Solady version 0.0.134, all `bytes signature` variants accept both   regular 65-byte `(r, s, v)` and EIP-2098 `(r, vs)` short form signatures.   See: https://eips.ethereum.org/EIPS/eip-2098   This is for calldata efficiency on smart accounts prevalent on L2s. WARNING! Do NOT use signatures as unique identifiers: - Use a nonce in the digest to prevent replay attacks on the same contract. - Use EIP-712 for the digest to prevent replay attacks across different chains and contracts.   EIP-712 also enables readable signing of typed data for better user safety. This implementation does NOT check if a signature is non-malleable.\",\"errors\":{\"InvalidSignature()\":[{\"details\":\"The signature is invalid.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Gas optimized ECDSA wrapper.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"solady/src/utils/ECDSA.sol\":\"ECDSA\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"solady/src/utils/ECDSA.sol\":{\"keccak256\":\"0x317f8208d1f03356e8f709eec8e2c579d6be227099a26f777cc9ec8a06814ae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f437b1683add465da31ecc92259d056d11edb4ea95dff22a8519fdabd82423dc\",\"dweb:/ipfs/QmbsFH26DQtnb97yqfF6Bw7CULFXupcra1x1xcq2Yy63FY\"]}},\"version\":1}"}},"solady/src/utils/EIP712.sol":{"EIP712":{"abi":[{"inputs":[],"name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"eip712Domain()":"84b0196e"}},"metadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Solady (https://github.com/vectorized/solady/blob/main/src/utils/EIP712.sol)Modified from Solbase (https://github.com/Sol-DAO/solbase/blob/main/src/utils/EIP712.sol)Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/EIP712.sol)\",\"details\":\"Note, this implementation: - Uses `address(this)` for the `verifyingContract` field. - Does NOT use the optional EIP-712 salt. - Does NOT use any EIP-712 extensions. This is for simplicity and to save gas. If you need to customize, please fork / modify accordingly.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Cache the hashes for cheaper runtime gas costs. In the case of upgradeable contracts (i.e. proxies), or if the chain id changes due to a hard fork, the domain separator will be seamlessly calculated on-the-fly.\"},\"eip712Domain()\":{\"details\":\"See: https://eips.ethereum.org/EIPS/eip-5267\"}},\"stateVariables\":{\"_DOMAIN_TYPEHASH\":{\"details\":\"`keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\")`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Contract for EIP-712 typed structured data hashing and signing.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"solady/src/utils/EIP712.sol\":\"EIP712\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"solady/src/utils/EIP712.sol\":{\"keccak256\":\"0xb5c4c8ac5368c9785b4e30314f4ad6f3ae13bdc21679007735681d13da797bec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4456a4eaa8748f802fd1188db6405d18c452eb7c0dde84a49b49a7f94b5970d\",\"dweb:/ipfs/QmZzsFn4VwvBFy2MJVJXvntCQsDRCXbRrSKKfXxXv9jYGM\"]}},\"version\":1}"}},"solady/src/utils/SafeTransferLib.sol":{"SafeTransferLib":{"abi":[{"inputs":[],"name":"ApproveFailed","type":"error"},{"inputs":[],"name":"ETHTransferFailed","type":"error"},{"inputs":[],"name":"TransferFailed","type":"error"},{"inputs":[],"name":"TransferFromFailed","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220528781948111c02775e69d6e2d1ef0a14a02372fe30f1ff838f42fb13cc6a78464736f6c63430008170033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 MSTORE DUP8 DUP2 SWAP5 DUP2 GT 0xC0 0x27 PUSH22 0xE69D6E2D1EF0A14A02372FE30F1FF838F42FB13CC6A7 DUP5 PUSH5 0x736F6C6343 STOP ADDMOD OR STOP CALLER ","sourceMap":"589:17261:6:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;589:17261:6;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220528781948111c02775e69d6e2d1ef0a14a02372fe30f1ff838f42fb13cc6a78464736f6c63430008170033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSTORE DUP8 DUP2 SWAP5 DUP2 GT 0xC0 0x27 PUSH22 0xE69D6E2D1EF0A14A02372FE30F1FF838F42FB13CC6A7 DUP5 PUSH5 0x736F6C6343 STOP ADDMOD OR STOP CALLER ","sourceMap":"589:17261:6:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ApproveFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ETHTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferFromFailed\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"Solady (https://github.com/vectorized/solady/blob/main/src/utils/SafeTransferLib.sol)Modified from Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/SafeTransferLib.sol)\",\"details\":\"Note: - For ETH transfers, please use `forceSafeTransferETH` for DoS protection. - For ERC20s, this implementation won't check that a token has code,   responsibility is delegated to the caller.\",\"errors\":{\"ApproveFailed()\":[{\"details\":\"The ERC20 `approve` has failed.\"}],\"ETHTransferFailed()\":[{\"details\":\"The ETH transfer has failed.\"}],\"TransferFailed()\":[{\"details\":\"The ERC20 `transfer` has failed.\"}],\"TransferFromFailed()\":[{\"details\":\"The ERC20 `transferFrom` has failed.\"}]},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"GAS_STIPEND_NO_GRIEF\":{\"details\":\"Suggested gas stipend for contract receiving ETH to perform a few storage reads and writes, but low enough to prevent griefing.\"},\"GAS_STIPEND_NO_STORAGE_WRITES\":{\"details\":\"Suggested gas stipend for contract receiving ETH that disallows any storage writes.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Safe ETH and ERC20 transfer library that gracefully handles missing return values.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"solady/src/utils/SafeTransferLib.sol\":\"SafeTransferLib\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0xf98506fade18a92e3d8d0a0ca0bdaeaa099d7620aac2a9d76b5f3d0bcd10691c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a3495c9d108bc69951a12c5ce9f05851cc921f0bb69e2505756e79f3ddab4e1a\",\"dweb:/ipfs/QmT3XwbmdbQCxw7iNcF7DoiypDd5vs2ETFWirXqmJ86Meg\"]}},\"version\":1}"}},"solady/src/utils/SignatureCheckerLib.sol":{"SignatureCheckerLib":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202221e17dea763b999d7241b3496dd03294f1990c922c64c2a5e6286e4fdad17264736f6c63430008170033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 0x22 0x21 0xE1 PUSH30 0xEA763B999D7241B3496DD03294F1990C922C64C2A5E6286E4FDAD1726473 PUSH16 0x6C634300081700330000000000000000 ","sourceMap":"1438:25134:7:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1438:25134:7;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202221e17dea763b999d7241b3496dd03294f1990c922c64c2a5e6286e4fdad17264736f6c63430008170033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x22 0x21 0xE1 PUSH30 0xEA763B999D7241B3496DD03294F1990C922C64C2A5E6286E4FDAD1726473 PUSH16 0x6C634300081700330000000000000000 ","sourceMap":"1438:25134:7:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Solady (https://github.com/vectorized/solady/blob/main/src/utils/SignatureCheckerLib.sol)Modified from OpenZeppelin (https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/SignatureChecker.sol)\",\"details\":\"Note: - The signature checking functions use the ecrecover precompile (0x1). - The `bytes memory signature` variants use the identity precompile (0x4)   to copy memory internally. - Unlike ECDSA signatures, contract signatures are revocable. - As of Solady version 0.0.134, all `bytes signature` variants accept both   regular 65-byte `(r, s, v)` and EIP-2098 `(r, vs)` short form signatures.   See: https://eips.ethereum.org/EIPS/eip-2098   This is for calldata efficiency on smart accounts prevalent on L2s. WARNING! Do NOT use signatures as unique identifiers: - Use a nonce in the digest to prevent replay attacks on the same contract. - Use EIP-712 for the digest to prevent replay attacks across different chains and contracts.   EIP-712 also enables readable signing of typed data for better user safety. This implementation does NOT check if a signature is non-malleable.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Signature verification helper that supports both ECDSA signatures from EOAs and ERC1271 signatures from smart contract wallets like Argent and Gnosis safe.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"solady/src/utils/SignatureCheckerLib.sol\":\"SignatureCheckerLib\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"solady/src/utils/SignatureCheckerLib.sol\":{\"keccak256\":\"0x7a7acc59723ed291f24d9a2ed019109c8be69f32701f35f8a61dc7fff6652379\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7bab15a03dfca0567d7472933ee4e776fc21f9dfb6c4dbc06934fa75eceeff5e\",\"dweb:/ipfs/QmPUuKsRwpZXz15DpsoJMMPN9DtZiRvMfwjqJScxkppNsP\"]}},\"version\":1}"}}}}}