Contract 0x6D9173E597669609ACFc6518c9c47FEaaacfd6a7

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x4c55e0f7107821f9bafc1195cad8263ce357203476de2e4e39006e64cefee2f5Withdraw Ether27462732023-01-29 9:20:428 days 22 hrs ago0x56aa4fb42f77faa81b5ca0d2b3cab33f80899648 IN  0x6d9173e597669609acfc6518c9c47feaaacfd6a70 CLV0.00530504
0x1073f7205f01a18efccdaff82eda0e16c37c07e22de31a2d3c8a9ca8d3a28d99Withdraw Ether27398732023-01-28 11:46:549 days 19 hrs ago0x54708f28a8112495389c102248cef1d8509398f0 IN  0x6d9173e597669609acfc6518c9c47feaaacfd6a70 CLV0.01419742
0x9382e629cf78964a7936b1193714e7111cef23134a4d39acaba828959b1270caWithdraw Ether27398522023-01-28 11:42:429 days 19 hrs ago0x54708f28a8112495389c102248cef1d8509398f0 IN  0x6d9173e597669609acfc6518c9c47feaaacfd6a70 CLV0.01242716
0x51b4c6f3138baecc96e6f6def622a6cc5654a4b6ceee97a7c3b20320abbe4f84Deposit Token27219102023-01-25 23:19:1812 days 8 hrs ago0x56aa4fb42f77faa81b5ca0d2b3cab33f80899648 IN  0x6d9173e597669609acfc6518c9c47feaaacfd6a7278 CLV0.00541804
0x02b46d60038eb83b3efb4c8216394bd9c9d424227fce761ebc52211ad7b7419bWithdraw Ether26828322023-01-20 11:10:3617 days 20 hrs ago0x56aa4fb42f77faa81b5ca0d2b3cab33f80899648 IN  0x6d9173e597669609acfc6518c9c47feaaacfd6a70 CLV0.00549704
0x40c4cfa03759bac9f25068d5b163ec0224e8d177a99367bacf837216c10320c4Deposit Token26348142023-01-13 17:28:3624 days 14 hrs ago0x56aa4fb42f77faa81b5ca0d2b3cab33f80899648 IN  0x6d9173e597669609acfc6518c9c47feaaacfd6a7321 CLV0.00541804
0x1f3c205c05525caa860d05529a71524c795cf1d92cb946f8f0ba8c25f81a1322Withdraw Ether25838722023-01-06 14:02:2431 days 17 hrs ago0x56aa4fb42f77faa81b5ca0d2b3cab33f80899648 IN  0x6d9173e597669609acfc6518c9c47feaaacfd6a70 CLV0.00549704
0x55cfefa995daf9360f548b19a46ab7423659ccb116835fe1e57088beef6feecfDeposit Token25747862023-01-05 7:27:3033 days 9 mins ago0x56aa4fb42f77faa81b5ca0d2b3cab33f80899648 IN  0x6d9173e597669609acfc6518c9c47feaaacfd6a7165 CLV0.00541804
0x17201005e432f3160a91ba16df4134b6065d62ddb00f91cec072d23dbec3c085Withdraw Ether24607062022-12-20 7:05:4849 days 31 mins ago0x56aa4fb42f77faa81b5ca0d2b3cab33f80899648 IN  0x6d9173e597669609acfc6518c9c47feaaacfd6a70 CLV0.00511304
0x2271ba51fd4bb0f4339ee6fd030ffdd900f8f7cd983053630f64ef8510e15fdbDeposit Token24510592022-12-18 22:37:5450 days 8 hrs ago0x56aa4fb42f77faa81b5ca0d2b3cab33f80899648 IN  0x6d9173e597669609acfc6518c9c47feaaacfd6a747 CLV0.0052472
0x43b460200dda1a9d7fb3ddae91671e6bd6ef3e0b5cfebdcfaa297a889ebcdb71Deposit Token24510552022-12-18 22:37:0650 days 9 hrs ago0x56aa4fb42f77faa81b5ca0d2b3cab33f80899648 IN  0x6d9173e597669609acfc6518c9c47feaaacfd6a70 CLV0.00751743
0x0c4e2453dd25fa7b14de5c486b9fc8b6603cce4cb1b1f5a1a7c40fbf525dd5ebWithdraw Ether23387562022-12-03 2:05:4866 days 5 hrs ago0x56aa4fb42f77faa81b5ca0d2b3cab33f80899648 IN  0x6d9173e597669609acfc6518c9c47feaaacfd6a70 CLV0.00644326
0x36d111239ddfa40f3eae915a18c50f2b99734725e635393e26d7bc74babb0c97Withdraw Ether23225252022-11-30 19:04:4268 days 12 hrs ago0x56aa4fb42f77faa81b5ca0d2b3cab33f80899648 IN  0x6d9173e597669609acfc6518c9c47feaaacfd6a70 CLV0.00530504
0xa3d6523113b2eb718b3572a6e5d57a2bef34e49252d6f58c7ecc80991cefe20dWithdraw Ether22994492022-11-27 13:13:1271 days 18 hrs ago0x12dad3425d0ec383ebd9e86139a103ce119aa0b2 IN  0x6d9173e597669609acfc6518c9c47feaaacfd6a70 CLV0.01204316
0x445f4ed8ee894971edd8efaa42460420ff24aac95a64f98fa1529f8932189755Deposit Token22953362022-11-26 23:23:3072 days 8 hrs ago0x56aa4fb42f77faa81b5ca0d2b3cab33f80899648 IN  0x6d9173e597669609acfc6518c9c47feaaacfd6a70 CLV0.00734143
0x44c486071b4ecbb8987212cdcaaadaa56767620fe835d025067cb468fd632164Deposit Token22953342022-11-26 23:23:0672 days 8 hrs ago0x56aa4fb42f77faa81b5ca0d2b3cab33f80899648 IN  0x6d9173e597669609acfc6518c9c47feaaacfd6a70 CLV0.00677491
0xf881e5aa77392a5dc6f62ff5927b1dd8a9c2d25591b3477738c93e868dad2d67Deposit Token22936982022-11-26 17:53:4272 days 13 hrs ago0x56aa4fb42f77faa81b5ca0d2b3cab33f80899648 IN  0x6d9173e597669609acfc6518c9c47feaaacfd6a722 CLV0.00524474
0xc3b5b778dd9c88ff6c6e33d654e27e74eca55d7cad79361cafe0e50d9da82928Deposit Token22656062022-11-22 19:13:0676 days 12 hrs ago0x56aa4fb42f77faa81b5ca0d2b3cab33f80899648 IN  0x6d9173e597669609acfc6518c9c47feaaacfd6a73 CLV0.00524708
0x72ad5b996f5e1c62c1678d3c8868a6b9842ddb6ab73d0e787b10a70f1bc45a5dDeposit Token22598942022-11-22 0:01:0677 days 7 hrs ago0x56aa4fb42f77faa81b5ca0d2b3cab33f80899648 IN  0x6d9173e597669609acfc6518c9c47feaaacfd6a70 CLV0.00715225
0x5fb4b12d8a9f1d7874d77c9f5b901853e393cc693f84c8e3d7a1d95f41d54681Withdraw Ether22062212022-11-14 10:54:5484 days 20 hrs ago0x56aa4fb42f77faa81b5ca0d2b3cab33f80899648 IN  0x6d9173e597669609acfc6518c9c47feaaacfd6a70 CLV0.00621358
0x5cb176c06d02cea8cc31e553fee1cfe8816a8edbba6d9b8027d9c1b0ff406fe5Deposit Token21906182022-11-12 6:17:4887 days 1 hr ago0x56aa4fb42f77faa81b5ca0d2b3cab33f80899648 IN  0x6d9173e597669609acfc6518c9c47feaaacfd6a70 CLV0.00768979
0x7c72fe004714f73562fa6ed7ed35f2dbc1a490dfb69b9e00c5e0bc6910eb9d87Deposit Token21849212022-11-11 11:03:1887 days 20 hrs ago0x56aa4fb42f77faa81b5ca0d2b3cab33f80899648 IN  0x6d9173e597669609acfc6518c9c47feaaacfd6a70 CLV0.00786309
0x1b62a5fb8e27848626e6fd24e051dff5ec693b6b13f95e6df0d24ff7ff51e795Remove Liquidity21825312022-11-11 2:57:0688 days 4 hrs ago0xb3d626766e3ed1419b5e945b6dad3714bed2e825 IN  0x6d9173e597669609acfc6518c9c47feaaacfd6a70 CLV0.00972214
0xc62a9571d4db93df9aa6f0036d98863921eb27c55baef6cd942ea282ceafb8d0Remove Liquidity21738262022-11-09 21:28:3089 days 10 hrs ago0xf4fc11286995ae23316f4b1ffc33904cc4118124 IN  0x6d9173e597669609acfc6518c9c47feaaacfd6a70 CLV0.00501659
0x911fb49c9a3722e1b6221942c924be4a255b02378c6128e7e1b01ac0fb033fdaWithdraw Ether21601512022-11-07 23:15:1891 days 8 hrs ago0x56aa4fb42f77faa81b5ca0d2b3cab33f80899648 IN  0x6d9173e597669609acfc6518c9c47feaaacfd6a70 CLV0.00530504
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x4c55e0f7107821f9bafc1195cad8263ce357203476de2e4e39006e64cefee2f527462732023-01-29 9:20:428 days 22 hrs ago 0x6d9173e597669609acfc6518c9c47feaaacfd6a70x56aa4fb42f77faa81b5ca0d2b3cab33f80899648280.865769370419708695 CLV
0x4c55e0f7107821f9bafc1195cad8263ce357203476de2e4e39006e64cefee2f527462732023-01-29 9:20:428 days 22 hrs ago 0x6d6ad95425fcf315c39fa6f3226471d4f16f27b3 0x6d9173e597669609acfc6518c9c47feaaacfd6a7280.865769370419708695 CLV
0x51b4c6f3138baecc96e6f6def622a6cc5654a4b6ceee97a7c3b20320abbe4f8427219102023-01-25 23:19:1812 days 8 hrs ago 0x6d9173e597669609acfc6518c9c47feaaacfd6a7 0x6d6ad95425fcf315c39fa6f3226471d4f16f27b3278 CLV
0x02b46d60038eb83b3efb4c8216394bd9c9d424227fce761ebc52211ad7b7419b26828322023-01-20 11:10:3617 days 20 hrs ago 0x6d9173e597669609acfc6518c9c47feaaacfd6a70x56aa4fb42f77faa81b5ca0d2b3cab33f80899648322.380978684090571847 CLV
0x02b46d60038eb83b3efb4c8216394bd9c9d424227fce761ebc52211ad7b7419b26828322023-01-20 11:10:3617 days 20 hrs ago 0x6d6ad95425fcf315c39fa6f3226471d4f16f27b3 0x6d9173e597669609acfc6518c9c47feaaacfd6a7322.380978684090571847 CLV
0x40c4cfa03759bac9f25068d5b163ec0224e8d177a99367bacf837216c10320c426348142023-01-13 17:28:3624 days 14 hrs ago 0x6d9173e597669609acfc6518c9c47feaaacfd6a7 0x6d6ad95425fcf315c39fa6f3226471d4f16f27b3321 CLV
0x1f3c205c05525caa860d05529a71524c795cf1d92cb946f8f0ba8c25f81a132225838722023-01-06 14:02:2431 days 17 hrs ago 0x6d9173e597669609acfc6518c9c47feaaacfd6a70x56aa4fb42f77faa81b5ca0d2b3cab33f80899648159.492202861043458196 CLV
0x1f3c205c05525caa860d05529a71524c795cf1d92cb946f8f0ba8c25f81a132225838722023-01-06 14:02:2431 days 17 hrs ago 0x6d6ad95425fcf315c39fa6f3226471d4f16f27b3 0x6d9173e597669609acfc6518c9c47feaaacfd6a7159.492202861043458196 CLV
0x55cfefa995daf9360f548b19a46ab7423659ccb116835fe1e57088beef6feecf25747862023-01-05 7:27:3033 days 9 mins ago 0x6d9173e597669609acfc6518c9c47feaaacfd6a7 0x6d6ad95425fcf315c39fa6f3226471d4f16f27b3165 CLV
0x17201005e432f3160a91ba16df4134b6065d62ddb00f91cec072d23dbec3c08524607062022-12-20 7:05:4849 days 31 mins ago 0x6d9173e597669609acfc6518c9c47feaaacfd6a70x56aa4fb42f77faa81b5ca0d2b3cab33f8089964846.36609063159663285 CLV
0x17201005e432f3160a91ba16df4134b6065d62ddb00f91cec072d23dbec3c08524607062022-12-20 7:05:4849 days 31 mins ago 0x6d6ad95425fcf315c39fa6f3226471d4f16f27b3 0x6d9173e597669609acfc6518c9c47feaaacfd6a746.36609063159663285 CLV
0x2271ba51fd4bb0f4339ee6fd030ffdd900f8f7cd983053630f64ef8510e15fdb24510592022-12-18 22:37:5450 days 8 hrs ago 0x6d9173e597669609acfc6518c9c47feaaacfd6a7 0x6d6ad95425fcf315c39fa6f3226471d4f16f27b347 CLV
0x0c4e2453dd25fa7b14de5c486b9fc8b6603cce4cb1b1f5a1a7c40fbf525dd5eb23387562022-12-03 2:05:4866 days 5 hrs ago 0x6d9173e597669609acfc6518c9c47feaaacfd6a70x56aa4fb42f77faa81b5ca0d2b3cab33f8089964877.56388017900809726 CLV
0x0c4e2453dd25fa7b14de5c486b9fc8b6603cce4cb1b1f5a1a7c40fbf525dd5eb23387562022-12-03 2:05:4866 days 5 hrs ago 0x6d6ad95425fcf315c39fa6f3226471d4f16f27b3 0x6d9173e597669609acfc6518c9c47feaaacfd6a777.56388017900809726 CLV
0x36d111239ddfa40f3eae915a18c50f2b99734725e635393e26d7bc74babb0c9723225252022-11-30 19:04:4268 days 12 hrs ago 0x6d9173e597669609acfc6518c9c47feaaacfd6a70x56aa4fb42f77faa81b5ca0d2b3cab33f80899648120.344595339902359292 CLV
0x36d111239ddfa40f3eae915a18c50f2b99734725e635393e26d7bc74babb0c9723225252022-11-30 19:04:4268 days 12 hrs ago 0x6d6ad95425fcf315c39fa6f3226471d4f16f27b3 0x6d9173e597669609acfc6518c9c47feaaacfd6a7120.344595339902359292 CLV
0xf881e5aa77392a5dc6f62ff5927b1dd8a9c2d25591b3477738c93e868dad2d6722936982022-11-26 17:53:4272 days 13 hrs ago 0x6d9173e597669609acfc6518c9c47feaaacfd6a7 0x6d6ad95425fcf315c39fa6f3226471d4f16f27b322 CLV
0xc3b5b778dd9c88ff6c6e33d654e27e74eca55d7cad79361cafe0e50d9da8292822656062022-11-22 19:13:0676 days 12 hrs ago 0x6d9173e597669609acfc6518c9c47feaaacfd6a7 0x6d6ad95425fcf315c39fa6f3226471d4f16f27b33 CLV
0x5fb4b12d8a9f1d7874d77c9f5b901853e393cc693f84c8e3d7a1d95f41d5468122062212022-11-14 10:54:5484 days 20 hrs ago 0x6d9173e597669609acfc6518c9c47feaaacfd6a70x56aa4fb42f77faa81b5ca0d2b3cab33f80899648458.2646407579255259 CLV
0x5fb4b12d8a9f1d7874d77c9f5b901853e393cc693f84c8e3d7a1d95f41d5468122062212022-11-14 10:54:5484 days 20 hrs ago 0x6d6ad95425fcf315c39fa6f3226471d4f16f27b3 0x6d9173e597669609acfc6518c9c47feaaacfd6a7458.2646407579255259 CLV
0x48f9a962c44cff13b18dc700616c11be1b23261149618e5b5d56d6d21820b34e21738262022-11-09 21:28:3089 days 10 hrs ago 0x6d9173e597669609acfc6518c9c47feaaacfd6a70xf4fc11286995ae23316f4b1ffc33904cc411812415,467.457250752795641548 CLV
0x48f9a962c44cff13b18dc700616c11be1b23261149618e5b5d56d6d21820b34e21738262022-11-09 21:28:3089 days 10 hrs ago 0x6d6ad95425fcf315c39fa6f3226471d4f16f27b3 0x6d9173e597669609acfc6518c9c47feaaacfd6a715,467.457250752795641548 CLV
0x911fb49c9a3722e1b6221942c924be4a255b02378c6128e7e1b01ac0fb033fda21601512022-11-07 23:15:1891 days 8 hrs ago 0x6d9173e597669609acfc6518c9c47feaaacfd6a70x56aa4fb42f77faa81b5ca0d2b3cab33f80899648606.645602840462754151 CLV
0x911fb49c9a3722e1b6221942c924be4a255b02378c6128e7e1b01ac0fb033fda21601512022-11-07 23:15:1891 days 8 hrs ago 0x6d6ad95425fcf315c39fa6f3226471d4f16f27b3 0x6d9173e597669609acfc6518c9c47feaaacfd6a7606.645602840462754151 CLV
0xb5011add7cb25c11c8e9b3f565570decd5a0bb77ae2553648db8276d0781b1d021521812022-11-06 20:23:4292 days 11 hrs ago 0x6d9173e597669609acfc6518c9c47feaaacfd6a7 0x6d6ad95425fcf315c39fa6f3226471d4f16f27b33 CLV
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PronteraV2Kafra

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 1000000 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 9 : PronteraV2Kafra.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.8.9;

import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/security/Pausable.sol";
import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";

import "./interfaces/IProntera.sol";
import "./interfaces/IWETH.sol";

contract PronteraV2Kafra is Ownable, Pausable {
    using SafeERC20 for IERC20;
    using SafeERC20 for IWETH;
    using Address for address;
    using Address for address payable;

    IWETH public constant WETH = IWETH(0x6d6AD95425FcF315c39Fa6F3226471d4f16F27B3);

    IProntera public immutable prontera;
    address public juno;

    event SetJuno(address juno);

    event DepositToken(
        address indexed user,
        address indexed izlude,
        uint256 value,
        IERC20[] tokens,
        uint256[] tokenAmounts,
        uint256 wantAmount
    );
    event WithdrawToken(address indexed user, address indexed izlude, uint256 jellopyAmount, uint256 amountOut);
    event WithdrawEther(address indexed user, address indexed izlude, uint256 jellopyAmount, uint256 amountOut);
    event RemoveLiquidity(
        address indexed user,
        address indexed izlude,
        uint256 jellopyAmount,
        IERC20[] outTokens,
        uint256[] outAmounts
    );

    modifier ensure(uint256 deadline) {
        require(deadline >= block.timestamp, "PronteraV2Kafra: EXPIRED");
        _;
    }

    constructor(IProntera _prontera, address _juno) {
        prontera = _prontera;
        juno = _juno;
    }

    function depositToken(
        address izlude,
        IERC20[] calldata tokens,
        uint256[] calldata tokenAmounts,
        uint256 amountOutMin,
        uint256 deadline,
        bytes calldata data
    ) external payable whenNotPaused ensure(deadline) {
        require(tokens.length == tokenAmounts.length);
        IERC20 want = IERC20(prontera.poolInfo(izlude).want);

        uint256 wantAmount;
        {
            // avoid stack too deep
            // convert tokens to want
            uint256 wantBeforeBal = want.balanceOf(address(this));

            if (msg.value > 0) {
                WETH.deposit{value: msg.value}();
            }
            if (WETH != want) {
                WETH.safeTransfer(juno, msg.value);
            }
            for (uint256 i = 0; i < tokens.length; i++) {
                require(_safeERC20TransferIn(tokens[i], tokenAmounts[i]) == tokenAmounts[i], "!amount");
                if (tokens[i] != want) {
                    tokens[i].safeTransfer(juno, tokenAmounts[i]);
                }
            }
            juno.functionCall(data, "juno: failed");
            uint256 wantAfterBal = want.balanceOf(address(this));
            wantAmount = wantAfterBal - wantBeforeBal;
            require(wantAmount >= amountOutMin, "insufficient output amount");
        }

        want.safeIncreaseAllowance(address(prontera), wantAmount);
        prontera.depositFor(msg.sender, izlude, wantAmount);

        emit DepositToken(msg.sender, izlude, msg.value, tokens, tokenAmounts, wantAmount);
    }

    function withdrawToken(
        address izlude,
        uint256 jellopyAmount,
        IERC20 token,
        uint256 amountOutMin,
        uint256 deadline,
        bytes calldata data
    ) external whenNotPaused ensure(deadline) {
        IERC20 want = IERC20(prontera.poolInfo(izlude).want);

        // withdraw want
        uint256 wantBeforeBal = want.balanceOf(address(this));
        {
            prontera.storeKeepJellopy(msg.sender, izlude, jellopyAmount);
            prontera.storeWithdraw(msg.sender, izlude, jellopyAmount);
        }
        uint256 wantAfterBal = want.balanceOf(address(this));
        uint256 amountOut = wantAfterBal - wantBeforeBal;
        require(amountOut > 0, "zero balance");

        // convert want to token
        if (want != token) {
            uint256 tokenBeforeBal = token.balanceOf(address(this));
            want.safeTransfer(juno, amountOut);
            juno.functionCall(data, "juno: failed");
            uint256 tokenAfterBal = token.balanceOf(address(this));
            amountOut = tokenAfterBal - tokenBeforeBal;
            require(amountOut >= amountOutMin, "insufficient output amount");
        }
        token.safeTransfer(msg.sender, amountOut);

        emit WithdrawToken(msg.sender, izlude, jellopyAmount, amountOut);
    }

    function withdrawEther(
        address izlude,
        uint256 jellopyAmount,
        uint256 amountOutMin,
        uint256 deadline,
        bytes calldata data
    ) external whenNotPaused ensure(deadline) {
        IERC20 want = IERC20(prontera.poolInfo(izlude).want);

        // withdraw want
        uint256 wantBeforeBal = want.balanceOf(address(this));
        {
            prontera.storeKeepJellopy(msg.sender, izlude, jellopyAmount);
            prontera.storeWithdraw(msg.sender, izlude, jellopyAmount);
        }
        uint256 wantAfterBal = want.balanceOf(address(this));
        uint256 amountOut = wantAfterBal - wantBeforeBal;
        require(amountOut > 0, "zero balance");

        // convert want to eth
        if (want != WETH) {
            uint256 tokenBeforeBal = WETH.balanceOf(address(this));
            want.safeTransfer(juno, amountOut);
            juno.functionCall(data, "juno: failed");
            uint256 tokenAfterBal = WETH.balanceOf(address(this));
            amountOut = tokenAfterBal - tokenBeforeBal;
            require(amountOut >= amountOutMin, "insufficient output amount");
        }
        WETH.withdraw(amountOut);
        payable(msg.sender).sendValue(amountOut);

        emit WithdrawEther(msg.sender, izlude, jellopyAmount, amountOut);
    }

    function removeLiquidity(
        address izlude,
        uint256 jellopyAmount,
        IERC20[] calldata tokens,
        uint256[] calldata amountOutMins,
        uint256 deadline,
        bytes calldata data
    ) external whenNotPaused ensure(deadline) {
        require(tokens.length == amountOutMins.length);
        IERC20 want = IERC20(prontera.poolInfo(izlude).want);

        // withdraw want
        uint256 wantAmountOut;
        {
            uint256 wantBeforeBal = want.balanceOf(address(this));
            {
                prontera.storeKeepJellopy(msg.sender, izlude, jellopyAmount);
                prontera.storeWithdraw(msg.sender, izlude, jellopyAmount);
            }
            uint256 wantAfterBal = want.balanceOf(address(this));
            wantAmountOut = wantAfterBal - wantBeforeBal;
            require(wantAmountOut > 0, "zero balance");
        }

        uint256[] memory amountOuts = new uint256[](tokens.length);
        {
            uint256[] memory tokenBeforeBals = new uint256[](tokens.length);
            for (uint256 i = 0; i < tokens.length; i++) {
                tokenBeforeBals[i] = tokens[i].balanceOf(address(this));
            }

            want.safeTransfer(juno, wantAmountOut);
            juno.functionCall(data, "juno: failed");

            for (uint256 i = 0; i < tokens.length; i++) {
                uint256 tokenAfterBal = tokens[i].balanceOf(address(this));
                amountOuts[i] = tokenAfterBal - tokenBeforeBals[i];
                require(amountOuts[i] >= amountOutMins[i], "insufficient output amount");
            }
        }

        for (uint256 i = 0; i < tokens.length; i++) {
            if (tokens[i] == WETH) {
                WETH.withdraw(amountOuts[i]);
                payable(msg.sender).sendValue(amountOuts[i]);
            } else {
                tokens[i].safeTransfer(msg.sender, amountOuts[i]);
            }
        }

        emit RemoveLiquidity(msg.sender, izlude, jellopyAmount, tokens, amountOuts);
    }

    function setJuno(address _juno) external onlyOwner {
        juno = _juno;
        emit SetJuno(_juno);
    }

    function pause() external onlyOwner {
        _pause();
    }

    function unpause() external onlyOwner {
        _unpause();
    }

    function inCaseTokensGetStuck(address token) external onlyOwner {
        uint256 amount = IERC20(token).balanceOf(address(this));
        IERC20(token).safeTransfer(msg.sender, amount);
    }

    function _safeERC20TransferIn(IERC20 token, uint256 amount) private returns (uint256) {
        require(amount > 0, "zero amount");

        uint256 balanceBefore = token.balanceOf(address(this));
        token.safeTransferFrom(msg.sender, address(this), amount);
        uint256 balanceAfter = token.balanceOf(address(this));
        return balanceAfter - balanceBefore;
    }

    receive() external payable {
        require(msg.sender == address(WETH), "reject");
    }
}

File 2 of 9 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @dev 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.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev 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.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

File 3 of 9 : Pausable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (security/Pausable.sol)

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @dev Contract module which allows children to implement an emergency stop
 * mechanism that can be triggered by an authorized account.
 *
 * This module is used through inheritance. It will make available the
 * modifiers `whenNotPaused` and `whenPaused`, which can be applied to
 * the functions of your contract. Note that they will not be pausable by
 * simply including this module, only once the modifiers are put in place.
 */
abstract contract Pausable is Context {
    /**
     * @dev Emitted when the pause is triggered by `account`.
     */
    event Paused(address account);

    /**
     * @dev Emitted when the pause is lifted by `account`.
     */
    event Unpaused(address account);

    bool private _paused;

    /**
     * @dev Initializes the contract in unpaused state.
     */
    constructor() {
        _paused = false;
    }

    /**
     * @dev Returns true if the contract is paused, and false otherwise.
     */
    function paused() public view virtual returns (bool) {
        return _paused;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    modifier whenNotPaused() {
        require(!paused(), "Pausable: paused");
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    modifier whenPaused() {
        require(paused(), "Pausable: not paused");
        _;
    }

    /**
     * @dev Triggers stopped state.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    /**
     * @dev Returns to normal state.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

File 4 of 9 : SafeERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/utils/SafeERC20.sol)

pragma solidity ^0.8.0;

import "../IERC20.sol";
import "../../../utils/Address.sol";

/**
 * @title SafeERC20
 * @dev 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.
 */
library SafeERC20 {
    using Address for address;

    function safeTransfer(
        IERC20 token,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(
        IERC20 token,
        address from,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    /**
     * @dev Deprecated. This function has issues similar to the ones found in
     * {IERC20-approve}, and its usage is discouraged.
     *
     * Whenever possible, use {safeIncreaseAllowance} and
     * {safeDecreaseAllowance} instead.
     */
    function safeApprove(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        // safeApprove should only be called when setting an initial allowance,
        // or when resetting it to zero. To increase and decrease it, use
        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
        require(
            (value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    function safeIncreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        uint256 newAllowance = token.allowance(address(this), spender) + value;
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    function safeDecreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        unchecked {
            uint256 oldAllowance = token.allowance(address(this), spender);
            require(oldAllowance >= value, "SafeERC20: decreased allowance below zero");
            uint256 newAllowance = oldAllowance - value;
            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
        }
    }

    /**
     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
     * on the return value: the return value is optional (but if data is returned, it must not be false).
     * @param token The token targeted by the call.
     * @param data The call data (encoded using abi.encode or one of its variants).
     */
    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
        // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that
        // the target address contains contract code and also asserts for success in the low-level call.

        bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
        if (returndata.length > 0) {
            // Return data is optional
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

File 5 of 9 : IProntera.sol
//SPDX-License-Identifier: MIT

pragma solidity 0.8.9;

import "@openzeppelin/contracts/token/ERC20/IERC20.sol";

interface IProntera {
    struct UserInfo {
        uint256 jellopy;
        uint256 rewardDebt;
        uint256 storedJellopy;
    }

    function userInfo(address npc, address user) external view returns (UserInfo memory);

    struct PoolInfo {
        address want;
        address izlude;
        uint256 accKSWPerJellopy;
        uint64 allocPoint;
        uint64 lastRewardTime;
    }

    function poolInfo(address izlude) external view returns (PoolInfo memory);

    function pendingKSW(address izlude, address _user) external view returns (uint256);

    function deposit(address izlude, uint256 amount) external;

    function depositFor(
        address user,
        address izlude,
        uint256 amount
    ) external;

    function withdraw(address izlude, uint256 jellopyAmount) external;

    function emergencyWithdraw(address izlude) external;

    function storeWithdraw(
        address _user,
        address izlude,
        uint256 jellopyAmount
    ) external;

    function storeKeepJellopy(
        address _user,
        address izlude,
        uint256 amount
    ) external;

    function storeReturnJellopy(
        address _user,
        address izlude,
        uint256 amount
    ) external;

    function juno() external returns (address);
}

File 6 of 9 : IWETH.sol
//SPDX-License-Identifier: MIT

pragma solidity 0.8.9;

import "@openzeppelin/contracts/token/ERC20/IERC20.sol";

interface IWETH is IERC20 {
    function deposit() external payable;

    function withdraw(uint256 wad) external;
}

File 7 of 9 : Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev 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.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

File 8 of 9 : IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev 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.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev 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.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` 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.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

File 9 of 9 : Address.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Address.sol)

pragma solidity ^0.8.0;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain `call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 1000000
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "metadata": {
    "useLiteralContent": true
  },
  "libraries": {}
}

Contract ABI

[{"inputs":[{"internalType":"contract IProntera","name":"_prontera","type":"address"},{"internalType":"address","name":"_juno","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"izlude","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"tokenAmounts","type":"uint256[]"},{"indexed":false,"internalType":"uint256","name":"wantAmount","type":"uint256"}],"name":"DepositToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"izlude","type":"address"},{"indexed":false,"internalType":"uint256","name":"jellopyAmount","type":"uint256"},{"indexed":false,"internalType":"contract IERC20[]","name":"outTokens","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"outAmounts","type":"uint256[]"}],"name":"RemoveLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"juno","type":"address"}],"name":"SetJuno","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"izlude","type":"address"},{"indexed":false,"internalType":"uint256","name":"jellopyAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountOut","type":"uint256"}],"name":"WithdrawEther","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"izlude","type":"address"},{"indexed":false,"internalType":"uint256","name":"jellopyAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountOut","type":"uint256"}],"name":"WithdrawToken","type":"event"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"contract IWETH","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"izlude","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"tokenAmounts","type":"uint256[]"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"depositToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"inCaseTokensGetStuck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"juno","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"prontera","outputs":[{"internalType":"contract IProntera","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"izlude","type":"address"},{"internalType":"uint256","name":"jellopyAmount","type":"uint256"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amountOutMins","type":"uint256[]"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"removeLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_juno","type":"address"}],"name":"setJuno","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"izlude","type":"address"},{"internalType":"uint256","name":"jellopyAmount","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"withdrawEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"izlude","type":"address"},{"internalType":"uint256","name":"jellopyAmount","type":"uint256"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040523480156200001157600080fd5b5060405162003f9b38038062003f9b8339810160408190526200003491620000de565b6200003f3362000075565b6000805460ff60a01b191690556001600160a01b03918216608052600180546001600160a01b031916919092161790556200011d565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114620000db57600080fd5b50565b60008060408385031215620000f257600080fd5b8251620000ff81620000c5565b60208401519092506200011281620000c5565b809150509250929050565b608051613e0e6200018d600039600081816102aa015281816104d90152818161064e015281816106fc01528181610e67015281816113f00152818161146701528181611782015281816118f901528181611959015281816123bb0152818161253001526125de0152613e0e6000f3fe6080604052600436106100ec5760003560e01c80638da5cb5b1161008a578063def68a9c11610059578063def68a9c14610314578063dfd53a3114610334578063f2fde38b14610354578063f69576901461037457600080fd5b80638da5cb5b1461024c5780638fbe554d14610298578063ad5c4648146102cc578063bd7c1b1d146102f457600080fd5b8063588cfb2b116100c6578063588cfb2b146101cf5780635c975abb146101e2578063715018a6146102225780638456cb591461023757600080fd5b80630c5dda401461017a5780633f4ba83a1461019a57806349abfa38146101af57600080fd5b366101755733736d6ad95425fcf315c39fa6f3226471d4f16f27b314610173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f72656a656374000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b005b600080fd5b34801561018657600080fd5b50610173610195366004613757565b6103a1565b3480156101a657600080fd5b50610173610b9e565b3480156101bb57600080fd5b506101736101ca3660046137dd565b610c29565b6101736101dd36600461383f565b610d23565b3480156101ee57600080fd5b5060005474010000000000000000000000000000000000000000900460ff1660405190151581526020015b60405180910390f35b34801561022e57600080fd5b5061017361152a565b34801561024357600080fd5b506101736115b5565b34801561025857600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610219565b3480156102a457600080fd5b506102737f000000000000000000000000000000000000000000000000000000000000000081565b3480156102d857600080fd5b50610273736d6ad95425fcf315c39fa6f3226471d4f16f27b381565b34801561030057600080fd5b5061017361030f366004613901565b61163e565b34801561032057600080fd5b5061017361032f3660046137dd565b61213b565b34801561034057600080fd5b5061017361034f36600461399f565b612283565b34801561036057600080fd5b5061017361036f3660046137dd565b612ae2565b34801561038057600080fd5b506001546102739073ffffffffffffffffffffffffffffffffffffffff1681565b60005474010000000000000000000000000000000000000000900460ff1615610426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161016a565b8242811015610491576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f50726f6e7465726156324b616672613a20455850495245440000000000000000604482015260640161016a565b6040517f9a7b5f1100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301526000917f000000000000000000000000000000000000000000000000000000000000000090911690639a7b5f119060240160a06040518083038186803b15801561051d57600080fd5b505afa158015610531573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105559190613a5e565b516040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290915060009073ffffffffffffffffffffffffffffffffffffffff8316906370a082319060240160206040518083038186803b1580156105c157600080fd5b505afa1580156105d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f99190613b10565b6040517f2590dc0400000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8c81166024830152604482018c90529192507f000000000000000000000000000000000000000000000000000000000000000090911690632590dc0490606401600060405180830381600087803b15801561069457600080fd5b505af11580156106a8573d6000803e3d6000fd5b50506040517fa437ecd500000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8d81166024830152604482018d90527f000000000000000000000000000000000000000000000000000000000000000016925063a437ecd59150606401600060405180830381600087803b15801561074257600080fd5b505af1158015610756573d6000803e3d6000fd5b50506040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000925073ffffffffffffffffffffffffffffffffffffffff851691506370a082319060240160206040518083038186803b1580156107c257600080fd5b505afa1580156107d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fa9190613b10565b905060006108088383613b58565b905060008111610874576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f2062616c616e63650000000000000000000000000000000000000000604482015260640161016a565b8973ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614610b1b576040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8c16906370a082319060240160206040518083038186803b15801561090f57600080fd5b505afa158015610923573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109479190613b10565b6001549091506109719073ffffffffffffffffffffffffffffffffffffffff878116911684612c12565b6109ff88888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600c81527f6a756e6f3a206661696c65640000000000000000000000000000000000000000602082015260015473ffffffffffffffffffffffffffffffffffffffff169392509050612ceb565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8d16906370a082319060240160206040518083038186803b158015610a6857600080fd5b505afa158015610a7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa09190613b10565b9050610aac8282613b58565b92508a831015610b18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f696e73756666696369656e74206f757470757420616d6f756e74000000000000604482015260640161016a565b50505b610b3c73ffffffffffffffffffffffffffffffffffffffff8b163383612c12565b604080518c81526020810183905273ffffffffffffffffffffffffffffffffffffffff8e169133917fa69fc39b702a6e8195370ae2252cc11b4445837cc4abe15ac39123f2f2d8770d91015b60405180910390a3505050505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161016a565b610c27612d04565b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610caa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161016a565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f8766bbabe22a1a83bfca697c0f640ac0ff9e21bc13586a08b9fc16038919516d9060200160405180910390a150565b60005474010000000000000000000000000000000000000000900460ff1615610da8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161016a565b8242811015610e13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f50726f6e7465726156324b616672613a20455850495245440000000000000000604482015260640161016a565b878614610e1f57600080fd5b6040517f9a7b5f1100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301526000917f000000000000000000000000000000000000000000000000000000000000000090911690639a7b5f119060240160a06040518083038186803b158015610eab57600080fd5b505afa158015610ebf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee39190613a5e565b516040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152909150600090819073ffffffffffffffffffffffffffffffffffffffff8416906370a082319060240160206040518083038186803b158015610f5157600080fd5b505afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190613b10565b9050341561100757736d6ad95425fcf315c39fa6f3226471d4f16f27b373ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610fed57600080fd5b505af1158015611001573d6000803e3d6000fd5b50505050505b736d6ad95425fcf315c39fa6f3226471d4f16f27b373ffffffffffffffffffffffffffffffffffffffff8416146110715760015461107190736d6ad95425fcf315c39fa6f3226471d4f16f27b39073ffffffffffffffffffffffffffffffffffffffff1634612c12565b60005b8b811015611229578a8a8281811061108e5761108e613b6f565b905060200201356110dd8e8e848181106110aa576110aa613b6f565b90506020020160208101906110bf91906137dd565b8d8d858181106110d1576110d1613b6f565b90506020020135612dfd565b14611144576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f21616d6f756e7400000000000000000000000000000000000000000000000000604482015260640161016a565b8373ffffffffffffffffffffffffffffffffffffffff168d8d8381811061116d5761116d613b6f565b905060200201602081019061118291906137dd565b73ffffffffffffffffffffffffffffffffffffffff1614611217576001546112179073ffffffffffffffffffffffffffffffffffffffff168c8c848181106111cc576111cc613b6f565b905060200201358f8f858181106111e5576111e5613b6f565b90506020020160208101906111fa91906137dd565b73ffffffffffffffffffffffffffffffffffffffff169190612c12565b8061122181613b9e565b915050611074565b506112b886868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600c81527f6a756e6f3a206661696c65640000000000000000000000000000000000000000602082015260015473ffffffffffffffffffffffffffffffffffffffff169392509050612ceb565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8516906370a082319060240160206040518083038186803b15801561132157600080fd5b505afa158015611335573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113599190613b10565b90506113658282613b58565b9250888310156113d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f696e73756666696369656e74206f757470757420616d6f756e74000000000000604482015260640161016a565b50611415905073ffffffffffffffffffffffffffffffffffffffff83167f000000000000000000000000000000000000000000000000000000000000000083612fe1565b6040517fb3db428b00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8d81166024830152604482018390527f0000000000000000000000000000000000000000000000000000000000000000169063b3db428b90606401600060405180830381600087803b1580156114ab57600080fd5b505af11580156114bf573d6000803e3d6000fd5b505050508b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fd5aae81523050abe356f97b927527141fa2faf11e5961c143f5f84518886a8c3348e8e8e8e88604051610b8896959493929190613c2d565b60005473ffffffffffffffffffffffffffffffffffffffff1633146115ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161016a565b610c2760006130f4565b60005473ffffffffffffffffffffffffffffffffffffffff163314611636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161016a565b610c27613169565b60005474010000000000000000000000000000000000000000900460ff16156116c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161016a565b824281101561172e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f50726f6e7465726156324b616672613a20455850495245440000000000000000604482015260640161016a565b86851461173a57600080fd5b6040517f9a7b5f1100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301526000917f000000000000000000000000000000000000000000000000000000000000000090911690639a7b5f119060240160a06040518083038186803b1580156117c657600080fd5b505afa1580156117da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117fe9190613a5e565b516040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152909150600090819073ffffffffffffffffffffffffffffffffffffffff8416906370a082319060240160206040518083038186803b15801561186c57600080fd5b505afa158015611880573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a49190613b10565b6040517f2590dc0400000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8f81166024830152604482018f90529192507f000000000000000000000000000000000000000000000000000000000000000090911690632590dc0490606401600060405180830381600087803b15801561193f57600080fd5b505af1158015611953573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a437ecd5338f8f6040518463ffffffff1660e01b81526004016119e09392919073ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b600060405180830381600087803b1580156119fa57600080fd5b505af1158015611a0e573d6000803e3d6000fd5b50506040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000925073ffffffffffffffffffffffffffffffffffffffff861691506370a082319060240160206040518083038186803b158015611a7a57600080fd5b505afa158015611a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab29190613b10565b9050611abe8282613b58565b925060008311611b2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f2062616c616e63650000000000000000000000000000000000000000604482015260640161016a565b50600090508967ffffffffffffffff811115611b4857611b48613a12565b604051908082528060200260200182016040528015611b71578160200160208202803683370190505b50905060008a67ffffffffffffffff811115611b8f57611b8f613a12565b604051908082528060200260200182016040528015611bb8578160200160208202803683370190505b50905060005b8b811015611cbb578c8c82818110611bd857611bd8613b6f565b9050602002016020810190611bed91906137dd565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906370a082319060240160206040518083038186803b158015611c5457600080fd5b505afa158015611c68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8c9190613b10565b828281518110611c9e57611c9e613b6f565b602090810291909101015280611cb381613b9e565b915050611bbe565b50600154611ce39073ffffffffffffffffffffffffffffffffffffffff868116911685612c12565b611d7187878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600c81527f6a756e6f3a206661696c65640000000000000000000000000000000000000000602082015260015473ffffffffffffffffffffffffffffffffffffffff169392509050612ceb565b5060005b8b811015611f385760008d8d83818110611d9157611d91613b6f565b9050602002016020810190611da691906137dd565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906370a082319060240160206040518083038186803b158015611e0d57600080fd5b505afa158015611e21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e459190613b10565b9050828281518110611e5957611e59613b6f565b602002602001015181611e6c9190613b58565b848381518110611e7e57611e7e613b6f565b6020026020010181815250508b8b83818110611e9c57611e9c613b6f565b90506020020135848381518110611eb557611eb5613b6f565b60200260200101511015611f25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f696e73756666696369656e74206f757470757420616d6f756e74000000000000604482015260640161016a565b5080611f3081613b9e565b915050611d75565b505060005b8a8110156120c057736d6ad95425fcf315c39fa6f3226471d4f16f27b38c8c83818110611f6c57611f6c613b6f565b9050602002016020810190611f8191906137dd565b73ffffffffffffffffffffffffffffffffffffffff16141561207e57736d6ad95425fcf315c39fa6f3226471d4f16f27b373ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d838381518110611fdf57611fdf613b6f565b60200260200101516040518263ffffffff1660e01b815260040161200591815260200190565b600060405180830381600087803b15801561201f57600080fd5b505af1158015612033573d6000803e3d6000fd5b5050505061207982828151811061204c5761204c613b6f565b60200260200101513373ffffffffffffffffffffffffffffffffffffffff1661325590919063ffffffff16565b6120ae565b6120ae3383838151811061209457612094613b6f565b60200260200101518e8e858181106111e5576111e5613b6f565b806120b881613b9e565b915050611f3d565b508c73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f1341e95bd965db30db26212fcbfbf117ed841037302e21f3c6d0be6d6ef9f5fb8e8e8e866040516121249493929190613ca8565b60405180910390a350505050505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146121bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161016a565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8316906370a082319060240160206040518083038186803b15801561222457600080fd5b505afa158015612238573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225c9190613b10565b905061227f73ffffffffffffffffffffffffffffffffffffffff83163383612c12565b5050565b60005474010000000000000000000000000000000000000000900460ff1615612308576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161016a565b8242811015612373576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f50726f6e7465726156324b616672613a20455850495245440000000000000000604482015260640161016a565b6040517f9a7b5f1100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301526000917f000000000000000000000000000000000000000000000000000000000000000090911690639a7b5f119060240160a06040518083038186803b1580156123ff57600080fd5b505afa158015612413573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124379190613a5e565b516040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290915060009073ffffffffffffffffffffffffffffffffffffffff8316906370a082319060240160206040518083038186803b1580156124a357600080fd5b505afa1580156124b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124db9190613b10565b6040517f2590dc0400000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8b81166024830152604482018b90529192507f000000000000000000000000000000000000000000000000000000000000000090911690632590dc0490606401600060405180830381600087803b15801561257657600080fd5b505af115801561258a573d6000803e3d6000fd5b50506040517fa437ecd500000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8c81166024830152604482018c90527f000000000000000000000000000000000000000000000000000000000000000016925063a437ecd59150606401600060405180830381600087803b15801561262457600080fd5b505af1158015612638573d6000803e3d6000fd5b50506040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000925073ffffffffffffffffffffffffffffffffffffffff851691506370a082319060240160206040518083038186803b1580156126a457600080fd5b505afa1580156126b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126dc9190613b10565b905060006126ea8383613b58565b905060008111612756576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f7a65726f2062616c616e63650000000000000000000000000000000000000000604482015260640161016a565b73ffffffffffffffffffffffffffffffffffffffff8416736d6ad95425fcf315c39fa6f3226471d4f16f27b3146129f7576040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600090736d6ad95425fcf315c39fa6f3226471d4f16f27b3906370a082319060240160206040518083038186803b1580156127ed57600080fd5b505afa158015612801573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128259190613b10565b60015490915061284f9073ffffffffffffffffffffffffffffffffffffffff878116911684612c12565b6128dd88888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152600c81527f6a756e6f3a206661696c65640000000000000000000000000000000000000000602082015260015473ffffffffffffffffffffffffffffffffffffffff169392509050612ceb565b506040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600090736d6ad95425fcf315c39fa6f3226471d4f16f27b3906370a082319060240160206040518083038186803b15801561294457600080fd5b505afa158015612958573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061297c9190613b10565b90506129888282613b58565b92508a8310156129f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f696e73756666696369656e74206f757470757420616d6f756e74000000000000604482015260640161016a565b50505b6040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815260048101829052736d6ad95425fcf315c39fa6f3226471d4f16f27b390632e1a7d4d90602401600060405180830381600087803b158015612a5d57600080fd5b505af1158015612a71573d6000803e3d6000fd5b50612a829250339150839050613255565b604080518b81526020810183905273ffffffffffffffffffffffffffffffffffffffff8d169133917f7af7d9e5b71152303ff7a5221e1a22febc3cf6407ea2a05f870d770097177db0910160405180910390a35050505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314612b63576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161016a565b73ffffffffffffffffffffffffffffffffffffffff8116612c06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161016a565b612c0f816130f4565b50565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052612ce69084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526133af565b505050565b6060612cfa84846000856134bb565b90505b9392505050565b60005474010000000000000000000000000000000000000000900460ff16612d88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015260640161016a565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b6000808211612e68576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f7a65726f20616d6f756e74000000000000000000000000000000000000000000604482015260640161016a565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8516906370a082319060240160206040518083038186803b158015612ed057600080fd5b505afa158015612ee4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f089190613b10565b9050612f2c73ffffffffffffffffffffffffffffffffffffffff851633308661363b565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8616906370a082319060240160206040518083038186803b158015612f9457600080fd5b505afa158015612fa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fcc9190613b10565b9050612fd88282613b58565b95945050505050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152600091839186169063dd62ed3e9060440160206040518083038186803b15801561305357600080fd5b505afa158015613067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061308b9190613b10565b6130959190613d05565b60405173ffffffffffffffffffffffffffffffffffffffff85166024820152604481018290529091506130ee9085907f095ea7b30000000000000000000000000000000000000000000000000000000090606401612c64565b50505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005474010000000000000000000000000000000000000000900460ff16156131ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161016a565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612dd33390565b804710156132bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161016a565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114613319576040519150601f19603f3d011682016040523d82523d6000602084013e61331e565b606091505b5050905080612ce6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161016a565b6000613411826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612ceb9092919063ffffffff16565b805190915015612ce6578080602001905181019061342f9190613d1d565b612ce6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161016a565b60608247101561354d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161016a565b843b6135b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161016a565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516135de9190613d6b565b60006040518083038185875af1925050503d806000811461361b576040519150601f19603f3d011682016040523d82523d6000602084013e613620565b606091505b5091509150613630828286613699565b979650505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526130ee9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401612c64565b606083156136a8575081612cfd565b8251156136b85782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016a9190613d87565b73ffffffffffffffffffffffffffffffffffffffff81168114612c0f57600080fd5b60008083601f84011261372057600080fd5b50813567ffffffffffffffff81111561373857600080fd5b60208301915083602082850101111561375057600080fd5b9250929050565b600080600080600080600060c0888a03121561377257600080fd5b873561377d816136ec565b9650602088013595506040880135613794816136ec565b9450606088013593506080880135925060a088013567ffffffffffffffff8111156137be57600080fd5b6137ca8a828b0161370e565b989b979a50959850939692959293505050565b6000602082840312156137ef57600080fd5b8135612cfd816136ec565b60008083601f84011261380c57600080fd5b50813567ffffffffffffffff81111561382457600080fd5b6020830191508360208260051b850101111561375057600080fd5b600080600080600080600080600060c08a8c03121561385d57600080fd5b8935613868816136ec565b985060208a013567ffffffffffffffff8082111561388557600080fd5b6138918d838e016137fa565b909a50985060408c01359150808211156138aa57600080fd5b6138b68d838e016137fa565b909850965060608c0135955060808c0135945060a08c01359150808211156138dd57600080fd5b506138ea8c828d0161370e565b915080935050809150509295985092959850929598565b600080600080600080600080600060c08a8c03121561391f57600080fd5b893561392a816136ec565b985060208a0135975060408a013567ffffffffffffffff8082111561394e57600080fd5b61395a8d838e016137fa565b909950975060608c013591508082111561397357600080fd5b61397f8d838e016137fa565b909750955060808c0135945060a08c01359150808211156138dd57600080fd5b60008060008060008060a087890312156139b857600080fd5b86356139c3816136ec565b9550602087013594506040870135935060608701359250608087013567ffffffffffffffff8111156139f457600080fd5b613a0089828a0161370e565b979a9699509497509295939492505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b805167ffffffffffffffff81168114613a5957600080fd5b919050565b600060a08284031215613a7057600080fd5b60405160a0810181811067ffffffffffffffff82111715613aba577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040528251613ac8816136ec565b81526020830151613ad8816136ec565b602082015260408381015190820152613af360608401613a41565b6060820152613b0460808401613a41565b60808201529392505050565b600060208284031215613b2257600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015613b6a57613b6a613b29565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613bd057613bd0613b29565b5060010190565b8183526000602080850194508260005b85811015613c22578135613bfa816136ec565b73ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101613be7565b509495945050505050565b868152608060208201526000613c47608083018789613bd7565b82810360408401528481527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff851115613c7f57600080fd5b8460051b8087602084013760009101602001908152606092909201929092529695505050505050565b84815260006020606081840152613cc3606084018688613bd7565b838103604085015284518082528286019183019060005b81811015613cf657835183529284019291840191600101613cda565b50909998505050505050505050565b60008219821115613d1857613d18613b29565b500190565b600060208284031215613d2f57600080fd5b81518015158114612cfd57600080fd5b60005b83811015613d5a578181015183820152602001613d42565b838111156130ee5750506000910152565b60008251613d7d818460208701613d3f565b9190910192915050565b6020815260008251806020840152613da6816040850160208701613d3f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea26469706673582212202a450a13b51af1cecfee57550cf34177981ff911c05b87bdafa0bbd89793be0564736f6c634300080900330000000000000000000000004062400c54ffbe6209c5be655abe6b07b8d10e1900000000000000000000000093a0ca26d220a1e86b3b8d43d3255b36e480134f

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000004062400c54ffbe6209c5be655abe6b07b8d10e1900000000000000000000000093a0ca26d220a1e86b3b8d43d3255b36e480134f

-----Decoded View---------------
Arg [0] : _prontera (address): 0x4062400c54ffbe6209c5be655abe6b07b8d10e19
Arg [1] : _juno (address): 0x93a0ca26d220a1e86b3b8d43d3255b36e480134f

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000004062400c54ffbe6209c5be655abe6b07b8d10e19
Arg [1] : 00000000000000000000000093a0ca26d220a1e86b3b8d43d3255b36e480134f


Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.