{"id":"b5191661c2ed47c590f3c31fcd62e8b1","_format":"hh-sol-build-info-1","solcVersion":"0.8.4","solcLongVersion":"0.8.4+commit.c7e474f2","input":{"language":"Solidity","sources":{"contracts/splitters/MAHASplitKeeper.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.0;\n\nimport {IERC20} from \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\nimport {FeesSplitter} from \"./FeesSplitter.sol\";\nimport {KeeperCompatibleInterface} from \"../interfaces/KeeperCompatibleInterface.sol\";\nimport {Epoch} from \"../utils/Epoch.sol\";\n\ninterface ICommunityFund {\n    function release(IERC20 token) external;\n\n    function releasableAmount(IERC20 token) external view returns (uint256);\n}\n\n/**\n * This is a keeper contract that splits the maha from the ecosystem fund into the various treasuries on a\n * monthly basis via a keeper.\n *\n * Currently deployed at: https://etherscan.io/address/0x5f7a88d09491b89f0e9a02e3cce3309ef1502ab8\n */\ncontract MAHASplitKeeper is Epoch, FeesSplitter, KeeperCompatibleInterface {\n    IERC20 public maha;\n    ICommunityFund public communityFund;\n\n    constructor(\n        address[] memory _accounts,\n        uint32[] memory _percentAllocations,\n        IERC20 _maha,\n        ICommunityFund _fund\n    )\n        FeesSplitter(_accounts, _percentAllocations)\n        Epoch(86400 * 30, block.timestamp, 0)\n    {\n        maha = _maha;\n        communityFund = _fund;\n    }\n\n    function releaseAndDistributeMAHA() public {\n        communityFund.release(maha);\n        distributeERC20(maha);\n    }\n\n    function releasable() public view returns (uint256) {\n        return communityFund.releasableAmount(maha);\n    }\n\n    function distributeMAHA() public {\n        distributeERC20(maha);\n    }\n\n    function checkUpkeep(bytes calldata)\n        external\n        view\n        override\n        returns (bool upkeepNeeded, bytes memory performData)\n    {\n        return (_callable(), \"\");\n    }\n\n    function performUpkeep(bytes calldata) external override checkEpoch {\n        releaseAndDistributeMAHA();\n    }\n}\n"},"contracts/splitters/FeesSplitter.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.0;\n\nimport {SafeERC20, IERC20} from \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\nimport {Ownable} from \"@openzeppelin/contracts/access/Ownable.sol\";\n\ncontract FeesSplitter is Ownable {\n    using SafeERC20 for IERC20;\n\n    event ETHReceived(address from, uint256 amount);\n\n    uint256 public constant PERCENTAGE_SCALE = 1e6;\n    address[] public accounts;\n    uint32[] public percentAllocations;\n\n    constructor(address[] memory _accounts, uint32[] memory _percentAllocations)\n    {\n        accounts = _accounts;\n        percentAllocations = _percentAllocations;\n        checkPercentages(_percentAllocations);\n    }\n\n    receive() external payable virtual {\n        emit ETHReceived(_msgSender(), msg.value);\n    }\n\n    function distributeETH() public {\n        uint256 amountToSplit = address(this).balance;\n\n        // distribute remaining balance\n        // overflow should be impossible in for-loop index\n        // cache accounts length to save gas\n        uint256 accountsLength = accounts.length;\n        for (uint256 i = 0; i < accountsLength; ++i) {\n            // overflow should be impossible with validated allocations\n            uint256 amt = _scaleAmountByPercentage(\n                amountToSplit,\n                percentAllocations[i]\n            );\n\n            (bool success, ) = accounts[i].call{value: amt}(\"\");\n            require(success, \"unable to send eth, recipient may have reverted\");\n        }\n    }\n\n    function distributeERC20(IERC20 token) public {\n        uint256 amountToSplit = token.balanceOf(address(this));\n        uint256 accountsLength = accounts.length;\n        for (uint256 i = 0; i < accountsLength; ++i) {\n            // overflow should be impossible with validated allocations\n            uint256 amt = _scaleAmountByPercentage(\n                amountToSplit,\n                percentAllocations[i]\n            );\n\n            token.transfer(accounts[i], amt);\n        }\n    }\n\n    function updateSplit(\n        address[] memory _accounts,\n        uint32[] memory _percentAllocations\n    ) external onlyOwner {\n        accounts = _accounts;\n        percentAllocations = _percentAllocations;\n        checkPercentages(_percentAllocations);\n    }\n\n    function checkPercentages(uint32[] memory _percentAllocations)\n        public\n        view\n        onlyOwner\n    {\n        uint32 sum = 0;\n        for (uint256 i = 0; i < _percentAllocations.length; i++) {\n            sum += _percentAllocations[i];\n        }\n        require(sum == PERCENTAGE_SCALE, \"invalid percentages\");\n    }\n\n    function withdrawETH() external onlyOwner {\n        payable(owner()).transfer(address(this).balance);\n    }\n\n    function withdrawERC20(IERC20 token) external onlyOwner {\n        token.transfer(owner(), token.balanceOf(address(this)));\n    }\n\n    function _scaleAmountByPercentage(uint256 amount, uint256 scaledPercent)\n        internal\n        pure\n        returns (uint256 scaledAmount)\n    {\n        // use assembly to bypass checking for overflow & division by 0\n        // scaledPercent has been validated to be < PERCENTAGE_SCALE)\n        // & PERCENTAGE_SCALE will never be 0\n        // pernicious ERC20s may cause overflow, but results do not affect ETH & other ERC20 balances\n        assembly {\n            /* eg (100 * 2*1e4) / (1e6) */\n            scaledAmount := div(mul(amount, scaledPercent), PERCENTAGE_SCALE)\n        }\n    }\n}\n"},"contracts/interfaces/KeeperCompatibleInterface.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ninterface KeeperCompatibleInterface {\n  /**\n   * @notice method that is simulated by the keepers to see if any work actually\n   * needs to be performed. This method does does not actually need to be\n   * executable, and since it is only ever simulated it can consume lots of gas.\n   * @dev To ensure that it is never called, you may want to add the\n   * cannotExecute modifier from KeeperBase to your implementation of this\n   * method.\n   * @param checkData specified in the upkeep registration so it is always the\n   * same for a registered upkeep. This can easily be broken down into specific\n   * arguments using `abi.decode`, so multiple upkeeps can be registered on the\n   * same contract and easily differentiated by the contract.\n   * @return upkeepNeeded boolean to indicate whether the keeper should call\n   * performUpkeep or not.\n   * @return performData bytes that the keeper should call performUpkeep with, if\n   * upkeep is needed. If you would like to encode data to decode later, try\n   * `abi.encode`.\n   */\n  function checkUpkeep(bytes calldata checkData)\n    external\n    returns (bool upkeepNeeded, bytes memory performData);\n\n  /**\n   * @notice method that is actually executed by the keepers, via the registry.\n   * The data returned by the checkUpkeep simulation will be passed into\n   * this method to actually be executed.\n   * @dev The input to this method should not be trusted, and the caller of the\n   * method should not even be restricted to any single registry. Anyone should\n   * be able call it, and the input should be validated, there is no guarantee\n   * that the data passed in is the performData returned from checkUpkeep. This\n   * could happen due to malicious keepers, racing keepers, or simply a state\n   * change while the performUpkeep transaction is waiting for confirmation.\n   * Always validate the data passed in.\n   * @param performData is the data which was passed back from the checkData\n   * simulation. If it is encoded, it can easily be decoded into other types by\n   * calling `abi.decode`. This data should not be trusted, and should be\n   * validated against the contract's current state.\n   */\n  function performUpkeep(bytes calldata performData) external;\n}\n"},"contracts/utils/Epoch.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {Math} from \"@openzeppelin/contracts/utils/math/Math.sol\";\nimport {SafeMath} from \"@openzeppelin/contracts/utils/math/SafeMath.sol\";\nimport {Ownable} from \"@openzeppelin/contracts/access/Ownable.sol\";\nimport {IEpoch} from \"../interfaces/IEpoch.sol\";\n\ncontract Epoch is IEpoch, Ownable {\n    using SafeMath for uint256;\n\n    uint256 private period;\n    uint256 private startTime;\n    uint256 private lastExecutedAt;\n\n    /* ========== CONSTRUCTOR ========== */\n\n    constructor(\n        uint256 _period,\n        uint256 _startTime,\n        uint256 _startEpoch\n    ) {\n        period = _period;\n        startTime = _startTime;\n        lastExecutedAt = startTime.add(_startEpoch.mul(period));\n    }\n\n    /* ========== Modifier ========== */\n\n    modifier checkStartTime() {\n        require(block.timestamp >= startTime, \"Epoch: not started yet\");\n        _;\n    }\n\n    modifier checkEpoch() {\n        require(block.timestamp > startTime, \"Epoch: not started yet\");\n        require(_callable(), \"Epoch: not allowed\");\n        _;\n        lastExecutedAt = block.timestamp;\n    }\n\n    function _getLastEpoch() internal view returns (uint256) {\n        return lastExecutedAt.sub(startTime).div(period);\n    }\n\n    function _getCurrentEpoch() internal view returns (uint256) {\n        return Math.max(startTime, block.timestamp).sub(startTime).div(period);\n    }\n\n    function callable() external view override returns (bool) {\n        return _callable();\n    }\n\n    function _callable() internal view returns (bool) {\n        return _getCurrentEpoch() >= _getNextEpoch();\n    }\n\n    function _getNextEpoch() internal view returns (uint256) {\n        if (startTime == lastExecutedAt) {\n            return _getLastEpoch();\n        }\n        return _getLastEpoch().add(1);\n    }\n\n    // epoch\n    function getLastEpoch() external view override returns (uint256) {\n        return _getLastEpoch();\n    }\n\n    function getCurrentEpoch() external view override returns (uint256) {\n        return Math.max(startTime, block.timestamp).sub(startTime).div(period);\n    }\n\n    function getNextEpoch() external view override returns (uint256) {\n        return _getNextEpoch();\n    }\n\n    function nextEpochPoint() external view override returns (uint256) {\n        return startTime.add(_getNextEpoch().mul(period));\n    }\n\n    // params\n    function getPeriod() external view override returns (uint256) {\n        return period;\n    }\n\n    function getStartTime() external view override returns (uint256) {\n        return startTime;\n    }\n\n    /* ========== GOVERNANCE ========== */\n\n    function setPeriod(uint256 _period) external onlyOwner {\n        period = _period;\n    }\n}\n"},"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC20/utils/SafeERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC20.sol\";\nimport \"../extensions/draft-IERC20Permit.sol\";\nimport \"../../../utils/Address.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20 {\n    using Address for address;\n\n    function safeTransfer(\n        IERC20 token,\n        address to,\n        uint256 value\n    ) internal {\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\n    }\n\n    function safeTransferFrom(\n        IERC20 token,\n        address from,\n        address to,\n        uint256 value\n    ) internal {\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\n    }\n\n    /**\n     * @dev Deprecated. This function has issues similar to the ones found in\n     * {IERC20-approve}, and its usage is discouraged.\n     *\n     * Whenever possible, use {safeIncreaseAllowance} and\n     * {safeDecreaseAllowance} instead.\n     */\n    function safeApprove(\n        IERC20 token,\n        address spender,\n        uint256 value\n    ) internal {\n        // safeApprove should only be called when setting an initial allowance,\n        // or when resetting it to zero. To increase and decrease it, use\n        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\n        require(\n            (value == 0) || (token.allowance(address(this), spender) == 0),\n            \"SafeERC20: approve from non-zero to non-zero allowance\"\n        );\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\n    }\n\n    function safeIncreaseAllowance(\n        IERC20 token,\n        address spender,\n        uint256 value\n    ) internal {\n        uint256 newAllowance = token.allowance(address(this), spender) + value;\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\n    }\n\n    function safeDecreaseAllowance(\n        IERC20 token,\n        address spender,\n        uint256 value\n    ) internal {\n        unchecked {\n            uint256 oldAllowance = token.allowance(address(this), spender);\n            require(oldAllowance >= value, \"SafeERC20: decreased allowance below zero\");\n            uint256 newAllowance = oldAllowance - value;\n            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\n        }\n    }\n\n    function safePermit(\n        IERC20Permit token,\n        address owner,\n        address spender,\n        uint256 value,\n        uint256 deadline,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) internal {\n        uint256 nonceBefore = token.nonces(owner);\n        token.permit(owner, spender, value, deadline, v, r, s);\n        uint256 nonceAfter = token.nonces(owner);\n        require(nonceAfter == nonceBefore + 1, \"SafeERC20: permit did not succeed\");\n    }\n\n    /**\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\n     * @param token The token targeted by the call.\n     * @param data The call data (encoded using abi.encode or one of its variants).\n     */\n    function _callOptionalReturn(IERC20 token, bytes memory data) private {\n        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n        // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that\n        // the target address contains contract code and also asserts for success in the low-level call.\n\n        bytes memory returndata = address(token).functionCall(data, \"SafeERC20: low-level call failed\");\n        if (returndata.length > 0) {\n            // Return data is optional\n            require(abi.decode(returndata, (bool)), \"SafeERC20: ERC20 operation did not succeed\");\n        }\n    }\n}\n"},"@openzeppelin/contracts/access/Ownable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n    address private _owner;\n\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n    /**\n     * @dev Initializes the contract setting the deployer as the initial owner.\n     */\n    constructor() {\n        _transferOwnership(_msgSender());\n    }\n\n    /**\n     * @dev Throws if called by any account other than the owner.\n     */\n    modifier onlyOwner() {\n        _checkOwner();\n        _;\n    }\n\n    /**\n     * @dev Returns the address of the current owner.\n     */\n    function owner() public view virtual returns (address) {\n        return _owner;\n    }\n\n    /**\n     * @dev Throws if the sender is not the owner.\n     */\n    function _checkOwner() internal view virtual {\n        require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n    }\n\n    /**\n     * @dev Leaves the contract without owner. It will not be possible to call\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\n     *\n     * NOTE: Renouncing ownership will leave the contract without an owner,\n     * thereby removing any functionality that is only available to the owner.\n     */\n    function renounceOwnership() public virtual onlyOwner {\n        _transferOwnership(address(0));\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Can only be called by the current owner.\n     */\n    function transferOwnership(address newOwner) public virtual onlyOwner {\n        require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n        _transferOwnership(newOwner);\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Internal function without access restriction.\n     */\n    function _transferOwnership(address newOwner) internal virtual {\n        address oldOwner = _owner;\n        _owner = newOwner;\n        emit OwnershipTransferred(oldOwner, newOwner);\n    }\n}\n"},"@openzeppelin/contracts/utils/Context.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n    function _msgSender() internal view virtual returns (address) {\n        return msg.sender;\n    }\n\n    function _msgData() internal view virtual returns (bytes calldata) {\n        return msg.data;\n    }\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n    /**\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\n     * another (`to`).\n     *\n     * Note that `value` may be zero.\n     */\n    event Transfer(address indexed from, address indexed to, uint256 value);\n\n    /**\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n     * a call to {approve}. `value` is the new allowance.\n     */\n    event Approval(address indexed owner, address indexed spender, uint256 value);\n\n    /**\n     * @dev Returns the amount of tokens in existence.\n     */\n    function totalSupply() external view returns (uint256);\n\n    /**\n     * @dev Returns the amount of tokens owned by `account`.\n     */\n    function balanceOf(address account) external view returns (uint256);\n\n    /**\n     * @dev Moves `amount` tokens from the caller's account to `to`.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transfer(address to, uint256 amount) external returns (bool);\n\n    /**\n     * @dev Returns the remaining number of tokens that `spender` will be\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\n     * zero by default.\n     *\n     * This value changes when {approve} or {transferFrom} are called.\n     */\n    function allowance(address owner, address spender) external view returns (uint256);\n\n    /**\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\n     * that someone may use both the old and the new allowance by unfortunate\n     * transaction ordering. One possible solution to mitigate this race\n     * condition is to first reduce the spender's allowance to 0 and set the\n     * desired value afterwards:\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n     *\n     * Emits an {Approval} event.\n     */\n    function approve(address spender, uint256 amount) external returns (bool);\n\n    /**\n     * @dev Moves `amount` tokens from `from` to `to` using the\n     * allowance mechanism. `amount` is then deducted from the caller's\n     * allowance.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transferFrom(\n        address from,\n        address to,\n        uint256 amount\n    ) external returns (bool);\n}\n"},"@openzeppelin/contracts/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n    /**\n     * @dev Returns true if `account` is a contract.\n     *\n     * [IMPORTANT]\n     * ====\n     * It is unsafe to assume that an address for which this function returns\n     * false is an externally-owned account (EOA) and not a contract.\n     *\n     * Among others, `isContract` will return false for the following\n     * types of addresses:\n     *\n     *  - an externally-owned account\n     *  - a contract in construction\n     *  - an address where a contract will be created\n     *  - an address where a contract lived, but was destroyed\n     * ====\n     *\n     * [IMPORTANT]\n     * ====\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\n     *\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n     * constructor.\n     * ====\n     */\n    function isContract(address account) internal view returns (bool) {\n        // This method relies on extcodesize/address.code.length, which returns 0\n        // for contracts in construction, since the code is only stored at the end\n        // of the constructor execution.\n\n        return account.code.length > 0;\n    }\n\n    /**\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n     * `recipient`, forwarding all available gas and reverting on errors.\n     *\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\n     * imposed by `transfer`, making them unable to receive funds via\n     * `transfer`. {sendValue} removes this limitation.\n     *\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n     *\n     * IMPORTANT: because control is transferred to `recipient`, care must be\n     * taken to not create reentrancy vulnerabilities. Consider using\n     * {ReentrancyGuard} or the\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n     */\n    function sendValue(address payable recipient, uint256 amount) internal {\n        require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n        (bool success, ) = recipient.call{value: amount}(\"\");\n        require(success, \"Address: unable to send value, recipient may have reverted\");\n    }\n\n    /**\n     * @dev Performs a Solidity function call using a low level `call`. A\n     * plain `call` is an unsafe replacement for a function call: use this\n     * function instead.\n     *\n     * If `target` reverts with a revert reason, it is bubbled up by this\n     * function (like regular Solidity function calls).\n     *\n     * Returns the raw returned data. To convert to the expected return value,\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n     *\n     * Requirements:\n     *\n     * - `target` must be a contract.\n     * - calling `target` with `data` must not revert.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionCall(target, data, \"Address: low-level call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n     * `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, 0, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but also transferring `value` wei to `target`.\n     *\n     * Requirements:\n     *\n     * - the calling contract must have an ETH balance of at least `value`.\n     * - the called Solidity function must be `payable`.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(\n        address target,\n        bytes memory data,\n        uint256 value\n    ) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(\n        address target,\n        bytes memory data,\n        uint256 value,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        require(address(this).balance >= value, \"Address: insufficient balance for call\");\n        require(isContract(target), \"Address: call to non-contract\");\n\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\n        return verifyCallResult(success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n        return functionStaticCall(target, data, \"Address: low-level static call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal view returns (bytes memory) {\n        require(isContract(target), \"Address: static call to non-contract\");\n\n        (bool success, bytes memory returndata) = target.staticcall(data);\n        return verifyCallResult(success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        require(isContract(target), \"Address: delegate call to non-contract\");\n\n        (bool success, bytes memory returndata) = target.delegatecall(data);\n        return verifyCallResult(success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n     * revert reason using the provided one.\n     *\n     * _Available since v4.3._\n     */\n    function verifyCallResult(\n        bool success,\n        bytes memory returndata,\n        string memory errorMessage\n    ) internal pure returns (bytes memory) {\n        if (success) {\n            return returndata;\n        } else {\n            // Look for revert reason and bubble it up if present\n            if (returndata.length > 0) {\n                // The easiest way to bubble the revert reason is using memory via assembly\n                /// @solidity memory-safe-assembly\n                assembly {\n                    let returndata_size := mload(returndata)\n                    revert(add(32, returndata), returndata_size)\n                }\n            } else {\n                revert(errorMessage);\n            }\n        }\n    }\n}\n"},"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/draft-IERC20Permit.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n *\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\n * need to send a transaction, and thus is not required to hold Ether at all.\n */\ninterface IERC20Permit {\n    /**\n     * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\n     * given ``owner``'s signed approval.\n     *\n     * IMPORTANT: The same issues {IERC20-approve} has related to transaction\n     * ordering also apply here.\n     *\n     * Emits an {Approval} event.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     * - `deadline` must be a timestamp in the future.\n     * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n     * over the EIP712-formatted function arguments.\n     * - the signature must use ``owner``'s current nonce (see {nonces}).\n     *\n     * For more information on the signature format, see the\n     * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n     * section].\n     */\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    ) external;\n\n    /**\n     * @dev Returns the current nonce for `owner`. This value must be\n     * included whenever a signature is generated for {permit}.\n     *\n     * Every successful call to {permit} increases ``owner``'s nonce by one. This\n     * prevents a signature from being used multiple times.\n     */\n    function nonces(address owner) external view returns (uint256);\n\n    /**\n     * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\n     */\n    // solhint-disable-next-line func-name-mixedcase\n    function DOMAIN_SEPARATOR() external view returns (bytes32);\n}\n"},"contracts/interfaces/IEpoch.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\ninterface IEpoch {\n  function callable() external view returns (bool);\n\n  function getLastEpoch() external view returns (uint256);\n\n  function getCurrentEpoch() external view returns (uint256);\n\n  function getNextEpoch() external view returns (uint256);\n\n  function nextEpochPoint() external view returns (uint256);\n\n  function getPeriod() external view returns (uint256);\n\n  function getStartTime() external view returns (uint256);\n}\n"},"@openzeppelin/contracts/utils/math/Math.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.0) (utils/math/Math.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary Math {\n    enum Rounding {\n        Down, // Toward negative infinity\n        Up, // Toward infinity\n        Zero // Toward zero\n    }\n\n    /**\n     * @dev Returns the largest of two numbers.\n     */\n    function max(uint256 a, uint256 b) internal pure returns (uint256) {\n        return a >= b ? a : b;\n    }\n\n    /**\n     * @dev Returns the smallest of two numbers.\n     */\n    function min(uint256 a, uint256 b) internal pure returns (uint256) {\n        return a < b ? a : b;\n    }\n\n    /**\n     * @dev Returns the average of two numbers. The result is rounded towards\n     * zero.\n     */\n    function average(uint256 a, uint256 b) internal pure returns (uint256) {\n        // (a + b) / 2 can overflow.\n        return (a & b) + (a ^ b) / 2;\n    }\n\n    /**\n     * @dev Returns the ceiling of the division of two numbers.\n     *\n     * This differs from standard division with `/` in that it rounds up instead\n     * of rounding down.\n     */\n    function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n        // (a + b - 1) / b can overflow on addition, so we distribute.\n        return a == 0 ? 0 : (a - 1) / b + 1;\n    }\n\n    /**\n     * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n     * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n     * with further edits by Uniswap Labs also under MIT license.\n     */\n    function mulDiv(\n        uint256 x,\n        uint256 y,\n        uint256 denominator\n    ) internal pure returns (uint256 result) {\n        unchecked {\n            // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\n            // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n            // variables such that product = prod1 * 2^256 + prod0.\n            uint256 prod0; // Least significant 256 bits of the product\n            uint256 prod1; // Most significant 256 bits of the product\n            assembly {\n                let mm := mulmod(x, y, not(0))\n                prod0 := mul(x, y)\n                prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n            }\n\n            // Handle non-overflow cases, 256 by 256 division.\n            if (prod1 == 0) {\n                return prod0 / denominator;\n            }\n\n            // Make sure the result is less than 2^256. Also prevents denominator == 0.\n            require(denominator > prod1);\n\n            ///////////////////////////////////////////////\n            // 512 by 256 division.\n            ///////////////////////////////////////////////\n\n            // Make division exact by subtracting the remainder from [prod1 prod0].\n            uint256 remainder;\n            assembly {\n                // Compute remainder using mulmod.\n                remainder := mulmod(x, y, denominator)\n\n                // Subtract 256 bit number from 512 bit number.\n                prod1 := sub(prod1, gt(remainder, prod0))\n                prod0 := sub(prod0, remainder)\n            }\n\n            // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\n            // See https://cs.stackexchange.com/q/138556/92363.\n\n            // Does not overflow because the denominator cannot be zero at this stage in the function.\n            uint256 twos = denominator & (~denominator + 1);\n            assembly {\n                // Divide denominator by twos.\n                denominator := div(denominator, twos)\n\n                // Divide [prod1 prod0] by twos.\n                prod0 := div(prod0, twos)\n\n                // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\n                twos := add(div(sub(0, twos), twos), 1)\n            }\n\n            // Shift in bits from prod1 into prod0.\n            prod0 |= prod1 * twos;\n\n            // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\n            // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\n            // four bits. That is, denominator * inv = 1 mod 2^4.\n            uint256 inverse = (3 * denominator) ^ 2;\n\n            // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\n            // in modular arithmetic, doubling the correct bits in each step.\n            inverse *= 2 - denominator * inverse; // inverse mod 2^8\n            inverse *= 2 - denominator * inverse; // inverse mod 2^16\n            inverse *= 2 - denominator * inverse; // inverse mod 2^32\n            inverse *= 2 - denominator * inverse; // inverse mod 2^64\n            inverse *= 2 - denominator * inverse; // inverse mod 2^128\n            inverse *= 2 - denominator * inverse; // inverse mod 2^256\n\n            // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n            // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\n            // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\n            // is no longer required.\n            result = prod0 * inverse;\n            return result;\n        }\n    }\n\n    /**\n     * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\n     */\n    function mulDiv(\n        uint256 x,\n        uint256 y,\n        uint256 denominator,\n        Rounding rounding\n    ) internal pure returns (uint256) {\n        uint256 result = mulDiv(x, y, denominator);\n        if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\n            result += 1;\n        }\n        return result;\n    }\n\n    /**\n     * @dev Returns the square root of a number. It the number is not a perfect square, the value is rounded down.\n     *\n     * Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11).\n     */\n    function sqrt(uint256 a) internal pure returns (uint256) {\n        if (a == 0) {\n            return 0;\n        }\n\n        // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\n        // We know that the \"msb\" (most significant bit) of our target number `a` is a power of 2 such that we have\n        // `msb(a) <= a < 2*msb(a)`.\n        // We also know that `k`, the position of the most significant bit, is such that `msb(a) = 2**k`.\n        // This gives `2**k < a <= 2**(k+1)` → `2**(k/2) <= sqrt(a) < 2 ** (k/2+1)`.\n        // Using an algorithm similar to the msb conmputation, we are able to compute `result = 2**(k/2)` which is a\n        // good first aproximation of `sqrt(a)` with at least 1 correct bit.\n        uint256 result = 1;\n        uint256 x = a;\n        if (x >> 128 > 0) {\n            x >>= 128;\n            result <<= 64;\n        }\n        if (x >> 64 > 0) {\n            x >>= 64;\n            result <<= 32;\n        }\n        if (x >> 32 > 0) {\n            x >>= 32;\n            result <<= 16;\n        }\n        if (x >> 16 > 0) {\n            x >>= 16;\n            result <<= 8;\n        }\n        if (x >> 8 > 0) {\n            x >>= 8;\n            result <<= 4;\n        }\n        if (x >> 4 > 0) {\n            x >>= 4;\n            result <<= 2;\n        }\n        if (x >> 2 > 0) {\n            result <<= 1;\n        }\n\n        // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\n        // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\n        // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\n        // into the expected uint128 result.\n        unchecked {\n            result = (result + a / result) >> 1;\n            result = (result + a / result) >> 1;\n            result = (result + a / result) >> 1;\n            result = (result + a / result) >> 1;\n            result = (result + a / result) >> 1;\n            result = (result + a / result) >> 1;\n            result = (result + a / result) >> 1;\n            return min(result, a / result);\n        }\n    }\n\n    /**\n     * @notice Calculates sqrt(a), following the selected rounding direction.\n     */\n    function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\n        uint256 result = sqrt(a);\n        if (rounding == Rounding.Up && result * result < a) {\n            result += 1;\n        }\n        return result;\n    }\n}\n"},"@openzeppelin/contracts/utils/math/SafeMath.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol)\n\npragma solidity ^0.8.0;\n\n// CAUTION\n// This version of SafeMath should only be used with Solidity 0.8 or later,\n// because it relies on the compiler's built in overflow checks.\n\n/**\n * @dev Wrappers over Solidity's arithmetic operations.\n *\n * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler\n * now has built in overflow checking.\n */\nlibrary SafeMath {\n    /**\n     * @dev Returns the addition of two unsigned integers, with an overflow flag.\n     *\n     * _Available since v3.4._\n     */\n    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n        unchecked {\n            uint256 c = a + b;\n            if (c < a) return (false, 0);\n            return (true, c);\n        }\n    }\n\n    /**\n     * @dev Returns the subtraction of two unsigned integers, with an overflow flag.\n     *\n     * _Available since v3.4._\n     */\n    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n        unchecked {\n            if (b > a) return (false, 0);\n            return (true, a - b);\n        }\n    }\n\n    /**\n     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n     *\n     * _Available since v3.4._\n     */\n    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n        unchecked {\n            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n            // benefit is lost if 'b' is also tested.\n            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\n            if (a == 0) return (true, 0);\n            uint256 c = a * b;\n            if (c / a != b) return (false, 0);\n            return (true, c);\n        }\n    }\n\n    /**\n     * @dev Returns the division of two unsigned integers, with a division by zero flag.\n     *\n     * _Available since v3.4._\n     */\n    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n        unchecked {\n            if (b == 0) return (false, 0);\n            return (true, a / b);\n        }\n    }\n\n    /**\n     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n     *\n     * _Available since v3.4._\n     */\n    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n        unchecked {\n            if (b == 0) return (false, 0);\n            return (true, a % b);\n        }\n    }\n\n    /**\n     * @dev Returns the addition of two unsigned integers, reverting on\n     * overflow.\n     *\n     * Counterpart to Solidity's `+` operator.\n     *\n     * Requirements:\n     *\n     * - Addition cannot overflow.\n     */\n    function add(uint256 a, uint256 b) internal pure returns (uint256) {\n        return a + b;\n    }\n\n    /**\n     * @dev Returns the subtraction of two unsigned integers, reverting on\n     * overflow (when the result is negative).\n     *\n     * Counterpart to Solidity's `-` operator.\n     *\n     * Requirements:\n     *\n     * - Subtraction cannot overflow.\n     */\n    function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n        return a - b;\n    }\n\n    /**\n     * @dev Returns the multiplication of two unsigned integers, reverting on\n     * overflow.\n     *\n     * Counterpart to Solidity's `*` operator.\n     *\n     * Requirements:\n     *\n     * - Multiplication cannot overflow.\n     */\n    function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n        return a * b;\n    }\n\n    /**\n     * @dev Returns the integer division of two unsigned integers, reverting on\n     * division by zero. The result is rounded towards zero.\n     *\n     * Counterpart to Solidity's `/` operator.\n     *\n     * Requirements:\n     *\n     * - The divisor cannot be zero.\n     */\n    function div(uint256 a, uint256 b) internal pure returns (uint256) {\n        return a / b;\n    }\n\n    /**\n     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n     * reverting when dividing by zero.\n     *\n     * Counterpart to Solidity's `%` operator. This function uses a `revert`\n     * opcode (which leaves remaining gas untouched) while Solidity uses an\n     * invalid opcode to revert (consuming all remaining gas).\n     *\n     * Requirements:\n     *\n     * - The divisor cannot be zero.\n     */\n    function mod(uint256 a, uint256 b) internal pure returns (uint256) {\n        return a % b;\n    }\n\n    /**\n     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n     * overflow (when the result is negative).\n     *\n     * CAUTION: This function is deprecated because it requires allocating memory for the error\n     * message unnecessarily. For custom revert reasons use {trySub}.\n     *\n     * Counterpart to Solidity's `-` operator.\n     *\n     * Requirements:\n     *\n     * - Subtraction cannot overflow.\n     */\n    function sub(\n        uint256 a,\n        uint256 b,\n        string memory errorMessage\n    ) internal pure returns (uint256) {\n        unchecked {\n            require(b <= a, errorMessage);\n            return a - b;\n        }\n    }\n\n    /**\n     * @dev Returns the integer division of two unsigned integers, reverting with custom message on\n     * division by zero. The result is rounded towards zero.\n     *\n     * Counterpart to Solidity's `/` operator. Note: this function uses a\n     * `revert` opcode (which leaves remaining gas untouched) while Solidity\n     * uses an invalid opcode to revert (consuming all remaining gas).\n     *\n     * Requirements:\n     *\n     * - The divisor cannot be zero.\n     */\n    function div(\n        uint256 a,\n        uint256 b,\n        string memory errorMessage\n    ) internal pure returns (uint256) {\n        unchecked {\n            require(b > 0, errorMessage);\n            return a / b;\n        }\n    }\n\n    /**\n     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n     * reverting with custom message when dividing by zero.\n     *\n     * CAUTION: This function is deprecated because it requires allocating memory for the error\n     * message unnecessarily. For custom revert reasons use {tryMod}.\n     *\n     * Counterpart to Solidity's `%` operator. This function uses a `revert`\n     * opcode (which leaves remaining gas untouched) while Solidity uses an\n     * invalid opcode to revert (consuming all remaining gas).\n     *\n     * Requirements:\n     *\n     * - The divisor cannot be zero.\n     */\n    function mod(\n        uint256 a,\n        uint256 b,\n        string memory errorMessage\n    ) internal pure returns (uint256) {\n        unchecked {\n            require(b > 0, errorMessage);\n            return a % b;\n        }\n    }\n}\n"}},"settings":{"optimizer":{"enabled":true,"runs":100},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}}}},"output":{"sources":{"@openzeppelin/contracts/access/Ownable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","exportedSymbols":{"Context":[824],"Ownable":[112]},"id":113,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"102:23:0"},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../utils/Context.sol","id":2,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":113,"sourceUnit":825,"src":"127:30:0","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":4,"name":"Context","nodeType":"IdentifierPath","referencedDeclaration":824,"src":"683:7:0"},"id":5,"nodeType":"InheritanceSpecifier","src":"683:7:0"}],"contractDependencies":[],"contractKind":"contract","documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"159:494:0","text":" @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner."},"fullyImplemented":true,"id":112,"linearizedBaseContracts":[112,824],"name":"Ownable","nameLocation":"672:7:0","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":7,"mutability":"mutable","name":"_owner","nameLocation":"713:6:0","nodeType":"VariableDeclaration","scope":112,"src":"697:22:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6,"name":"address","nodeType":"ElementaryTypeName","src":"697:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"anonymous":false,"id":13,"name":"OwnershipTransferred","nameLocation":"732:20:0","nodeType":"EventDefinition","parameters":{"id":12,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"769:13:0","nodeType":"VariableDeclaration","scope":13,"src":"753:29:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8,"name":"address","nodeType":"ElementaryTypeName","src":"753:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"800:8:0","nodeType":"VariableDeclaration","scope":13,"src":"784:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10,"name":"address","nodeType":"ElementaryTypeName","src":"784:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"752:57:0"},"src":"726:84:0"},{"body":{"id":22,"nodeType":"Block","src":"926:49:0","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":18,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":814,"src":"955:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":19,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"955:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":17,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111,"src":"936:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":20,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"936:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":21,"nodeType":"ExpressionStatement","src":"936:32:0"}]},"documentation":{"id":14,"nodeType":"StructuredDocumentation","src":"816:91:0","text":" @dev Initializes the contract setting the deployer as the initial owner."},"id":23,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":15,"nodeType":"ParameterList","parameters":[],"src":"923:2:0"},"returnParameters":{"id":16,"nodeType":"ParameterList","parameters":[],"src":"926:0:0"},"scope":112,"src":"912:63:0","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":30,"nodeType":"Block","src":"1084:41:0","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":26,"name":"_checkOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54,"src":"1094:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":27,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1094:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":28,"nodeType":"ExpressionStatement","src":"1094:13:0"},{"id":29,"nodeType":"PlaceholderStatement","src":"1117:1:0"}]},"documentation":{"id":24,"nodeType":"StructuredDocumentation","src":"981:77:0","text":" @dev Throws if called by any account other than the owner."},"id":31,"name":"onlyOwner","nameLocation":"1072:9:0","nodeType":"ModifierDefinition","parameters":{"id":25,"nodeType":"ParameterList","parameters":[],"src":"1081:2:0"},"src":"1063:62:0","virtual":false,"visibility":"internal"},{"body":{"id":39,"nodeType":"Block","src":"1256:30:0","statements":[{"expression":{"id":37,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7,"src":"1273:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":36,"id":38,"nodeType":"Return","src":"1266:13:0"}]},"documentation":{"id":32,"nodeType":"StructuredDocumentation","src":"1131:65:0","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","id":40,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"1210:5:0","nodeType":"FunctionDefinition","parameters":{"id":33,"nodeType":"ParameterList","parameters":[],"src":"1215:2:0"},"returnParameters":{"id":36,"nodeType":"ParameterList","parameters":[{"constant":false,"id":35,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":40,"src":"1247:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":34,"name":"address","nodeType":"ElementaryTypeName","src":"1247:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1246:9:0"},"scope":112,"src":"1201:85:0","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":53,"nodeType":"Block","src":"1404:85:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":49,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":45,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"1422:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":46,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1422:7:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":47,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":814,"src":"1433:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":48,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1433:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1422:23:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572","id":50,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1447:34:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""},"value":"Ownable: caller is not the owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe","typeString":"literal_string \"Ownable: caller is not the owner\""}],"id":44,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1414:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":51,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1414:68:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52,"nodeType":"ExpressionStatement","src":"1414:68:0"}]},"documentation":{"id":41,"nodeType":"StructuredDocumentation","src":"1292:62:0","text":" @dev Throws if the sender is not the owner."},"id":54,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwner","nameLocation":"1368:11:0","nodeType":"FunctionDefinition","parameters":{"id":42,"nodeType":"ParameterList","parameters":[],"src":"1379:2:0"},"returnParameters":{"id":43,"nodeType":"ParameterList","parameters":[],"src":"1404:0:0"},"scope":112,"src":"1359:130:0","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":67,"nodeType":"Block","src":"1885:47:0","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":63,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1922: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":62,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1914:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":61,"name":"address","nodeType":"ElementaryTypeName","src":"1914:7:0","typeDescriptions":{}}},"id":64,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1914:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":60,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111,"src":"1895:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":65,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1895:30:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":66,"nodeType":"ExpressionStatement","src":"1895:30:0"}]},"documentation":{"id":55,"nodeType":"StructuredDocumentation","src":"1495:331:0","text":" @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions anymore. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby removing any functionality that is only available to the owner."},"functionSelector":"715018a6","id":68,"implemented":true,"kind":"function","modifiers":[{"id":58,"kind":"modifierInvocation","modifierName":{"id":57,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":31,"src":"1875:9:0"},"nodeType":"ModifierInvocation","src":"1875:9:0"}],"name":"renounceOwnership","nameLocation":"1840:17:0","nodeType":"FunctionDefinition","parameters":{"id":56,"nodeType":"ParameterList","parameters":[],"src":"1857:2:0"},"returnParameters":{"id":59,"nodeType":"ParameterList","parameters":[],"src":"1885:0:0"},"scope":112,"src":"1831:101:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":90,"nodeType":"Block","src":"2151:128:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":82,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"2169:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":80,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2189: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":79,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2181:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":78,"name":"address","nodeType":"ElementaryTypeName","src":"2181:7:0","typeDescriptions":{}}},"id":81,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2181:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2169:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373","id":83,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2193:40:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""},"value":"Ownable: new owner is the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe","typeString":"literal_string \"Ownable: new owner is the zero address\""}],"id":76,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2161:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":84,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2161:73:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":85,"nodeType":"ExpressionStatement","src":"2161:73:0"},{"expression":{"arguments":[{"id":87,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":71,"src":"2263:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":86,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111,"src":"2244:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":88,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2244:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":89,"nodeType":"ExpressionStatement","src":"2244:28:0"}]},"documentation":{"id":69,"nodeType":"StructuredDocumentation","src":"1938:138:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","id":91,"implemented":true,"kind":"function","modifiers":[{"id":74,"kind":"modifierInvocation","modifierName":{"id":73,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":31,"src":"2141:9:0"},"nodeType":"ModifierInvocation","src":"2141:9:0"}],"name":"transferOwnership","nameLocation":"2090:17:0","nodeType":"FunctionDefinition","parameters":{"id":72,"nodeType":"ParameterList","parameters":[{"constant":false,"id":71,"mutability":"mutable","name":"newOwner","nameLocation":"2116:8:0","nodeType":"VariableDeclaration","scope":91,"src":"2108:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":70,"name":"address","nodeType":"ElementaryTypeName","src":"2108:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2107:18:0"},"returnParameters":{"id":75,"nodeType":"ParameterList","parameters":[],"src":"2151:0:0"},"scope":112,"src":"2081:198:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":110,"nodeType":"Block","src":"2496:124:0","statements":[{"assignments":[98],"declarations":[{"constant":false,"id":98,"mutability":"mutable","name":"oldOwner","nameLocation":"2514:8:0","nodeType":"VariableDeclaration","scope":110,"src":"2506:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":97,"name":"address","nodeType":"ElementaryTypeName","src":"2506:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":100,"initialValue":{"id":99,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7,"src":"2525:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2506:25:0"},{"expression":{"id":103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":101,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7,"src":"2541:6:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":102,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":94,"src":"2550:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2541:17:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":104,"nodeType":"ExpressionStatement","src":"2541:17:0"},{"eventCall":{"arguments":[{"id":106,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":98,"src":"2594:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":107,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":94,"src":"2604:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":105,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13,"src":"2573:20:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2573:40:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":109,"nodeType":"EmitStatement","src":"2568:45:0"}]},"documentation":{"id":92,"nodeType":"StructuredDocumentation","src":"2285:143:0","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."},"id":111,"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"2442:18:0","nodeType":"FunctionDefinition","parameters":{"id":95,"nodeType":"ParameterList","parameters":[{"constant":false,"id":94,"mutability":"mutable","name":"newOwner","nameLocation":"2469:8:0","nodeType":"VariableDeclaration","scope":111,"src":"2461:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":93,"name":"address","nodeType":"ElementaryTypeName","src":"2461:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2460:18:0"},"returnParameters":{"id":96,"nodeType":"ParameterList","parameters":[],"src":"2496:0:0"},"scope":112,"src":"2433:187:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":113,"src":"654:1968:0","usedErrors":[]}],"src":"102:2521:0"},"id":0},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[190]},"id":191,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":114,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"106:23:1"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":115,"nodeType":"StructuredDocumentation","src":"131:70:1","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":190,"linearizedBaseContracts":[190],"name":"IERC20","nameLocation":"212:6:1","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":116,"nodeType":"StructuredDocumentation","src":"225:158:1","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"id":124,"name":"Transfer","nameLocation":"394:8:1","nodeType":"EventDefinition","parameters":{"id":123,"nodeType":"ParameterList","parameters":[{"constant":false,"id":118,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"419:4:1","nodeType":"VariableDeclaration","scope":124,"src":"403:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":117,"name":"address","nodeType":"ElementaryTypeName","src":"403:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"441:2:1","nodeType":"VariableDeclaration","scope":124,"src":"425:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":119,"name":"address","nodeType":"ElementaryTypeName","src":"425:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":122,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"453:5:1","nodeType":"VariableDeclaration","scope":124,"src":"445:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":121,"name":"uint256","nodeType":"ElementaryTypeName","src":"445:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"402:57:1"},"src":"388:72:1"},{"anonymous":false,"documentation":{"id":125,"nodeType":"StructuredDocumentation","src":"466:148:1","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"id":133,"name":"Approval","nameLocation":"625:8:1","nodeType":"EventDefinition","parameters":{"id":132,"nodeType":"ParameterList","parameters":[{"constant":false,"id":127,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"650:5:1","nodeType":"VariableDeclaration","scope":133,"src":"634:21:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":126,"name":"address","nodeType":"ElementaryTypeName","src":"634:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":129,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"673:7:1","nodeType":"VariableDeclaration","scope":133,"src":"657:23:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":128,"name":"address","nodeType":"ElementaryTypeName","src":"657:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":131,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"690:5:1","nodeType":"VariableDeclaration","scope":133,"src":"682:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":130,"name":"uint256","nodeType":"ElementaryTypeName","src":"682:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"633:63:1"},"src":"619:78:1"},{"documentation":{"id":134,"nodeType":"StructuredDocumentation","src":"703:66:1","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":139,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"783:11:1","nodeType":"FunctionDefinition","parameters":{"id":135,"nodeType":"ParameterList","parameters":[],"src":"794:2:1"},"returnParameters":{"id":138,"nodeType":"ParameterList","parameters":[{"constant":false,"id":137,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":139,"src":"820:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":136,"name":"uint256","nodeType":"ElementaryTypeName","src":"820:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"819:9:1"},"scope":190,"src":"774:55:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":140,"nodeType":"StructuredDocumentation","src":"835:72:1","text":" @dev Returns the amount of tokens owned by `account`."},"functionSelector":"70a08231","id":147,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"921:9:1","nodeType":"FunctionDefinition","parameters":{"id":143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":142,"mutability":"mutable","name":"account","nameLocation":"939:7:1","nodeType":"VariableDeclaration","scope":147,"src":"931:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":141,"name":"address","nodeType":"ElementaryTypeName","src":"931:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"930:17:1"},"returnParameters":{"id":146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":145,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":147,"src":"971:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":144,"name":"uint256","nodeType":"ElementaryTypeName","src":"971:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"970:9:1"},"scope":190,"src":"912:68:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":148,"nodeType":"StructuredDocumentation","src":"986:202:1","text":" @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":157,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1202:8:1","nodeType":"FunctionDefinition","parameters":{"id":153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":150,"mutability":"mutable","name":"to","nameLocation":"1219:2:1","nodeType":"VariableDeclaration","scope":157,"src":"1211:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":149,"name":"address","nodeType":"ElementaryTypeName","src":"1211:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":152,"mutability":"mutable","name":"amount","nameLocation":"1231:6:1","nodeType":"VariableDeclaration","scope":157,"src":"1223:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":151,"name":"uint256","nodeType":"ElementaryTypeName","src":"1223:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1210:28:1"},"returnParameters":{"id":156,"nodeType":"ParameterList","parameters":[{"constant":false,"id":155,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":157,"src":"1257:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":154,"name":"bool","nodeType":"ElementaryTypeName","src":"1257:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1256:6:1"},"scope":190,"src":"1193:70:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":158,"nodeType":"StructuredDocumentation","src":"1269:264:1","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":167,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1547:9:1","nodeType":"FunctionDefinition","parameters":{"id":163,"nodeType":"ParameterList","parameters":[{"constant":false,"id":160,"mutability":"mutable","name":"owner","nameLocation":"1565:5:1","nodeType":"VariableDeclaration","scope":167,"src":"1557:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":159,"name":"address","nodeType":"ElementaryTypeName","src":"1557:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":162,"mutability":"mutable","name":"spender","nameLocation":"1580:7:1","nodeType":"VariableDeclaration","scope":167,"src":"1572:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":161,"name":"address","nodeType":"ElementaryTypeName","src":"1572:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1556:32:1"},"returnParameters":{"id":166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":165,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":167,"src":"1612:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":164,"name":"uint256","nodeType":"ElementaryTypeName","src":"1612:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1611:9:1"},"scope":190,"src":"1538:83:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":168,"nodeType":"StructuredDocumentation","src":"1627:642:1","text":" @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":177,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2283:7:1","nodeType":"FunctionDefinition","parameters":{"id":173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":170,"mutability":"mutable","name":"spender","nameLocation":"2299:7:1","nodeType":"VariableDeclaration","scope":177,"src":"2291:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":169,"name":"address","nodeType":"ElementaryTypeName","src":"2291:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":172,"mutability":"mutable","name":"amount","nameLocation":"2316:6:1","nodeType":"VariableDeclaration","scope":177,"src":"2308:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":171,"name":"uint256","nodeType":"ElementaryTypeName","src":"2308:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2290:33:1"},"returnParameters":{"id":176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":175,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":177,"src":"2342:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":174,"name":"bool","nodeType":"ElementaryTypeName","src":"2342:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2341:6:1"},"scope":190,"src":"2274:74:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":178,"nodeType":"StructuredDocumentation","src":"2354:287:1","text":" @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":189,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2655:12:1","nodeType":"FunctionDefinition","parameters":{"id":185,"nodeType":"ParameterList","parameters":[{"constant":false,"id":180,"mutability":"mutable","name":"from","nameLocation":"2685:4:1","nodeType":"VariableDeclaration","scope":189,"src":"2677:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":179,"name":"address","nodeType":"ElementaryTypeName","src":"2677:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":182,"mutability":"mutable","name":"to","nameLocation":"2707:2:1","nodeType":"VariableDeclaration","scope":189,"src":"2699:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":181,"name":"address","nodeType":"ElementaryTypeName","src":"2699:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":184,"mutability":"mutable","name":"amount","nameLocation":"2727:6:1","nodeType":"VariableDeclaration","scope":189,"src":"2719:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":183,"name":"uint256","nodeType":"ElementaryTypeName","src":"2719:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2667:72:1"},"returnParameters":{"id":188,"nodeType":"ParameterList","parameters":[{"constant":false,"id":187,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":189,"src":"2758:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":186,"name":"bool","nodeType":"ElementaryTypeName","src":"2758:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2757:6:1"},"scope":190,"src":"2646:118:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":191,"src":"202:2564:1","usedErrors":[]}],"src":"106:2661:1"},"id":1},"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol","exportedSymbols":{"IERC20Permit":[226]},"id":227,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":192,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"114:23:2"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":193,"nodeType":"StructuredDocumentation","src":"139:480:2","text":" @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\n need to send a transaction, and thus is not required to hold Ether at all."},"fullyImplemented":false,"id":226,"linearizedBaseContracts":[226],"name":"IERC20Permit","nameLocation":"630:12:2","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":194,"nodeType":"StructuredDocumentation","src":"649:792:2","text":" @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\n given ``owner``'s signed approval.\n IMPORTANT: The same issues {IERC20-approve} has related to transaction\n ordering also apply here.\n Emits an {Approval} event.\n Requirements:\n - `spender` cannot be the zero address.\n - `deadline` must be a timestamp in the future.\n - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n over the EIP712-formatted function arguments.\n - the signature must use ``owner``'s current nonce (see {nonces}).\n For more information on the signature format, see the\n https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n section]."},"functionSelector":"d505accf","id":211,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nameLocation":"1455:6:2","nodeType":"FunctionDefinition","parameters":{"id":209,"nodeType":"ParameterList","parameters":[{"constant":false,"id":196,"mutability":"mutable","name":"owner","nameLocation":"1479:5:2","nodeType":"VariableDeclaration","scope":211,"src":"1471:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":195,"name":"address","nodeType":"ElementaryTypeName","src":"1471:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":198,"mutability":"mutable","name":"spender","nameLocation":"1502:7:2","nodeType":"VariableDeclaration","scope":211,"src":"1494:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":197,"name":"address","nodeType":"ElementaryTypeName","src":"1494:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":200,"mutability":"mutable","name":"value","nameLocation":"1527:5:2","nodeType":"VariableDeclaration","scope":211,"src":"1519:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":199,"name":"uint256","nodeType":"ElementaryTypeName","src":"1519:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":202,"mutability":"mutable","name":"deadline","nameLocation":"1550:8:2","nodeType":"VariableDeclaration","scope":211,"src":"1542:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":201,"name":"uint256","nodeType":"ElementaryTypeName","src":"1542:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":204,"mutability":"mutable","name":"v","nameLocation":"1574:1:2","nodeType":"VariableDeclaration","scope":211,"src":"1568:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":203,"name":"uint8","nodeType":"ElementaryTypeName","src":"1568:5:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":206,"mutability":"mutable","name":"r","nameLocation":"1593:1:2","nodeType":"VariableDeclaration","scope":211,"src":"1585:9:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":205,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1585:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":208,"mutability":"mutable","name":"s","nameLocation":"1612:1:2","nodeType":"VariableDeclaration","scope":211,"src":"1604:9:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":207,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1604:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1461:158:2"},"returnParameters":{"id":210,"nodeType":"ParameterList","parameters":[],"src":"1628:0:2"},"scope":226,"src":"1446:183:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":212,"nodeType":"StructuredDocumentation","src":"1635:294:2","text":" @dev Returns the current nonce for `owner`. This value must be\n included whenever a signature is generated for {permit}.\n Every successful call to {permit} increases ``owner``'s nonce by one. This\n prevents a signature from being used multiple times."},"functionSelector":"7ecebe00","id":219,"implemented":false,"kind":"function","modifiers":[],"name":"nonces","nameLocation":"1943:6:2","nodeType":"FunctionDefinition","parameters":{"id":215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":214,"mutability":"mutable","name":"owner","nameLocation":"1958:5:2","nodeType":"VariableDeclaration","scope":219,"src":"1950:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":213,"name":"address","nodeType":"ElementaryTypeName","src":"1950:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1949:15:2"},"returnParameters":{"id":218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":217,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":219,"src":"1988:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":216,"name":"uint256","nodeType":"ElementaryTypeName","src":"1988:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1987:9:2"},"scope":226,"src":"1934:63:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":220,"nodeType":"StructuredDocumentation","src":"2003:128:2","text":" @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}."},"functionSelector":"3644e515","id":225,"implemented":false,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nameLocation":"2198:16:2","nodeType":"FunctionDefinition","parameters":{"id":221,"nodeType":"ParameterList","parameters":[],"src":"2214:2:2"},"returnParameters":{"id":224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":223,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":225,"src":"2240:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":222,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2240:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2239:9:2"},"scope":226,"src":"2189:60:2","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":227,"src":"620:1631:2","usedErrors":[]}],"src":"114:2138:2"},"id":2},"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","exportedSymbols":{"Address":[802],"IERC20":[190],"IERC20Permit":[226],"SafeERC20":[507]},"id":508,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":228,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"115:23:3"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../IERC20.sol","id":229,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":508,"sourceUnit":191,"src":"140:23:3","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol","file":"../extensions/draft-IERC20Permit.sol","id":230,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":508,"sourceUnit":227,"src":"164:46:3","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"../../../utils/Address.sol","id":231,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":508,"sourceUnit":803,"src":"211:36:3","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":232,"nodeType":"StructuredDocumentation","src":"249:457:3","text":" @title SafeERC20\n @dev Wrappers around ERC20 operations that throw on failure (when the token\n contract returns false). Tokens that return no value (and instead revert or\n throw on failure) are also supported, non-reverting calls are assumed to be\n successful.\n To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n which allows you to call the safe operations as `token.safeTransfer(...)`, etc."},"fullyImplemented":true,"id":507,"linearizedBaseContracts":[507],"name":"SafeERC20","nameLocation":"715:9:3","nodeType":"ContractDefinition","nodes":[{"id":235,"libraryName":{"id":233,"name":"Address","nodeType":"IdentifierPath","referencedDeclaration":802,"src":"737:7:3"},"nodeType":"UsingForDirective","src":"731:26:3","typeName":{"id":234,"name":"address","nodeType":"ElementaryTypeName","src":"749:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"body":{"id":257,"nodeType":"Block","src":"865:103:3","statements":[{"expression":{"arguments":[{"id":246,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":238,"src":"895:5:3","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}},{"arguments":[{"expression":{"expression":{"id":249,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":238,"src":"925:5:3","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}},"id":250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":157,"src":"925:14:3","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"925:23:3","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":252,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":240,"src":"950:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":253,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":242,"src":"954:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":247,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"902:3:3","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":248,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"902:22:3","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"902:58:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":245,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"875:19:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$190_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"875:86:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":256,"nodeType":"ExpressionStatement","src":"875:86:3"}]},"id":258,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransfer","nameLocation":"772:12:3","nodeType":"FunctionDefinition","parameters":{"id":243,"nodeType":"ParameterList","parameters":[{"constant":false,"id":238,"mutability":"mutable","name":"token","nameLocation":"801:5:3","nodeType":"VariableDeclaration","scope":258,"src":"794:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"},"typeName":{"id":237,"nodeType":"UserDefinedTypeName","pathNode":{"id":236,"name":"IERC20","nodeType":"IdentifierPath","referencedDeclaration":190,"src":"794:6:3"},"referencedDeclaration":190,"src":"794:6:3","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":240,"mutability":"mutable","name":"to","nameLocation":"824:2:3","nodeType":"VariableDeclaration","scope":258,"src":"816:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":239,"name":"address","nodeType":"ElementaryTypeName","src":"816:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":242,"mutability":"mutable","name":"value","nameLocation":"844:5:3","nodeType":"VariableDeclaration","scope":258,"src":"836:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":241,"name":"uint256","nodeType":"ElementaryTypeName","src":"836:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"784:71:3"},"returnParameters":{"id":244,"nodeType":"ParameterList","parameters":[],"src":"865:0:3"},"scope":507,"src":"763:205:3","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":283,"nodeType":"Block","src":"1102:113:3","statements":[{"expression":{"arguments":[{"id":271,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":261,"src":"1132:5:3","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}},{"arguments":[{"expression":{"expression":{"id":274,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":261,"src":"1162:5:3","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}},"id":275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":189,"src":"1162:18:3","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"1162:27:3","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":277,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"1191:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":278,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":265,"src":"1197:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":279,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":267,"src":"1201:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":272,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1139:3:3","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":273,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1139:22:3","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1139:68:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":270,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"1112:19:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$190_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":281,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1112:96:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":282,"nodeType":"ExpressionStatement","src":"1112:96:3"}]},"id":284,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"983:16:3","nodeType":"FunctionDefinition","parameters":{"id":268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":261,"mutability":"mutable","name":"token","nameLocation":"1016:5:3","nodeType":"VariableDeclaration","scope":284,"src":"1009:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"},"typeName":{"id":260,"nodeType":"UserDefinedTypeName","pathNode":{"id":259,"name":"IERC20","nodeType":"IdentifierPath","referencedDeclaration":190,"src":"1009:6:3"},"referencedDeclaration":190,"src":"1009:6:3","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":263,"mutability":"mutable","name":"from","nameLocation":"1039:4:3","nodeType":"VariableDeclaration","scope":284,"src":"1031:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":262,"name":"address","nodeType":"ElementaryTypeName","src":"1031:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":265,"mutability":"mutable","name":"to","nameLocation":"1061:2:3","nodeType":"VariableDeclaration","scope":284,"src":"1053:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":264,"name":"address","nodeType":"ElementaryTypeName","src":"1053:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":267,"mutability":"mutable","name":"value","nameLocation":"1081:5:3","nodeType":"VariableDeclaration","scope":284,"src":"1073:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":266,"name":"uint256","nodeType":"ElementaryTypeName","src":"1073:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"999:93:3"},"returnParameters":{"id":269,"nodeType":"ParameterList","parameters":[],"src":"1102:0:3"},"scope":507,"src":"974:241:3","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":327,"nodeType":"Block","src":"1581:497:3","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":296,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":292,"src":"1830:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1839:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1830:10:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":299,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1829:12:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":304,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1870:4:3","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$507","typeString":"library SafeERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$507","typeString":"library SafeERC20"}],"id":303,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1862:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":302,"name":"address","nodeType":"ElementaryTypeName","src":"1862:7:3","typeDescriptions":{}}},"id":305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1862:13:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":306,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":290,"src":"1877:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":300,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":288,"src":"1846:5:3","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}},"id":301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":167,"src":"1846:15:3","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1846:39:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":308,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1889:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1846:44:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":310,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1845:46:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1829:62:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365","id":312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1905:56:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""},"value":"SafeERC20: approve from non-zero to non-zero allowance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""}],"id":295,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1808:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1808:163:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":314,"nodeType":"ExpressionStatement","src":"1808:163:3"},{"expression":{"arguments":[{"id":316,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":288,"src":"2001:5:3","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}},{"arguments":[{"expression":{"expression":{"id":319,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":288,"src":"2031:5:3","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}},"id":320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":177,"src":"2031:13:3","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"2031:22:3","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":322,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":290,"src":"2055:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":323,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":292,"src":"2064:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":317,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2008:3:3","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":318,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"2008:22:3","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2008:62:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":315,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"1981:19:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$190_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1981:90:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":326,"nodeType":"ExpressionStatement","src":"1981:90:3"}]},"documentation":{"id":285,"nodeType":"StructuredDocumentation","src":"1221:249:3","text":" @dev Deprecated. This function has issues similar to the ones found in\n {IERC20-approve}, and its usage is discouraged.\n Whenever possible, use {safeIncreaseAllowance} and\n {safeDecreaseAllowance} instead."},"id":328,"implemented":true,"kind":"function","modifiers":[],"name":"safeApprove","nameLocation":"1484:11:3","nodeType":"FunctionDefinition","parameters":{"id":293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":288,"mutability":"mutable","name":"token","nameLocation":"1512:5:3","nodeType":"VariableDeclaration","scope":328,"src":"1505:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"},"typeName":{"id":287,"nodeType":"UserDefinedTypeName","pathNode":{"id":286,"name":"IERC20","nodeType":"IdentifierPath","referencedDeclaration":190,"src":"1505:6:3"},"referencedDeclaration":190,"src":"1505:6:3","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":290,"mutability":"mutable","name":"spender","nameLocation":"1535:7:3","nodeType":"VariableDeclaration","scope":328,"src":"1527:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":289,"name":"address","nodeType":"ElementaryTypeName","src":"1527:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":292,"mutability":"mutable","name":"value","nameLocation":"1560:5:3","nodeType":"VariableDeclaration","scope":328,"src":"1552:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":291,"name":"uint256","nodeType":"ElementaryTypeName","src":"1552:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1495:76:3"},"returnParameters":{"id":294,"nodeType":"ParameterList","parameters":[],"src":"1581:0:3"},"scope":507,"src":"1475:603:3","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":363,"nodeType":"Block","src":"2200:194:3","statements":[{"assignments":[339],"declarations":[{"constant":false,"id":339,"mutability":"mutable","name":"newAllowance","nameLocation":"2218:12:3","nodeType":"VariableDeclaration","scope":363,"src":"2210:20:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":338,"name":"uint256","nodeType":"ElementaryTypeName","src":"2210:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":350,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":344,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2257:4:3","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$507","typeString":"library SafeERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$507","typeString":"library SafeERC20"}],"id":343,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2249:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":342,"name":"address","nodeType":"ElementaryTypeName","src":"2249:7:3","typeDescriptions":{}}},"id":345,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2249:13:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":346,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":333,"src":"2264:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":340,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"2233:5:3","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}},"id":341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":167,"src":"2233:15:3","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2233:39:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":348,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":335,"src":"2275:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2233:47:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2210:70:3"},{"expression":{"arguments":[{"id":352,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"2310:5:3","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}},{"arguments":[{"expression":{"expression":{"id":355,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":331,"src":"2340:5:3","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}},"id":356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":177,"src":"2340:13:3","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"2340:22:3","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":358,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":333,"src":"2364:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":359,"name":"newAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":339,"src":"2373:12:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":353,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2317:3:3","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":354,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"2317:22:3","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2317:69:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":351,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"2290:19:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$190_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2290:97:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":362,"nodeType":"ExpressionStatement","src":"2290:97:3"}]},"id":364,"implemented":true,"kind":"function","modifiers":[],"name":"safeIncreaseAllowance","nameLocation":"2093:21:3","nodeType":"FunctionDefinition","parameters":{"id":336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":331,"mutability":"mutable","name":"token","nameLocation":"2131:5:3","nodeType":"VariableDeclaration","scope":364,"src":"2124:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"},"typeName":{"id":330,"nodeType":"UserDefinedTypeName","pathNode":{"id":329,"name":"IERC20","nodeType":"IdentifierPath","referencedDeclaration":190,"src":"2124:6:3"},"referencedDeclaration":190,"src":"2124:6:3","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":333,"mutability":"mutable","name":"spender","nameLocation":"2154:7:3","nodeType":"VariableDeclaration","scope":364,"src":"2146:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":332,"name":"address","nodeType":"ElementaryTypeName","src":"2146:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":335,"mutability":"mutable","name":"value","nameLocation":"2179:5:3","nodeType":"VariableDeclaration","scope":364,"src":"2171:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":334,"name":"uint256","nodeType":"ElementaryTypeName","src":"2171:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2114:76:3"},"returnParameters":{"id":337,"nodeType":"ParameterList","parameters":[],"src":"2200:0:3"},"scope":507,"src":"2084:310:3","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":411,"nodeType":"Block","src":"2516:370:3","statements":[{"id":410,"nodeType":"UncheckedBlock","src":"2526:354:3","statements":[{"assignments":[375],"declarations":[{"constant":false,"id":375,"mutability":"mutable","name":"oldAllowance","nameLocation":"2558:12:3","nodeType":"VariableDeclaration","scope":410,"src":"2550:20:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":374,"name":"uint256","nodeType":"ElementaryTypeName","src":"2550:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":384,"initialValue":{"arguments":[{"arguments":[{"id":380,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2597:4:3","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$507","typeString":"library SafeERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$507","typeString":"library SafeERC20"}],"id":379,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2589:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":378,"name":"address","nodeType":"ElementaryTypeName","src":"2589:7:3","typeDescriptions":{}}},"id":381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2589:13:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":382,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":369,"src":"2604:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":376,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":367,"src":"2573:5:3","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}},"id":377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":167,"src":"2573:15:3","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2573:39:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2550:62:3"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":386,"name":"oldAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"2634:12:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":387,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":371,"src":"2650:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2634:21:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f","id":389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2657:43:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a","typeString":"literal_string \"SafeERC20: decreased allowance below zero\""},"value":"SafeERC20: decreased allowance below zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a","typeString":"literal_string \"SafeERC20: decreased allowance below zero\""}],"id":385,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2626:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2626:75:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":391,"nodeType":"ExpressionStatement","src":"2626:75:3"},{"assignments":[393],"declarations":[{"constant":false,"id":393,"mutability":"mutable","name":"newAllowance","nameLocation":"2723:12:3","nodeType":"VariableDeclaration","scope":410,"src":"2715:20:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":392,"name":"uint256","nodeType":"ElementaryTypeName","src":"2715:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":397,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":394,"name":"oldAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":375,"src":"2738:12:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":395,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":371,"src":"2753:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2738:20:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2715:43:3"},{"expression":{"arguments":[{"id":399,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":367,"src":"2792:5:3","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}},{"arguments":[{"expression":{"expression":{"id":402,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":367,"src":"2822:5:3","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}},"id":403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":177,"src":"2822:13:3","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"2822:22:3","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":405,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":369,"src":"2846:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":406,"name":"newAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":393,"src":"2855:12:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":400,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2799:3:3","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":401,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"2799:22:3","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2799:69:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":398,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"2772:19:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$190_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":408,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2772:97:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":409,"nodeType":"ExpressionStatement","src":"2772:97:3"}]}]},"id":412,"implemented":true,"kind":"function","modifiers":[],"name":"safeDecreaseAllowance","nameLocation":"2409:21:3","nodeType":"FunctionDefinition","parameters":{"id":372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":367,"mutability":"mutable","name":"token","nameLocation":"2447:5:3","nodeType":"VariableDeclaration","scope":412,"src":"2440:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"},"typeName":{"id":366,"nodeType":"UserDefinedTypeName","pathNode":{"id":365,"name":"IERC20","nodeType":"IdentifierPath","referencedDeclaration":190,"src":"2440:6:3"},"referencedDeclaration":190,"src":"2440:6:3","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":369,"mutability":"mutable","name":"spender","nameLocation":"2470:7:3","nodeType":"VariableDeclaration","scope":412,"src":"2462:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":368,"name":"address","nodeType":"ElementaryTypeName","src":"2462:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":371,"mutability":"mutable","name":"value","nameLocation":"2495:5:3","nodeType":"VariableDeclaration","scope":412,"src":"2487:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":370,"name":"uint256","nodeType":"ElementaryTypeName","src":"2487:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2430:76:3"},"returnParameters":{"id":373,"nodeType":"ParameterList","parameters":[],"src":"2516:0:3"},"scope":507,"src":"2400:486:3","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":467,"nodeType":"Block","src":"3107:257:3","statements":[{"assignments":[433],"declarations":[{"constant":false,"id":433,"mutability":"mutable","name":"nonceBefore","nameLocation":"3125:11:3","nodeType":"VariableDeclaration","scope":467,"src":"3117:19:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":432,"name":"uint256","nodeType":"ElementaryTypeName","src":"3117:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":438,"initialValue":{"arguments":[{"id":436,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":417,"src":"3152:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":434,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":415,"src":"3139:5:3","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$226","typeString":"contract IERC20Permit"}},"id":435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"nonces","nodeType":"MemberAccess","referencedDeclaration":219,"src":"3139:12:3","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3139:19:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3117:41:3"},{"expression":{"arguments":[{"id":442,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":417,"src":"3181:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":443,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":419,"src":"3188:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":444,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":421,"src":"3197:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":445,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":423,"src":"3204:8:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":446,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":425,"src":"3214:1:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":447,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":427,"src":"3217:1:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":448,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"3220:1:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":439,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":415,"src":"3168:5:3","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$226","typeString":"contract IERC20Permit"}},"id":441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":211,"src":"3168:12:3","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"}},"id":449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3168:54:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":450,"nodeType":"ExpressionStatement","src":"3168:54:3"},{"assignments":[452],"declarations":[{"constant":false,"id":452,"mutability":"mutable","name":"nonceAfter","nameLocation":"3240:10:3","nodeType":"VariableDeclaration","scope":467,"src":"3232:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":451,"name":"uint256","nodeType":"ElementaryTypeName","src":"3232:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":457,"initialValue":{"arguments":[{"id":455,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":417,"src":"3266:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":453,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":415,"src":"3253:5:3","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$226","typeString":"contract IERC20Permit"}},"id":454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"nonces","nodeType":"MemberAccess","referencedDeclaration":219,"src":"3253:12:3","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3253:19:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3232:40:3"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":459,"name":"nonceAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":452,"src":"3290:10:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":460,"name":"nonceBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":433,"src":"3304:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3318:1:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3304:15:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3290:29:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a207065726d697420646964206e6f742073756363656564","id":464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3321:35:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_cde8e927812a7a656f8f04e89ac4f4113d47940dd2125d11fcb8e0bd36bfc59d","typeString":"literal_string \"SafeERC20: permit did not succeed\""},"value":"SafeERC20: permit did not succeed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cde8e927812a7a656f8f04e89ac4f4113d47940dd2125d11fcb8e0bd36bfc59d","typeString":"literal_string \"SafeERC20: permit did not succeed\""}],"id":458,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3282:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3282:75:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":466,"nodeType":"ExpressionStatement","src":"3282:75:3"}]},"id":468,"implemented":true,"kind":"function","modifiers":[],"name":"safePermit","nameLocation":"2901:10:3","nodeType":"FunctionDefinition","parameters":{"id":430,"nodeType":"ParameterList","parameters":[{"constant":false,"id":415,"mutability":"mutable","name":"token","nameLocation":"2934:5:3","nodeType":"VariableDeclaration","scope":468,"src":"2921:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$226","typeString":"contract IERC20Permit"},"typeName":{"id":414,"nodeType":"UserDefinedTypeName","pathNode":{"id":413,"name":"IERC20Permit","nodeType":"IdentifierPath","referencedDeclaration":226,"src":"2921:12:3"},"referencedDeclaration":226,"src":"2921:12:3","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$226","typeString":"contract IERC20Permit"}},"visibility":"internal"},{"constant":false,"id":417,"mutability":"mutable","name":"owner","nameLocation":"2957:5:3","nodeType":"VariableDeclaration","scope":468,"src":"2949:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":416,"name":"address","nodeType":"ElementaryTypeName","src":"2949:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":419,"mutability":"mutable","name":"spender","nameLocation":"2980:7:3","nodeType":"VariableDeclaration","scope":468,"src":"2972:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":418,"name":"address","nodeType":"ElementaryTypeName","src":"2972:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":421,"mutability":"mutable","name":"value","nameLocation":"3005:5:3","nodeType":"VariableDeclaration","scope":468,"src":"2997:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":420,"name":"uint256","nodeType":"ElementaryTypeName","src":"2997:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":423,"mutability":"mutable","name":"deadline","nameLocation":"3028:8:3","nodeType":"VariableDeclaration","scope":468,"src":"3020:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":422,"name":"uint256","nodeType":"ElementaryTypeName","src":"3020:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":425,"mutability":"mutable","name":"v","nameLocation":"3052:1:3","nodeType":"VariableDeclaration","scope":468,"src":"3046:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":424,"name":"uint8","nodeType":"ElementaryTypeName","src":"3046:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":427,"mutability":"mutable","name":"r","nameLocation":"3071:1:3","nodeType":"VariableDeclaration","scope":468,"src":"3063:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":426,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3063:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":429,"mutability":"mutable","name":"s","nameLocation":"3090:1:3","nodeType":"VariableDeclaration","scope":468,"src":"3082:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":428,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3082:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2911:186:3"},"returnParameters":{"id":431,"nodeType":"ParameterList","parameters":[],"src":"3107:0:3"},"scope":507,"src":"2892:472:3","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":505,"nodeType":"Block","src":"3817:636:3","statements":[{"assignments":[478],"declarations":[{"constant":false,"id":478,"mutability":"mutable","name":"returndata","nameLocation":"4179:10:3","nodeType":"VariableDeclaration","scope":505,"src":"4166:23:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":477,"name":"bytes","nodeType":"ElementaryTypeName","src":"4166:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":487,"initialValue":{"arguments":[{"id":484,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":474,"src":"4220:4:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564","id":485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4226:34:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""},"value":"SafeERC20: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""}],"expression":{"arguments":[{"id":481,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":472,"src":"4200:5:3","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}],"id":480,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4192:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":479,"name":"address","nodeType":"ElementaryTypeName","src":"4192:7:3","typeDescriptions":{}}},"id":482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4192:14:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"functionCall","nodeType":"MemberAccess","referencedDeclaration":596,"src":"4192:27:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_address_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4192:69:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"4166:95:3"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":488,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"4275:10:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4275:17:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":490,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4295:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4275:21:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":504,"nodeType":"IfStatement","src":"4271:176:3","trueBody":{"id":503,"nodeType":"Block","src":"4298:149:3","statements":[{"expression":{"arguments":[{"arguments":[{"id":495,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":478,"src":"4370:10:3","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4383:4:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":496,"name":"bool","nodeType":"ElementaryTypeName","src":"4383:4:3","typeDescriptions":{}}}],"id":498,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4382:6:3","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"expression":{"id":493,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4359:3:3","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":494,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"4359:10:3","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4359:30:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564","id":500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4391:44:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""},"value":"SafeERC20: ERC20 operation did not succeed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""}],"id":492,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4351:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4351:85:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":502,"nodeType":"ExpressionStatement","src":"4351:85:3"}]}}]},"documentation":{"id":469,"nodeType":"StructuredDocumentation","src":"3370:372:3","text":" @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants)."},"id":506,"implemented":true,"kind":"function","modifiers":[],"name":"_callOptionalReturn","nameLocation":"3756:19:3","nodeType":"FunctionDefinition","parameters":{"id":475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":472,"mutability":"mutable","name":"token","nameLocation":"3783:5:3","nodeType":"VariableDeclaration","scope":506,"src":"3776:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"},"typeName":{"id":471,"nodeType":"UserDefinedTypeName","pathNode":{"id":470,"name":"IERC20","nodeType":"IdentifierPath","referencedDeclaration":190,"src":"3776:6:3"},"referencedDeclaration":190,"src":"3776:6:3","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":474,"mutability":"mutable","name":"data","nameLocation":"3803:4:3","nodeType":"VariableDeclaration","scope":506,"src":"3790:17:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":473,"name":"bytes","nodeType":"ElementaryTypeName","src":"3790:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3775:33:3"},"returnParameters":{"id":476,"nodeType":"ParameterList","parameters":[],"src":"3817:0:3"},"scope":507,"src":"3747:706:3","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":508,"src":"707:3748:3","usedErrors":[]}],"src":"115:4341:3"},"id":3},"@openzeppelin/contracts/utils/Address.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","exportedSymbols":{"Address":[802]},"id":803,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":509,"literals":["solidity","^","0.8",".1"],"nodeType":"PragmaDirective","src":"101:23:4"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":510,"nodeType":"StructuredDocumentation","src":"126:67:4","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":802,"linearizedBaseContracts":[802],"name":"Address","nameLocation":"202:7:4","nodeType":"ContractDefinition","nodes":[{"body":{"id":524,"nodeType":"Block","src":"1241:254:4","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":518,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":513,"src":"1465:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"code","nodeType":"MemberAccess","src":"1465:12:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1465:19:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":521,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1487:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1465:23:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":517,"id":523,"nodeType":"Return","src":"1458:30:4"}]},"documentation":{"id":511,"nodeType":"StructuredDocumentation","src":"216:954:4","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n  - an externally-owned account\n  - a contract in construction\n  - an address where a contract will be created\n  - an address where a contract lived, but was destroyed\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="},"id":525,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nameLocation":"1184:10:4","nodeType":"FunctionDefinition","parameters":{"id":514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":513,"mutability":"mutable","name":"account","nameLocation":"1203:7:4","nodeType":"VariableDeclaration","scope":525,"src":"1195:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":512,"name":"address","nodeType":"ElementaryTypeName","src":"1195:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1194:17:4"},"returnParameters":{"id":517,"nodeType":"ParameterList","parameters":[{"constant":false,"id":516,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":525,"src":"1235:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":515,"name":"bool","nodeType":"ElementaryTypeName","src":"1235:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1234:6:4"},"scope":802,"src":"1175:320:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":558,"nodeType":"Block","src":"2483:241:4","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":536,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2509:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$802","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$802","typeString":"library Address"}],"id":535,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2501:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":534,"name":"address","nodeType":"ElementaryTypeName","src":"2501:7:4","typeDescriptions":{}}},"id":537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2501:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"2501:21:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":539,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":530,"src":"2526:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2501:31:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":541,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2534:31:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":533,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2493:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2493:73:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":543,"nodeType":"ExpressionStatement","src":"2493:73:4"},{"assignments":[545,null],"declarations":[{"constant":false,"id":545,"mutability":"mutable","name":"success","nameLocation":"2583:7:4","nodeType":"VariableDeclaration","scope":558,"src":"2578:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":544,"name":"bool","nodeType":"ElementaryTypeName","src":"2578:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":552,"initialValue":{"arguments":[{"hexValue":"","id":550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2626:2:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":546,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":528,"src":"2596:9:4","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"2596:14:4","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":548,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":530,"src":"2618:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2596:29:4","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2596:33:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2577:52:4"},{"expression":{"arguments":[{"id":554,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":545,"src":"2647:7:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":555,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2656:60:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":553,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2639:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2639:78:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":557,"nodeType":"ExpressionStatement","src":"2639:78:4"}]},"documentation":{"id":526,"nodeType":"StructuredDocumentation","src":"1501:906:4","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":559,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"2421:9:4","nodeType":"FunctionDefinition","parameters":{"id":531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":528,"mutability":"mutable","name":"recipient","nameLocation":"2447:9:4","nodeType":"VariableDeclaration","scope":559,"src":"2431:25:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":527,"name":"address","nodeType":"ElementaryTypeName","src":"2431:15:4","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":530,"mutability":"mutable","name":"amount","nameLocation":"2466:6:4","nodeType":"VariableDeclaration","scope":559,"src":"2458:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":529,"name":"uint256","nodeType":"ElementaryTypeName","src":"2458:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2430:43:4"},"returnParameters":{"id":532,"nodeType":"ParameterList","parameters":[],"src":"2483:0:4"},"scope":802,"src":"2412:312:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":575,"nodeType":"Block","src":"3555:84:4","statements":[{"expression":{"arguments":[{"id":570,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":562,"src":"3585:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":571,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":564,"src":"3593:4:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3599:32:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""},"value":"Address: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""}],"id":569,"name":"functionCall","nodeType":"Identifier","overloadedDeclarations":[576,596],"referencedDeclaration":596,"src":"3572:12:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3572:60:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":568,"id":574,"nodeType":"Return","src":"3565:67:4"}]},"documentation":{"id":560,"nodeType":"StructuredDocumentation","src":"2730:731:4","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"},"id":576,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3475:12:4","nodeType":"FunctionDefinition","parameters":{"id":565,"nodeType":"ParameterList","parameters":[{"constant":false,"id":562,"mutability":"mutable","name":"target","nameLocation":"3496:6:4","nodeType":"VariableDeclaration","scope":576,"src":"3488:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":561,"name":"address","nodeType":"ElementaryTypeName","src":"3488:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":564,"mutability":"mutable","name":"data","nameLocation":"3517:4:4","nodeType":"VariableDeclaration","scope":576,"src":"3504:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":563,"name":"bytes","nodeType":"ElementaryTypeName","src":"3504:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3487:35:4"},"returnParameters":{"id":568,"nodeType":"ParameterList","parameters":[{"constant":false,"id":567,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":576,"src":"3541:12:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":566,"name":"bytes","nodeType":"ElementaryTypeName","src":"3541:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3540:14:4"},"scope":802,"src":"3466:173:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":595,"nodeType":"Block","src":"4008:76:4","statements":[{"expression":{"arguments":[{"id":589,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":579,"src":"4047:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":590,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":581,"src":"4055:4:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4061:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":592,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":583,"src":"4064:12:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":588,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[616,666],"referencedDeclaration":666,"src":"4025:21:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4025:52:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":587,"id":594,"nodeType":"Return","src":"4018:59:4"}]},"documentation":{"id":577,"nodeType":"StructuredDocumentation","src":"3645:211:4","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":596,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3870:12:4","nodeType":"FunctionDefinition","parameters":{"id":584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":579,"mutability":"mutable","name":"target","nameLocation":"3900:6:4","nodeType":"VariableDeclaration","scope":596,"src":"3892:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":578,"name":"address","nodeType":"ElementaryTypeName","src":"3892:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":581,"mutability":"mutable","name":"data","nameLocation":"3929:4:4","nodeType":"VariableDeclaration","scope":596,"src":"3916:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":580,"name":"bytes","nodeType":"ElementaryTypeName","src":"3916:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":583,"mutability":"mutable","name":"errorMessage","nameLocation":"3957:12:4","nodeType":"VariableDeclaration","scope":596,"src":"3943:26:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":582,"name":"string","nodeType":"ElementaryTypeName","src":"3943:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3882:93:4"},"returnParameters":{"id":587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":586,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":596,"src":"3994:12:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":585,"name":"bytes","nodeType":"ElementaryTypeName","src":"3994:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3993:14:4"},"scope":802,"src":"3861:223:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":615,"nodeType":"Block","src":"4589:111:4","statements":[{"expression":{"arguments":[{"id":609,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":599,"src":"4628:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":610,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":601,"src":"4636:4:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":611,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":603,"src":"4642:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":612,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4649:43:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""},"value":"Address: low-level call with value failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""}],"id":608,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[616,666],"referencedDeclaration":666,"src":"4606:21:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4606:87:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":607,"id":614,"nodeType":"Return","src":"4599:94:4"}]},"documentation":{"id":597,"nodeType":"StructuredDocumentation","src":"4090:351:4","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"},"id":616,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4455:21:4","nodeType":"FunctionDefinition","parameters":{"id":604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":599,"mutability":"mutable","name":"target","nameLocation":"4494:6:4","nodeType":"VariableDeclaration","scope":616,"src":"4486:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":598,"name":"address","nodeType":"ElementaryTypeName","src":"4486:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":601,"mutability":"mutable","name":"data","nameLocation":"4523:4:4","nodeType":"VariableDeclaration","scope":616,"src":"4510:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":600,"name":"bytes","nodeType":"ElementaryTypeName","src":"4510:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":603,"mutability":"mutable","name":"value","nameLocation":"4545:5:4","nodeType":"VariableDeclaration","scope":616,"src":"4537:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":602,"name":"uint256","nodeType":"ElementaryTypeName","src":"4537:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4476:80:4"},"returnParameters":{"id":607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":606,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":616,"src":"4575:12:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":605,"name":"bytes","nodeType":"ElementaryTypeName","src":"4575:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4574:14:4"},"scope":802,"src":"4446:254:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":665,"nodeType":"Block","src":"5127:320:4","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":633,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5153:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$802","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$802","typeString":"library Address"}],"id":632,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5145:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":631,"name":"address","nodeType":"ElementaryTypeName","src":"5145:7:4","typeDescriptions":{}}},"id":634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5145:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"5145:21:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":636,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":623,"src":"5170:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5145:30:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":638,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5177:40:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""},"value":"Address: insufficient balance for call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""}],"id":630,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5137:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5137:81:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":640,"nodeType":"ExpressionStatement","src":"5137:81:4"},{"expression":{"arguments":[{"arguments":[{"id":643,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":619,"src":"5247:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":642,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":525,"src":"5236:10:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5236:18:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5256:31:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""},"value":"Address: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""}],"id":641,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5228:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5228:60:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":647,"nodeType":"ExpressionStatement","src":"5228:60:4"},{"assignments":[649,651],"declarations":[{"constant":false,"id":649,"mutability":"mutable","name":"success","nameLocation":"5305:7:4","nodeType":"VariableDeclaration","scope":665,"src":"5300:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":648,"name":"bool","nodeType":"ElementaryTypeName","src":"5300:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":651,"mutability":"mutable","name":"returndata","nameLocation":"5327:10:4","nodeType":"VariableDeclaration","scope":665,"src":"5314:23:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":650,"name":"bytes","nodeType":"ElementaryTypeName","src":"5314:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":658,"initialValue":{"arguments":[{"id":656,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":621,"src":"5367:4:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":652,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":619,"src":"5341:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"5341:11:4","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":654,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":623,"src":"5360:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5341:25:4","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5341:31:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5299:73:4"},{"expression":{"arguments":[{"id":660,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":649,"src":"5406:7:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":661,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":651,"src":"5415:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":662,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":625,"src":"5427:12:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":659,"name":"verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":801,"src":"5389:16:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory,string memory) pure returns (bytes memory)"}},"id":663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5389:51:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":629,"id":664,"nodeType":"Return","src":"5382:58:4"}]},"documentation":{"id":617,"nodeType":"StructuredDocumentation","src":"4706:237:4","text":" @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":666,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4957:21:4","nodeType":"FunctionDefinition","parameters":{"id":626,"nodeType":"ParameterList","parameters":[{"constant":false,"id":619,"mutability":"mutable","name":"target","nameLocation":"4996:6:4","nodeType":"VariableDeclaration","scope":666,"src":"4988:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":618,"name":"address","nodeType":"ElementaryTypeName","src":"4988:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":621,"mutability":"mutable","name":"data","nameLocation":"5025:4:4","nodeType":"VariableDeclaration","scope":666,"src":"5012:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":620,"name":"bytes","nodeType":"ElementaryTypeName","src":"5012:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":623,"mutability":"mutable","name":"value","nameLocation":"5047:5:4","nodeType":"VariableDeclaration","scope":666,"src":"5039:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":622,"name":"uint256","nodeType":"ElementaryTypeName","src":"5039:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":625,"mutability":"mutable","name":"errorMessage","nameLocation":"5076:12:4","nodeType":"VariableDeclaration","scope":666,"src":"5062:26:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":624,"name":"string","nodeType":"ElementaryTypeName","src":"5062:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4978:116:4"},"returnParameters":{"id":629,"nodeType":"ParameterList","parameters":[{"constant":false,"id":628,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":666,"src":"5113:12:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":627,"name":"bytes","nodeType":"ElementaryTypeName","src":"5113:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5112:14:4"},"scope":802,"src":"4948:499:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":682,"nodeType":"Block","src":"5724:97:4","statements":[{"expression":{"arguments":[{"id":677,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":669,"src":"5760:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":678,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":671,"src":"5768:4:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5774:39:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""},"value":"Address: low-level static call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""}],"id":676,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[683,718],"referencedDeclaration":718,"src":"5741:18:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) view returns (bytes memory)"}},"id":680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5741:73:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":675,"id":681,"nodeType":"Return","src":"5734:80:4"}]},"documentation":{"id":667,"nodeType":"StructuredDocumentation","src":"5453:166:4","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":683,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5633:18:4","nodeType":"FunctionDefinition","parameters":{"id":672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":669,"mutability":"mutable","name":"target","nameLocation":"5660:6:4","nodeType":"VariableDeclaration","scope":683,"src":"5652:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":668,"name":"address","nodeType":"ElementaryTypeName","src":"5652:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":671,"mutability":"mutable","name":"data","nameLocation":"5681:4:4","nodeType":"VariableDeclaration","scope":683,"src":"5668:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":670,"name":"bytes","nodeType":"ElementaryTypeName","src":"5668:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5651:35:4"},"returnParameters":{"id":675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":674,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":683,"src":"5710:12:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":673,"name":"bytes","nodeType":"ElementaryTypeName","src":"5710:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5709:14:4"},"scope":802,"src":"5624:197:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":717,"nodeType":"Block","src":"6163:228:4","statements":[{"expression":{"arguments":[{"arguments":[{"id":697,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"6192:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":696,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":525,"src":"6181:10:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6181:18:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374","id":699,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6201:38:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9","typeString":"literal_string \"Address: static call to non-contract\""},"value":"Address: static call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9","typeString":"literal_string \"Address: static call to non-contract\""}],"id":695,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6173:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6173:67:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":701,"nodeType":"ExpressionStatement","src":"6173:67:4"},{"assignments":[703,705],"declarations":[{"constant":false,"id":703,"mutability":"mutable","name":"success","nameLocation":"6257:7:4","nodeType":"VariableDeclaration","scope":717,"src":"6252:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":702,"name":"bool","nodeType":"ElementaryTypeName","src":"6252:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":705,"mutability":"mutable","name":"returndata","nameLocation":"6279:10:4","nodeType":"VariableDeclaration","scope":717,"src":"6266:23:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":704,"name":"bytes","nodeType":"ElementaryTypeName","src":"6266:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":710,"initialValue":{"arguments":[{"id":708,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":688,"src":"6311:4:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":706,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"6293:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"staticcall","nodeType":"MemberAccess","src":"6293:17:4","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6293:23:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6251:65:4"},{"expression":{"arguments":[{"id":712,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":703,"src":"6350:7:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":713,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":705,"src":"6359:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":714,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":690,"src":"6371:12:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":711,"name":"verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":801,"src":"6333:16:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory,string memory) pure returns (bytes memory)"}},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6333:51:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":694,"id":716,"nodeType":"Return","src":"6326:58:4"}]},"documentation":{"id":684,"nodeType":"StructuredDocumentation","src":"5827:173:4","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":718,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"6014:18:4","nodeType":"FunctionDefinition","parameters":{"id":691,"nodeType":"ParameterList","parameters":[{"constant":false,"id":686,"mutability":"mutable","name":"target","nameLocation":"6050:6:4","nodeType":"VariableDeclaration","scope":718,"src":"6042:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":685,"name":"address","nodeType":"ElementaryTypeName","src":"6042:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":688,"mutability":"mutable","name":"data","nameLocation":"6079:4:4","nodeType":"VariableDeclaration","scope":718,"src":"6066:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":687,"name":"bytes","nodeType":"ElementaryTypeName","src":"6066:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":690,"mutability":"mutable","name":"errorMessage","nameLocation":"6107:12:4","nodeType":"VariableDeclaration","scope":718,"src":"6093:26:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":689,"name":"string","nodeType":"ElementaryTypeName","src":"6093:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6032:93:4"},"returnParameters":{"id":694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":693,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":718,"src":"6149:12:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":692,"name":"bytes","nodeType":"ElementaryTypeName","src":"6149:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6148:14:4"},"scope":802,"src":"6005:386:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":734,"nodeType":"Block","src":"6667:101:4","statements":[{"expression":{"arguments":[{"id":729,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":721,"src":"6705:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":730,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":723,"src":"6713:4:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","id":731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6719:41:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""},"value":"Address: low-level delegate call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""}],"id":728,"name":"functionDelegateCall","nodeType":"Identifier","overloadedDeclarations":[735,770],"referencedDeclaration":770,"src":"6684:20:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":732,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6684:77:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":727,"id":733,"nodeType":"Return","src":"6677:84:4"}]},"documentation":{"id":719,"nodeType":"StructuredDocumentation","src":"6397:168:4","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":735,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6579:20:4","nodeType":"FunctionDefinition","parameters":{"id":724,"nodeType":"ParameterList","parameters":[{"constant":false,"id":721,"mutability":"mutable","name":"target","nameLocation":"6608:6:4","nodeType":"VariableDeclaration","scope":735,"src":"6600:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":720,"name":"address","nodeType":"ElementaryTypeName","src":"6600:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":723,"mutability":"mutable","name":"data","nameLocation":"6629:4:4","nodeType":"VariableDeclaration","scope":735,"src":"6616:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":722,"name":"bytes","nodeType":"ElementaryTypeName","src":"6616:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6599:35:4"},"returnParameters":{"id":727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":726,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":735,"src":"6653:12:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":725,"name":"bytes","nodeType":"ElementaryTypeName","src":"6653:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6652:14:4"},"scope":802,"src":"6570:198:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":769,"nodeType":"Block","src":"7109:232:4","statements":[{"expression":{"arguments":[{"arguments":[{"id":749,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":738,"src":"7138:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":748,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":525,"src":"7127:10:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":750,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7127:18:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374","id":751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7147:40:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520","typeString":"literal_string \"Address: delegate call to non-contract\""},"value":"Address: delegate call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520","typeString":"literal_string \"Address: delegate call to non-contract\""}],"id":747,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7119:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7119:69:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":753,"nodeType":"ExpressionStatement","src":"7119:69:4"},{"assignments":[755,757],"declarations":[{"constant":false,"id":755,"mutability":"mutable","name":"success","nameLocation":"7205:7:4","nodeType":"VariableDeclaration","scope":769,"src":"7200:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":754,"name":"bool","nodeType":"ElementaryTypeName","src":"7200:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":757,"mutability":"mutable","name":"returndata","nameLocation":"7227:10:4","nodeType":"VariableDeclaration","scope":769,"src":"7214:23:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":756,"name":"bytes","nodeType":"ElementaryTypeName","src":"7214:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":762,"initialValue":{"arguments":[{"id":760,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":740,"src":"7261:4:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":758,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":738,"src":"7241:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegatecall","nodeType":"MemberAccess","src":"7241:19:4","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7241:25:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7199:67:4"},{"expression":{"arguments":[{"id":764,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":755,"src":"7300:7:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":765,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":757,"src":"7309:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":766,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":742,"src":"7321:12:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":763,"name":"verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":801,"src":"7283:16:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory,string memory) pure returns (bytes memory)"}},"id":767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7283:51:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":746,"id":768,"nodeType":"Return","src":"7276:58:4"}]},"documentation":{"id":736,"nodeType":"StructuredDocumentation","src":"6774:175:4","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":770,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6963:20:4","nodeType":"FunctionDefinition","parameters":{"id":743,"nodeType":"ParameterList","parameters":[{"constant":false,"id":738,"mutability":"mutable","name":"target","nameLocation":"7001:6:4","nodeType":"VariableDeclaration","scope":770,"src":"6993:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":737,"name":"address","nodeType":"ElementaryTypeName","src":"6993:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":740,"mutability":"mutable","name":"data","nameLocation":"7030:4:4","nodeType":"VariableDeclaration","scope":770,"src":"7017:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":739,"name":"bytes","nodeType":"ElementaryTypeName","src":"7017:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":742,"mutability":"mutable","name":"errorMessage","nameLocation":"7058:12:4","nodeType":"VariableDeclaration","scope":770,"src":"7044:26:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":741,"name":"string","nodeType":"ElementaryTypeName","src":"7044:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6983:93:4"},"returnParameters":{"id":746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":745,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":770,"src":"7095:12:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":744,"name":"bytes","nodeType":"ElementaryTypeName","src":"7095:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7094:14:4"},"scope":802,"src":"6954:387:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":800,"nodeType":"Block","src":"7721:582:4","statements":[{"condition":{"id":782,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":773,"src":"7735:7:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":798,"nodeType":"Block","src":"7792:505:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":786,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":775,"src":"7876:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7876:17:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":788,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7896:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7876:21:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":796,"nodeType":"Block","src":"8234:53:4","statements":[{"expression":{"arguments":[{"id":793,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":777,"src":"8259:12:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":792,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"8252:6:4","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":794,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8252:20:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":795,"nodeType":"ExpressionStatement","src":"8252:20:4"}]},"id":797,"nodeType":"IfStatement","src":"7872:415:4","trueBody":{"id":791,"nodeType":"Block","src":"7899:329:4","statements":[{"AST":{"nodeType":"YulBlock","src":"8069:145:4","statements":[{"nodeType":"YulVariableDeclaration","src":"8091:40:4","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"8120:10:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8114:5:4"},"nodeType":"YulFunctionCall","src":"8114:17:4"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"8095:15:4","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8163:2:4","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"8167:10:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8159:3:4"},"nodeType":"YulFunctionCall","src":"8159:19:4"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"8180:15:4"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8152:6:4"},"nodeType":"YulFunctionCall","src":"8152:44:4"},"nodeType":"YulExpressionStatement","src":"8152:44:4"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"istanbul","externalReferences":[{"declaration":775,"isOffset":false,"isSlot":false,"src":"8120:10:4","valueSize":1},{"declaration":775,"isOffset":false,"isSlot":false,"src":"8167:10:4","valueSize":1}],"id":790,"nodeType":"InlineAssembly","src":"8060:154:4"}]}}]},"id":799,"nodeType":"IfStatement","src":"7731:566:4","trueBody":{"id":785,"nodeType":"Block","src":"7744:42:4","statements":[{"expression":{"id":783,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":775,"src":"7765:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":781,"id":784,"nodeType":"Return","src":"7758:17:4"}]}}]},"documentation":{"id":771,"nodeType":"StructuredDocumentation","src":"7347:209:4","text":" @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason using the provided one.\n _Available since v4.3._"},"id":801,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"7570:16:4","nodeType":"FunctionDefinition","parameters":{"id":778,"nodeType":"ParameterList","parameters":[{"constant":false,"id":773,"mutability":"mutable","name":"success","nameLocation":"7601:7:4","nodeType":"VariableDeclaration","scope":801,"src":"7596:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":772,"name":"bool","nodeType":"ElementaryTypeName","src":"7596:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":775,"mutability":"mutable","name":"returndata","nameLocation":"7631:10:4","nodeType":"VariableDeclaration","scope":801,"src":"7618:23:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":774,"name":"bytes","nodeType":"ElementaryTypeName","src":"7618:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":777,"mutability":"mutable","name":"errorMessage","nameLocation":"7665:12:4","nodeType":"VariableDeclaration","scope":801,"src":"7651:26:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":776,"name":"string","nodeType":"ElementaryTypeName","src":"7651:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7586:97:4"},"returnParameters":{"id":781,"nodeType":"ParameterList","parameters":[{"constant":false,"id":780,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":801,"src":"7707:12:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":779,"name":"bytes","nodeType":"ElementaryTypeName","src":"7707:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7706:14:4"},"scope":802,"src":"7561:742:4","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":803,"src":"194:8111:4","usedErrors":[]}],"src":"101:8205:4"},"id":4},"@openzeppelin/contracts/utils/Context.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","exportedSymbols":{"Context":[824]},"id":825,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":804,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"86:23:5"},{"abstract":true,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":{"id":805,"nodeType":"StructuredDocumentation","src":"111:496:5","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":824,"linearizedBaseContracts":[824],"name":"Context","nameLocation":"626:7:5","nodeType":"ContractDefinition","nodes":[{"body":{"id":813,"nodeType":"Block","src":"702:34:5","statements":[{"expression":{"expression":{"id":810,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"719:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"719:10:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":809,"id":812,"nodeType":"Return","src":"712:17:5"}]},"id":814,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"649:10:5","nodeType":"FunctionDefinition","parameters":{"id":806,"nodeType":"ParameterList","parameters":[],"src":"659:2:5"},"returnParameters":{"id":809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":808,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":814,"src":"693:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":807,"name":"address","nodeType":"ElementaryTypeName","src":"693:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"692:9:5"},"scope":824,"src":"640:96:5","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":822,"nodeType":"Block","src":"809:32:5","statements":[{"expression":{"expression":{"id":819,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"826:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"data","nodeType":"MemberAccess","src":"826:8:5","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":818,"id":821,"nodeType":"Return","src":"819:15:5"}]},"id":823,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"751:8:5","nodeType":"FunctionDefinition","parameters":{"id":815,"nodeType":"ParameterList","parameters":[],"src":"759:2:5"},"returnParameters":{"id":818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":817,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":823,"src":"793:14:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":816,"name":"bytes","nodeType":"ElementaryTypeName","src":"793:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"792:16:5"},"scope":824,"src":"742:99:5","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":825,"src":"608:235:5","usedErrors":[]}],"src":"86:758:5"},"id":5},"@openzeppelin/contracts/utils/math/Math.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","exportedSymbols":{"Math":[1328]},"id":1329,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":826,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"103:23:6"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":827,"nodeType":"StructuredDocumentation","src":"128:73:6","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"id":1328,"linearizedBaseContracts":[1328],"name":"Math","nameLocation":"210:4:6","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Math.Rounding","id":831,"members":[{"id":828,"name":"Down","nameLocation":"245:4:6","nodeType":"EnumValue","src":"245:4:6"},{"id":829,"name":"Up","nameLocation":"287:2:6","nodeType":"EnumValue","src":"287:2:6"},{"id":830,"name":"Zero","nameLocation":"318:4:6","nodeType":"EnumValue","src":"318:4:6"}],"name":"Rounding","nameLocation":"226:8:6","nodeType":"EnumDefinition","src":"221:122:6"},{"body":{"id":848,"nodeType":"Block","src":"480:38:6","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":841,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":834,"src":"497:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":842,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":836,"src":"502:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"497:6:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":845,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":836,"src":"510:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"497:14:6","trueExpression":{"id":844,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":834,"src":"506:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":840,"id":847,"nodeType":"Return","src":"490:21:6"}]},"documentation":{"id":832,"nodeType":"StructuredDocumentation","src":"349:59:6","text":" @dev Returns the largest of two numbers."},"id":849,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"422:3:6","nodeType":"FunctionDefinition","parameters":{"id":837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":834,"mutability":"mutable","name":"a","nameLocation":"434:1:6","nodeType":"VariableDeclaration","scope":849,"src":"426:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":833,"name":"uint256","nodeType":"ElementaryTypeName","src":"426:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":836,"mutability":"mutable","name":"b","nameLocation":"445:1:6","nodeType":"VariableDeclaration","scope":849,"src":"437:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":835,"name":"uint256","nodeType":"ElementaryTypeName","src":"437:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"425:22:6"},"returnParameters":{"id":840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":839,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":849,"src":"471:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":838,"name":"uint256","nodeType":"ElementaryTypeName","src":"471:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"470:9:6"},"scope":1328,"src":"413:105:6","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":866,"nodeType":"Block","src":"656:37:6","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":859,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":852,"src":"673:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":860,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":854,"src":"677:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"673:5:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":863,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":854,"src":"685:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"673:13:6","trueExpression":{"id":862,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":852,"src":"681:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":858,"id":865,"nodeType":"Return","src":"666:20:6"}]},"documentation":{"id":850,"nodeType":"StructuredDocumentation","src":"524:60:6","text":" @dev Returns the smallest of two numbers."},"id":867,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"598:3:6","nodeType":"FunctionDefinition","parameters":{"id":855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":852,"mutability":"mutable","name":"a","nameLocation":"610:1:6","nodeType":"VariableDeclaration","scope":867,"src":"602:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":851,"name":"uint256","nodeType":"ElementaryTypeName","src":"602:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":854,"mutability":"mutable","name":"b","nameLocation":"621:1:6","nodeType":"VariableDeclaration","scope":867,"src":"613:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":853,"name":"uint256","nodeType":"ElementaryTypeName","src":"613:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"601:22:6"},"returnParameters":{"id":858,"nodeType":"ParameterList","parameters":[{"constant":false,"id":857,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":867,"src":"647:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":856,"name":"uint256","nodeType":"ElementaryTypeName","src":"647:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"646:9:6"},"scope":1328,"src":"589:104:6","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":889,"nodeType":"Block","src":"877:82:6","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":877,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":870,"src":"932:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":878,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":872,"src":"936:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"932:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":880,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"931:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":881,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":870,"src":"942:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":882,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":872,"src":"946:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"942:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":884,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"941:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":885,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"951:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"941:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"931:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":876,"id":888,"nodeType":"Return","src":"924:28:6"}]},"documentation":{"id":868,"nodeType":"StructuredDocumentation","src":"699:102:6","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"id":890,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"815:7:6","nodeType":"FunctionDefinition","parameters":{"id":873,"nodeType":"ParameterList","parameters":[{"constant":false,"id":870,"mutability":"mutable","name":"a","nameLocation":"831:1:6","nodeType":"VariableDeclaration","scope":890,"src":"823:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":869,"name":"uint256","nodeType":"ElementaryTypeName","src":"823:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":872,"mutability":"mutable","name":"b","nameLocation":"842:1:6","nodeType":"VariableDeclaration","scope":890,"src":"834:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":871,"name":"uint256","nodeType":"ElementaryTypeName","src":"834:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"822:22:6"},"returnParameters":{"id":876,"nodeType":"ParameterList","parameters":[{"constant":false,"id":875,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":890,"src":"868:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":874,"name":"uint256","nodeType":"ElementaryTypeName","src":"868:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"867:9:6"},"scope":1328,"src":"806:153:6","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":914,"nodeType":"Block","src":"1229:123:6","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":900,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":893,"src":"1317:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":901,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1322:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1317:6:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":904,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":893,"src":"1331:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1335:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1331:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":907,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1330:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":908,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":895,"src":"1340:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1330:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1344:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1330:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1317:28:6","trueExpression":{"hexValue":"30","id":903,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1326:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":899,"id":913,"nodeType":"Return","src":"1310:35:6"}]},"documentation":{"id":891,"nodeType":"StructuredDocumentation","src":"965:188:6","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds up instead\n of rounding down."},"id":915,"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"1167:7:6","nodeType":"FunctionDefinition","parameters":{"id":896,"nodeType":"ParameterList","parameters":[{"constant":false,"id":893,"mutability":"mutable","name":"a","nameLocation":"1183:1:6","nodeType":"VariableDeclaration","scope":915,"src":"1175:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":892,"name":"uint256","nodeType":"ElementaryTypeName","src":"1175:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":895,"mutability":"mutable","name":"b","nameLocation":"1194:1:6","nodeType":"VariableDeclaration","scope":915,"src":"1186:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":894,"name":"uint256","nodeType":"ElementaryTypeName","src":"1186:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1174:22:6"},"returnParameters":{"id":899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":898,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":915,"src":"1220:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":897,"name":"uint256","nodeType":"ElementaryTypeName","src":"1220:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1219:9:6"},"scope":1328,"src":"1158:194:6","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1036,"nodeType":"Block","src":"1796:3797:6","statements":[{"id":1035,"nodeType":"UncheckedBlock","src":"1806:3781:6","statements":[{"assignments":[928],"declarations":[{"constant":false,"id":928,"mutability":"mutable","name":"prod0","nameLocation":"2135:5:6","nodeType":"VariableDeclaration","scope":1035,"src":"2127:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":927,"name":"uint256","nodeType":"ElementaryTypeName","src":"2127:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":929,"nodeType":"VariableDeclarationStatement","src":"2127:13:6"},{"assignments":[931],"declarations":[{"constant":false,"id":931,"mutability":"mutable","name":"prod1","nameLocation":"2207:5:6","nodeType":"VariableDeclaration","scope":1035,"src":"2199:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":930,"name":"uint256","nodeType":"ElementaryTypeName","src":"2199:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":932,"nodeType":"VariableDeclarationStatement","src":"2199:13:6"},{"AST":{"nodeType":"YulBlock","src":"2279:157:6","statements":[{"nodeType":"YulVariableDeclaration","src":"2297:30:6","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2314:1:6"},{"name":"y","nodeType":"YulIdentifier","src":"2317:1:6"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2324:1:6","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2320:3:6"},"nodeType":"YulFunctionCall","src":"2320:6:6"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"2307:6:6"},"nodeType":"YulFunctionCall","src":"2307:20:6"},"variables":[{"name":"mm","nodeType":"YulTypedName","src":"2301:2:6","type":""}]},{"nodeType":"YulAssignment","src":"2344:18:6","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2357:1:6"},{"name":"y","nodeType":"YulIdentifier","src":"2360:1:6"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2353:3:6"},"nodeType":"YulFunctionCall","src":"2353:9:6"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"2344:5:6"}]},{"nodeType":"YulAssignment","src":"2379:43:6","value":{"arguments":[{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"2396:2:6"},{"name":"prod0","nodeType":"YulIdentifier","src":"2400:5:6"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2392:3:6"},"nodeType":"YulFunctionCall","src":"2392:14:6"},{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"2411:2:6"},{"name":"prod0","nodeType":"YulIdentifier","src":"2415:5:6"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2408:2:6"},"nodeType":"YulFunctionCall","src":"2408:13:6"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2388:3:6"},"nodeType":"YulFunctionCall","src":"2388:34:6"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"2379:5:6"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":928,"isOffset":false,"isSlot":false,"src":"2344:5:6","valueSize":1},{"declaration":928,"isOffset":false,"isSlot":false,"src":"2400:5:6","valueSize":1},{"declaration":928,"isOffset":false,"isSlot":false,"src":"2415:5:6","valueSize":1},{"declaration":931,"isOffset":false,"isSlot":false,"src":"2379:5:6","valueSize":1},{"declaration":918,"isOffset":false,"isSlot":false,"src":"2314:1:6","valueSize":1},{"declaration":918,"isOffset":false,"isSlot":false,"src":"2357:1:6","valueSize":1},{"declaration":920,"isOffset":false,"isSlot":false,"src":"2317:1:6","valueSize":1},{"declaration":920,"isOffset":false,"isSlot":false,"src":"2360:1:6","valueSize":1}],"id":933,"nodeType":"InlineAssembly","src":"2270:166:6"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":934,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":931,"src":"2517:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2526:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2517:10:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":942,"nodeType":"IfStatement","src":"2513:75:6","trueBody":{"id":941,"nodeType":"Block","src":"2529:59:6","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":937,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":928,"src":"2554:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":938,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":922,"src":"2562:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2554:19:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":926,"id":940,"nodeType":"Return","src":"2547:26:6"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":944,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":922,"src":"2698:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":945,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":931,"src":"2712:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2698:19:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":943,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2690:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2690:28:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":948,"nodeType":"ExpressionStatement","src":"2690:28:6"},{"assignments":[950],"declarations":[{"constant":false,"id":950,"mutability":"mutable","name":"remainder","nameLocation":"2982:9:6","nodeType":"VariableDeclaration","scope":1035,"src":"2974:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":949,"name":"uint256","nodeType":"ElementaryTypeName","src":"2974:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":951,"nodeType":"VariableDeclarationStatement","src":"2974:17:6"},{"AST":{"nodeType":"YulBlock","src":"3014:291:6","statements":[{"nodeType":"YulAssignment","src":"3083:38:6","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3103:1:6"},{"name":"y","nodeType":"YulIdentifier","src":"3106:1:6"},{"name":"denominator","nodeType":"YulIdentifier","src":"3109:11:6"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"3096:6:6"},"nodeType":"YulFunctionCall","src":"3096:25:6"},"variableNames":[{"name":"remainder","nodeType":"YulIdentifier","src":"3083:9:6"}]},{"nodeType":"YulAssignment","src":"3203:41:6","value":{"arguments":[{"name":"prod1","nodeType":"YulIdentifier","src":"3216:5:6"},{"arguments":[{"name":"remainder","nodeType":"YulIdentifier","src":"3226:9:6"},{"name":"prod0","nodeType":"YulIdentifier","src":"3237:5:6"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3223:2:6"},"nodeType":"YulFunctionCall","src":"3223:20:6"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3212:3:6"},"nodeType":"YulFunctionCall","src":"3212:32:6"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"3203:5:6"}]},{"nodeType":"YulAssignment","src":"3261:30:6","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"3274:5:6"},{"name":"remainder","nodeType":"YulIdentifier","src":"3281:9:6"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3270:3:6"},"nodeType":"YulFunctionCall","src":"3270:21:6"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"3261:5:6"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":922,"isOffset":false,"isSlot":false,"src":"3109:11:6","valueSize":1},{"declaration":928,"isOffset":false,"isSlot":false,"src":"3237:5:6","valueSize":1},{"declaration":928,"isOffset":false,"isSlot":false,"src":"3261:5:6","valueSize":1},{"declaration":928,"isOffset":false,"isSlot":false,"src":"3274:5:6","valueSize":1},{"declaration":931,"isOffset":false,"isSlot":false,"src":"3203:5:6","valueSize":1},{"declaration":931,"isOffset":false,"isSlot":false,"src":"3216:5:6","valueSize":1},{"declaration":950,"isOffset":false,"isSlot":false,"src":"3083:9:6","valueSize":1},{"declaration":950,"isOffset":false,"isSlot":false,"src":"3226:9:6","valueSize":1},{"declaration":950,"isOffset":false,"isSlot":false,"src":"3281:9:6","valueSize":1},{"declaration":918,"isOffset":false,"isSlot":false,"src":"3103:1:6","valueSize":1},{"declaration":920,"isOffset":false,"isSlot":false,"src":"3106:1:6","valueSize":1}],"id":952,"nodeType":"InlineAssembly","src":"3005:300:6"},{"assignments":[954],"declarations":[{"constant":false,"id":954,"mutability":"mutable","name":"twos","nameLocation":"3620:4:6","nodeType":"VariableDeclaration","scope":1035,"src":"3612:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":953,"name":"uint256","nodeType":"ElementaryTypeName","src":"3612:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":962,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":955,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":922,"src":"3627:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"3642:12:6","subExpression":{"id":956,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":922,"src":"3643:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3657:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3642:16:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":960,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3641:18:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3627:32:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3612:47:6"},{"AST":{"nodeType":"YulBlock","src":"3682:362:6","statements":[{"nodeType":"YulAssignment","src":"3747:37:6","value":{"arguments":[{"name":"denominator","nodeType":"YulIdentifier","src":"3766:11:6"},{"name":"twos","nodeType":"YulIdentifier","src":"3779:4:6"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"3762:3:6"},"nodeType":"YulFunctionCall","src":"3762:22:6"},"variableNames":[{"name":"denominator","nodeType":"YulIdentifier","src":"3747:11:6"}]},{"nodeType":"YulAssignment","src":"3851:25:6","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"3864:5:6"},{"name":"twos","nodeType":"YulIdentifier","src":"3871:4:6"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"3860:3:6"},"nodeType":"YulFunctionCall","src":"3860:16:6"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"3851:5:6"}]},{"nodeType":"YulAssignment","src":"3991:39:6","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4011:1:6","type":"","value":"0"},{"name":"twos","nodeType":"YulIdentifier","src":"4014:4:6"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4007:3:6"},"nodeType":"YulFunctionCall","src":"4007:12:6"},{"name":"twos","nodeType":"YulIdentifier","src":"4021:4:6"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4003:3:6"},"nodeType":"YulFunctionCall","src":"4003:23:6"},{"kind":"number","nodeType":"YulLiteral","src":"4028:1:6","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3999:3:6"},"nodeType":"YulFunctionCall","src":"3999:31:6"},"variableNames":[{"name":"twos","nodeType":"YulIdentifier","src":"3991:4:6"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":922,"isOffset":false,"isSlot":false,"src":"3747:11:6","valueSize":1},{"declaration":922,"isOffset":false,"isSlot":false,"src":"3766:11:6","valueSize":1},{"declaration":928,"isOffset":false,"isSlot":false,"src":"3851:5:6","valueSize":1},{"declaration":928,"isOffset":false,"isSlot":false,"src":"3864:5:6","valueSize":1},{"declaration":954,"isOffset":false,"isSlot":false,"src":"3779:4:6","valueSize":1},{"declaration":954,"isOffset":false,"isSlot":false,"src":"3871:4:6","valueSize":1},{"declaration":954,"isOffset":false,"isSlot":false,"src":"3991:4:6","valueSize":1},{"declaration":954,"isOffset":false,"isSlot":false,"src":"4014:4:6","valueSize":1},{"declaration":954,"isOffset":false,"isSlot":false,"src":"4021:4:6","valueSize":1}],"id":963,"nodeType":"InlineAssembly","src":"3673:371:6"},{"expression":{"id":968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":964,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":928,"src":"4110:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":965,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":931,"src":"4119:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":966,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":954,"src":"4127:4:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4119:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4110:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":969,"nodeType":"ExpressionStatement","src":"4110:21:6"},{"assignments":[971],"declarations":[{"constant":false,"id":971,"mutability":"mutable","name":"inverse","nameLocation":"4457:7:6","nodeType":"VariableDeclaration","scope":1035,"src":"4449:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":970,"name":"uint256","nodeType":"ElementaryTypeName","src":"4449:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":978,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":972,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4468:1:6","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":973,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":922,"src":"4472:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4468:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":975,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4467:17:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4487:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4467:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4449:39:6"},{"expression":{"id":985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":979,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":971,"src":"4705:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":980,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4716:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":981,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":922,"src":"4720:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":982,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":971,"src":"4734:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4720:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4716:25:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4705:36:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":986,"nodeType":"ExpressionStatement","src":"4705:36:6"},{"expression":{"id":993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":987,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":971,"src":"4774:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":988,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4785:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":989,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":922,"src":"4789:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":990,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":971,"src":"4803:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4789:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4785:25:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4774:36:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":994,"nodeType":"ExpressionStatement","src":"4774:36:6"},{"expression":{"id":1001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":995,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":971,"src":"4844:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4855:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":997,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":922,"src":"4859:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":998,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":971,"src":"4873:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4859:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4855:25:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4844:36:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1002,"nodeType":"ExpressionStatement","src":"4844:36:6"},{"expression":{"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1003,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":971,"src":"4914:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1004,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4925:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1005,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":922,"src":"4929:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1006,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":971,"src":"4943:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4929:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4925:25:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4914:36:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1010,"nodeType":"ExpressionStatement","src":"4914:36:6"},{"expression":{"id":1017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1011,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":971,"src":"4984:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4995:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1013,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":922,"src":"4999:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1014,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":971,"src":"5013:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4999:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4995:25:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4984:36:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1018,"nodeType":"ExpressionStatement","src":"4984:36:6"},{"expression":{"id":1025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1019,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":971,"src":"5055:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5066:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1021,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":922,"src":"5070:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1022,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":971,"src":"5084:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5070:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5066:25:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5055:36:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1026,"nodeType":"ExpressionStatement","src":"5055:36:6"},{"expression":{"id":1031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1027,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":925,"src":"5525:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1028,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":928,"src":"5534:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1029,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":971,"src":"5542:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5534:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5525:24:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1032,"nodeType":"ExpressionStatement","src":"5525:24:6"},{"expression":{"id":1033,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":925,"src":"5570:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":926,"id":1034,"nodeType":"Return","src":"5563:13:6"}]}]},"documentation":{"id":916,"nodeType":"StructuredDocumentation","src":"1358:305:6","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n with further edits by Uniswap Labs also under MIT license."},"id":1037,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"1677:6:6","nodeType":"FunctionDefinition","parameters":{"id":923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":918,"mutability":"mutable","name":"x","nameLocation":"1701:1:6","nodeType":"VariableDeclaration","scope":1037,"src":"1693:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":917,"name":"uint256","nodeType":"ElementaryTypeName","src":"1693:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":920,"mutability":"mutable","name":"y","nameLocation":"1720:1:6","nodeType":"VariableDeclaration","scope":1037,"src":"1712:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":919,"name":"uint256","nodeType":"ElementaryTypeName","src":"1712:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":922,"mutability":"mutable","name":"denominator","nameLocation":"1739:11:6","nodeType":"VariableDeclaration","scope":1037,"src":"1731:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":921,"name":"uint256","nodeType":"ElementaryTypeName","src":"1731:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1683:73:6"},"returnParameters":{"id":926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":925,"mutability":"mutable","name":"result","nameLocation":"1788:6:6","nodeType":"VariableDeclaration","scope":1037,"src":"1780:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":924,"name":"uint256","nodeType":"ElementaryTypeName","src":"1780:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1779:16:6"},"scope":1328,"src":"1668:3925:6","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1080,"nodeType":"Block","src":"5873:189:6","statements":[{"assignments":[1053],"declarations":[{"constant":false,"id":1053,"mutability":"mutable","name":"result","nameLocation":"5891:6:6","nodeType":"VariableDeclaration","scope":1080,"src":"5883:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1052,"name":"uint256","nodeType":"ElementaryTypeName","src":"5883:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1059,"initialValue":{"arguments":[{"id":1055,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1040,"src":"5907:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1056,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1042,"src":"5910:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1057,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1044,"src":"5913:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1054,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[1037,1081],"referencedDeclaration":1037,"src":"5900:6:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":1058,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5900:25:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5883:42:6"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$831","typeString":"enum Math.Rounding"},"id":1063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1060,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1047,"src":"5939:8:6","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$831","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1061,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":831,"src":"5951:8:6","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$831_$","typeString":"type(enum Math.Rounding)"}},"id":1062,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":829,"src":"5951:11:6","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$831","typeString":"enum Math.Rounding"}},"src":"5939:23:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1065,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1040,"src":"5973:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1066,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1042,"src":"5976:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1067,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1044,"src":"5979:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1064,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"5966:6:6","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5966:25:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5994:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5966:29:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5939:56:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1077,"nodeType":"IfStatement","src":"5935:98:6","trueBody":{"id":1076,"nodeType":"Block","src":"5997:36:6","statements":[{"expression":{"id":1074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1072,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1053,"src":"6011:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1073,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6021:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6011:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1075,"nodeType":"ExpressionStatement","src":"6011:11:6"}]}},{"expression":{"id":1078,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1053,"src":"6049:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1051,"id":1079,"nodeType":"Return","src":"6042:13:6"}]},"documentation":{"id":1038,"nodeType":"StructuredDocumentation","src":"5599:121:6","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"id":1081,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"5734:6:6","nodeType":"FunctionDefinition","parameters":{"id":1048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1040,"mutability":"mutable","name":"x","nameLocation":"5758:1:6","nodeType":"VariableDeclaration","scope":1081,"src":"5750:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1039,"name":"uint256","nodeType":"ElementaryTypeName","src":"5750:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1042,"mutability":"mutable","name":"y","nameLocation":"5777:1:6","nodeType":"VariableDeclaration","scope":1081,"src":"5769:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1041,"name":"uint256","nodeType":"ElementaryTypeName","src":"5769:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1044,"mutability":"mutable","name":"denominator","nameLocation":"5796:11:6","nodeType":"VariableDeclaration","scope":1081,"src":"5788:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1043,"name":"uint256","nodeType":"ElementaryTypeName","src":"5788:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1047,"mutability":"mutable","name":"rounding","nameLocation":"5826:8:6","nodeType":"VariableDeclaration","scope":1081,"src":"5817:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$831","typeString":"enum Math.Rounding"},"typeName":{"id":1046,"nodeType":"UserDefinedTypeName","pathNode":{"id":1045,"name":"Rounding","nodeType":"IdentifierPath","referencedDeclaration":831,"src":"5817:8:6"},"referencedDeclaration":831,"src":"5817:8:6","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$831","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"5740:100:6"},"returnParameters":{"id":1051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1050,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1081,"src":"5864:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1049,"name":"uint256","nodeType":"ElementaryTypeName","src":"5864:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5863:9:6"},"scope":1328,"src":"5725:337:6","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1290,"nodeType":"Block","src":"6338:2149:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1089,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1084,"src":"6352:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1090,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6357:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6352:6:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1095,"nodeType":"IfStatement","src":"6348:45:6","trueBody":{"id":1094,"nodeType":"Block","src":"6360:33:6","statements":[{"expression":{"hexValue":"30","id":1092,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6381:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1088,"id":1093,"nodeType":"Return","src":"6374:8:6"}]}},{"assignments":[1097],"declarations":[{"constant":false,"id":1097,"mutability":"mutable","name":"result","nameLocation":"7066:6:6","nodeType":"VariableDeclaration","scope":1290,"src":"7058:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1096,"name":"uint256","nodeType":"ElementaryTypeName","src":"7058:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1099,"initialValue":{"hexValue":"31","id":1098,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7075:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"7058:18:6"},{"assignments":[1101],"declarations":[{"constant":false,"id":1101,"mutability":"mutable","name":"x","nameLocation":"7094:1:6","nodeType":"VariableDeclaration","scope":1290,"src":"7086:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1100,"name":"uint256","nodeType":"ElementaryTypeName","src":"7086:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1103,"initialValue":{"id":1102,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1084,"src":"7098:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7086:13:6"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1104,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1101,"src":"7113:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7118:3:6","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"7113:8:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7124:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7113:12:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1118,"nodeType":"IfStatement","src":"7109:79:6","trueBody":{"id":1117,"nodeType":"Block","src":"7127:61:6","statements":[{"expression":{"id":1111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1109,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1101,"src":"7141:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7147:3:6","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"7141:9:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1112,"nodeType":"ExpressionStatement","src":"7141:9:6"},{"expression":{"id":1115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1113,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"7164:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3634","id":1114,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7175:2:6","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"7164:13:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1116,"nodeType":"ExpressionStatement","src":"7164:13:6"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1119,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1101,"src":"7201:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7206:2:6","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"7201:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7211:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7201:11:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1133,"nodeType":"IfStatement","src":"7197:77:6","trueBody":{"id":1132,"nodeType":"Block","src":"7214:60:6","statements":[{"expression":{"id":1126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1124,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1101,"src":"7228:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7234:2:6","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"7228:8:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1127,"nodeType":"ExpressionStatement","src":"7228:8:6"},{"expression":{"id":1130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1128,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"7250:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3332","id":1129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7261:2:6","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"7250:13:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1131,"nodeType":"ExpressionStatement","src":"7250:13:6"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1134,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1101,"src":"7287:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7292:2:6","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"7287:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7297:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7287:11:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1148,"nodeType":"IfStatement","src":"7283:77:6","trueBody":{"id":1147,"nodeType":"Block","src":"7300:60:6","statements":[{"expression":{"id":1141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1139,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1101,"src":"7314:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7320:2:6","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"7314:8:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1142,"nodeType":"ExpressionStatement","src":"7314:8:6"},{"expression":{"id":1145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1143,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"7336:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3136","id":1144,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7347:2:6","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"7336:13:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1146,"nodeType":"ExpressionStatement","src":"7336:13:6"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1149,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1101,"src":"7373:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1150,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7378:2:6","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"7373:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1152,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7383:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7373:11:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1163,"nodeType":"IfStatement","src":"7369:76:6","trueBody":{"id":1162,"nodeType":"Block","src":"7386:59:6","statements":[{"expression":{"id":1156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1154,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1101,"src":"7400:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1155,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7406:2:6","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"7400:8:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1157,"nodeType":"ExpressionStatement","src":"7400:8:6"},{"expression":{"id":1160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1158,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"7422:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"38","id":1159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7433:1:6","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"7422:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1161,"nodeType":"ExpressionStatement","src":"7422:12:6"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1164,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1101,"src":"7458:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1165,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7463:1:6","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"7458:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1167,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7467:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7458:10:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1178,"nodeType":"IfStatement","src":"7454:74:6","trueBody":{"id":1177,"nodeType":"Block","src":"7470:58:6","statements":[{"expression":{"id":1171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1169,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1101,"src":"7484:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":1170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7490:1:6","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"7484:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1172,"nodeType":"ExpressionStatement","src":"7484:7:6"},{"expression":{"id":1175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1173,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"7505:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"34","id":1174,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7516:1:6","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"7505:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1176,"nodeType":"ExpressionStatement","src":"7505:12:6"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1179,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1101,"src":"7541:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":1180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7546:1:6","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"7541:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7550:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7541:10:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1193,"nodeType":"IfStatement","src":"7537:74:6","trueBody":{"id":1192,"nodeType":"Block","src":"7553:58:6","statements":[{"expression":{"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1184,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1101,"src":"7567:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7573:1:6","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"7567:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1187,"nodeType":"ExpressionStatement","src":"7567:7:6"},{"expression":{"id":1190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1188,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"7588:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"32","id":1189,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7599:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"7588:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1191,"nodeType":"ExpressionStatement","src":"7588:12:6"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1194,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1101,"src":"7624:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":1195,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7629:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"7624:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1197,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7633:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7624:10:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1204,"nodeType":"IfStatement","src":"7620:53:6","trueBody":{"id":1203,"nodeType":"Block","src":"7636:37:6","statements":[{"expression":{"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1199,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"7650:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"31","id":1200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7661:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7650:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1202,"nodeType":"ExpressionStatement","src":"7650:12:6"}]}},{"id":1289,"nodeType":"UncheckedBlock","src":"8073:408:6","statements":[{"expression":{"id":1214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1205,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"8097:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1206,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"8107:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1207,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1084,"src":"8116:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1208,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"8120:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8116:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8107:19:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1211,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8106:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8131:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8106:26:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8097:35:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1215,"nodeType":"ExpressionStatement","src":"8097:35:6"},{"expression":{"id":1225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1216,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"8146:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1217,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"8156:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1218,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1084,"src":"8165:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1219,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"8169:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8165:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8156:19:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1222,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8155:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8180:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8155:26:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8146:35:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1226,"nodeType":"ExpressionStatement","src":"8146:35:6"},{"expression":{"id":1236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1227,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"8195:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1228,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"8205:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1229,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1084,"src":"8214:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1230,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"8218:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8214:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8205:19:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1233,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8204:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1234,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8229:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8204:26:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8195:35:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1237,"nodeType":"ExpressionStatement","src":"8195:35:6"},{"expression":{"id":1247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1238,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"8244:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1239,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"8254:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1240,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1084,"src":"8263:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1241,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"8267:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8263:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8254:19:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1244,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8253:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8278:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8253:26:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8244:35:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1248,"nodeType":"ExpressionStatement","src":"8244:35:6"},{"expression":{"id":1258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1249,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"8293:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1250,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"8303:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1251,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1084,"src":"8312:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1252,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"8316:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8312:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8303:19:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1255,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8302:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8327:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8302:26:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8293:35:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1259,"nodeType":"ExpressionStatement","src":"8293:35:6"},{"expression":{"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1260,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"8342:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1261,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"8352:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1262,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1084,"src":"8361:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1263,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"8365:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8361:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8352:19:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1266,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8351:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8376:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8351:26:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8342:35:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1270,"nodeType":"ExpressionStatement","src":"8342:35:6"},{"expression":{"id":1280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1271,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"8391:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1272,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"8401:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1273,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1084,"src":"8410:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1274,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"8414:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8410:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8401:19:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1277,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8400:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1278,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8425:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8400:26:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8391:35:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1281,"nodeType":"ExpressionStatement","src":"8391:35:6"},{"expression":{"arguments":[{"id":1283,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"8451:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1284,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1084,"src":"8459:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1285,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"8463:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8459:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1282,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":867,"src":"8447:3:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8447:23:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1088,"id":1288,"nodeType":"Return","src":"8440:30:6"}]}]},"documentation":{"id":1082,"nodeType":"StructuredDocumentation","src":"6068:208:6","text":" @dev Returns the square root of a number. It the number is not a perfect square, the value is rounded down.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"id":1291,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"6290:4:6","nodeType":"FunctionDefinition","parameters":{"id":1085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1084,"mutability":"mutable","name":"a","nameLocation":"6303:1:6","nodeType":"VariableDeclaration","scope":1291,"src":"6295:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1083,"name":"uint256","nodeType":"ElementaryTypeName","src":"6295:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6294:11:6"},"returnParameters":{"id":1088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1087,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1291,"src":"6329:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1086,"name":"uint256","nodeType":"ElementaryTypeName","src":"6329:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6328:9:6"},"scope":1328,"src":"6281:2206:6","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1326,"nodeType":"Block","src":"8663:161:6","statements":[{"assignments":[1303],"declarations":[{"constant":false,"id":1303,"mutability":"mutable","name":"result","nameLocation":"8681:6:6","nodeType":"VariableDeclaration","scope":1326,"src":"8673:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1302,"name":"uint256","nodeType":"ElementaryTypeName","src":"8673:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1307,"initialValue":{"arguments":[{"id":1305,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1294,"src":"8695:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1304,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[1291,1327],"referencedDeclaration":1291,"src":"8690:4:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8690:7:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8673:24:6"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$831","typeString":"enum Math.Rounding"},"id":1311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1308,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1297,"src":"8711:8:6","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$831","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1309,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":831,"src":"8723:8:6","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$831_$","typeString":"type(enum Math.Rounding)"}},"id":1310,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":829,"src":"8723:11:6","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$831","typeString":"enum Math.Rounding"}},"src":"8711:23:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1312,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1303,"src":"8738:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1313,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1303,"src":"8747:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8738:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1315,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1294,"src":"8756:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8738:19:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8711:46:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1323,"nodeType":"IfStatement","src":"8707:88:6","trueBody":{"id":1322,"nodeType":"Block","src":"8759:36:6","statements":[{"expression":{"id":1320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1318,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1303,"src":"8773:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1319,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8783:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8773:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1321,"nodeType":"ExpressionStatement","src":"8773:11:6"}]}},{"expression":{"id":1324,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1303,"src":"8811:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1301,"id":1325,"nodeType":"Return","src":"8804:13:6"}]},"documentation":{"id":1292,"nodeType":"StructuredDocumentation","src":"8493:89:6","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"id":1327,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"8596:4:6","nodeType":"FunctionDefinition","parameters":{"id":1298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1294,"mutability":"mutable","name":"a","nameLocation":"8609:1:6","nodeType":"VariableDeclaration","scope":1327,"src":"8601:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1293,"name":"uint256","nodeType":"ElementaryTypeName","src":"8601:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1297,"mutability":"mutable","name":"rounding","nameLocation":"8621:8:6","nodeType":"VariableDeclaration","scope":1327,"src":"8612:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$831","typeString":"enum Math.Rounding"},"typeName":{"id":1296,"nodeType":"UserDefinedTypeName","pathNode":{"id":1295,"name":"Rounding","nodeType":"IdentifierPath","referencedDeclaration":831,"src":"8612:8:6"},"referencedDeclaration":831,"src":"8612:8:6","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$831","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"8600:30:6"},"returnParameters":{"id":1301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1300,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1327,"src":"8654:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1299,"name":"uint256","nodeType":"ElementaryTypeName","src":"8654:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8653:9:6"},"scope":1328,"src":"8587:237:6","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1329,"src":"202:8624:6","usedErrors":[]}],"src":"103:8724:6"},"id":6},"@openzeppelin/contracts/utils/math/SafeMath.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/SafeMath.sol","exportedSymbols":{"SafeMath":[1640]},"id":1641,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1330,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"107:23:7"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":1331,"nodeType":"StructuredDocumentation","src":"285:196:7","text":" @dev Wrappers over Solidity's arithmetic operations.\n NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler\n now has built in overflow checking."},"fullyImplemented":true,"id":1640,"linearizedBaseContracts":[1640],"name":"SafeMath","nameLocation":"490:8:7","nodeType":"ContractDefinition","nodes":[{"body":{"id":1362,"nodeType":"Block","src":"717:140:7","statements":[{"id":1361,"nodeType":"UncheckedBlock","src":"727:124:7","statements":[{"assignments":[1344],"declarations":[{"constant":false,"id":1344,"mutability":"mutable","name":"c","nameLocation":"759:1:7","nodeType":"VariableDeclaration","scope":1361,"src":"751:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1343,"name":"uint256","nodeType":"ElementaryTypeName","src":"751:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1348,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1345,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1334,"src":"763:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":1346,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1336,"src":"767:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"763:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"751:17:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1349,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1344,"src":"786:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1350,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1334,"src":"790:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"786:5:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1356,"nodeType":"IfStatement","src":"782:28:7","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":1352,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"801:5:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"808:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1354,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"800:10:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":1342,"id":1355,"nodeType":"Return","src":"793:17:7"}},{"expression":{"components":[{"hexValue":"74727565","id":1357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"832:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":1358,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1344,"src":"838:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1359,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"831:9:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":1342,"id":1360,"nodeType":"Return","src":"824:16:7"}]}]},"documentation":{"id":1332,"nodeType":"StructuredDocumentation","src":"505:131:7","text":" @dev Returns the addition of two unsigned integers, with an overflow flag.\n _Available since v3.4._"},"id":1363,"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"650:6:7","nodeType":"FunctionDefinition","parameters":{"id":1337,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1334,"mutability":"mutable","name":"a","nameLocation":"665:1:7","nodeType":"VariableDeclaration","scope":1363,"src":"657:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1333,"name":"uint256","nodeType":"ElementaryTypeName","src":"657:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1336,"mutability":"mutable","name":"b","nameLocation":"676:1:7","nodeType":"VariableDeclaration","scope":1363,"src":"668:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1335,"name":"uint256","nodeType":"ElementaryTypeName","src":"668:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"656:22:7"},"returnParameters":{"id":1342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1339,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1363,"src":"702:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1338,"name":"bool","nodeType":"ElementaryTypeName","src":"702:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1341,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1363,"src":"708:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1340,"name":"uint256","nodeType":"ElementaryTypeName","src":"708:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"701:15:7"},"scope":1640,"src":"641:216:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1390,"nodeType":"Block","src":"1078:113:7","statements":[{"id":1389,"nodeType":"UncheckedBlock","src":"1088:97:7","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1375,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1368,"src":"1116:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1376,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1366,"src":"1120:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1116:5:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1382,"nodeType":"IfStatement","src":"1112:28:7","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":1378,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1131:5:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1138:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1380,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1130:10:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":1374,"id":1381,"nodeType":"Return","src":"1123:17:7"}},{"expression":{"components":[{"hexValue":"74727565","id":1383,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1162:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1384,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1366,"src":"1168:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1385,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1368,"src":"1172:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1168:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1387,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1161:13:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":1374,"id":1388,"nodeType":"Return","src":"1154:20:7"}]}]},"documentation":{"id":1364,"nodeType":"StructuredDocumentation","src":"863:134:7","text":" @dev Returns the subtraction of two unsigned integers, with an overflow flag.\n _Available since v3.4._"},"id":1391,"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"1011:6:7","nodeType":"FunctionDefinition","parameters":{"id":1369,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1366,"mutability":"mutable","name":"a","nameLocation":"1026:1:7","nodeType":"VariableDeclaration","scope":1391,"src":"1018:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1365,"name":"uint256","nodeType":"ElementaryTypeName","src":"1018:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1368,"mutability":"mutable","name":"b","nameLocation":"1037:1:7","nodeType":"VariableDeclaration","scope":1391,"src":"1029:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1367,"name":"uint256","nodeType":"ElementaryTypeName","src":"1029:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1017:22:7"},"returnParameters":{"id":1374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1371,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1391,"src":"1063:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1370,"name":"bool","nodeType":"ElementaryTypeName","src":"1063:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1373,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1391,"src":"1069:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1372,"name":"uint256","nodeType":"ElementaryTypeName","src":"1069:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1062:15:7"},"scope":1640,"src":"1002:189:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1432,"nodeType":"Block","src":"1415:417:7","statements":[{"id":1431,"nodeType":"UncheckedBlock","src":"1425:401:7","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1403,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1394,"src":"1683:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1688:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1683:6:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1410,"nodeType":"IfStatement","src":"1679:28:7","trueBody":{"expression":{"components":[{"hexValue":"74727565","id":1406,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1699:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"30","id":1407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1705:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1408,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1698:9:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":1402,"id":1409,"nodeType":"Return","src":"1691:16:7"}},{"assignments":[1412],"declarations":[{"constant":false,"id":1412,"mutability":"mutable","name":"c","nameLocation":"1729:1:7","nodeType":"VariableDeclaration","scope":1431,"src":"1721:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1411,"name":"uint256","nodeType":"ElementaryTypeName","src":"1721:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1416,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1413,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1394,"src":"1733:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1414,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1396,"src":"1737:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1733:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1721:17:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1417,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1412,"src":"1756:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1418,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1394,"src":"1760:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1756:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":1420,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1396,"src":"1765:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1756:10:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1426,"nodeType":"IfStatement","src":"1752:33:7","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":1422,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1776:5:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1783:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1424,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1775:10:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":1402,"id":1425,"nodeType":"Return","src":"1768:17:7"}},{"expression":{"components":[{"hexValue":"74727565","id":1427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1807:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":1428,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1412,"src":"1813:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1429,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1806:9:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":1402,"id":1430,"nodeType":"Return","src":"1799:16:7"}]}]},"documentation":{"id":1392,"nodeType":"StructuredDocumentation","src":"1197:137:7","text":" @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n _Available since v3.4._"},"id":1433,"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"1348:6:7","nodeType":"FunctionDefinition","parameters":{"id":1397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1394,"mutability":"mutable","name":"a","nameLocation":"1363:1:7","nodeType":"VariableDeclaration","scope":1433,"src":"1355:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1393,"name":"uint256","nodeType":"ElementaryTypeName","src":"1355:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1396,"mutability":"mutable","name":"b","nameLocation":"1374:1:7","nodeType":"VariableDeclaration","scope":1433,"src":"1366:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1395,"name":"uint256","nodeType":"ElementaryTypeName","src":"1366:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1354:22:7"},"returnParameters":{"id":1402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1399,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1433,"src":"1400:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1398,"name":"bool","nodeType":"ElementaryTypeName","src":"1400:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1401,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1433,"src":"1406:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1400,"name":"uint256","nodeType":"ElementaryTypeName","src":"1406:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1399:15:7"},"scope":1640,"src":"1339:493:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1460,"nodeType":"Block","src":"2057:114:7","statements":[{"id":1459,"nodeType":"UncheckedBlock","src":"2067:98:7","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1445,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1438,"src":"2095:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1446,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2100:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2095:6:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1452,"nodeType":"IfStatement","src":"2091:29:7","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":1448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2111:5:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1449,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2118:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1450,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2110:10:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":1444,"id":1451,"nodeType":"Return","src":"2103:17:7"}},{"expression":{"components":[{"hexValue":"74727565","id":1453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2142:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1454,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1436,"src":"2148:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1455,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1438,"src":"2152:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2148:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1457,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2141:13:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":1444,"id":1458,"nodeType":"Return","src":"2134:20:7"}]}]},"documentation":{"id":1434,"nodeType":"StructuredDocumentation","src":"1838:138:7","text":" @dev Returns the division of two unsigned integers, with a division by zero flag.\n _Available since v3.4._"},"id":1461,"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"1990:6:7","nodeType":"FunctionDefinition","parameters":{"id":1439,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1436,"mutability":"mutable","name":"a","nameLocation":"2005:1:7","nodeType":"VariableDeclaration","scope":1461,"src":"1997:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1435,"name":"uint256","nodeType":"ElementaryTypeName","src":"1997:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1438,"mutability":"mutable","name":"b","nameLocation":"2016:1:7","nodeType":"VariableDeclaration","scope":1461,"src":"2008:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1437,"name":"uint256","nodeType":"ElementaryTypeName","src":"2008:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1996:22:7"},"returnParameters":{"id":1444,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1441,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1461,"src":"2042:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1440,"name":"bool","nodeType":"ElementaryTypeName","src":"2042:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1443,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1461,"src":"2048:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1442,"name":"uint256","nodeType":"ElementaryTypeName","src":"2048:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2041:15:7"},"scope":1640,"src":"1981:190:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1488,"nodeType":"Block","src":"2406:114:7","statements":[{"id":1487,"nodeType":"UncheckedBlock","src":"2416:98:7","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1473,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1466,"src":"2444:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2449:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2444:6:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1480,"nodeType":"IfStatement","src":"2440:29:7","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":1476,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2460:5:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1477,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2467:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1478,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2459:10:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":1472,"id":1479,"nodeType":"Return","src":"2452:17:7"}},{"expression":{"components":[{"hexValue":"74727565","id":1481,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2491:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1482,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1464,"src":"2497:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":1483,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1466,"src":"2501:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2497:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1485,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2490:13:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":1472,"id":1486,"nodeType":"Return","src":"2483:20:7"}]}]},"documentation":{"id":1462,"nodeType":"StructuredDocumentation","src":"2177:148:7","text":" @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n _Available since v3.4._"},"id":1489,"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"2339:6:7","nodeType":"FunctionDefinition","parameters":{"id":1467,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1464,"mutability":"mutable","name":"a","nameLocation":"2354:1:7","nodeType":"VariableDeclaration","scope":1489,"src":"2346:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1463,"name":"uint256","nodeType":"ElementaryTypeName","src":"2346:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1466,"mutability":"mutable","name":"b","nameLocation":"2365:1:7","nodeType":"VariableDeclaration","scope":1489,"src":"2357:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1465,"name":"uint256","nodeType":"ElementaryTypeName","src":"2357:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2345:22:7"},"returnParameters":{"id":1472,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1469,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1489,"src":"2391:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1468,"name":"bool","nodeType":"ElementaryTypeName","src":"2391:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1471,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1489,"src":"2397:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1470,"name":"uint256","nodeType":"ElementaryTypeName","src":"2397:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2390:15:7"},"scope":1640,"src":"2330:190:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1503,"nodeType":"Block","src":"2822:29:7","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1499,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1492,"src":"2839:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":1500,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1494,"src":"2843:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2839:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1498,"id":1502,"nodeType":"Return","src":"2832:12:7"}]},"documentation":{"id":1490,"nodeType":"StructuredDocumentation","src":"2526:224:7","text":" @dev Returns the addition of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `+` operator.\n Requirements:\n - Addition cannot overflow."},"id":1504,"implemented":true,"kind":"function","modifiers":[],"name":"add","nameLocation":"2764:3:7","nodeType":"FunctionDefinition","parameters":{"id":1495,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1492,"mutability":"mutable","name":"a","nameLocation":"2776:1:7","nodeType":"VariableDeclaration","scope":1504,"src":"2768:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1491,"name":"uint256","nodeType":"ElementaryTypeName","src":"2768:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1494,"mutability":"mutable","name":"b","nameLocation":"2787:1:7","nodeType":"VariableDeclaration","scope":1504,"src":"2779:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1493,"name":"uint256","nodeType":"ElementaryTypeName","src":"2779:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2767:22:7"},"returnParameters":{"id":1498,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1497,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1504,"src":"2813:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1496,"name":"uint256","nodeType":"ElementaryTypeName","src":"2813:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2812:9:7"},"scope":1640,"src":"2755:96:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1518,"nodeType":"Block","src":"3189:29:7","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1514,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1507,"src":"3206:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1515,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1509,"src":"3210:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3206:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1513,"id":1517,"nodeType":"Return","src":"3199:12:7"}]},"documentation":{"id":1505,"nodeType":"StructuredDocumentation","src":"2857:260:7","text":" @dev Returns the subtraction of two unsigned integers, reverting on\n overflow (when the result is negative).\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow."},"id":1519,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nameLocation":"3131:3:7","nodeType":"FunctionDefinition","parameters":{"id":1510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1507,"mutability":"mutable","name":"a","nameLocation":"3143:1:7","nodeType":"VariableDeclaration","scope":1519,"src":"3135:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1506,"name":"uint256","nodeType":"ElementaryTypeName","src":"3135:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1509,"mutability":"mutable","name":"b","nameLocation":"3154:1:7","nodeType":"VariableDeclaration","scope":1519,"src":"3146:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1508,"name":"uint256","nodeType":"ElementaryTypeName","src":"3146:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3134:22:7"},"returnParameters":{"id":1513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1512,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1519,"src":"3180:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1511,"name":"uint256","nodeType":"ElementaryTypeName","src":"3180:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3179:9:7"},"scope":1640,"src":"3122:96:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1533,"nodeType":"Block","src":"3532:29:7","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1529,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1522,"src":"3549:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1530,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1524,"src":"3553:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3549:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1528,"id":1532,"nodeType":"Return","src":"3542:12:7"}]},"documentation":{"id":1520,"nodeType":"StructuredDocumentation","src":"3224:236:7","text":" @dev Returns the multiplication of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `*` operator.\n Requirements:\n - Multiplication cannot overflow."},"id":1534,"implemented":true,"kind":"function","modifiers":[],"name":"mul","nameLocation":"3474:3:7","nodeType":"FunctionDefinition","parameters":{"id":1525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1522,"mutability":"mutable","name":"a","nameLocation":"3486:1:7","nodeType":"VariableDeclaration","scope":1534,"src":"3478:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1521,"name":"uint256","nodeType":"ElementaryTypeName","src":"3478:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1524,"mutability":"mutable","name":"b","nameLocation":"3497:1:7","nodeType":"VariableDeclaration","scope":1534,"src":"3489:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1523,"name":"uint256","nodeType":"ElementaryTypeName","src":"3489:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3477:22:7"},"returnParameters":{"id":1528,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1527,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1534,"src":"3523:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1526,"name":"uint256","nodeType":"ElementaryTypeName","src":"3523:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3522:9:7"},"scope":1640,"src":"3465:96:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1548,"nodeType":"Block","src":"3917:29:7","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1544,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1537,"src":"3934:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1545,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1539,"src":"3938:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3934:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1543,"id":1547,"nodeType":"Return","src":"3927:12:7"}]},"documentation":{"id":1535,"nodeType":"StructuredDocumentation","src":"3567:278:7","text":" @dev Returns the integer division of two unsigned integers, reverting on\n division by zero. The result is rounded towards zero.\n Counterpart to Solidity's `/` operator.\n Requirements:\n - The divisor cannot be zero."},"id":1549,"implemented":true,"kind":"function","modifiers":[],"name":"div","nameLocation":"3859:3:7","nodeType":"FunctionDefinition","parameters":{"id":1540,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1537,"mutability":"mutable","name":"a","nameLocation":"3871:1:7","nodeType":"VariableDeclaration","scope":1549,"src":"3863:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1536,"name":"uint256","nodeType":"ElementaryTypeName","src":"3863:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1539,"mutability":"mutable","name":"b","nameLocation":"3882:1:7","nodeType":"VariableDeclaration","scope":1549,"src":"3874:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1538,"name":"uint256","nodeType":"ElementaryTypeName","src":"3874:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3862:22:7"},"returnParameters":{"id":1543,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1542,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1549,"src":"3908:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1541,"name":"uint256","nodeType":"ElementaryTypeName","src":"3908:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3907:9:7"},"scope":1640,"src":"3850:96:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1563,"nodeType":"Block","src":"4466:29:7","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1559,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1552,"src":"4483:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":1560,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1554,"src":"4487:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4483:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1558,"id":1562,"nodeType":"Return","src":"4476:12:7"}]},"documentation":{"id":1550,"nodeType":"StructuredDocumentation","src":"3952:442:7","text":" @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n reverting when dividing by zero.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."},"id":1564,"implemented":true,"kind":"function","modifiers":[],"name":"mod","nameLocation":"4408:3:7","nodeType":"FunctionDefinition","parameters":{"id":1555,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1552,"mutability":"mutable","name":"a","nameLocation":"4420:1:7","nodeType":"VariableDeclaration","scope":1564,"src":"4412:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1551,"name":"uint256","nodeType":"ElementaryTypeName","src":"4412:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1554,"mutability":"mutable","name":"b","nameLocation":"4431:1:7","nodeType":"VariableDeclaration","scope":1564,"src":"4423:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1553,"name":"uint256","nodeType":"ElementaryTypeName","src":"4423:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4411:22:7"},"returnParameters":{"id":1558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1557,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1564,"src":"4457:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1556,"name":"uint256","nodeType":"ElementaryTypeName","src":"4457:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4456:9:7"},"scope":1640,"src":"4399:96:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1588,"nodeType":"Block","src":"5084:106:7","statements":[{"id":1587,"nodeType":"UncheckedBlock","src":"5094:90:7","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1577,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1569,"src":"5126:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":1578,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1567,"src":"5131:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5126:6:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1580,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1571,"src":"5134:12:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1576,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5118:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5118:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1582,"nodeType":"ExpressionStatement","src":"5118:29:7"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1583,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1567,"src":"5168:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1584,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1569,"src":"5172:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5168:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1575,"id":1586,"nodeType":"Return","src":"5161:12:7"}]}]},"documentation":{"id":1565,"nodeType":"StructuredDocumentation","src":"4501:453:7","text":" @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n overflow (when the result is negative).\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {trySub}.\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow."},"id":1589,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nameLocation":"4968:3:7","nodeType":"FunctionDefinition","parameters":{"id":1572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1567,"mutability":"mutable","name":"a","nameLocation":"4989:1:7","nodeType":"VariableDeclaration","scope":1589,"src":"4981:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1566,"name":"uint256","nodeType":"ElementaryTypeName","src":"4981:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1569,"mutability":"mutable","name":"b","nameLocation":"5008:1:7","nodeType":"VariableDeclaration","scope":1589,"src":"5000:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1568,"name":"uint256","nodeType":"ElementaryTypeName","src":"5000:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1571,"mutability":"mutable","name":"errorMessage","nameLocation":"5033:12:7","nodeType":"VariableDeclaration","scope":1589,"src":"5019:26:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1570,"name":"string","nodeType":"ElementaryTypeName","src":"5019:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4971:80:7"},"returnParameters":{"id":1575,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1574,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1589,"src":"5075:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1573,"name":"uint256","nodeType":"ElementaryTypeName","src":"5075:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5074:9:7"},"scope":1640,"src":"4959:231:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1613,"nodeType":"Block","src":"5799:105:7","statements":[{"id":1612,"nodeType":"UncheckedBlock","src":"5809:89:7","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1602,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1594,"src":"5841:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1603,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5845:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5841:5:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1605,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1596,"src":"5848:12:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1601,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5833:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5833:28:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1607,"nodeType":"ExpressionStatement","src":"5833:28:7"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1608,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1592,"src":"5882:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1609,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1594,"src":"5886:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5882:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1600,"id":1611,"nodeType":"Return","src":"5875:12:7"}]}]},"documentation":{"id":1590,"nodeType":"StructuredDocumentation","src":"5196:473:7","text":" @dev Returns the integer division of two unsigned integers, reverting with custom message on\n division by zero. The result is rounded towards zero.\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."},"id":1614,"implemented":true,"kind":"function","modifiers":[],"name":"div","nameLocation":"5683:3:7","nodeType":"FunctionDefinition","parameters":{"id":1597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1592,"mutability":"mutable","name":"a","nameLocation":"5704:1:7","nodeType":"VariableDeclaration","scope":1614,"src":"5696:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1591,"name":"uint256","nodeType":"ElementaryTypeName","src":"5696:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1594,"mutability":"mutable","name":"b","nameLocation":"5723:1:7","nodeType":"VariableDeclaration","scope":1614,"src":"5715:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1593,"name":"uint256","nodeType":"ElementaryTypeName","src":"5715:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1596,"mutability":"mutable","name":"errorMessage","nameLocation":"5748:12:7","nodeType":"VariableDeclaration","scope":1614,"src":"5734:26:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1595,"name":"string","nodeType":"ElementaryTypeName","src":"5734:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5686:80:7"},"returnParameters":{"id":1600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1599,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1614,"src":"5790:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1598,"name":"uint256","nodeType":"ElementaryTypeName","src":"5790:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5789:9:7"},"scope":1640,"src":"5674:230:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1638,"nodeType":"Block","src":"6675:105:7","statements":[{"id":1637,"nodeType":"UncheckedBlock","src":"6685:89:7","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1627,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1619,"src":"6717:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1628,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6721:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6717:5:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1630,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1621,"src":"6724:12:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1626,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6709:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6709:28:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1632,"nodeType":"ExpressionStatement","src":"6709:28:7"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1633,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1617,"src":"6758:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":1634,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1619,"src":"6762:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6758:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1625,"id":1636,"nodeType":"Return","src":"6751:12:7"}]}]},"documentation":{"id":1615,"nodeType":"StructuredDocumentation","src":"5910:635:7","text":" @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n reverting with custom message when dividing by zero.\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {tryMod}.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."},"id":1639,"implemented":true,"kind":"function","modifiers":[],"name":"mod","nameLocation":"6559:3:7","nodeType":"FunctionDefinition","parameters":{"id":1622,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1617,"mutability":"mutable","name":"a","nameLocation":"6580:1:7","nodeType":"VariableDeclaration","scope":1639,"src":"6572:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1616,"name":"uint256","nodeType":"ElementaryTypeName","src":"6572:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1619,"mutability":"mutable","name":"b","nameLocation":"6599:1:7","nodeType":"VariableDeclaration","scope":1639,"src":"6591:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1618,"name":"uint256","nodeType":"ElementaryTypeName","src":"6591:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1621,"mutability":"mutable","name":"errorMessage","nameLocation":"6624:12:7","nodeType":"VariableDeclaration","scope":1639,"src":"6610:26:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1620,"name":"string","nodeType":"ElementaryTypeName","src":"6610:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6562:80:7"},"returnParameters":{"id":1625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1624,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1639,"src":"6666:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1623,"name":"uint256","nodeType":"ElementaryTypeName","src":"6666:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6665:9:7"},"scope":1640,"src":"6550:230:7","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1641,"src":"482:6300:7","usedErrors":[]}],"src":"107:6676:7"},"id":7},"contracts/interfaces/IEpoch.sol":{"ast":{"absolutePath":"contracts/interfaces/IEpoch.sol","exportedSymbols":{"IEpoch":[1678]},"id":1679,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1642,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"33:23:8"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":1678,"linearizedBaseContracts":[1678],"name":"IEpoch","nameLocation":"68:6:8","nodeType":"ContractDefinition","nodes":[{"functionSelector":"6a2ab602","id":1647,"implemented":false,"kind":"function","modifiers":[],"name":"callable","nameLocation":"88:8:8","nodeType":"FunctionDefinition","parameters":{"id":1643,"nodeType":"ParameterList","parameters":[],"src":"96:2:8"},"returnParameters":{"id":1646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1645,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1647,"src":"122:4:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1644,"name":"bool","nodeType":"ElementaryTypeName","src":"122:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"121:6:8"},"scope":1678,"src":"79:49:8","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"398bac63","id":1652,"implemented":false,"kind":"function","modifiers":[],"name":"getLastEpoch","nameLocation":"141:12:8","nodeType":"FunctionDefinition","parameters":{"id":1648,"nodeType":"ParameterList","parameters":[],"src":"153:2:8"},"returnParameters":{"id":1651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1650,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1652,"src":"179:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1649,"name":"uint256","nodeType":"ElementaryTypeName","src":"179:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"178:9:8"},"scope":1678,"src":"132:56:8","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"b97dd9e2","id":1657,"implemented":false,"kind":"function","modifiers":[],"name":"getCurrentEpoch","nameLocation":"201:15:8","nodeType":"FunctionDefinition","parameters":{"id":1653,"nodeType":"ParameterList","parameters":[],"src":"216:2:8"},"returnParameters":{"id":1656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1655,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1657,"src":"242:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1654,"name":"uint256","nodeType":"ElementaryTypeName","src":"242:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"241:9:8"},"scope":1678,"src":"192:59:8","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"efe97d05","id":1662,"implemented":false,"kind":"function","modifiers":[],"name":"getNextEpoch","nameLocation":"264:12:8","nodeType":"FunctionDefinition","parameters":{"id":1658,"nodeType":"ParameterList","parameters":[],"src":"276:2:8"},"returnParameters":{"id":1661,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1660,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1662,"src":"302:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1659,"name":"uint256","nodeType":"ElementaryTypeName","src":"302:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"301:9:8"},"scope":1678,"src":"255:56:8","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"c5967c26","id":1667,"implemented":false,"kind":"function","modifiers":[],"name":"nextEpochPoint","nameLocation":"324:14:8","nodeType":"FunctionDefinition","parameters":{"id":1663,"nodeType":"ParameterList","parameters":[],"src":"338:2:8"},"returnParameters":{"id":1666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1665,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1667,"src":"364:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1664,"name":"uint256","nodeType":"ElementaryTypeName","src":"364:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"363:9:8"},"scope":1678,"src":"315:58:8","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"1ed24195","id":1672,"implemented":false,"kind":"function","modifiers":[],"name":"getPeriod","nameLocation":"386:9:8","nodeType":"FunctionDefinition","parameters":{"id":1668,"nodeType":"ParameterList","parameters":[],"src":"395:2:8"},"returnParameters":{"id":1671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1670,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1672,"src":"421:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1669,"name":"uint256","nodeType":"ElementaryTypeName","src":"421:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"420:9:8"},"scope":1678,"src":"377:53:8","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"c828371e","id":1677,"implemented":false,"kind":"function","modifiers":[],"name":"getStartTime","nameLocation":"443:12:8","nodeType":"FunctionDefinition","parameters":{"id":1673,"nodeType":"ParameterList","parameters":[],"src":"455:2:8"},"returnParameters":{"id":1676,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1675,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1677,"src":"481:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1674,"name":"uint256","nodeType":"ElementaryTypeName","src":"481:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"480:9:8"},"scope":1678,"src":"434:56:8","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1679,"src":"58:434:8","usedErrors":[]}],"src":"33:460:8"},"id":8},"contracts/interfaces/KeeperCompatibleInterface.sol":{"ast":{"absolutePath":"contracts/interfaces/KeeperCompatibleInterface.sol","exportedSymbols":{"KeeperCompatibleInterface":[1697]},"id":1698,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1680,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:9"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":1697,"linearizedBaseContracts":[1697],"name":"KeeperCompatibleInterface","nameLocation":"67:25:9","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1681,"nodeType":"StructuredDocumentation","src":"97:985:9","text":" @notice method that is simulated by the keepers to see if any work actually\n needs to be performed. This method does does not actually need to be\n executable, and since it is only ever simulated it can consume lots of gas.\n @dev To ensure that it is never called, you may want to add the\n cannotExecute modifier from KeeperBase to your implementation of this\n method.\n @param checkData specified in the upkeep registration so it is always the\n same for a registered upkeep. This can easily be broken down into specific\n arguments using `abi.decode`, so multiple upkeeps can be registered on the\n same contract and easily differentiated by the contract.\n @return upkeepNeeded boolean to indicate whether the keeper should call\n performUpkeep or not.\n @return performData bytes that the keeper should call performUpkeep with, if\n upkeep is needed. If you would like to encode data to decode later, try\n `abi.encode`."},"functionSelector":"6e04ff0d","id":1690,"implemented":false,"kind":"function","modifiers":[],"name":"checkUpkeep","nameLocation":"1094:11:9","nodeType":"FunctionDefinition","parameters":{"id":1684,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1683,"mutability":"mutable","name":"checkData","nameLocation":"1121:9:9","nodeType":"VariableDeclaration","scope":1690,"src":"1106:24:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1682,"name":"bytes","nodeType":"ElementaryTypeName","src":"1106:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1105:26:9"},"returnParameters":{"id":1689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1686,"mutability":"mutable","name":"upkeepNeeded","nameLocation":"1163:12:9","nodeType":"VariableDeclaration","scope":1690,"src":"1158:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1685,"name":"bool","nodeType":"ElementaryTypeName","src":"1158:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1688,"mutability":"mutable","name":"performData","nameLocation":"1190:11:9","nodeType":"VariableDeclaration","scope":1690,"src":"1177:24:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1687,"name":"bytes","nodeType":"ElementaryTypeName","src":"1177:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1157:45:9"},"scope":1697,"src":"1085:118:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1691,"nodeType":"StructuredDocumentation","src":"1207:1003:9","text":" @notice method that is actually executed by the keepers, via the registry.\n The data returned by the checkUpkeep simulation will be passed into\n this method to actually be executed.\n @dev The input to this method should not be trusted, and the caller of the\n method should not even be restricted to any single registry. Anyone should\n be able call it, and the input should be validated, there is no guarantee\n that the data passed in is the performData returned from checkUpkeep. This\n could happen due to malicious keepers, racing keepers, or simply a state\n change while the performUpkeep transaction is waiting for confirmation.\n Always validate the data passed in.\n @param performData is the data which was passed back from the checkData\n simulation. If it is encoded, it can easily be decoded into other types by\n calling `abi.decode`. This data should not be trusted, and should be\n validated against the contract's current state."},"functionSelector":"4585e33b","id":1696,"implemented":false,"kind":"function","modifiers":[],"name":"performUpkeep","nameLocation":"2222:13:9","nodeType":"FunctionDefinition","parameters":{"id":1694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1693,"mutability":"mutable","name":"performData","nameLocation":"2251:11:9","nodeType":"VariableDeclaration","scope":1696,"src":"2236:26:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1692,"name":"bytes","nodeType":"ElementaryTypeName","src":"2236:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2235:28:9"},"returnParameters":{"id":1695,"nodeType":"ParameterList","parameters":[],"src":"2272:0:9"},"scope":1697,"src":"2213:60:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1698,"src":"57:2218:9","usedErrors":[]}],"src":"32:2244:9"},"id":9},"contracts/splitters/FeesSplitter.sol":{"ast":{"absolutePath":"contracts/splitters/FeesSplitter.sol","exportedSymbols":{"FeesSplitter":[1981],"IERC20":[190],"Ownable":[112],"SafeERC20":[507]},"id":1982,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1699,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"46:23:10"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","file":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","id":1702,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1982,"sourceUnit":508,"src":"71:90:10","symbolAliases":[{"foreign":{"id":1700,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"src":"79:9:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1701,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"src":"90:6:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"@openzeppelin/contracts/access/Ownable.sol","id":1704,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1982,"sourceUnit":113,"src":"162:67:10","symbolAliases":[{"foreign":{"id":1703,"name":"Ownable","nodeType":"Identifier","overloadedDeclarations":[],"src":"170:7:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1705,"name":"Ownable","nodeType":"IdentifierPath","referencedDeclaration":112,"src":"256:7:10"},"id":1706,"nodeType":"InheritanceSpecifier","src":"256:7:10"}],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":1981,"linearizedBaseContracts":[1981,112,824],"name":"FeesSplitter","nameLocation":"240:12:10","nodeType":"ContractDefinition","nodes":[{"id":1710,"libraryName":{"id":1707,"name":"SafeERC20","nodeType":"IdentifierPath","referencedDeclaration":507,"src":"276:9:10"},"nodeType":"UsingForDirective","src":"270:27:10","typeName":{"id":1709,"nodeType":"UserDefinedTypeName","pathNode":{"id":1708,"name":"IERC20","nodeType":"IdentifierPath","referencedDeclaration":190,"src":"290:6:10"},"referencedDeclaration":190,"src":"290:6:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}}},{"anonymous":false,"id":1716,"name":"ETHReceived","nameLocation":"309:11:10","nodeType":"EventDefinition","parameters":{"id":1715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1712,"indexed":false,"mutability":"mutable","name":"from","nameLocation":"329:4:10","nodeType":"VariableDeclaration","scope":1716,"src":"321:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1711,"name":"address","nodeType":"ElementaryTypeName","src":"321:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1714,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"343:6:10","nodeType":"VariableDeclaration","scope":1716,"src":"335:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1713,"name":"uint256","nodeType":"ElementaryTypeName","src":"335:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"320:30:10"},"src":"303:48:10"},{"constant":true,"functionSelector":"3f26479e","id":1719,"mutability":"constant","name":"PERCENTAGE_SCALE","nameLocation":"381:16:10","nodeType":"VariableDeclaration","scope":1981,"src":"357:46:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1717,"name":"uint256","nodeType":"ElementaryTypeName","src":"357:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"316536","id":1718,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"400:3:10","typeDescriptions":{"typeIdentifier":"t_rational_1000000_by_1","typeString":"int_const 1000000"},"value":"1e6"},"visibility":"public"},{"constant":false,"functionSelector":"f2a40db8","id":1722,"mutability":"mutable","name":"accounts","nameLocation":"426:8:10","nodeType":"VariableDeclaration","scope":1981,"src":"409:25:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[]"},"typeName":{"baseType":{"id":1720,"name":"address","nodeType":"ElementaryTypeName","src":"409:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1721,"nodeType":"ArrayTypeName","src":"409:9:10","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"public"},{"constant":false,"functionSelector":"003f619d","id":1725,"mutability":"mutable","name":"percentAllocations","nameLocation":"456:18:10","nodeType":"VariableDeclaration","scope":1981,"src":"440:34:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage","typeString":"uint32[]"},"typeName":{"baseType":{"id":1723,"name":"uint32","nodeType":"ElementaryTypeName","src":"440:6:10","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":1724,"nodeType":"ArrayTypeName","src":"440:8:10","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}},"visibility":"public"},{"body":{"id":1746,"nodeType":"Block","src":"562:134:10","statements":[{"expression":{"id":1736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1734,"name":"accounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"572:8:10","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1735,"name":"_accounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1728,"src":"583:9:10","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"572:20:10","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":1737,"nodeType":"ExpressionStatement","src":"572:20:10"},{"expression":{"id":1740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1738,"name":"percentAllocations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1725,"src":"602:18:10","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage","typeString":"uint32[] storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1739,"name":"_percentAllocations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1731,"src":"623:19:10","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"src":"602:40:10","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage","typeString":"uint32[] storage ref"}},"id":1741,"nodeType":"ExpressionStatement","src":"602:40:10"},{"expression":{"arguments":[{"id":1743,"name":"_percentAllocations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1731,"src":"669:19:10","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}],"id":1742,"name":"checkPercentages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1927,"src":"652:16:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_uint32_$dyn_memory_ptr_$returns$__$","typeString":"function (uint32[] memory) view"}},"id":1744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"652:37:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1745,"nodeType":"ExpressionStatement","src":"652:37:10"}]},"id":1747,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1728,"mutability":"mutable","name":"_accounts","nameLocation":"510:9:10","nodeType":"VariableDeclaration","scope":1747,"src":"493:26:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1726,"name":"address","nodeType":"ElementaryTypeName","src":"493:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1727,"nodeType":"ArrayTypeName","src":"493:9:10","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":1731,"mutability":"mutable","name":"_percentAllocations","nameLocation":"537:19:10","nodeType":"VariableDeclaration","scope":1747,"src":"521:35:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[]"},"typeName":{"baseType":{"id":1729,"name":"uint32","nodeType":"ElementaryTypeName","src":"521:6:10","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":1730,"nodeType":"ArrayTypeName","src":"521:8:10","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}},"visibility":"internal"}],"src":"492:65:10"},"returnParameters":{"id":1733,"nodeType":"ParameterList","parameters":[],"src":"562:0:10"},"scope":1981,"src":"481:215:10","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":1757,"nodeType":"Block","src":"737:58:10","statements":[{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1751,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":814,"src":"764:10:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"764:12:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1753,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"778:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"778:9:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1750,"name":"ETHReceived","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1716,"src":"752:11:10","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":1755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"752:36:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1756,"nodeType":"EmitStatement","src":"747:41:10"}]},"id":1758,"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1748,"nodeType":"ParameterList","parameters":[],"src":"709:2:10"},"returnParameters":{"id":1749,"nodeType":"ParameterList","parameters":[],"src":"737:0:10"},"scope":1981,"src":"702:93:10","stateMutability":"payable","virtual":true,"visibility":"external"},{"body":{"id":1811,"nodeType":"Block","src":"833:677:10","statements":[{"assignments":[1762],"declarations":[{"constant":false,"id":1762,"mutability":"mutable","name":"amountToSplit","nameLocation":"851:13:10","nodeType":"VariableDeclaration","scope":1811,"src":"843:21:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1761,"name":"uint256","nodeType":"ElementaryTypeName","src":"843:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1768,"initialValue":{"expression":{"arguments":[{"id":1765,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"875:4:10","typeDescriptions":{"typeIdentifier":"t_contract$_FeesSplitter_$1981","typeString":"contract FeesSplitter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_FeesSplitter_$1981","typeString":"contract FeesSplitter"}],"id":1764,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"867:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1763,"name":"address","nodeType":"ElementaryTypeName","src":"867:7:10","typeDescriptions":{}}},"id":1766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"867:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"867:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"843:45:10"},{"assignments":[1770],"declarations":[{"constant":false,"id":1770,"mutability":"mutable","name":"accountsLength","nameLocation":"1051:14:10","nodeType":"VariableDeclaration","scope":1811,"src":"1043:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1769,"name":"uint256","nodeType":"ElementaryTypeName","src":"1043:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1773,"initialValue":{"expression":{"id":1771,"name":"accounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"1068:8:10","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":1772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1068:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1043:40:10"},{"body":{"id":1809,"nodeType":"Block","src":"1138:366:10","statements":[{"assignments":[1785],"declarations":[{"constant":false,"id":1785,"mutability":"mutable","name":"amt","nameLocation":"1232:3:10","nodeType":"VariableDeclaration","scope":1809,"src":"1224:11:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1784,"name":"uint256","nodeType":"ElementaryTypeName","src":"1224:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1792,"initialValue":{"arguments":[{"id":1787,"name":"amountToSplit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1762,"src":"1280:13:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":1788,"name":"percentAllocations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1725,"src":"1311:18:10","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage","typeString":"uint32[] storage ref"}},"id":1790,"indexExpression":{"id":1789,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1775,"src":"1330:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1311:21:10","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":1786,"name":"_scaleAmountByPercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1980,"src":"1238:24:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":1791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1238:108:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1224:122:10"},{"assignments":[1794,null],"declarations":[{"constant":false,"id":1794,"mutability":"mutable","name":"success","nameLocation":"1367:7:10","nodeType":"VariableDeclaration","scope":1809,"src":"1362:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1793,"name":"bool","nodeType":"ElementaryTypeName","src":"1362:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":1803,"initialValue":{"arguments":[{"hexValue":"","id":1801,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1409:2:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"baseExpression":{"id":1795,"name":"accounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"1380:8:10","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":1797,"indexExpression":{"id":1796,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1775,"src":"1389:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1380:11:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"1380:16:10","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":1800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":1799,"name":"amt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1785,"src":"1404:3:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"1380:28:10","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":1802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1380:32:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1361:51:10"},{"expression":{"arguments":[{"id":1805,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1794,"src":"1434:7:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"756e61626c6520746f2073656e64206574682c20726563697069656e74206d61792068617665207265766572746564","id":1806,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1443:49:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_6ef19cfd53d6f721536543241689f044ea77579f20884e49f0e56ef7d564423b","typeString":"literal_string \"unable to send eth, recipient may have reverted\""},"value":"unable to send eth, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6ef19cfd53d6f721536543241689f044ea77579f20884e49f0e56ef7d564423b","typeString":"literal_string \"unable to send eth, recipient may have reverted\""}],"id":1804,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1426:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1426:67:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1808,"nodeType":"ExpressionStatement","src":"1426:67:10"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1778,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1775,"src":"1113:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1779,"name":"accountsLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1770,"src":"1117:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1113:18:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1810,"initializationExpression":{"assignments":[1775],"declarations":[{"constant":false,"id":1775,"mutability":"mutable","name":"i","nameLocation":"1106:1:10","nodeType":"VariableDeclaration","scope":1810,"src":"1098:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1774,"name":"uint256","nodeType":"ElementaryTypeName","src":"1098:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1777,"initialValue":{"hexValue":"30","id":1776,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1110:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1098:13:10"},"loopExpression":{"expression":{"id":1782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"1133:3:10","subExpression":{"id":1781,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1775,"src":"1135:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1783,"nodeType":"ExpressionStatement","src":"1133:3:10"},"nodeType":"ForStatement","src":"1093:411:10"}]},"functionSelector":"b8b9b549","id":1812,"implemented":true,"kind":"function","modifiers":[],"name":"distributeETH","nameLocation":"810:13:10","nodeType":"FunctionDefinition","parameters":{"id":1759,"nodeType":"ParameterList","parameters":[],"src":"823:2:10"},"returnParameters":{"id":1760,"nodeType":"ParameterList","parameters":[],"src":"833:0:10"},"scope":1981,"src":"801:709:10","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":1863,"nodeType":"Block","src":"1562:441:10","statements":[{"assignments":[1819],"declarations":[{"constant":false,"id":1819,"mutability":"mutable","name":"amountToSplit","nameLocation":"1580:13:10","nodeType":"VariableDeclaration","scope":1863,"src":"1572:21:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1818,"name":"uint256","nodeType":"ElementaryTypeName","src":"1572:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1827,"initialValue":{"arguments":[{"arguments":[{"id":1824,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1620:4:10","typeDescriptions":{"typeIdentifier":"t_contract$_FeesSplitter_$1981","typeString":"contract FeesSplitter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_FeesSplitter_$1981","typeString":"contract FeesSplitter"}],"id":1823,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1612:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1822,"name":"address","nodeType":"ElementaryTypeName","src":"1612:7:10","typeDescriptions":{}}},"id":1825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1612:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1820,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1815,"src":"1596:5:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}},"id":1821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":147,"src":"1596:15:10","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":1826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1596:30:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1572:54:10"},{"assignments":[1829],"declarations":[{"constant":false,"id":1829,"mutability":"mutable","name":"accountsLength","nameLocation":"1644:14:10","nodeType":"VariableDeclaration","scope":1863,"src":"1636:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1828,"name":"uint256","nodeType":"ElementaryTypeName","src":"1636:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1832,"initialValue":{"expression":{"id":1830,"name":"accounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"1661:8:10","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":1831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1661:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1636:40:10"},{"body":{"id":1861,"nodeType":"Block","src":"1731:266:10","statements":[{"assignments":[1844],"declarations":[{"constant":false,"id":1844,"mutability":"mutable","name":"amt","nameLocation":"1825:3:10","nodeType":"VariableDeclaration","scope":1861,"src":"1817:11:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1843,"name":"uint256","nodeType":"ElementaryTypeName","src":"1817:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1851,"initialValue":{"arguments":[{"id":1846,"name":"amountToSplit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1819,"src":"1873:13:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":1847,"name":"percentAllocations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1725,"src":"1904:18:10","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage","typeString":"uint32[] storage ref"}},"id":1849,"indexExpression":{"id":1848,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1834,"src":"1923:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1904:21:10","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"id":1845,"name":"_scaleAmountByPercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1980,"src":"1831:24:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":1850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1831:108:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1817:122:10"},{"expression":{"arguments":[{"baseExpression":{"id":1855,"name":"accounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"1969:8:10","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":1857,"indexExpression":{"id":1856,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1834,"src":"1978:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1969:11:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1858,"name":"amt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1844,"src":"1982:3:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1852,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1815,"src":"1954:5:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}},"id":1854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":157,"src":"1954:14:10","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":1859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1954:32:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1860,"nodeType":"ExpressionStatement","src":"1954:32:10"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1837,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1834,"src":"1706:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1838,"name":"accountsLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1829,"src":"1710:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1706:18:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1862,"initializationExpression":{"assignments":[1834],"declarations":[{"constant":false,"id":1834,"mutability":"mutable","name":"i","nameLocation":"1699:1:10","nodeType":"VariableDeclaration","scope":1862,"src":"1691:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1833,"name":"uint256","nodeType":"ElementaryTypeName","src":"1691:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1836,"initialValue":{"hexValue":"30","id":1835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1703:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1691:13:10"},"loopExpression":{"expression":{"id":1841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"1726:3:10","subExpression":{"id":1840,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1834,"src":"1728:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1842,"nodeType":"ExpressionStatement","src":"1726:3:10"},"nodeType":"ForStatement","src":"1686:311:10"}]},"functionSelector":"bce58269","id":1864,"implemented":true,"kind":"function","modifiers":[],"name":"distributeERC20","nameLocation":"1525:15:10","nodeType":"FunctionDefinition","parameters":{"id":1816,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1815,"mutability":"mutable","name":"token","nameLocation":"1548:5:10","nodeType":"VariableDeclaration","scope":1864,"src":"1541:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"},"typeName":{"id":1814,"nodeType":"UserDefinedTypeName","pathNode":{"id":1813,"name":"IERC20","nodeType":"IdentifierPath","referencedDeclaration":190,"src":"1541:6:10"},"referencedDeclaration":190,"src":"1541:6:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1540:14:10"},"returnParameters":{"id":1817,"nodeType":"ParameterList","parameters":[],"src":"1562:0:10"},"scope":1981,"src":"1516:487:10","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":1887,"nodeType":"Block","src":"2136:134:10","statements":[{"expression":{"id":1877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1875,"name":"accounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"2146:8:10","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1876,"name":"_accounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1867,"src":"2157:9:10","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"2146:20:10","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":1878,"nodeType":"ExpressionStatement","src":"2146:20:10"},{"expression":{"id":1881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1879,"name":"percentAllocations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1725,"src":"2176:18:10","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage","typeString":"uint32[] storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1880,"name":"_percentAllocations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1870,"src":"2197:19:10","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"src":"2176:40:10","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage","typeString":"uint32[] storage ref"}},"id":1882,"nodeType":"ExpressionStatement","src":"2176:40:10"},{"expression":{"arguments":[{"id":1884,"name":"_percentAllocations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1870,"src":"2243:19:10","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}],"id":1883,"name":"checkPercentages","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1927,"src":"2226:16:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_uint32_$dyn_memory_ptr_$returns$__$","typeString":"function (uint32[] memory) view"}},"id":1885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2226:37:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1886,"nodeType":"ExpressionStatement","src":"2226:37:10"}]},"functionSelector":"44def48f","id":1888,"implemented":true,"kind":"function","modifiers":[{"id":1873,"kind":"modifierInvocation","modifierName":{"id":1872,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":31,"src":"2126:9:10"},"nodeType":"ModifierInvocation","src":"2126:9:10"}],"name":"updateSplit","nameLocation":"2018:11:10","nodeType":"FunctionDefinition","parameters":{"id":1871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1867,"mutability":"mutable","name":"_accounts","nameLocation":"2056:9:10","nodeType":"VariableDeclaration","scope":1888,"src":"2039:26:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1865,"name":"address","nodeType":"ElementaryTypeName","src":"2039:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1866,"nodeType":"ArrayTypeName","src":"2039:9:10","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":1870,"mutability":"mutable","name":"_percentAllocations","nameLocation":"2091:19:10","nodeType":"VariableDeclaration","scope":1888,"src":"2075:35:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[]"},"typeName":{"baseType":{"id":1868,"name":"uint32","nodeType":"ElementaryTypeName","src":"2075:6:10","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":1869,"nodeType":"ArrayTypeName","src":"2075:8:10","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}},"visibility":"internal"}],"src":"2029:87:10"},"returnParameters":{"id":1874,"nodeType":"ParameterList","parameters":[],"src":"2136:0:10"},"scope":1981,"src":"2009:261:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":1926,"nodeType":"Block","src":"2389:216:10","statements":[{"assignments":[1897],"declarations":[{"constant":false,"id":1897,"mutability":"mutable","name":"sum","nameLocation":"2406:3:10","nodeType":"VariableDeclaration","scope":1926,"src":"2399:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1896,"name":"uint32","nodeType":"ElementaryTypeName","src":"2399:6:10","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"id":1899,"initialValue":{"hexValue":"30","id":1898,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2412:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2399:14:10"},{"body":{"id":1917,"nodeType":"Block","src":"2480:54:10","statements":[{"expression":{"id":1915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1911,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1897,"src":"2494:3:10","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"baseExpression":{"id":1912,"name":"_percentAllocations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1891,"src":"2501:19:10","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"id":1914,"indexExpression":{"id":1913,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1901,"src":"2521:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2501:22:10","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"2494:29:10","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":1916,"nodeType":"ExpressionStatement","src":"2494:29:10"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1904,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1901,"src":"2443:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":1905,"name":"_percentAllocations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1891,"src":"2447:19:10","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}},"id":1906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2447:26:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2443:30:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1918,"initializationExpression":{"assignments":[1901],"declarations":[{"constant":false,"id":1901,"mutability":"mutable","name":"i","nameLocation":"2436:1:10","nodeType":"VariableDeclaration","scope":1918,"src":"2428:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1900,"name":"uint256","nodeType":"ElementaryTypeName","src":"2428:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1903,"initialValue":{"hexValue":"30","id":1902,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2440:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2428:13:10"},"loopExpression":{"expression":{"id":1909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2475:3:10","subExpression":{"id":1908,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1901,"src":"2475:1:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1910,"nodeType":"ExpressionStatement","src":"2475:3:10"},"nodeType":"ForStatement","src":"2423:111:10"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1920,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1897,"src":"2551:3:10","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1921,"name":"PERCENTAGE_SCALE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1719,"src":"2558:16:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2551:23:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e76616c69642070657263656e7461676573","id":1923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2576:21:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_da5de935a79473774bc1a56577c1e5d9c5477e764be29dbf7e048ba86c791791","typeString":"literal_string \"invalid percentages\""},"value":"invalid percentages"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da5de935a79473774bc1a56577c1e5d9c5477e764be29dbf7e048ba86c791791","typeString":"literal_string \"invalid percentages\""}],"id":1919,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2543:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2543:55:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1925,"nodeType":"ExpressionStatement","src":"2543:55:10"}]},"functionSelector":"c45ff544","id":1927,"implemented":true,"kind":"function","modifiers":[{"id":1894,"kind":"modifierInvocation","modifierName":{"id":1893,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":31,"src":"2375:9:10"},"nodeType":"ModifierInvocation","src":"2375:9:10"}],"name":"checkPercentages","nameLocation":"2285:16:10","nodeType":"FunctionDefinition","parameters":{"id":1892,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1891,"mutability":"mutable","name":"_percentAllocations","nameLocation":"2318:19:10","nodeType":"VariableDeclaration","scope":1927,"src":"2302:35:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[]"},"typeName":{"baseType":{"id":1889,"name":"uint32","nodeType":"ElementaryTypeName","src":"2302:6:10","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":1890,"nodeType":"ArrayTypeName","src":"2302:8:10","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}},"visibility":"internal"}],"src":"2301:37:10"},"returnParameters":{"id":1895,"nodeType":"ParameterList","parameters":[],"src":"2389:0:10"},"scope":1981,"src":"2276:329:10","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":1945,"nodeType":"Block","src":"2653:65:10","statements":[{"expression":{"arguments":[{"expression":{"arguments":[{"id":1940,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2697:4:10","typeDescriptions":{"typeIdentifier":"t_contract$_FeesSplitter_$1981","typeString":"contract FeesSplitter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_FeesSplitter_$1981","typeString":"contract FeesSplitter"}],"id":1939,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2689:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1938,"name":"address","nodeType":"ElementaryTypeName","src":"2689:7:10","typeDescriptions":{}}},"id":1941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2689:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"2689:21:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1934,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"2671:5:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2671:7:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1933,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2663:8:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":1932,"name":"address","nodeType":"ElementaryTypeName","src":"2663:8:10","stateMutability":"payable","typeDescriptions":{}}},"id":1936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2663:16:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":1937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","src":"2663:25:10","typeDescriptions":{"typeIdentifier":"t_function_transfer_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":1943,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2663:48:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1944,"nodeType":"ExpressionStatement","src":"2663:48:10"}]},"functionSelector":"e086e5ec","id":1946,"implemented":true,"kind":"function","modifiers":[{"id":1930,"kind":"modifierInvocation","modifierName":{"id":1929,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":31,"src":"2643:9:10"},"nodeType":"ModifierInvocation","src":"2643:9:10"}],"name":"withdrawETH","nameLocation":"2620:11:10","nodeType":"FunctionDefinition","parameters":{"id":1928,"nodeType":"ParameterList","parameters":[],"src":"2631:2:10"},"returnParameters":{"id":1931,"nodeType":"ParameterList","parameters":[],"src":"2653:0:10"},"scope":1981,"src":"2611:107:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":1968,"nodeType":"Block","src":"2780:72:10","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1957,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"2805:5:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2805:7:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":1963,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2838:4:10","typeDescriptions":{"typeIdentifier":"t_contract$_FeesSplitter_$1981","typeString":"contract FeesSplitter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_FeesSplitter_$1981","typeString":"contract FeesSplitter"}],"id":1962,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2830:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1961,"name":"address","nodeType":"ElementaryTypeName","src":"2830:7:10","typeDescriptions":{}}},"id":1964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2830:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1959,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1949,"src":"2814:5:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}},"id":1960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":147,"src":"2814:15:10","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":1965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2814:30:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1954,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1949,"src":"2790:5:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}},"id":1956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":157,"src":"2790:14:10","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":1966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2790:55:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1967,"nodeType":"ExpressionStatement","src":"2790:55:10"}]},"functionSelector":"f4f3b200","id":1969,"implemented":true,"kind":"function","modifiers":[{"id":1952,"kind":"modifierInvocation","modifierName":{"id":1951,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":31,"src":"2770:9:10"},"nodeType":"ModifierInvocation","src":"2770:9:10"}],"name":"withdrawERC20","nameLocation":"2733:13:10","nodeType":"FunctionDefinition","parameters":{"id":1950,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1949,"mutability":"mutable","name":"token","nameLocation":"2754:5:10","nodeType":"VariableDeclaration","scope":1969,"src":"2747:12:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"},"typeName":{"id":1948,"nodeType":"UserDefinedTypeName","pathNode":{"id":1947,"name":"IERC20","nodeType":"IdentifierPath","referencedDeclaration":190,"src":"2747:6:10"},"referencedDeclaration":190,"src":"2747:6:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"2746:14:10"},"returnParameters":{"id":1953,"nodeType":"ParameterList","parameters":[],"src":"2780:0:10"},"scope":1981,"src":"2724:128:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":1979,"nodeType":"Block","src":"3004:447:10","statements":[{"AST":{"nodeType":"YulBlock","src":"3313:132:10","statements":[{"nodeType":"YulAssignment","src":"3370:65:10","value":{"arguments":[{"arguments":[{"name":"amount","nodeType":"YulIdentifier","src":"3394:6:10"},{"name":"scaledPercent","nodeType":"YulIdentifier","src":"3402:13:10"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"3390:3:10"},"nodeType":"YulFunctionCall","src":"3390:26:10"},{"name":"PERCENTAGE_SCALE","nodeType":"YulIdentifier","src":"3418:16:10"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"3386:3:10"},"nodeType":"YulFunctionCall","src":"3386:49:10"},"variableNames":[{"name":"scaledAmount","nodeType":"YulIdentifier","src":"3370:12:10"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1719,"isOffset":false,"isSlot":false,"src":"3418:16:10","valueSize":1},{"declaration":1971,"isOffset":false,"isSlot":false,"src":"3394:6:10","valueSize":1},{"declaration":1976,"isOffset":false,"isSlot":false,"src":"3370:12:10","valueSize":1},{"declaration":1973,"isOffset":false,"isSlot":false,"src":"3402:13:10","valueSize":1}],"id":1978,"nodeType":"InlineAssembly","src":"3304:141:10"}]},"id":1980,"implemented":true,"kind":"function","modifiers":[],"name":"_scaleAmountByPercentage","nameLocation":"2867:24:10","nodeType":"FunctionDefinition","parameters":{"id":1974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1971,"mutability":"mutable","name":"amount","nameLocation":"2900:6:10","nodeType":"VariableDeclaration","scope":1980,"src":"2892:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1970,"name":"uint256","nodeType":"ElementaryTypeName","src":"2892:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1973,"mutability":"mutable","name":"scaledPercent","nameLocation":"2916:13:10","nodeType":"VariableDeclaration","scope":1980,"src":"2908:21:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1972,"name":"uint256","nodeType":"ElementaryTypeName","src":"2908:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2891:39:10"},"returnParameters":{"id":1977,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1976,"mutability":"mutable","name":"scaledAmount","nameLocation":"2986:12:10","nodeType":"VariableDeclaration","scope":1980,"src":"2978:20:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1975,"name":"uint256","nodeType":"ElementaryTypeName","src":"2978:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2977:22:10"},"scope":1981,"src":"2858:593:10","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1982,"src":"231:3222:10","usedErrors":[]}],"src":"46:3408:10"},"id":10},"contracts/splitters/MAHASplitKeeper.sol":{"ast":{"absolutePath":"contracts/splitters/MAHASplitKeeper.sol","exportedSymbols":{"Epoch":[2365],"FeesSplitter":[1981],"ICommunityFund":[2006],"IERC20":[190],"KeeperCompatibleInterface":[1697],"MAHASplitKeeper":[2117]},"id":2118,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1983,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"46:23:11"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","file":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","id":1985,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2118,"sourceUnit":508,"src":"71:79:11","symbolAliases":[{"foreign":{"id":1984,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"src":"79:6:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/splitters/FeesSplitter.sol","file":"./FeesSplitter.sol","id":1987,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2118,"sourceUnit":1982,"src":"151:48:11","symbolAliases":[{"foreign":{"id":1986,"name":"FeesSplitter","nodeType":"Identifier","overloadedDeclarations":[],"src":"159:12:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/KeeperCompatibleInterface.sol","file":"../interfaces/KeeperCompatibleInterface.sol","id":1989,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2118,"sourceUnit":1698,"src":"200:86:11","symbolAliases":[{"foreign":{"id":1988,"name":"KeeperCompatibleInterface","nodeType":"Identifier","overloadedDeclarations":[],"src":"208:25:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/utils/Epoch.sol","file":"../utils/Epoch.sol","id":1991,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2118,"sourceUnit":2366,"src":"287:41:11","symbolAliases":[{"foreign":{"id":1990,"name":"Epoch","nodeType":"Identifier","overloadedDeclarations":[],"src":"295:5:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":2006,"linearizedBaseContracts":[2006],"name":"ICommunityFund","nameLocation":"340:14:11","nodeType":"ContractDefinition","nodes":[{"functionSelector":"19165587","id":1997,"implemented":false,"kind":"function","modifiers":[],"name":"release","nameLocation":"370:7:11","nodeType":"FunctionDefinition","parameters":{"id":1995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1994,"mutability":"mutable","name":"token","nameLocation":"385:5:11","nodeType":"VariableDeclaration","scope":1997,"src":"378:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"},"typeName":{"id":1993,"nodeType":"UserDefinedTypeName","pathNode":{"id":1992,"name":"IERC20","nodeType":"IdentifierPath","referencedDeclaration":190,"src":"378:6:11"},"referencedDeclaration":190,"src":"378:6:11","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"377:14:11"},"returnParameters":{"id":1996,"nodeType":"ParameterList","parameters":[],"src":"400:0:11"},"scope":2006,"src":"361:40:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"1726cbc8","id":2005,"implemented":false,"kind":"function","modifiers":[],"name":"releasableAmount","nameLocation":"416:16:11","nodeType":"FunctionDefinition","parameters":{"id":2001,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2000,"mutability":"mutable","name":"token","nameLocation":"440:5:11","nodeType":"VariableDeclaration","scope":2005,"src":"433:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"},"typeName":{"id":1999,"nodeType":"UserDefinedTypeName","pathNode":{"id":1998,"name":"IERC20","nodeType":"IdentifierPath","referencedDeclaration":190,"src":"433:6:11"},"referencedDeclaration":190,"src":"433:6:11","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"432:14:11"},"returnParameters":{"id":2004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2003,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2005,"src":"470:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2002,"name":"uint256","nodeType":"ElementaryTypeName","src":"470:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"469:9:11"},"scope":2006,"src":"407:72:11","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2118,"src":"330:151:11","usedErrors":[]},{"abstract":false,"baseContracts":[{"baseName":{"id":2008,"name":"Epoch","nodeType":"IdentifierPath","referencedDeclaration":2365,"src":"758:5:11"},"id":2009,"nodeType":"InheritanceSpecifier","src":"758:5:11"},{"baseName":{"id":2010,"name":"FeesSplitter","nodeType":"IdentifierPath","referencedDeclaration":1981,"src":"765:12:11"},"id":2011,"nodeType":"InheritanceSpecifier","src":"765:12:11"},{"baseName":{"id":2012,"name":"KeeperCompatibleInterface","nodeType":"IdentifierPath","referencedDeclaration":1697,"src":"779:25:11"},"id":2013,"nodeType":"InheritanceSpecifier","src":"779:25:11"}],"contractDependencies":[],"contractKind":"contract","documentation":{"id":2007,"nodeType":"StructuredDocumentation","src":"483:246:11","text":" This is a keeper contract that splits the maha from the ecosystem fund into the various treasuries on a\n monthly basis via a keeper.\n Currently deployed at: https://etherscan.io/address/0x5f7a88d09491b89f0e9a02e3cce3309ef1502ab8"},"fullyImplemented":true,"id":2117,"linearizedBaseContracts":[2117,1697,1981,2365,112,824,1678],"name":"MAHASplitKeeper","nameLocation":"739:15:11","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"3de00c36","id":2016,"mutability":"mutable","name":"maha","nameLocation":"825:4:11","nodeType":"VariableDeclaration","scope":2117,"src":"811:18:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"},"typeName":{"id":2015,"nodeType":"UserDefinedTypeName","pathNode":{"id":2014,"name":"IERC20","nodeType":"IdentifierPath","referencedDeclaration":190,"src":"811:6:11"},"referencedDeclaration":190,"src":"811:6:11","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}},"visibility":"public"},{"constant":false,"functionSelector":"00f380f4","id":2019,"mutability":"mutable","name":"communityFund","nameLocation":"857:13:11","nodeType":"VariableDeclaration","scope":2117,"src":"835:35:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICommunityFund_$2006","typeString":"contract ICommunityFund"},"typeName":{"id":2018,"nodeType":"UserDefinedTypeName","pathNode":{"id":2017,"name":"ICommunityFund","nodeType":"IdentifierPath","referencedDeclaration":2006,"src":"835:14:11"},"referencedDeclaration":2006,"src":"835:14:11","typeDescriptions":{"typeIdentifier":"t_contract$_ICommunityFund_$2006","typeString":"contract ICommunityFund"}},"visibility":"public"},{"body":{"id":2054,"nodeType":"Block","src":"1131:60:11","statements":[{"expression":{"id":2048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2046,"name":"maha","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2016,"src":"1141:4:11","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2047,"name":"_maha","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2028,"src":"1148:5:11","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}},"src":"1141:12:11","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}},"id":2049,"nodeType":"ExpressionStatement","src":"1141:12:11"},{"expression":{"id":2052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2050,"name":"communityFund","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2019,"src":"1163:13:11","typeDescriptions":{"typeIdentifier":"t_contract$_ICommunityFund_$2006","typeString":"contract ICommunityFund"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2051,"name":"_fund","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2031,"src":"1179:5:11","typeDescriptions":{"typeIdentifier":"t_contract$_ICommunityFund_$2006","typeString":"contract ICommunityFund"}},"src":"1163:21:11","typeDescriptions":{"typeIdentifier":"t_contract$_ICommunityFund_$2006","typeString":"contract ICommunityFund"}},"id":2053,"nodeType":"ExpressionStatement","src":"1163:21:11"}]},"id":2055,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":2034,"name":"_accounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"1049:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"id":2035,"name":"_percentAllocations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2025,"src":"1060:19:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[] memory"}}],"id":2036,"kind":"baseConstructorSpecifier","modifierName":{"id":2033,"name":"FeesSplitter","nodeType":"IdentifierPath","referencedDeclaration":1981,"src":"1036:12:11"},"nodeType":"ModifierInvocation","src":"1036:44:11"},{"arguments":[{"commonType":{"typeIdentifier":"t_rational_2592000_by_1","typeString":"int_const 2592000"},"id":2040,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3836343030","id":2038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1095:5:11","typeDescriptions":{"typeIdentifier":"t_rational_86400_by_1","typeString":"int_const 86400"},"value":"86400"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3330","id":2039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1103:2:11","typeDescriptions":{"typeIdentifier":"t_rational_30_by_1","typeString":"int_const 30"},"value":"30"},"src":"1095:10:11","typeDescriptions":{"typeIdentifier":"t_rational_2592000_by_1","typeString":"int_const 2592000"}},{"expression":{"id":2041,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1107:5:11","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":2042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"1107:15:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":2043,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1124:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2044,"kind":"baseConstructorSpecifier","modifierName":{"id":2037,"name":"Epoch","nodeType":"IdentifierPath","referencedDeclaration":2365,"src":"1089:5:11"},"nodeType":"ModifierInvocation","src":"1089:37:11"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2022,"mutability":"mutable","name":"_accounts","nameLocation":"915:9:11","nodeType":"VariableDeclaration","scope":2055,"src":"898:26:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":2020,"name":"address","nodeType":"ElementaryTypeName","src":"898:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2021,"nodeType":"ArrayTypeName","src":"898:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":2025,"mutability":"mutable","name":"_percentAllocations","nameLocation":"950:19:11","nodeType":"VariableDeclaration","scope":2055,"src":"934:35:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[]"},"typeName":{"baseType":{"id":2023,"name":"uint32","nodeType":"ElementaryTypeName","src":"934:6:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":2024,"nodeType":"ArrayTypeName","src":"934:8:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}},"visibility":"internal"},{"constant":false,"id":2028,"mutability":"mutable","name":"_maha","nameLocation":"986:5:11","nodeType":"VariableDeclaration","scope":2055,"src":"979:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"},"typeName":{"id":2027,"nodeType":"UserDefinedTypeName","pathNode":{"id":2026,"name":"IERC20","nodeType":"IdentifierPath","referencedDeclaration":190,"src":"979:6:11"},"referencedDeclaration":190,"src":"979:6:11","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2031,"mutability":"mutable","name":"_fund","nameLocation":"1016:5:11","nodeType":"VariableDeclaration","scope":2055,"src":"1001:20:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICommunityFund_$2006","typeString":"contract ICommunityFund"},"typeName":{"id":2030,"nodeType":"UserDefinedTypeName","pathNode":{"id":2029,"name":"ICommunityFund","nodeType":"IdentifierPath","referencedDeclaration":2006,"src":"1001:14:11"},"referencedDeclaration":2006,"src":"1001:14:11","typeDescriptions":{"typeIdentifier":"t_contract$_ICommunityFund_$2006","typeString":"contract ICommunityFund"}},"visibility":"internal"}],"src":"888:139:11"},"returnParameters":{"id":2045,"nodeType":"ParameterList","parameters":[],"src":"1131:0:11"},"scope":2117,"src":"877:314:11","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":2068,"nodeType":"Block","src":"1240:75:11","statements":[{"expression":{"arguments":[{"id":2061,"name":"maha","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2016,"src":"1272:4:11","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}],"expression":{"id":2058,"name":"communityFund","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2019,"src":"1250:13:11","typeDescriptions":{"typeIdentifier":"t_contract$_ICommunityFund_$2006","typeString":"contract ICommunityFund"}},"id":2060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"release","nodeType":"MemberAccess","referencedDeclaration":1997,"src":"1250:21:11","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IERC20_$190_$returns$__$","typeString":"function (contract IERC20) external"}},"id":2062,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1250:27:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2063,"nodeType":"ExpressionStatement","src":"1250:27:11"},{"expression":{"arguments":[{"id":2065,"name":"maha","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2016,"src":"1303:4:11","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}],"id":2064,"name":"distributeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1864,"src":"1287:15:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$190_$returns$__$","typeString":"function (contract IERC20)"}},"id":2066,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1287:21:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2067,"nodeType":"ExpressionStatement","src":"1287:21:11"}]},"functionSelector":"f46b65ac","id":2069,"implemented":true,"kind":"function","modifiers":[],"name":"releaseAndDistributeMAHA","nameLocation":"1206:24:11","nodeType":"FunctionDefinition","parameters":{"id":2056,"nodeType":"ParameterList","parameters":[],"src":"1230:2:11"},"returnParameters":{"id":2057,"nodeType":"ParameterList","parameters":[],"src":"1240:0:11"},"scope":2117,"src":"1197:118:11","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":2079,"nodeType":"Block","src":"1373:60:11","statements":[{"expression":{"arguments":[{"id":2076,"name":"maha","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2016,"src":"1421:4:11","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}],"expression":{"id":2074,"name":"communityFund","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2019,"src":"1390:13:11","typeDescriptions":{"typeIdentifier":"t_contract$_ICommunityFund_$2006","typeString":"contract ICommunityFund"}},"id":2075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"releasableAmount","nodeType":"MemberAccess","referencedDeclaration":2005,"src":"1390:30:11","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_IERC20_$190_$returns$_t_uint256_$","typeString":"function (contract IERC20) view external returns (uint256)"}},"id":2077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1390:36:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2073,"id":2078,"nodeType":"Return","src":"1383:43:11"}]},"functionSelector":"fbccedae","id":2080,"implemented":true,"kind":"function","modifiers":[],"name":"releasable","nameLocation":"1330:10:11","nodeType":"FunctionDefinition","parameters":{"id":2070,"nodeType":"ParameterList","parameters":[],"src":"1340:2:11"},"returnParameters":{"id":2073,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2072,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2080,"src":"1364:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2071,"name":"uint256","nodeType":"ElementaryTypeName","src":"1364:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1363:9:11"},"scope":2117,"src":"1321:112:11","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":2087,"nodeType":"Block","src":"1472:38:11","statements":[{"expression":{"arguments":[{"id":2084,"name":"maha","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2016,"src":"1498:4:11","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$190","typeString":"contract IERC20"}],"id":2083,"name":"distributeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1864,"src":"1482:15:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$190_$returns$__$","typeString":"function (contract IERC20)"}},"id":2085,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1482:21:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2086,"nodeType":"ExpressionStatement","src":"1482:21:11"}]},"functionSelector":"5c45f349","id":2088,"implemented":true,"kind":"function","modifiers":[],"name":"distributeMAHA","nameLocation":"1448:14:11","nodeType":"FunctionDefinition","parameters":{"id":2081,"nodeType":"ParameterList","parameters":[],"src":"1462:2:11"},"returnParameters":{"id":2082,"nodeType":"ParameterList","parameters":[],"src":"1472:0:11"},"scope":2117,"src":"1439:71:11","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[1690],"body":{"id":2103,"nodeType":"Block","src":"1666:41:11","statements":[{"expression":{"components":[{"arguments":[],"expression":{"argumentTypes":[],"id":2098,"name":"_callable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2258,"src":"1684:9:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":2099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1684:11:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"","id":2100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1697:2:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"id":2101,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1683:17:11","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_$","typeString":"tuple(bool,literal_string \"\")"}},"functionReturnParameters":2097,"id":2102,"nodeType":"Return","src":"1676:24:11"}]},"functionSelector":"6e04ff0d","id":2104,"implemented":true,"kind":"function","modifiers":[],"name":"checkUpkeep","nameLocation":"1525:11:11","nodeType":"FunctionDefinition","overrides":{"id":2092,"nodeType":"OverrideSpecifier","overrides":[],"src":"1591:8:11"},"parameters":{"id":2091,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2090,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2104,"src":"1537:14:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2089,"name":"bytes","nodeType":"ElementaryTypeName","src":"1537:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1536:16:11"},"returnParameters":{"id":2097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2094,"mutability":"mutable","name":"upkeepNeeded","nameLocation":"1622:12:11","nodeType":"VariableDeclaration","scope":2104,"src":"1617:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2093,"name":"bool","nodeType":"ElementaryTypeName","src":"1617:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2096,"mutability":"mutable","name":"performData","nameLocation":"1649:11:11","nodeType":"VariableDeclaration","scope":2104,"src":"1636:24:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2095,"name":"bytes","nodeType":"ElementaryTypeName","src":"1636:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1616:45:11"},"scope":2117,"src":"1516:191:11","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1696],"body":{"id":2115,"nodeType":"Block","src":"1781:43:11","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2112,"name":"releaseAndDistributeMAHA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2069,"src":"1791:24:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":2113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1791:26:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2114,"nodeType":"ExpressionStatement","src":"1791:26:11"}]},"functionSelector":"4585e33b","id":2116,"implemented":true,"kind":"function","modifiers":[{"id":2110,"kind":"modifierInvocation","modifierName":{"id":2109,"name":"checkEpoch","nodeType":"IdentifierPath","referencedDeclaration":2203,"src":"1770:10:11"},"nodeType":"ModifierInvocation","src":"1770:10:11"}],"name":"performUpkeep","nameLocation":"1722:13:11","nodeType":"FunctionDefinition","overrides":{"id":2108,"nodeType":"OverrideSpecifier","overrides":[],"src":"1761:8:11"},"parameters":{"id":2107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2106,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2116,"src":"1736:14:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2105,"name":"bytes","nodeType":"ElementaryTypeName","src":"1736:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1735:16:11"},"returnParameters":{"id":2111,"nodeType":"ParameterList","parameters":[],"src":"1781:0:11"},"scope":2117,"src":"1713:111:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2118,"src":"730:1096:11","usedErrors":[]}],"src":"46:1781:11"},"id":11},"contracts/utils/Epoch.sol":{"ast":{"absolutePath":"contracts/utils/Epoch.sol","exportedSymbols":{"Epoch":[2365],"IEpoch":[1678],"Math":[1328],"Ownable":[112],"SafeMath":[1640]},"id":2366,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2119,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:12"},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"@openzeppelin/contracts/utils/math/Math.sol","id":2121,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2366,"sourceUnit":1329,"src":"57:65:12","symbolAliases":[{"foreign":{"id":2120,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"src":"65:4:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeMath.sol","file":"@openzeppelin/contracts/utils/math/SafeMath.sol","id":2123,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2366,"sourceUnit":1641,"src":"123:73:12","symbolAliases":[{"foreign":{"id":2122,"name":"SafeMath","nodeType":"Identifier","overloadedDeclarations":[],"src":"131:8:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"@openzeppelin/contracts/access/Ownable.sol","id":2125,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2366,"sourceUnit":113,"src":"197:67:12","symbolAliases":[{"foreign":{"id":2124,"name":"Ownable","nodeType":"Identifier","overloadedDeclarations":[],"src":"205:7:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IEpoch.sol","file":"../interfaces/IEpoch.sol","id":2127,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2366,"sourceUnit":1679,"src":"265:48:12","symbolAliases":[{"foreign":{"id":2126,"name":"IEpoch","nodeType":"Identifier","overloadedDeclarations":[],"src":"273:6:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2128,"name":"IEpoch","nodeType":"IdentifierPath","referencedDeclaration":1678,"src":"333:6:12"},"id":2129,"nodeType":"InheritanceSpecifier","src":"333:6:12"},{"baseName":{"id":2130,"name":"Ownable","nodeType":"IdentifierPath","referencedDeclaration":112,"src":"341:7:12"},"id":2131,"nodeType":"InheritanceSpecifier","src":"341:7:12"}],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":2365,"linearizedBaseContracts":[2365,112,824,1678],"name":"Epoch","nameLocation":"324:5:12","nodeType":"ContractDefinition","nodes":[{"id":2134,"libraryName":{"id":2132,"name":"SafeMath","nodeType":"IdentifierPath","referencedDeclaration":1640,"src":"361:8:12"},"nodeType":"UsingForDirective","src":"355:27:12","typeName":{"id":2133,"name":"uint256","nodeType":"ElementaryTypeName","src":"374:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"id":2136,"mutability":"mutable","name":"period","nameLocation":"404:6:12","nodeType":"VariableDeclaration","scope":2365,"src":"388:22:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2135,"name":"uint256","nodeType":"ElementaryTypeName","src":"388:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":2138,"mutability":"mutable","name":"startTime","nameLocation":"432:9:12","nodeType":"VariableDeclaration","scope":2365,"src":"416:25:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2137,"name":"uint256","nodeType":"ElementaryTypeName","src":"416:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":2140,"mutability":"mutable","name":"lastExecutedAt","nameLocation":"463:14:12","nodeType":"VariableDeclaration","scope":2365,"src":"447:30:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2139,"name":"uint256","nodeType":"ElementaryTypeName","src":"447:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"body":{"id":2167,"nodeType":"Block","src":"629:130:12","statements":[{"expression":{"id":2151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2149,"name":"period","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"639:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2150,"name":"_period","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2142,"src":"648:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"639:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2152,"nodeType":"ExpressionStatement","src":"639:16:12"},{"expression":{"id":2155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2153,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"665:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2154,"name":"_startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2144,"src":"677:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"665:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2156,"nodeType":"ExpressionStatement","src":"665:22:12"},{"expression":{"id":2165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2157,"name":"lastExecutedAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2140,"src":"697:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":2162,"name":"period","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"744:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2160,"name":"_startEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2146,"src":"728:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":1534,"src":"728:15:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"728:23:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2158,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"714:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":1504,"src":"714:13:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2164,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"714:38:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"697:55:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2166,"nodeType":"ExpressionStatement","src":"697:55:12"}]},"id":2168,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2142,"mutability":"mutable","name":"_period","nameLocation":"558:7:12","nodeType":"VariableDeclaration","scope":2168,"src":"550:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2141,"name":"uint256","nodeType":"ElementaryTypeName","src":"550:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2144,"mutability":"mutable","name":"_startTime","nameLocation":"583:10:12","nodeType":"VariableDeclaration","scope":2168,"src":"575:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2143,"name":"uint256","nodeType":"ElementaryTypeName","src":"575:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2146,"mutability":"mutable","name":"_startEpoch","nameLocation":"611:11:12","nodeType":"VariableDeclaration","scope":2168,"src":"603:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2145,"name":"uint256","nodeType":"ElementaryTypeName","src":"603:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"540:88:12"},"returnParameters":{"id":2148,"nodeType":"ParameterList","parameters":[],"src":"629:0:12"},"scope":2365,"src":"529:230:12","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":2179,"nodeType":"Block","src":"833:91:12","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2171,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"851:5:12","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":2172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"851:15:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":2173,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"870:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"851:28:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45706f63683a206e6f74207374617274656420796574","id":2175,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"881:24:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_8e8a438152c291035ba61c330518809ea8d48dc6b10ff12642cf5e0b2970a563","typeString":"literal_string \"Epoch: not started yet\""},"value":"Epoch: not started yet"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8e8a438152c291035ba61c330518809ea8d48dc6b10ff12642cf5e0b2970a563","typeString":"literal_string \"Epoch: not started yet\""}],"id":2170,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"843:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"843:63:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2177,"nodeType":"ExpressionStatement","src":"843:63:12"},{"id":2178,"nodeType":"PlaceholderStatement","src":"916:1:12"}]},"id":2180,"name":"checkStartTime","nameLocation":"816:14:12","nodeType":"ModifierDefinition","parameters":{"id":2169,"nodeType":"ParameterList","parameters":[],"src":"830:2:12"},"src":"807:117:12","virtual":false,"visibility":"internal"},{"body":{"id":2202,"nodeType":"Block","src":"952:184:12","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2183,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"970:5:12","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":2184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"970:15:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2185,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"988:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"970:27:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45706f63683a206e6f74207374617274656420796574","id":2187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"999:24:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_8e8a438152c291035ba61c330518809ea8d48dc6b10ff12642cf5e0b2970a563","typeString":"literal_string \"Epoch: not started yet\""},"value":"Epoch: not started yet"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8e8a438152c291035ba61c330518809ea8d48dc6b10ff12642cf5e0b2970a563","typeString":"literal_string \"Epoch: not started yet\""}],"id":2182,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"962:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"962:62:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2189,"nodeType":"ExpressionStatement","src":"962:62:12"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2191,"name":"_callable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2258,"src":"1042:9:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":2192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1042:11:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"45706f63683a206e6f7420616c6c6f776564","id":2193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1055:20:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_ca181773b1c59604f15d7520d42e1d47889556e1b4139f88cc128771175e114d","typeString":"literal_string \"Epoch: not allowed\""},"value":"Epoch: not allowed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ca181773b1c59604f15d7520d42e1d47889556e1b4139f88cc128771175e114d","typeString":"literal_string \"Epoch: not allowed\""}],"id":2190,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1034:7:12","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1034:42:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2195,"nodeType":"ExpressionStatement","src":"1034:42:12"},{"id":2196,"nodeType":"PlaceholderStatement","src":"1086:1:12"},{"expression":{"id":2200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2197,"name":"lastExecutedAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2140,"src":"1097:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":2198,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1114:5:12","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":2199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"1114:15:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1097:32:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2201,"nodeType":"ExpressionStatement","src":"1097:32:12"}]},"id":2203,"name":"checkEpoch","nameLocation":"939:10:12","nodeType":"ModifierDefinition","parameters":{"id":2181,"nodeType":"ParameterList","parameters":[],"src":"949:2:12"},"src":"930:206:12","virtual":false,"visibility":"internal"},{"body":{"id":2216,"nodeType":"Block","src":"1199:65:12","statements":[{"expression":{"arguments":[{"id":2213,"name":"period","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"1250:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":2210,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"1235:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2208,"name":"lastExecutedAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2140,"src":"1216:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":1519,"src":"1216:18:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1216:29:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":1549,"src":"1216:33:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1216:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2207,"id":2215,"nodeType":"Return","src":"1209:48:12"}]},"id":2217,"implemented":true,"kind":"function","modifiers":[],"name":"_getLastEpoch","nameLocation":"1151:13:12","nodeType":"FunctionDefinition","parameters":{"id":2204,"nodeType":"ParameterList","parameters":[],"src":"1164:2:12"},"returnParameters":{"id":2207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2206,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2217,"src":"1190:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2205,"name":"uint256","nodeType":"ElementaryTypeName","src":"1190:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1189:9:12"},"scope":2365,"src":"1142:122:12","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2235,"nodeType":"Block","src":"1330:87:12","statements":[{"expression":{"arguments":[{"id":2232,"name":"period","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"1403:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":2229,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"1388:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":2224,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"1356:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":2225,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1367:5:12","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":2226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"1367:15:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2222,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1328,"src":"1347:4:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1328_$","typeString":"type(library Math)"}},"id":2223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","referencedDeclaration":849,"src":"1347:8:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1347:36:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":1519,"src":"1347:40:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1347:51:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":1549,"src":"1347:55:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1347:63:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2221,"id":2234,"nodeType":"Return","src":"1340:70:12"}]},"id":2236,"implemented":true,"kind":"function","modifiers":[],"name":"_getCurrentEpoch","nameLocation":"1279:16:12","nodeType":"FunctionDefinition","parameters":{"id":2218,"nodeType":"ParameterList","parameters":[],"src":"1295:2:12"},"returnParameters":{"id":2221,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2220,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2236,"src":"1321:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2219,"name":"uint256","nodeType":"ElementaryTypeName","src":"1321:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1320:9:12"},"scope":2365,"src":"1270:147:12","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[1647],"body":{"id":2245,"nodeType":"Block","src":"1481:35:12","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2242,"name":"_callable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2258,"src":"1498:9:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":2243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1498:11:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2241,"id":2244,"nodeType":"Return","src":"1491:18:12"}]},"functionSelector":"6a2ab602","id":2246,"implemented":true,"kind":"function","modifiers":[],"name":"callable","nameLocation":"1432:8:12","nodeType":"FunctionDefinition","overrides":{"id":2238,"nodeType":"OverrideSpecifier","overrides":[],"src":"1457:8:12"},"parameters":{"id":2237,"nodeType":"ParameterList","parameters":[],"src":"1440:2:12"},"returnParameters":{"id":2241,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2240,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2246,"src":"1475:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2239,"name":"bool","nodeType":"ElementaryTypeName","src":"1475:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1474:6:12"},"scope":2365,"src":"1423:93:12","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":2257,"nodeType":"Block","src":"1572:61:12","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":2251,"name":"_getCurrentEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2236,"src":"1589:16:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":2252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1589:18:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":2253,"name":"_getNextEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2278,"src":"1611:13:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":2254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1611:15:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1589:37:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2250,"id":2256,"nodeType":"Return","src":"1582:44:12"}]},"id":2258,"implemented":true,"kind":"function","modifiers":[],"name":"_callable","nameLocation":"1531:9:12","nodeType":"FunctionDefinition","parameters":{"id":2247,"nodeType":"ParameterList","parameters":[],"src":"1540:2:12"},"returnParameters":{"id":2250,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2249,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2258,"src":"1566:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2248,"name":"bool","nodeType":"ElementaryTypeName","src":"1566:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1565:6:12"},"scope":2365,"src":"1522:111:12","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2277,"nodeType":"Block","src":"1696:135:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2263,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"1710:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2264,"name":"lastExecutedAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2140,"src":"1723:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1710:27:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2270,"nodeType":"IfStatement","src":"1706:80:12","trueBody":{"id":2269,"nodeType":"Block","src":"1739:47:12","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2266,"name":"_getLastEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2217,"src":"1760:13:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":2267,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1760:15:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2262,"id":2268,"nodeType":"Return","src":"1753:22:12"}]}},{"expression":{"arguments":[{"hexValue":"31","id":2274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1822:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2271,"name":"_getLastEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2217,"src":"1802:13:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":2272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1802:15:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":1504,"src":"1802:19:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1802:22:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2262,"id":2276,"nodeType":"Return","src":"1795:29:12"}]},"id":2278,"implemented":true,"kind":"function","modifiers":[],"name":"_getNextEpoch","nameLocation":"1648:13:12","nodeType":"FunctionDefinition","parameters":{"id":2259,"nodeType":"ParameterList","parameters":[],"src":"1661:2:12"},"returnParameters":{"id":2262,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2261,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2278,"src":"1687:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2260,"name":"uint256","nodeType":"ElementaryTypeName","src":"1687:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1686:9:12"},"scope":2365,"src":"1639:192:12","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[1652],"body":{"id":2287,"nodeType":"Block","src":"1915:39:12","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2284,"name":"_getLastEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2217,"src":"1932:13:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":2285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1932:15:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2283,"id":2286,"nodeType":"Return","src":"1925:22:12"}]},"functionSelector":"398bac63","id":2288,"implemented":true,"kind":"function","modifiers":[],"name":"getLastEpoch","nameLocation":"1859:12:12","nodeType":"FunctionDefinition","overrides":{"id":2280,"nodeType":"OverrideSpecifier","overrides":[],"src":"1888:8:12"},"parameters":{"id":2279,"nodeType":"ParameterList","parameters":[],"src":"1871:2:12"},"returnParameters":{"id":2283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2282,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2288,"src":"1906:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2281,"name":"uint256","nodeType":"ElementaryTypeName","src":"1906:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1905:9:12"},"scope":2365,"src":"1850:104:12","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1657],"body":{"id":2307,"nodeType":"Block","src":"2028:87:12","statements":[{"expression":{"arguments":[{"id":2304,"name":"period","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"2101:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":2301,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"2086:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":2296,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"2054:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":2297,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2065:5:12","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":2298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"2065:15:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2294,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1328,"src":"2045:4:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1328_$","typeString":"type(library Math)"}},"id":2295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","referencedDeclaration":849,"src":"2045:8:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2299,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2045:36:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":1519,"src":"2045:40:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2045:51:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":1549,"src":"2045:55:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2045:63:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2293,"id":2306,"nodeType":"Return","src":"2038:70:12"}]},"functionSelector":"b97dd9e2","id":2308,"implemented":true,"kind":"function","modifiers":[],"name":"getCurrentEpoch","nameLocation":"1969:15:12","nodeType":"FunctionDefinition","overrides":{"id":2290,"nodeType":"OverrideSpecifier","overrides":[],"src":"2001:8:12"},"parameters":{"id":2289,"nodeType":"ParameterList","parameters":[],"src":"1984:2:12"},"returnParameters":{"id":2293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2292,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2308,"src":"2019:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2291,"name":"uint256","nodeType":"ElementaryTypeName","src":"2019:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2018:9:12"},"scope":2365,"src":"1960:155:12","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1662],"body":{"id":2317,"nodeType":"Block","src":"2186:39:12","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2314,"name":"_getNextEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2278,"src":"2203:13:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":2315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2203:15:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2313,"id":2316,"nodeType":"Return","src":"2196:22:12"}]},"functionSelector":"efe97d05","id":2318,"implemented":true,"kind":"function","modifiers":[],"name":"getNextEpoch","nameLocation":"2130:12:12","nodeType":"FunctionDefinition","overrides":{"id":2310,"nodeType":"OverrideSpecifier","overrides":[],"src":"2159:8:12"},"parameters":{"id":2309,"nodeType":"ParameterList","parameters":[],"src":"2142:2:12"},"returnParameters":{"id":2313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2312,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2318,"src":"2177:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2311,"name":"uint256","nodeType":"ElementaryTypeName","src":"2177:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2176:9:12"},"scope":2365,"src":"2121:104:12","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1667],"body":{"id":2333,"nodeType":"Block","src":"2298:66:12","statements":[{"expression":{"arguments":[{"arguments":[{"id":2329,"name":"period","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"2349:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2326,"name":"_getNextEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2278,"src":"2329:13:12","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":2327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2329:15:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":1534,"src":"2329:19:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2329:27:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":2324,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"2315:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":1504,"src":"2315:13:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2315:42:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2323,"id":2332,"nodeType":"Return","src":"2308:49:12"}]},"functionSelector":"c5967c26","id":2334,"implemented":true,"kind":"function","modifiers":[],"name":"nextEpochPoint","nameLocation":"2240:14:12","nodeType":"FunctionDefinition","overrides":{"id":2320,"nodeType":"OverrideSpecifier","overrides":[],"src":"2271:8:12"},"parameters":{"id":2319,"nodeType":"ParameterList","parameters":[],"src":"2254:2:12"},"returnParameters":{"id":2323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2322,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2334,"src":"2289:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2321,"name":"uint256","nodeType":"ElementaryTypeName","src":"2289:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2288:9:12"},"scope":2365,"src":"2231:133:12","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1672],"body":{"id":2342,"nodeType":"Block","src":"2446:30:12","statements":[{"expression":{"id":2340,"name":"period","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"2463:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2339,"id":2341,"nodeType":"Return","src":"2456:13:12"}]},"functionSelector":"1ed24195","id":2343,"implemented":true,"kind":"function","modifiers":[],"name":"getPeriod","nameLocation":"2393:9:12","nodeType":"FunctionDefinition","overrides":{"id":2336,"nodeType":"OverrideSpecifier","overrides":[],"src":"2419:8:12"},"parameters":{"id":2335,"nodeType":"ParameterList","parameters":[],"src":"2402:2:12"},"returnParameters":{"id":2339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2338,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2343,"src":"2437:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2337,"name":"uint256","nodeType":"ElementaryTypeName","src":"2437:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2436:9:12"},"scope":2365,"src":"2384:92:12","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1677],"body":{"id":2351,"nodeType":"Block","src":"2547:33:12","statements":[{"expression":{"id":2349,"name":"startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"2564:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2348,"id":2350,"nodeType":"Return","src":"2557:16:12"}]},"functionSelector":"c828371e","id":2352,"implemented":true,"kind":"function","modifiers":[],"name":"getStartTime","nameLocation":"2491:12:12","nodeType":"FunctionDefinition","overrides":{"id":2345,"nodeType":"OverrideSpecifier","overrides":[],"src":"2520:8:12"},"parameters":{"id":2344,"nodeType":"ParameterList","parameters":[],"src":"2503:2:12"},"returnParameters":{"id":2348,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2347,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2352,"src":"2538:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2346,"name":"uint256","nodeType":"ElementaryTypeName","src":"2538:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2537:9:12"},"scope":2365,"src":"2482:98:12","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":2363,"nodeType":"Block","src":"2685:33:12","statements":[{"expression":{"id":2361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2359,"name":"period","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"2695:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2360,"name":"_period","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2354,"src":"2704:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2695:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2362,"nodeType":"ExpressionStatement","src":"2695:16:12"}]},"functionSelector":"0f3a9f65","id":2364,"implemented":true,"kind":"function","modifiers":[{"id":2357,"kind":"modifierInvocation","modifierName":{"id":2356,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":31,"src":"2675:9:12"},"nodeType":"ModifierInvocation","src":"2675:9:12"}],"name":"setPeriod","nameLocation":"2639:9:12","nodeType":"FunctionDefinition","parameters":{"id":2355,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2354,"mutability":"mutable","name":"_period","nameLocation":"2657:7:12","nodeType":"VariableDeclaration","scope":2364,"src":"2649:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2353,"name":"uint256","nodeType":"ElementaryTypeName","src":"2649:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2648:17:12"},"returnParameters":{"id":2358,"nodeType":"ParameterList","parameters":[],"src":"2685:0:12"},"scope":2365,"src":"2630:88:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2366,"src":"315:2405:12","usedErrors":[]}],"src":"32:2689:12"},"id":12}},"contracts":{"@openzeppelin/contracts/access/Ownable.sol":{"Ownable":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"IERC20":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"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":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"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\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol":{"IERC20Permit":{"abi":[{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","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"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"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\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't need to send a transaction, and thus is not required to hold Ether at all.\",\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"nonces(address)\":{\"details\":\"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section].\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":\"IERC20Permit\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"keccak256\":\"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95\",\"dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol":{"SafeERC20":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208dfe555a9694cc7d558ef78fc987bc8ef6d97776ce418cd280bee5548ad31fb864736f6c63430008040033","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 DUP14 INVALID SSTORE GAS SWAP7 SWAP5 0xCC PUSH30 0x558EF78FC987BC8EF6D97776CE418CD280BEE5548AD31FB864736F6C6343 STOP ADDMOD DIV STOP CALLER ","sourceMap":"707:3748:3:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;707:3748:3;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208dfe555a9694cc7d558ef78fc987bc8ef6d97776ce418cd280bee5548ad31fb864736f6c63430008040033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP14 INVALID SSTORE GAS SWAP7 SWAP5 0xCC PUSH30 0x558EF78FC987BC8EF6D97776CE418CD280BEE5548AD31FB864736F6C6343 STOP ADDMOD DIV STOP CALLER ","sourceMap":"707:3748:3:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeERC20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"keccak256\":\"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95\",\"dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x032807210d1d7d218963d7355d62e021a84bf1b3339f4f50be2f63b53cccaf29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11756f42121f6541a35a8339ea899ee7514cfaa2e6d740625fcc844419296aa6\",\"dweb:/ipfs/QmekMuk6BY4DAjzeXr4MSbKdgoqqsZnA8JPtuyWc6CwXHf\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/Address.sol":{"Address":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122041ba65f8ba70c77d82b498530370678a78f06240cb94acf62833106e3c7164a364736f6c63430008040033","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 COINBASE 0xBA PUSH6 0xF8BA70C77D82 0xB4 SWAP9 MSTORE8 SUB PUSH17 0x678A78F06240CB94ACF62833106E3C7164 LOG3 PUSH5 0x736F6C6343 STOP ADDMOD DIV STOP CALLER ","sourceMap":"194:8111:4:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;194:8111:4;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122041ba65f8ba70c77d82b498530370678a78f06240cb94acf62833106e3c7164a364736f6c63430008040033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 COINBASE 0xBA PUSH6 0xF8BA70C77D82 0xB4 SWAP9 MSTORE8 SUB PUSH17 0x678A78F06240CB94ACF62833106E3C7164 LOG3 PUSH5 0x736F6C6343 STOP ADDMOD DIV STOP CALLER ","sourceMap":"194:8111:4:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/Context.sol":{"Context":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/math/Math.sol":{"Math":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208ce27c831661c585715832634c4391068485ed68e4e0a12cac5362fbaeb5fe8264736f6c63430008040033","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 DUP13 0xE2 PUSH29 0x831661C585715832634C4391068485ED68E4E0A12CAC5362FBAEB5FE82 PUSH5 0x736F6C6343 STOP ADDMOD DIV STOP CALLER ","sourceMap":"202:8624:6:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;202:8624:6;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208ce27c831661c585715832634c4391068485ed68e4e0a12cac5362fbaeb5fe8264736f6c63430008040033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP13 0xE2 PUSH29 0x831661C585715832634C4391068485ED68E4E0A12CAC5362FBAEB5FE82 PUSH5 0x736F6C6343 STOP ADDMOD DIV STOP CALLER ","sourceMap":"202:8624:6:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xd15c3e400531f00203839159b2b8e7209c5158b35618f570c695b7e47f12e9f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b600b852e0597aa69989cc263111f02097e2827edc1bdc70306303e3af5e9929\",\"dweb:/ipfs/QmU4WfM28A1nDqghuuGeFmN3CnVrk6opWtiF65K4vhFPeC\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/math/SafeMath.sol":{"SafeMath":{"abi":[],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205c2a9ed102890e2a56bf6ea702e35fc00d4ac543dc446f658e9b53dc3697e42264736f6c63430008040033","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 0x5C 0x2A SWAP15 0xD1 MUL DUP10 0xE 0x2A JUMP 0xBF PUSH15 0xA702E35FC00D4AC543DC446F658E9B MSTORE8 0xDC CALLDATASIZE SWAP8 0xE4 0x22 PUSH5 0x736F6C6343 STOP ADDMOD DIV STOP CALLER ","sourceMap":"482:6300:7:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;482:6300:7;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205c2a9ed102890e2a56bf6ea702e35fc00d4ac543dc446f658e9b53dc3697e42264736f6c63430008040033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5C 0x2A SWAP15 0xD1 MUL DUP10 0xE 0x2A JUMP 0xBF PUSH15 0xA702E35FC00D4AC543DC446F658E9B MSTORE8 0xDC CALLDATASIZE SWAP8 0xE4 0x22 PUSH5 0x736F6C6343 STOP ADDMOD DIV STOP CALLER ","sourceMap":"482:6300:7:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's arithmetic operations. NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler now has built in overflow checking.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/SafeMath.sol\":{\"keccak256\":\"0x0f633a0223d9a1dcccfcf38a64c9de0874dfcbfac0c6941ccf074d63a2ce0e1e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://864a40efcffdf408044c332a5aa38ec5618ed7b4eecb8f65faf45671bd6cdc65\",\"dweb:/ipfs/QmQJquTMtc6fgm5JQzGdsGpA2fqBe3MHWEdt2qzaLySMdN\"]}},\"version\":1}"}},"contracts/interfaces/IEpoch.sol":{"IEpoch":{"abi":[{"inputs":[],"name":"callable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLastEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNextEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextEpochPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"callable()":"6a2ab602","getCurrentEpoch()":"b97dd9e2","getLastEpoch()":"398bac63","getNextEpoch()":"efe97d05","getPeriod()":"1ed24195","getStartTime()":"c828371e","nextEpochPoint()":"c5967c26"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"callable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNextEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStartTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextEpochPoint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IEpoch.sol\":\"IEpoch\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IEpoch.sol\":{\"keccak256\":\"0x2c5a127cb728ce5d2bd5c1a3d017e96d8eb13a846920a1aea64ffa1979316d68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89512617e1fb067b242c55dfc7e03230e54436e46c51453dbee84b25f0391bd8\",\"dweb:/ipfs/QmQgVCVUp1eQafMQQHpTafDk6dADe15rsmjhTKT4YetdoC\"]}},\"version\":1}"}},"contracts/interfaces/KeeperCompatibleInterface.sol":{"KeeperCompatibleInterface":{"abi":[{"inputs":[{"internalType":"bytes","name":"checkData","type":"bytes"}],"name":"checkUpkeep","outputs":[{"internalType":"bool","name":"upkeepNeeded","type":"bool"},{"internalType":"bytes","name":"performData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"performData","type":"bytes"}],"name":"performUpkeep","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"checkUpkeep(bytes)":"6e04ff0d","performUpkeep(bytes)":"4585e33b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"checkData\",\"type\":\"bytes\"}],\"name\":\"checkUpkeep\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"upkeepNeeded\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"performData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"performData\",\"type\":\"bytes\"}],\"name\":\"performUpkeep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"checkUpkeep(bytes)\":{\"details\":\"To ensure that it is never called, you may want to add the cannotExecute modifier from KeeperBase to your implementation of this method.\",\"params\":{\"checkData\":\"specified in the upkeep registration so it is always the same for a registered upkeep. This can easily be broken down into specific arguments using `abi.decode`, so multiple upkeeps can be registered on the same contract and easily differentiated by the contract.\"},\"returns\":{\"performData\":\"bytes that the keeper should call performUpkeep with, if upkeep is needed. If you would like to encode data to decode later, try `abi.encode`.\",\"upkeepNeeded\":\"boolean to indicate whether the keeper should call performUpkeep or not.\"}},\"performUpkeep(bytes)\":{\"details\":\"The input to this method should not be trusted, and the caller of the method should not even be restricted to any single registry. Anyone should be able call it, and the input should be validated, there is no guarantee that the data passed in is the performData returned from checkUpkeep. This could happen due to malicious keepers, racing keepers, or simply a state change while the performUpkeep transaction is waiting for confirmation. Always validate the data passed in.\",\"params\":{\"performData\":\"is the data which was passed back from the checkData simulation. If it is encoded, it can easily be decoded into other types by calling `abi.decode`. This data should not be trusted, and should be validated against the contract's current state.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"checkUpkeep(bytes)\":{\"notice\":\"method that is simulated by the keepers to see if any work actually needs to be performed. This method does does not actually need to be executable, and since it is only ever simulated it can consume lots of gas.\"},\"performUpkeep(bytes)\":{\"notice\":\"method that is actually executed by the keepers, via the registry. The data returned by the checkUpkeep simulation will be passed into this method to actually be executed.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/KeeperCompatibleInterface.sol\":\"KeeperCompatibleInterface\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[]},\"sources\":{\"contracts/interfaces/KeeperCompatibleInterface.sol\":{\"keccak256\":\"0xd01541bff925ba14b83a37a3ab6ea20329125fe2d71a7e28afc46a9791530f0d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://688f76eedb1a50c6de88bdb306c2c04a0883fa29f1ea47de7e4e51a8c5831ed7\",\"dweb:/ipfs/QmdLrXmwGrPAJXQnXasBZFwxAP7BTq5WgDtYhmaJ1nfubW\"]}},\"version\":1}"}},"contracts/splitters/FeesSplitter.sol":{"FeesSplitter":{"abi":[{"inputs":[{"internalType":"address[]","name":"_accounts","type":"address[]"},{"internalType":"uint32[]","name":"_percentAllocations","type":"uint32[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ETHReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"PERCENTAGE_SCALE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"accounts","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32[]","name":"_percentAllocations","type":"uint32[]"}],"name":"checkPercentages","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"distributeERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"distributeETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"percentAllocations","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_accounts","type":"address[]"},{"internalType":"uint32[]","name":"_percentAllocations","type":"uint32[]"}],"name":"updateSplit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"withdrawERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:3959:13","statements":[{"nodeType":"YulBlock","src":"6:3:13","statements":[]},{"body":{"nodeType":"YulBlock","src":"88:728:13","statements":[{"body":{"nodeType":"YulBlock","src":"137:24:13","statements":[{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"146:5:13"},{"name":"array","nodeType":"YulIdentifier","src":"153:5:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"139:6:13"},"nodeType":"YulFunctionCall","src":"139:20:13"},"nodeType":"YulExpressionStatement","src":"139:20:13"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"116:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"124:4:13","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"112:3:13"},"nodeType":"YulFunctionCall","src":"112:17:13"},{"name":"end","nodeType":"YulIdentifier","src":"131:3:13"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"108:3:13"},"nodeType":"YulFunctionCall","src":"108:27:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"101:6:13"},"nodeType":"YulFunctionCall","src":"101:35:13"},"nodeType":"YulIf","src":"98:2:13"},{"nodeType":"YulVariableDeclaration","src":"170:23:13","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"186:6:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"180:5:13"},"nodeType":"YulFunctionCall","src":"180:13:13"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"174:2:13","type":""}]},{"nodeType":"YulVariableDeclaration","src":"202:14:13","value":{"kind":"number","nodeType":"YulLiteral","src":"212:4:13","type":"","value":"0x20"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"206:2:13","type":""}]},{"nodeType":"YulVariableDeclaration","src":"225:71:13","value":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"292:2:13"}],"functionName":{"name":"array_allocation_size_array_address_dyn","nodeType":"YulIdentifier","src":"252:39:13"},"nodeType":"YulFunctionCall","src":"252:43:13"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"236:15:13"},"nodeType":"YulFunctionCall","src":"236:60:13"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"229:3:13","type":""}]},{"nodeType":"YulVariableDeclaration","src":"305:16:13","value":{"name":"dst","nodeType":"YulIdentifier","src":"318:3:13"},"variables":[{"name":"dst_1","nodeType":"YulTypedName","src":"309:5:13","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"337:3:13"},{"name":"_1","nodeType":"YulIdentifier","src":"342:2:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"330:6:13"},"nodeType":"YulFunctionCall","src":"330:15:13"},"nodeType":"YulExpressionStatement","src":"330:15:13"},{"nodeType":"YulAssignment","src":"354:19:13","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"365:3:13"},{"name":"_2","nodeType":"YulIdentifier","src":"370:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"361:3:13"},"nodeType":"YulFunctionCall","src":"361:12:13"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"354:3:13"}]},{"nodeType":"YulVariableDeclaration","src":"382:26:13","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"397:6:13"},{"name":"_2","nodeType":"YulIdentifier","src":"405:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"393:3:13"},"nodeType":"YulFunctionCall","src":"393:15:13"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"386:3:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"462:24:13","statements":[{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"471:5:13"},{"name":"array","nodeType":"YulIdentifier","src":"478:5:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"464:6:13"},"nodeType":"YulFunctionCall","src":"464:20:13"},"nodeType":"YulExpressionStatement","src":"464:20:13"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"431:6:13"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"443:1:13","type":"","value":"5"},{"name":"_1","nodeType":"YulIdentifier","src":"446:2:13"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"439:3:13"},"nodeType":"YulFunctionCall","src":"439:10:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"427:3:13"},"nodeType":"YulFunctionCall","src":"427:23:13"},{"name":"_2","nodeType":"YulIdentifier","src":"452:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"423:3:13"},"nodeType":"YulFunctionCall","src":"423:32:13"},{"name":"end","nodeType":"YulIdentifier","src":"457:3:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"420:2:13"},"nodeType":"YulFunctionCall","src":"420:41:13"},"nodeType":"YulIf","src":"417:2:13"},{"nodeType":"YulVariableDeclaration","src":"495:14:13","value":{"name":"array","nodeType":"YulIdentifier","src":"504:5:13"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"499:1:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"563:224:13","statements":[{"nodeType":"YulVariableDeclaration","src":"577:23:13","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"596:3:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"590:5:13"},"nodeType":"YulFunctionCall","src":"590:10:13"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"581:5:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"658:24:13","statements":[{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"667:5:13"},{"name":"array","nodeType":"YulIdentifier","src":"674:5:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"660:6:13"},"nodeType":"YulFunctionCall","src":"660:20:13"},"nodeType":"YulExpressionStatement","src":"660:20:13"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"626:5:13"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"637:5:13"},{"kind":"number","nodeType":"YulLiteral","src":"644:10:13","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"633:3:13"},"nodeType":"YulFunctionCall","src":"633:22:13"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"623:2:13"},"nodeType":"YulFunctionCall","src":"623:33:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"616:6:13"},"nodeType":"YulFunctionCall","src":"616:41:13"},"nodeType":"YulIf","src":"613:2:13"},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"702:3:13"},{"name":"value","nodeType":"YulIdentifier","src":"707:5:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"695:6:13"},"nodeType":"YulFunctionCall","src":"695:18:13"},"nodeType":"YulExpressionStatement","src":"695:18:13"},{"nodeType":"YulAssignment","src":"726:19:13","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"737:3:13"},{"name":"_2","nodeType":"YulIdentifier","src":"742:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"733:3:13"},"nodeType":"YulFunctionCall","src":"733:12:13"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"726:3:13"}]},{"nodeType":"YulAssignment","src":"758:19:13","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"769:3:13"},{"name":"_2","nodeType":"YulIdentifier","src":"774:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"765:3:13"},"nodeType":"YulFunctionCall","src":"765:12:13"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"758:3:13"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"529:1:13"},{"name":"_1","nodeType":"YulIdentifier","src":"532:2:13"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"526:2:13"},"nodeType":"YulFunctionCall","src":"526:9:13"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"536:18:13","statements":[{"nodeType":"YulAssignment","src":"538:14:13","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"547:1:13"},{"kind":"number","nodeType":"YulLiteral","src":"550:1:13","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"543:3:13"},"nodeType":"YulFunctionCall","src":"543:9:13"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"538:1:13"}]}]},"pre":{"nodeType":"YulBlock","src":"522:3:13","statements":[]},"src":"518:269:13"},{"nodeType":"YulAssignment","src":"796:14:13","value":{"name":"dst_1","nodeType":"YulIdentifier","src":"805:5:13"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"796:5:13"}]}]},"name":"abi_decode_array_uint32_dyn_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"62:6:13","type":""},{"name":"end","nodeType":"YulTypedName","src":"70:3:13","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"78:5:13","type":""}],"src":"14:802:13"},{"body":{"nodeType":"YulBlock","src":"968:1175:13","statements":[{"body":{"nodeType":"YulBlock","src":"1014:26:13","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1023:6:13"},{"name":"value0","nodeType":"YulIdentifier","src":"1031:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1016:6:13"},"nodeType":"YulFunctionCall","src":"1016:22:13"},"nodeType":"YulExpressionStatement","src":"1016:22:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"989:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"998:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"985:3:13"},"nodeType":"YulFunctionCall","src":"985:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"1010:2:13","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"981:3:13"},"nodeType":"YulFunctionCall","src":"981:32:13"},"nodeType":"YulIf","src":"978:2:13"},{"nodeType":"YulVariableDeclaration","src":"1049:30:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1069:9:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1063:5:13"},"nodeType":"YulFunctionCall","src":"1063:16:13"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1053:6:13","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1088:28:13","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1106:2:13","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"1110:1:13","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1102:3:13"},"nodeType":"YulFunctionCall","src":"1102:10:13"},{"kind":"number","nodeType":"YulLiteral","src":"1114:1:13","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1098:3:13"},"nodeType":"YulFunctionCall","src":"1098:18:13"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1092:2:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"1143:26:13","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1152:6:13"},{"name":"value0","nodeType":"YulIdentifier","src":"1160:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1145:6:13"},"nodeType":"YulFunctionCall","src":"1145:22:13"},"nodeType":"YulExpressionStatement","src":"1145:22:13"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1131:6:13"},{"name":"_1","nodeType":"YulIdentifier","src":"1139:2:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1128:2:13"},"nodeType":"YulFunctionCall","src":"1128:14:13"},"nodeType":"YulIf","src":"1125:2:13"},{"nodeType":"YulVariableDeclaration","src":"1178:32:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1192:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"1203:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1188:3:13"},"nodeType":"YulFunctionCall","src":"1188:22:13"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"1182:2:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"1258:26:13","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1267:6:13"},{"name":"value0","nodeType":"YulIdentifier","src":"1275:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1260:6:13"},"nodeType":"YulFunctionCall","src":"1260:22:13"},"nodeType":"YulExpressionStatement","src":"1260:22:13"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1237:2:13"},{"kind":"number","nodeType":"YulLiteral","src":"1241:4:13","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1233:3:13"},"nodeType":"YulFunctionCall","src":"1233:13:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1248:7:13"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1229:3:13"},"nodeType":"YulFunctionCall","src":"1229:27:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1222:6:13"},"nodeType":"YulFunctionCall","src":"1222:35:13"},"nodeType":"YulIf","src":"1219:2:13"},{"nodeType":"YulVariableDeclaration","src":"1293:19:13","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1309:2:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1303:5:13"},"nodeType":"YulFunctionCall","src":"1303:9:13"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"1297:2:13","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1321:14:13","value":{"kind":"number","nodeType":"YulLiteral","src":"1331:4:13","type":"","value":"0x20"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"1325:2:13","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1344:71:13","value":{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"1411:2:13"}],"functionName":{"name":"array_allocation_size_array_address_dyn","nodeType":"YulIdentifier","src":"1371:39:13"},"nodeType":"YulFunctionCall","src":"1371:43:13"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"1355:15:13"},"nodeType":"YulFunctionCall","src":"1355:60:13"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"1348:3:13","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1424:16:13","value":{"name":"dst","nodeType":"YulIdentifier","src":"1437:3:13"},"variables":[{"name":"dst_1","nodeType":"YulTypedName","src":"1428:5:13","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1456:3:13"},{"name":"_3","nodeType":"YulIdentifier","src":"1461:2:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1449:6:13"},"nodeType":"YulFunctionCall","src":"1449:15:13"},"nodeType":"YulExpressionStatement","src":"1449:15:13"},{"nodeType":"YulAssignment","src":"1473:19:13","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1484:3:13"},{"name":"_4","nodeType":"YulIdentifier","src":"1489:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1480:3:13"},"nodeType":"YulFunctionCall","src":"1480:12:13"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"1473:3:13"}]},{"nodeType":"YulVariableDeclaration","src":"1501:22:13","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1516:2:13"},{"name":"_4","nodeType":"YulIdentifier","src":"1520:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1512:3:13"},"nodeType":"YulFunctionCall","src":"1512:11:13"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"1505:3:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"1577:26:13","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1586:6:13"},{"name":"value0","nodeType":"YulIdentifier","src":"1594:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1579:6:13"},"nodeType":"YulFunctionCall","src":"1579:22:13"},"nodeType":"YulExpressionStatement","src":"1579:22:13"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1546:2:13"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1554:1:13","type":"","value":"5"},{"name":"_3","nodeType":"YulIdentifier","src":"1557:2:13"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1550:3:13"},"nodeType":"YulFunctionCall","src":"1550:10:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1542:3:13"},"nodeType":"YulFunctionCall","src":"1542:19:13"},{"name":"_4","nodeType":"YulIdentifier","src":"1563:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1538:3:13"},"nodeType":"YulFunctionCall","src":"1538:28:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1568:7:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1535:2:13"},"nodeType":"YulFunctionCall","src":"1535:41:13"},"nodeType":"YulIf","src":"1532:2:13"},{"nodeType":"YulVariableDeclaration","src":"1612:15:13","value":{"name":"value0","nodeType":"YulIdentifier","src":"1621:6:13"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"1616:1:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"1681:235:13","statements":[{"nodeType":"YulVariableDeclaration","src":"1695:23:13","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"1714:3:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1708:5:13"},"nodeType":"YulFunctionCall","src":"1708:10:13"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1699:5:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"1785:26:13","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1794:6:13"},{"name":"value0","nodeType":"YulIdentifier","src":"1802:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1787:6:13"},"nodeType":"YulFunctionCall","src":"1787:22:13"},"nodeType":"YulExpressionStatement","src":"1787:22:13"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1744:5:13"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1755:5:13"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1770:3:13","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"1775:1:13","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1766:3:13"},"nodeType":"YulFunctionCall","src":"1766:11:13"},{"kind":"number","nodeType":"YulLiteral","src":"1779:1:13","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1762:3:13"},"nodeType":"YulFunctionCall","src":"1762:19:13"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1751:3:13"},"nodeType":"YulFunctionCall","src":"1751:31:13"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1741:2:13"},"nodeType":"YulFunctionCall","src":"1741:42:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1734:6:13"},"nodeType":"YulFunctionCall","src":"1734:50:13"},"nodeType":"YulIf","src":"1731:2:13"},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1831:3:13"},{"name":"value","nodeType":"YulIdentifier","src":"1836:5:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1824:6:13"},"nodeType":"YulFunctionCall","src":"1824:18:13"},"nodeType":"YulExpressionStatement","src":"1824:18:13"},{"nodeType":"YulAssignment","src":"1855:19:13","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1866:3:13"},{"name":"_4","nodeType":"YulIdentifier","src":"1871:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1862:3:13"},"nodeType":"YulFunctionCall","src":"1862:12:13"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"1855:3:13"}]},{"nodeType":"YulAssignment","src":"1887:19:13","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"1898:3:13"},{"name":"_4","nodeType":"YulIdentifier","src":"1903:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1894:3:13"},"nodeType":"YulFunctionCall","src":"1894:12:13"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"1887:3:13"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1647:1:13"},{"name":"_3","nodeType":"YulIdentifier","src":"1650:2:13"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1644:2:13"},"nodeType":"YulFunctionCall","src":"1644:9:13"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1654:18:13","statements":[{"nodeType":"YulAssignment","src":"1656:14:13","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1665:1:13"},{"kind":"number","nodeType":"YulLiteral","src":"1668:1:13","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1661:3:13"},"nodeType":"YulFunctionCall","src":"1661:9:13"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1656:1:13"}]}]},"pre":{"nodeType":"YulBlock","src":"1640:3:13","statements":[]},"src":"1636:280:13"},{"nodeType":"YulAssignment","src":"1925:15:13","value":{"name":"dst_1","nodeType":"YulIdentifier","src":"1935:5:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1925:6:13"}]},{"nodeType":"YulVariableDeclaration","src":"1949:41:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1975:9:13"},{"name":"_4","nodeType":"YulIdentifier","src":"1986:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1971:3:13"},"nodeType":"YulFunctionCall","src":"1971:18:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1965:5:13"},"nodeType":"YulFunctionCall","src":"1965:25:13"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"1953:8:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"2019:26:13","statements":[{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"2028:6:13"},{"name":"value1","nodeType":"YulIdentifier","src":"2036:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2021:6:13"},"nodeType":"YulFunctionCall","src":"2021:22:13"},"nodeType":"YulExpressionStatement","src":"2021:22:13"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"2005:8:13"},{"name":"_1","nodeType":"YulIdentifier","src":"2015:2:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2002:2:13"},"nodeType":"YulFunctionCall","src":"2002:16:13"},"nodeType":"YulIf","src":"1999:2:13"},{"nodeType":"YulAssignment","src":"2054:83:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2107:9:13"},{"name":"offset_1","nodeType":"YulIdentifier","src":"2118:8:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2103:3:13"},"nodeType":"YulFunctionCall","src":"2103:24:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2129:7:13"}],"functionName":{"name":"abi_decode_array_uint32_dyn_fromMemory","nodeType":"YulIdentifier","src":"2064:38:13"},"nodeType":"YulFunctionCall","src":"2064:73:13"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2054:6:13"}]}]},"name":"abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint32_$dyn_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"926:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"937:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"949:6:13","type":""},{"name":"value1","nodeType":"YulTypedName","src":"957:6:13","type":""}],"src":"821:1322:13"},{"body":{"nodeType":"YulBlock","src":"2322:182:13","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2339:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"2350:2:13","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2332:6:13"},"nodeType":"YulFunctionCall","src":"2332:21:13"},"nodeType":"YulExpressionStatement","src":"2332:21:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2373:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"2384:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2369:3:13"},"nodeType":"YulFunctionCall","src":"2369:18:13"},{"kind":"number","nodeType":"YulLiteral","src":"2389:2:13","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2362:6:13"},"nodeType":"YulFunctionCall","src":"2362:30:13"},"nodeType":"YulExpressionStatement","src":"2362:30:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2412:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"2423:2:13","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2408:3:13"},"nodeType":"YulFunctionCall","src":"2408:18:13"},{"kind":"string","nodeType":"YulLiteral","src":"2428:34:13","type":"","value":"Ownable: caller is not the owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2401:6:13"},"nodeType":"YulFunctionCall","src":"2401:62:13"},"nodeType":"YulExpressionStatement","src":"2401:62:13"},{"nodeType":"YulAssignment","src":"2472:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2484:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"2495:2:13","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2480:3:13"},"nodeType":"YulFunctionCall","src":"2480:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2472:4:13"}]}]},"name":"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2299:9:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2313:4:13","type":""}],"src":"2148:356:13"},{"body":{"nodeType":"YulBlock","src":"2683:169:13","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2700:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"2711:2:13","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2693:6:13"},"nodeType":"YulFunctionCall","src":"2693:21:13"},"nodeType":"YulExpressionStatement","src":"2693:21:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2734:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"2745:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2730:3:13"},"nodeType":"YulFunctionCall","src":"2730:18:13"},{"kind":"number","nodeType":"YulLiteral","src":"2750:2:13","type":"","value":"19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2723:6:13"},"nodeType":"YulFunctionCall","src":"2723:30:13"},"nodeType":"YulExpressionStatement","src":"2723:30:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2773:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"2784:2:13","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2769:3:13"},"nodeType":"YulFunctionCall","src":"2769:18:13"},{"kind":"string","nodeType":"YulLiteral","src":"2789:21:13","type":"","value":"invalid percentages"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2762:6:13"},"nodeType":"YulFunctionCall","src":"2762:49:13"},"nodeType":"YulExpressionStatement","src":"2762:49:13"},{"nodeType":"YulAssignment","src":"2820:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2832:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"2843:2:13","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2828:3:13"},"nodeType":"YulFunctionCall","src":"2828:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2820:4:13"}]}]},"name":"abi_encode_tuple_t_stringliteral_da5de935a79473774bc1a56577c1e5d9c5477e764be29dbf7e048ba86c791791__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2660:9:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2674:4:13","type":""}],"src":"2509:343:13"},{"body":{"nodeType":"YulBlock","src":"2902:230:13","statements":[{"nodeType":"YulAssignment","src":"2912:19:13","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2928:2:13","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2922:5:13"},"nodeType":"YulFunctionCall","src":"2922:9:13"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2912:6:13"}]},{"nodeType":"YulVariableDeclaration","src":"2940:58:13","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2962:6:13"},{"arguments":[{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"2978:4:13"},{"kind":"number","nodeType":"YulLiteral","src":"2984:2:13","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2974:3:13"},"nodeType":"YulFunctionCall","src":"2974:13:13"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2993:2:13","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2989:3:13"},"nodeType":"YulFunctionCall","src":"2989:7:13"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2970:3:13"},"nodeType":"YulFunctionCall","src":"2970:27:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2958:3:13"},"nodeType":"YulFunctionCall","src":"2958:40:13"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"2944:10:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"3073:22:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"3075:16:13"},"nodeType":"YulFunctionCall","src":"3075:18:13"},"nodeType":"YulExpressionStatement","src":"3075:18:13"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3016:10:13"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3036:2:13","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"3040:1:13","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3032:3:13"},"nodeType":"YulFunctionCall","src":"3032:10:13"},{"kind":"number","nodeType":"YulLiteral","src":"3044:1:13","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3028:3:13"},"nodeType":"YulFunctionCall","src":"3028:18:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3013:2:13"},"nodeType":"YulFunctionCall","src":"3013:34:13"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3052:10:13"},{"name":"memPtr","nodeType":"YulIdentifier","src":"3064:6:13"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3049:2:13"},"nodeType":"YulFunctionCall","src":"3049:22:13"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"3010:2:13"},"nodeType":"YulFunctionCall","src":"3010:62:13"},"nodeType":"YulIf","src":"3007:2:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3111:2:13","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3115:10:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3104:6:13"},"nodeType":"YulFunctionCall","src":"3104:22:13"},"nodeType":"YulExpressionStatement","src":"3104:22:13"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"2882:4:13","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"2891:6:13","type":""}],"src":"2857:275:13"},{"body":{"nodeType":"YulBlock","src":"3206:114:13","statements":[{"body":{"nodeType":"YulBlock","src":"3250:22:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"3252:16:13"},"nodeType":"YulFunctionCall","src":"3252:18:13"},"nodeType":"YulExpressionStatement","src":"3252:18:13"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3222:6:13"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3238:2:13","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"3242:1:13","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3234:3:13"},"nodeType":"YulFunctionCall","src":"3234:10:13"},{"kind":"number","nodeType":"YulLiteral","src":"3246:1:13","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3230:3:13"},"nodeType":"YulFunctionCall","src":"3230:18:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3219:2:13"},"nodeType":"YulFunctionCall","src":"3219:30:13"},"nodeType":"YulIf","src":"3216:2:13"},{"nodeType":"YulAssignment","src":"3281:33:13","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3297:1:13","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"3300:6:13"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3293:3:13"},"nodeType":"YulFunctionCall","src":"3293:14:13"},{"kind":"number","nodeType":"YulLiteral","src":"3309:4:13","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3289:3:13"},"nodeType":"YulFunctionCall","src":"3289:25:13"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"3281:4:13"}]}]},"name":"array_allocation_size_array_address_dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"3186:6:13","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"3197:4:13","type":""}],"src":"3137:183:13"},{"body":{"nodeType":"YulBlock","src":"3372:181:13","statements":[{"nodeType":"YulVariableDeclaration","src":"3382:20:13","value":{"kind":"number","nodeType":"YulLiteral","src":"3392:10:13","type":"","value":"0xffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3386:2:13","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3411:21:13","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3426:1:13"},{"name":"_1","nodeType":"YulIdentifier","src":"3429:2:13"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3422:3:13"},"nodeType":"YulFunctionCall","src":"3422:10:13"},"variables":[{"name":"x_1","nodeType":"YulTypedName","src":"3415:3:13","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3441:21:13","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"3456:1:13"},{"name":"_1","nodeType":"YulIdentifier","src":"3459:2:13"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3452:3:13"},"nodeType":"YulFunctionCall","src":"3452:10:13"},"variables":[{"name":"y_1","nodeType":"YulTypedName","src":"3445:3:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"3496:22:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"3498:16:13"},"nodeType":"YulFunctionCall","src":"3498:18:13"},"nodeType":"YulExpressionStatement","src":"3498:18:13"}]},"condition":{"arguments":[{"name":"x_1","nodeType":"YulIdentifier","src":"3477:3:13"},{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3486:2:13"},{"name":"y_1","nodeType":"YulIdentifier","src":"3490:3:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3482:3:13"},"nodeType":"YulFunctionCall","src":"3482:12:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3474:2:13"},"nodeType":"YulFunctionCall","src":"3474:21:13"},"nodeType":"YulIf","src":"3471:2:13"},{"nodeType":"YulAssignment","src":"3527:20:13","value":{"arguments":[{"name":"x_1","nodeType":"YulIdentifier","src":"3538:3:13"},{"name":"y_1","nodeType":"YulIdentifier","src":"3543:3:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3534:3:13"},"nodeType":"YulFunctionCall","src":"3534:13:13"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"3527:3:13"}]}]},"name":"checked_add_t_uint32","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"3355:1:13","type":""},{"name":"y","nodeType":"YulTypedName","src":"3358:1:13","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"3364:3:13","type":""}],"src":"3325:228:13"},{"body":{"nodeType":"YulBlock","src":"3605:88:13","statements":[{"body":{"nodeType":"YulBlock","src":"3636:22:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"3638:16:13"},"nodeType":"YulFunctionCall","src":"3638:18:13"},"nodeType":"YulExpressionStatement","src":"3638:18:13"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3621:5:13"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3632:1:13","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3628:3:13"},"nodeType":"YulFunctionCall","src":"3628:6:13"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3618:2:13"},"nodeType":"YulFunctionCall","src":"3618:17:13"},"nodeType":"YulIf","src":"3615:2:13"},{"nodeType":"YulAssignment","src":"3667:20:13","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3678:5:13"},{"kind":"number","nodeType":"YulLiteral","src":"3685:1:13","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3674:3:13"},"nodeType":"YulFunctionCall","src":"3674:13:13"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"3667:3:13"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3587:5:13","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"3597:3:13","type":""}],"src":"3558:135:13"},{"body":{"nodeType":"YulBlock","src":"3730:95:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3747:1:13","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3754:3:13","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"3759:10:13","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3750:3:13"},"nodeType":"YulFunctionCall","src":"3750:20:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3740:6:13"},"nodeType":"YulFunctionCall","src":"3740:31:13"},"nodeType":"YulExpressionStatement","src":"3740:31:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3787:1:13","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"3790:4:13","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3780:6:13"},"nodeType":"YulFunctionCall","src":"3780:15:13"},"nodeType":"YulExpressionStatement","src":"3780:15:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3811:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3814:4:13","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3804:6:13"},"nodeType":"YulFunctionCall","src":"3804:15:13"},"nodeType":"YulExpressionStatement","src":"3804:15:13"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"3698:127:13"},{"body":{"nodeType":"YulBlock","src":"3862:95:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3879:1:13","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3886:3:13","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"3891:10:13","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3882:3:13"},"nodeType":"YulFunctionCall","src":"3882:20:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3872:6:13"},"nodeType":"YulFunctionCall","src":"3872:31:13"},"nodeType":"YulExpressionStatement","src":"3872:31:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3919:1:13","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"3922:4:13","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3912:6:13"},"nodeType":"YulFunctionCall","src":"3912:15:13"},"nodeType":"YulExpressionStatement","src":"3912:15:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3943:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3946:4:13","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3936:6:13"},"nodeType":"YulFunctionCall","src":"3936:15:13"},"nodeType":"YulExpressionStatement","src":"3936:15:13"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"3830:127:13"}]},"contents":"{\n    { }\n    function abi_decode_array_uint32_dyn_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let _1 := mload(offset)\n        let _2 := 0x20\n        let dst := allocate_memory(array_allocation_size_array_address_dyn(_1))\n        let dst_1 := dst\n        mstore(dst, _1)\n        dst := add(dst, _2)\n        let src := add(offset, _2)\n        if gt(add(add(offset, shl(5, _1)), _2), end) { revert(array, array) }\n        let i := array\n        for { } lt(i, _1) { i := add(i, 1) }\n        {\n            let value := mload(src)\n            if iszero(eq(value, and(value, 0xffffffff))) { revert(array, array) }\n            mstore(dst, value)\n            dst := add(dst, _2)\n            src := add(src, _2)\n        }\n        array := dst_1\n    }\n    function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint32_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let offset := mload(headStart)\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(value0, value0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(value0, value0) }\n        let _3 := mload(_2)\n        let _4 := 0x20\n        let dst := allocate_memory(array_allocation_size_array_address_dyn(_3))\n        let dst_1 := dst\n        mstore(dst, _3)\n        dst := add(dst, _4)\n        let src := add(_2, _4)\n        if gt(add(add(_2, shl(5, _3)), _4), dataEnd) { revert(value0, value0) }\n        let i := value0\n        for { } lt(i, _3) { i := add(i, 1) }\n        {\n            let value := mload(src)\n            if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(value0, value0) }\n            mstore(dst, value)\n            dst := add(dst, _4)\n            src := add(src, _4)\n        }\n        value0 := dst_1\n        let offset_1 := mload(add(headStart, _4))\n        if gt(offset_1, _1) { revert(value1, value1) }\n        value1 := abi_decode_array_uint32_dyn_fromMemory(add(headStart, offset_1), dataEnd)\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_da5de935a79473774bc1a56577c1e5d9c5477e764be29dbf7e048ba86c791791__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 19)\n        mstore(add(headStart, 64), \"invalid percentages\")\n        tail := add(headStart, 96)\n    }\n    function allocate_memory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n        if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_array_address_dyn(length) -> size\n    {\n        if gt(length, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        size := add(shl(5, length), 0x20)\n    }\n    function checked_add_t_uint32(x, y) -> sum\n    {\n        let _1 := 0xffffffff\n        let x_1 := and(x, _1)\n        let y_1 := and(y, _1)\n        if gt(x_1, sub(_1, y_1)) { panic_error_0x11() }\n        sum := add(x_1, y_1)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0)) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n}","id":13,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b50604051620012f8380380620012f88339810160408190526200003491620003aa565b6200003f336200007e565b815162000054906001906020850190620001f4565b5080516200006a9060029060208401906200025e565b506200007681620000ce565b505062000555565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b620000d862000196565b6000805b825181101562000133578281815181106200010757634e487b7160e01b600052603260045260246000fd5b6020026020010151826200011c9190620004e0565b9150806200012a816200050b565b915050620000dc565b50620f42408163ffffffff1614620001925760405162461bcd60e51b815260206004820152601360248201527f696e76616c69642070657263656e74616765730000000000000000000000000060448201526064015b60405180910390fd5b5050565b6000546001600160a01b03163314620001f25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000189565b565b8280548282559060005260206000209081019282156200024c579160200282015b828111156200024c57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000215565b506200025a9291506200030a565b5090565b828054828255906000526020600020906007016008900481019282156200024c5791602002820160005b83821115620002ce57835183826101000a81548163ffffffff021916908363ffffffff160217905550926020019260040160208160030104928301926001030262000288565b8015620003005782816101000a81549063ffffffff0219169055600401602081600301049283019260010302620002ce565b50506200025a9291505b5b808211156200025a57600081556001016200030b565b600082601f83011262000332578081fd5b815160206200034b6200034583620004ba565b62000487565b80838252828201915082860187848660051b89010111156200036b578586fd5b855b858110156200039d57815163ffffffff811681146200038a578788fd5b845292840192908401906001016200036d565b5090979650505050505050565b60008060408385031215620003bd578182fd5b82516001600160401b0380821115620003d4578384fd5b818501915085601f830112620003e8578384fd5b81516020620003fb6200034583620004ba565b8083825282820191508286018a848660051b89010111156200041b578889fd5b8896505b84871015620004545780516001600160a01b03811681146200043f57898afd5b8352600196909601959183019183016200041f565b50918801519196509093505050808211156200046e578283fd5b506200047d8582860162000321565b9150509250929050565b604051601f8201601f191681016001600160401b0381118282101715620004b257620004b26200053f565b604052919050565b60006001600160401b03821115620004d657620004d66200053f565b5060051b60200190565b600063ffffffff80831681851680830382111562000502576200050262000529565b01949350505050565b600060001982141562000522576200052262000529565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b610d9380620005656000396000f3fe6080604052600436106100aa5760003560e01c8063bce5826911610064578063bce58269146101c1578063c45ff544146101e1578063e086e5ec14610201578063f2a40db814610216578063f2fde38b14610236578063f4f3b2001461025657600080fd5b80623f619d146100ef5780633f26479e1461012957806344def48f1461014e578063715018a6146101705780638da5cb5b14610185578063b8b9b549146101ac57600080fd5b366100ea577fbfe611b001dfcd411432f7bf0d79b82b4b2ee81511edac123a3403c357fb972a33346040516100e0929190610c6b565b60405180910390a1005b600080fd5b3480156100fb57600080fd5b5061010f61010a366004610c27565b610276565b60405163ffffffff90911681526020015b60405180910390f35b34801561013557600080fd5b50610140620f424081565b604051908152602001610120565b34801561015a57600080fd5b5061016e610169366004610b09565b6102b0565b005b34801561017c57600080fd5b5061016e6102ed565b34801561019157600080fd5b506000546001600160a01b03165b6040516101209190610c57565b3480156101b857600080fd5b5061016e610301565b3480156101cd57600080fd5b5061016e6101dc366004610ae6565b61046c565b3480156101ed57600080fd5b5061016e6101fc366004610bcc565b6105f8565b34801561020d57600080fd5b5061016e6106a3565b34801561022257600080fd5b5061019f610231366004610c27565b6106e8565b34801561024257600080fd5b5061016e610251366004610ae6565b610712565b34801561026257600080fd5b5061016e610271366004610ae6565b610788565b6002818154811061028657600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6102b861089c565b81516102cb906001906020850190610946565b5080516102df9060029060208401906109ab565b506102e9816105f8565b5050565b6102f561089c565b6102ff60006108f6565b565b600154479060005b81811015610467576000610368846002848154811061033857634e487b7160e01b600052603260045260246000fd5b60009182526020909120600882040154620f424060079092166004026101000a900463ffffffff16919091020490565b905060006001838154811061038d57634e487b7160e01b600052603260045260246000fd5b60009182526020822001546040516001600160a01b039091169184919081818185875af1925050503d80600081146103e1576040519150601f19603f3d011682016040523d82523d6000602084013e6103e6565b606091505b50509050806104545760405162461bcd60e51b815260206004820152602f60248201527f756e61626c6520746f2073656e64206574682c20726563697069656e74206d6160448201526e1e481a185d99481c995d995c9d1959608a1b60648201526084015b60405180910390fd5b50508061046090610d01565b9050610309565b505050565b6040516370a0823160e01b81526000906001600160a01b038316906370a082319061049b903090600401610c57565b60206040518083038186803b1580156104b357600080fd5b505afa1580156104c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104eb9190610c3f565b60015490915060005b818110156105f2576000610523846002848154811061033857634e487b7160e01b600052603260045260246000fd5b9050846001600160a01b031663a9059cbb6001848154811061055557634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546040516001600160e01b031960e084901b16815261058d916001600160a01b0316908590600401610c6b565b602060405180830381600087803b1580156105a757600080fd5b505af11580156105bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105df9190610c07565b5050806105eb90610d01565b90506104f4565b50505050565b61060061089c565b6000805b82518110156106545782818151811061062d57634e487b7160e01b600052603260045260246000fd5b6020026020010151826106409190610cd9565b91508061064c81610d01565b915050610604565b50620f42408163ffffffff16146102e95760405162461bcd60e51b8152602060048201526013602482015272696e76616c69642070657263656e746167657360681b604482015260640161044b565b6106ab61089c565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f193505050501580156106e5573d6000803e3d6000fd5b50565b600181815481106106f857600080fd5b6000918252602090912001546001600160a01b0316905081565b61071a61089c565b6001600160a01b03811661077f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161044b565b6106e5816108f6565b61079061089c565b806001600160a01b031663a9059cbb6107b16000546001600160a01b031690565b6040516370a0823160e01b81526001600160a01b038516906370a08231906107dd903090600401610c57565b60206040518083038186803b1580156107f557600080fd5b505afa158015610809573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082d9190610c3f565b6040518363ffffffff1660e01b815260040161084a929190610c6b565b602060405180830381600087803b15801561086457600080fd5b505af1158015610878573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e99190610c07565b6000546001600160a01b031633146102ff5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161044b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b82805482825590600052602060002090810192821561099b579160200282015b8281111561099b57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610966565b506109a7929150610a51565b5090565b8280548282559060005260206000209060070160089004810192821561099b5791602002820160005b83821115610a1857835183826101000a81548163ffffffff021916908363ffffffff16021790555092602001926004016020816003010492830192600103026109d4565b8015610a485782816101000a81549063ffffffff0219169055600401602081600301049283019260010302610a18565b50506109a79291505b5b808211156109a75760008155600101610a52565b600082601f830112610a76578081fd5b81356020610a8b610a8683610cb5565b610c84565b80838252828201915082860187848660051b8901011115610aaa578586fd5b855b85811015610ad957813563ffffffff81168114610ac7578788fd5b84529284019290840190600101610aac565b5090979650505050505050565b600060208284031215610af7578081fd5b8135610b0281610d48565b9392505050565b60008060408385031215610b1b578081fd5b823567ffffffffffffffff80821115610b32578283fd5b818501915085601f830112610b45578283fd5b81356020610b55610a8683610cb5565b8083825282820191508286018a848660051b8901011115610b74578788fd5b8796505b84871015610b9f578035610b8b81610d48565b835260019690960195918301918301610b78565b5096505086013592505080821115610bb5578283fd5b50610bc285828601610a66565b9150509250929050565b600060208284031215610bdd578081fd5b813567ffffffffffffffff811115610bf3578182fd5b610bff84828501610a66565b949350505050565b600060208284031215610c18578081fd5b81518015158114610b02578182fd5b600060208284031215610c38578081fd5b5035919050565b600060208284031215610c50578081fd5b5051919050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b604051601f8201601f1916810167ffffffffffffffff81118282101715610cad57610cad610d32565b604052919050565b600067ffffffffffffffff821115610ccf57610ccf610d32565b5060051b60200190565b600063ffffffff808316818516808303821115610cf857610cf8610d1c565b01949350505050565b6000600019821415610d1557610d15610d1c565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146106e557600080fdfea2646970667358221220b1bb67814c8bbf9451913e2dfd61ab871692ba1323c71933dc176a4dcbdfb3af64736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x12F8 CODESIZE SUB DUP1 PUSH3 0x12F8 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x3AA JUMP JUMPDEST PUSH3 0x3F CALLER PUSH3 0x7E JUMP JUMPDEST DUP2 MLOAD PUSH3 0x54 SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x1F4 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x6A SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x25E JUMP JUMPDEST POP PUSH3 0x76 DUP2 PUSH3 0xCE JUMP JUMPDEST POP POP PUSH3 0x555 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH3 0xD8 PUSH3 0x196 JUMP JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH3 0x133 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH3 0x107 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP3 PUSH3 0x11C SWAP2 SWAP1 PUSH3 0x4E0 JUMP JUMPDEST SWAP2 POP DUP1 PUSH3 0x12A DUP2 PUSH3 0x50B JUMP JUMPDEST SWAP2 POP POP PUSH3 0xDC JUMP JUMPDEST POP PUSH3 0xF4240 DUP2 PUSH4 0xFFFFFFFF AND EQ PUSH3 0x192 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x696E76616C69642070657263656E746167657300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH3 0x1F2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x189 JUMP JUMPDEST JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH3 0x24C JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x24C JUMPI DUP3 MLOAD DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND OR DUP3 SSTORE PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH3 0x215 JUMP JUMPDEST POP PUSH3 0x25A SWAP3 SWAP2 POP PUSH3 0x30A JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x7 ADD PUSH1 0x8 SWAP1 DIV DUP2 ADD SWAP3 DUP3 ISZERO PUSH3 0x24C JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD PUSH1 0x0 JUMPDEST DUP4 DUP3 GT ISZERO PUSH3 0x2CE JUMPI DUP4 MLOAD DUP4 DUP3 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP SWAP3 PUSH1 0x20 ADD SWAP3 PUSH1 0x4 ADD PUSH1 0x20 DUP2 PUSH1 0x3 ADD DIV SWAP3 DUP4 ADD SWAP3 PUSH1 0x1 SUB MUL PUSH3 0x288 JUMP JUMPDEST DUP1 ISZERO PUSH3 0x300 JUMPI DUP3 DUP2 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x4 ADD PUSH1 0x20 DUP2 PUSH1 0x3 ADD DIV SWAP3 DUP4 ADD SWAP3 PUSH1 0x1 SUB MUL PUSH3 0x2CE JUMP JUMPDEST POP POP PUSH3 0x25A SWAP3 SWAP2 POP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x25A JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x30B JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x332 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH3 0x34B PUSH3 0x345 DUP4 PUSH3 0x4BA JUMP JUMPDEST PUSH3 0x487 JUMP JUMPDEST DUP1 DUP4 DUP3 MSTORE DUP3 DUP3 ADD SWAP2 POP DUP3 DUP7 ADD DUP8 DUP5 DUP7 PUSH1 0x5 SHL DUP10 ADD ADD GT ISZERO PUSH3 0x36B JUMPI DUP6 DUP7 REVERT JUMPDEST DUP6 JUMPDEST DUP6 DUP2 LT ISZERO PUSH3 0x39D JUMPI DUP2 MLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH3 0x38A JUMPI DUP8 DUP9 REVERT JUMPDEST DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH3 0x36D JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x3BD JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x3D4 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x3E8 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH3 0x3FB PUSH3 0x345 DUP4 PUSH3 0x4BA JUMP JUMPDEST DUP1 DUP4 DUP3 MSTORE DUP3 DUP3 ADD SWAP2 POP DUP3 DUP7 ADD DUP11 DUP5 DUP7 PUSH1 0x5 SHL DUP10 ADD ADD GT ISZERO PUSH3 0x41B JUMPI DUP9 DUP10 REVERT JUMPDEST DUP9 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH3 0x454 JUMPI DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x43F JUMPI DUP10 DUP11 REVERT JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH3 0x41F JUMP JUMPDEST POP SWAP2 DUP9 ADD MLOAD SWAP2 SWAP7 POP SWAP1 SWAP4 POP POP POP DUP1 DUP3 GT ISZERO PUSH3 0x46E JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH3 0x47D DUP6 DUP3 DUP7 ADD PUSH3 0x321 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH3 0x4B2 JUMPI PUSH3 0x4B2 PUSH3 0x53F JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH3 0x4D6 JUMPI PUSH3 0x4D6 PUSH3 0x53F JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH3 0x502 JUMPI PUSH3 0x502 PUSH3 0x529 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH3 0x522 JUMPI PUSH3 0x522 PUSH3 0x529 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0xD93 DUP1 PUSH3 0x565 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xAA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xBCE58269 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xBCE58269 EQ PUSH2 0x1C1 JUMPI DUP1 PUSH4 0xC45FF544 EQ PUSH2 0x1E1 JUMPI DUP1 PUSH4 0xE086E5EC EQ PUSH2 0x201 JUMPI DUP1 PUSH4 0xF2A40DB8 EQ PUSH2 0x216 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x236 JUMPI DUP1 PUSH4 0xF4F3B200 EQ PUSH2 0x256 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH3 0x3F619D EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x3F26479E EQ PUSH2 0x129 JUMPI DUP1 PUSH4 0x44DEF48F EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x185 JUMPI DUP1 PUSH4 0xB8B9B549 EQ PUSH2 0x1AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLDATASIZE PUSH2 0xEA JUMPI PUSH32 0xBFE611B001DFCD411432F7BF0D79B82B4B2EE81511EDAC123A3403C357FB972A CALLER CALLVALUE PUSH1 0x40 MLOAD PUSH2 0xE0 SWAP3 SWAP2 SWAP1 PUSH2 0xC6B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10F PUSH2 0x10A CALLDATASIZE PUSH1 0x4 PUSH2 0xC27 JUMP JUMPDEST PUSH2 0x276 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x135 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x140 PUSH3 0xF4240 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x120 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x169 CALLDATASIZE PUSH1 0x4 PUSH2 0xB09 JUMP JUMPDEST PUSH2 0x2B0 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x2ED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x191 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x120 SWAP2 SWAP1 PUSH2 0xC57 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x301 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x1DC CALLDATASIZE PUSH1 0x4 PUSH2 0xAE6 JUMP JUMPDEST PUSH2 0x46C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x1FC CALLDATASIZE PUSH1 0x4 PUSH2 0xBCC JUMP JUMPDEST PUSH2 0x5F8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x6A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x222 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19F PUSH2 0x231 CALLDATASIZE PUSH1 0x4 PUSH2 0xC27 JUMP JUMPDEST PUSH2 0x6E8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x242 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x251 CALLDATASIZE PUSH1 0x4 PUSH2 0xAE6 JUMP JUMPDEST PUSH2 0x712 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x271 CALLDATASIZE PUSH1 0x4 PUSH2 0xAE6 JUMP JUMPDEST PUSH2 0x788 JUMP JUMPDEST PUSH1 0x2 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x286 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x8 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x4 MUL SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x2B8 PUSH2 0x89C JUMP JUMPDEST DUP2 MLOAD PUSH2 0x2CB SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x946 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x2DF SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x9AB JUMP JUMPDEST POP PUSH2 0x2E9 DUP2 PUSH2 0x5F8 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x2F5 PUSH2 0x89C JUMP JUMPDEST PUSH2 0x2FF PUSH1 0x0 PUSH2 0x8F6 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 SLOAD SELFBALANCE SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x467 JUMPI PUSH1 0x0 PUSH2 0x368 DUP5 PUSH1 0x2 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x338 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x8 DUP3 DIV ADD SLOAD PUSH3 0xF4240 PUSH1 0x7 SWAP1 SWAP3 AND PUSH1 0x4 MUL PUSH2 0x100 EXP SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP2 SWAP1 SWAP2 MUL DIV SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x38D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 DUP5 SWAP2 SWAP1 DUP2 DUP2 DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3E1 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3E6 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x454 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x756E61626C6520746F2073656E64206574682C20726563697069656E74206D61 PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x1E481A185D99481C995D995C9D1959 PUSH1 0x8A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP DUP1 PUSH2 0x460 SWAP1 PUSH2 0xD01 JUMP JUMPDEST SWAP1 POP PUSH2 0x309 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x49B SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0xC57 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4C7 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 0x4EB SWAP2 SWAP1 PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x5F2 JUMPI PUSH1 0x0 PUSH2 0x523 DUP5 PUSH1 0x2 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x338 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0x1 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x555 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH2 0x58D SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0xC6B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5BB 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 0x5DF SWAP2 SWAP1 PUSH2 0xC07 JUMP JUMPDEST POP POP DUP1 PUSH2 0x5EB SWAP1 PUSH2 0xD01 JUMP JUMPDEST SWAP1 POP PUSH2 0x4F4 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x600 PUSH2 0x89C JUMP JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x654 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x62D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP3 PUSH2 0x640 SWAP2 SWAP1 PUSH2 0xCD9 JUMP JUMPDEST SWAP2 POP DUP1 PUSH2 0x64C DUP2 PUSH2 0xD01 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x604 JUMP JUMPDEST POP PUSH3 0xF4240 DUP2 PUSH4 0xFFFFFFFF AND EQ PUSH2 0x2E9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x696E76616C69642070657263656E7461676573 PUSH1 0x68 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x44B JUMP JUMPDEST PUSH2 0x6AB PUSH2 0x89C JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 SELFBALANCE DUP1 ISZERO PUSH2 0x8FC MUL SWAP3 SWAP1 SWAP2 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x6E5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x6F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH2 0x71A PUSH2 0x89C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x77F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x44B JUMP JUMPDEST PUSH2 0x6E5 DUP2 PUSH2 0x8F6 JUMP JUMPDEST PUSH2 0x790 PUSH2 0x89C JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB PUSH2 0x7B1 PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x7DD SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0xC57 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x809 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 0x82D SWAP2 SWAP1 PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x84A SWAP3 SWAP2 SWAP1 PUSH2 0xC6B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x864 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x878 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 0x2E9 SWAP2 SWAP1 PUSH2 0xC07 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x2FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x44B JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x99B JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x99B JUMPI DUP3 MLOAD DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND OR DUP3 SSTORE PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x966 JUMP JUMPDEST POP PUSH2 0x9A7 SWAP3 SWAP2 POP PUSH2 0xA51 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x7 ADD PUSH1 0x8 SWAP1 DIV DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x99B JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD PUSH1 0x0 JUMPDEST DUP4 DUP3 GT ISZERO PUSH2 0xA18 JUMPI DUP4 MLOAD DUP4 DUP3 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP SWAP3 PUSH1 0x20 ADD SWAP3 PUSH1 0x4 ADD PUSH1 0x20 DUP2 PUSH1 0x3 ADD DIV SWAP3 DUP4 ADD SWAP3 PUSH1 0x1 SUB MUL PUSH2 0x9D4 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xA48 JUMPI DUP3 DUP2 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x4 ADD PUSH1 0x20 DUP2 PUSH1 0x3 ADD DIV SWAP3 DUP4 ADD SWAP3 PUSH1 0x1 SUB MUL PUSH2 0xA18 JUMP JUMPDEST POP POP PUSH2 0x9A7 SWAP3 SWAP2 POP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x9A7 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xA52 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xA76 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0xA8B PUSH2 0xA86 DUP4 PUSH2 0xCB5 JUMP JUMPDEST PUSH2 0xC84 JUMP JUMPDEST DUP1 DUP4 DUP3 MSTORE DUP3 DUP3 ADD SWAP2 POP DUP3 DUP7 ADD DUP8 DUP5 DUP7 PUSH1 0x5 SHL DUP10 ADD ADD GT ISZERO PUSH2 0xAAA JUMPI DUP6 DUP7 REVERT JUMPDEST DUP6 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0xAD9 JUMPI DUP2 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xAC7 JUMPI DUP8 DUP9 REVERT JUMPDEST DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xAAC JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAF7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xB02 DUP2 PUSH2 0xD48 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB1B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xB32 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xB45 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0xB55 PUSH2 0xA86 DUP4 PUSH2 0xCB5 JUMP JUMPDEST DUP1 DUP4 DUP3 MSTORE DUP3 DUP3 ADD SWAP2 POP DUP3 DUP7 ADD DUP11 DUP5 DUP7 PUSH1 0x5 SHL DUP10 ADD ADD GT ISZERO PUSH2 0xB74 JUMPI DUP8 DUP9 REVERT JUMPDEST DUP8 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0xB9F JUMPI DUP1 CALLDATALOAD PUSH2 0xB8B DUP2 PUSH2 0xD48 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0xB78 JUMP JUMPDEST POP SWAP7 POP POP DUP7 ADD CALLDATALOAD SWAP3 POP POP DUP1 DUP3 GT ISZERO PUSH2 0xBB5 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0xBC2 DUP6 DUP3 DUP7 ADD PUSH2 0xA66 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBDD JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBF3 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0xBFF DUP5 DUP3 DUP6 ADD PUSH2 0xA66 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC18 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xB02 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC38 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC50 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xCAD JUMPI PUSH2 0xCAD PUSH2 0xD32 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xCCF JUMPI PUSH2 0xCCF PUSH2 0xD32 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0xCF8 JUMPI PUSH2 0xCF8 PUSH2 0xD1C JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0xD15 JUMPI PUSH2 0xD15 PUSH2 0xD1C JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x6E5 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB1 0xBB PUSH8 0x814C8BBF9451913E 0x2D REVERT PUSH2 0xAB87 AND SWAP3 0xBA SGT 0x23 0xC7 NOT CALLER 0xDC OR PUSH11 0x4DCBDFB3AF64736F6C6343 STOP ADDMOD DIV STOP CALLER ","sourceMap":"231:3222:10:-:0;;;481:215;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;936:32:0;719:10:5;936:18:0;:32::i;:::-;572:20:10;;;;:8;;:20;;;;;:::i;:::-;-1:-1:-1;602:40:10;;;;:18;;:40;;;;;:::i;:::-;-1:-1:-1;652:37:10;669:19;652:16;:37::i;:::-;481:215;;231:3222;;2433:187:0;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:0;;;-1:-1:-1;;;;;;2541:17:0;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2433:187;;:::o;2276:329:10:-;1094:13:0;:11;:13::i;:::-;2399:10:10::1;2428:9:::0;2423:111:::1;2447:19;:26;2443:1;:30;2423:111;;;2501:19;2521:1;2501:22;;;;;;-1:-1:-1::0;;;2501:22:10::1;;;;;;;;;;;;;;;2494:29;;;;;:::i;:::-;::::0;-1:-1:-1;2475:3:10;::::1;::::0;::::1;:::i;:::-;;;;2423:111;;;;400:3;2551;:23;;;2543:55;;;::::0;-1:-1:-1;;;2543:55:10;;2711:2:13;2543:55:10::1;::::0;::::1;2693:21:13::0;2750:2;2730:18;;;2723:30;2789:21;2769:18;;;2762:49;2828:18;;2543:55:10::1;;;;;;;;;1117:1:0;2276:329:10::0;:::o;1359:130:0:-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:0;719:10:5;1422:23:0;1414:68;;;;-1:-1:-1;;;1414:68:0;;2350:2:13;1414:68:0;;;2332:21:13;;;2369:18;;;2362:30;2428:34;2408:18;;;2401:62;2480:18;;1414:68:0;2322:182:13;1414:68:0;1359:130::o;231:3222:10:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;231:3222:10;-1:-1:-1;;;;;231:3222:10;;;;;;;;;;;-1:-1:-1;231:3222:10;;;;;;;-1:-1:-1;231:3222:10;;;-1:-1:-1;231:3222:10;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;231:3222:10;;;-1:-1:-1;231:3222:10;;;;;;;;;;;;;;;14:802:13;78:5;131:3;124:4;116:6;112:17;108:27;98:2;;153:5;146;139:20;98:2;186:6;180:13;212:4;236:60;252:43;292:2;252:43;:::i;:::-;236:60;:::i;:::-;318:3;342:2;337:3;330:15;370:2;365:3;361:12;354:19;;405:2;397:6;393:15;457:3;452:2;446;443:1;439:10;431:6;427:23;423:32;420:41;417:2;;;478:5;471;464:20;417:2;504:5;518:269;532:2;529:1;526:9;518:269;;;596:3;590:10;644;637:5;633:22;626:5;623:33;613:2;;674:5;667;660:20;613:2;695:18;;733:12;;;;765;;;;550:1;543:9;518:269;;;-1:-1:-1;805:5:13;;88:728;-1:-1:-1;;;;;;;88:728:13:o;821:1322::-;949:6;957;1010:2;998:9;989:7;985:23;981:32;978:2;;;1031:6;1023;1016:22;978:2;1063:16;;-1:-1:-1;;;;;1128:14:13;;;1125:2;;;1160:6;1152;1145:22;1125:2;1203:6;1192:9;1188:22;1178:32;;1248:7;1241:4;1237:2;1233:13;1229:27;1219:2;;1275:6;1267;1260:22;1219:2;1309;1303:9;1331:4;1355:60;1371:43;1411:2;1371:43;:::i;1355:60::-;1437:3;1461:2;1456:3;1449:15;1489:2;1484:3;1480:12;1473:19;;1520:2;1516;1512:11;1568:7;1563:2;1557;1554:1;1550:10;1546:2;1542:19;1538:28;1535:41;1532:2;;;1594:6;1586;1579:22;1532:2;1621:6;1612:15;;1636:280;1650:2;1647:1;1644:9;1636:280;;;1708:10;;-1:-1:-1;;;;;1751:31:13;;1741:42;;1731:2;;1802:6;1794;1787:22;1731:2;1824:18;;1668:1;1661:9;;;;;1862:12;;;;1894;;1636:280;;;-1:-1:-1;1971:18:13;;;1965:25;1935:5;;-1:-1:-1;1965:25:13;;-1:-1:-1;;;2002:16:13;;;1999:2;;;2036:6;2028;2021:22;1999:2;;2064:73;2129:7;2118:8;2107:9;2103:24;2064:73;:::i;:::-;2054:83;;;968:1175;;;;;:::o;2857:275::-;2928:2;2922:9;2993:2;2974:13;;-1:-1:-1;;2970:27:13;2958:40;;-1:-1:-1;;;;;3013:34:13;;3049:22;;;3010:62;3007:2;;;3075:18;;:::i;:::-;3111:2;3104:22;2902:230;;-1:-1:-1;2902:230:13:o;3137:183::-;3197:4;-1:-1:-1;;;;;3219:30:13;;3216:2;;;3252:18;;:::i;:::-;-1:-1:-1;3297:1:13;3293:14;3309:4;3289:25;;3206:114::o;3325:228::-;3364:3;3392:10;3429:2;3426:1;3422:10;3459:2;3456:1;3452:10;3490:3;3486:2;3482:12;3477:3;3474:21;3471:2;;;3498:18;;:::i;:::-;3534:13;;3372:181;-1:-1:-1;;;;3372:181:13:o;3558:135::-;3597:3;-1:-1:-1;;3618:17:13;;3615:2;;;3638:18;;:::i;:::-;-1:-1:-1;3685:1:13;3674:13;;3605:88::o;3698:127::-;3759:10;3754:3;3750:20;3747:1;3740:31;3790:4;3787:1;3780:15;3814:4;3811:1;3804:15;3830:127;3891:10;3886:3;3882:20;3879:1;3872:31;3922:4;3919:1;3912:15;3946:4;3943:1;3936:15;3862:95;231:3222:10;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:7559:13","statements":[{"nodeType":"YulBlock","src":"6:3:13","statements":[]},{"body":{"nodeType":"YulBlock","src":"77:742:13","statements":[{"body":{"nodeType":"YulBlock","src":"126:24:13","statements":[{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"135:5:13"},{"name":"array","nodeType":"YulIdentifier","src":"142:5:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"128:6:13"},"nodeType":"YulFunctionCall","src":"128:20:13"},"nodeType":"YulExpressionStatement","src":"128:20:13"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"105:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"113:4:13","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"101:3:13"},"nodeType":"YulFunctionCall","src":"101:17:13"},{"name":"end","nodeType":"YulIdentifier","src":"120:3:13"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"97:3:13"},"nodeType":"YulFunctionCall","src":"97:27:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"90:6:13"},"nodeType":"YulFunctionCall","src":"90:35:13"},"nodeType":"YulIf","src":"87:2:13"},{"nodeType":"YulVariableDeclaration","src":"159:30:13","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"182:6:13"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"169:12:13"},"nodeType":"YulFunctionCall","src":"169:20:13"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"163:2:13","type":""}]},{"nodeType":"YulVariableDeclaration","src":"198:14:13","value":{"kind":"number","nodeType":"YulLiteral","src":"208:4:13","type":"","value":"0x20"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"202:2:13","type":""}]},{"nodeType":"YulVariableDeclaration","src":"221:71:13","value":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"288:2:13"}],"functionName":{"name":"array_allocation_size_array_address_dyn","nodeType":"YulIdentifier","src":"248:39:13"},"nodeType":"YulFunctionCall","src":"248:43:13"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"232:15:13"},"nodeType":"YulFunctionCall","src":"232:60:13"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"225:3:13","type":""}]},{"nodeType":"YulVariableDeclaration","src":"301:16:13","value":{"name":"dst","nodeType":"YulIdentifier","src":"314:3:13"},"variables":[{"name":"dst_1","nodeType":"YulTypedName","src":"305:5:13","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"333:3:13"},{"name":"_1","nodeType":"YulIdentifier","src":"338:2:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"326:6:13"},"nodeType":"YulFunctionCall","src":"326:15:13"},"nodeType":"YulExpressionStatement","src":"326:15:13"},{"nodeType":"YulAssignment","src":"350:19:13","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"361:3:13"},{"name":"_2","nodeType":"YulIdentifier","src":"366:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"357:3:13"},"nodeType":"YulFunctionCall","src":"357:12:13"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"350:3:13"}]},{"nodeType":"YulVariableDeclaration","src":"378:26:13","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"393:6:13"},{"name":"_2","nodeType":"YulIdentifier","src":"401:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"389:3:13"},"nodeType":"YulFunctionCall","src":"389:15:13"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"382:3:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"458:24:13","statements":[{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"467:5:13"},{"name":"array","nodeType":"YulIdentifier","src":"474:5:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"460:6:13"},"nodeType":"YulFunctionCall","src":"460:20:13"},"nodeType":"YulExpressionStatement","src":"460:20:13"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"427:6:13"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"439:1:13","type":"","value":"5"},{"name":"_1","nodeType":"YulIdentifier","src":"442:2:13"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"435:3:13"},"nodeType":"YulFunctionCall","src":"435:10:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"423:3:13"},"nodeType":"YulFunctionCall","src":"423:23:13"},{"name":"_2","nodeType":"YulIdentifier","src":"448:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"419:3:13"},"nodeType":"YulFunctionCall","src":"419:32:13"},{"name":"end","nodeType":"YulIdentifier","src":"453:3:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"416:2:13"},"nodeType":"YulFunctionCall","src":"416:41:13"},"nodeType":"YulIf","src":"413:2:13"},{"nodeType":"YulVariableDeclaration","src":"491:14:13","value":{"name":"array","nodeType":"YulIdentifier","src":"500:5:13"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"495:1:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"559:231:13","statements":[{"nodeType":"YulVariableDeclaration","src":"573:30:13","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"599:3:13"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"586:12:13"},"nodeType":"YulFunctionCall","src":"586:17:13"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"577:5:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"661:24:13","statements":[{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"670:5:13"},{"name":"array","nodeType":"YulIdentifier","src":"677:5:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"663:6:13"},"nodeType":"YulFunctionCall","src":"663:20:13"},"nodeType":"YulExpressionStatement","src":"663:20:13"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"629:5:13"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"640:5:13"},{"kind":"number","nodeType":"YulLiteral","src":"647:10:13","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"636:3:13"},"nodeType":"YulFunctionCall","src":"636:22:13"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"626:2:13"},"nodeType":"YulFunctionCall","src":"626:33:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"619:6:13"},"nodeType":"YulFunctionCall","src":"619:41:13"},"nodeType":"YulIf","src":"616:2:13"},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"705:3:13"},{"name":"value","nodeType":"YulIdentifier","src":"710:5:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"698:6:13"},"nodeType":"YulFunctionCall","src":"698:18:13"},"nodeType":"YulExpressionStatement","src":"698:18:13"},{"nodeType":"YulAssignment","src":"729:19:13","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"740:3:13"},{"name":"_2","nodeType":"YulIdentifier","src":"745:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"736:3:13"},"nodeType":"YulFunctionCall","src":"736:12:13"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"729:3:13"}]},{"nodeType":"YulAssignment","src":"761:19:13","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"772:3:13"},{"name":"_2","nodeType":"YulIdentifier","src":"777:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"768:3:13"},"nodeType":"YulFunctionCall","src":"768:12:13"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"761:3:13"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"525:1:13"},{"name":"_1","nodeType":"YulIdentifier","src":"528:2:13"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"522:2:13"},"nodeType":"YulFunctionCall","src":"522:9:13"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"532:18:13","statements":[{"nodeType":"YulAssignment","src":"534:14:13","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"543:1:13"},{"kind":"number","nodeType":"YulLiteral","src":"546:1:13","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"539:3:13"},"nodeType":"YulFunctionCall","src":"539:9:13"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"534:1:13"}]}]},"pre":{"nodeType":"YulBlock","src":"518:3:13","statements":[]},"src":"514:276:13"},{"nodeType":"YulAssignment","src":"799:14:13","value":{"name":"dst_1","nodeType":"YulIdentifier","src":"808:5:13"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"799:5:13"}]}]},"name":"abi_decode_array_uint32_dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"51:6:13","type":""},{"name":"end","nodeType":"YulTypedName","src":"59:3:13","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"67:5:13","type":""}],"src":"14:805:13"},{"body":{"nodeType":"YulBlock","src":"894:187:13","statements":[{"body":{"nodeType":"YulBlock","src":"940:26:13","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"949:6:13"},{"name":"value0","nodeType":"YulIdentifier","src":"957:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"942:6:13"},"nodeType":"YulFunctionCall","src":"942:22:13"},"nodeType":"YulExpressionStatement","src":"942:22:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"915:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"924:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"911:3:13"},"nodeType":"YulFunctionCall","src":"911:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"936:2:13","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"907:3:13"},"nodeType":"YulFunctionCall","src":"907:32:13"},"nodeType":"YulIf","src":"904:2:13"},{"nodeType":"YulVariableDeclaration","src":"975:36:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1001:9:13"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"988:12:13"},"nodeType":"YulFunctionCall","src":"988:23:13"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"979:5:13","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1045:5:13"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"1020:24:13"},"nodeType":"YulFunctionCall","src":"1020:31:13"},"nodeType":"YulExpressionStatement","src":"1020:31:13"},{"nodeType":"YulAssignment","src":"1060:15:13","value":{"name":"value","nodeType":"YulIdentifier","src":"1070:5:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1060:6:13"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"860:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"871:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"883:6:13","type":""}],"src":"824:257:13"},{"body":{"nodeType":"YulBlock","src":"1222:1143:13","statements":[{"body":{"nodeType":"YulBlock","src":"1268:26:13","statements":[{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"1277:6:13"},{"name":"value1","nodeType":"YulIdentifier","src":"1285:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1270:6:13"},"nodeType":"YulFunctionCall","src":"1270:22:13"},"nodeType":"YulExpressionStatement","src":"1270:22:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1243:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"1252:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1239:3:13"},"nodeType":"YulFunctionCall","src":"1239:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"1264:2:13","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1235:3:13"},"nodeType":"YulFunctionCall","src":"1235:32:13"},"nodeType":"YulIf","src":"1232:2:13"},{"nodeType":"YulVariableDeclaration","src":"1303:37:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1330:9:13"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1317:12:13"},"nodeType":"YulFunctionCall","src":"1317:23:13"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1307:6:13","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1349:28:13","value":{"kind":"number","nodeType":"YulLiteral","src":"1359:18:13","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1353:2:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"1404:26:13","statements":[{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"1413:6:13"},{"name":"value1","nodeType":"YulIdentifier","src":"1421:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1406:6:13"},"nodeType":"YulFunctionCall","src":"1406:22:13"},"nodeType":"YulExpressionStatement","src":"1406:22:13"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1392:6:13"},{"name":"_1","nodeType":"YulIdentifier","src":"1400:2:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1389:2:13"},"nodeType":"YulFunctionCall","src":"1389:14:13"},"nodeType":"YulIf","src":"1386:2:13"},{"nodeType":"YulVariableDeclaration","src":"1439:32:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1453:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"1464:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1449:3:13"},"nodeType":"YulFunctionCall","src":"1449:22:13"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"1443:2:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"1519:26:13","statements":[{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"1528:6:13"},{"name":"value1","nodeType":"YulIdentifier","src":"1536:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1521:6:13"},"nodeType":"YulFunctionCall","src":"1521:22:13"},"nodeType":"YulExpressionStatement","src":"1521:22:13"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1498:2:13"},{"kind":"number","nodeType":"YulLiteral","src":"1502:4:13","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1494:3:13"},"nodeType":"YulFunctionCall","src":"1494:13:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1509:7:13"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1490:3:13"},"nodeType":"YulFunctionCall","src":"1490:27:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1483:6:13"},"nodeType":"YulFunctionCall","src":"1483:35:13"},"nodeType":"YulIf","src":"1480:2:13"},{"nodeType":"YulVariableDeclaration","src":"1554:26:13","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1577:2:13"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1564:12:13"},"nodeType":"YulFunctionCall","src":"1564:16:13"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"1558:2:13","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1589:14:13","value":{"kind":"number","nodeType":"YulLiteral","src":"1599:4:13","type":"","value":"0x20"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"1593:2:13","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1612:71:13","value":{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"1679:2:13"}],"functionName":{"name":"array_allocation_size_array_address_dyn","nodeType":"YulIdentifier","src":"1639:39:13"},"nodeType":"YulFunctionCall","src":"1639:43:13"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"1623:15:13"},"nodeType":"YulFunctionCall","src":"1623:60:13"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"1616:3:13","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1692:16:13","value":{"name":"dst","nodeType":"YulIdentifier","src":"1705:3:13"},"variables":[{"name":"dst_1","nodeType":"YulTypedName","src":"1696:5:13","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1724:3:13"},{"name":"_3","nodeType":"YulIdentifier","src":"1729:2:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1717:6:13"},"nodeType":"YulFunctionCall","src":"1717:15:13"},"nodeType":"YulExpressionStatement","src":"1717:15:13"},{"nodeType":"YulAssignment","src":"1741:19:13","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1752:3:13"},{"name":"_4","nodeType":"YulIdentifier","src":"1757:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1748:3:13"},"nodeType":"YulFunctionCall","src":"1748:12:13"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"1741:3:13"}]},{"nodeType":"YulVariableDeclaration","src":"1769:22:13","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1784:2:13"},{"name":"_4","nodeType":"YulIdentifier","src":"1788:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1780:3:13"},"nodeType":"YulFunctionCall","src":"1780:11:13"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"1773:3:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"1845:26:13","statements":[{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"1854:6:13"},{"name":"value1","nodeType":"YulIdentifier","src":"1862:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1847:6:13"},"nodeType":"YulFunctionCall","src":"1847:22:13"},"nodeType":"YulExpressionStatement","src":"1847:22:13"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1814:2:13"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1822:1:13","type":"","value":"5"},{"name":"_3","nodeType":"YulIdentifier","src":"1825:2:13"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1818:3:13"},"nodeType":"YulFunctionCall","src":"1818:10:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1810:3:13"},"nodeType":"YulFunctionCall","src":"1810:19:13"},{"name":"_4","nodeType":"YulIdentifier","src":"1831:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1806:3:13"},"nodeType":"YulFunctionCall","src":"1806:28:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1836:7:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1803:2:13"},"nodeType":"YulFunctionCall","src":"1803:41:13"},"nodeType":"YulIf","src":"1800:2:13"},{"nodeType":"YulVariableDeclaration","src":"1880:15:13","value":{"name":"value1","nodeType":"YulIdentifier","src":"1889:6:13"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"1884:1:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"1949:193:13","statements":[{"nodeType":"YulVariableDeclaration","src":"1963:30:13","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"1989:3:13"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1976:12:13"},"nodeType":"YulFunctionCall","src":"1976:17:13"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1967:5:13","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2031:5:13"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2006:24:13"},"nodeType":"YulFunctionCall","src":"2006:31:13"},"nodeType":"YulExpressionStatement","src":"2006:31:13"},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"2057:3:13"},{"name":"value","nodeType":"YulIdentifier","src":"2062:5:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2050:6:13"},"nodeType":"YulFunctionCall","src":"2050:18:13"},"nodeType":"YulExpressionStatement","src":"2050:18:13"},{"nodeType":"YulAssignment","src":"2081:19:13","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"2092:3:13"},{"name":"_4","nodeType":"YulIdentifier","src":"2097:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2088:3:13"},"nodeType":"YulFunctionCall","src":"2088:12:13"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"2081:3:13"}]},{"nodeType":"YulAssignment","src":"2113:19:13","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2124:3:13"},{"name":"_4","nodeType":"YulIdentifier","src":"2129:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2120:3:13"},"nodeType":"YulFunctionCall","src":"2120:12:13"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"2113:3:13"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1915:1:13"},{"name":"_3","nodeType":"YulIdentifier","src":"1918:2:13"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1912:2:13"},"nodeType":"YulFunctionCall","src":"1912:9:13"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1922:18:13","statements":[{"nodeType":"YulAssignment","src":"1924:14:13","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1933:1:13"},{"kind":"number","nodeType":"YulLiteral","src":"1936:1:13","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1929:3:13"},"nodeType":"YulFunctionCall","src":"1929:9:13"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1924:1:13"}]}]},"pre":{"nodeType":"YulBlock","src":"1908:3:13","statements":[]},"src":"1904:238:13"},{"nodeType":"YulAssignment","src":"2151:15:13","value":{"name":"dst_1","nodeType":"YulIdentifier","src":"2161:5:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2151:6:13"}]},{"nodeType":"YulVariableDeclaration","src":"2175:48:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2208:9:13"},{"name":"_4","nodeType":"YulIdentifier","src":"2219:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2204:3:13"},"nodeType":"YulFunctionCall","src":"2204:18:13"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2191:12:13"},"nodeType":"YulFunctionCall","src":"2191:32:13"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"2179:8:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"2252:26:13","statements":[{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"2261:6:13"},{"name":"value1","nodeType":"YulIdentifier","src":"2269:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2254:6:13"},"nodeType":"YulFunctionCall","src":"2254:22:13"},"nodeType":"YulExpressionStatement","src":"2254:22:13"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"2238:8:13"},{"name":"_1","nodeType":"YulIdentifier","src":"2248:2:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2235:2:13"},"nodeType":"YulFunctionCall","src":"2235:16:13"},"nodeType":"YulIf","src":"2232:2:13"},{"nodeType":"YulAssignment","src":"2287:72:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2329:9:13"},{"name":"offset_1","nodeType":"YulIdentifier","src":"2340:8:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2325:3:13"},"nodeType":"YulFunctionCall","src":"2325:24:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2351:7:13"}],"functionName":{"name":"abi_decode_array_uint32_dyn","nodeType":"YulIdentifier","src":"2297:27:13"},"nodeType":"YulFunctionCall","src":"2297:62:13"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2287:6:13"}]}]},"name":"abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint32_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1180:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1191:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1203:6:13","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1211:6:13","type":""}],"src":"1086:1279:13"},{"body":{"nodeType":"YulBlock","src":"2464:272:13","statements":[{"body":{"nodeType":"YulBlock","src":"2510:26:13","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2519:6:13"},{"name":"value0","nodeType":"YulIdentifier","src":"2527:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2512:6:13"},"nodeType":"YulFunctionCall","src":"2512:22:13"},"nodeType":"YulExpressionStatement","src":"2512:22:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2485:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"2494:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2481:3:13"},"nodeType":"YulFunctionCall","src":"2481:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"2506:2:13","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2477:3:13"},"nodeType":"YulFunctionCall","src":"2477:32:13"},"nodeType":"YulIf","src":"2474:2:13"},{"nodeType":"YulVariableDeclaration","src":"2545:37:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2572:9:13"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2559:12:13"},"nodeType":"YulFunctionCall","src":"2559:23:13"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2549:6:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"2625:26:13","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2634:6:13"},{"name":"value0","nodeType":"YulIdentifier","src":"2642:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2627:6:13"},"nodeType":"YulFunctionCall","src":"2627:22:13"},"nodeType":"YulExpressionStatement","src":"2627:22:13"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2597:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"2605:18:13","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2594:2:13"},"nodeType":"YulFunctionCall","src":"2594:30:13"},"nodeType":"YulIf","src":"2591:2:13"},{"nodeType":"YulAssignment","src":"2660:70:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2702:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"2713:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2698:3:13"},"nodeType":"YulFunctionCall","src":"2698:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2722:7:13"}],"functionName":{"name":"abi_decode_array_uint32_dyn","nodeType":"YulIdentifier","src":"2670:27:13"},"nodeType":"YulFunctionCall","src":"2670:60:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2660:6:13"}]}]},"name":"abi_decode_tuple_t_array$_t_uint32_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2430:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2441:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2453:6:13","type":""}],"src":"2370:366:13"},{"body":{"nodeType":"YulBlock","src":"2819:219:13","statements":[{"body":{"nodeType":"YulBlock","src":"2865:26:13","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2874:6:13"},{"name":"value0","nodeType":"YulIdentifier","src":"2882:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2867:6:13"},"nodeType":"YulFunctionCall","src":"2867:22:13"},"nodeType":"YulExpressionStatement","src":"2867:22:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2840:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"2849:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2836:3:13"},"nodeType":"YulFunctionCall","src":"2836:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"2861:2:13","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2832:3:13"},"nodeType":"YulFunctionCall","src":"2832:32:13"},"nodeType":"YulIf","src":"2829:2:13"},{"nodeType":"YulVariableDeclaration","src":"2900:29:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2919:9:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2913:5:13"},"nodeType":"YulFunctionCall","src":"2913:16:13"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2904:5:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"2982:26:13","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2991:6:13"},{"name":"value0","nodeType":"YulIdentifier","src":"2999:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2984:6:13"},"nodeType":"YulFunctionCall","src":"2984:22:13"},"nodeType":"YulExpressionStatement","src":"2984:22:13"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2951:5:13"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2972:5:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2965:6:13"},"nodeType":"YulFunctionCall","src":"2965:13:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2958:6:13"},"nodeType":"YulFunctionCall","src":"2958:21:13"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2948:2:13"},"nodeType":"YulFunctionCall","src":"2948:32:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2941:6:13"},"nodeType":"YulFunctionCall","src":"2941:40:13"},"nodeType":"YulIf","src":"2938:2:13"},{"nodeType":"YulAssignment","src":"3017:15:13","value":{"name":"value","nodeType":"YulIdentifier","src":"3027:5:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3017:6:13"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2785:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2796:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2808:6:13","type":""}],"src":"2741:297:13"},{"body":{"nodeType":"YulBlock","src":"3127:187:13","statements":[{"body":{"nodeType":"YulBlock","src":"3173:26:13","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3182:6:13"},{"name":"value0","nodeType":"YulIdentifier","src":"3190:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3175:6:13"},"nodeType":"YulFunctionCall","src":"3175:22:13"},"nodeType":"YulExpressionStatement","src":"3175:22:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3148:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"3157:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3144:3:13"},"nodeType":"YulFunctionCall","src":"3144:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"3169:2:13","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3140:3:13"},"nodeType":"YulFunctionCall","src":"3140:32:13"},"nodeType":"YulIf","src":"3137:2:13"},{"nodeType":"YulVariableDeclaration","src":"3208:36:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3234:9:13"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3221:12:13"},"nodeType":"YulFunctionCall","src":"3221:23:13"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3212:5:13","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3278:5:13"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"3253:24:13"},"nodeType":"YulFunctionCall","src":"3253:31:13"},"nodeType":"YulExpressionStatement","src":"3253:31:13"},{"nodeType":"YulAssignment","src":"3293:15:13","value":{"name":"value","nodeType":"YulIdentifier","src":"3303:5:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3293:6:13"}]}]},"name":"abi_decode_tuple_t_contract$_IERC20_$190","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3093:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3104:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3116:6:13","type":""}],"src":"3043:271:13"},{"body":{"nodeType":"YulBlock","src":"3389:120:13","statements":[{"body":{"nodeType":"YulBlock","src":"3435:26:13","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3444:6:13"},{"name":"value0","nodeType":"YulIdentifier","src":"3452:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3437:6:13"},"nodeType":"YulFunctionCall","src":"3437:22:13"},"nodeType":"YulExpressionStatement","src":"3437:22:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3410:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"3419:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3406:3:13"},"nodeType":"YulFunctionCall","src":"3406:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"3431:2:13","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3402:3:13"},"nodeType":"YulFunctionCall","src":"3402:32:13"},"nodeType":"YulIf","src":"3399:2:13"},{"nodeType":"YulAssignment","src":"3470:33:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3493:9:13"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3480:12:13"},"nodeType":"YulFunctionCall","src":"3480:23:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3470:6:13"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3355:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3366:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3378:6:13","type":""}],"src":"3319:190:13"},{"body":{"nodeType":"YulBlock","src":"3595:113:13","statements":[{"body":{"nodeType":"YulBlock","src":"3641:26:13","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3650:6:13"},{"name":"value0","nodeType":"YulIdentifier","src":"3658:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3643:6:13"},"nodeType":"YulFunctionCall","src":"3643:22:13"},"nodeType":"YulExpressionStatement","src":"3643:22:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3616:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"3625:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3612:3:13"},"nodeType":"YulFunctionCall","src":"3612:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"3637:2:13","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3608:3:13"},"nodeType":"YulFunctionCall","src":"3608:32:13"},"nodeType":"YulIf","src":"3605:2:13"},{"nodeType":"YulAssignment","src":"3676:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3692:9:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3686:5:13"},"nodeType":"YulFunctionCall","src":"3686:16:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3676:6:13"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3561:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3572:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3584:6:13","type":""}],"src":"3514:194:13"},{"body":{"nodeType":"YulBlock","src":"3904:14:13","statements":[{"nodeType":"YulAssignment","src":"3906:10:13","value":{"name":"pos","nodeType":"YulIdentifier","src":"3913:3:13"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3906:3:13"}]}]},"name":"abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"3888:3:13","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"3896:3:13","type":""}],"src":"3713:205:13"},{"body":{"nodeType":"YulBlock","src":"4024:102:13","statements":[{"nodeType":"YulAssignment","src":"4034:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4046:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"4057:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4042:3:13"},"nodeType":"YulFunctionCall","src":"4042:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4034:4:13"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4076:9:13"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4091:6:13"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4107:3:13","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"4112:1:13","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"4103:3:13"},"nodeType":"YulFunctionCall","src":"4103:11:13"},{"kind":"number","nodeType":"YulLiteral","src":"4116:1:13","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4099:3:13"},"nodeType":"YulFunctionCall","src":"4099:19:13"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4087:3:13"},"nodeType":"YulFunctionCall","src":"4087:32:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4069:6:13"},"nodeType":"YulFunctionCall","src":"4069:51:13"},"nodeType":"YulExpressionStatement","src":"4069:51:13"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3993:9:13","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4004:6:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4015:4:13","type":""}],"src":"3923:203:13"},{"body":{"nodeType":"YulBlock","src":"4260:145:13","statements":[{"nodeType":"YulAssignment","src":"4270:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4282:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"4293:2:13","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4278:3:13"},"nodeType":"YulFunctionCall","src":"4278:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4270:4:13"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4312:9:13"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4327:6:13"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4343:3:13","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"4348:1:13","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"4339:3:13"},"nodeType":"YulFunctionCall","src":"4339:11:13"},{"kind":"number","nodeType":"YulLiteral","src":"4352:1:13","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4335:3:13"},"nodeType":"YulFunctionCall","src":"4335:19:13"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4323:3:13"},"nodeType":"YulFunctionCall","src":"4323:32:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4305:6:13"},"nodeType":"YulFunctionCall","src":"4305:51:13"},"nodeType":"YulExpressionStatement","src":"4305:51:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4376:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"4387:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4372:3:13"},"nodeType":"YulFunctionCall","src":"4372:18:13"},{"name":"value1","nodeType":"YulIdentifier","src":"4392:6:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4365:6:13"},"nodeType":"YulFunctionCall","src":"4365:34:13"},"nodeType":"YulExpressionStatement","src":"4365:34:13"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4221:9:13","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4232:6:13","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4240:6:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4251:4:13","type":""}],"src":"4131:274:13"},{"body":{"nodeType":"YulBlock","src":"4584:228:13","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4601:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"4612:2:13","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4594:6:13"},"nodeType":"YulFunctionCall","src":"4594:21:13"},"nodeType":"YulExpressionStatement","src":"4594:21:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4635:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"4646:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4631:3:13"},"nodeType":"YulFunctionCall","src":"4631:18:13"},{"kind":"number","nodeType":"YulLiteral","src":"4651:2:13","type":"","value":"38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4624:6:13"},"nodeType":"YulFunctionCall","src":"4624:30:13"},"nodeType":"YulExpressionStatement","src":"4624:30:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4674:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"4685:2:13","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4670:3:13"},"nodeType":"YulFunctionCall","src":"4670:18:13"},{"kind":"string","nodeType":"YulLiteral","src":"4690:34:13","type":"","value":"Ownable: new owner is the zero a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4663:6:13"},"nodeType":"YulFunctionCall","src":"4663:62:13"},"nodeType":"YulExpressionStatement","src":"4663:62:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4745:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"4756:2:13","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4741:3:13"},"nodeType":"YulFunctionCall","src":"4741:18:13"},{"kind":"string","nodeType":"YulLiteral","src":"4761:8:13","type":"","value":"ddress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4734:6:13"},"nodeType":"YulFunctionCall","src":"4734:36:13"},"nodeType":"YulExpressionStatement","src":"4734:36:13"},{"nodeType":"YulAssignment","src":"4779:27:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4791:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"4802:3:13","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4787:3:13"},"nodeType":"YulFunctionCall","src":"4787:19:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4779:4:13"}]}]},"name":"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4561:9:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4575:4:13","type":""}],"src":"4410:402:13"},{"body":{"nodeType":"YulBlock","src":"4991:237:13","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5008:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"5019:2:13","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5001:6:13"},"nodeType":"YulFunctionCall","src":"5001:21:13"},"nodeType":"YulExpressionStatement","src":"5001:21:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5042:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"5053:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5038:3:13"},"nodeType":"YulFunctionCall","src":"5038:18:13"},{"kind":"number","nodeType":"YulLiteral","src":"5058:2:13","type":"","value":"47"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5031:6:13"},"nodeType":"YulFunctionCall","src":"5031:30:13"},"nodeType":"YulExpressionStatement","src":"5031:30:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5081:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"5092:2:13","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5077:3:13"},"nodeType":"YulFunctionCall","src":"5077:18:13"},{"kind":"string","nodeType":"YulLiteral","src":"5097:34:13","type":"","value":"unable to send eth, recipient ma"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5070:6:13"},"nodeType":"YulFunctionCall","src":"5070:62:13"},"nodeType":"YulExpressionStatement","src":"5070:62:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5152:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"5163:2:13","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5148:3:13"},"nodeType":"YulFunctionCall","src":"5148:18:13"},{"kind":"string","nodeType":"YulLiteral","src":"5168:17:13","type":"","value":"y have reverted"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5141:6:13"},"nodeType":"YulFunctionCall","src":"5141:45:13"},"nodeType":"YulExpressionStatement","src":"5141:45:13"},{"nodeType":"YulAssignment","src":"5195:27:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5207:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"5218:3:13","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5203:3:13"},"nodeType":"YulFunctionCall","src":"5203:19:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5195:4:13"}]}]},"name":"abi_encode_tuple_t_stringliteral_6ef19cfd53d6f721536543241689f044ea77579f20884e49f0e56ef7d564423b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4968:9:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4982:4:13","type":""}],"src":"4817:411:13"},{"body":{"nodeType":"YulBlock","src":"5407:182:13","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5424:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"5435:2:13","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5417:6:13"},"nodeType":"YulFunctionCall","src":"5417:21:13"},"nodeType":"YulExpressionStatement","src":"5417:21:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5458:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"5469:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5454:3:13"},"nodeType":"YulFunctionCall","src":"5454:18:13"},{"kind":"number","nodeType":"YulLiteral","src":"5474:2:13","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5447:6:13"},"nodeType":"YulFunctionCall","src":"5447:30:13"},"nodeType":"YulExpressionStatement","src":"5447:30:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5497:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"5508:2:13","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5493:3:13"},"nodeType":"YulFunctionCall","src":"5493:18:13"},{"kind":"string","nodeType":"YulLiteral","src":"5513:34:13","type":"","value":"Ownable: caller is not the owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5486:6:13"},"nodeType":"YulFunctionCall","src":"5486:62:13"},"nodeType":"YulExpressionStatement","src":"5486:62:13"},{"nodeType":"YulAssignment","src":"5557:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5569:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"5580:2:13","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5565:3:13"},"nodeType":"YulFunctionCall","src":"5565:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5557:4:13"}]}]},"name":"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5384:9:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5398:4:13","type":""}],"src":"5233:356:13"},{"body":{"nodeType":"YulBlock","src":"5768:169:13","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5785:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"5796:2:13","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5778:6:13"},"nodeType":"YulFunctionCall","src":"5778:21:13"},"nodeType":"YulExpressionStatement","src":"5778:21:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5819:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"5830:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5815:3:13"},"nodeType":"YulFunctionCall","src":"5815:18:13"},{"kind":"number","nodeType":"YulLiteral","src":"5835:2:13","type":"","value":"19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5808:6:13"},"nodeType":"YulFunctionCall","src":"5808:30:13"},"nodeType":"YulExpressionStatement","src":"5808:30:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5858:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"5869:2:13","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5854:3:13"},"nodeType":"YulFunctionCall","src":"5854:18:13"},{"kind":"string","nodeType":"YulLiteral","src":"5874:21:13","type":"","value":"invalid percentages"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5847:6:13"},"nodeType":"YulFunctionCall","src":"5847:49:13"},"nodeType":"YulExpressionStatement","src":"5847:49:13"},{"nodeType":"YulAssignment","src":"5905:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5917:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"5928:2:13","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5913:3:13"},"nodeType":"YulFunctionCall","src":"5913:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5905:4:13"}]}]},"name":"abi_encode_tuple_t_stringliteral_da5de935a79473774bc1a56577c1e5d9c5477e764be29dbf7e048ba86c791791__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5745:9:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5759:4:13","type":""}],"src":"5594:343:13"},{"body":{"nodeType":"YulBlock","src":"6043:76:13","statements":[{"nodeType":"YulAssignment","src":"6053:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6065:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"6076:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6061:3:13"},"nodeType":"YulFunctionCall","src":"6061:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6053:4:13"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6095:9:13"},{"name":"value0","nodeType":"YulIdentifier","src":"6106:6:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6088:6:13"},"nodeType":"YulFunctionCall","src":"6088:25:13"},"nodeType":"YulExpressionStatement","src":"6088:25:13"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6012:9:13","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6023:6:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6034:4:13","type":""}],"src":"5942:177:13"},{"body":{"nodeType":"YulBlock","src":"6223:93:13","statements":[{"nodeType":"YulAssignment","src":"6233:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6245:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"6256:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6241:3:13"},"nodeType":"YulFunctionCall","src":"6241:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6233:4:13"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6275:9:13"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6290:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"6298:10:13","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6286:3:13"},"nodeType":"YulFunctionCall","src":"6286:23:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6268:6:13"},"nodeType":"YulFunctionCall","src":"6268:42:13"},"nodeType":"YulExpressionStatement","src":"6268:42:13"}]},"name":"abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6192:9:13","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6203:6:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6214:4:13","type":""}],"src":"6124:192:13"},{"body":{"nodeType":"YulBlock","src":"6366:230:13","statements":[{"nodeType":"YulAssignment","src":"6376:19:13","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6392:2:13","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6386:5:13"},"nodeType":"YulFunctionCall","src":"6386:9:13"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"6376:6:13"}]},{"nodeType":"YulVariableDeclaration","src":"6404:58:13","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"6426:6:13"},{"arguments":[{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"6442:4:13"},{"kind":"number","nodeType":"YulLiteral","src":"6448:2:13","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6438:3:13"},"nodeType":"YulFunctionCall","src":"6438:13:13"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6457:2:13","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"6453:3:13"},"nodeType":"YulFunctionCall","src":"6453:7:13"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6434:3:13"},"nodeType":"YulFunctionCall","src":"6434:27:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6422:3:13"},"nodeType":"YulFunctionCall","src":"6422:40:13"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"6408:10:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"6537:22:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"6539:16:13"},"nodeType":"YulFunctionCall","src":"6539:18:13"},"nodeType":"YulExpressionStatement","src":"6539:18:13"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"6480:10:13"},{"kind":"number","nodeType":"YulLiteral","src":"6492:18:13","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6477:2:13"},"nodeType":"YulFunctionCall","src":"6477:34:13"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"6516:10:13"},{"name":"memPtr","nodeType":"YulIdentifier","src":"6528:6:13"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6513:2:13"},"nodeType":"YulFunctionCall","src":"6513:22:13"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"6474:2:13"},"nodeType":"YulFunctionCall","src":"6474:62:13"},"nodeType":"YulIf","src":"6471:2:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6575:2:13","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"6579:10:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6568:6:13"},"nodeType":"YulFunctionCall","src":"6568:22:13"},"nodeType":"YulExpressionStatement","src":"6568:22:13"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"6346:4:13","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"6355:6:13","type":""}],"src":"6321:275:13"},{"body":{"nodeType":"YulBlock","src":"6670:114:13","statements":[{"body":{"nodeType":"YulBlock","src":"6714:22:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"6716:16:13"},"nodeType":"YulFunctionCall","src":"6716:18:13"},"nodeType":"YulExpressionStatement","src":"6716:18:13"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6686:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"6694:18:13","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6683:2:13"},"nodeType":"YulFunctionCall","src":"6683:30:13"},"nodeType":"YulIf","src":"6680:2:13"},{"nodeType":"YulAssignment","src":"6745:33:13","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6761:1:13","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"6764:6:13"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6757:3:13"},"nodeType":"YulFunctionCall","src":"6757:14:13"},{"kind":"number","nodeType":"YulLiteral","src":"6773:4:13","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6753:3:13"},"nodeType":"YulFunctionCall","src":"6753:25:13"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"6745:4:13"}]}]},"name":"array_allocation_size_array_address_dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"6650:6:13","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"6661:4:13","type":""}],"src":"6601:183:13"},{"body":{"nodeType":"YulBlock","src":"6836:181:13","statements":[{"nodeType":"YulVariableDeclaration","src":"6846:20:13","value":{"kind":"number","nodeType":"YulLiteral","src":"6856:10:13","type":"","value":"0xffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"6850:2:13","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6875:21:13","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"6890:1:13"},{"name":"_1","nodeType":"YulIdentifier","src":"6893:2:13"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6886:3:13"},"nodeType":"YulFunctionCall","src":"6886:10:13"},"variables":[{"name":"x_1","nodeType":"YulTypedName","src":"6879:3:13","type":""}]},{"nodeType":"YulVariableDeclaration","src":"6905:21:13","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"6920:1:13"},{"name":"_1","nodeType":"YulIdentifier","src":"6923:2:13"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6916:3:13"},"nodeType":"YulFunctionCall","src":"6916:10:13"},"variables":[{"name":"y_1","nodeType":"YulTypedName","src":"6909:3:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"6960:22:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"6962:16:13"},"nodeType":"YulFunctionCall","src":"6962:18:13"},"nodeType":"YulExpressionStatement","src":"6962:18:13"}]},"condition":{"arguments":[{"name":"x_1","nodeType":"YulIdentifier","src":"6941:3:13"},{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"6950:2:13"},{"name":"y_1","nodeType":"YulIdentifier","src":"6954:3:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6946:3:13"},"nodeType":"YulFunctionCall","src":"6946:12:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6938:2:13"},"nodeType":"YulFunctionCall","src":"6938:21:13"},"nodeType":"YulIf","src":"6935:2:13"},{"nodeType":"YulAssignment","src":"6991:20:13","value":{"arguments":[{"name":"x_1","nodeType":"YulIdentifier","src":"7002:3:13"},{"name":"y_1","nodeType":"YulIdentifier","src":"7007:3:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6998:3:13"},"nodeType":"YulFunctionCall","src":"6998:13:13"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"6991:3:13"}]}]},"name":"checked_add_t_uint32","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"6819:1:13","type":""},{"name":"y","nodeType":"YulTypedName","src":"6822:1:13","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"6828:3:13","type":""}],"src":"6789:228:13"},{"body":{"nodeType":"YulBlock","src":"7069:88:13","statements":[{"body":{"nodeType":"YulBlock","src":"7100:22:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"7102:16:13"},"nodeType":"YulFunctionCall","src":"7102:18:13"},"nodeType":"YulExpressionStatement","src":"7102:18:13"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7085:5:13"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7096:1:13","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"7092:3:13"},"nodeType":"YulFunctionCall","src":"7092:6:13"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7082:2:13"},"nodeType":"YulFunctionCall","src":"7082:17:13"},"nodeType":"YulIf","src":"7079:2:13"},{"nodeType":"YulAssignment","src":"7131:20:13","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7142:5:13"},{"kind":"number","nodeType":"YulLiteral","src":"7149:1:13","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7138:3:13"},"nodeType":"YulFunctionCall","src":"7138:13:13"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"7131:3:13"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7051:5:13","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"7061:3:13","type":""}],"src":"7022:135:13"},{"body":{"nodeType":"YulBlock","src":"7194:95:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7211:1:13","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7218:3:13","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"7223:10:13","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7214:3:13"},"nodeType":"YulFunctionCall","src":"7214:20:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7204:6:13"},"nodeType":"YulFunctionCall","src":"7204:31:13"},"nodeType":"YulExpressionStatement","src":"7204:31:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7251:1:13","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7254:4:13","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7244:6:13"},"nodeType":"YulFunctionCall","src":"7244:15:13"},"nodeType":"YulExpressionStatement","src":"7244:15:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7275:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7278:4:13","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7268:6:13"},"nodeType":"YulFunctionCall","src":"7268:15:13"},"nodeType":"YulExpressionStatement","src":"7268:15:13"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"7162:127:13"},{"body":{"nodeType":"YulBlock","src":"7326:95:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7343:1:13","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7350:3:13","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"7355:10:13","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7346:3:13"},"nodeType":"YulFunctionCall","src":"7346:20:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7336:6:13"},"nodeType":"YulFunctionCall","src":"7336:31:13"},"nodeType":"YulExpressionStatement","src":"7336:31:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7383:1:13","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7386:4:13","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7376:6:13"},"nodeType":"YulFunctionCall","src":"7376:15:13"},"nodeType":"YulExpressionStatement","src":"7376:15:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7407:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7410:4:13","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7400:6:13"},"nodeType":"YulFunctionCall","src":"7400:15:13"},"nodeType":"YulExpressionStatement","src":"7400:15:13"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"7294:127:13"},{"body":{"nodeType":"YulBlock","src":"7471:86:13","statements":[{"body":{"nodeType":"YulBlock","src":"7535:16:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7544:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7547:1:13","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7537:6:13"},"nodeType":"YulFunctionCall","src":"7537:12:13"},"nodeType":"YulExpressionStatement","src":"7537:12:13"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7494:5:13"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7505:5:13"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7520:3:13","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"7525:1:13","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"7516:3:13"},"nodeType":"YulFunctionCall","src":"7516:11:13"},{"kind":"number","nodeType":"YulLiteral","src":"7529:1:13","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7512:3:13"},"nodeType":"YulFunctionCall","src":"7512:19:13"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7501:3:13"},"nodeType":"YulFunctionCall","src":"7501:31:13"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"7491:2:13"},"nodeType":"YulFunctionCall","src":"7491:42:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7484:6:13"},"nodeType":"YulFunctionCall","src":"7484:50:13"},"nodeType":"YulIf","src":"7481:2:13"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7460:5:13","type":""}],"src":"7426:131:13"}]},"contents":"{\n    { }\n    function abi_decode_array_uint32_dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let _1 := calldataload(offset)\n        let _2 := 0x20\n        let dst := allocate_memory(array_allocation_size_array_address_dyn(_1))\n        let dst_1 := dst\n        mstore(dst, _1)\n        dst := add(dst, _2)\n        let src := add(offset, _2)\n        if gt(add(add(offset, shl(5, _1)), _2), end) { revert(array, array) }\n        let i := array\n        for { } lt(i, _1) { i := add(i, 1) }\n        {\n            let value := calldataload(src)\n            if iszero(eq(value, and(value, 0xffffffff))) { revert(array, array) }\n            mstore(dst, value)\n            dst := add(dst, _2)\n            src := add(src, _2)\n        }\n        array := dst_1\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint32_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value1, value1) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value1, value1) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(value1, value1) }\n        let _3 := calldataload(_2)\n        let _4 := 0x20\n        let dst := allocate_memory(array_allocation_size_array_address_dyn(_3))\n        let dst_1 := dst\n        mstore(dst, _3)\n        dst := add(dst, _4)\n        let src := add(_2, _4)\n        if gt(add(add(_2, shl(5, _3)), _4), dataEnd) { revert(value1, value1) }\n        let i := value1\n        for { } lt(i, _3) { i := add(i, 1) }\n        {\n            let value := calldataload(src)\n            validator_revert_address(value)\n            mstore(dst, value)\n            dst := add(dst, _4)\n            src := add(src, _4)\n        }\n        value0 := dst_1\n        let offset_1 := calldataload(add(headStart, _4))\n        if gt(offset_1, _1) { revert(value1, value1) }\n        value1 := abi_decode_array_uint32_dyn(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_array$_t_uint32_$dyn_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(value0, value0) }\n        value0 := abi_decode_array_uint32_dyn(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := mload(headStart)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(value0, value0) }\n        value0 := value\n    }\n    function abi_decode_tuple_t_contract$_IERC20_$190(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    { end := pos }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_6ef19cfd53d6f721536543241689f044ea77579f20884e49f0e56ef7d564423b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 47)\n        mstore(add(headStart, 64), \"unable to send eth, recipient ma\")\n        mstore(add(headStart, 96), \"y have reverted\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_da5de935a79473774bc1a56577c1e5d9c5477e764be29dbf7e048ba86c791791__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 19)\n        mstore(add(headStart, 64), \"invalid percentages\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff))\n    }\n    function allocate_memory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_array_address_dyn(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(shl(5, length), 0x20)\n    }\n    function checked_add_t_uint32(x, y) -> sum\n    {\n        let _1 := 0xffffffff\n        let x_1 := and(x, _1)\n        let y_1 := and(y, _1)\n        if gt(x_1, sub(_1, y_1)) { panic_error_0x11() }\n        sum := add(x_1, y_1)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0)) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n}","id":13,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052600436106100aa5760003560e01c8063bce5826911610064578063bce58269146101c1578063c45ff544146101e1578063e086e5ec14610201578063f2a40db814610216578063f2fde38b14610236578063f4f3b2001461025657600080fd5b80623f619d146100ef5780633f26479e1461012957806344def48f1461014e578063715018a6146101705780638da5cb5b14610185578063b8b9b549146101ac57600080fd5b366100ea577fbfe611b001dfcd411432f7bf0d79b82b4b2ee81511edac123a3403c357fb972a33346040516100e0929190610c6b565b60405180910390a1005b600080fd5b3480156100fb57600080fd5b5061010f61010a366004610c27565b610276565b60405163ffffffff90911681526020015b60405180910390f35b34801561013557600080fd5b50610140620f424081565b604051908152602001610120565b34801561015a57600080fd5b5061016e610169366004610b09565b6102b0565b005b34801561017c57600080fd5b5061016e6102ed565b34801561019157600080fd5b506000546001600160a01b03165b6040516101209190610c57565b3480156101b857600080fd5b5061016e610301565b3480156101cd57600080fd5b5061016e6101dc366004610ae6565b61046c565b3480156101ed57600080fd5b5061016e6101fc366004610bcc565b6105f8565b34801561020d57600080fd5b5061016e6106a3565b34801561022257600080fd5b5061019f610231366004610c27565b6106e8565b34801561024257600080fd5b5061016e610251366004610ae6565b610712565b34801561026257600080fd5b5061016e610271366004610ae6565b610788565b6002818154811061028657600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b6102b861089c565b81516102cb906001906020850190610946565b5080516102df9060029060208401906109ab565b506102e9816105f8565b5050565b6102f561089c565b6102ff60006108f6565b565b600154479060005b81811015610467576000610368846002848154811061033857634e487b7160e01b600052603260045260246000fd5b60009182526020909120600882040154620f424060079092166004026101000a900463ffffffff16919091020490565b905060006001838154811061038d57634e487b7160e01b600052603260045260246000fd5b60009182526020822001546040516001600160a01b039091169184919081818185875af1925050503d80600081146103e1576040519150601f19603f3d011682016040523d82523d6000602084013e6103e6565b606091505b50509050806104545760405162461bcd60e51b815260206004820152602f60248201527f756e61626c6520746f2073656e64206574682c20726563697069656e74206d6160448201526e1e481a185d99481c995d995c9d1959608a1b60648201526084015b60405180910390fd5b50508061046090610d01565b9050610309565b505050565b6040516370a0823160e01b81526000906001600160a01b038316906370a082319061049b903090600401610c57565b60206040518083038186803b1580156104b357600080fd5b505afa1580156104c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104eb9190610c3f565b60015490915060005b818110156105f2576000610523846002848154811061033857634e487b7160e01b600052603260045260246000fd5b9050846001600160a01b031663a9059cbb6001848154811061055557634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546040516001600160e01b031960e084901b16815261058d916001600160a01b0316908590600401610c6b565b602060405180830381600087803b1580156105a757600080fd5b505af11580156105bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105df9190610c07565b5050806105eb90610d01565b90506104f4565b50505050565b61060061089c565b6000805b82518110156106545782818151811061062d57634e487b7160e01b600052603260045260246000fd5b6020026020010151826106409190610cd9565b91508061064c81610d01565b915050610604565b50620f42408163ffffffff16146102e95760405162461bcd60e51b8152602060048201526013602482015272696e76616c69642070657263656e746167657360681b604482015260640161044b565b6106ab61089c565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f193505050501580156106e5573d6000803e3d6000fd5b50565b600181815481106106f857600080fd5b6000918252602090912001546001600160a01b0316905081565b61071a61089c565b6001600160a01b03811661077f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161044b565b6106e5816108f6565b61079061089c565b806001600160a01b031663a9059cbb6107b16000546001600160a01b031690565b6040516370a0823160e01b81526001600160a01b038516906370a08231906107dd903090600401610c57565b60206040518083038186803b1580156107f557600080fd5b505afa158015610809573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082d9190610c3f565b6040518363ffffffff1660e01b815260040161084a929190610c6b565b602060405180830381600087803b15801561086457600080fd5b505af1158015610878573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e99190610c07565b6000546001600160a01b031633146102ff5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161044b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b82805482825590600052602060002090810192821561099b579160200282015b8281111561099b57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610966565b506109a7929150610a51565b5090565b8280548282559060005260206000209060070160089004810192821561099b5791602002820160005b83821115610a1857835183826101000a81548163ffffffff021916908363ffffffff16021790555092602001926004016020816003010492830192600103026109d4565b8015610a485782816101000a81549063ffffffff0219169055600401602081600301049283019260010302610a18565b50506109a79291505b5b808211156109a75760008155600101610a52565b600082601f830112610a76578081fd5b81356020610a8b610a8683610cb5565b610c84565b80838252828201915082860187848660051b8901011115610aaa578586fd5b855b85811015610ad957813563ffffffff81168114610ac7578788fd5b84529284019290840190600101610aac565b5090979650505050505050565b600060208284031215610af7578081fd5b8135610b0281610d48565b9392505050565b60008060408385031215610b1b578081fd5b823567ffffffffffffffff80821115610b32578283fd5b818501915085601f830112610b45578283fd5b81356020610b55610a8683610cb5565b8083825282820191508286018a848660051b8901011115610b74578788fd5b8796505b84871015610b9f578035610b8b81610d48565b835260019690960195918301918301610b78565b5096505086013592505080821115610bb5578283fd5b50610bc285828601610a66565b9150509250929050565b600060208284031215610bdd578081fd5b813567ffffffffffffffff811115610bf3578182fd5b610bff84828501610a66565b949350505050565b600060208284031215610c18578081fd5b81518015158114610b02578182fd5b600060208284031215610c38578081fd5b5035919050565b600060208284031215610c50578081fd5b5051919050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b604051601f8201601f1916810167ffffffffffffffff81118282101715610cad57610cad610d32565b604052919050565b600067ffffffffffffffff821115610ccf57610ccf610d32565b5060051b60200190565b600063ffffffff808316818516808303821115610cf857610cf8610d1c565b01949350505050565b6000600019821415610d1557610d15610d1c565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146106e557600080fdfea2646970667358221220b1bb67814c8bbf9451913e2dfd61ab871692ba1323c71933dc176a4dcbdfb3af64736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xAA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xBCE58269 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xBCE58269 EQ PUSH2 0x1C1 JUMPI DUP1 PUSH4 0xC45FF544 EQ PUSH2 0x1E1 JUMPI DUP1 PUSH4 0xE086E5EC EQ PUSH2 0x201 JUMPI DUP1 PUSH4 0xF2A40DB8 EQ PUSH2 0x216 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x236 JUMPI DUP1 PUSH4 0xF4F3B200 EQ PUSH2 0x256 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH3 0x3F619D EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x3F26479E EQ PUSH2 0x129 JUMPI DUP1 PUSH4 0x44DEF48F EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x185 JUMPI DUP1 PUSH4 0xB8B9B549 EQ PUSH2 0x1AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLDATASIZE PUSH2 0xEA JUMPI PUSH32 0xBFE611B001DFCD411432F7BF0D79B82B4B2EE81511EDAC123A3403C357FB972A CALLER CALLVALUE PUSH1 0x40 MLOAD PUSH2 0xE0 SWAP3 SWAP2 SWAP1 PUSH2 0xC6B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10F PUSH2 0x10A CALLDATASIZE PUSH1 0x4 PUSH2 0xC27 JUMP JUMPDEST PUSH2 0x276 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x135 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x140 PUSH3 0xF4240 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x120 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x15A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x169 CALLDATASIZE PUSH1 0x4 PUSH2 0xB09 JUMP JUMPDEST PUSH2 0x2B0 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x2ED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x191 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x120 SWAP2 SWAP1 PUSH2 0xC57 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x301 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x1DC CALLDATASIZE PUSH1 0x4 PUSH2 0xAE6 JUMP JUMPDEST PUSH2 0x46C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x1FC CALLDATASIZE PUSH1 0x4 PUSH2 0xBCC JUMP JUMPDEST PUSH2 0x5F8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x6A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x222 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19F PUSH2 0x231 CALLDATASIZE PUSH1 0x4 PUSH2 0xC27 JUMP JUMPDEST PUSH2 0x6E8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x242 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x251 CALLDATASIZE PUSH1 0x4 PUSH2 0xAE6 JUMP JUMPDEST PUSH2 0x712 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16E PUSH2 0x271 CALLDATASIZE PUSH1 0x4 PUSH2 0xAE6 JUMP JUMPDEST PUSH2 0x788 JUMP JUMPDEST PUSH1 0x2 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x286 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x8 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x4 MUL SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x2B8 PUSH2 0x89C JUMP JUMPDEST DUP2 MLOAD PUSH2 0x2CB SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x946 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x2DF SWAP1 PUSH1 0x2 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x9AB JUMP JUMPDEST POP PUSH2 0x2E9 DUP2 PUSH2 0x5F8 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x2F5 PUSH2 0x89C JUMP JUMPDEST PUSH2 0x2FF PUSH1 0x0 PUSH2 0x8F6 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x1 SLOAD SELFBALANCE SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x467 JUMPI PUSH1 0x0 PUSH2 0x368 DUP5 PUSH1 0x2 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x338 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x8 DUP3 DIV ADD SLOAD PUSH3 0xF4240 PUSH1 0x7 SWAP1 SWAP3 AND PUSH1 0x4 MUL PUSH2 0x100 EXP SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP2 SWAP1 SWAP2 MUL DIV SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x38D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 DUP5 SWAP2 SWAP1 DUP2 DUP2 DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3E1 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3E6 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x454 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x756E61626C6520746F2073656E64206574682C20726563697069656E74206D61 PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x1E481A185D99481C995D995C9D1959 PUSH1 0x8A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP DUP1 PUSH2 0x460 SWAP1 PUSH2 0xD01 JUMP JUMPDEST SWAP1 POP PUSH2 0x309 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x49B SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0xC57 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4C7 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 0x4EB SWAP2 SWAP1 PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x5F2 JUMPI PUSH1 0x0 PUSH2 0x523 DUP5 PUSH1 0x2 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x338 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0x1 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x555 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH2 0x58D SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0xC6B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5BB 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 0x5DF SWAP2 SWAP1 PUSH2 0xC07 JUMP JUMPDEST POP POP DUP1 PUSH2 0x5EB SWAP1 PUSH2 0xD01 JUMP JUMPDEST SWAP1 POP PUSH2 0x4F4 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x600 PUSH2 0x89C JUMP JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x654 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x62D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP3 PUSH2 0x640 SWAP2 SWAP1 PUSH2 0xCD9 JUMP JUMPDEST SWAP2 POP DUP1 PUSH2 0x64C DUP2 PUSH2 0xD01 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x604 JUMP JUMPDEST POP PUSH3 0xF4240 DUP2 PUSH4 0xFFFFFFFF AND EQ PUSH2 0x2E9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x696E76616C69642070657263656E7461676573 PUSH1 0x68 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x44B JUMP JUMPDEST PUSH2 0x6AB PUSH2 0x89C JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 SELFBALANCE DUP1 ISZERO PUSH2 0x8FC MUL SWAP3 SWAP1 SWAP2 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x6E5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x6F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH2 0x71A PUSH2 0x89C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x77F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x44B JUMP JUMPDEST PUSH2 0x6E5 DUP2 PUSH2 0x8F6 JUMP JUMPDEST PUSH2 0x790 PUSH2 0x89C JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB PUSH2 0x7B1 PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x7DD SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0xC57 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x809 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 0x82D SWAP2 SWAP1 PUSH2 0xC3F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x84A SWAP3 SWAP2 SWAP1 PUSH2 0xC6B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x864 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x878 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 0x2E9 SWAP2 SWAP1 PUSH2 0xC07 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x2FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x44B JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x99B JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x99B JUMPI DUP3 MLOAD DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND OR DUP3 SSTORE PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x966 JUMP JUMPDEST POP PUSH2 0x9A7 SWAP3 SWAP2 POP PUSH2 0xA51 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x7 ADD PUSH1 0x8 SWAP1 DIV DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x99B JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD PUSH1 0x0 JUMPDEST DUP4 DUP3 GT ISZERO PUSH2 0xA18 JUMPI DUP4 MLOAD DUP4 DUP3 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP SWAP3 PUSH1 0x20 ADD SWAP3 PUSH1 0x4 ADD PUSH1 0x20 DUP2 PUSH1 0x3 ADD DIV SWAP3 DUP4 ADD SWAP3 PUSH1 0x1 SUB MUL PUSH2 0x9D4 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xA48 JUMPI DUP3 DUP2 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x4 ADD PUSH1 0x20 DUP2 PUSH1 0x3 ADD DIV SWAP3 DUP4 ADD SWAP3 PUSH1 0x1 SUB MUL PUSH2 0xA18 JUMP JUMPDEST POP POP PUSH2 0x9A7 SWAP3 SWAP2 POP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x9A7 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xA52 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xA76 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0xA8B PUSH2 0xA86 DUP4 PUSH2 0xCB5 JUMP JUMPDEST PUSH2 0xC84 JUMP JUMPDEST DUP1 DUP4 DUP3 MSTORE DUP3 DUP3 ADD SWAP2 POP DUP3 DUP7 ADD DUP8 DUP5 DUP7 PUSH1 0x5 SHL DUP10 ADD ADD GT ISZERO PUSH2 0xAAA JUMPI DUP6 DUP7 REVERT JUMPDEST DUP6 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0xAD9 JUMPI DUP2 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xAC7 JUMPI DUP8 DUP9 REVERT JUMPDEST DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xAAC JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAF7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xB02 DUP2 PUSH2 0xD48 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB1B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xB32 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xB45 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0xB55 PUSH2 0xA86 DUP4 PUSH2 0xCB5 JUMP JUMPDEST DUP1 DUP4 DUP3 MSTORE DUP3 DUP3 ADD SWAP2 POP DUP3 DUP7 ADD DUP11 DUP5 DUP7 PUSH1 0x5 SHL DUP10 ADD ADD GT ISZERO PUSH2 0xB74 JUMPI DUP8 DUP9 REVERT JUMPDEST DUP8 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0xB9F JUMPI DUP1 CALLDATALOAD PUSH2 0xB8B DUP2 PUSH2 0xD48 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0xB78 JUMP JUMPDEST POP SWAP7 POP POP DUP7 ADD CALLDATALOAD SWAP3 POP POP DUP1 DUP3 GT ISZERO PUSH2 0xBB5 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0xBC2 DUP6 DUP3 DUP7 ADD PUSH2 0xA66 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBDD JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBF3 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0xBFF DUP5 DUP3 DUP6 ADD PUSH2 0xA66 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC18 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xB02 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC38 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC50 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xCAD JUMPI PUSH2 0xCAD PUSH2 0xD32 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xCCF JUMPI PUSH2 0xCCF PUSH2 0xD32 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0xCF8 JUMPI PUSH2 0xCF8 PUSH2 0xD1C JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0xD15 JUMPI PUSH2 0xD15 PUSH2 0xD1C JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x6E5 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB1 0xBB PUSH8 0x814C8BBF9451913E 0x2D REVERT PUSH2 0xAB87 AND SWAP3 0xBA SGT 0x23 0xC7 NOT CALLER 0xDC OR PUSH11 0x4DCBDFB3AF64736F6C6343 STOP ADDMOD DIV STOP CALLER ","sourceMap":"231:3222:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;752:36;719:10:5;778:9:10;752:36;;;;;;;:::i;:::-;;;;;;;;231:3222;;;;;440:34;;;;;;;;;;-1:-1:-1;440:34:10;;;;;:::i;:::-;;:::i;:::-;;;6298:10:13;6286:23;;;6268:42;;6256:2;6241:18;440:34:10;;;;;;;;357:46;;;;;;;;;;;;400:3;357:46;;;;;6088:25:13;;;6076:2;6061:18;357:46:10;6043:76:13;2009:261:10;;;;;;;;;;-1:-1:-1;2009:261:10;;;;;:::i;:::-;;:::i;:::-;;1831:101:0;;;;;;;;;;;;;:::i;1201:85::-;;;;;;;;;;-1:-1:-1;1247:7:0;1273:6;-1:-1:-1;;;;;1273:6:0;1201:85;;;;;;;:::i;801:709:10:-;;;;;;;;;;;;;:::i;1516:487::-;;;;;;;;;;-1:-1:-1;1516:487:10;;;;;:::i;:::-;;:::i;2276:329::-;;;;;;;;;;-1:-1:-1;2276:329:10;;;;;:::i;:::-;;:::i;2611:107::-;;;;;;;;;;;;;:::i;409:25::-;;;;;;;;;;-1:-1:-1;409:25:10;;;;;:::i;:::-;;:::i;2081:198:0:-;;;;;;;;;;-1:-1:-1;2081:198:0;;;;;:::i;:::-;;:::i;2724:128:10:-;;;;;;;;;;-1:-1:-1;2724:128:10;;;;;:::i;:::-;;:::i;440:34::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2009:261::-;1094:13:0;:11;:13::i;:::-;2146:20:10;;::::1;::::0;:8:::1;::::0;:20:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;2176:40:10;;::::1;::::0;:18:::1;::::0;:40:::1;::::0;::::1;::::0;::::1;:::i;:::-;;2226:37;2243:19;2226:16;:37::i;:::-;2009:261:::0;;:::o;1831:101:0:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;801:709:10:-;1068:8;:15;867:21;;843;1093:411;1117:14;1113:1;:18;1093:411;;;1224:11;1238:108;1280:13;1311:18;1330:1;1311:21;;;;;;-1:-1:-1;;;1311:21:10;;;;;;;;;;;;;;;;;;;;;;3418:16;1311:21;;;;;;;;;;;;3390:26;;;;3386:49;;3313:132;1238:108;1224:122;;1362:12;1380:8;1389:1;1380:11;;;;;;-1:-1:-1;;;1380:11:10;;;;;;;;;;;;;;;;;;:32;;-1:-1:-1;;;;;1380:11:10;;;;1404:3;;1380:32;;:11;:32;1404:3;1380:11;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1361:51;;;1434:7;1426:67;;;;-1:-1:-1;;;1426:67:10;;5019:2:13;1426:67:10;;;5001:21:13;5058:2;5038:18;;;5031:30;5097:34;5077:18;;;5070:62;-1:-1:-1;;;5148:18:13;;;5141:45;5203:19;;1426:67:10;;;;;;;;;1093:411;;1133:3;;;;:::i;:::-;;;1093:411;;;;801:709;;:::o;1516:487::-;1596:30;;-1:-1:-1;;;1596:30:10;;1572:21;;-1:-1:-1;;;;;1596:15:10;;;;;:30;;1620:4;;1596:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1661:8;:15;1572:54;;-1:-1:-1;1636:22:10;1686:311;1710:14;1706:1;:18;1686:311;;;1817:11;1831:108;1873:13;1904:18;1923:1;1904:21;;;;;;-1:-1:-1;;;1904:21:10;;;;;;;;1831:108;1817:122;;1954:5;-1:-1:-1;;;;;1954:14:10;;1969:8;1978:1;1969:11;;;;;;-1:-1:-1;;;1969:11:10;;;;;;;;;;;;;;;;;;;1954:32;;-1:-1:-1;;;;;;1954:32:10;;;;;;;;;-1:-1:-1;;;;;1969:11:10;;1982:3;;1954:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1686:311;1726:3;;;;:::i;:::-;;;1686:311;;;;1516:487;;;:::o;2276:329::-;1094:13:0;:11;:13::i;:::-;2399:10:10::1;2428:9:::0;2423:111:::1;2447:19;:26;2443:1;:30;2423:111;;;2501:19;2521:1;2501:22;;;;;;-1:-1:-1::0;;;2501:22:10::1;;;;;;;;;;;;;;;2494:29;;;;;:::i;:::-;::::0;-1:-1:-1;2475:3:10;::::1;::::0;::::1;:::i;:::-;;;;2423:111;;;;400:3;2551;:23;;;2543:55;;;::::0;-1:-1:-1;;;2543:55:10;;5796:2:13;2543:55:10::1;::::0;::::1;5778:21:13::0;5835:2;5815:18;;;5808:30;-1:-1:-1;;;5854:18:13;;;5847:49;5913:18;;2543:55:10::1;5768:169:13::0;2611:107:10;1094:13:0;:11;:13::i;:::-;1247:7;1273:6;;2663:48:10::1;::::0;-1:-1:-1;;;;;1273:6:0;;;;2689:21:10::1;2663:48:::0;::::1;;;::::0;2689:21;;2663:48;1247:7:0;2663:48:10;2689:21;1273:6:0;2663:48:10;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;2611:107::o:0;409:25::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;409:25:10;;-1:-1:-1;409:25:10;:::o;2081:198:0:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:0;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:0;;4612:2:13;2161:73:0::1;::::0;::::1;4594:21:13::0;4651:2;4631:18;;;4624:30;4690:34;4670:18;;;4663:62;-1:-1:-1;;;4741:18:13;;;4734:36;4787:19;;2161:73:0::1;4584:228:13::0;2161:73:0::1;2244:28;2263:8;2244:18;:28::i;2724:128:10:-:0;1094:13:0;:11;:13::i;:::-;2790:5:10::1;-1:-1:-1::0;;;;;2790:14:10::1;;2805:7;1247::0::0;1273:6;-1:-1:-1;;;;;1273:6:0;;1201:85;2805:7:10::1;2814:30;::::0;-1:-1:-1;;;2814:30:10;;-1:-1:-1;;;;;2814:15:10;::::1;::::0;::::1;::::0;:30:::1;::::0;2838:4:::1;::::0;2814:30:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2790:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1359:130:0:-:0;1247:7;1273:6;-1:-1:-1;;;;;1273:6:0;719:10:5;1422:23:0;1414:68;;;;-1:-1:-1;;;1414:68:0;;5435:2:13;1414:68:0;;;5417:21:13;;;5454:18;;;5447:30;5513:34;5493:18;;;5486:62;5565:18;;1414:68:0;5407:182:13;2433:187:0;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:0;;;-1:-1:-1;;;;;;2541:17:0;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2433:187;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:805:13;67:5;120:3;113:4;105:6;101:17;97:27;87:2;;142:5;135;128:20;87:2;182:6;169:20;208:4;232:60;248:43;288:2;248:43;:::i;:::-;232:60;:::i;:::-;314:3;338:2;333:3;326:15;366:2;361:3;357:12;350:19;;401:2;393:6;389:15;453:3;448:2;442;439:1;435:10;427:6;423:23;419:32;416:41;413:2;;;474:5;467;460:20;413:2;500:5;514:276;528:2;525:1;522:9;514:276;;;599:3;586:17;647:10;640:5;636:22;629:5;626:33;616:2;;677:5;670;663:20;616:2;698:18;;736:12;;;;768;;;;546:1;539:9;514:276;;;-1:-1:-1;808:5:13;;77:742;-1:-1:-1;;;;;;;77:742:13:o;824:257::-;883:6;936:2;924:9;915:7;911:23;907:32;904:2;;;957:6;949;942:22;904:2;1001:9;988:23;1020:31;1045:5;1020:31;:::i;:::-;1070:5;894:187;-1:-1:-1;;;894:187:13:o;1086:1279::-;1203:6;1211;1264:2;1252:9;1243:7;1239:23;1235:32;1232:2;;;1285:6;1277;1270:22;1232:2;1330:9;1317:23;1359:18;1400:2;1392:6;1389:14;1386:2;;;1421:6;1413;1406:22;1386:2;1464:6;1453:9;1449:22;1439:32;;1509:7;1502:4;1498:2;1494:13;1490:27;1480:2;;1536:6;1528;1521:22;1480:2;1577;1564:16;1599:4;1623:60;1639:43;1679:2;1639:43;:::i;1623:60::-;1705:3;1729:2;1724:3;1717:15;1757:2;1752:3;1748:12;1741:19;;1788:2;1784;1780:11;1836:7;1831:2;1825;1822:1;1818:10;1814:2;1810:19;1806:28;1803:41;1800:2;;;1862:6;1854;1847:22;1800:2;1889:6;1880:15;;1904:238;1918:2;1915:1;1912:9;1904:238;;;1989:3;1976:17;2006:31;2031:5;2006:31;:::i;:::-;2050:18;;1936:1;1929:9;;;;;2088:12;;;;2120;;1904:238;;;-1:-1:-1;2161:5:13;-1:-1:-1;;2204:18:13;;2191:32;;-1:-1:-1;;2235:16:13;;;2232:2;;;2269:6;2261;2254:22;2232:2;;2297:62;2351:7;2340:8;2329:9;2325:24;2297:62;:::i;:::-;2287:72;;;1222:1143;;;;;:::o;2370:366::-;2453:6;2506:2;2494:9;2485:7;2481:23;2477:32;2474:2;;;2527:6;2519;2512:22;2474:2;2572:9;2559:23;2605:18;2597:6;2594:30;2591:2;;;2642:6;2634;2627:22;2591:2;2670:60;2722:7;2713:6;2702:9;2698:22;2670:60;:::i;:::-;2660:70;2464:272;-1:-1:-1;;;;2464:272:13:o;2741:297::-;2808:6;2861:2;2849:9;2840:7;2836:23;2832:32;2829:2;;;2882:6;2874;2867:22;2829:2;2919:9;2913:16;2972:5;2965:13;2958:21;2951:5;2948:32;2938:2;;2999:6;2991;2984:22;3319:190;3378:6;3431:2;3419:9;3410:7;3406:23;3402:32;3399:2;;;3452:6;3444;3437:22;3399:2;-1:-1:-1;3480:23:13;;3389:120;-1:-1:-1;3389:120:13:o;3514:194::-;3584:6;3637:2;3625:9;3616:7;3612:23;3608:32;3605:2;;;3658:6;3650;3643:22;3605:2;-1:-1:-1;3686:16:13;;3595:113;-1:-1:-1;3595:113:13:o;3923:203::-;-1:-1:-1;;;;;4087:32:13;;;;4069:51;;4057:2;4042:18;;4024:102::o;4131:274::-;-1:-1:-1;;;;;4323:32:13;;;;4305:51;;4387:2;4372:18;;4365:34;4293:2;4278:18;;4260:145::o;6321:275::-;6392:2;6386:9;6457:2;6438:13;;-1:-1:-1;;6434:27:13;6422:40;;6492:18;6477:34;;6513:22;;;6474:62;6471:2;;;6539:18;;:::i;:::-;6575:2;6568:22;6366:230;;-1:-1:-1;6366:230:13:o;6601:183::-;6661:4;6694:18;6686:6;6683:30;6680:2;;;6716:18;;:::i;:::-;-1:-1:-1;6761:1:13;6757:14;6773:4;6753:25;;6670:114::o;6789:228::-;6828:3;6856:10;6893:2;6890:1;6886:10;6923:2;6920:1;6916:10;6954:3;6950:2;6946:12;6941:3;6938:21;6935:2;;;6962:18;;:::i;:::-;6998:13;;6836:181;-1:-1:-1;;;;6836:181:13:o;7022:135::-;7061:3;-1:-1:-1;;7082:17:13;;7079:2;;;7102:18;;:::i;:::-;-1:-1:-1;7149:1:13;7138:13;;7069:88::o;7162:127::-;7223:10;7218:3;7214:20;7211:1;7204:31;7254:4;7251:1;7244:15;7278:4;7275:1;7268:15;7294:127;7355:10;7350:3;7346:20;7343:1;7336:31;7386:4;7383:1;7376:15;7410:4;7407:1;7400:15;7426:131;-1:-1:-1;;;;;7501:31:13;;7491:42;;7481:2;;7547:1;7544;7537:12"},"methodIdentifiers":{"PERCENTAGE_SCALE()":"3f26479e","accounts(uint256)":"f2a40db8","checkPercentages(uint32[])":"c45ff544","distributeERC20(address)":"bce58269","distributeETH()":"b8b9b549","owner()":"8da5cb5b","percentAllocations(uint256)":"003f619d","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b","updateSplit(address[],uint32[])":"44def48f","withdrawERC20(address)":"f4f3b200","withdrawETH()":"e086e5ec"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint32[]\",\"name\":\"_percentAllocations\",\"type\":\"uint32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ETHReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"PERCENTAGE_SCALE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"accounts\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"_percentAllocations\",\"type\":\"uint32[]\"}],\"name\":\"checkPercentages\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"distributeERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"distributeETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"percentAllocations\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint32[]\",\"name\":\"_percentAllocations\",\"type\":\"uint32[]\"}],\"name\":\"updateSplit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"withdrawERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/splitters/FeesSplitter.sol\":\"FeesSplitter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"keccak256\":\"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95\",\"dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x032807210d1d7d218963d7355d62e021a84bf1b3339f4f50be2f63b53cccaf29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11756f42121f6541a35a8339ea899ee7514cfaa2e6d740625fcc844419296aa6\",\"dweb:/ipfs/QmekMuk6BY4DAjzeXr4MSbKdgoqqsZnA8JPtuyWc6CwXHf\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"contracts/splitters/FeesSplitter.sol\":{\"keccak256\":\"0xa0442288092faa627851ea6b052660c411324224a41839aa6d7da7691b87cd4e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://12ba18dd287dfd310b6335b4a1ba587cf2cc24b5d2b9f91d5499022341e08d8e\",\"dweb:/ipfs/QmW3u4GMyq1srCQULTyhHHakde9RsgpbQKCVSqnhDb1tWX\"]}},\"version\":1}"}},"contracts/splitters/MAHASplitKeeper.sol":{"ICommunityFund":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"releasableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"releasableAmount(address)":"1726cbc8","release(address)":"19165587"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"releasableAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"release\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/splitters/MAHASplitKeeper.sol\":\"ICommunityFund\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"keccak256\":\"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95\",\"dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x032807210d1d7d218963d7355d62e021a84bf1b3339f4f50be2f63b53cccaf29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11756f42121f6541a35a8339ea899ee7514cfaa2e6d740625fcc844419296aa6\",\"dweb:/ipfs/QmekMuk6BY4DAjzeXr4MSbKdgoqqsZnA8JPtuyWc6CwXHf\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xd15c3e400531f00203839159b2b8e7209c5158b35618f570c695b7e47f12e9f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b600b852e0597aa69989cc263111f02097e2827edc1bdc70306303e3af5e9929\",\"dweb:/ipfs/QmU4WfM28A1nDqghuuGeFmN3CnVrk6opWtiF65K4vhFPeC\"]},\"@openzeppelin/contracts/utils/math/SafeMath.sol\":{\"keccak256\":\"0x0f633a0223d9a1dcccfcf38a64c9de0874dfcbfac0c6941ccf074d63a2ce0e1e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://864a40efcffdf408044c332a5aa38ec5618ed7b4eecb8f65faf45671bd6cdc65\",\"dweb:/ipfs/QmQJquTMtc6fgm5JQzGdsGpA2fqBe3MHWEdt2qzaLySMdN\"]},\"contracts/interfaces/IEpoch.sol\":{\"keccak256\":\"0x2c5a127cb728ce5d2bd5c1a3d017e96d8eb13a846920a1aea64ffa1979316d68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89512617e1fb067b242c55dfc7e03230e54436e46c51453dbee84b25f0391bd8\",\"dweb:/ipfs/QmQgVCVUp1eQafMQQHpTafDk6dADe15rsmjhTKT4YetdoC\"]},\"contracts/interfaces/KeeperCompatibleInterface.sol\":{\"keccak256\":\"0xd01541bff925ba14b83a37a3ab6ea20329125fe2d71a7e28afc46a9791530f0d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://688f76eedb1a50c6de88bdb306c2c04a0883fa29f1ea47de7e4e51a8c5831ed7\",\"dweb:/ipfs/QmdLrXmwGrPAJXQnXasBZFwxAP7BTq5WgDtYhmaJ1nfubW\"]},\"contracts/splitters/FeesSplitter.sol\":{\"keccak256\":\"0xa0442288092faa627851ea6b052660c411324224a41839aa6d7da7691b87cd4e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://12ba18dd287dfd310b6335b4a1ba587cf2cc24b5d2b9f91d5499022341e08d8e\",\"dweb:/ipfs/QmW3u4GMyq1srCQULTyhHHakde9RsgpbQKCVSqnhDb1tWX\"]},\"contracts/splitters/MAHASplitKeeper.sol\":{\"keccak256\":\"0x99d071085fb845b0cf73042c6d2e7e6a2c57d1dd5aa2822712a15115475c72c0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9b9a16fe37c5d4ca861ff18b16f5067f2cf0b0c657ca35480733a26740574177\",\"dweb:/ipfs/QmPSX62Nmn4CVLPKZagyUD6x1kqeM8AptrLxEYSztgFLwW\"]},\"contracts/utils/Epoch.sol\":{\"keccak256\":\"0x2dbd8fd988fca4e099ad556f76607918860725d64736ab14d9c7299246c51b10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8299f51efd2a19501423a152bbc1d155dd80cc6b7c4cda0998078843800a408\",\"dweb:/ipfs/QmYEYtJtEQ42SkKdXx2HpN4BJsKEgWkDPa3jVHPU9dG8uW\"]}},\"version\":1}"},"MAHASplitKeeper":{"abi":[{"inputs":[{"internalType":"address[]","name":"_accounts","type":"address[]"},{"internalType":"uint32[]","name":"_percentAllocations","type":"uint32[]"},{"internalType":"contract IERC20","name":"_maha","type":"address"},{"internalType":"contract ICommunityFund","name":"_fund","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ETHReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"PERCENTAGE_SCALE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"accounts","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"callable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32[]","name":"_percentAllocations","type":"uint32[]"}],"name":"checkPercentages","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"","type":"bytes"}],"name":"checkUpkeep","outputs":[{"internalType":"bool","name":"upkeepNeeded","type":"bool"},{"internalType":"bytes","name":"performData","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"communityFund","outputs":[{"internalType":"contract ICommunityFund","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"distributeERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"distributeETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"distributeMAHA","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCurrentEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLastEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNextEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maha","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextEpochPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"percentAllocations","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"","type":"bytes"}],"name":"performUpkeep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"releasable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"releaseAndDistributeMAHA","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"setPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_accounts","type":"address[]"},{"internalType":"uint32[]","name":"_percentAllocations","type":"uint32[]"}],"name":"updateSplit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"withdrawERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:4751:13","statements":[{"nodeType":"YulBlock","src":"6:3:13","statements":[]},{"body":{"nodeType":"YulBlock","src":"88:728:13","statements":[{"body":{"nodeType":"YulBlock","src":"137:24:13","statements":[{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"146:5:13"},{"name":"array","nodeType":"YulIdentifier","src":"153:5:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"139:6:13"},"nodeType":"YulFunctionCall","src":"139:20:13"},"nodeType":"YulExpressionStatement","src":"139:20:13"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"116:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"124:4:13","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"112:3:13"},"nodeType":"YulFunctionCall","src":"112:17:13"},{"name":"end","nodeType":"YulIdentifier","src":"131:3:13"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"108:3:13"},"nodeType":"YulFunctionCall","src":"108:27:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"101:6:13"},"nodeType":"YulFunctionCall","src":"101:35:13"},"nodeType":"YulIf","src":"98:2:13"},{"nodeType":"YulVariableDeclaration","src":"170:23:13","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"186:6:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"180:5:13"},"nodeType":"YulFunctionCall","src":"180:13:13"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"174:2:13","type":""}]},{"nodeType":"YulVariableDeclaration","src":"202:14:13","value":{"kind":"number","nodeType":"YulLiteral","src":"212:4:13","type":"","value":"0x20"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"206:2:13","type":""}]},{"nodeType":"YulVariableDeclaration","src":"225:71:13","value":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"292:2:13"}],"functionName":{"name":"array_allocation_size_array_address_dyn","nodeType":"YulIdentifier","src":"252:39:13"},"nodeType":"YulFunctionCall","src":"252:43:13"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"236:15:13"},"nodeType":"YulFunctionCall","src":"236:60:13"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"229:3:13","type":""}]},{"nodeType":"YulVariableDeclaration","src":"305:16:13","value":{"name":"dst","nodeType":"YulIdentifier","src":"318:3:13"},"variables":[{"name":"dst_1","nodeType":"YulTypedName","src":"309:5:13","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"337:3:13"},{"name":"_1","nodeType":"YulIdentifier","src":"342:2:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"330:6:13"},"nodeType":"YulFunctionCall","src":"330:15:13"},"nodeType":"YulExpressionStatement","src":"330:15:13"},{"nodeType":"YulAssignment","src":"354:19:13","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"365:3:13"},{"name":"_2","nodeType":"YulIdentifier","src":"370:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"361:3:13"},"nodeType":"YulFunctionCall","src":"361:12:13"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"354:3:13"}]},{"nodeType":"YulVariableDeclaration","src":"382:26:13","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"397:6:13"},{"name":"_2","nodeType":"YulIdentifier","src":"405:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"393:3:13"},"nodeType":"YulFunctionCall","src":"393:15:13"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"386:3:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"462:24:13","statements":[{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"471:5:13"},{"name":"array","nodeType":"YulIdentifier","src":"478:5:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"464:6:13"},"nodeType":"YulFunctionCall","src":"464:20:13"},"nodeType":"YulExpressionStatement","src":"464:20:13"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"431:6:13"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"443:1:13","type":"","value":"5"},{"name":"_1","nodeType":"YulIdentifier","src":"446:2:13"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"439:3:13"},"nodeType":"YulFunctionCall","src":"439:10:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"427:3:13"},"nodeType":"YulFunctionCall","src":"427:23:13"},{"name":"_2","nodeType":"YulIdentifier","src":"452:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"423:3:13"},"nodeType":"YulFunctionCall","src":"423:32:13"},{"name":"end","nodeType":"YulIdentifier","src":"457:3:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"420:2:13"},"nodeType":"YulFunctionCall","src":"420:41:13"},"nodeType":"YulIf","src":"417:2:13"},{"nodeType":"YulVariableDeclaration","src":"495:14:13","value":{"name":"array","nodeType":"YulIdentifier","src":"504:5:13"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"499:1:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"563:224:13","statements":[{"nodeType":"YulVariableDeclaration","src":"577:23:13","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"596:3:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"590:5:13"},"nodeType":"YulFunctionCall","src":"590:10:13"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"581:5:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"658:24:13","statements":[{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"667:5:13"},{"name":"array","nodeType":"YulIdentifier","src":"674:5:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"660:6:13"},"nodeType":"YulFunctionCall","src":"660:20:13"},"nodeType":"YulExpressionStatement","src":"660:20:13"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"626:5:13"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"637:5:13"},{"kind":"number","nodeType":"YulLiteral","src":"644:10:13","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"633:3:13"},"nodeType":"YulFunctionCall","src":"633:22:13"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"623:2:13"},"nodeType":"YulFunctionCall","src":"623:33:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"616:6:13"},"nodeType":"YulFunctionCall","src":"616:41:13"},"nodeType":"YulIf","src":"613:2:13"},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"702:3:13"},{"name":"value","nodeType":"YulIdentifier","src":"707:5:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"695:6:13"},"nodeType":"YulFunctionCall","src":"695:18:13"},"nodeType":"YulExpressionStatement","src":"695:18:13"},{"nodeType":"YulAssignment","src":"726:19:13","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"737:3:13"},{"name":"_2","nodeType":"YulIdentifier","src":"742:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"733:3:13"},"nodeType":"YulFunctionCall","src":"733:12:13"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"726:3:13"}]},{"nodeType":"YulAssignment","src":"758:19:13","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"769:3:13"},{"name":"_2","nodeType":"YulIdentifier","src":"774:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"765:3:13"},"nodeType":"YulFunctionCall","src":"765:12:13"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"758:3:13"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"529:1:13"},{"name":"_1","nodeType":"YulIdentifier","src":"532:2:13"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"526:2:13"},"nodeType":"YulFunctionCall","src":"526:9:13"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"536:18:13","statements":[{"nodeType":"YulAssignment","src":"538:14:13","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"547:1:13"},{"kind":"number","nodeType":"YulLiteral","src":"550:1:13","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"543:3:13"},"nodeType":"YulFunctionCall","src":"543:9:13"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"538:1:13"}]}]},"pre":{"nodeType":"YulBlock","src":"522:3:13","statements":[]},"src":"518:269:13"},{"nodeType":"YulAssignment","src":"796:14:13","value":{"name":"dst_1","nodeType":"YulIdentifier","src":"805:5:13"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"796:5:13"}]}]},"name":"abi_decode_array_uint32_dyn_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"62:6:13","type":""},{"name":"end","nodeType":"YulTypedName","src":"70:3:13","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"78:5:13","type":""}],"src":"14:802:13"},{"body":{"nodeType":"YulBlock","src":"897:78:13","statements":[{"nodeType":"YulAssignment","src":"907:22:13","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"922:6:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"916:5:13"},"nodeType":"YulFunctionCall","src":"916:13:13"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"907:5:13"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"963:5:13"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"938:24:13"},"nodeType":"YulFunctionCall","src":"938:31:13"},"nodeType":"YulExpressionStatement","src":"938:31:13"}]},"name":"abi_decode_contract_ICommunityFund_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"876:6:13","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"887:5:13","type":""}],"src":"821:154:13"},{"body":{"nodeType":"YulBlock","src":"1198:1295:13","statements":[{"body":{"nodeType":"YulBlock","src":"1245:26:13","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1254:6:13"},{"name":"value0","nodeType":"YulIdentifier","src":"1262:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1247:6:13"},"nodeType":"YulFunctionCall","src":"1247:22:13"},"nodeType":"YulExpressionStatement","src":"1247:22:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1219:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"1228:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1215:3:13"},"nodeType":"YulFunctionCall","src":"1215:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"1240:3:13","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1211:3:13"},"nodeType":"YulFunctionCall","src":"1211:33:13"},"nodeType":"YulIf","src":"1208:2:13"},{"nodeType":"YulVariableDeclaration","src":"1280:30:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1300:9:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1294:5:13"},"nodeType":"YulFunctionCall","src":"1294:16:13"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1284:6:13","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1319:28:13","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1337:2:13","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"1341:1:13","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1333:3:13"},"nodeType":"YulFunctionCall","src":"1333:10:13"},{"kind":"number","nodeType":"YulLiteral","src":"1345:1:13","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1329:3:13"},"nodeType":"YulFunctionCall","src":"1329:18:13"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1323:2:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"1374:26:13","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1383:6:13"},{"name":"value0","nodeType":"YulIdentifier","src":"1391:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1376:6:13"},"nodeType":"YulFunctionCall","src":"1376:22:13"},"nodeType":"YulExpressionStatement","src":"1376:22:13"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1362:6:13"},{"name":"_1","nodeType":"YulIdentifier","src":"1370:2:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1359:2:13"},"nodeType":"YulFunctionCall","src":"1359:14:13"},"nodeType":"YulIf","src":"1356:2:13"},{"nodeType":"YulVariableDeclaration","src":"1409:32:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1423:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"1434:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1419:3:13"},"nodeType":"YulFunctionCall","src":"1419:22:13"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"1413:2:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"1489:26:13","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1498:6:13"},{"name":"value0","nodeType":"YulIdentifier","src":"1506:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1491:6:13"},"nodeType":"YulFunctionCall","src":"1491:22:13"},"nodeType":"YulExpressionStatement","src":"1491:22:13"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1468:2:13"},{"kind":"number","nodeType":"YulLiteral","src":"1472:4:13","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1464:3:13"},"nodeType":"YulFunctionCall","src":"1464:13:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1479:7:13"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1460:3:13"},"nodeType":"YulFunctionCall","src":"1460:27:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1453:6:13"},"nodeType":"YulFunctionCall","src":"1453:35:13"},"nodeType":"YulIf","src":"1450:2:13"},{"nodeType":"YulVariableDeclaration","src":"1524:19:13","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1540:2:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1534:5:13"},"nodeType":"YulFunctionCall","src":"1534:9:13"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"1528:2:13","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1552:14:13","value":{"kind":"number","nodeType":"YulLiteral","src":"1562:4:13","type":"","value":"0x20"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"1556:2:13","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1575:71:13","value":{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"1642:2:13"}],"functionName":{"name":"array_allocation_size_array_address_dyn","nodeType":"YulIdentifier","src":"1602:39:13"},"nodeType":"YulFunctionCall","src":"1602:43:13"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"1586:15:13"},"nodeType":"YulFunctionCall","src":"1586:60:13"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"1579:3:13","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1655:16:13","value":{"name":"dst","nodeType":"YulIdentifier","src":"1668:3:13"},"variables":[{"name":"dst_1","nodeType":"YulTypedName","src":"1659:5:13","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1687:3:13"},{"name":"_3","nodeType":"YulIdentifier","src":"1692:2:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1680:6:13"},"nodeType":"YulFunctionCall","src":"1680:15:13"},"nodeType":"YulExpressionStatement","src":"1680:15:13"},{"nodeType":"YulAssignment","src":"1704:19:13","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1715:3:13"},{"name":"_4","nodeType":"YulIdentifier","src":"1720:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1711:3:13"},"nodeType":"YulFunctionCall","src":"1711:12:13"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"1704:3:13"}]},{"nodeType":"YulVariableDeclaration","src":"1732:22:13","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1747:2:13"},{"name":"_4","nodeType":"YulIdentifier","src":"1751:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1743:3:13"},"nodeType":"YulFunctionCall","src":"1743:11:13"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"1736:3:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"1808:26:13","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1817:6:13"},{"name":"value0","nodeType":"YulIdentifier","src":"1825:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1810:6:13"},"nodeType":"YulFunctionCall","src":"1810:22:13"},"nodeType":"YulExpressionStatement","src":"1810:22:13"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1777:2:13"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1785:1:13","type":"","value":"5"},{"name":"_3","nodeType":"YulIdentifier","src":"1788:2:13"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1781:3:13"},"nodeType":"YulFunctionCall","src":"1781:10:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1773:3:13"},"nodeType":"YulFunctionCall","src":"1773:19:13"},{"name":"_4","nodeType":"YulIdentifier","src":"1794:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1769:3:13"},"nodeType":"YulFunctionCall","src":"1769:28:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1799:7:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1766:2:13"},"nodeType":"YulFunctionCall","src":"1766:41:13"},"nodeType":"YulIf","src":"1763:2:13"},{"nodeType":"YulVariableDeclaration","src":"1843:15:13","value":{"name":"value0","nodeType":"YulIdentifier","src":"1852:6:13"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"1847:1:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"1912:186:13","statements":[{"nodeType":"YulVariableDeclaration","src":"1926:23:13","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"1945:3:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1939:5:13"},"nodeType":"YulFunctionCall","src":"1939:10:13"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1930:5:13","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1987:5:13"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"1962:24:13"},"nodeType":"YulFunctionCall","src":"1962:31:13"},"nodeType":"YulExpressionStatement","src":"1962:31:13"},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"2013:3:13"},{"name":"value","nodeType":"YulIdentifier","src":"2018:5:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2006:6:13"},"nodeType":"YulFunctionCall","src":"2006:18:13"},"nodeType":"YulExpressionStatement","src":"2006:18:13"},{"nodeType":"YulAssignment","src":"2037:19:13","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"2048:3:13"},{"name":"_4","nodeType":"YulIdentifier","src":"2053:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2044:3:13"},"nodeType":"YulFunctionCall","src":"2044:12:13"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"2037:3:13"}]},{"nodeType":"YulAssignment","src":"2069:19:13","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2080:3:13"},{"name":"_4","nodeType":"YulIdentifier","src":"2085:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2076:3:13"},"nodeType":"YulFunctionCall","src":"2076:12:13"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"2069:3:13"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1878:1:13"},{"name":"_3","nodeType":"YulIdentifier","src":"1881:2:13"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1875:2:13"},"nodeType":"YulFunctionCall","src":"1875:9:13"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1885:18:13","statements":[{"nodeType":"YulAssignment","src":"1887:14:13","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1896:1:13"},{"kind":"number","nodeType":"YulLiteral","src":"1899:1:13","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1892:3:13"},"nodeType":"YulFunctionCall","src":"1892:9:13"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1887:1:13"}]}]},"pre":{"nodeType":"YulBlock","src":"1871:3:13","statements":[]},"src":"1867:231:13"},{"nodeType":"YulAssignment","src":"2107:15:13","value":{"name":"dst_1","nodeType":"YulIdentifier","src":"2117:5:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2107:6:13"}]},{"nodeType":"YulVariableDeclaration","src":"2131:41:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2157:9:13"},{"name":"_4","nodeType":"YulIdentifier","src":"2168:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2153:3:13"},"nodeType":"YulFunctionCall","src":"2153:18:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2147:5:13"},"nodeType":"YulFunctionCall","src":"2147:25:13"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"2135:8:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"2201:26:13","statements":[{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"2210:6:13"},{"name":"value1","nodeType":"YulIdentifier","src":"2218:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2203:6:13"},"nodeType":"YulFunctionCall","src":"2203:22:13"},"nodeType":"YulExpressionStatement","src":"2203:22:13"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"2187:8:13"},{"name":"_1","nodeType":"YulIdentifier","src":"2197:2:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2184:2:13"},"nodeType":"YulFunctionCall","src":"2184:16:13"},"nodeType":"YulIf","src":"2181:2:13"},{"nodeType":"YulAssignment","src":"2236:83:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2289:9:13"},{"name":"offset_1","nodeType":"YulIdentifier","src":"2300:8:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2285:3:13"},"nodeType":"YulFunctionCall","src":"2285:24:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2311:7:13"}],"functionName":{"name":"abi_decode_array_uint32_dyn_fromMemory","nodeType":"YulIdentifier","src":"2246:38:13"},"nodeType":"YulFunctionCall","src":"2246:73:13"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2236:6:13"}]},{"nodeType":"YulAssignment","src":"2328:75:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2388:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"2399:2:13","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2384:3:13"},"nodeType":"YulFunctionCall","src":"2384:18:13"}],"functionName":{"name":"abi_decode_contract_ICommunityFund_fromMemory","nodeType":"YulIdentifier","src":"2338:45:13"},"nodeType":"YulFunctionCall","src":"2338:65:13"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2328:6:13"}]},{"nodeType":"YulAssignment","src":"2412:75:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2472:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"2483:2:13","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2468:3:13"},"nodeType":"YulFunctionCall","src":"2468:18:13"}],"functionName":{"name":"abi_decode_contract_ICommunityFund_fromMemory","nodeType":"YulIdentifier","src":"2422:45:13"},"nodeType":"YulFunctionCall","src":"2422:65:13"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"2412:6:13"}]}]},"name":"abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint32_$dyn_memory_ptrt_contract$_IERC20_$190t_contract$_ICommunityFund_$2006_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1140:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1151:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1163:6:13","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1171:6:13","type":""},{"name":"value2","nodeType":"YulTypedName","src":"1179:6:13","type":""},{"name":"value3","nodeType":"YulTypedName","src":"1187:6:13","type":""}],"src":"980:1513:13"},{"body":{"nodeType":"YulBlock","src":"2672:182:13","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2689:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"2700:2:13","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2682:6:13"},"nodeType":"YulFunctionCall","src":"2682:21:13"},"nodeType":"YulExpressionStatement","src":"2682:21:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2723:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"2734:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2719:3:13"},"nodeType":"YulFunctionCall","src":"2719:18:13"},{"kind":"number","nodeType":"YulLiteral","src":"2739:2:13","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2712:6:13"},"nodeType":"YulFunctionCall","src":"2712:30:13"},"nodeType":"YulExpressionStatement","src":"2712:30:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2762:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"2773:2:13","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2758:3:13"},"nodeType":"YulFunctionCall","src":"2758:18:13"},{"kind":"string","nodeType":"YulLiteral","src":"2778:34:13","type":"","value":"Ownable: caller is not the owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2751:6:13"},"nodeType":"YulFunctionCall","src":"2751:62:13"},"nodeType":"YulExpressionStatement","src":"2751:62:13"},{"nodeType":"YulAssignment","src":"2822:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2834:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"2845:2:13","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2830:3:13"},"nodeType":"YulFunctionCall","src":"2830:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2822:4:13"}]}]},"name":"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2649:9:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2663:4:13","type":""}],"src":"2498:356:13"},{"body":{"nodeType":"YulBlock","src":"3033:169:13","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3050:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"3061:2:13","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3043:6:13"},"nodeType":"YulFunctionCall","src":"3043:21:13"},"nodeType":"YulExpressionStatement","src":"3043:21:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3084:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"3095:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3080:3:13"},"nodeType":"YulFunctionCall","src":"3080:18:13"},{"kind":"number","nodeType":"YulLiteral","src":"3100:2:13","type":"","value":"19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3073:6:13"},"nodeType":"YulFunctionCall","src":"3073:30:13"},"nodeType":"YulExpressionStatement","src":"3073:30:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3123:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"3134:2:13","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3119:3:13"},"nodeType":"YulFunctionCall","src":"3119:18:13"},{"kind":"string","nodeType":"YulLiteral","src":"3139:21:13","type":"","value":"invalid percentages"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3112:6:13"},"nodeType":"YulFunctionCall","src":"3112:49:13"},"nodeType":"YulExpressionStatement","src":"3112:49:13"},{"nodeType":"YulAssignment","src":"3170:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3182:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"3193:2:13","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3178:3:13"},"nodeType":"YulFunctionCall","src":"3178:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3170:4:13"}]}]},"name":"abi_encode_tuple_t_stringliteral_da5de935a79473774bc1a56577c1e5d9c5477e764be29dbf7e048ba86c791791__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3010:9:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3024:4:13","type":""}],"src":"2859:343:13"},{"body":{"nodeType":"YulBlock","src":"3252:230:13","statements":[{"nodeType":"YulAssignment","src":"3262:19:13","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3278:2:13","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3272:5:13"},"nodeType":"YulFunctionCall","src":"3272:9:13"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3262:6:13"}]},{"nodeType":"YulVariableDeclaration","src":"3290:58:13","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3312:6:13"},{"arguments":[{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"3328:4:13"},{"kind":"number","nodeType":"YulLiteral","src":"3334:2:13","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3324:3:13"},"nodeType":"YulFunctionCall","src":"3324:13:13"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3343:2:13","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3339:3:13"},"nodeType":"YulFunctionCall","src":"3339:7:13"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3320:3:13"},"nodeType":"YulFunctionCall","src":"3320:27:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3308:3:13"},"nodeType":"YulFunctionCall","src":"3308:40:13"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"3294:10:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"3423:22:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"3425:16:13"},"nodeType":"YulFunctionCall","src":"3425:18:13"},"nodeType":"YulExpressionStatement","src":"3425:18:13"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3366:10:13"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3386:2:13","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"3390:1:13","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3382:3:13"},"nodeType":"YulFunctionCall","src":"3382:10:13"},{"kind":"number","nodeType":"YulLiteral","src":"3394:1:13","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3378:3:13"},"nodeType":"YulFunctionCall","src":"3378:18:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3363:2:13"},"nodeType":"YulFunctionCall","src":"3363:34:13"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3402:10:13"},{"name":"memPtr","nodeType":"YulIdentifier","src":"3414:6:13"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3399:2:13"},"nodeType":"YulFunctionCall","src":"3399:22:13"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"3360:2:13"},"nodeType":"YulFunctionCall","src":"3360:62:13"},"nodeType":"YulIf","src":"3357:2:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3461:2:13","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3465:10:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3454:6:13"},"nodeType":"YulFunctionCall","src":"3454:22:13"},"nodeType":"YulExpressionStatement","src":"3454:22:13"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"3232:4:13","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"3241:6:13","type":""}],"src":"3207:275:13"},{"body":{"nodeType":"YulBlock","src":"3556:114:13","statements":[{"body":{"nodeType":"YulBlock","src":"3600:22:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"3602:16:13"},"nodeType":"YulFunctionCall","src":"3602:18:13"},"nodeType":"YulExpressionStatement","src":"3602:18:13"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3572:6:13"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3588:2:13","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"3592:1:13","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3584:3:13"},"nodeType":"YulFunctionCall","src":"3584:10:13"},{"kind":"number","nodeType":"YulLiteral","src":"3596:1:13","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3580:3:13"},"nodeType":"YulFunctionCall","src":"3580:18:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3569:2:13"},"nodeType":"YulFunctionCall","src":"3569:30:13"},"nodeType":"YulIf","src":"3566:2:13"},{"nodeType":"YulAssignment","src":"3631:33:13","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3647:1:13","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"3650:6:13"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3643:3:13"},"nodeType":"YulFunctionCall","src":"3643:14:13"},{"kind":"number","nodeType":"YulLiteral","src":"3659:4:13","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3639:3:13"},"nodeType":"YulFunctionCall","src":"3639:25:13"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"3631:4:13"}]}]},"name":"array_allocation_size_array_address_dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"3536:6:13","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"3547:4:13","type":""}],"src":"3487:183:13"},{"body":{"nodeType":"YulBlock","src":"3723:80:13","statements":[{"body":{"nodeType":"YulBlock","src":"3750:22:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"3752:16:13"},"nodeType":"YulFunctionCall","src":"3752:18:13"},"nodeType":"YulExpressionStatement","src":"3752:18:13"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3739:1:13"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"3746:1:13"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3742:3:13"},"nodeType":"YulFunctionCall","src":"3742:6:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3736:2:13"},"nodeType":"YulFunctionCall","src":"3736:13:13"},"nodeType":"YulIf","src":"3733:2:13"},{"nodeType":"YulAssignment","src":"3781:16:13","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3792:1:13"},{"name":"y","nodeType":"YulIdentifier","src":"3795:1:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3788:3:13"},"nodeType":"YulFunctionCall","src":"3788:9:13"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"3781:3:13"}]}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"3706:1:13","type":""},{"name":"y","nodeType":"YulTypedName","src":"3709:1:13","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"3715:3:13","type":""}],"src":"3675:128:13"},{"body":{"nodeType":"YulBlock","src":"3855:181:13","statements":[{"nodeType":"YulVariableDeclaration","src":"3865:20:13","value":{"kind":"number","nodeType":"YulLiteral","src":"3875:10:13","type":"","value":"0xffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3869:2:13","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3894:21:13","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3909:1:13"},{"name":"_1","nodeType":"YulIdentifier","src":"3912:2:13"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3905:3:13"},"nodeType":"YulFunctionCall","src":"3905:10:13"},"variables":[{"name":"x_1","nodeType":"YulTypedName","src":"3898:3:13","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3924:21:13","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"3939:1:13"},{"name":"_1","nodeType":"YulIdentifier","src":"3942:2:13"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3935:3:13"},"nodeType":"YulFunctionCall","src":"3935:10:13"},"variables":[{"name":"y_1","nodeType":"YulTypedName","src":"3928:3:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"3979:22:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"3981:16:13"},"nodeType":"YulFunctionCall","src":"3981:18:13"},"nodeType":"YulExpressionStatement","src":"3981:18:13"}]},"condition":{"arguments":[{"name":"x_1","nodeType":"YulIdentifier","src":"3960:3:13"},{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3969:2:13"},{"name":"y_1","nodeType":"YulIdentifier","src":"3973:3:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3965:3:13"},"nodeType":"YulFunctionCall","src":"3965:12:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3957:2:13"},"nodeType":"YulFunctionCall","src":"3957:21:13"},"nodeType":"YulIf","src":"3954:2:13"},{"nodeType":"YulAssignment","src":"4010:20:13","value":{"arguments":[{"name":"x_1","nodeType":"YulIdentifier","src":"4021:3:13"},{"name":"y_1","nodeType":"YulIdentifier","src":"4026:3:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4017:3:13"},"nodeType":"YulFunctionCall","src":"4017:13:13"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"4010:3:13"}]}]},"name":"checked_add_t_uint32","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"3838:1:13","type":""},{"name":"y","nodeType":"YulTypedName","src":"3841:1:13","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"3847:3:13","type":""}],"src":"3808:228:13"},{"body":{"nodeType":"YulBlock","src":"4093:116:13","statements":[{"body":{"nodeType":"YulBlock","src":"4152:22:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"4154:16:13"},"nodeType":"YulFunctionCall","src":"4154:18:13"},"nodeType":"YulExpressionStatement","src":"4154:18:13"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"4124:1:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4117:6:13"},"nodeType":"YulFunctionCall","src":"4117:9:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4110:6:13"},"nodeType":"YulFunctionCall","src":"4110:17:13"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"4132:1:13"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4143:1:13","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4139:3:13"},"nodeType":"YulFunctionCall","src":"4139:6:13"},{"name":"x","nodeType":"YulIdentifier","src":"4147:1:13"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4135:3:13"},"nodeType":"YulFunctionCall","src":"4135:14:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4129:2:13"},"nodeType":"YulFunctionCall","src":"4129:21:13"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4106:3:13"},"nodeType":"YulFunctionCall","src":"4106:45:13"},"nodeType":"YulIf","src":"4103:2:13"},{"nodeType":"YulAssignment","src":"4183:20:13","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"4198:1:13"},{"name":"y","nodeType":"YulIdentifier","src":"4201:1:13"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"4194:3:13"},"nodeType":"YulFunctionCall","src":"4194:9:13"},"variableNames":[{"name":"product","nodeType":"YulIdentifier","src":"4183:7:13"}]}]},"name":"checked_mul_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"4072:1:13","type":""},{"name":"y","nodeType":"YulTypedName","src":"4075:1:13","type":""}],"returnVariables":[{"name":"product","nodeType":"YulTypedName","src":"4081:7:13","type":""}],"src":"4041:168:13"},{"body":{"nodeType":"YulBlock","src":"4261:88:13","statements":[{"body":{"nodeType":"YulBlock","src":"4292:22:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"4294:16:13"},"nodeType":"YulFunctionCall","src":"4294:18:13"},"nodeType":"YulExpressionStatement","src":"4294:18:13"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4277:5:13"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4288:1:13","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4284:3:13"},"nodeType":"YulFunctionCall","src":"4284:6:13"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"4274:2:13"},"nodeType":"YulFunctionCall","src":"4274:17:13"},"nodeType":"YulIf","src":"4271:2:13"},{"nodeType":"YulAssignment","src":"4323:20:13","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4334:5:13"},{"kind":"number","nodeType":"YulLiteral","src":"4341:1:13","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4330:3:13"},"nodeType":"YulFunctionCall","src":"4330:13:13"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"4323:3:13"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4243:5:13","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"4253:3:13","type":""}],"src":"4214:135:13"},{"body":{"nodeType":"YulBlock","src":"4386:95:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4403:1:13","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4410:3:13","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"4415:10:13","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"4406:3:13"},"nodeType":"YulFunctionCall","src":"4406:20:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4396:6:13"},"nodeType":"YulFunctionCall","src":"4396:31:13"},"nodeType":"YulExpressionStatement","src":"4396:31:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4443:1:13","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"4446:4:13","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4436:6:13"},"nodeType":"YulFunctionCall","src":"4436:15:13"},"nodeType":"YulExpressionStatement","src":"4436:15:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4467:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4470:4:13","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4460:6:13"},"nodeType":"YulFunctionCall","src":"4460:15:13"},"nodeType":"YulExpressionStatement","src":"4460:15:13"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"4354:127:13"},{"body":{"nodeType":"YulBlock","src":"4518:95:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4535:1:13","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4542:3:13","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"4547:10:13","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"4538:3:13"},"nodeType":"YulFunctionCall","src":"4538:20:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4528:6:13"},"nodeType":"YulFunctionCall","src":"4528:31:13"},"nodeType":"YulExpressionStatement","src":"4528:31:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4575:1:13","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"4578:4:13","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4568:6:13"},"nodeType":"YulFunctionCall","src":"4568:15:13"},"nodeType":"YulExpressionStatement","src":"4568:15:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4599:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4602:4:13","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4592:6:13"},"nodeType":"YulFunctionCall","src":"4592:15:13"},"nodeType":"YulExpressionStatement","src":"4592:15:13"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"4486:127:13"},{"body":{"nodeType":"YulBlock","src":"4663:86:13","statements":[{"body":{"nodeType":"YulBlock","src":"4727:16:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4736:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4739:1:13","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4729:6:13"},"nodeType":"YulFunctionCall","src":"4729:12:13"},"nodeType":"YulExpressionStatement","src":"4729:12:13"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4686:5:13"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4697:5:13"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4712:3:13","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"4717:1:13","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"4708:3:13"},"nodeType":"YulFunctionCall","src":"4708:11:13"},{"kind":"number","nodeType":"YulLiteral","src":"4721:1:13","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4704:3:13"},"nodeType":"YulFunctionCall","src":"4704:19:13"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4693:3:13"},"nodeType":"YulFunctionCall","src":"4693:31:13"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"4683:2:13"},"nodeType":"YulFunctionCall","src":"4683:42:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4676:6:13"},"nodeType":"YulFunctionCall","src":"4676:50:13"},"nodeType":"YulIf","src":"4673:2:13"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4652:5:13","type":""}],"src":"4618:131:13"}]},"contents":"{\n    { }\n    function abi_decode_array_uint32_dyn_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let _1 := mload(offset)\n        let _2 := 0x20\n        let dst := allocate_memory(array_allocation_size_array_address_dyn(_1))\n        let dst_1 := dst\n        mstore(dst, _1)\n        dst := add(dst, _2)\n        let src := add(offset, _2)\n        if gt(add(add(offset, shl(5, _1)), _2), end) { revert(array, array) }\n        let i := array\n        for { } lt(i, _1) { i := add(i, 1) }\n        {\n            let value := mload(src)\n            if iszero(eq(value, and(value, 0xffffffff))) { revert(array, array) }\n            mstore(dst, value)\n            dst := add(dst, _2)\n            src := add(src, _2)\n        }\n        array := dst_1\n    }\n    function abi_decode_contract_ICommunityFund_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        validator_revert_address(value)\n    }\n    function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint32_$dyn_memory_ptrt_contract$_IERC20_$190t_contract$_ICommunityFund_$2006_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value0, value0) }\n        let offset := mload(headStart)\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(value0, value0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(value0, value0) }\n        let _3 := mload(_2)\n        let _4 := 0x20\n        let dst := allocate_memory(array_allocation_size_array_address_dyn(_3))\n        let dst_1 := dst\n        mstore(dst, _3)\n        dst := add(dst, _4)\n        let src := add(_2, _4)\n        if gt(add(add(_2, shl(5, _3)), _4), dataEnd) { revert(value0, value0) }\n        let i := value0\n        for { } lt(i, _3) { i := add(i, 1) }\n        {\n            let value := mload(src)\n            validator_revert_address(value)\n            mstore(dst, value)\n            dst := add(dst, _4)\n            src := add(src, _4)\n        }\n        value0 := dst_1\n        let offset_1 := mload(add(headStart, _4))\n        if gt(offset_1, _1) { revert(value1, value1) }\n        value1 := abi_decode_array_uint32_dyn_fromMemory(add(headStart, offset_1), dataEnd)\n        value2 := abi_decode_contract_ICommunityFund_fromMemory(add(headStart, 64))\n        value3 := abi_decode_contract_ICommunityFund_fromMemory(add(headStart, 96))\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_da5de935a79473774bc1a56577c1e5d9c5477e764be29dbf7e048ba86c791791__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 19)\n        mstore(add(headStart, 64), \"invalid percentages\")\n        tail := add(headStart, 96)\n    }\n    function allocate_memory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n        if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_array_address_dyn(length) -> size\n    {\n        if gt(length, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        size := add(shl(5, length), 0x20)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function checked_add_t_uint32(x, y) -> sum\n    {\n        let _1 := 0xffffffff\n        let x_1 := and(x, _1)\n        let y_1 := and(y, _1)\n        if gt(x_1, sub(_1, y_1)) { panic_error_0x11() }\n        sum := add(x_1, y_1)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(not(0), x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0)) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n}","id":13,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b5060405162001aa838038062001aa883398101604081905262000034916200045a565b838362278d004260006200004833620000f9565b60018390556002829055620000856200006e828562000149602090811b62000d4b17901c565b6002546200015e60201b62000d5e1790919060201c565b60035550508251620000a09150600490602085019062000292565b508051620000b6906005906020840190620002fc565b50620000c2816200016c565b5050600680546001600160a01b039384166001600160a01b0319918216179091556007805492909316911617905550620006769050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000620001578284620005f1565b9392505050565b6000620001578284620005ab565b6200017662000234565b6000805b8251811015620001d157828181518110620001a557634e487b7160e01b600052603260045260246000fd5b602002602001015182620001ba9190620005c6565b915080620001c88162000613565b9150506200017a565b50620f42408163ffffffff1614620002305760405162461bcd60e51b815260206004820152601360248201527f696e76616c69642070657263656e74616765730000000000000000000000000060448201526064015b60405180910390fd5b5050565b6000546001600160a01b03163314620002905760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000227565b565b828054828255906000526020600020908101928215620002ea579160200282015b82811115620002ea57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620002b3565b50620002f8929150620003a8565b5090565b82805482825590600052602060002090600701600890048101928215620002ea5791602002820160005b838211156200036c57835183826101000a81548163ffffffff021916908363ffffffff160217905550926020019260040160208160030104928301926001030262000326565b80156200039e5782816101000a81549063ffffffff02191690556004016020816003010492830192600103026200036c565b5050620002f89291505b5b80821115620002f85760008155600101620003a9565b600082601f830112620003d0578081fd5b81516020620003e9620003e38362000585565b62000552565b80838252828201915082860187848660051b890101111562000409578586fd5b855b858110156200043b57815163ffffffff8116811462000428578788fd5b845292840192908401906001016200040b565b5090979650505050505050565b805162000455816200065d565b919050565b6000806000806080858703121562000470578384fd5b84516001600160401b038082111562000487578586fd5b818701915087601f8301126200049b578586fd5b81516020620004ae620003e38362000585565b8083825282820191508286018c848660051b8901011115620004ce578a8bfd5b8a96505b84871015620004fd578051620004e8816200065d565b835260019690960195918301918301620004d2565b50918a015191985090935050508082111562000517578485fd5b506200052687828801620003bf565b935050620005376040860162000448565b9150620005476060860162000448565b905092959194509250565b604051601f8201601f191681016001600160401b03811182821017156200057d576200057d62000647565b604052919050565b60006001600160401b03821115620005a157620005a162000647565b5060051b60200190565b60008219821115620005c157620005c162000631565b500190565b600063ffffffff808316818516808303821115620005e857620005e862000631565b01949350505050565b60008160001904831182151516156200060e576200060e62000631565b500290565b60006000198214156200062a576200062a62000631565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146200067357600080fd5b50565b61142280620006866000396000f3fe60806040526004361061016e5760003560e01c80638da5cb5b116100cc578063e086e5ec1161007a578063e086e5ec14610416578063efe97d051461042b578063f2a40db814610440578063f2fde38b14610460578063f46b65ac14610480578063f4f3b20014610495578063fbccedae146104b557600080fd5b80638da5cb5b14610364578063b8b9b54914610382578063b97dd9e214610397578063bce58269146103ac578063c45ff544146103cc578063c5967c26146103ec578063c828371e1461040157600080fd5b80633f26479e116101295780633f26479e1461029057806344def48f146102a75780634585e33b146102c75780635c45f349146102e75780636a2ab602146102fc5780636e04ff0d14610321578063715018a61461034f57600080fd5b80623f619d146101b3578062f380f4146101ed5780630f3a9f651461021a5780631ed241951461023c578063398bac631461025b5780633de00c361461027057600080fd5b366101ae577fbfe611b001dfcd411432f7bf0d79b82b4b2ee81511edac123a3403c357fb972a33346040516101a492919061122f565b60405180910390a1005b600080fd5b3480156101bf57600080fd5b506101d36101ce3660046111eb565b6104ca565b60405163ffffffff90911681526020015b60405180910390f35b3480156101f957600080fd5b5060075461020d906001600160a01b031681565b6040516101e4919061121b565b34801561022657600080fd5b5061023a6102353660046111eb565b610504565b005b34801561024857600080fd5b506001545b6040519081526020016101e4565b34801561026757600080fd5b5061024d610511565b34801561027c57600080fd5b5060065461020d906001600160a01b031681565b34801561029c57600080fd5b5061024d620f424081565b3480156102b357600080fd5b5061023a6102c2366004611060565b610520565b3480156102d357600080fd5b5061023a6102e236600461117e565b61055d565b3480156102f357600080fd5b5061023a610605565b34801561030857600080fd5b5061031161061c565b60405190151581526020016101e4565b34801561032d57600080fd5b5061034161033c36600461117e565b610626565b6040516101e4929190611248565b34801561035b57600080fd5b5061023a61064d565b34801561037057600080fd5b506000546001600160a01b031661020d565b34801561038e57600080fd5b5061023a61065f565b3480156103a357600080fd5b5061024d6107c5565b3480156103b857600080fd5b5061023a6103c7366004611044565b6107eb565b3480156103d857600080fd5b5061023a6103e7366004611123565b610977565b3480156103f857600080fd5b5061024d610a22565b34801561040d57600080fd5b5060025461024d565b34801561042257600080fd5b5061023a610a44565b34801561043757600080fd5b5061024d610a89565b34801561044c57600080fd5b5061020d61045b3660046111eb565b610a93565b34801561046c57600080fd5b5061023a61047b366004611044565b610abd565b34801561048c57600080fd5b5061023a610b33565b3480156104a157600080fd5b5061023a6104b0366004611044565b610baf565b3480156104c157600080fd5b5061024d610cc3565b600581815481106104da57600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b61050c610d6a565b600155565b600061051b610dc4565b905090565b610528610d6a565b815161053b906004906020850190610ea4565b50805161054f906005906020840190610f09565b5061055981610977565b5050565b60025442116105ac5760405162461bcd60e51b8152602060048201526016602482015275115c1bd8da0e881b9bdd081cdd185c9d1959081e595d60521b60448201526064015b60405180910390fd5b6105b4610de3565b6105f55760405162461bcd60e51b8152602060048201526012602482015271115c1bd8da0e881b9bdd08185b1b1bddd95960721b60448201526064016105a3565b6105fd610b33565b505042600355565b60065461061a906001600160a01b03166107eb565b565b600061051b610de3565b60006060610632610de3565b60405180602001604052806000815250915091509250929050565b610655610d6a565b61061a6000610dfc565b600454479060005b818110156107c05760006106c6846005848154811061069657634e487b7160e01b600052603260045260246000fd5b60009182526020909120600882040154620f424060079092166004026101000a900463ffffffff16919091020490565b90506000600483815481106106eb57634e487b7160e01b600052603260045260246000fd5b60009182526020822001546040516001600160a01b039091169184919081818185875af1925050503d806000811461073f576040519150601f19603f3d011682016040523d82523d6000602084013e610744565b606091505b50509050806107ad5760405162461bcd60e51b815260206004820152602f60248201527f756e61626c6520746f2073656e64206574682c20726563697069656e74206d6160448201526e1e481a185d99481c995d995c9d1959608a1b60648201526084016105a3565b5050806107b990611390565b9050610667565b505050565b600061051b6001546107e56002546107df60025442610e4c565b90610e63565b90610e6f565b6040516370a0823160e01b81526000906001600160a01b038316906370a082319061081a90309060040161121b565b60206040518083038186803b15801561083257600080fd5b505afa158015610846573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086a9190611203565b60045490915060005b818110156109715760006108a2846005848154811061069657634e487b7160e01b600052603260045260246000fd5b9050846001600160a01b031663a9059cbb600484815481106108d457634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546040516001600160e01b031960e084901b16815261090c916001600160a01b031690859060040161122f565b602060405180830381600087803b15801561092657600080fd5b505af115801561093a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095e919061115e565b50508061096a90611390565b9050610873565b50505050565b61097f610d6a565b6000805b82518110156109d3578281815181106109ac57634e487b7160e01b600052603260045260246000fd5b6020026020010151826109bf9190611312565b9150806109cb81611390565b915050610983565b50620f42408163ffffffff16146105595760405162461bcd60e51b8152602060048201526013602482015272696e76616c69642070657263656e746167657360681b60448201526064016105a3565b600061051b610a3b600154610a35610e7b565b90610d4b565b60025490610d5e565b610a4c610d6a565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015610a86573d6000803e3d6000fd5b50565b600061051b610e7b565b60048181548110610aa357600080fd5b6000918252602090912001546001600160a01b0316905081565b610ac5610d6a565b6001600160a01b038116610b2a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105a3565b610a8681610dfc565b600754600654604051631916558760e01b81526001600160a01b0392831692631916558792610b679291169060040161121b565b600060405180830381600087803b158015610b8157600080fd5b505af1158015610b95573d6000803e3d6000fd5b505060065461061a92506001600160a01b031690506107eb565b610bb7610d6a565b806001600160a01b031663a9059cbb610bd86000546001600160a01b031690565b6040516370a0823160e01b81526001600160a01b038516906370a0823190610c0490309060040161121b565b60206040518083038186803b158015610c1c57600080fd5b505afa158015610c30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c549190611203565b6040518363ffffffff1660e01b8152600401610c7192919061122f565b602060405180830381600087803b158015610c8b57600080fd5b505af1158015610c9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610559919061115e565b6007546006546040516302e4d97960e31b81526000926001600160a01b0390811692631726cbc892610cfb929091169060040161121b565b60206040518083038186803b158015610d1357600080fd5b505afa158015610d27573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051b9190611203565b6000610d57828461135a565b9392505050565b6000610d5782846112fa565b6000546001600160a01b0316331461061a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105a3565b600061051b6001546107e5600254600354610e6390919063ffffffff16565b6000610ded610e7b565b610df56107c5565b1015905090565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600081831015610e5c5781610d57565b5090919050565b6000610d578284611379565b6000610d57828461133a565b60006003546002541415610e915761051b610dc4565b61051b6001610e9e610dc4565b90610d5e565b828054828255906000526020600020908101928215610ef9579160200282015b82811115610ef957825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610ec4565b50610f05929150610faf565b5090565b82805482825590600052602060002090600701600890048101928215610ef95791602002820160005b83821115610f7657835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302610f32565b8015610fa65782816101000a81549063ffffffff0219169055600401602081600301049283019260010302610f76565b5050610f059291505b5b80821115610f055760008155600101610fb0565b600082601f830112610fd4578081fd5b81356020610fe9610fe4836112d6565b6112a5565b80838252828201915082860187848660051b8901011115611008578586fd5b855b8581101561103757813563ffffffff81168114611025578788fd5b8452928401929084019060010161100a565b5090979650505050505050565b600060208284031215611055578081fd5b8135610d57816113d7565b60008060408385031215611072578081fd5b823567ffffffffffffffff80821115611089578283fd5b818501915085601f83011261109c578283fd5b813560206110ac610fe4836112d6565b8083825282820191508286018a848660051b89010111156110cb578788fd5b8796505b848710156110f65780356110e2816113d7565b8352600196909601959183019183016110cf565b509650508601359250508082111561110c578283fd5b5061111985828601610fc4565b9150509250929050565b600060208284031215611134578081fd5b813567ffffffffffffffff81111561114a578182fd5b61115684828501610fc4565b949350505050565b60006020828403121561116f578081fd5b81518015158114610d57578182fd5b60008060208385031215611190578182fd5b823567ffffffffffffffff808211156111a7578384fd5b818501915085601f8301126111ba578384fd5b8135818111156111c8578485fd5b8660208285010111156111d9578485fd5b60209290920196919550909350505050565b6000602082840312156111fc578081fd5b5035919050565b600060208284031215611214578081fd5b5051919050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b8215158152600060206040818401528351806040850152825b8181101561127d57858101830151858201606001528201611261565b8181111561128e5783606083870101525b50601f01601f191692909201606001949350505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156112ce576112ce6113c1565b604052919050565b600067ffffffffffffffff8211156112f0576112f06113c1565b5060051b60200190565b6000821982111561130d5761130d6113ab565b500190565b600063ffffffff808316818516808303821115611331576113316113ab565b01949350505050565b60008261135557634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611374576113746113ab565b500290565b60008282101561138b5761138b6113ab565b500390565b60006000198214156113a4576113a46113ab565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610a8657600080fdfea2646970667358221220b5a84348ef9b5c2821d46b60cb0640081c87dfe96ac0b713fe82fc1253293e7464736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1AA8 CODESIZE SUB DUP1 PUSH3 0x1AA8 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x45A JUMP JUMPDEST DUP4 DUP4 PUSH3 0x278D00 TIMESTAMP PUSH1 0x0 PUSH3 0x48 CALLER PUSH3 0xF9 JUMP JUMPDEST PUSH1 0x1 DUP4 SWAP1 SSTORE PUSH1 0x2 DUP3 SWAP1 SSTORE PUSH3 0x85 PUSH3 0x6E DUP3 DUP6 PUSH3 0x149 PUSH1 0x20 SWAP1 DUP2 SHL PUSH3 0xD4B OR SWAP1 SHR JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH3 0x15E PUSH1 0x20 SHL PUSH3 0xD5E OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x3 SSTORE POP POP DUP3 MLOAD PUSH3 0xA0 SWAP2 POP PUSH1 0x4 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x292 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0xB6 SWAP1 PUSH1 0x5 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x2FC JUMP JUMPDEST POP PUSH3 0xC2 DUP2 PUSH3 0x16C JUMP JUMPDEST POP POP PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x7 DUP1 SLOAD SWAP3 SWAP1 SWAP4 AND SWAP2 AND OR SWAP1 SSTORE POP PUSH3 0x676 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x157 DUP3 DUP5 PUSH3 0x5F1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x157 DUP3 DUP5 PUSH3 0x5AB JUMP JUMPDEST PUSH3 0x176 PUSH3 0x234 JUMP JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH3 0x1D1 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH3 0x1A5 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP3 PUSH3 0x1BA SWAP2 SWAP1 PUSH3 0x5C6 JUMP JUMPDEST SWAP2 POP DUP1 PUSH3 0x1C8 DUP2 PUSH3 0x613 JUMP JUMPDEST SWAP2 POP POP PUSH3 0x17A JUMP JUMPDEST POP PUSH3 0xF4240 DUP2 PUSH4 0xFFFFFFFF AND EQ PUSH3 0x230 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x696E76616C69642070657263656E746167657300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH3 0x290 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x227 JUMP JUMPDEST JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH3 0x2EA JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x2EA JUMPI DUP3 MLOAD DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND OR DUP3 SSTORE PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH3 0x2B3 JUMP JUMPDEST POP PUSH3 0x2F8 SWAP3 SWAP2 POP PUSH3 0x3A8 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x7 ADD PUSH1 0x8 SWAP1 DIV DUP2 ADD SWAP3 DUP3 ISZERO PUSH3 0x2EA JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD PUSH1 0x0 JUMPDEST DUP4 DUP3 GT ISZERO PUSH3 0x36C JUMPI DUP4 MLOAD DUP4 DUP3 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP SWAP3 PUSH1 0x20 ADD SWAP3 PUSH1 0x4 ADD PUSH1 0x20 DUP2 PUSH1 0x3 ADD DIV SWAP3 DUP4 ADD SWAP3 PUSH1 0x1 SUB MUL PUSH3 0x326 JUMP JUMPDEST DUP1 ISZERO PUSH3 0x39E JUMPI DUP3 DUP2 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x4 ADD PUSH1 0x20 DUP2 PUSH1 0x3 ADD DIV SWAP3 DUP4 ADD SWAP3 PUSH1 0x1 SUB MUL PUSH3 0x36C JUMP JUMPDEST POP POP PUSH3 0x2F8 SWAP3 SWAP2 POP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x2F8 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x3A9 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x3D0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH3 0x3E9 PUSH3 0x3E3 DUP4 PUSH3 0x585 JUMP JUMPDEST PUSH3 0x552 JUMP JUMPDEST DUP1 DUP4 DUP3 MSTORE DUP3 DUP3 ADD SWAP2 POP DUP3 DUP7 ADD DUP8 DUP5 DUP7 PUSH1 0x5 SHL DUP10 ADD ADD GT ISZERO PUSH3 0x409 JUMPI DUP6 DUP7 REVERT JUMPDEST DUP6 JUMPDEST DUP6 DUP2 LT ISZERO PUSH3 0x43B JUMPI DUP2 MLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH3 0x428 JUMPI DUP8 DUP9 REVERT JUMPDEST DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH3 0x40B JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH3 0x455 DUP2 PUSH3 0x65D JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x470 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x487 JUMPI DUP6 DUP7 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x49B JUMPI DUP6 DUP7 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH3 0x4AE PUSH3 0x3E3 DUP4 PUSH3 0x585 JUMP JUMPDEST DUP1 DUP4 DUP3 MSTORE DUP3 DUP3 ADD SWAP2 POP DUP3 DUP7 ADD DUP13 DUP5 DUP7 PUSH1 0x5 SHL DUP10 ADD ADD GT ISZERO PUSH3 0x4CE JUMPI DUP11 DUP12 REVERT JUMPDEST DUP11 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH3 0x4FD JUMPI DUP1 MLOAD PUSH3 0x4E8 DUP2 PUSH3 0x65D JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH3 0x4D2 JUMP JUMPDEST POP SWAP2 DUP11 ADD MLOAD SWAP2 SWAP9 POP SWAP1 SWAP4 POP POP POP DUP1 DUP3 GT ISZERO PUSH3 0x517 JUMPI DUP5 DUP6 REVERT JUMPDEST POP PUSH3 0x526 DUP8 DUP3 DUP9 ADD PUSH3 0x3BF JUMP JUMPDEST SWAP4 POP POP PUSH3 0x537 PUSH1 0x40 DUP7 ADD PUSH3 0x448 JUMP JUMPDEST SWAP2 POP PUSH3 0x547 PUSH1 0x60 DUP7 ADD PUSH3 0x448 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH3 0x57D JUMPI PUSH3 0x57D PUSH3 0x647 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH3 0x5A1 JUMPI PUSH3 0x5A1 PUSH3 0x647 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH3 0x5C1 JUMPI PUSH3 0x5C1 PUSH3 0x631 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH3 0x5E8 JUMPI PUSH3 0x5E8 PUSH3 0x631 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH3 0x60E JUMPI PUSH3 0x60E PUSH3 0x631 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH3 0x62A JUMPI PUSH3 0x62A PUSH3 0x631 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x673 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x1422 DUP1 PUSH3 0x686 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x16E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0xCC JUMPI DUP1 PUSH4 0xE086E5EC GT PUSH2 0x7A JUMPI DUP1 PUSH4 0xE086E5EC EQ PUSH2 0x416 JUMPI DUP1 PUSH4 0xEFE97D05 EQ PUSH2 0x42B JUMPI DUP1 PUSH4 0xF2A40DB8 EQ PUSH2 0x440 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x460 JUMPI DUP1 PUSH4 0xF46B65AC EQ PUSH2 0x480 JUMPI DUP1 PUSH4 0xF4F3B200 EQ PUSH2 0x495 JUMPI DUP1 PUSH4 0xFBCCEDAE EQ PUSH2 0x4B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x364 JUMPI DUP1 PUSH4 0xB8B9B549 EQ PUSH2 0x382 JUMPI DUP1 PUSH4 0xB97DD9E2 EQ PUSH2 0x397 JUMPI DUP1 PUSH4 0xBCE58269 EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0xC45FF544 EQ PUSH2 0x3CC JUMPI DUP1 PUSH4 0xC5967C26 EQ PUSH2 0x3EC JUMPI DUP1 PUSH4 0xC828371E EQ PUSH2 0x401 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3F26479E GT PUSH2 0x129 JUMPI DUP1 PUSH4 0x3F26479E EQ PUSH2 0x290 JUMPI DUP1 PUSH4 0x44DEF48F EQ PUSH2 0x2A7 JUMPI DUP1 PUSH4 0x4585E33B EQ PUSH2 0x2C7 JUMPI DUP1 PUSH4 0x5C45F349 EQ PUSH2 0x2E7 JUMPI DUP1 PUSH4 0x6A2AB602 EQ PUSH2 0x2FC JUMPI DUP1 PUSH4 0x6E04FF0D EQ PUSH2 0x321 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x34F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH3 0x3F619D EQ PUSH2 0x1B3 JUMPI DUP1 PUSH3 0xF380F4 EQ PUSH2 0x1ED JUMPI DUP1 PUSH4 0xF3A9F65 EQ PUSH2 0x21A JUMPI DUP1 PUSH4 0x1ED24195 EQ PUSH2 0x23C JUMPI DUP1 PUSH4 0x398BAC63 EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0x3DE00C36 EQ PUSH2 0x270 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLDATASIZE PUSH2 0x1AE JUMPI PUSH32 0xBFE611B001DFCD411432F7BF0D79B82B4B2EE81511EDAC123A3403C357FB972A CALLER CALLVALUE PUSH1 0x40 MLOAD PUSH2 0x1A4 SWAP3 SWAP2 SWAP1 PUSH2 0x122F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D3 PUSH2 0x1CE CALLDATASIZE PUSH1 0x4 PUSH2 0x11EB JUMP JUMPDEST PUSH2 0x4CA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x7 SLOAD PUSH2 0x20D SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E4 SWAP2 SWAP1 PUSH2 0x121B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x226 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH2 0x235 CALLDATASIZE PUSH1 0x4 PUSH2 0x11EB JUMP JUMPDEST PUSH2 0x504 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x248 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1E4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x267 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24D PUSH2 0x511 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x6 SLOAD PUSH2 0x20D SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24D PUSH3 0xF4240 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH2 0x2C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1060 JUMP JUMPDEST PUSH2 0x520 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH2 0x2E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x117E JUMP JUMPDEST PUSH2 0x55D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH2 0x605 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x308 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x311 PUSH2 0x61C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1E4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x341 PUSH2 0x33C CALLDATASIZE PUSH1 0x4 PUSH2 0x117E JUMP JUMPDEST PUSH2 0x626 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E4 SWAP3 SWAP2 SWAP1 PUSH2 0x1248 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH2 0x64D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x370 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x20D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x38E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH2 0x65F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24D PUSH2 0x7C5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH2 0x3C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1044 JUMP JUMPDEST PUSH2 0x7EB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH2 0x3E7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1123 JUMP JUMPDEST PUSH2 0x977 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24D PUSH2 0xA22 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x2 SLOAD PUSH2 0x24D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x422 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH2 0xA44 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x437 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24D PUSH2 0xA89 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D PUSH2 0x45B CALLDATASIZE PUSH1 0x4 PUSH2 0x11EB JUMP JUMPDEST PUSH2 0xA93 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH2 0x47B CALLDATASIZE PUSH1 0x4 PUSH2 0x1044 JUMP JUMPDEST PUSH2 0xABD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x48C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH2 0xB33 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH2 0x4B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x1044 JUMP JUMPDEST PUSH2 0xBAF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24D PUSH2 0xCC3 JUMP JUMPDEST PUSH1 0x5 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x4DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x8 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x4 MUL SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x50C PUSH2 0xD6A JUMP JUMPDEST PUSH1 0x1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51B PUSH2 0xDC4 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x528 PUSH2 0xD6A JUMP JUMPDEST DUP2 MLOAD PUSH2 0x53B SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0xEA4 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x54F SWAP1 PUSH1 0x5 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0xF09 JUMP JUMPDEST POP PUSH2 0x559 DUP2 PUSH2 0x977 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD TIMESTAMP GT PUSH2 0x5AC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x115C1BD8DA0E881B9BDD081CDD185C9D1959081E595D PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x5B4 PUSH2 0xDE3 JUMP JUMPDEST PUSH2 0x5F5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x115C1BD8DA0E881B9BDD08185B1B1BDDD959 PUSH1 0x72 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x5A3 JUMP JUMPDEST PUSH2 0x5FD PUSH2 0xB33 JUMP JUMPDEST POP POP TIMESTAMP PUSH1 0x3 SSTORE JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0x61A SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7EB JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51B PUSH2 0xDE3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x632 PUSH2 0xDE3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x655 PUSH2 0xD6A JUMP JUMPDEST PUSH2 0x61A PUSH1 0x0 PUSH2 0xDFC JUMP JUMPDEST PUSH1 0x4 SLOAD SELFBALANCE SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x7C0 JUMPI PUSH1 0x0 PUSH2 0x6C6 DUP5 PUSH1 0x5 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x696 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x8 DUP3 DIV ADD SLOAD PUSH3 0xF4240 PUSH1 0x7 SWAP1 SWAP3 AND PUSH1 0x4 MUL PUSH2 0x100 EXP SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP2 SWAP1 SWAP2 MUL DIV SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x4 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x6EB JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 DUP5 SWAP2 SWAP1 DUP2 DUP2 DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x73F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x744 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x7AD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x756E61626C6520746F2073656E64206574682C20726563697069656E74206D61 PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x1E481A185D99481C995D995C9D1959 PUSH1 0x8A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5A3 JUMP JUMPDEST POP POP DUP1 PUSH2 0x7B9 SWAP1 PUSH2 0x1390 JUMP JUMPDEST SWAP1 POP PUSH2 0x667 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51B PUSH1 0x1 SLOAD PUSH2 0x7E5 PUSH1 0x2 SLOAD PUSH2 0x7DF PUSH1 0x2 SLOAD TIMESTAMP PUSH2 0xE4C JUMP JUMPDEST SWAP1 PUSH2 0xE63 JUMP JUMPDEST SWAP1 PUSH2 0xE6F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x81A SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x121B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x832 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x846 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 0x86A SWAP2 SWAP1 PUSH2 0x1203 JUMP JUMPDEST PUSH1 0x4 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x971 JUMPI PUSH1 0x0 PUSH2 0x8A2 DUP5 PUSH1 0x5 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x696 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0x4 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x8D4 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH2 0x90C SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x122F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x926 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x93A 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 0x95E SWAP2 SWAP1 PUSH2 0x115E JUMP JUMPDEST POP POP DUP1 PUSH2 0x96A SWAP1 PUSH2 0x1390 JUMP JUMPDEST SWAP1 POP PUSH2 0x873 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x97F PUSH2 0xD6A JUMP JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x9D3 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x9AC JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP3 PUSH2 0x9BF SWAP2 SWAP1 PUSH2 0x1312 JUMP JUMPDEST SWAP2 POP DUP1 PUSH2 0x9CB DUP2 PUSH2 0x1390 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x983 JUMP JUMPDEST POP PUSH3 0xF4240 DUP2 PUSH4 0xFFFFFFFF AND EQ PUSH2 0x559 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x696E76616C69642070657263656E7461676573 PUSH1 0x68 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x5A3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51B PUSH2 0xA3B PUSH1 0x1 SLOAD PUSH2 0xA35 PUSH2 0xE7B JUMP JUMPDEST SWAP1 PUSH2 0xD4B JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 PUSH2 0xD5E JUMP JUMPDEST PUSH2 0xA4C PUSH2 0xD6A JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 SELFBALANCE DUP1 ISZERO PUSH2 0x8FC MUL SWAP3 SWAP1 SWAP2 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0xA86 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51B PUSH2 0xE7B JUMP JUMPDEST PUSH1 0x4 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0xAA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH2 0xAC5 PUSH2 0xD6A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xB2A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5A3 JUMP JUMPDEST PUSH2 0xA86 DUP2 PUSH2 0xDFC JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH4 0x19165587 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 PUSH4 0x19165587 SWAP3 PUSH2 0xB67 SWAP3 SWAP2 AND SWAP1 PUSH1 0x4 ADD PUSH2 0x121B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB95 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x6 SLOAD PUSH2 0x61A SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH2 0x7EB JUMP JUMPDEST PUSH2 0xBB7 PUSH2 0xD6A JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB PUSH2 0xBD8 PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xC04 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x121B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC30 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 0xC54 SWAP2 SWAP1 PUSH2 0x1203 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC71 SWAP3 SWAP2 SWAP1 PUSH2 0x122F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC9F 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 0x559 SWAP2 SWAP1 PUSH2 0x115E JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH4 0x2E4D979 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP3 PUSH4 0x1726CBC8 SWAP3 PUSH2 0xCFB SWAP3 SWAP1 SWAP2 AND SWAP1 PUSH1 0x4 ADD PUSH2 0x121B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD27 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 0x51B SWAP2 SWAP1 PUSH2 0x1203 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD57 DUP3 DUP5 PUSH2 0x135A JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD57 DUP3 DUP5 PUSH2 0x12FA JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x61A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x5A3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51B PUSH1 0x1 SLOAD PUSH2 0x7E5 PUSH1 0x2 SLOAD PUSH1 0x3 SLOAD PUSH2 0xE63 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDED PUSH2 0xE7B JUMP JUMPDEST PUSH2 0xDF5 PUSH2 0x7C5 JUMP JUMPDEST LT ISZERO SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT ISZERO PUSH2 0xE5C JUMPI DUP2 PUSH2 0xD57 JUMP JUMPDEST POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD57 DUP3 DUP5 PUSH2 0x1379 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD57 DUP3 DUP5 PUSH2 0x133A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 SLOAD PUSH1 0x2 SLOAD EQ ISZERO PUSH2 0xE91 JUMPI PUSH2 0x51B PUSH2 0xDC4 JUMP JUMPDEST PUSH2 0x51B PUSH1 0x1 PUSH2 0xE9E PUSH2 0xDC4 JUMP JUMPDEST SWAP1 PUSH2 0xD5E JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0xEF9 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xEF9 JUMPI DUP3 MLOAD DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND OR DUP3 SSTORE PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0xEC4 JUMP JUMPDEST POP PUSH2 0xF05 SWAP3 SWAP2 POP PUSH2 0xFAF JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x7 ADD PUSH1 0x8 SWAP1 DIV DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0xEF9 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD PUSH1 0x0 JUMPDEST DUP4 DUP3 GT ISZERO PUSH2 0xF76 JUMPI DUP4 MLOAD DUP4 DUP3 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP SWAP3 PUSH1 0x20 ADD SWAP3 PUSH1 0x4 ADD PUSH1 0x20 DUP2 PUSH1 0x3 ADD DIV SWAP3 DUP4 ADD SWAP3 PUSH1 0x1 SUB MUL PUSH2 0xF32 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xFA6 JUMPI DUP3 DUP2 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x4 ADD PUSH1 0x20 DUP2 PUSH1 0x3 ADD DIV SWAP3 DUP4 ADD SWAP3 PUSH1 0x1 SUB MUL PUSH2 0xF76 JUMP JUMPDEST POP POP PUSH2 0xF05 SWAP3 SWAP2 POP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xF05 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xFB0 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xFD4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0xFE9 PUSH2 0xFE4 DUP4 PUSH2 0x12D6 JUMP JUMPDEST PUSH2 0x12A5 JUMP JUMPDEST DUP1 DUP4 DUP3 MSTORE DUP3 DUP3 ADD SWAP2 POP DUP3 DUP7 ADD DUP8 DUP5 DUP7 PUSH1 0x5 SHL DUP10 ADD ADD GT ISZERO PUSH2 0x1008 JUMPI DUP6 DUP7 REVERT JUMPDEST DUP6 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x1037 JUMPI DUP2 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1025 JUMPI DUP8 DUP9 REVERT JUMPDEST DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x100A JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1055 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xD57 DUP2 PUSH2 0x13D7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1072 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1089 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x109C JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x10AC PUSH2 0xFE4 DUP4 PUSH2 0x12D6 JUMP JUMPDEST DUP1 DUP4 DUP3 MSTORE DUP3 DUP3 ADD SWAP2 POP DUP3 DUP7 ADD DUP11 DUP5 DUP7 PUSH1 0x5 SHL DUP10 ADD ADD GT ISZERO PUSH2 0x10CB JUMPI DUP8 DUP9 REVERT JUMPDEST DUP8 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x10F6 JUMPI DUP1 CALLDATALOAD PUSH2 0x10E2 DUP2 PUSH2 0x13D7 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x10CF JUMP JUMPDEST POP SWAP7 POP POP DUP7 ADD CALLDATALOAD SWAP3 POP POP DUP1 DUP3 GT ISZERO PUSH2 0x110C JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x1119 DUP6 DUP3 DUP7 ADD PUSH2 0xFC4 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1134 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x114A JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1156 DUP5 DUP3 DUP6 ADD PUSH2 0xFC4 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x116F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xD57 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1190 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x11A7 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x11BA JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x11C8 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x11D9 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11FC JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1214 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 PUSH1 0x40 DUP2 DUP5 ADD MSTORE DUP4 MLOAD DUP1 PUSH1 0x40 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x127D JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x60 ADD MSTORE DUP3 ADD PUSH2 0x1261 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x128E JUMPI DUP4 PUSH1 0x60 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x60 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x12CE JUMPI PUSH2 0x12CE PUSH2 0x13C1 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x12F0 JUMPI PUSH2 0x12F0 PUSH2 0x13C1 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x130D JUMPI PUSH2 0x130D PUSH2 0x13AB JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x1331 JUMPI PUSH2 0x1331 PUSH2 0x13AB JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1355 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 DUP2 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x1374 JUMPI PUSH2 0x1374 PUSH2 0x13AB JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x138B JUMPI PUSH2 0x138B PUSH2 0x13AB JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x13A4 JUMPI PUSH2 0x13A4 PUSH2 0x13AB JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xA86 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB5 0xA8 NUMBER 0x48 0xEF SWAP12 0x5C 0x28 0x21 0xD4 PUSH12 0x60CB0640081C87DFE96AC0B7 SGT INVALID DUP3 0xFC SLT MSTORE8 0x29 RETURNDATACOPY PUSH21 0x64736F6C6343000804003300000000000000000000 ","sourceMap":"730:1096:11:-:0;;;877:314;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1049:9;1060:19;1095:10;1107:15;1124:1;936:32:0;719:10:5;936:18:0;:32::i;:::-;639:6:12;:16;;;665:9;:22;;;714:38;728:23;:11;639:16;728:15;;;;;;;:23;;:::i;:::-;714:9;;:13;;;;;;:38;;;;:::i;:::-;697:14;:55;-1:-1:-1;;572:20:10;;;;-1:-1:-1;572:8:10;;:20;;;;;:::i;:::-;-1:-1:-1;602:40:10;;;;:18;;:40;;;;;:::i;:::-;-1:-1:-1;652:37:10;669:19;652:16;:37::i;:::-;-1:-1:-1;;1141:4:11::2;:12:::0;;-1:-1:-1;;;;;1141:12:11;;::::2;-1:-1:-1::0;;;;;;1141:12:11;;::::2;;::::0;;;1163:13:::2;:21:::0;;;;;::::2;::::0;::::2;;::::0;;-1:-1:-1;730:1096:11;;-1:-1:-1;730:1096:11;2433:187:0;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:0;;;-1:-1:-1;;;;;;2541:17:0;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2433:187;;:::o;3465:96:7:-;3523:7;3549:5;3553:1;3549;:5;:::i;:::-;3542:12;3465:96;-1:-1:-1;;;3465:96:7:o;2755:::-;2813:7;2839:5;2843:1;2839;:5;:::i;2276:329:10:-;1094:13:0;:11;:13::i;:::-;2399:10:10::1;2428:9:::0;2423:111:::1;2447:19;:26;2443:1;:30;2423:111;;;2501:19;2521:1;2501:22;;;;;;-1:-1:-1::0;;;2501:22:10::1;;;;;;;;;;;;;;;2494:29;;;;;:::i;:::-;::::0;-1:-1:-1;2475:3:10;::::1;::::0;::::1;:::i;:::-;;;;2423:111;;;;400:3;2551;:23;;;2543:55;;;::::0;-1:-1:-1;;;2543:55:10;;3061:2:13;2543:55:10::1;::::0;::::1;3043:21:13::0;3100:2;3080:18;;;3073:30;3139:21;3119:18;;;3112:49;3178:18;;2543:55:10::1;;;;;;;;;1117:1:0;2276:329:10::0;:::o;1359:130:0:-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:0;719:10:5;1422:23:0;1414:68;;;;-1:-1:-1;;;1414:68:0;;2700:2:13;1414:68:0;;;2682:21:13;;;2719:18;;;2712:30;2778:34;2758:18;;;2751:62;2830:18;;1414:68:0;2672:182:13;1414:68:0;1359:130::o;730:1096:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;730:1096:11;-1:-1:-1;;;;;730:1096:11;;;;;;;;;;;-1:-1:-1;730:1096:11;;;;;;;-1:-1:-1;730:1096:11;;;-1:-1:-1;730:1096:11;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;730:1096:11;;;-1:-1:-1;730:1096:11;;;;;;;;;;;;;;;14:802:13;78:5;131:3;124:4;116:6;112:17;108:27;98:2;;153:5;146;139:20;98:2;186:6;180:13;212:4;236:60;252:43;292:2;252:43;:::i;:::-;236:60;:::i;:::-;318:3;342:2;337:3;330:15;370:2;365:3;361:12;354:19;;405:2;397:6;393:15;457:3;452:2;446;443:1;439:10;431:6;427:23;423:32;420:41;417:2;;;478:5;471;464:20;417:2;504:5;518:269;532:2;529:1;526:9;518:269;;;596:3;590:10;644;637:5;633:22;626:5;623:33;613:2;;674:5;667;660:20;613:2;695:18;;733:12;;;;765;;;;550:1;543:9;518:269;;;-1:-1:-1;805:5:13;;88:728;-1:-1:-1;;;;;;;88:728:13:o;821:154::-;916:13;;938:31;916:13;938:31;:::i;:::-;897:78;;;:::o;980:1513::-;1163:6;1171;1179;1187;1240:3;1228:9;1219:7;1215:23;1211:33;1208:2;;;1262:6;1254;1247:22;1208:2;1294:16;;-1:-1:-1;;;;;1359:14:13;;;1356:2;;;1391:6;1383;1376:22;1356:2;1434:6;1423:9;1419:22;1409:32;;1479:7;1472:4;1468:2;1464:13;1460:27;1450:2;;1506:6;1498;1491:22;1450:2;1540;1534:9;1562:4;1586:60;1602:43;1642:2;1602:43;:::i;1586:60::-;1668:3;1692:2;1687:3;1680:15;1720:2;1715:3;1711:12;1704:19;;1751:2;1747;1743:11;1799:7;1794:2;1788;1785:1;1781:10;1777:2;1773:19;1769:28;1766:41;1763:2;;;1825:6;1817;1810:22;1763:2;1852:6;1843:15;;1867:231;1881:2;1878:1;1875:9;1867:231;;;1945:3;1939:10;1962:31;1987:5;1962:31;:::i;:::-;2006:18;;1899:1;1892:9;;;;;2044:12;;;;2076;;1867:231;;;-1:-1:-1;2153:18:13;;;2147:25;2117:5;;-1:-1:-1;2147:25:13;;-1:-1:-1;;;2184:16:13;;;2181:2;;;2218:6;2210;2203:22;2181:2;;2246:73;2311:7;2300:8;2289:9;2285:24;2246:73;:::i;:::-;2236:83;;;2338:65;2399:2;2388:9;2384:18;2338:65;:::i;:::-;2328:75;;2422:65;2483:2;2472:9;2468:18;2422:65;:::i;:::-;2412:75;;1198:1295;;;;;;;:::o;3207:275::-;3278:2;3272:9;3343:2;3324:13;;-1:-1:-1;;3320:27:13;3308:40;;-1:-1:-1;;;;;3363:34:13;;3399:22;;;3360:62;3357:2;;;3425:18;;:::i;:::-;3461:2;3454:22;3252:230;;-1:-1:-1;3252:230:13:o;3487:183::-;3547:4;-1:-1:-1;;;;;3569:30:13;;3566:2;;;3602:18;;:::i;:::-;-1:-1:-1;3647:1:13;3643:14;3659:4;3639:25;;3556:114::o;3675:128::-;3715:3;3746:1;3742:6;3739:1;3736:13;3733:2;;;3752:18;;:::i;:::-;-1:-1:-1;3788:9:13;;3723:80::o;3808:228::-;3847:3;3875:10;3912:2;3909:1;3905:10;3942:2;3939:1;3935:10;3973:3;3969:2;3965:12;3960:3;3957:21;3954:2;;;3981:18;;:::i;:::-;4017:13;;3855:181;-1:-1:-1;;;;3855:181:13:o;4041:168::-;4081:7;4147:1;4143;4139:6;4135:14;4132:1;4129:21;4124:1;4117:9;4110:17;4106:45;4103:2;;;4154:18;;:::i;:::-;-1:-1:-1;4194:9:13;;4093:116::o;4214:135::-;4253:3;-1:-1:-1;;4274:17:13;;4271:2;;;4294:18;;:::i;:::-;-1:-1:-1;4341:1:13;4330:13;;4261:88::o;4354:127::-;4415:10;4410:3;4406:20;4403:1;4396:31;4446:4;4443:1;4436:15;4470:4;4467:1;4460:15;4486:127;4547:10;4542:3;4538:20;4535:1;4528:31;4578:4;4575:1;4568:15;4602:4;4599:1;4592:15;4618:131;-1:-1:-1;;;;;4693:31:13;;4683:42;;4673:2;;4739:1;4736;4729:12;4673:2;4663:86;:::o;:::-;730:1096:11;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:10893:13","statements":[{"nodeType":"YulBlock","src":"6:3:13","statements":[]},{"body":{"nodeType":"YulBlock","src":"77:742:13","statements":[{"body":{"nodeType":"YulBlock","src":"126:24:13","statements":[{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"135:5:13"},{"name":"array","nodeType":"YulIdentifier","src":"142:5:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"128:6:13"},"nodeType":"YulFunctionCall","src":"128:20:13"},"nodeType":"YulExpressionStatement","src":"128:20:13"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"105:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"113:4:13","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"101:3:13"},"nodeType":"YulFunctionCall","src":"101:17:13"},{"name":"end","nodeType":"YulIdentifier","src":"120:3:13"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"97:3:13"},"nodeType":"YulFunctionCall","src":"97:27:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"90:6:13"},"nodeType":"YulFunctionCall","src":"90:35:13"},"nodeType":"YulIf","src":"87:2:13"},{"nodeType":"YulVariableDeclaration","src":"159:30:13","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"182:6:13"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"169:12:13"},"nodeType":"YulFunctionCall","src":"169:20:13"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"163:2:13","type":""}]},{"nodeType":"YulVariableDeclaration","src":"198:14:13","value":{"kind":"number","nodeType":"YulLiteral","src":"208:4:13","type":"","value":"0x20"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"202:2:13","type":""}]},{"nodeType":"YulVariableDeclaration","src":"221:71:13","value":{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"288:2:13"}],"functionName":{"name":"array_allocation_size_array_address_dyn","nodeType":"YulIdentifier","src":"248:39:13"},"nodeType":"YulFunctionCall","src":"248:43:13"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"232:15:13"},"nodeType":"YulFunctionCall","src":"232:60:13"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"225:3:13","type":""}]},{"nodeType":"YulVariableDeclaration","src":"301:16:13","value":{"name":"dst","nodeType":"YulIdentifier","src":"314:3:13"},"variables":[{"name":"dst_1","nodeType":"YulTypedName","src":"305:5:13","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"333:3:13"},{"name":"_1","nodeType":"YulIdentifier","src":"338:2:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"326:6:13"},"nodeType":"YulFunctionCall","src":"326:15:13"},"nodeType":"YulExpressionStatement","src":"326:15:13"},{"nodeType":"YulAssignment","src":"350:19:13","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"361:3:13"},{"name":"_2","nodeType":"YulIdentifier","src":"366:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"357:3:13"},"nodeType":"YulFunctionCall","src":"357:12:13"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"350:3:13"}]},{"nodeType":"YulVariableDeclaration","src":"378:26:13","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"393:6:13"},{"name":"_2","nodeType":"YulIdentifier","src":"401:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"389:3:13"},"nodeType":"YulFunctionCall","src":"389:15:13"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"382:3:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"458:24:13","statements":[{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"467:5:13"},{"name":"array","nodeType":"YulIdentifier","src":"474:5:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"460:6:13"},"nodeType":"YulFunctionCall","src":"460:20:13"},"nodeType":"YulExpressionStatement","src":"460:20:13"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"427:6:13"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"439:1:13","type":"","value":"5"},{"name":"_1","nodeType":"YulIdentifier","src":"442:2:13"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"435:3:13"},"nodeType":"YulFunctionCall","src":"435:10:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"423:3:13"},"nodeType":"YulFunctionCall","src":"423:23:13"},{"name":"_2","nodeType":"YulIdentifier","src":"448:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"419:3:13"},"nodeType":"YulFunctionCall","src":"419:32:13"},{"name":"end","nodeType":"YulIdentifier","src":"453:3:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"416:2:13"},"nodeType":"YulFunctionCall","src":"416:41:13"},"nodeType":"YulIf","src":"413:2:13"},{"nodeType":"YulVariableDeclaration","src":"491:14:13","value":{"name":"array","nodeType":"YulIdentifier","src":"500:5:13"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"495:1:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"559:231:13","statements":[{"nodeType":"YulVariableDeclaration","src":"573:30:13","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"599:3:13"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"586:12:13"},"nodeType":"YulFunctionCall","src":"586:17:13"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"577:5:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"661:24:13","statements":[{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"670:5:13"},{"name":"array","nodeType":"YulIdentifier","src":"677:5:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"663:6:13"},"nodeType":"YulFunctionCall","src":"663:20:13"},"nodeType":"YulExpressionStatement","src":"663:20:13"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"629:5:13"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"640:5:13"},{"kind":"number","nodeType":"YulLiteral","src":"647:10:13","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"636:3:13"},"nodeType":"YulFunctionCall","src":"636:22:13"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"626:2:13"},"nodeType":"YulFunctionCall","src":"626:33:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"619:6:13"},"nodeType":"YulFunctionCall","src":"619:41:13"},"nodeType":"YulIf","src":"616:2:13"},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"705:3:13"},{"name":"value","nodeType":"YulIdentifier","src":"710:5:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"698:6:13"},"nodeType":"YulFunctionCall","src":"698:18:13"},"nodeType":"YulExpressionStatement","src":"698:18:13"},{"nodeType":"YulAssignment","src":"729:19:13","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"740:3:13"},{"name":"_2","nodeType":"YulIdentifier","src":"745:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"736:3:13"},"nodeType":"YulFunctionCall","src":"736:12:13"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"729:3:13"}]},{"nodeType":"YulAssignment","src":"761:19:13","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"772:3:13"},{"name":"_2","nodeType":"YulIdentifier","src":"777:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"768:3:13"},"nodeType":"YulFunctionCall","src":"768:12:13"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"761:3:13"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"525:1:13"},{"name":"_1","nodeType":"YulIdentifier","src":"528:2:13"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"522:2:13"},"nodeType":"YulFunctionCall","src":"522:9:13"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"532:18:13","statements":[{"nodeType":"YulAssignment","src":"534:14:13","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"543:1:13"},{"kind":"number","nodeType":"YulLiteral","src":"546:1:13","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"539:3:13"},"nodeType":"YulFunctionCall","src":"539:9:13"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"534:1:13"}]}]},"pre":{"nodeType":"YulBlock","src":"518:3:13","statements":[]},"src":"514:276:13"},{"nodeType":"YulAssignment","src":"799:14:13","value":{"name":"dst_1","nodeType":"YulIdentifier","src":"808:5:13"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"799:5:13"}]}]},"name":"abi_decode_array_uint32_dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"51:6:13","type":""},{"name":"end","nodeType":"YulTypedName","src":"59:3:13","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"67:5:13","type":""}],"src":"14:805:13"},{"body":{"nodeType":"YulBlock","src":"894:187:13","statements":[{"body":{"nodeType":"YulBlock","src":"940:26:13","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"949:6:13"},{"name":"value0","nodeType":"YulIdentifier","src":"957:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"942:6:13"},"nodeType":"YulFunctionCall","src":"942:22:13"},"nodeType":"YulExpressionStatement","src":"942:22:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"915:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"924:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"911:3:13"},"nodeType":"YulFunctionCall","src":"911:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"936:2:13","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"907:3:13"},"nodeType":"YulFunctionCall","src":"907:32:13"},"nodeType":"YulIf","src":"904:2:13"},{"nodeType":"YulVariableDeclaration","src":"975:36:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1001:9:13"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"988:12:13"},"nodeType":"YulFunctionCall","src":"988:23:13"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"979:5:13","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1045:5:13"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"1020:24:13"},"nodeType":"YulFunctionCall","src":"1020:31:13"},"nodeType":"YulExpressionStatement","src":"1020:31:13"},{"nodeType":"YulAssignment","src":"1060:15:13","value":{"name":"value","nodeType":"YulIdentifier","src":"1070:5:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1060:6:13"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"860:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"871:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"883:6:13","type":""}],"src":"824:257:13"},{"body":{"nodeType":"YulBlock","src":"1222:1143:13","statements":[{"body":{"nodeType":"YulBlock","src":"1268:26:13","statements":[{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"1277:6:13"},{"name":"value1","nodeType":"YulIdentifier","src":"1285:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1270:6:13"},"nodeType":"YulFunctionCall","src":"1270:22:13"},"nodeType":"YulExpressionStatement","src":"1270:22:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1243:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"1252:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1239:3:13"},"nodeType":"YulFunctionCall","src":"1239:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"1264:2:13","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1235:3:13"},"nodeType":"YulFunctionCall","src":"1235:32:13"},"nodeType":"YulIf","src":"1232:2:13"},{"nodeType":"YulVariableDeclaration","src":"1303:37:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1330:9:13"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1317:12:13"},"nodeType":"YulFunctionCall","src":"1317:23:13"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1307:6:13","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1349:28:13","value":{"kind":"number","nodeType":"YulLiteral","src":"1359:18:13","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1353:2:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"1404:26:13","statements":[{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"1413:6:13"},{"name":"value1","nodeType":"YulIdentifier","src":"1421:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1406:6:13"},"nodeType":"YulFunctionCall","src":"1406:22:13"},"nodeType":"YulExpressionStatement","src":"1406:22:13"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1392:6:13"},{"name":"_1","nodeType":"YulIdentifier","src":"1400:2:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1389:2:13"},"nodeType":"YulFunctionCall","src":"1389:14:13"},"nodeType":"YulIf","src":"1386:2:13"},{"nodeType":"YulVariableDeclaration","src":"1439:32:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1453:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"1464:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1449:3:13"},"nodeType":"YulFunctionCall","src":"1449:22:13"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"1443:2:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"1519:26:13","statements":[{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"1528:6:13"},{"name":"value1","nodeType":"YulIdentifier","src":"1536:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1521:6:13"},"nodeType":"YulFunctionCall","src":"1521:22:13"},"nodeType":"YulExpressionStatement","src":"1521:22:13"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1498:2:13"},{"kind":"number","nodeType":"YulLiteral","src":"1502:4:13","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1494:3:13"},"nodeType":"YulFunctionCall","src":"1494:13:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1509:7:13"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1490:3:13"},"nodeType":"YulFunctionCall","src":"1490:27:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1483:6:13"},"nodeType":"YulFunctionCall","src":"1483:35:13"},"nodeType":"YulIf","src":"1480:2:13"},{"nodeType":"YulVariableDeclaration","src":"1554:26:13","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1577:2:13"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1564:12:13"},"nodeType":"YulFunctionCall","src":"1564:16:13"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"1558:2:13","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1589:14:13","value":{"kind":"number","nodeType":"YulLiteral","src":"1599:4:13","type":"","value":"0x20"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"1593:2:13","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1612:71:13","value":{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"1679:2:13"}],"functionName":{"name":"array_allocation_size_array_address_dyn","nodeType":"YulIdentifier","src":"1639:39:13"},"nodeType":"YulFunctionCall","src":"1639:43:13"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"1623:15:13"},"nodeType":"YulFunctionCall","src":"1623:60:13"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"1616:3:13","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1692:16:13","value":{"name":"dst","nodeType":"YulIdentifier","src":"1705:3:13"},"variables":[{"name":"dst_1","nodeType":"YulTypedName","src":"1696:5:13","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1724:3:13"},{"name":"_3","nodeType":"YulIdentifier","src":"1729:2:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1717:6:13"},"nodeType":"YulFunctionCall","src":"1717:15:13"},"nodeType":"YulExpressionStatement","src":"1717:15:13"},{"nodeType":"YulAssignment","src":"1741:19:13","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"1752:3:13"},{"name":"_4","nodeType":"YulIdentifier","src":"1757:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1748:3:13"},"nodeType":"YulFunctionCall","src":"1748:12:13"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"1741:3:13"}]},{"nodeType":"YulVariableDeclaration","src":"1769:22:13","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1784:2:13"},{"name":"_4","nodeType":"YulIdentifier","src":"1788:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1780:3:13"},"nodeType":"YulFunctionCall","src":"1780:11:13"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"1773:3:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"1845:26:13","statements":[{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"1854:6:13"},{"name":"value1","nodeType":"YulIdentifier","src":"1862:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1847:6:13"},"nodeType":"YulFunctionCall","src":"1847:22:13"},"nodeType":"YulExpressionStatement","src":"1847:22:13"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"1814:2:13"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1822:1:13","type":"","value":"5"},{"name":"_3","nodeType":"YulIdentifier","src":"1825:2:13"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1818:3:13"},"nodeType":"YulFunctionCall","src":"1818:10:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1810:3:13"},"nodeType":"YulFunctionCall","src":"1810:19:13"},{"name":"_4","nodeType":"YulIdentifier","src":"1831:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1806:3:13"},"nodeType":"YulFunctionCall","src":"1806:28:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1836:7:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1803:2:13"},"nodeType":"YulFunctionCall","src":"1803:41:13"},"nodeType":"YulIf","src":"1800:2:13"},{"nodeType":"YulVariableDeclaration","src":"1880:15:13","value":{"name":"value1","nodeType":"YulIdentifier","src":"1889:6:13"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"1884:1:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"1949:193:13","statements":[{"nodeType":"YulVariableDeclaration","src":"1963:30:13","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"1989:3:13"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1976:12:13"},"nodeType":"YulFunctionCall","src":"1976:17:13"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1967:5:13","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2031:5:13"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2006:24:13"},"nodeType":"YulFunctionCall","src":"2006:31:13"},"nodeType":"YulExpressionStatement","src":"2006:31:13"},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"2057:3:13"},{"name":"value","nodeType":"YulIdentifier","src":"2062:5:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2050:6:13"},"nodeType":"YulFunctionCall","src":"2050:18:13"},"nodeType":"YulExpressionStatement","src":"2050:18:13"},{"nodeType":"YulAssignment","src":"2081:19:13","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"2092:3:13"},{"name":"_4","nodeType":"YulIdentifier","src":"2097:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2088:3:13"},"nodeType":"YulFunctionCall","src":"2088:12:13"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"2081:3:13"}]},{"nodeType":"YulAssignment","src":"2113:19:13","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2124:3:13"},{"name":"_4","nodeType":"YulIdentifier","src":"2129:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2120:3:13"},"nodeType":"YulFunctionCall","src":"2120:12:13"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"2113:3:13"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1915:1:13"},{"name":"_3","nodeType":"YulIdentifier","src":"1918:2:13"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1912:2:13"},"nodeType":"YulFunctionCall","src":"1912:9:13"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"1922:18:13","statements":[{"nodeType":"YulAssignment","src":"1924:14:13","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"1933:1:13"},{"kind":"number","nodeType":"YulLiteral","src":"1936:1:13","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1929:3:13"},"nodeType":"YulFunctionCall","src":"1929:9:13"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"1924:1:13"}]}]},"pre":{"nodeType":"YulBlock","src":"1908:3:13","statements":[]},"src":"1904:238:13"},{"nodeType":"YulAssignment","src":"2151:15:13","value":{"name":"dst_1","nodeType":"YulIdentifier","src":"2161:5:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2151:6:13"}]},{"nodeType":"YulVariableDeclaration","src":"2175:48:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2208:9:13"},{"name":"_4","nodeType":"YulIdentifier","src":"2219:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2204:3:13"},"nodeType":"YulFunctionCall","src":"2204:18:13"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2191:12:13"},"nodeType":"YulFunctionCall","src":"2191:32:13"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"2179:8:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"2252:26:13","statements":[{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"2261:6:13"},{"name":"value1","nodeType":"YulIdentifier","src":"2269:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2254:6:13"},"nodeType":"YulFunctionCall","src":"2254:22:13"},"nodeType":"YulExpressionStatement","src":"2254:22:13"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"2238:8:13"},{"name":"_1","nodeType":"YulIdentifier","src":"2248:2:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2235:2:13"},"nodeType":"YulFunctionCall","src":"2235:16:13"},"nodeType":"YulIf","src":"2232:2:13"},{"nodeType":"YulAssignment","src":"2287:72:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2329:9:13"},{"name":"offset_1","nodeType":"YulIdentifier","src":"2340:8:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2325:3:13"},"nodeType":"YulFunctionCall","src":"2325:24:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2351:7:13"}],"functionName":{"name":"abi_decode_array_uint32_dyn","nodeType":"YulIdentifier","src":"2297:27:13"},"nodeType":"YulFunctionCall","src":"2297:62:13"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2287:6:13"}]}]},"name":"abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint32_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1180:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1191:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1203:6:13","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1211:6:13","type":""}],"src":"1086:1279:13"},{"body":{"nodeType":"YulBlock","src":"2464:272:13","statements":[{"body":{"nodeType":"YulBlock","src":"2510:26:13","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2519:6:13"},{"name":"value0","nodeType":"YulIdentifier","src":"2527:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2512:6:13"},"nodeType":"YulFunctionCall","src":"2512:22:13"},"nodeType":"YulExpressionStatement","src":"2512:22:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2485:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"2494:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2481:3:13"},"nodeType":"YulFunctionCall","src":"2481:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"2506:2:13","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2477:3:13"},"nodeType":"YulFunctionCall","src":"2477:32:13"},"nodeType":"YulIf","src":"2474:2:13"},{"nodeType":"YulVariableDeclaration","src":"2545:37:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2572:9:13"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2559:12:13"},"nodeType":"YulFunctionCall","src":"2559:23:13"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2549:6:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"2625:26:13","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2634:6:13"},{"name":"value0","nodeType":"YulIdentifier","src":"2642:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2627:6:13"},"nodeType":"YulFunctionCall","src":"2627:22:13"},"nodeType":"YulExpressionStatement","src":"2627:22:13"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2597:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"2605:18:13","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2594:2:13"},"nodeType":"YulFunctionCall","src":"2594:30:13"},"nodeType":"YulIf","src":"2591:2:13"},{"nodeType":"YulAssignment","src":"2660:70:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2702:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"2713:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2698:3:13"},"nodeType":"YulFunctionCall","src":"2698:22:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2722:7:13"}],"functionName":{"name":"abi_decode_array_uint32_dyn","nodeType":"YulIdentifier","src":"2670:27:13"},"nodeType":"YulFunctionCall","src":"2670:60:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2660:6:13"}]}]},"name":"abi_decode_tuple_t_array$_t_uint32_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2430:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2441:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2453:6:13","type":""}],"src":"2370:366:13"},{"body":{"nodeType":"YulBlock","src":"2819:219:13","statements":[{"body":{"nodeType":"YulBlock","src":"2865:26:13","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2874:6:13"},{"name":"value0","nodeType":"YulIdentifier","src":"2882:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2867:6:13"},"nodeType":"YulFunctionCall","src":"2867:22:13"},"nodeType":"YulExpressionStatement","src":"2867:22:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2840:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"2849:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2836:3:13"},"nodeType":"YulFunctionCall","src":"2836:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"2861:2:13","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2832:3:13"},"nodeType":"YulFunctionCall","src":"2832:32:13"},"nodeType":"YulIf","src":"2829:2:13"},{"nodeType":"YulVariableDeclaration","src":"2900:29:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2919:9:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2913:5:13"},"nodeType":"YulFunctionCall","src":"2913:16:13"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"2904:5:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"2982:26:13","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2991:6:13"},{"name":"value0","nodeType":"YulIdentifier","src":"2999:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2984:6:13"},"nodeType":"YulFunctionCall","src":"2984:22:13"},"nodeType":"YulExpressionStatement","src":"2984:22:13"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2951:5:13"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2972:5:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2965:6:13"},"nodeType":"YulFunctionCall","src":"2965:13:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2958:6:13"},"nodeType":"YulFunctionCall","src":"2958:21:13"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2948:2:13"},"nodeType":"YulFunctionCall","src":"2948:32:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2941:6:13"},"nodeType":"YulFunctionCall","src":"2941:40:13"},"nodeType":"YulIf","src":"2938:2:13"},{"nodeType":"YulAssignment","src":"3017:15:13","value":{"name":"value","nodeType":"YulIdentifier","src":"3027:5:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3017:6:13"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2785:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2796:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2808:6:13","type":""}],"src":"2741:297:13"},{"body":{"nodeType":"YulBlock","src":"3132:552:13","statements":[{"body":{"nodeType":"YulBlock","src":"3178:26:13","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3187:6:13"},{"name":"value0","nodeType":"YulIdentifier","src":"3195:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3180:6:13"},"nodeType":"YulFunctionCall","src":"3180:22:13"},"nodeType":"YulExpressionStatement","src":"3180:22:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3153:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"3162:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3149:3:13"},"nodeType":"YulFunctionCall","src":"3149:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"3174:2:13","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3145:3:13"},"nodeType":"YulFunctionCall","src":"3145:32:13"},"nodeType":"YulIf","src":"3142:2:13"},{"nodeType":"YulVariableDeclaration","src":"3213:37:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3240:9:13"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3227:12:13"},"nodeType":"YulFunctionCall","src":"3227:23:13"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3217:6:13","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3259:28:13","value":{"kind":"number","nodeType":"YulLiteral","src":"3269:18:13","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3263:2:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"3314:26:13","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3323:6:13"},{"name":"value0","nodeType":"YulIdentifier","src":"3331:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3316:6:13"},"nodeType":"YulFunctionCall","src":"3316:22:13"},"nodeType":"YulExpressionStatement","src":"3316:22:13"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3302:6:13"},{"name":"_1","nodeType":"YulIdentifier","src":"3310:2:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3299:2:13"},"nodeType":"YulFunctionCall","src":"3299:14:13"},"nodeType":"YulIf","src":"3296:2:13"},{"nodeType":"YulVariableDeclaration","src":"3349:32:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3363:9:13"},{"name":"offset","nodeType":"YulIdentifier","src":"3374:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3359:3:13"},"nodeType":"YulFunctionCall","src":"3359:22:13"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"3353:2:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"3429:26:13","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3438:6:13"},{"name":"value0","nodeType":"YulIdentifier","src":"3446:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3431:6:13"},"nodeType":"YulFunctionCall","src":"3431:22:13"},"nodeType":"YulExpressionStatement","src":"3431:22:13"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3408:2:13"},{"kind":"number","nodeType":"YulLiteral","src":"3412:4:13","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3404:3:13"},"nodeType":"YulFunctionCall","src":"3404:13:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3419:7:13"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3400:3:13"},"nodeType":"YulFunctionCall","src":"3400:27:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3393:6:13"},"nodeType":"YulFunctionCall","src":"3393:35:13"},"nodeType":"YulIf","src":"3390:2:13"},{"nodeType":"YulVariableDeclaration","src":"3464:30:13","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3491:2:13"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3478:12:13"},"nodeType":"YulFunctionCall","src":"3478:16:13"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3468:6:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"3521:26:13","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3530:6:13"},{"name":"value0","nodeType":"YulIdentifier","src":"3538:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3523:6:13"},"nodeType":"YulFunctionCall","src":"3523:22:13"},"nodeType":"YulExpressionStatement","src":"3523:22:13"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3509:6:13"},{"name":"_1","nodeType":"YulIdentifier","src":"3517:2:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3506:2:13"},"nodeType":"YulFunctionCall","src":"3506:14:13"},"nodeType":"YulIf","src":"3503:2:13"},{"body":{"nodeType":"YulBlock","src":"3597:26:13","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3606:6:13"},{"name":"value0","nodeType":"YulIdentifier","src":"3614:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3599:6:13"},"nodeType":"YulFunctionCall","src":"3599:22:13"},"nodeType":"YulExpressionStatement","src":"3599:22:13"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3570:2:13"},{"name":"length","nodeType":"YulIdentifier","src":"3574:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3566:3:13"},"nodeType":"YulFunctionCall","src":"3566:15:13"},{"kind":"number","nodeType":"YulLiteral","src":"3583:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3562:3:13"},"nodeType":"YulFunctionCall","src":"3562:24:13"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3588:7:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3559:2:13"},"nodeType":"YulFunctionCall","src":"3559:37:13"},"nodeType":"YulIf","src":"3556:2:13"},{"nodeType":"YulAssignment","src":"3632:21:13","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"3646:2:13"},{"kind":"number","nodeType":"YulLiteral","src":"3650:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3642:3:13"},"nodeType":"YulFunctionCall","src":"3642:11:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3632:6:13"}]},{"nodeType":"YulAssignment","src":"3662:16:13","value":{"name":"length","nodeType":"YulIdentifier","src":"3672:6:13"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3662:6:13"}]}]},"name":"abi_decode_tuple_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3090:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3101:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3113:6:13","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3121:6:13","type":""}],"src":"3043:641:13"},{"body":{"nodeType":"YulBlock","src":"3773:187:13","statements":[{"body":{"nodeType":"YulBlock","src":"3819:26:13","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3828:6:13"},{"name":"value0","nodeType":"YulIdentifier","src":"3836:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3821:6:13"},"nodeType":"YulFunctionCall","src":"3821:22:13"},"nodeType":"YulExpressionStatement","src":"3821:22:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3794:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"3803:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3790:3:13"},"nodeType":"YulFunctionCall","src":"3790:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"3815:2:13","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3786:3:13"},"nodeType":"YulFunctionCall","src":"3786:32:13"},"nodeType":"YulIf","src":"3783:2:13"},{"nodeType":"YulVariableDeclaration","src":"3854:36:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3880:9:13"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3867:12:13"},"nodeType":"YulFunctionCall","src":"3867:23:13"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3858:5:13","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3924:5:13"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"3899:24:13"},"nodeType":"YulFunctionCall","src":"3899:31:13"},"nodeType":"YulExpressionStatement","src":"3899:31:13"},{"nodeType":"YulAssignment","src":"3939:15:13","value":{"name":"value","nodeType":"YulIdentifier","src":"3949:5:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3939:6:13"}]}]},"name":"abi_decode_tuple_t_contract$_IERC20_$190","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3739:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3750:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3762:6:13","type":""}],"src":"3689:271:13"},{"body":{"nodeType":"YulBlock","src":"4035:120:13","statements":[{"body":{"nodeType":"YulBlock","src":"4081:26:13","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4090:6:13"},{"name":"value0","nodeType":"YulIdentifier","src":"4098:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4083:6:13"},"nodeType":"YulFunctionCall","src":"4083:22:13"},"nodeType":"YulExpressionStatement","src":"4083:22:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4056:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"4065:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4052:3:13"},"nodeType":"YulFunctionCall","src":"4052:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"4077:2:13","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4048:3:13"},"nodeType":"YulFunctionCall","src":"4048:32:13"},"nodeType":"YulIf","src":"4045:2:13"},{"nodeType":"YulAssignment","src":"4116:33:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4139:9:13"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4126:12:13"},"nodeType":"YulFunctionCall","src":"4126:23:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4116:6:13"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4001:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4012:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4024:6:13","type":""}],"src":"3965:190:13"},{"body":{"nodeType":"YulBlock","src":"4241:113:13","statements":[{"body":{"nodeType":"YulBlock","src":"4287:26:13","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4296:6:13"},{"name":"value0","nodeType":"YulIdentifier","src":"4304:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4289:6:13"},"nodeType":"YulFunctionCall","src":"4289:22:13"},"nodeType":"YulExpressionStatement","src":"4289:22:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4262:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"4271:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4258:3:13"},"nodeType":"YulFunctionCall","src":"4258:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"4283:2:13","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4254:3:13"},"nodeType":"YulFunctionCall","src":"4254:32:13"},"nodeType":"YulIf","src":"4251:2:13"},{"nodeType":"YulAssignment","src":"4322:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4338:9:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4332:5:13"},"nodeType":"YulFunctionCall","src":"4332:16:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4322:6:13"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4207:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4218:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4230:6:13","type":""}],"src":"4160:194:13"},{"body":{"nodeType":"YulBlock","src":"4550:14:13","statements":[{"nodeType":"YulAssignment","src":"4552:10:13","value":{"name":"pos","nodeType":"YulIdentifier","src":"4559:3:13"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4552:3:13"}]}]},"name":"abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"4534:3:13","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4542:3:13","type":""}],"src":"4359:205:13"},{"body":{"nodeType":"YulBlock","src":"4670:102:13","statements":[{"nodeType":"YulAssignment","src":"4680:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4692:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"4703:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4688:3:13"},"nodeType":"YulFunctionCall","src":"4688:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4680:4:13"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4722:9:13"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4737:6:13"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4753:3:13","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"4758:1:13","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"4749:3:13"},"nodeType":"YulFunctionCall","src":"4749:11:13"},{"kind":"number","nodeType":"YulLiteral","src":"4762:1:13","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4745:3:13"},"nodeType":"YulFunctionCall","src":"4745:19:13"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4733:3:13"},"nodeType":"YulFunctionCall","src":"4733:32:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4715:6:13"},"nodeType":"YulFunctionCall","src":"4715:51:13"},"nodeType":"YulExpressionStatement","src":"4715:51:13"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4639:9:13","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4650:6:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4661:4:13","type":""}],"src":"4569:203:13"},{"body":{"nodeType":"YulBlock","src":"4906:145:13","statements":[{"nodeType":"YulAssignment","src":"4916:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4928:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"4939:2:13","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4924:3:13"},"nodeType":"YulFunctionCall","src":"4924:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4916:4:13"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4958:9:13"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4973:6:13"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4989:3:13","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"4994:1:13","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"4985:3:13"},"nodeType":"YulFunctionCall","src":"4985:11:13"},{"kind":"number","nodeType":"YulLiteral","src":"4998:1:13","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4981:3:13"},"nodeType":"YulFunctionCall","src":"4981:19:13"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4969:3:13"},"nodeType":"YulFunctionCall","src":"4969:32:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4951:6:13"},"nodeType":"YulFunctionCall","src":"4951:51:13"},"nodeType":"YulExpressionStatement","src":"4951:51:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5022:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"5033:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5018:3:13"},"nodeType":"YulFunctionCall","src":"5018:18:13"},{"name":"value1","nodeType":"YulIdentifier","src":"5038:6:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5011:6:13"},"nodeType":"YulFunctionCall","src":"5011:34:13"},"nodeType":"YulExpressionStatement","src":"5011:34:13"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4867:9:13","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4878:6:13","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4886:6:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4897:4:13","type":""}],"src":"4777:274:13"},{"body":{"nodeType":"YulBlock","src":"5151:92:13","statements":[{"nodeType":"YulAssignment","src":"5161:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5173:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"5184:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5169:3:13"},"nodeType":"YulFunctionCall","src":"5169:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5161:4:13"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5203:9:13"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5228:6:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5221:6:13"},"nodeType":"YulFunctionCall","src":"5221:14:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5214:6:13"},"nodeType":"YulFunctionCall","src":"5214:22:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5196:6:13"},"nodeType":"YulFunctionCall","src":"5196:41:13"},"nodeType":"YulExpressionStatement","src":"5196:41:13"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5120:9:13","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5131:6:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5142:4:13","type":""}],"src":"5056:187:13"},{"body":{"nodeType":"YulBlock","src":"5389:541:13","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5406:9:13"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5431:6:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5424:6:13"},"nodeType":"YulFunctionCall","src":"5424:14:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5417:6:13"},"nodeType":"YulFunctionCall","src":"5417:22:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5399:6:13"},"nodeType":"YulFunctionCall","src":"5399:41:13"},"nodeType":"YulExpressionStatement","src":"5399:41:13"},{"nodeType":"YulVariableDeclaration","src":"5449:12:13","value":{"kind":"number","nodeType":"YulLiteral","src":"5459:2:13","type":"","value":"32"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"5453:2:13","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5481:9:13"},{"name":"_1","nodeType":"YulIdentifier","src":"5492:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5477:3:13"},"nodeType":"YulFunctionCall","src":"5477:18:13"},{"kind":"number","nodeType":"YulLiteral","src":"5497:2:13","type":"","value":"64"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5470:6:13"},"nodeType":"YulFunctionCall","src":"5470:30:13"},"nodeType":"YulExpressionStatement","src":"5470:30:13"},{"nodeType":"YulVariableDeclaration","src":"5509:27:13","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"5529:6:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5523:5:13"},"nodeType":"YulFunctionCall","src":"5523:13:13"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"5513:6:13","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5556:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"5567:2:13","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5552:3:13"},"nodeType":"YulFunctionCall","src":"5552:18:13"},{"name":"length","nodeType":"YulIdentifier","src":"5572:6:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5545:6:13"},"nodeType":"YulFunctionCall","src":"5545:34:13"},"nodeType":"YulExpressionStatement","src":"5545:34:13"},{"nodeType":"YulVariableDeclaration","src":"5588:13:13","value":{"name":"tail","nodeType":"YulIdentifier","src":"5597:4:13"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5592:1:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"5660:90:13","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5689:9:13"},{"name":"i","nodeType":"YulIdentifier","src":"5700:1:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5685:3:13"},"nodeType":"YulFunctionCall","src":"5685:17:13"},{"kind":"number","nodeType":"YulLiteral","src":"5704:2:13","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5681:3:13"},"nodeType":"YulFunctionCall","src":"5681:26:13"},{"arguments":[{"arguments":[{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"5723:6:13"},{"name":"i","nodeType":"YulIdentifier","src":"5731:1:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5719:3:13"},"nodeType":"YulFunctionCall","src":"5719:14:13"},{"name":"_1","nodeType":"YulIdentifier","src":"5735:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5715:3:13"},"nodeType":"YulFunctionCall","src":"5715:23:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5709:5:13"},"nodeType":"YulFunctionCall","src":"5709:30:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5674:6:13"},"nodeType":"YulFunctionCall","src":"5674:66:13"},"nodeType":"YulExpressionStatement","src":"5674:66:13"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5621:1:13"},{"name":"length","nodeType":"YulIdentifier","src":"5624:6:13"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5618:2:13"},"nodeType":"YulFunctionCall","src":"5618:13:13"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5632:19:13","statements":[{"nodeType":"YulAssignment","src":"5634:15:13","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5643:1:13"},{"name":"_1","nodeType":"YulIdentifier","src":"5646:2:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5639:3:13"},"nodeType":"YulFunctionCall","src":"5639:10:13"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5634:1:13"}]}]},"pre":{"nodeType":"YulBlock","src":"5614:3:13","statements":[]},"src":"5610:140:13"},{"body":{"nodeType":"YulBlock","src":"5784:69:13","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5813:9:13"},{"name":"length","nodeType":"YulIdentifier","src":"5824:6:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5809:3:13"},"nodeType":"YulFunctionCall","src":"5809:22:13"},{"kind":"number","nodeType":"YulLiteral","src":"5833:2:13","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5805:3:13"},"nodeType":"YulFunctionCall","src":"5805:31:13"},{"name":"tail","nodeType":"YulIdentifier","src":"5838:4:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5798:6:13"},"nodeType":"YulFunctionCall","src":"5798:45:13"},"nodeType":"YulExpressionStatement","src":"5798:45:13"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5765:1:13"},{"name":"length","nodeType":"YulIdentifier","src":"5768:6:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5762:2:13"},"nodeType":"YulFunctionCall","src":"5762:13:13"},"nodeType":"YulIf","src":"5759:2:13"},{"nodeType":"YulAssignment","src":"5862:62:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5878:9:13"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5897:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"5905:2:13","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5893:3:13"},"nodeType":"YulFunctionCall","src":"5893:15:13"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5914:2:13","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"5910:3:13"},"nodeType":"YulFunctionCall","src":"5910:7:13"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5889:3:13"},"nodeType":"YulFunctionCall","src":"5889:29:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5874:3:13"},"nodeType":"YulFunctionCall","src":"5874:45:13"},{"kind":"number","nodeType":"YulLiteral","src":"5921:2:13","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5870:3:13"},"nodeType":"YulFunctionCall","src":"5870:54:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5862:4:13"}]}]},"name":"abi_encode_tuple_t_bool_t_bytes_memory_ptr__to_t_bool_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5350:9:13","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5361:6:13","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5369:6:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5380:4:13","type":""}],"src":"5248:682:13"},{"body":{"nodeType":"YulBlock","src":"6059:102:13","statements":[{"nodeType":"YulAssignment","src":"6069:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6081:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"6092:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6077:3:13"},"nodeType":"YulFunctionCall","src":"6077:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6069:4:13"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6111:9:13"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6126:6:13"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6142:3:13","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"6147:1:13","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6138:3:13"},"nodeType":"YulFunctionCall","src":"6138:11:13"},{"kind":"number","nodeType":"YulLiteral","src":"6151:1:13","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6134:3:13"},"nodeType":"YulFunctionCall","src":"6134:19:13"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6122:3:13"},"nodeType":"YulFunctionCall","src":"6122:32:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6104:6:13"},"nodeType":"YulFunctionCall","src":"6104:51:13"},"nodeType":"YulExpressionStatement","src":"6104:51:13"}]},"name":"abi_encode_tuple_t_contract$_ICommunityFund_$2006__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6028:9:13","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6039:6:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6050:4:13","type":""}],"src":"5935:226:13"},{"body":{"nodeType":"YulBlock","src":"6281:102:13","statements":[{"nodeType":"YulAssignment","src":"6291:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6303:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"6314:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6299:3:13"},"nodeType":"YulFunctionCall","src":"6299:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6291:4:13"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6333:9:13"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6348:6:13"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6364:3:13","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"6369:1:13","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"6360:3:13"},"nodeType":"YulFunctionCall","src":"6360:11:13"},{"kind":"number","nodeType":"YulLiteral","src":"6373:1:13","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6356:3:13"},"nodeType":"YulFunctionCall","src":"6356:19:13"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6344:3:13"},"nodeType":"YulFunctionCall","src":"6344:32:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6326:6:13"},"nodeType":"YulFunctionCall","src":"6326:51:13"},"nodeType":"YulExpressionStatement","src":"6326:51:13"}]},"name":"abi_encode_tuple_t_contract$_IERC20_$190__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6250:9:13","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6261:6:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6272:4:13","type":""}],"src":"6166:217:13"},{"body":{"nodeType":"YulBlock","src":"6562:228:13","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6579:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"6590:2:13","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6572:6:13"},"nodeType":"YulFunctionCall","src":"6572:21:13"},"nodeType":"YulExpressionStatement","src":"6572:21:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6613:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"6624:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6609:3:13"},"nodeType":"YulFunctionCall","src":"6609:18:13"},{"kind":"number","nodeType":"YulLiteral","src":"6629:2:13","type":"","value":"38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6602:6:13"},"nodeType":"YulFunctionCall","src":"6602:30:13"},"nodeType":"YulExpressionStatement","src":"6602:30:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6652:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"6663:2:13","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6648:3:13"},"nodeType":"YulFunctionCall","src":"6648:18:13"},{"kind":"string","nodeType":"YulLiteral","src":"6668:34:13","type":"","value":"Ownable: new owner is the zero a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6641:6:13"},"nodeType":"YulFunctionCall","src":"6641:62:13"},"nodeType":"YulExpressionStatement","src":"6641:62:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6723:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"6734:2:13","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6719:3:13"},"nodeType":"YulFunctionCall","src":"6719:18:13"},{"kind":"string","nodeType":"YulLiteral","src":"6739:8:13","type":"","value":"ddress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6712:6:13"},"nodeType":"YulFunctionCall","src":"6712:36:13"},"nodeType":"YulExpressionStatement","src":"6712:36:13"},{"nodeType":"YulAssignment","src":"6757:27:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6769:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"6780:3:13","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6765:3:13"},"nodeType":"YulFunctionCall","src":"6765:19:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6757:4:13"}]}]},"name":"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6539:9:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6553:4:13","type":""}],"src":"6388:402:13"},{"body":{"nodeType":"YulBlock","src":"6969:237:13","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6986:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"6997:2:13","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6979:6:13"},"nodeType":"YulFunctionCall","src":"6979:21:13"},"nodeType":"YulExpressionStatement","src":"6979:21:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7020:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"7031:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7016:3:13"},"nodeType":"YulFunctionCall","src":"7016:18:13"},{"kind":"number","nodeType":"YulLiteral","src":"7036:2:13","type":"","value":"47"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7009:6:13"},"nodeType":"YulFunctionCall","src":"7009:30:13"},"nodeType":"YulExpressionStatement","src":"7009:30:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7059:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"7070:2:13","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7055:3:13"},"nodeType":"YulFunctionCall","src":"7055:18:13"},{"kind":"string","nodeType":"YulLiteral","src":"7075:34:13","type":"","value":"unable to send eth, recipient ma"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7048:6:13"},"nodeType":"YulFunctionCall","src":"7048:62:13"},"nodeType":"YulExpressionStatement","src":"7048:62:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7130:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"7141:2:13","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7126:3:13"},"nodeType":"YulFunctionCall","src":"7126:18:13"},{"kind":"string","nodeType":"YulLiteral","src":"7146:17:13","type":"","value":"y have reverted"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7119:6:13"},"nodeType":"YulFunctionCall","src":"7119:45:13"},"nodeType":"YulExpressionStatement","src":"7119:45:13"},{"nodeType":"YulAssignment","src":"7173:27:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7185:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"7196:3:13","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7181:3:13"},"nodeType":"YulFunctionCall","src":"7181:19:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7173:4:13"}]}]},"name":"abi_encode_tuple_t_stringliteral_6ef19cfd53d6f721536543241689f044ea77579f20884e49f0e56ef7d564423b__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6946:9:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6960:4:13","type":""}],"src":"6795:411:13"},{"body":{"nodeType":"YulBlock","src":"7385:172:13","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7402:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"7413:2:13","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7395:6:13"},"nodeType":"YulFunctionCall","src":"7395:21:13"},"nodeType":"YulExpressionStatement","src":"7395:21:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7436:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"7447:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7432:3:13"},"nodeType":"YulFunctionCall","src":"7432:18:13"},{"kind":"number","nodeType":"YulLiteral","src":"7452:2:13","type":"","value":"22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7425:6:13"},"nodeType":"YulFunctionCall","src":"7425:30:13"},"nodeType":"YulExpressionStatement","src":"7425:30:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7475:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"7486:2:13","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7471:3:13"},"nodeType":"YulFunctionCall","src":"7471:18:13"},{"kind":"string","nodeType":"YulLiteral","src":"7491:24:13","type":"","value":"Epoch: not started yet"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7464:6:13"},"nodeType":"YulFunctionCall","src":"7464:52:13"},"nodeType":"YulExpressionStatement","src":"7464:52:13"},{"nodeType":"YulAssignment","src":"7525:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7537:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"7548:2:13","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7533:3:13"},"nodeType":"YulFunctionCall","src":"7533:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7525:4:13"}]}]},"name":"abi_encode_tuple_t_stringliteral_8e8a438152c291035ba61c330518809ea8d48dc6b10ff12642cf5e0b2970a563__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7362:9:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7376:4:13","type":""}],"src":"7211:346:13"},{"body":{"nodeType":"YulBlock","src":"7736:182:13","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7753:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"7764:2:13","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7746:6:13"},"nodeType":"YulFunctionCall","src":"7746:21:13"},"nodeType":"YulExpressionStatement","src":"7746:21:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7787:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"7798:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7783:3:13"},"nodeType":"YulFunctionCall","src":"7783:18:13"},{"kind":"number","nodeType":"YulLiteral","src":"7803:2:13","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7776:6:13"},"nodeType":"YulFunctionCall","src":"7776:30:13"},"nodeType":"YulExpressionStatement","src":"7776:30:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7826:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"7837:2:13","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7822:3:13"},"nodeType":"YulFunctionCall","src":"7822:18:13"},{"kind":"string","nodeType":"YulLiteral","src":"7842:34:13","type":"","value":"Ownable: caller is not the owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7815:6:13"},"nodeType":"YulFunctionCall","src":"7815:62:13"},"nodeType":"YulExpressionStatement","src":"7815:62:13"},{"nodeType":"YulAssignment","src":"7886:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7898:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"7909:2:13","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7894:3:13"},"nodeType":"YulFunctionCall","src":"7894:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7886:4:13"}]}]},"name":"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7713:9:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7727:4:13","type":""}],"src":"7562:356:13"},{"body":{"nodeType":"YulBlock","src":"8097:168:13","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8114:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"8125:2:13","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8107:6:13"},"nodeType":"YulFunctionCall","src":"8107:21:13"},"nodeType":"YulExpressionStatement","src":"8107:21:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8148:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"8159:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8144:3:13"},"nodeType":"YulFunctionCall","src":"8144:18:13"},{"kind":"number","nodeType":"YulLiteral","src":"8164:2:13","type":"","value":"18"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8137:6:13"},"nodeType":"YulFunctionCall","src":"8137:30:13"},"nodeType":"YulExpressionStatement","src":"8137:30:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8187:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"8198:2:13","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8183:3:13"},"nodeType":"YulFunctionCall","src":"8183:18:13"},{"kind":"string","nodeType":"YulLiteral","src":"8203:20:13","type":"","value":"Epoch: not allowed"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8176:6:13"},"nodeType":"YulFunctionCall","src":"8176:48:13"},"nodeType":"YulExpressionStatement","src":"8176:48:13"},{"nodeType":"YulAssignment","src":"8233:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8245:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"8256:2:13","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8241:3:13"},"nodeType":"YulFunctionCall","src":"8241:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8233:4:13"}]}]},"name":"abi_encode_tuple_t_stringliteral_ca181773b1c59604f15d7520d42e1d47889556e1b4139f88cc128771175e114d__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8074:9:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8088:4:13","type":""}],"src":"7923:342:13"},{"body":{"nodeType":"YulBlock","src":"8444:169:13","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8461:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"8472:2:13","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8454:6:13"},"nodeType":"YulFunctionCall","src":"8454:21:13"},"nodeType":"YulExpressionStatement","src":"8454:21:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8495:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"8506:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8491:3:13"},"nodeType":"YulFunctionCall","src":"8491:18:13"},{"kind":"number","nodeType":"YulLiteral","src":"8511:2:13","type":"","value":"19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8484:6:13"},"nodeType":"YulFunctionCall","src":"8484:30:13"},"nodeType":"YulExpressionStatement","src":"8484:30:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8534:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"8545:2:13","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8530:3:13"},"nodeType":"YulFunctionCall","src":"8530:18:13"},{"kind":"string","nodeType":"YulLiteral","src":"8550:21:13","type":"","value":"invalid percentages"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8523:6:13"},"nodeType":"YulFunctionCall","src":"8523:49:13"},"nodeType":"YulExpressionStatement","src":"8523:49:13"},{"nodeType":"YulAssignment","src":"8581:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8593:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"8604:2:13","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8589:3:13"},"nodeType":"YulFunctionCall","src":"8589:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8581:4:13"}]}]},"name":"abi_encode_tuple_t_stringliteral_da5de935a79473774bc1a56577c1e5d9c5477e764be29dbf7e048ba86c791791__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8421:9:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8435:4:13","type":""}],"src":"8270:343:13"},{"body":{"nodeType":"YulBlock","src":"8719:76:13","statements":[{"nodeType":"YulAssignment","src":"8729:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8741:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"8752:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8737:3:13"},"nodeType":"YulFunctionCall","src":"8737:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8729:4:13"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8771:9:13"},{"name":"value0","nodeType":"YulIdentifier","src":"8782:6:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8764:6:13"},"nodeType":"YulFunctionCall","src":"8764:25:13"},"nodeType":"YulExpressionStatement","src":"8764:25:13"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8688:9:13","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8699:6:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8710:4:13","type":""}],"src":"8618:177:13"},{"body":{"nodeType":"YulBlock","src":"8899:93:13","statements":[{"nodeType":"YulAssignment","src":"8909:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8921:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"8932:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8917:3:13"},"nodeType":"YulFunctionCall","src":"8917:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8909:4:13"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8951:9:13"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8966:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"8974:10:13","type":"","value":"0xffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8962:3:13"},"nodeType":"YulFunctionCall","src":"8962:23:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8944:6:13"},"nodeType":"YulFunctionCall","src":"8944:42:13"},"nodeType":"YulExpressionStatement","src":"8944:42:13"}]},"name":"abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8868:9:13","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8879:6:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8890:4:13","type":""}],"src":"8800:192:13"},{"body":{"nodeType":"YulBlock","src":"9042:230:13","statements":[{"nodeType":"YulAssignment","src":"9052:19:13","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9068:2:13","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9062:5:13"},"nodeType":"YulFunctionCall","src":"9062:9:13"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"9052:6:13"}]},{"nodeType":"YulVariableDeclaration","src":"9080:58:13","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"9102:6:13"},{"arguments":[{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"9118:4:13"},{"kind":"number","nodeType":"YulLiteral","src":"9124:2:13","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9114:3:13"},"nodeType":"YulFunctionCall","src":"9114:13:13"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9133:2:13","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"9129:3:13"},"nodeType":"YulFunctionCall","src":"9129:7:13"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9110:3:13"},"nodeType":"YulFunctionCall","src":"9110:27:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9098:3:13"},"nodeType":"YulFunctionCall","src":"9098:40:13"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"9084:10:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"9213:22:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"9215:16:13"},"nodeType":"YulFunctionCall","src":"9215:18:13"},"nodeType":"YulExpressionStatement","src":"9215:18:13"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"9156:10:13"},{"kind":"number","nodeType":"YulLiteral","src":"9168:18:13","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9153:2:13"},"nodeType":"YulFunctionCall","src":"9153:34:13"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"9192:10:13"},{"name":"memPtr","nodeType":"YulIdentifier","src":"9204:6:13"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"9189:2:13"},"nodeType":"YulFunctionCall","src":"9189:22:13"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"9150:2:13"},"nodeType":"YulFunctionCall","src":"9150:62:13"},"nodeType":"YulIf","src":"9147:2:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9251:2:13","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"9255:10:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9244:6:13"},"nodeType":"YulFunctionCall","src":"9244:22:13"},"nodeType":"YulExpressionStatement","src":"9244:22:13"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"9022:4:13","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"9031:6:13","type":""}],"src":"8997:275:13"},{"body":{"nodeType":"YulBlock","src":"9346:114:13","statements":[{"body":{"nodeType":"YulBlock","src":"9390:22:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"9392:16:13"},"nodeType":"YulFunctionCall","src":"9392:18:13"},"nodeType":"YulExpressionStatement","src":"9392:18:13"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"9362:6:13"},{"kind":"number","nodeType":"YulLiteral","src":"9370:18:13","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9359:2:13"},"nodeType":"YulFunctionCall","src":"9359:30:13"},"nodeType":"YulIf","src":"9356:2:13"},{"nodeType":"YulAssignment","src":"9421:33:13","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9437:1:13","type":"","value":"5"},{"name":"length","nodeType":"YulIdentifier","src":"9440:6:13"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"9433:3:13"},"nodeType":"YulFunctionCall","src":"9433:14:13"},{"kind":"number","nodeType":"YulLiteral","src":"9449:4:13","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9429:3:13"},"nodeType":"YulFunctionCall","src":"9429:25:13"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"9421:4:13"}]}]},"name":"array_allocation_size_array_address_dyn","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"9326:6:13","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"9337:4:13","type":""}],"src":"9277:183:13"},{"body":{"nodeType":"YulBlock","src":"9513:80:13","statements":[{"body":{"nodeType":"YulBlock","src":"9540:22:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"9542:16:13"},"nodeType":"YulFunctionCall","src":"9542:18:13"},"nodeType":"YulExpressionStatement","src":"9542:18:13"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"9529:1:13"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"9536:1:13"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"9532:3:13"},"nodeType":"YulFunctionCall","src":"9532:6:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9526:2:13"},"nodeType":"YulFunctionCall","src":"9526:13:13"},"nodeType":"YulIf","src":"9523:2:13"},{"nodeType":"YulAssignment","src":"9571:16:13","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"9582:1:13"},{"name":"y","nodeType":"YulIdentifier","src":"9585:1:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9578:3:13"},"nodeType":"YulFunctionCall","src":"9578:9:13"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"9571:3:13"}]}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"9496:1:13","type":""},{"name":"y","nodeType":"YulTypedName","src":"9499:1:13","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"9505:3:13","type":""}],"src":"9465:128:13"},{"body":{"nodeType":"YulBlock","src":"9645:181:13","statements":[{"nodeType":"YulVariableDeclaration","src":"9655:20:13","value":{"kind":"number","nodeType":"YulLiteral","src":"9665:10:13","type":"","value":"0xffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"9659:2:13","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9684:21:13","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"9699:1:13"},{"name":"_1","nodeType":"YulIdentifier","src":"9702:2:13"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9695:3:13"},"nodeType":"YulFunctionCall","src":"9695:10:13"},"variables":[{"name":"x_1","nodeType":"YulTypedName","src":"9688:3:13","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9714:21:13","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"9729:1:13"},{"name":"_1","nodeType":"YulIdentifier","src":"9732:2:13"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9725:3:13"},"nodeType":"YulFunctionCall","src":"9725:10:13"},"variables":[{"name":"y_1","nodeType":"YulTypedName","src":"9718:3:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"9769:22:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"9771:16:13"},"nodeType":"YulFunctionCall","src":"9771:18:13"},"nodeType":"YulExpressionStatement","src":"9771:18:13"}]},"condition":{"arguments":[{"name":"x_1","nodeType":"YulIdentifier","src":"9750:3:13"},{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"9759:2:13"},{"name":"y_1","nodeType":"YulIdentifier","src":"9763:3:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9755:3:13"},"nodeType":"YulFunctionCall","src":"9755:12:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9747:2:13"},"nodeType":"YulFunctionCall","src":"9747:21:13"},"nodeType":"YulIf","src":"9744:2:13"},{"nodeType":"YulAssignment","src":"9800:20:13","value":{"arguments":[{"name":"x_1","nodeType":"YulIdentifier","src":"9811:3:13"},{"name":"y_1","nodeType":"YulIdentifier","src":"9816:3:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9807:3:13"},"nodeType":"YulFunctionCall","src":"9807:13:13"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"9800:3:13"}]}]},"name":"checked_add_t_uint32","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"9628:1:13","type":""},{"name":"y","nodeType":"YulTypedName","src":"9631:1:13","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"9637:3:13","type":""}],"src":"9598:228:13"},{"body":{"nodeType":"YulBlock","src":"9877:171:13","statements":[{"body":{"nodeType":"YulBlock","src":"9908:111:13","statements":[{"expression":{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"9929:1:13"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9936:3:13","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"9941:10:13","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"9932:3:13"},"nodeType":"YulFunctionCall","src":"9932:20:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9922:6:13"},"nodeType":"YulFunctionCall","src":"9922:31:13"},"nodeType":"YulExpressionStatement","src":"9922:31:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9973:1:13","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"9976:4:13","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9966:6:13"},"nodeType":"YulFunctionCall","src":"9966:15:13"},"nodeType":"YulExpressionStatement","src":"9966:15:13"},{"expression":{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"10001:1:13"},{"kind":"number","nodeType":"YulLiteral","src":"10004:4:13","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9994:6:13"},"nodeType":"YulFunctionCall","src":"9994:15:13"},"nodeType":"YulExpressionStatement","src":"9994:15:13"}]},"condition":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"9897:1:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"9890:6:13"},"nodeType":"YulFunctionCall","src":"9890:9:13"},"nodeType":"YulIf","src":"9887:2:13"},{"nodeType":"YulAssignment","src":"10028:14:13","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10037:1:13"},{"name":"y","nodeType":"YulIdentifier","src":"10040:1:13"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"10033:3:13"},"nodeType":"YulFunctionCall","src":"10033:9:13"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"10028:1:13"}]}]},"name":"checked_div_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"9862:1:13","type":""},{"name":"y","nodeType":"YulTypedName","src":"9865:1:13","type":""}],"returnVariables":[{"name":"r","nodeType":"YulTypedName","src":"9871:1:13","type":""}],"src":"9831:217:13"},{"body":{"nodeType":"YulBlock","src":"10105:116:13","statements":[{"body":{"nodeType":"YulBlock","src":"10164:22:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"10166:16:13"},"nodeType":"YulFunctionCall","src":"10166:18:13"},"nodeType":"YulExpressionStatement","src":"10166:18:13"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10136:1:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10129:6:13"},"nodeType":"YulFunctionCall","src":"10129:9:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10122:6:13"},"nodeType":"YulFunctionCall","src":"10122:17:13"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"10144:1:13"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10155:1:13","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"10151:3:13"},"nodeType":"YulFunctionCall","src":"10151:6:13"},{"name":"x","nodeType":"YulIdentifier","src":"10159:1:13"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"10147:3:13"},"nodeType":"YulFunctionCall","src":"10147:14:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10141:2:13"},"nodeType":"YulFunctionCall","src":"10141:21:13"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10118:3:13"},"nodeType":"YulFunctionCall","src":"10118:45:13"},"nodeType":"YulIf","src":"10115:2:13"},{"nodeType":"YulAssignment","src":"10195:20:13","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10210:1:13"},{"name":"y","nodeType":"YulIdentifier","src":"10213:1:13"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"10206:3:13"},"nodeType":"YulFunctionCall","src":"10206:9:13"},"variableNames":[{"name":"product","nodeType":"YulIdentifier","src":"10195:7:13"}]}]},"name":"checked_mul_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"10084:1:13","type":""},{"name":"y","nodeType":"YulTypedName","src":"10087:1:13","type":""}],"returnVariables":[{"name":"product","nodeType":"YulTypedName","src":"10093:7:13","type":""}],"src":"10053:168:13"},{"body":{"nodeType":"YulBlock","src":"10275:76:13","statements":[{"body":{"nodeType":"YulBlock","src":"10297:22:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"10299:16:13"},"nodeType":"YulFunctionCall","src":"10299:18:13"},"nodeType":"YulExpressionStatement","src":"10299:18:13"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10291:1:13"},{"name":"y","nodeType":"YulIdentifier","src":"10294:1:13"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"10288:2:13"},"nodeType":"YulFunctionCall","src":"10288:8:13"},"nodeType":"YulIf","src":"10285:2:13"},{"nodeType":"YulAssignment","src":"10328:17:13","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10340:1:13"},{"name":"y","nodeType":"YulIdentifier","src":"10343:1:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10336:3:13"},"nodeType":"YulFunctionCall","src":"10336:9:13"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"10328:4:13"}]}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"10257:1:13","type":""},{"name":"y","nodeType":"YulTypedName","src":"10260:1:13","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"10266:4:13","type":""}],"src":"10226:125:13"},{"body":{"nodeType":"YulBlock","src":"10403:88:13","statements":[{"body":{"nodeType":"YulBlock","src":"10434:22:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"10436:16:13"},"nodeType":"YulFunctionCall","src":"10436:18:13"},"nodeType":"YulExpressionStatement","src":"10436:18:13"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10419:5:13"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10430:1:13","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"10426:3:13"},"nodeType":"YulFunctionCall","src":"10426:6:13"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"10416:2:13"},"nodeType":"YulFunctionCall","src":"10416:17:13"},"nodeType":"YulIf","src":"10413:2:13"},{"nodeType":"YulAssignment","src":"10465:20:13","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10476:5:13"},{"kind":"number","nodeType":"YulLiteral","src":"10483:1:13","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10472:3:13"},"nodeType":"YulFunctionCall","src":"10472:13:13"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"10465:3:13"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"10385:5:13","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"10395:3:13","type":""}],"src":"10356:135:13"},{"body":{"nodeType":"YulBlock","src":"10528:95:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10545:1:13","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10552:3:13","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"10557:10:13","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10548:3:13"},"nodeType":"YulFunctionCall","src":"10548:20:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10538:6:13"},"nodeType":"YulFunctionCall","src":"10538:31:13"},"nodeType":"YulExpressionStatement","src":"10538:31:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10585:1:13","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10588:4:13","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10578:6:13"},"nodeType":"YulFunctionCall","src":"10578:15:13"},"nodeType":"YulExpressionStatement","src":"10578:15:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10609:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10612:4:13","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10602:6:13"},"nodeType":"YulFunctionCall","src":"10602:15:13"},"nodeType":"YulExpressionStatement","src":"10602:15:13"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"10496:127:13"},{"body":{"nodeType":"YulBlock","src":"10660:95:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10677:1:13","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10684:3:13","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"10689:10:13","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10680:3:13"},"nodeType":"YulFunctionCall","src":"10680:20:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10670:6:13"},"nodeType":"YulFunctionCall","src":"10670:31:13"},"nodeType":"YulExpressionStatement","src":"10670:31:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10717:1:13","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10720:4:13","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10710:6:13"},"nodeType":"YulFunctionCall","src":"10710:15:13"},"nodeType":"YulExpressionStatement","src":"10710:15:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10741:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10744:4:13","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10734:6:13"},"nodeType":"YulFunctionCall","src":"10734:15:13"},"nodeType":"YulExpressionStatement","src":"10734:15:13"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"10628:127:13"},{"body":{"nodeType":"YulBlock","src":"10805:86:13","statements":[{"body":{"nodeType":"YulBlock","src":"10869:16:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10878:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10881:1:13","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10871:6:13"},"nodeType":"YulFunctionCall","src":"10871:12:13"},"nodeType":"YulExpressionStatement","src":"10871:12:13"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10828:5:13"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10839:5:13"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10854:3:13","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"10859:1:13","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"10850:3:13"},"nodeType":"YulFunctionCall","src":"10850:11:13"},{"kind":"number","nodeType":"YulLiteral","src":"10863:1:13","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10846:3:13"},"nodeType":"YulFunctionCall","src":"10846:19:13"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10835:3:13"},"nodeType":"YulFunctionCall","src":"10835:31:13"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"10825:2:13"},"nodeType":"YulFunctionCall","src":"10825:42:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10818:6:13"},"nodeType":"YulFunctionCall","src":"10818:50:13"},"nodeType":"YulIf","src":"10815:2:13"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"10794:5:13","type":""}],"src":"10760:131:13"}]},"contents":"{\n    { }\n    function abi_decode_array_uint32_dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let _1 := calldataload(offset)\n        let _2 := 0x20\n        let dst := allocate_memory(array_allocation_size_array_address_dyn(_1))\n        let dst_1 := dst\n        mstore(dst, _1)\n        dst := add(dst, _2)\n        let src := add(offset, _2)\n        if gt(add(add(offset, shl(5, _1)), _2), end) { revert(array, array) }\n        let i := array\n        for { } lt(i, _1) { i := add(i, 1) }\n        {\n            let value := calldataload(src)\n            if iszero(eq(value, and(value, 0xffffffff))) { revert(array, array) }\n            mstore(dst, value)\n            dst := add(dst, _2)\n            src := add(src, _2)\n        }\n        array := dst_1\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint32_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value1, value1) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value1, value1) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(value1, value1) }\n        let _3 := calldataload(_2)\n        let _4 := 0x20\n        let dst := allocate_memory(array_allocation_size_array_address_dyn(_3))\n        let dst_1 := dst\n        mstore(dst, _3)\n        dst := add(dst, _4)\n        let src := add(_2, _4)\n        if gt(add(add(_2, shl(5, _3)), _4), dataEnd) { revert(value1, value1) }\n        let i := value1\n        for { } lt(i, _3) { i := add(i, 1) }\n        {\n            let value := calldataload(src)\n            validator_revert_address(value)\n            mstore(dst, value)\n            dst := add(dst, _4)\n            src := add(src, _4)\n        }\n        value0 := dst_1\n        let offset_1 := calldataload(add(headStart, _4))\n        if gt(offset_1, _1) { revert(value1, value1) }\n        value1 := abi_decode_array_uint32_dyn(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_array$_t_uint32_$dyn_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(value0, value0) }\n        value0 := abi_decode_array_uint32_dyn(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := mload(headStart)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(value0, value0) }\n        value0 := value\n    }\n    function abi_decode_tuple_t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value0, value0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(value0, value0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(value0, value0) }\n        if gt(add(add(_2, length), 32), dataEnd) { revert(value0, value0) }\n        value0 := add(_2, 32)\n        value1 := length\n    }\n    function abi_decode_tuple_t_contract$_IERC20_$190(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    { end := pos }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_bool_t_bytes_memory_ptr__to_t_bool_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, iszero(iszero(value0)))\n        let _1 := 32\n        mstore(add(headStart, _1), 64)\n        let length := mload(value1)\n        mstore(add(headStart, 64), length)\n        let i := tail\n        for { } lt(i, length) { i := add(i, _1) }\n        {\n            mstore(add(add(headStart, i), 96), mload(add(add(value1, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(headStart, length), 96), tail)\n        }\n        tail := add(add(headStart, and(add(length, 31), not(31))), 96)\n    }\n    function abi_encode_tuple_t_contract$_ICommunityFund_$2006__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_contract$_IERC20_$190__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_6ef19cfd53d6f721536543241689f044ea77579f20884e49f0e56ef7d564423b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 47)\n        mstore(add(headStart, 64), \"unable to send eth, recipient ma\")\n        mstore(add(headStart, 96), \"y have reverted\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8e8a438152c291035ba61c330518809ea8d48dc6b10ff12642cf5e0b2970a563__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 22)\n        mstore(add(headStart, 64), \"Epoch: not started yet\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_ca181773b1c59604f15d7520d42e1d47889556e1b4139f88cc128771175e114d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 18)\n        mstore(add(headStart, 64), \"Epoch: not allowed\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_da5de935a79473774bc1a56577c1e5d9c5477e764be29dbf7e048ba86c791791__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 19)\n        mstore(add(headStart, 64), \"invalid percentages\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff))\n    }\n    function allocate_memory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_array_address_dyn(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(shl(5, length), 0x20)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function checked_add_t_uint32(x, y) -> sum\n    {\n        let _1 := 0xffffffff\n        let x_1 := and(x, _1)\n        let y_1 := and(y, _1)\n        if gt(x_1, sub(_1, y_1)) { panic_error_0x11() }\n        sum := add(x_1, y_1)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(r, shl(224, 0x4e487b71))\n            mstore(4, 0x12)\n            revert(r, 0x24)\n        }\n        r := div(x, y)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(not(0), x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0)) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n}","id":13,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"60806040526004361061016e5760003560e01c80638da5cb5b116100cc578063e086e5ec1161007a578063e086e5ec14610416578063efe97d051461042b578063f2a40db814610440578063f2fde38b14610460578063f46b65ac14610480578063f4f3b20014610495578063fbccedae146104b557600080fd5b80638da5cb5b14610364578063b8b9b54914610382578063b97dd9e214610397578063bce58269146103ac578063c45ff544146103cc578063c5967c26146103ec578063c828371e1461040157600080fd5b80633f26479e116101295780633f26479e1461029057806344def48f146102a75780634585e33b146102c75780635c45f349146102e75780636a2ab602146102fc5780636e04ff0d14610321578063715018a61461034f57600080fd5b80623f619d146101b3578062f380f4146101ed5780630f3a9f651461021a5780631ed241951461023c578063398bac631461025b5780633de00c361461027057600080fd5b366101ae577fbfe611b001dfcd411432f7bf0d79b82b4b2ee81511edac123a3403c357fb972a33346040516101a492919061122f565b60405180910390a1005b600080fd5b3480156101bf57600080fd5b506101d36101ce3660046111eb565b6104ca565b60405163ffffffff90911681526020015b60405180910390f35b3480156101f957600080fd5b5060075461020d906001600160a01b031681565b6040516101e4919061121b565b34801561022657600080fd5b5061023a6102353660046111eb565b610504565b005b34801561024857600080fd5b506001545b6040519081526020016101e4565b34801561026757600080fd5b5061024d610511565b34801561027c57600080fd5b5060065461020d906001600160a01b031681565b34801561029c57600080fd5b5061024d620f424081565b3480156102b357600080fd5b5061023a6102c2366004611060565b610520565b3480156102d357600080fd5b5061023a6102e236600461117e565b61055d565b3480156102f357600080fd5b5061023a610605565b34801561030857600080fd5b5061031161061c565b60405190151581526020016101e4565b34801561032d57600080fd5b5061034161033c36600461117e565b610626565b6040516101e4929190611248565b34801561035b57600080fd5b5061023a61064d565b34801561037057600080fd5b506000546001600160a01b031661020d565b34801561038e57600080fd5b5061023a61065f565b3480156103a357600080fd5b5061024d6107c5565b3480156103b857600080fd5b5061023a6103c7366004611044565b6107eb565b3480156103d857600080fd5b5061023a6103e7366004611123565b610977565b3480156103f857600080fd5b5061024d610a22565b34801561040d57600080fd5b5060025461024d565b34801561042257600080fd5b5061023a610a44565b34801561043757600080fd5b5061024d610a89565b34801561044c57600080fd5b5061020d61045b3660046111eb565b610a93565b34801561046c57600080fd5b5061023a61047b366004611044565b610abd565b34801561048c57600080fd5b5061023a610b33565b3480156104a157600080fd5b5061023a6104b0366004611044565b610baf565b3480156104c157600080fd5b5061024d610cc3565b600581815481106104da57600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b61050c610d6a565b600155565b600061051b610dc4565b905090565b610528610d6a565b815161053b906004906020850190610ea4565b50805161054f906005906020840190610f09565b5061055981610977565b5050565b60025442116105ac5760405162461bcd60e51b8152602060048201526016602482015275115c1bd8da0e881b9bdd081cdd185c9d1959081e595d60521b60448201526064015b60405180910390fd5b6105b4610de3565b6105f55760405162461bcd60e51b8152602060048201526012602482015271115c1bd8da0e881b9bdd08185b1b1bddd95960721b60448201526064016105a3565b6105fd610b33565b505042600355565b60065461061a906001600160a01b03166107eb565b565b600061051b610de3565b60006060610632610de3565b60405180602001604052806000815250915091509250929050565b610655610d6a565b61061a6000610dfc565b600454479060005b818110156107c05760006106c6846005848154811061069657634e487b7160e01b600052603260045260246000fd5b60009182526020909120600882040154620f424060079092166004026101000a900463ffffffff16919091020490565b90506000600483815481106106eb57634e487b7160e01b600052603260045260246000fd5b60009182526020822001546040516001600160a01b039091169184919081818185875af1925050503d806000811461073f576040519150601f19603f3d011682016040523d82523d6000602084013e610744565b606091505b50509050806107ad5760405162461bcd60e51b815260206004820152602f60248201527f756e61626c6520746f2073656e64206574682c20726563697069656e74206d6160448201526e1e481a185d99481c995d995c9d1959608a1b60648201526084016105a3565b5050806107b990611390565b9050610667565b505050565b600061051b6001546107e56002546107df60025442610e4c565b90610e63565b90610e6f565b6040516370a0823160e01b81526000906001600160a01b038316906370a082319061081a90309060040161121b565b60206040518083038186803b15801561083257600080fd5b505afa158015610846573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086a9190611203565b60045490915060005b818110156109715760006108a2846005848154811061069657634e487b7160e01b600052603260045260246000fd5b9050846001600160a01b031663a9059cbb600484815481106108d457634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546040516001600160e01b031960e084901b16815261090c916001600160a01b031690859060040161122f565b602060405180830381600087803b15801561092657600080fd5b505af115801561093a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095e919061115e565b50508061096a90611390565b9050610873565b50505050565b61097f610d6a565b6000805b82518110156109d3578281815181106109ac57634e487b7160e01b600052603260045260246000fd5b6020026020010151826109bf9190611312565b9150806109cb81611390565b915050610983565b50620f42408163ffffffff16146105595760405162461bcd60e51b8152602060048201526013602482015272696e76616c69642070657263656e746167657360681b60448201526064016105a3565b600061051b610a3b600154610a35610e7b565b90610d4b565b60025490610d5e565b610a4c610d6a565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015610a86573d6000803e3d6000fd5b50565b600061051b610e7b565b60048181548110610aa357600080fd5b6000918252602090912001546001600160a01b0316905081565b610ac5610d6a565b6001600160a01b038116610b2a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105a3565b610a8681610dfc565b600754600654604051631916558760e01b81526001600160a01b0392831692631916558792610b679291169060040161121b565b600060405180830381600087803b158015610b8157600080fd5b505af1158015610b95573d6000803e3d6000fd5b505060065461061a92506001600160a01b031690506107eb565b610bb7610d6a565b806001600160a01b031663a9059cbb610bd86000546001600160a01b031690565b6040516370a0823160e01b81526001600160a01b038516906370a0823190610c0490309060040161121b565b60206040518083038186803b158015610c1c57600080fd5b505afa158015610c30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c549190611203565b6040518363ffffffff1660e01b8152600401610c7192919061122f565b602060405180830381600087803b158015610c8b57600080fd5b505af1158015610c9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610559919061115e565b6007546006546040516302e4d97960e31b81526000926001600160a01b0390811692631726cbc892610cfb929091169060040161121b565b60206040518083038186803b158015610d1357600080fd5b505afa158015610d27573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051b9190611203565b6000610d57828461135a565b9392505050565b6000610d5782846112fa565b6000546001600160a01b0316331461061a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105a3565b600061051b6001546107e5600254600354610e6390919063ffffffff16565b6000610ded610e7b565b610df56107c5565b1015905090565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600081831015610e5c5781610d57565b5090919050565b6000610d578284611379565b6000610d57828461133a565b60006003546002541415610e915761051b610dc4565b61051b6001610e9e610dc4565b90610d5e565b828054828255906000526020600020908101928215610ef9579160200282015b82811115610ef957825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610ec4565b50610f05929150610faf565b5090565b82805482825590600052602060002090600701600890048101928215610ef95791602002820160005b83821115610f7657835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302610f32565b8015610fa65782816101000a81549063ffffffff0219169055600401602081600301049283019260010302610f76565b5050610f059291505b5b80821115610f055760008155600101610fb0565b600082601f830112610fd4578081fd5b81356020610fe9610fe4836112d6565b6112a5565b80838252828201915082860187848660051b8901011115611008578586fd5b855b8581101561103757813563ffffffff81168114611025578788fd5b8452928401929084019060010161100a565b5090979650505050505050565b600060208284031215611055578081fd5b8135610d57816113d7565b60008060408385031215611072578081fd5b823567ffffffffffffffff80821115611089578283fd5b818501915085601f83011261109c578283fd5b813560206110ac610fe4836112d6565b8083825282820191508286018a848660051b89010111156110cb578788fd5b8796505b848710156110f65780356110e2816113d7565b8352600196909601959183019183016110cf565b509650508601359250508082111561110c578283fd5b5061111985828601610fc4565b9150509250929050565b600060208284031215611134578081fd5b813567ffffffffffffffff81111561114a578182fd5b61115684828501610fc4565b949350505050565b60006020828403121561116f578081fd5b81518015158114610d57578182fd5b60008060208385031215611190578182fd5b823567ffffffffffffffff808211156111a7578384fd5b818501915085601f8301126111ba578384fd5b8135818111156111c8578485fd5b8660208285010111156111d9578485fd5b60209290920196919550909350505050565b6000602082840312156111fc578081fd5b5035919050565b600060208284031215611214578081fd5b5051919050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b8215158152600060206040818401528351806040850152825b8181101561127d57858101830151858201606001528201611261565b8181111561128e5783606083870101525b50601f01601f191692909201606001949350505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156112ce576112ce6113c1565b604052919050565b600067ffffffffffffffff8211156112f0576112f06113c1565b5060051b60200190565b6000821982111561130d5761130d6113ab565b500190565b600063ffffffff808316818516808303821115611331576113316113ab565b01949350505050565b60008261135557634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611374576113746113ab565b500290565b60008282101561138b5761138b6113ab565b500390565b60006000198214156113a4576113a46113ab565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610a8657600080fdfea2646970667358221220b5a84348ef9b5c2821d46b60cb0640081c87dfe96ac0b713fe82fc1253293e7464736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x16E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0xCC JUMPI DUP1 PUSH4 0xE086E5EC GT PUSH2 0x7A JUMPI DUP1 PUSH4 0xE086E5EC EQ PUSH2 0x416 JUMPI DUP1 PUSH4 0xEFE97D05 EQ PUSH2 0x42B JUMPI DUP1 PUSH4 0xF2A40DB8 EQ PUSH2 0x440 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x460 JUMPI DUP1 PUSH4 0xF46B65AC EQ PUSH2 0x480 JUMPI DUP1 PUSH4 0xF4F3B200 EQ PUSH2 0x495 JUMPI DUP1 PUSH4 0xFBCCEDAE EQ PUSH2 0x4B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x364 JUMPI DUP1 PUSH4 0xB8B9B549 EQ PUSH2 0x382 JUMPI DUP1 PUSH4 0xB97DD9E2 EQ PUSH2 0x397 JUMPI DUP1 PUSH4 0xBCE58269 EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0xC45FF544 EQ PUSH2 0x3CC JUMPI DUP1 PUSH4 0xC5967C26 EQ PUSH2 0x3EC JUMPI DUP1 PUSH4 0xC828371E EQ PUSH2 0x401 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3F26479E GT PUSH2 0x129 JUMPI DUP1 PUSH4 0x3F26479E EQ PUSH2 0x290 JUMPI DUP1 PUSH4 0x44DEF48F EQ PUSH2 0x2A7 JUMPI DUP1 PUSH4 0x4585E33B EQ PUSH2 0x2C7 JUMPI DUP1 PUSH4 0x5C45F349 EQ PUSH2 0x2E7 JUMPI DUP1 PUSH4 0x6A2AB602 EQ PUSH2 0x2FC JUMPI DUP1 PUSH4 0x6E04FF0D EQ PUSH2 0x321 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x34F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH3 0x3F619D EQ PUSH2 0x1B3 JUMPI DUP1 PUSH3 0xF380F4 EQ PUSH2 0x1ED JUMPI DUP1 PUSH4 0xF3A9F65 EQ PUSH2 0x21A JUMPI DUP1 PUSH4 0x1ED24195 EQ PUSH2 0x23C JUMPI DUP1 PUSH4 0x398BAC63 EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0x3DE00C36 EQ PUSH2 0x270 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLDATASIZE PUSH2 0x1AE JUMPI PUSH32 0xBFE611B001DFCD411432F7BF0D79B82B4B2EE81511EDAC123A3403C357FB972A CALLER CALLVALUE PUSH1 0x40 MLOAD PUSH2 0x1A4 SWAP3 SWAP2 SWAP1 PUSH2 0x122F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D3 PUSH2 0x1CE CALLDATASIZE PUSH1 0x4 PUSH2 0x11EB JUMP JUMPDEST PUSH2 0x4CA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x7 SLOAD PUSH2 0x20D SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E4 SWAP2 SWAP1 PUSH2 0x121B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x226 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH2 0x235 CALLDATASIZE PUSH1 0x4 PUSH2 0x11EB JUMP JUMPDEST PUSH2 0x504 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x248 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1E4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x267 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24D PUSH2 0x511 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x6 SLOAD PUSH2 0x20D SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24D PUSH3 0xF4240 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH2 0x2C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1060 JUMP JUMPDEST PUSH2 0x520 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH2 0x2E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x117E JUMP JUMPDEST PUSH2 0x55D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH2 0x605 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x308 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x311 PUSH2 0x61C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1E4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x341 PUSH2 0x33C CALLDATASIZE PUSH1 0x4 PUSH2 0x117E JUMP JUMPDEST PUSH2 0x626 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1E4 SWAP3 SWAP2 SWAP1 PUSH2 0x1248 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH2 0x64D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x370 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x20D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x38E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH2 0x65F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24D PUSH2 0x7C5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH2 0x3C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1044 JUMP JUMPDEST PUSH2 0x7EB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH2 0x3E7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1123 JUMP JUMPDEST PUSH2 0x977 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24D PUSH2 0xA22 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x2 SLOAD PUSH2 0x24D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x422 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH2 0xA44 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x437 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24D PUSH2 0xA89 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D PUSH2 0x45B CALLDATASIZE PUSH1 0x4 PUSH2 0x11EB JUMP JUMPDEST PUSH2 0xA93 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH2 0x47B CALLDATASIZE PUSH1 0x4 PUSH2 0x1044 JUMP JUMPDEST PUSH2 0xABD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x48C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH2 0xB33 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A PUSH2 0x4B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x1044 JUMP JUMPDEST PUSH2 0xBAF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x24D PUSH2 0xCC3 JUMP JUMPDEST PUSH1 0x5 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x4DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x8 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x4 MUL SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x50C PUSH2 0xD6A JUMP JUMPDEST PUSH1 0x1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51B PUSH2 0xDC4 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x528 PUSH2 0xD6A JUMP JUMPDEST DUP2 MLOAD PUSH2 0x53B SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0xEA4 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x54F SWAP1 PUSH1 0x5 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0xF09 JUMP JUMPDEST POP PUSH2 0x559 DUP2 PUSH2 0x977 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD TIMESTAMP GT PUSH2 0x5AC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x115C1BD8DA0E881B9BDD081CDD185C9D1959081E595D PUSH1 0x52 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x5B4 PUSH2 0xDE3 JUMP JUMPDEST PUSH2 0x5F5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x115C1BD8DA0E881B9BDD08185B1B1BDDD959 PUSH1 0x72 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x5A3 JUMP JUMPDEST PUSH2 0x5FD PUSH2 0xB33 JUMP JUMPDEST POP POP TIMESTAMP PUSH1 0x3 SSTORE JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0x61A SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7EB JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51B PUSH2 0xDE3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x632 PUSH2 0xDE3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x655 PUSH2 0xD6A JUMP JUMPDEST PUSH2 0x61A PUSH1 0x0 PUSH2 0xDFC JUMP JUMPDEST PUSH1 0x4 SLOAD SELFBALANCE SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x7C0 JUMPI PUSH1 0x0 PUSH2 0x6C6 DUP5 PUSH1 0x5 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x696 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x8 DUP3 DIV ADD SLOAD PUSH3 0xF4240 PUSH1 0x7 SWAP1 SWAP3 AND PUSH1 0x4 MUL PUSH2 0x100 EXP SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP2 SWAP1 SWAP2 MUL DIV SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x4 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x6EB JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 DUP5 SWAP2 SWAP1 DUP2 DUP2 DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x73F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x744 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x7AD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x756E61626C6520746F2073656E64206574682C20726563697069656E74206D61 PUSH1 0x44 DUP3 ADD MSTORE PUSH15 0x1E481A185D99481C995D995C9D1959 PUSH1 0x8A SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5A3 JUMP JUMPDEST POP POP DUP1 PUSH2 0x7B9 SWAP1 PUSH2 0x1390 JUMP JUMPDEST SWAP1 POP PUSH2 0x667 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51B PUSH1 0x1 SLOAD PUSH2 0x7E5 PUSH1 0x2 SLOAD PUSH2 0x7DF PUSH1 0x2 SLOAD TIMESTAMP PUSH2 0xE4C JUMP JUMPDEST SWAP1 PUSH2 0xE63 JUMP JUMPDEST SWAP1 PUSH2 0xE6F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x81A SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x121B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x832 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x846 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 0x86A SWAP2 SWAP1 PUSH2 0x1203 JUMP JUMPDEST PUSH1 0x4 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x971 JUMPI PUSH1 0x0 PUSH2 0x8A2 DUP5 PUSH1 0x5 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x696 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0x4 DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x8D4 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH2 0x90C SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x122F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x926 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x93A 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 0x95E SWAP2 SWAP1 PUSH2 0x115E JUMP JUMPDEST POP POP DUP1 PUSH2 0x96A SWAP1 PUSH2 0x1390 JUMP JUMPDEST SWAP1 POP PUSH2 0x873 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x97F PUSH2 0xD6A JUMP JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x9D3 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x9AC JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP3 PUSH2 0x9BF SWAP2 SWAP1 PUSH2 0x1312 JUMP JUMPDEST SWAP2 POP DUP1 PUSH2 0x9CB DUP2 PUSH2 0x1390 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x983 JUMP JUMPDEST POP PUSH3 0xF4240 DUP2 PUSH4 0xFFFFFFFF AND EQ PUSH2 0x559 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x696E76616C69642070657263656E7461676573 PUSH1 0x68 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x5A3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51B PUSH2 0xA3B PUSH1 0x1 SLOAD PUSH2 0xA35 PUSH2 0xE7B JUMP JUMPDEST SWAP1 PUSH2 0xD4B JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 PUSH2 0xD5E JUMP JUMPDEST PUSH2 0xA4C PUSH2 0xD6A JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 SELFBALANCE DUP1 ISZERO PUSH2 0x8FC MUL SWAP3 SWAP1 SWAP2 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0xA86 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51B PUSH2 0xE7B JUMP JUMPDEST PUSH1 0x4 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0xAA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH2 0xAC5 PUSH2 0xD6A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0xB2A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x5A3 JUMP JUMPDEST PUSH2 0xA86 DUP2 PUSH2 0xDFC JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH4 0x19165587 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP3 PUSH4 0x19165587 SWAP3 PUSH2 0xB67 SWAP3 SWAP2 AND SWAP1 PUSH1 0x4 ADD PUSH2 0x121B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB95 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x6 SLOAD PUSH2 0x61A SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 POP PUSH2 0x7EB JUMP JUMPDEST PUSH2 0xBB7 PUSH2 0xD6A JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB PUSH2 0xBD8 PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xC04 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x121B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC30 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 0xC54 SWAP2 SWAP1 PUSH2 0x1203 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC71 SWAP3 SWAP2 SWAP1 PUSH2 0x122F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC9F 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 0x559 SWAP2 SWAP1 PUSH2 0x115E JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH4 0x2E4D979 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP3 PUSH4 0x1726CBC8 SWAP3 PUSH2 0xCFB SWAP3 SWAP1 SWAP2 AND SWAP1 PUSH1 0x4 ADD PUSH2 0x121B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD27 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 0x51B SWAP2 SWAP1 PUSH2 0x1203 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD57 DUP3 DUP5 PUSH2 0x135A JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD57 DUP3 DUP5 PUSH2 0x12FA JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x61A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x5A3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x51B PUSH1 0x1 SLOAD PUSH2 0x7E5 PUSH1 0x2 SLOAD PUSH1 0x3 SLOAD PUSH2 0xE63 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDED PUSH2 0xE7B JUMP JUMPDEST PUSH2 0xDF5 PUSH2 0x7C5 JUMP JUMPDEST LT ISZERO SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT ISZERO PUSH2 0xE5C JUMPI DUP2 PUSH2 0xD57 JUMP JUMPDEST POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD57 DUP3 DUP5 PUSH2 0x1379 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD57 DUP3 DUP5 PUSH2 0x133A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 SLOAD PUSH1 0x2 SLOAD EQ ISZERO PUSH2 0xE91 JUMPI PUSH2 0x51B PUSH2 0xDC4 JUMP JUMPDEST PUSH2 0x51B PUSH1 0x1 PUSH2 0xE9E PUSH2 0xDC4 JUMP JUMPDEST SWAP1 PUSH2 0xD5E JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0xEF9 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xEF9 JUMPI DUP3 MLOAD DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND OR DUP3 SSTORE PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0xEC4 JUMP JUMPDEST POP PUSH2 0xF05 SWAP3 SWAP2 POP PUSH2 0xFAF JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x7 ADD PUSH1 0x8 SWAP1 DIV DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0xEF9 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD PUSH1 0x0 JUMPDEST DUP4 DUP3 GT ISZERO PUSH2 0xF76 JUMPI DUP4 MLOAD DUP4 DUP3 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP SWAP3 PUSH1 0x20 ADD SWAP3 PUSH1 0x4 ADD PUSH1 0x20 DUP2 PUSH1 0x3 ADD DIV SWAP3 DUP4 ADD SWAP3 PUSH1 0x1 SUB MUL PUSH2 0xF32 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xFA6 JUMPI DUP3 DUP2 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x4 ADD PUSH1 0x20 DUP2 PUSH1 0x3 ADD DIV SWAP3 DUP4 ADD SWAP3 PUSH1 0x1 SUB MUL PUSH2 0xF76 JUMP JUMPDEST POP POP PUSH2 0xF05 SWAP3 SWAP2 POP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xF05 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xFB0 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xFD4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0xFE9 PUSH2 0xFE4 DUP4 PUSH2 0x12D6 JUMP JUMPDEST PUSH2 0x12A5 JUMP JUMPDEST DUP1 DUP4 DUP3 MSTORE DUP3 DUP3 ADD SWAP2 POP DUP3 DUP7 ADD DUP8 DUP5 DUP7 PUSH1 0x5 SHL DUP10 ADD ADD GT ISZERO PUSH2 0x1008 JUMPI DUP6 DUP7 REVERT JUMPDEST DUP6 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x1037 JUMPI DUP2 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1025 JUMPI DUP8 DUP9 REVERT JUMPDEST DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x100A JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1055 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xD57 DUP2 PUSH2 0x13D7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1072 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1089 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x109C JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x10AC PUSH2 0xFE4 DUP4 PUSH2 0x12D6 JUMP JUMPDEST DUP1 DUP4 DUP3 MSTORE DUP3 DUP3 ADD SWAP2 POP DUP3 DUP7 ADD DUP11 DUP5 DUP7 PUSH1 0x5 SHL DUP10 ADD ADD GT ISZERO PUSH2 0x10CB JUMPI DUP8 DUP9 REVERT JUMPDEST DUP8 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x10F6 JUMPI DUP1 CALLDATALOAD PUSH2 0x10E2 DUP2 PUSH2 0x13D7 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x10CF JUMP JUMPDEST POP SWAP7 POP POP DUP7 ADD CALLDATALOAD SWAP3 POP POP DUP1 DUP3 GT ISZERO PUSH2 0x110C JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x1119 DUP6 DUP3 DUP7 ADD PUSH2 0xFC4 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1134 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x114A JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1156 DUP5 DUP3 DUP6 ADD PUSH2 0xFC4 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x116F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xD57 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1190 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x11A7 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x11BA JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x11C8 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x11D9 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11FC JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1214 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 PUSH1 0x40 DUP2 DUP5 ADD MSTORE DUP4 MLOAD DUP1 PUSH1 0x40 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x127D JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x60 ADD MSTORE DUP3 ADD PUSH2 0x1261 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x128E JUMPI DUP4 PUSH1 0x60 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x60 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x12CE JUMPI PUSH2 0x12CE PUSH2 0x13C1 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x12F0 JUMPI PUSH2 0x12F0 PUSH2 0x13C1 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x130D JUMPI PUSH2 0x130D PUSH2 0x13AB JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x1331 JUMPI PUSH2 0x1331 PUSH2 0x13AB JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1355 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 DUP2 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x1374 JUMPI PUSH2 0x1374 PUSH2 0x13AB JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x138B JUMPI PUSH2 0x138B PUSH2 0x13AB JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x13A4 JUMPI PUSH2 0x13A4 PUSH2 0x13AB JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xA86 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB5 0xA8 NUMBER 0x48 0xEF SWAP12 0x5C 0x28 0x21 0xD4 PUSH12 0x60CB0640081C87DFE96AC0B7 SGT INVALID DUP3 0xFC SLT MSTORE8 0x29 RETURNDATACOPY PUSH21 0x64736F6C6343000804003300000000000000000000 ","sourceMap":"730:1096:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;752:36:10;719:10:5;778:9:10;752:36;;;;;;;:::i;:::-;;;;;;;;730:1096:11;;;;;440:34:10;;;;;;;;;;-1:-1:-1;440:34:10;;;;;:::i;:::-;;:::i;:::-;;;8974:10:13;8962:23;;;8944:42;;8932:2;8917:18;440:34:10;;;;;;;;835:35:11;;;;;;;;;;-1:-1:-1;835:35:11;;;;-1:-1:-1;;;;;835:35:11;;;;;;;;;;:::i;2630:88:12:-;;;;;;;;;;-1:-1:-1;2630:88:12;;;;;:::i;:::-;;:::i;:::-;;2384:92;;;;;;;;;;-1:-1:-1;2463:6:12;;2384:92;;;8764:25:13;;;8752:2;8737:18;2384:92:12;8719:76:13;1850:104:12;;;;;;;;;;;;;:::i;811:18:11:-;;;;;;;;;;-1:-1:-1;811:18:11;;;;-1:-1:-1;;;;;811:18:11;;;357:46:10;;;;;;;;;;;;400:3;357:46;;2009:261;;;;;;;;;;-1:-1:-1;2009:261:10;;;;;:::i;:::-;;:::i;1713:111:11:-;;;;;;;;;;-1:-1:-1;1713:111:11;;;;;:::i;:::-;;:::i;1439:71::-;;;;;;;;;;;;;:::i;1423:93:12:-;;;;;;;;;;;;;:::i;:::-;;;5221:14:13;;5214:22;5196:41;;5184:2;5169:18;1423:93:12;5151:92:13;1516:191:11;;;;;;;;;;-1:-1:-1;1516:191:11;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;1831:101:0:-;;;;;;;;;;;;;:::i;1201:85::-;;;;;;;;;;-1:-1:-1;1247:7:0;1273:6;-1:-1:-1;;;;;1273:6:0;1201:85;;801:709:10;;;;;;;;;;;;;:::i;1960:155:12:-;;;;;;;;;;;;;:::i;1516:487:10:-;;;;;;;;;;-1:-1:-1;1516:487:10;;;;;:::i;:::-;;:::i;2276:329::-;;;;;;;;;;-1:-1:-1;2276:329:10;;;;;:::i;:::-;;:::i;2231:133:12:-;;;;;;;;;;;;;:::i;2482:98::-;;;;;;;;;;-1:-1:-1;2564:9:12;;2482:98;;2611:107:10;;;;;;;;;;;;;:::i;2121:104:12:-;;;;;;;;;;;;;:::i;409:25:10:-;;;;;;;;;;-1:-1:-1;409:25:10;;;;;:::i;:::-;;:::i;2081:198:0:-;;;;;;;;;;-1:-1:-1;2081:198:0;;;;;:::i;:::-;;:::i;1197:118:11:-;;;;;;;;;;;;;:::i;2724:128:10:-;;;;;;;;;;-1:-1:-1;2724:128:10;;;;;:::i;:::-;;:::i;1321:112:11:-;;;;;;;;;;;;;:::i;440:34:10:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2630:88:12:-;1094:13:0;:11;:13::i;:::-;2695:6:12::1;:16:::0;2630:88::o;1850:104::-;1906:7;1932:15;:13;:15::i;:::-;1925:22;;1850:104;:::o;2009:261:10:-;1094:13:0;:11;:13::i;:::-;2146:20:10;;::::1;::::0;:8:::1;::::0;:20:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;2176:40:10;;::::1;::::0;:18:::1;::::0;:40:::1;::::0;::::1;::::0;::::1;:::i;:::-;;2226:37;2243:19;2226:16;:37::i;:::-;2009:261:::0;;:::o;1713:111:11:-;988:9:12;;970:15;:27;962:62;;;;-1:-1:-1;;;962:62:12;;7413:2:13;962:62:12;;;7395:21:13;7452:2;7432:18;;;7425:30;-1:-1:-1;;;7471:18:13;;;7464:52;7533:18;;962:62:12;;;;;;;;;1042:11;:9;:11::i;:::-;1034:42;;;;-1:-1:-1;;;1034:42:12;;8125:2:13;1034:42:12;;;8107:21:13;8164:2;8144:18;;;8137:30;-1:-1:-1;;;8183:18:13;;;8176:48;8241:18;;1034:42:12;8097:168:13;1034:42:12;1791:26:11::1;:24;:26::i;:::-;-1:-1:-1::0;;1114:15:12;1097:14;:32;1713:111:11:o;1439:71::-;1498:4;;1482:21;;-1:-1:-1;;;;;1498:4:11;1482:15;:21::i;:::-;1439:71::o;1423:93:12:-;1475:4;1498:11;:9;:11::i;1516:191:11:-;1617:17;1636:24;1684:11;:9;:11::i;:::-;1676:24;;;;;;;;;;;;;;;;1516:191;;;;;:::o;1831:101:0:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;801:709:10:-:0;1068:8;:15;867:21;;843;1093:411;1117:14;1113:1;:18;1093:411;;;1224:11;1238:108;1280:13;1311:18;1330:1;1311:21;;;;;;-1:-1:-1;;;1311:21:10;;;;;;;;;;;;;;;;;;;;;;3418:16;1311:21;;;;;;;;;;;;3390:26;;;;3386:49;;3313:132;1238:108;1224:122;;1362:12;1380:8;1389:1;1380:11;;;;;;-1:-1:-1;;;1380:11:10;;;;;;;;;;;;;;;;;;:32;;-1:-1:-1;;;;;1380:11:10;;;;1404:3;;1380:32;;:11;:32;1404:3;1380:11;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1361:51;;;1434:7;1426:67;;;;-1:-1:-1;;;1426:67:10;;6997:2:13;1426:67:10;;;6979:21:13;7036:2;7016:18;;;7009:30;7075:34;7055:18;;;7048:62;-1:-1:-1;;;7126:18:13;;;7119:45;7181:19;;1426:67:10;6969:237:13;1426:67:10;1093:411;;1133:3;;;;:::i;:::-;;;1093:411;;;;801:709;;:::o;1960:155:12:-;2019:7;2045:63;2101:6;;2045:51;2086:9;;2045:36;2054:9;;2065:15;2045:8;:36::i;:::-;:40;;:51::i;:::-;:55;;:63::i;1516:487:10:-;1596:30;;-1:-1:-1;;;1596:30:10;;1572:21;;-1:-1:-1;;;;;1596:15:10;;;;;:30;;1620:4;;1596:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1661:8;:15;1572:54;;-1:-1:-1;1636:22:10;1686:311;1710:14;1706:1;:18;1686:311;;;1817:11;1831:108;1873:13;1904:18;1923:1;1904:21;;;;;;-1:-1:-1;;;1904:21:10;;;;;;;;1831:108;1817:122;;1954:5;-1:-1:-1;;;;;1954:14:10;;1969:8;1978:1;1969:11;;;;;;-1:-1:-1;;;1969:11:10;;;;;;;;;;;;;;;;;;;1954:32;;-1:-1:-1;;;;;;1954:32:10;;;;;;;;;-1:-1:-1;;;;;1969:11:10;;1982:3;;1954:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1686:311;1726:3;;;;:::i;:::-;;;1686:311;;;;1516:487;;;:::o;2276:329::-;1094:13:0;:11;:13::i;:::-;2399:10:10::1;2428:9:::0;2423:111:::1;2447:19;:26;2443:1;:30;2423:111;;;2501:19;2521:1;2501:22;;;;;;-1:-1:-1::0;;;2501:22:10::1;;;;;;;;;;;;;;;2494:29;;;;;:::i;:::-;::::0;-1:-1:-1;2475:3:10;::::1;::::0;::::1;:::i;:::-;;;;2423:111;;;;400:3;2551;:23;;;2543:55;;;::::0;-1:-1:-1;;;2543:55:10;;8472:2:13;2543:55:10::1;::::0;::::1;8454:21:13::0;8511:2;8491:18;;;8484:30;-1:-1:-1;;;8530:18:13;;;8523:49;8589:18;;2543:55:10::1;8444:169:13::0;2231:133:12;2289:7;2315:42;2329:27;2349:6;;2329:15;:13;:15::i;:::-;:19;;:27::i;:::-;2315:9;;;:13;:42::i;2611:107:10:-;1094:13:0;:11;:13::i;:::-;1247:7;1273:6;;2663:48:10::1;::::0;-1:-1:-1;;;;;1273:6:0;;;;2689:21:10::1;2663:48:::0;::::1;;;::::0;2689:21;;2663:48;1247:7:0;2663:48:10;2689:21;1273:6:0;2663:48:10;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;2611:107::o:0;2121:104:12:-;2177:7;2203:15;:13;:15::i;409:25:10:-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;409:25:10;;-1:-1:-1;409:25:10;:::o;2081:198:0:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:0;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:0;;6590:2:13;2161:73:0::1;::::0;::::1;6572:21:13::0;6629:2;6609:18;;;6602:30;6668:34;6648:18;;;6641:62;-1:-1:-1;;;6719:18:13;;;6712:36;6765:19;;2161:73:0::1;6562:228:13::0;2161:73:0::1;2244:28;2263:8;2244:18;:28::i;1197:118:11:-:0;1250:13;;1272:4;;1250:27;;-1:-1:-1;;;1250:27:11;;-1:-1:-1;;;;;1250:13:11;;;;:21;;:27;;1272:4;;;1250:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1303:4:11;;1287:21;;-1:-1:-1;;;;;;1303:4:11;;-1:-1:-1;1287:15:11;:21::i;2724:128:10:-;1094:13:0;:11;:13::i;:::-;2790:5:10::1;-1:-1:-1::0;;;;;2790:14:10::1;;2805:7;1247::0::0;1273:6;-1:-1:-1;;;;;1273:6:0;;1201:85;2805:7:10::1;2814:30;::::0;-1:-1:-1;;;2814:30:10;;-1:-1:-1;;;;;2814:15:10;::::1;::::0;::::1;::::0;:30:::1;::::0;2838:4:::1;::::0;2814:30:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2790:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1321:112:11:-:0;1390:13;;1421:4;;1390:36;;-1:-1:-1;;;1390:36:11;;1364:7;;-1:-1:-1;;;;;1390:13:11;;;;:30;;:36;;1421:4;;;;1390:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3465:96:7:-;3523:7;3549:5;3553:1;3549;:5;:::i;:::-;3542:12;3465:96;-1:-1:-1;;;3465:96:7:o;2755:::-;2813:7;2839:5;2843:1;2839;:5;:::i;1359:130:0:-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:0;719:10:5;1422:23:0;1414:68;;;;-1:-1:-1;;;1414:68:0;;7764:2:13;1414:68:0;;;7746:21:13;;;7783:18;;;7776:30;7842:34;7822:18;;;7815:62;7894:18;;1414:68:0;7736:182:13;1142:122:12;1190:7;1216:41;1250:6;;1216:29;1235:9;;1216:14;;:18;;:29;;;;:::i;1522:111::-;1566:4;1611:15;:13;:15::i;:::-;1589:18;:16;:18::i;:::-;:37;;1582:44;;1522:111;:::o;2433:187:0:-;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:0;;;-1:-1:-1;;;;;;2541:17:0;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2433:187;;:::o;413:105:6:-;471:7;502:1;497;:6;;:14;;510:1;497:14;;;-1:-1:-1;506:1:6;;413:105;-1:-1:-1;413:105:6:o;3122:96:7:-;3180:7;3206:5;3210:1;3206;:5;:::i;3850:96::-;3908:7;3934:5;3938:1;3934;:5;:::i;1639:192:12:-;1687:7;1723:14;;1710:9;;:27;1706:80;;;1760:15;:13;:15::i;1706:80::-;1802:22;1822:1;1802:15;:13;:15::i;:::-;:19;;:22::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:805:13;67:5;120:3;113:4;105:6;101:17;97:27;87:2;;142:5;135;128:20;87:2;182:6;169:20;208:4;232:60;248:43;288:2;248:43;:::i;:::-;232:60;:::i;:::-;314:3;338:2;333:3;326:15;366:2;361:3;357:12;350:19;;401:2;393:6;389:15;453:3;448:2;442;439:1;435:10;427:6;423:23;419:32;416:41;413:2;;;474:5;467;460:20;413:2;500:5;514:276;528:2;525:1;522:9;514:276;;;599:3;586:17;647:10;640:5;636:22;629:5;626:33;616:2;;677:5;670;663:20;616:2;698:18;;736:12;;;;768;;;;546:1;539:9;514:276;;;-1:-1:-1;808:5:13;;77:742;-1:-1:-1;;;;;;;77:742:13:o;824:257::-;883:6;936:2;924:9;915:7;911:23;907:32;904:2;;;957:6;949;942:22;904:2;1001:9;988:23;1020:31;1045:5;1020:31;:::i;1086:1279::-;1203:6;1211;1264:2;1252:9;1243:7;1239:23;1235:32;1232:2;;;1285:6;1277;1270:22;1232:2;1330:9;1317:23;1359:18;1400:2;1392:6;1389:14;1386:2;;;1421:6;1413;1406:22;1386:2;1464:6;1453:9;1449:22;1439:32;;1509:7;1502:4;1498:2;1494:13;1490:27;1480:2;;1536:6;1528;1521:22;1480:2;1577;1564:16;1599:4;1623:60;1639:43;1679:2;1639:43;:::i;1623:60::-;1705:3;1729:2;1724:3;1717:15;1757:2;1752:3;1748:12;1741:19;;1788:2;1784;1780:11;1836:7;1831:2;1825;1822:1;1818:10;1814:2;1810:19;1806:28;1803:41;1800:2;;;1862:6;1854;1847:22;1800:2;1889:6;1880:15;;1904:238;1918:2;1915:1;1912:9;1904:238;;;1989:3;1976:17;2006:31;2031:5;2006:31;:::i;:::-;2050:18;;1936:1;1929:9;;;;;2088:12;;;;2120;;1904:238;;;-1:-1:-1;2161:5:13;-1:-1:-1;;2204:18:13;;2191:32;;-1:-1:-1;;2235:16:13;;;2232:2;;;2269:6;2261;2254:22;2232:2;;2297:62;2351:7;2340:8;2329:9;2325:24;2297:62;:::i;:::-;2287:72;;;1222:1143;;;;;:::o;2370:366::-;2453:6;2506:2;2494:9;2485:7;2481:23;2477:32;2474:2;;;2527:6;2519;2512:22;2474:2;2572:9;2559:23;2605:18;2597:6;2594:30;2591:2;;;2642:6;2634;2627:22;2591:2;2670:60;2722:7;2713:6;2702:9;2698:22;2670:60;:::i;:::-;2660:70;2464:272;-1:-1:-1;;;;2464:272:13:o;2741:297::-;2808:6;2861:2;2849:9;2840:7;2836:23;2832:32;2829:2;;;2882:6;2874;2867:22;2829:2;2919:9;2913:16;2972:5;2965:13;2958:21;2951:5;2948:32;2938:2;;2999:6;2991;2984:22;3043:641;3113:6;3121;3174:2;3162:9;3153:7;3149:23;3145:32;3142:2;;;3195:6;3187;3180:22;3142:2;3240:9;3227:23;3269:18;3310:2;3302:6;3299:14;3296:2;;;3331:6;3323;3316:22;3296:2;3374:6;3363:9;3359:22;3349:32;;3419:7;3412:4;3408:2;3404:13;3400:27;3390:2;;3446:6;3438;3431:22;3390:2;3491;3478:16;3517:2;3509:6;3506:14;3503:2;;;3538:6;3530;3523:22;3503:2;3588:7;3583:2;3574:6;3570:2;3566:15;3562:24;3559:37;3556:2;;;3614:6;3606;3599:22;3556:2;3650;3642:11;;;;;3672:6;;-1:-1:-1;3132:552:13;;-1:-1:-1;;;;3132:552:13:o;3965:190::-;4024:6;4077:2;4065:9;4056:7;4052:23;4048:32;4045:2;;;4098:6;4090;4083:22;4045:2;-1:-1:-1;4126:23:13;;4035:120;-1:-1:-1;4035:120:13:o;4160:194::-;4230:6;4283:2;4271:9;4262:7;4258:23;4254:32;4251:2;;;4304:6;4296;4289:22;4251:2;-1:-1:-1;4332:16:13;;4241:113;-1:-1:-1;4241:113:13:o;4569:203::-;-1:-1:-1;;;;;4733:32:13;;;;4715:51;;4703:2;4688:18;;4670:102::o;4777:274::-;-1:-1:-1;;;;;4969:32:13;;;;4951:51;;5033:2;5018:18;;5011:34;4939:2;4924:18;;4906:145::o;5248:682::-;5431:6;5424:14;5417:22;5406:9;5399:41;5380:4;5459:2;5497;5492;5481:9;5477:18;5470:30;5529:6;5523:13;5572:6;5567:2;5556:9;5552:18;5545:34;5597:4;5610:140;5624:6;5621:1;5618:13;5610:140;;;5719:14;;;5715:23;;5709:30;5685:17;;;5704:2;5681:26;5674:66;5639:10;;5610:140;;;5768:6;5765:1;5762:13;5759:2;;;5838:4;5833:2;5824:6;5813:9;5809:22;5805:31;5798:45;5759:2;-1:-1:-1;5914:2:13;5893:15;-1:-1:-1;;5889:29:13;5874:45;;;;5921:2;5870:54;;5389:541;-1:-1:-1;;;;5389:541:13:o;8997:275::-;9068:2;9062:9;9133:2;9114:13;;-1:-1:-1;;9110:27:13;9098:40;;9168:18;9153:34;;9189:22;;;9150:62;9147:2;;;9215:18;;:::i;:::-;9251:2;9244:22;9042:230;;-1:-1:-1;9042:230:13:o;9277:183::-;9337:4;9370:18;9362:6;9359:30;9356:2;;;9392:18;;:::i;:::-;-1:-1:-1;9437:1:13;9433:14;9449:4;9429:25;;9346:114::o;9465:128::-;9505:3;9536:1;9532:6;9529:1;9526:13;9523:2;;;9542:18;;:::i;:::-;-1:-1:-1;9578:9:13;;9513:80::o;9598:228::-;9637:3;9665:10;9702:2;9699:1;9695:10;9732:2;9729:1;9725:10;9763:3;9759:2;9755:12;9750:3;9747:21;9744:2;;;9771:18;;:::i;:::-;9807:13;;9645:181;-1:-1:-1;;;;9645:181:13:o;9831:217::-;9871:1;9897;9887:2;;-1:-1:-1;;;9922:31:13;;9976:4;9973:1;9966:15;10004:4;9929:1;9994:15;9887:2;-1:-1:-1;10033:9:13;;9877:171::o;10053:168::-;10093:7;10159:1;10155;10151:6;10147:14;10144:1;10141:21;10136:1;10129:9;10122:17;10118:45;10115:2;;;10166:18;;:::i;:::-;-1:-1:-1;10206:9:13;;10105:116::o;10226:125::-;10266:4;10294:1;10291;10288:8;10285:2;;;10299:18;;:::i;:::-;-1:-1:-1;10336:9:13;;10275:76::o;10356:135::-;10395:3;-1:-1:-1;;10416:17:13;;10413:2;;;10436:18;;:::i;:::-;-1:-1:-1;10483:1:13;10472:13;;10403:88::o;10496:127::-;10557:10;10552:3;10548:20;10545:1;10538:31;10588:4;10585:1;10578:15;10612:4;10609:1;10602:15;10628:127;10689:10;10684:3;10680:20;10677:1;10670:31;10720:4;10717:1;10710:15;10744:4;10741:1;10734:15;10760:131;-1:-1:-1;;;;;10835:31:13;;10825:42;;10815:2;;10881:1;10878;10871:12"},"methodIdentifiers":{"PERCENTAGE_SCALE()":"3f26479e","accounts(uint256)":"f2a40db8","callable()":"6a2ab602","checkPercentages(uint32[])":"c45ff544","checkUpkeep(bytes)":"6e04ff0d","communityFund()":"00f380f4","distributeERC20(address)":"bce58269","distributeETH()":"b8b9b549","distributeMAHA()":"5c45f349","getCurrentEpoch()":"b97dd9e2","getLastEpoch()":"398bac63","getNextEpoch()":"efe97d05","getPeriod()":"1ed24195","getStartTime()":"c828371e","maha()":"3de00c36","nextEpochPoint()":"c5967c26","owner()":"8da5cb5b","percentAllocations(uint256)":"003f619d","performUpkeep(bytes)":"4585e33b","releasable()":"fbccedae","releaseAndDistributeMAHA()":"f46b65ac","renounceOwnership()":"715018a6","setPeriod(uint256)":"0f3a9f65","transferOwnership(address)":"f2fde38b","updateSplit(address[],uint32[])":"44def48f","withdrawERC20(address)":"f4f3b200","withdrawETH()":"e086e5ec"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint32[]\",\"name\":\"_percentAllocations\",\"type\":\"uint32[]\"},{\"internalType\":\"contract IERC20\",\"name\":\"_maha\",\"type\":\"address\"},{\"internalType\":\"contract ICommunityFund\",\"name\":\"_fund\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ETHReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"PERCENTAGE_SCALE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"accounts\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"callable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"_percentAllocations\",\"type\":\"uint32[]\"}],\"name\":\"checkPercentages\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"checkUpkeep\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"upkeepNeeded\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"performData\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"communityFund\",\"outputs\":[{\"internalType\":\"contract ICommunityFund\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"distributeERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"distributeETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"distributeMAHA\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNextEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStartTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maha\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextEpochPoint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"percentAllocations\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"performUpkeep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"releasable\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"releaseAndDistributeMAHA\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_period\",\"type\":\"uint256\"}],\"name\":\"setPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint32[]\",\"name\":\"_percentAllocations\",\"type\":\"uint32[]\"}],\"name\":\"updateSplit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"withdrawERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"This is a keeper contract that splits the maha from the ecosystem fund into the various treasuries on a monthly basis via a keeper. Currently deployed at: https://etherscan.io/address/0x5f7a88d09491b89f0e9a02e3cce3309ef1502ab8\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/splitters/MAHASplitKeeper.sol\":\"MAHASplitKeeper\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"keccak256\":\"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95\",\"dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x032807210d1d7d218963d7355d62e021a84bf1b3339f4f50be2f63b53cccaf29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11756f42121f6541a35a8339ea899ee7514cfaa2e6d740625fcc844419296aa6\",\"dweb:/ipfs/QmekMuk6BY4DAjzeXr4MSbKdgoqqsZnA8JPtuyWc6CwXHf\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xd15c3e400531f00203839159b2b8e7209c5158b35618f570c695b7e47f12e9f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b600b852e0597aa69989cc263111f02097e2827edc1bdc70306303e3af5e9929\",\"dweb:/ipfs/QmU4WfM28A1nDqghuuGeFmN3CnVrk6opWtiF65K4vhFPeC\"]},\"@openzeppelin/contracts/utils/math/SafeMath.sol\":{\"keccak256\":\"0x0f633a0223d9a1dcccfcf38a64c9de0874dfcbfac0c6941ccf074d63a2ce0e1e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://864a40efcffdf408044c332a5aa38ec5618ed7b4eecb8f65faf45671bd6cdc65\",\"dweb:/ipfs/QmQJquTMtc6fgm5JQzGdsGpA2fqBe3MHWEdt2qzaLySMdN\"]},\"contracts/interfaces/IEpoch.sol\":{\"keccak256\":\"0x2c5a127cb728ce5d2bd5c1a3d017e96d8eb13a846920a1aea64ffa1979316d68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89512617e1fb067b242c55dfc7e03230e54436e46c51453dbee84b25f0391bd8\",\"dweb:/ipfs/QmQgVCVUp1eQafMQQHpTafDk6dADe15rsmjhTKT4YetdoC\"]},\"contracts/interfaces/KeeperCompatibleInterface.sol\":{\"keccak256\":\"0xd01541bff925ba14b83a37a3ab6ea20329125fe2d71a7e28afc46a9791530f0d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://688f76eedb1a50c6de88bdb306c2c04a0883fa29f1ea47de7e4e51a8c5831ed7\",\"dweb:/ipfs/QmdLrXmwGrPAJXQnXasBZFwxAP7BTq5WgDtYhmaJ1nfubW\"]},\"contracts/splitters/FeesSplitter.sol\":{\"keccak256\":\"0xa0442288092faa627851ea6b052660c411324224a41839aa6d7da7691b87cd4e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://12ba18dd287dfd310b6335b4a1ba587cf2cc24b5d2b9f91d5499022341e08d8e\",\"dweb:/ipfs/QmW3u4GMyq1srCQULTyhHHakde9RsgpbQKCVSqnhDb1tWX\"]},\"contracts/splitters/MAHASplitKeeper.sol\":{\"keccak256\":\"0x99d071085fb845b0cf73042c6d2e7e6a2c57d1dd5aa2822712a15115475c72c0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9b9a16fe37c5d4ca861ff18b16f5067f2cf0b0c657ca35480733a26740574177\",\"dweb:/ipfs/QmPSX62Nmn4CVLPKZagyUD6x1kqeM8AptrLxEYSztgFLwW\"]},\"contracts/utils/Epoch.sol\":{\"keccak256\":\"0x2dbd8fd988fca4e099ad556f76607918860725d64736ab14d9c7299246c51b10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8299f51efd2a19501423a152bbc1d155dd80cc6b7c4cda0998078843800a408\",\"dweb:/ipfs/QmYEYtJtEQ42SkKdXx2HpN4BJsKEgWkDPa3jVHPU9dG8uW\"]}},\"version\":1}"}},"contracts/utils/Epoch.sol":{"Epoch":{"abi":[{"inputs":[{"internalType":"uint256","name":"_period","type":"uint256"},{"internalType":"uint256","name":"_startTime","type":"uint256"},{"internalType":"uint256","name":"_startEpoch","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"callable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLastEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNextEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextEpochPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"setPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:770:13","statements":[{"nodeType":"YulBlock","src":"6:3:13","statements":[]},{"body":{"nodeType":"YulBlock","src":"129:201:13","statements":[{"body":{"nodeType":"YulBlock","src":"175:26:13","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"184:6:13"},{"name":"value0","nodeType":"YulIdentifier","src":"192:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"177:6:13"},"nodeType":"YulFunctionCall","src":"177:22:13"},"nodeType":"YulExpressionStatement","src":"177:22:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"150:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"159:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"146:3:13"},"nodeType":"YulFunctionCall","src":"146:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"171:2:13","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"142:3:13"},"nodeType":"YulFunctionCall","src":"142:32:13"},"nodeType":"YulIf","src":"139:2:13"},{"nodeType":"YulAssignment","src":"210:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"226:9:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"220:5:13"},"nodeType":"YulFunctionCall","src":"220:16:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"210:6:13"}]},{"nodeType":"YulAssignment","src":"245:35:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"265:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"276:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"261:3:13"},"nodeType":"YulFunctionCall","src":"261:18:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"255:5:13"},"nodeType":"YulFunctionCall","src":"255:25:13"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"245:6:13"}]},{"nodeType":"YulAssignment","src":"289:35:13","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"309:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"320:2:13","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"305:3:13"},"nodeType":"YulFunctionCall","src":"305:18:13"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"299:5:13"},"nodeType":"YulFunctionCall","src":"299:25:13"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"289:6:13"}]}]},"name":"abi_decode_tuple_t_uint256t_uint256t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"79:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"90:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"102:6:13","type":""},{"name":"value1","nodeType":"YulTypedName","src":"110:6:13","type":""},{"name":"value2","nodeType":"YulTypedName","src":"118:6:13","type":""}],"src":"14:316:13"},{"body":{"nodeType":"YulBlock","src":"383:80:13","statements":[{"body":{"nodeType":"YulBlock","src":"410:22:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"412:16:13"},"nodeType":"YulFunctionCall","src":"412:18:13"},"nodeType":"YulExpressionStatement","src":"412:18:13"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"399:1:13"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"406:1:13"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"402:3:13"},"nodeType":"YulFunctionCall","src":"402:6:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"396:2:13"},"nodeType":"YulFunctionCall","src":"396:13:13"},"nodeType":"YulIf","src":"393:2:13"},{"nodeType":"YulAssignment","src":"441:16:13","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"452:1:13"},{"name":"y","nodeType":"YulIdentifier","src":"455:1:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"448:3:13"},"nodeType":"YulFunctionCall","src":"448:9:13"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"441:3:13"}]}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"366:1:13","type":""},{"name":"y","nodeType":"YulTypedName","src":"369:1:13","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"375:3:13","type":""}],"src":"335:128:13"},{"body":{"nodeType":"YulBlock","src":"520:116:13","statements":[{"body":{"nodeType":"YulBlock","src":"579:22:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"581:16:13"},"nodeType":"YulFunctionCall","src":"581:18:13"},"nodeType":"YulExpressionStatement","src":"581:18:13"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"551:1:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"544:6:13"},"nodeType":"YulFunctionCall","src":"544:9:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"537:6:13"},"nodeType":"YulFunctionCall","src":"537:17:13"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"559:1:13"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"570:1:13","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"566:3:13"},"nodeType":"YulFunctionCall","src":"566:6:13"},{"name":"x","nodeType":"YulIdentifier","src":"574:1:13"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"562:3:13"},"nodeType":"YulFunctionCall","src":"562:14:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"556:2:13"},"nodeType":"YulFunctionCall","src":"556:21:13"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"533:3:13"},"nodeType":"YulFunctionCall","src":"533:45:13"},"nodeType":"YulIf","src":"530:2:13"},{"nodeType":"YulAssignment","src":"610:20:13","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"625:1:13"},{"name":"y","nodeType":"YulIdentifier","src":"628:1:13"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"621:3:13"},"nodeType":"YulFunctionCall","src":"621:9:13"},"variableNames":[{"name":"product","nodeType":"YulIdentifier","src":"610:7:13"}]}]},"name":"checked_mul_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"499:1:13","type":""},{"name":"y","nodeType":"YulTypedName","src":"502:1:13","type":""}],"returnVariables":[{"name":"product","nodeType":"YulTypedName","src":"508:7:13","type":""}],"src":"468:168:13"},{"body":{"nodeType":"YulBlock","src":"673:95:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"690:1:13","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"697:3:13","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"702:10:13","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"693:3:13"},"nodeType":"YulFunctionCall","src":"693:20:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"683:6:13"},"nodeType":"YulFunctionCall","src":"683:31:13"},"nodeType":"YulExpressionStatement","src":"683:31:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"730:1:13","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"733:4:13","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"723:6:13"},"nodeType":"YulFunctionCall","src":"723:15:13"},"nodeType":"YulExpressionStatement","src":"723:15:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"754:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"757:4:13","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"747:6:13"},"nodeType":"YulFunctionCall","src":"747:15:13"},"nodeType":"YulExpressionStatement","src":"747:15:13"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"641:127:13"}]},"contents":"{\n    { }\n    function abi_decode_tuple_t_uint256t_uint256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value0, value0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n        value2 := mload(add(headStart, 64))\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(not(0), x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n}","id":13,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405234801561001057600080fd5b5060405161061f38038061061f83398101604081905261002f916100ea565b6100383361007b565b6001839055600282905561006f61005a82856100cb602090811b61025a17901c565b6002546100de60201b61026d1790919060201c565b60035550610164915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006100d7828461012f565b9392505050565b60006100d78284610117565b6000806000606084860312156100fe578283fd5b8351925060208401519150604084015190509250925092565b6000821982111561012a5761012a61014e565b500190565b60008160001904831182151516156101495761014961014e565b500290565b634e487b7160e01b600052601160045260246000fd5b6104ac806101736000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80638da5cb5b116100715780638da5cb5b14610102578063b97dd9e21461011d578063c5967c2614610125578063c828371e1461012d578063efe97d0514610135578063f2fde38b1461013d57600080fd5b80630f3a9f65146100ae5780631ed24195146100c3578063398bac63146100da5780636a2ab602146100e2578063715018a6146100fa575b600080fd5b6100c16100bc3660046103da565b610150565b005b6001545b6040519081526020015b60405180910390f35b6100c761015d565b6100ea61016c565b60405190151581526020016100d1565b6100c1610176565b6000546040516001600160a01b0390911681526020016100d1565b6100c761018a565b6100c76101b0565b6002546100c7565b6100c76101d2565b6100c161014b3660046103b3565b6101dc565b610158610279565b600155565b60006101676102d3565b905090565b60006101676102f2565b61017e610279565b610188600061030b565b565b60006101676001546101aa6002546101a46002544261035b565b90610372565b9061037e565b60006101676101c96001546101c361038a565b9061025a565b6002549061026d565b600061016761038a565b6101e4610279565b6001600160a01b03811661024e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6102578161030b565b50565b6000610266828461042a565b9392505050565b600061026682846103f2565b6000546001600160a01b031633146101885760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610245565b60006101676001546101aa60025460035461037290919063ffffffff16565b60006102fc61038a565b61030461018a565b1015905090565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008183101561036b5781610266565b5090919050565b60006102668284610449565b6000610266828461040a565b600060035460025414156103a0576101676102d3565b61016760016103ad6102d3565b9061026d565b6000602082840312156103c4578081fd5b81356001600160a01b0381168114610266578182fd5b6000602082840312156103eb578081fd5b5035919050565b6000821982111561040557610405610460565b500190565b60008261042557634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561044457610444610460565b500290565b60008282101561045b5761045b610460565b500390565b634e487b7160e01b600052601160045260246000fdfea264697066735822122006bd3298e4c36a20b64fda9a6a654ac90ae9d7e350f6ee162a8e65802dcad2ea64736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x61F CODESIZE SUB DUP1 PUSH2 0x61F DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0xEA JUMP JUMPDEST PUSH2 0x38 CALLER PUSH2 0x7B JUMP JUMPDEST PUSH1 0x1 DUP4 SWAP1 SSTORE PUSH1 0x2 DUP3 SWAP1 SSTORE PUSH2 0x6F PUSH2 0x5A DUP3 DUP6 PUSH2 0xCB PUSH1 0x20 SWAP1 DUP2 SHL PUSH2 0x25A OR SWAP1 SHR JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0xDE PUSH1 0x20 SHL PUSH2 0x26D OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x3 SSTORE POP PUSH2 0x164 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD7 DUP3 DUP5 PUSH2 0x12F JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD7 DUP3 DUP5 PUSH2 0x117 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xFE JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD SWAP3 POP PUSH1 0x20 DUP5 ADD MLOAD SWAP2 POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x12A JUMPI PUSH2 0x12A PUSH2 0x14E JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x149 JUMPI PUSH2 0x149 PUSH2 0x14E JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x4AC DUP1 PUSH2 0x173 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x102 JUMPI DUP1 PUSH4 0xB97DD9E2 EQ PUSH2 0x11D JUMPI DUP1 PUSH4 0xC5967C26 EQ PUSH2 0x125 JUMPI DUP1 PUSH4 0xC828371E EQ PUSH2 0x12D JUMPI DUP1 PUSH4 0xEFE97D05 EQ PUSH2 0x135 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x13D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xF3A9F65 EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0x1ED24195 EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x398BAC63 EQ PUSH2 0xDA JUMPI DUP1 PUSH4 0x6A2AB602 EQ PUSH2 0xE2 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xFA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC1 PUSH2 0xBC CALLDATASIZE PUSH1 0x4 PUSH2 0x3DA JUMP JUMPDEST PUSH2 0x150 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC7 PUSH2 0x15D JUMP JUMPDEST PUSH2 0xEA PUSH2 0x16C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD1 JUMP JUMPDEST PUSH2 0xC1 PUSH2 0x176 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD1 JUMP JUMPDEST PUSH2 0xC7 PUSH2 0x18A JUMP JUMPDEST PUSH2 0xC7 PUSH2 0x1B0 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0xC7 JUMP JUMPDEST PUSH2 0xC7 PUSH2 0x1D2 JUMP JUMPDEST PUSH2 0xC1 PUSH2 0x14B CALLDATASIZE PUSH1 0x4 PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x1DC JUMP JUMPDEST PUSH2 0x158 PUSH2 0x279 JUMP JUMPDEST PUSH1 0x1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x167 PUSH2 0x2D3 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x167 PUSH2 0x2F2 JUMP JUMPDEST PUSH2 0x17E PUSH2 0x279 JUMP JUMPDEST PUSH2 0x188 PUSH1 0x0 PUSH2 0x30B JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x167 PUSH1 0x1 SLOAD PUSH2 0x1AA PUSH1 0x2 SLOAD PUSH2 0x1A4 PUSH1 0x2 SLOAD TIMESTAMP PUSH2 0x35B JUMP JUMPDEST SWAP1 PUSH2 0x372 JUMP JUMPDEST SWAP1 PUSH2 0x37E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x167 PUSH2 0x1C9 PUSH1 0x1 SLOAD PUSH2 0x1C3 PUSH2 0x38A JUMP JUMPDEST SWAP1 PUSH2 0x25A JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 PUSH2 0x26D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x167 PUSH2 0x38A JUMP JUMPDEST PUSH2 0x1E4 PUSH2 0x279 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x24E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x257 DUP2 PUSH2 0x30B JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x266 DUP3 DUP5 PUSH2 0x42A JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x266 DUP3 DUP5 PUSH2 0x3F2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x188 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x245 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x167 PUSH1 0x1 SLOAD PUSH2 0x1AA PUSH1 0x2 SLOAD PUSH1 0x3 SLOAD PUSH2 0x372 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2FC PUSH2 0x38A JUMP JUMPDEST PUSH2 0x304 PUSH2 0x18A JUMP JUMPDEST LT ISZERO SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT ISZERO PUSH2 0x36B JUMPI DUP2 PUSH2 0x266 JUMP JUMPDEST POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x266 DUP3 DUP5 PUSH2 0x449 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x266 DUP3 DUP5 PUSH2 0x40A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 SLOAD PUSH1 0x2 SLOAD EQ ISZERO PUSH2 0x3A0 JUMPI PUSH2 0x167 PUSH2 0x2D3 JUMP JUMPDEST PUSH2 0x167 PUSH1 0x1 PUSH2 0x3AD PUSH2 0x2D3 JUMP JUMPDEST SWAP1 PUSH2 0x26D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3C4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x266 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3EB JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x405 JUMPI PUSH2 0x405 PUSH2 0x460 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x425 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 DUP2 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x444 JUMPI PUSH2 0x444 PUSH2 0x460 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x45B JUMPI PUSH2 0x45B PUSH2 0x460 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MOD 0xBD ORIGIN SWAP9 0xE4 0xC3 PUSH11 0x20B64FDA9A6A654AC90AE9 0xD7 0xE3 POP 0xF6 0xEE AND 0x2A DUP15 PUSH6 0x802DCAD2EA64 PUSH20 0x6F6C634300080400330000000000000000000000 ","sourceMap":"315:2405:12:-:0;;;529:230;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;936:32:0;719:10:5;936:18:0;:32::i;:::-;639:6:12;:16;;;665:9;:22;;;714:38;728:23;:11;639:16;728:15;;;;;;;:23;;:::i;:::-;714:9;;:13;;;;;;:38;;;;:::i;:::-;697:14;:55;-1:-1:-1;315:2405:12;;-1:-1:-1;;315:2405:12;2433:187:0;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:0;;;-1:-1:-1;;;;;;2541:17:0;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2433:187;;:::o;3465:96:7:-;3523:7;3549:5;3553:1;3549;:5;:::i;:::-;3542:12;3465:96;-1:-1:-1;;;3465:96:7:o;2755:::-;2813:7;2839:5;2843:1;2839;:5;:::i;14:316:13:-;102:6;110;118;171:2;159:9;150:7;146:23;142:32;139:2;;;192:6;184;177:22;139:2;226:9;220:16;210:26;;276:2;265:9;261:18;255:25;245:35;;320:2;309:9;305:18;299:25;289:35;;129:201;;;;;:::o;335:128::-;375:3;406:1;402:6;399:1;396:13;393:2;;;412:18;;:::i;:::-;-1:-1:-1;448:9:13;;383:80::o;468:168::-;508:7;574:1;570;566:6;562:14;559:1;556:21;551:1;544:9;537:17;533:45;530:2;;;581:18;;:::i;:::-;-1:-1:-1;621:9:13;;520:116::o;641:127::-;702:10;697:3;693:20;690:1;683:31;733:4;730:1;723:15;757:4;754:1;747:15;673:95;315:2405:12;;;;;;"},"deployedBytecode":{"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:2657:13","statements":[{"nodeType":"YulBlock","src":"6:3:13","statements":[]},{"body":{"nodeType":"YulBlock","src":"84:236:13","statements":[{"body":{"nodeType":"YulBlock","src":"130:26:13","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"139:6:13"},{"name":"value0","nodeType":"YulIdentifier","src":"147:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"132:6:13"},"nodeType":"YulFunctionCall","src":"132:22:13"},"nodeType":"YulExpressionStatement","src":"132:22:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"105:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"114:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"101:3:13"},"nodeType":"YulFunctionCall","src":"101:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"126:2:13","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"97:3:13"},"nodeType":"YulFunctionCall","src":"97:32:13"},"nodeType":"YulIf","src":"94:2:13"},{"nodeType":"YulVariableDeclaration","src":"165:36:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"191:9:13"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"178:12:13"},"nodeType":"YulFunctionCall","src":"178:23:13"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"169:5:13","type":""}]},{"body":{"nodeType":"YulBlock","src":"264:26:13","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"273:6:13"},{"name":"value0","nodeType":"YulIdentifier","src":"281:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"266:6:13"},"nodeType":"YulFunctionCall","src":"266:22:13"},"nodeType":"YulExpressionStatement","src":"266:22:13"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"223:5:13"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"234:5:13"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"249:3:13","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"254:1:13","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"245:3:13"},"nodeType":"YulFunctionCall","src":"245:11:13"},{"kind":"number","nodeType":"YulLiteral","src":"258:1:13","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"241:3:13"},"nodeType":"YulFunctionCall","src":"241:19:13"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"230:3:13"},"nodeType":"YulFunctionCall","src":"230:31:13"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"220:2:13"},"nodeType":"YulFunctionCall","src":"220:42:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"213:6:13"},"nodeType":"YulFunctionCall","src":"213:50:13"},"nodeType":"YulIf","src":"210:2:13"},{"nodeType":"YulAssignment","src":"299:15:13","value":{"name":"value","nodeType":"YulIdentifier","src":"309:5:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"299:6:13"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"50:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"61:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"73:6:13","type":""}],"src":"14:306:13"},{"body":{"nodeType":"YulBlock","src":"395:120:13","statements":[{"body":{"nodeType":"YulBlock","src":"441:26:13","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"450:6:13"},{"name":"value0","nodeType":"YulIdentifier","src":"458:6:13"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"443:6:13"},"nodeType":"YulFunctionCall","src":"443:22:13"},"nodeType":"YulExpressionStatement","src":"443:22:13"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"416:7:13"},{"name":"headStart","nodeType":"YulIdentifier","src":"425:9:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"412:3:13"},"nodeType":"YulFunctionCall","src":"412:23:13"},{"kind":"number","nodeType":"YulLiteral","src":"437:2:13","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"408:3:13"},"nodeType":"YulFunctionCall","src":"408:32:13"},"nodeType":"YulIf","src":"405:2:13"},{"nodeType":"YulAssignment","src":"476:33:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"499:9:13"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"486:12:13"},"nodeType":"YulFunctionCall","src":"486:23:13"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"476:6:13"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"361:9:13","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"372:7:13","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"384:6:13","type":""}],"src":"325:190:13"},{"body":{"nodeType":"YulBlock","src":"621:102:13","statements":[{"nodeType":"YulAssignment","src":"631:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"643:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"654:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"639:3:13"},"nodeType":"YulFunctionCall","src":"639:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"631:4:13"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"673:9:13"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"688:6:13"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"704:3:13","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"709:1:13","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"700:3:13"},"nodeType":"YulFunctionCall","src":"700:11:13"},{"kind":"number","nodeType":"YulLiteral","src":"713:1:13","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"696:3:13"},"nodeType":"YulFunctionCall","src":"696:19:13"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"684:3:13"},"nodeType":"YulFunctionCall","src":"684:32:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"666:6:13"},"nodeType":"YulFunctionCall","src":"666:51:13"},"nodeType":"YulExpressionStatement","src":"666:51:13"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"590:9:13","type":""},{"name":"value0","nodeType":"YulTypedName","src":"601:6:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"612:4:13","type":""}],"src":"520:203:13"},{"body":{"nodeType":"YulBlock","src":"823:92:13","statements":[{"nodeType":"YulAssignment","src":"833:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"845:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"856:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"841:3:13"},"nodeType":"YulFunctionCall","src":"841:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"833:4:13"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"875:9:13"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"900:6:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"893:6:13"},"nodeType":"YulFunctionCall","src":"893:14:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"886:6:13"},"nodeType":"YulFunctionCall","src":"886:22:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"868:6:13"},"nodeType":"YulFunctionCall","src":"868:41:13"},"nodeType":"YulExpressionStatement","src":"868:41:13"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"792:9:13","type":""},{"name":"value0","nodeType":"YulTypedName","src":"803:6:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"814:4:13","type":""}],"src":"728:187:13"},{"body":{"nodeType":"YulBlock","src":"1094:228:13","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1111:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"1122:2:13","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1104:6:13"},"nodeType":"YulFunctionCall","src":"1104:21:13"},"nodeType":"YulExpressionStatement","src":"1104:21:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1145:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"1156:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1141:3:13"},"nodeType":"YulFunctionCall","src":"1141:18:13"},{"kind":"number","nodeType":"YulLiteral","src":"1161:2:13","type":"","value":"38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1134:6:13"},"nodeType":"YulFunctionCall","src":"1134:30:13"},"nodeType":"YulExpressionStatement","src":"1134:30:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1184:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"1195:2:13","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1180:3:13"},"nodeType":"YulFunctionCall","src":"1180:18:13"},{"kind":"string","nodeType":"YulLiteral","src":"1200:34:13","type":"","value":"Ownable: new owner is the zero a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1173:6:13"},"nodeType":"YulFunctionCall","src":"1173:62:13"},"nodeType":"YulExpressionStatement","src":"1173:62:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1255:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"1266:2:13","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1251:3:13"},"nodeType":"YulFunctionCall","src":"1251:18:13"},{"kind":"string","nodeType":"YulLiteral","src":"1271:8:13","type":"","value":"ddress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1244:6:13"},"nodeType":"YulFunctionCall","src":"1244:36:13"},"nodeType":"YulExpressionStatement","src":"1244:36:13"},{"nodeType":"YulAssignment","src":"1289:27:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1301:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"1312:3:13","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1297:3:13"},"nodeType":"YulFunctionCall","src":"1297:19:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1289:4:13"}]}]},"name":"abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1071:9:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1085:4:13","type":""}],"src":"920:402:13"},{"body":{"nodeType":"YulBlock","src":"1501:182:13","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1518:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"1529:2:13","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1511:6:13"},"nodeType":"YulFunctionCall","src":"1511:21:13"},"nodeType":"YulExpressionStatement","src":"1511:21:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1552:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"1563:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1548:3:13"},"nodeType":"YulFunctionCall","src":"1548:18:13"},{"kind":"number","nodeType":"YulLiteral","src":"1568:2:13","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1541:6:13"},"nodeType":"YulFunctionCall","src":"1541:30:13"},"nodeType":"YulExpressionStatement","src":"1541:30:13"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1591:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"1602:2:13","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1587:3:13"},"nodeType":"YulFunctionCall","src":"1587:18:13"},{"kind":"string","nodeType":"YulLiteral","src":"1607:34:13","type":"","value":"Ownable: caller is not the owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1580:6:13"},"nodeType":"YulFunctionCall","src":"1580:62:13"},"nodeType":"YulExpressionStatement","src":"1580:62:13"},{"nodeType":"YulAssignment","src":"1651:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1663:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"1674:2:13","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1659:3:13"},"nodeType":"YulFunctionCall","src":"1659:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1651:4:13"}]}]},"name":"abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1478:9:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1492:4:13","type":""}],"src":"1327:356:13"},{"body":{"nodeType":"YulBlock","src":"1789:76:13","statements":[{"nodeType":"YulAssignment","src":"1799:26:13","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1811:9:13"},{"kind":"number","nodeType":"YulLiteral","src":"1822:2:13","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1807:3:13"},"nodeType":"YulFunctionCall","src":"1807:18:13"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1799:4:13"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1841:9:13"},{"name":"value0","nodeType":"YulIdentifier","src":"1852:6:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1834:6:13"},"nodeType":"YulFunctionCall","src":"1834:25:13"},"nodeType":"YulExpressionStatement","src":"1834:25:13"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1758:9:13","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1769:6:13","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1780:4:13","type":""}],"src":"1688:177:13"},{"body":{"nodeType":"YulBlock","src":"1918:80:13","statements":[{"body":{"nodeType":"YulBlock","src":"1945:22:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"1947:16:13"},"nodeType":"YulFunctionCall","src":"1947:18:13"},"nodeType":"YulExpressionStatement","src":"1947:18:13"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"1934:1:13"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"1941:1:13"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1937:3:13"},"nodeType":"YulFunctionCall","src":"1937:6:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1931:2:13"},"nodeType":"YulFunctionCall","src":"1931:13:13"},"nodeType":"YulIf","src":"1928:2:13"},{"nodeType":"YulAssignment","src":"1976:16:13","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"1987:1:13"},{"name":"y","nodeType":"YulIdentifier","src":"1990:1:13"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1983:3:13"},"nodeType":"YulFunctionCall","src":"1983:9:13"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"1976:3:13"}]}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"1901:1:13","type":""},{"name":"y","nodeType":"YulTypedName","src":"1904:1:13","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"1910:3:13","type":""}],"src":"1870:128:13"},{"body":{"nodeType":"YulBlock","src":"2049:171:13","statements":[{"body":{"nodeType":"YulBlock","src":"2080:111:13","statements":[{"expression":{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"2101:1:13"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2108:3:13","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2113:10:13","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2104:3:13"},"nodeType":"YulFunctionCall","src":"2104:20:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2094:6:13"},"nodeType":"YulFunctionCall","src":"2094:31:13"},"nodeType":"YulExpressionStatement","src":"2094:31:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2145:1:13","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2148:4:13","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2138:6:13"},"nodeType":"YulFunctionCall","src":"2138:15:13"},"nodeType":"YulExpressionStatement","src":"2138:15:13"},{"expression":{"arguments":[{"name":"r","nodeType":"YulIdentifier","src":"2173:1:13"},{"kind":"number","nodeType":"YulLiteral","src":"2176:4:13","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2166:6:13"},"nodeType":"YulFunctionCall","src":"2166:15:13"},"nodeType":"YulExpressionStatement","src":"2166:15:13"}]},"condition":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"2069:1:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2062:6:13"},"nodeType":"YulFunctionCall","src":"2062:9:13"},"nodeType":"YulIf","src":"2059:2:13"},{"nodeType":"YulAssignment","src":"2200:14:13","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2209:1:13"},{"name":"y","nodeType":"YulIdentifier","src":"2212:1:13"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"2205:3:13"},"nodeType":"YulFunctionCall","src":"2205:9:13"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"2200:1:13"}]}]},"name":"checked_div_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"2034:1:13","type":""},{"name":"y","nodeType":"YulTypedName","src":"2037:1:13","type":""}],"returnVariables":[{"name":"r","nodeType":"YulTypedName","src":"2043:1:13","type":""}],"src":"2003:217:13"},{"body":{"nodeType":"YulBlock","src":"2277:116:13","statements":[{"body":{"nodeType":"YulBlock","src":"2336:22:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"2338:16:13"},"nodeType":"YulFunctionCall","src":"2338:18:13"},"nodeType":"YulExpressionStatement","src":"2338:18:13"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2308:1:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2301:6:13"},"nodeType":"YulFunctionCall","src":"2301:9:13"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2294:6:13"},"nodeType":"YulFunctionCall","src":"2294:17:13"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"2316:1:13"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2327:1:13","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2323:3:13"},"nodeType":"YulFunctionCall","src":"2323:6:13"},{"name":"x","nodeType":"YulIdentifier","src":"2331:1:13"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"2319:3:13"},"nodeType":"YulFunctionCall","src":"2319:14:13"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2313:2:13"},"nodeType":"YulFunctionCall","src":"2313:21:13"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2290:3:13"},"nodeType":"YulFunctionCall","src":"2290:45:13"},"nodeType":"YulIf","src":"2287:2:13"},{"nodeType":"YulAssignment","src":"2367:20:13","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2382:1:13"},{"name":"y","nodeType":"YulIdentifier","src":"2385:1:13"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2378:3:13"},"nodeType":"YulFunctionCall","src":"2378:9:13"},"variableNames":[{"name":"product","nodeType":"YulIdentifier","src":"2367:7:13"}]}]},"name":"checked_mul_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"2256:1:13","type":""},{"name":"y","nodeType":"YulTypedName","src":"2259:1:13","type":""}],"returnVariables":[{"name":"product","nodeType":"YulTypedName","src":"2265:7:13","type":""}],"src":"2225:168:13"},{"body":{"nodeType":"YulBlock","src":"2447:76:13","statements":[{"body":{"nodeType":"YulBlock","src":"2469:22:13","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"2471:16:13"},"nodeType":"YulFunctionCall","src":"2471:18:13"},"nodeType":"YulExpressionStatement","src":"2471:18:13"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2463:1:13"},{"name":"y","nodeType":"YulIdentifier","src":"2466:1:13"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2460:2:13"},"nodeType":"YulFunctionCall","src":"2460:8:13"},"nodeType":"YulIf","src":"2457:2:13"},{"nodeType":"YulAssignment","src":"2500:17:13","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2512:1:13"},{"name":"y","nodeType":"YulIdentifier","src":"2515:1:13"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2508:3:13"},"nodeType":"YulFunctionCall","src":"2508:9:13"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"2500:4:13"}]}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"2429:1:13","type":""},{"name":"y","nodeType":"YulTypedName","src":"2432:1:13","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"2438:4:13","type":""}],"src":"2398:125:13"},{"body":{"nodeType":"YulBlock","src":"2560:95:13","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2577:1:13","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2584:3:13","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"2589:10:13","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2580:3:13"},"nodeType":"YulFunctionCall","src":"2580:20:13"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2570:6:13"},"nodeType":"YulFunctionCall","src":"2570:31:13"},"nodeType":"YulExpressionStatement","src":"2570:31:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2617:1:13","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2620:4:13","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2610:6:13"},"nodeType":"YulFunctionCall","src":"2610:15:13"},"nodeType":"YulExpressionStatement","src":"2610:15:13"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2641:1:13","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2644:4:13","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2634:6:13"},"nodeType":"YulFunctionCall","src":"2634:15:13"},"nodeType":"YulExpressionStatement","src":"2634:15:13"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"2528:127:13"}]},"contents":"{\n    { }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(value0, value0) }\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\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 checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(r, shl(224, 0x4e487b71))\n            mstore(4, 0x12)\n            revert(r, 0x24)\n        }\n        r := div(x, y)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(not(0), x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n}","id":13,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100a95760003560e01c80638da5cb5b116100715780638da5cb5b14610102578063b97dd9e21461011d578063c5967c2614610125578063c828371e1461012d578063efe97d0514610135578063f2fde38b1461013d57600080fd5b80630f3a9f65146100ae5780631ed24195146100c3578063398bac63146100da5780636a2ab602146100e2578063715018a6146100fa575b600080fd5b6100c16100bc3660046103da565b610150565b005b6001545b6040519081526020015b60405180910390f35b6100c761015d565b6100ea61016c565b60405190151581526020016100d1565b6100c1610176565b6000546040516001600160a01b0390911681526020016100d1565b6100c761018a565b6100c76101b0565b6002546100c7565b6100c76101d2565b6100c161014b3660046103b3565b6101dc565b610158610279565b600155565b60006101676102d3565b905090565b60006101676102f2565b61017e610279565b610188600061030b565b565b60006101676001546101aa6002546101a46002544261035b565b90610372565b9061037e565b60006101676101c96001546101c361038a565b9061025a565b6002549061026d565b600061016761038a565b6101e4610279565b6001600160a01b03811661024e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6102578161030b565b50565b6000610266828461042a565b9392505050565b600061026682846103f2565b6000546001600160a01b031633146101885760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610245565b60006101676001546101aa60025460035461037290919063ffffffff16565b60006102fc61038a565b61030461018a565b1015905090565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008183101561036b5781610266565b5090919050565b60006102668284610449565b6000610266828461040a565b600060035460025414156103a0576101676102d3565b61016760016103ad6102d3565b9061026d565b6000602082840312156103c4578081fd5b81356001600160a01b0381168114610266578182fd5b6000602082840312156103eb578081fd5b5035919050565b6000821982111561040557610405610460565b500190565b60008261042557634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561044457610444610460565b500290565b60008282101561045b5761045b610460565b500390565b634e487b7160e01b600052601160045260246000fdfea264697066735822122006bd3298e4c36a20b64fda9a6a654ac90ae9d7e350f6ee162a8e65802dcad2ea64736f6c63430008040033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x102 JUMPI DUP1 PUSH4 0xB97DD9E2 EQ PUSH2 0x11D JUMPI DUP1 PUSH4 0xC5967C26 EQ PUSH2 0x125 JUMPI DUP1 PUSH4 0xC828371E EQ PUSH2 0x12D JUMPI DUP1 PUSH4 0xEFE97D05 EQ PUSH2 0x135 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x13D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xF3A9F65 EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0x1ED24195 EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x398BAC63 EQ PUSH2 0xDA JUMPI DUP1 PUSH4 0x6A2AB602 EQ PUSH2 0xE2 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xFA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC1 PUSH2 0xBC CALLDATASIZE PUSH1 0x4 PUSH2 0x3DA JUMP JUMPDEST PUSH2 0x150 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC7 PUSH2 0x15D JUMP JUMPDEST PUSH2 0xEA PUSH2 0x16C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD1 JUMP JUMPDEST PUSH2 0xC1 PUSH2 0x176 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xD1 JUMP JUMPDEST PUSH2 0xC7 PUSH2 0x18A JUMP JUMPDEST PUSH2 0xC7 PUSH2 0x1B0 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH2 0xC7 JUMP JUMPDEST PUSH2 0xC7 PUSH2 0x1D2 JUMP JUMPDEST PUSH2 0xC1 PUSH2 0x14B CALLDATASIZE PUSH1 0x4 PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x1DC JUMP JUMPDEST PUSH2 0x158 PUSH2 0x279 JUMP JUMPDEST PUSH1 0x1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x167 PUSH2 0x2D3 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x167 PUSH2 0x2F2 JUMP JUMPDEST PUSH2 0x17E PUSH2 0x279 JUMP JUMPDEST PUSH2 0x188 PUSH1 0x0 PUSH2 0x30B JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x167 PUSH1 0x1 SLOAD PUSH2 0x1AA PUSH1 0x2 SLOAD PUSH2 0x1A4 PUSH1 0x2 SLOAD TIMESTAMP PUSH2 0x35B JUMP JUMPDEST SWAP1 PUSH2 0x372 JUMP JUMPDEST SWAP1 PUSH2 0x37E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x167 PUSH2 0x1C9 PUSH1 0x1 SLOAD PUSH2 0x1C3 PUSH2 0x38A JUMP JUMPDEST SWAP1 PUSH2 0x25A JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 PUSH2 0x26D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x167 PUSH2 0x38A JUMP JUMPDEST PUSH2 0x1E4 PUSH2 0x279 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x24E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x646472657373 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x257 DUP2 PUSH2 0x30B JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x266 DUP3 DUP5 PUSH2 0x42A JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x266 DUP3 DUP5 PUSH2 0x3F2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x188 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x245 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x167 PUSH1 0x1 SLOAD PUSH2 0x1AA PUSH1 0x2 SLOAD PUSH1 0x3 SLOAD PUSH2 0x372 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2FC PUSH2 0x38A JUMP JUMPDEST PUSH2 0x304 PUSH2 0x18A JUMP JUMPDEST LT ISZERO SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT ISZERO PUSH2 0x36B JUMPI DUP2 PUSH2 0x266 JUMP JUMPDEST POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x266 DUP3 DUP5 PUSH2 0x449 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x266 DUP3 DUP5 PUSH2 0x40A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 SLOAD PUSH1 0x2 SLOAD EQ ISZERO PUSH2 0x3A0 JUMPI PUSH2 0x167 PUSH2 0x2D3 JUMP JUMPDEST PUSH2 0x167 PUSH1 0x1 PUSH2 0x3AD PUSH2 0x2D3 JUMP JUMPDEST SWAP1 PUSH2 0x26D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3C4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x266 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3EB JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x405 JUMPI PUSH2 0x405 PUSH2 0x460 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x425 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 DUP2 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x444 JUMPI PUSH2 0x444 PUSH2 0x460 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x45B JUMPI PUSH2 0x45B PUSH2 0x460 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MOD 0xBD ORIGIN SWAP9 0xE4 0xC3 PUSH11 0x20B64FDA9A6A654AC90AE9 0xD7 0xE3 POP 0xF6 0xEE AND 0x2A DUP15 PUSH6 0x802DCAD2EA64 PUSH20 0x6F6C634300080400330000000000000000000000 ","sourceMap":"315:2405:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2630:88;;;;;;:::i;:::-;;:::i;:::-;;2384:92;2463:6;;2384:92;;;1834:25:13;;;1822:2;1807:18;2384:92:12;;;;;;;;1850:104;;;:::i;1423:93::-;;;:::i;:::-;;;893:14:13;;886:22;868:41;;856:2;841:18;1423:93:12;823:92:13;1831:101:0;;;:::i;1201:85::-;1247:7;1273:6;1201:85;;-1:-1:-1;;;;;1273:6:0;;;666:51:13;;654:2;639:18;1201:85:0;621:102:13;1960:155:12;;;:::i;2231:133::-;;;:::i;2482:98::-;2564:9;;2482:98;;2121:104;;;:::i;2081:198:0:-;;;;;;:::i;:::-;;:::i;2630:88:12:-;1094:13:0;:11;:13::i;:::-;2695:6:12::1;:16:::0;2630:88::o;1850:104::-;1906:7;1932:15;:13;:15::i;:::-;1925:22;;1850:104;:::o;1423:93::-;1475:4;1498:11;:9;:11::i;1831:101:0:-;1094:13;:11;:13::i;:::-;1895:30:::1;1922:1;1895:18;:30::i;:::-;1831:101::o:0;1960:155:12:-;2019:7;2045:63;2101:6;;2045:51;2086:9;;2045:36;2054:9;;2065:15;2045:8;:36::i;:::-;:40;;:51::i;:::-;:55;;:63::i;2231:133::-;2289:7;2315:42;2329:27;2349:6;;2329:15;:13;:15::i;:::-;:19;;:27::i;:::-;2315:9;;;:13;:42::i;2121:104::-;2177:7;2203:15;:13;:15::i;2081:198:0:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2169:22:0;::::1;2161:73;;;::::0;-1:-1:-1;;;2161:73:0;;1122:2:13;2161:73:0::1;::::0;::::1;1104:21:13::0;1161:2;1141:18;;;1134:30;1200:34;1180:18;;;1173:62;-1:-1:-1;;;1251:18:13;;;1244:36;1297:19;;2161:73:0::1;;;;;;;;;2244:28;2263:8;2244:18;:28::i;:::-;2081:198:::0;:::o;3465:96:7:-;3523:7;3549:5;3553:1;3549;:5;:::i;:::-;3542:12;3465:96;-1:-1:-1;;;3465:96:7:o;2755:::-;2813:7;2839:5;2843:1;2839;:5;:::i;1359:130:0:-;1247:7;1273:6;-1:-1:-1;;;;;1273:6:0;719:10:5;1422:23:0;1414:68;;;;-1:-1:-1;;;1414:68:0;;1529:2:13;1414:68:0;;;1511:21:13;;;1548:18;;;1541:30;1607:34;1587:18;;;1580:62;1659:18;;1414:68:0;1501:182:13;1142:122:12;1190:7;1216:41;1250:6;;1216:29;1235:9;;1216:14;;:18;;:29;;;;:::i;1522:111::-;1566:4;1611:15;:13;:15::i;:::-;1589:18;:16;:18::i;:::-;:37;;1582:44;;1522:111;:::o;2433:187:0:-;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:0;;;-1:-1:-1;;;;;;2541:17:0;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2433:187;;:::o;413:105:6:-;471:7;502:1;497;:6;;:14;;510:1;497:14;;;-1:-1:-1;506:1:6;;413:105;-1:-1:-1;413:105:6:o;3122:96:7:-;3180:7;3206:5;3210:1;3206;:5;:::i;3850:96::-;3908:7;3934:5;3938:1;3934;:5;:::i;1639:192:12:-;1687:7;1723:14;;1710:9;;:27;1706:80;;;1760:15;:13;:15::i;1706:80::-;1802:22;1822:1;1802:15;:13;:15::i;:::-;:19;;:22::i;14:306:13:-;73:6;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;178:23;;-1:-1:-1;;;;;230:31:13;;220:42;;210:2;;281:6;273;266:22;325:190;384:6;437:2;425:9;416:7;412:23;408:32;405:2;;;458:6;450;443:22;405:2;-1:-1:-1;486:23:13;;395:120;-1:-1:-1;395:120:13:o;1870:128::-;1910:3;1941:1;1937:6;1934:1;1931:13;1928:2;;;1947:18;;:::i;:::-;-1:-1:-1;1983:9:13;;1918:80::o;2003:217::-;2043:1;2069;2059:2;;-1:-1:-1;;;2094:31:13;;2148:4;2145:1;2138:15;2176:4;2101:1;2166:15;2059:2;-1:-1:-1;2205:9:13;;2049:171::o;2225:168::-;2265:7;2331:1;2327;2323:6;2319:14;2316:1;2313:21;2308:1;2301:9;2294:17;2290:45;2287:2;;;2338:18;;:::i;:::-;-1:-1:-1;2378:9:13;;2277:116::o;2398:125::-;2438:4;2466:1;2463;2460:8;2457:2;;;2471:18;;:::i;:::-;-1:-1:-1;2508:9:13;;2447:76::o;2528:127::-;2589:10;2584:3;2580:20;2577:1;2570:31;2620:4;2617:1;2610:15;2644:4;2641:1;2634:15"},"methodIdentifiers":{"callable()":"6a2ab602","getCurrentEpoch()":"b97dd9e2","getLastEpoch()":"398bac63","getNextEpoch()":"efe97d05","getPeriod()":"1ed24195","getStartTime()":"c828371e","nextEpochPoint()":"c5967c26","owner()":"8da5cb5b","renounceOwnership()":"715018a6","setPeriod(uint256)":"0f3a9f65","transferOwnership(address)":"f2fde38b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_period\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_startEpoch\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"callable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNextEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStartTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextEpochPoint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_period\",\"type\":\"uint256\"}],\"name\":\"setPeriod\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/utils/Epoch.sol\":\"Epoch\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xd15c3e400531f00203839159b2b8e7209c5158b35618f570c695b7e47f12e9f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b600b852e0597aa69989cc263111f02097e2827edc1bdc70306303e3af5e9929\",\"dweb:/ipfs/QmU4WfM28A1nDqghuuGeFmN3CnVrk6opWtiF65K4vhFPeC\"]},\"@openzeppelin/contracts/utils/math/SafeMath.sol\":{\"keccak256\":\"0x0f633a0223d9a1dcccfcf38a64c9de0874dfcbfac0c6941ccf074d63a2ce0e1e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://864a40efcffdf408044c332a5aa38ec5618ed7b4eecb8f65faf45671bd6cdc65\",\"dweb:/ipfs/QmQJquTMtc6fgm5JQzGdsGpA2fqBe3MHWEdt2qzaLySMdN\"]},\"contracts/interfaces/IEpoch.sol\":{\"keccak256\":\"0x2c5a127cb728ce5d2bd5c1a3d017e96d8eb13a846920a1aea64ffa1979316d68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89512617e1fb067b242c55dfc7e03230e54436e46c51453dbee84b25f0391bd8\",\"dweb:/ipfs/QmQgVCVUp1eQafMQQHpTafDk6dADe15rsmjhTKT4YetdoC\"]},\"contracts/utils/Epoch.sol\":{\"keccak256\":\"0x2dbd8fd988fca4e099ad556f76607918860725d64736ab14d9c7299246c51b10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8299f51efd2a19501423a152bbc1d155dd80cc6b7c4cda0998078843800a408\",\"dweb:/ipfs/QmYEYtJtEQ42SkKdXx2HpN4BJsKEgWkDPa3jVHPU9dG8uW\"]}},\"version\":1}"}}}}}