Contract 0x5e5c517ec55d6393d91d6a1379e5ae393a01a423

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x47a16bccc70f55fec1cbe5a1974a1d60b46a38daa7302c7e28fee7344dd04058Approve199798112021-10-08 10:15:519 days 6 hrs ago0x78f214cf1287b5c97df55a285e885b09c0d43e3d IN  0x5e5c517ec55d6393d91d6a1379e5ae393a01a4230 MATIC0.00079662
0x4e45fd59c7fe7fc12aaf1418865fdd0e0a5396524b9cb421693eadc10dc7bd16Approve199797772021-10-08 10:13:359 days 6 hrs ago0x78f214cf1287b5c97df55a285e885b09c0d43e3d IN  0x5e5c517ec55d6393d91d6a1379e5ae393a01a4230 MATIC0.00139362
0x8d38dcd150d79abf2a7339f473f8a10ac4b18be1c6bcc87c23d3224aec4c1f37Approve190393332021-09-12 22:36:1234 days 17 hrs ago0xae7dbb17bc40d53a6363409c6b1ed88d3cfdc31e IN  0x5e5c517ec55d6393d91d6a1379e5ae393a01a4230 MATIC0.00046454
0x7374c90a471ed0b0bb90fb7744d38be4bcf2c4999d55aa91dabe5647b5c441a9Approve190003872021-09-11 19:15:4735 days 21 hrs ago0x42ab133871fa8b4af29efc4d1daadc14818df661 IN  0x5e5c517ec55d6393d91d6a1379e5ae393a01a4230 MATIC0.000180218208
0x2c2cae4a6e2f8f7d47febe1dab84bc5a32cb7c30e173e54ff1340bf5d158e363Approve189935492021-09-11 14:32:1236 days 1 hr ago0x92f13a3a27b50252b62c0d1eec5838c94f8520c0 IN  0x5e5c517ec55d6393d91d6a1379e5ae393a01a4230 MATIC0.0001021988
0x3a47b2ccb2ee5dd3bc466651adbba8763afc2ddbe638384703f46cbc4c7b21bcApprove189804162021-09-11 5:47:4936 days 10 hrs ago0xc16414ac1fedfdac4f8a09674d994e1bbb9d7113 IN  0x5e5c517ec55d6393d91d6a1379e5ae393a01a4230 MATIC0.00139362
0x3f530af44e8dd6b5f90e4c806b2994a448fba92489578520785ccfd2dd43b404Approve189412792021-09-10 3:57:3837 days 12 hrs ago0x26a6dc267e276fded7b40251c8fc08b1b40df367 IN  0x5e5c517ec55d6393d91d6a1379e5ae393a01a4230 MATIC0.00030938364
0xaf6c82099903bba20b51beb3acfd7eae66829810e3213f79b73e34d7abecbe9dApprove189326442021-09-09 21:54:2037 days 18 hrs ago0xd88896b1d19d5a4eb760cd8ae0a24a9690488004 IN  0x5e5c517ec55d6393d91d6a1379e5ae393a01a4230 MATIC0.000077865821
0xa5ff4c5b005cf1375c05f904510091bb6c6508f045444cc7c69f6119c7369361Approve189282212021-09-09 18:56:4237 days 21 hrs ago0x68863699ae0be79db4591f38295672d1bc6f5112 IN  0x5e5c517ec55d6393d91d6a1379e5ae393a01a4230 MATIC0.000770880903
0x84adde8203d7393f28738193d429ea6d20818dd90f5393ebdff78ae3712d1896Approve189252832021-09-09 16:52:1337 days 23 hrs ago0xeb9522d4f1653bb214487b6ef3f0a77b53fffd11 IN  0x5e5c517ec55d6393d91d6a1379e5ae393a01a4230 MATIC0.00046454
0x378ef2e4469dfbac3c7555ec6eef4334f5fd9eec6d6df73d89bd28c8b5376734Approve189206972021-09-09 13:51:3338 days 2 hrs ago0xae59a89c3b0c306c4efcb30c03d2420bc60dbbf1 IN  0x5e5c517ec55d6393d91d6a1379e5ae393a01a4230 MATIC0.00139362
0x0f21bd854aeb3aaa334788f84c9a354334fef6987a47b505a6d744115df34131Approve189097092021-09-09 6:41:2638 days 9 hrs ago0x3878ca8721a0d0e2c394fbeabc76d730b00dac90 IN  0x5e5c517ec55d6393d91d6a1379e5ae393a01a4230 MATIC0.000046454004
0xc34a976be80a535d9b1e20ea9a300199de49d184fcf9a0a3e5e2eb1f08d33474Approve189092492021-09-09 6:25:3038 days 9 hrs ago0x949832719d77c1c2a912a12ec32202b2b8037b02 IN  0x5e5c517ec55d6393d91d6a1379e5ae393a01a4230 MATIC0.00023227
0x1c7cfea9ca7675ee9a64f018bc4965516bc1a177306e5a4fac7020ac06d92ab4Approve189084812021-09-09 5:59:0538 days 10 hrs ago0x749b3e49dfea1c6201cb3516626102efd23a2567 IN  0x5e5c517ec55d6393d91d6a1379e5ae393a01a4230 MATIC0.000046454
0xbbba1da8d21272369e28fdee5c08a020e69e9ae3ed07b4ac77f9003e4f2fcdebApprove189060622021-09-09 4:33:4738 days 11 hrs ago0x355a3018fd22acf0ace1c3fb8f5762554d5ec157 IN  0x5e5c517ec55d6393d91d6a1379e5ae393a01a4230 MATIC0.0000510994
0xf5b5146080e27139cac9ed29bc440e75be70cdc87aebe527998ea97dd16ce842Approve189022822021-09-09 2:10:5938 days 14 hrs ago0x68dd8f58152482a063ea23e34408ab91940dbb92 IN  0x5e5c517ec55d6393d91d6a1379e5ae393a01a4230 MATIC0.000068631604
0x52fd396bcb90b169c5e115ca5e9405f76ae2cc80aed255cb62d1449c4cfd876cApprove188989432021-09-09 0:01:0838 days 16 hrs ago0x283eb037f73a0032cfd1bf8e67314cbb71980e04 IN  0x5e5c517ec55d6393d91d6a1379e5ae393a01a4230 MATIC0.000173472211
0x4c6c404168864230c826c74fb06f171a49cc744793d2e27a0cc4797955b12bccApprove188963792021-09-08 22:16:3738 days 17 hrs ago0x518832e61536567c07a5e8cb0cdcc1e922290172 IN  0x5e5c517ec55d6393d91d6a1379e5ae393a01a4230 MATIC0.000092908
0x5aa2fe6260a0a5ee8fcc138d4a1cb03752ca14f7e5a36af1efd56f4382e34ec3Approve188962522021-09-08 22:12:1538 days 18 hrs ago0xd8737092768c3be44ac64270adef3d45bfc12c5a IN  0x5e5c517ec55d6393d91d6a1379e5ae393a01a4230 MATIC0.000046454
0x1dc1202248df8a3620555580064d3018b7c808ba5af2a979b90f0d6b7ff8c6f3Approve188961422021-09-08 22:08:3138 days 18 hrs ago0xff4ae8d6ffb63145351c3a00dcbfd57b4ad9476a IN  0x5e5c517ec55d6393d91d6a1379e5ae393a01a4230 MATIC0.000046454
0xef1a9225f2ae7c6629d1bbe9180cc7ee9a7690292c1910b58edcd6173638df81Approve188936312021-09-08 20:28:2438 days 19 hrs ago0xc78214d69a863dd02a681bea9a41190301e93e42 IN  0x5e5c517ec55d6393d91d6a1379e5ae393a01a4230 MATIC0.000650356
0x661bcf0746183e30ee7eb9bb0432c2f089f30534468d749fef561058171c7121Approve188886982021-09-08 17:08:3238 days 23 hrs ago0xd3eb89929a27df9d3bf0367e8dfd2db8bc0a65d0 IN  0x5e5c517ec55d6393d91d6a1379e5ae393a01a4230 MATIC0.000139362
0x2f77b6be318d75a85cdd7db17cbdf19c096957ee694ee842f02672a9b6ba05c6Approve188863752021-09-08 15:37:1339 days 39 mins ago0x8b2856fbd13d98b30c7bd47114284dffb7d223c9 IN  0x5e5c517ec55d6393d91d6a1379e5ae393a01a4230 MATIC0.000766491
0x90e5efb7c67d503eb8dc98bef03bcbd0c1f68d2726b0b97e8cca3aac959285ccApprove188856342021-09-08 15:06:1339 days 1 hr ago0x946bdfde8858f43a50130d9e8e4161ecb0acb614 IN  0x5e5c517ec55d6393d91d6a1379e5ae393a01a4230 MATIC0.00039831
0xd6a32b3a7f2fdb447be3a0dd17cb33a600051041b0509190ac925fee7577c401Approve188856272021-09-08 15:05:4939 days 1 hr ago0x946bdfde8858f43a50130d9e8e4161ecb0acb614 IN  0x5e5c517ec55d6393d91d6a1379e5ae393a01a4230 MATIC0.000300325488
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x9a0bb1c0f4778df430457c413e7c8c841916ffa41cec07b8c6331ecc2ee4b287176901322021-08-06 18:29:2471 days 21 hrs ago SushiSwap: V2 Factory  Contract Creation0 MATIC
[ Download CSV Export 
Loading

Contract Source Code Verified (Similar Match)
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0x85de135ff062df790a5f20b79120f17d3da63b2d

Contract Name:
UniswapV2Pair

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2021-06-11
*/

/**
 *Submitted for verification at Etherscan.io on 2020-09-05
*/

// File: contracts/uniswapv2/interfaces/IUniswapV2Factory.sol

pragma solidity >=0.5.0;

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function migrator() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
    function setMigrator(address) external;
}

// File: contracts/uniswapv2/libraries/SafeMath.sol

pragma solidity =0.6.12;

// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)

library SafeMathUniswap {
    function add(uint x, uint y) internal pure returns (uint z) {
        require((z = x + y) >= x, 'ds-math-add-overflow');
    }

    function sub(uint x, uint y) internal pure returns (uint z) {
        require((z = x - y) <= x, 'ds-math-sub-underflow');
    }

    function mul(uint x, uint y) internal pure returns (uint z) {
        require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow');
    }
}

// File: contracts/uniswapv2/UniswapV2ERC20.sol

pragma solidity =0.6.12;


contract UniswapV2ERC20 {
    using SafeMathUniswap for uint;

    string public constant name = 'SushiSwap LP Token';
    string public constant symbol = 'SLP';
    uint8 public constant decimals = 18;
    uint  public totalSupply;
    mapping(address => uint) public balanceOf;
    mapping(address => mapping(address => uint)) public allowance;

    bytes32 public DOMAIN_SEPARATOR;
    // keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");
    bytes32 public constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;
    mapping(address => uint) public nonces;

    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    constructor() public {
        uint chainId;
        assembly {
            chainId := chainid()
        }
        DOMAIN_SEPARATOR = keccak256(
            abi.encode(
                keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'),
                keccak256(bytes(name)),
                keccak256(bytes('1')),
                chainId,
                address(this)
            )
        );
    }

    function _mint(address to, uint value) internal {
        totalSupply = totalSupply.add(value);
        balanceOf[to] = balanceOf[to].add(value);
        emit Transfer(address(0), to, value);
    }

    function _burn(address from, uint value) internal {
        balanceOf[from] = balanceOf[from].sub(value);
        totalSupply = totalSupply.sub(value);
        emit Transfer(from, address(0), value);
    }

    function _approve(address owner, address spender, uint value) private {
        allowance[owner][spender] = value;
        emit Approval(owner, spender, value);
    }

    function _transfer(address from, address to, uint value) private {
        balanceOf[from] = balanceOf[from].sub(value);
        balanceOf[to] = balanceOf[to].add(value);
        emit Transfer(from, to, value);
    }

    function approve(address spender, uint value) external returns (bool) {
        _approve(msg.sender, spender, value);
        return true;
    }

    function transfer(address to, uint value) external returns (bool) {
        _transfer(msg.sender, to, value);
        return true;
    }

    function transferFrom(address from, address to, uint value) external returns (bool) {
        if (allowance[from][msg.sender] != uint(-1)) {
            allowance[from][msg.sender] = allowance[from][msg.sender].sub(value);
        }
        _transfer(from, to, value);
        return true;
    }

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external {
        require(deadline >= block.timestamp, 'UniswapV2: EXPIRED');
        bytes32 digest = keccak256(
            abi.encodePacked(
                '\x19\x01',
                DOMAIN_SEPARATOR,
                keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline))
            )
        );
        address recoveredAddress = ecrecover(digest, v, r, s);
        require(recoveredAddress != address(0) && recoveredAddress == owner, 'UniswapV2: INVALID_SIGNATURE');
        _approve(owner, spender, value);
    }
}

// File: contracts/uniswapv2/libraries/Math.sol

pragma solidity =0.6.12;

// a library for performing various math operations

library Math {
    function min(uint x, uint y) internal pure returns (uint z) {
        z = x < y ? x : y;
    }

    // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method)
    function sqrt(uint y) internal pure returns (uint z) {
        if (y > 3) {
            z = y;
            uint x = y / 2 + 1;
            while (x < z) {
                z = x;
                x = (y / x + x) / 2;
            }
        } else if (y != 0) {
            z = 1;
        }
    }
}

// File: contracts/uniswapv2/libraries/UQ112x112.sol

pragma solidity =0.6.12;

// a library for handling binary fixed point numbers (https://en.wikipedia.org/wiki/Q_(number_format))

// range: [0, 2**112 - 1]
// resolution: 1 / 2**112

library UQ112x112 {
    uint224 constant Q112 = 2**112;

    // encode a uint112 as a UQ112x112
    function encode(uint112 y) internal pure returns (uint224 z) {
        z = uint224(y) * Q112; // never overflows
    }

    // divide a UQ112x112 by a uint112, returning a UQ112x112
    function uqdiv(uint224 x, uint112 y) internal pure returns (uint224 z) {
        z = x / uint224(y);
    }
}

// File: contracts/uniswapv2/interfaces/IERC20.sol

pragma solidity >=0.5.0;

interface IERC20Uniswap {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
}

// File: contracts/uniswapv2/interfaces/IUniswapV2Callee.sol

pragma solidity >=0.5.0;

interface IUniswapV2Callee {
    function uniswapV2Call(address sender, uint amount0, uint amount1, bytes calldata data) external;
}

// File: contracts/uniswapv2/UniswapV2Pair.sol

pragma solidity =0.6.12;








interface IMigrator {
    // Return the desired amount of liquidity token that the migrator wants.
    function desiredLiquidity() external view returns (uint256);
}

contract UniswapV2Pair is UniswapV2ERC20 {
    using SafeMathUniswap  for uint;
    using UQ112x112 for uint224;

    uint public constant MINIMUM_LIQUIDITY = 10**3;
    bytes4 private constant SELECTOR = bytes4(keccak256(bytes('transfer(address,uint256)')));

    address public factory;
    address public token0;
    address public token1;

    uint112 private reserve0;           // uses single storage slot, accessible via getReserves
    uint112 private reserve1;           // uses single storage slot, accessible via getReserves
    uint32  private blockTimestampLast; // uses single storage slot, accessible via getReserves

    uint public price0CumulativeLast;
    uint public price1CumulativeLast;
    uint public kLast; // reserve0 * reserve1, as of immediately after the most recent liquidity event

    uint private unlocked = 1;
    modifier lock() {
        require(unlocked == 1, 'UniswapV2: LOCKED');
        unlocked = 0;
        _;
        unlocked = 1;
    }

    function getReserves() public view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) {
        _reserve0 = reserve0;
        _reserve1 = reserve1;
        _blockTimestampLast = blockTimestampLast;
    }

    function _safeTransfer(address token, address to, uint value) private {
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(SELECTOR, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'UniswapV2: TRANSFER_FAILED');
    }

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    constructor() public {
        factory = msg.sender;
    }

    // called once by the factory at time of deployment
    function initialize(address _token0, address _token1) external {
        require(msg.sender == factory, 'UniswapV2: FORBIDDEN'); // sufficient check
        token0 = _token0;
        token1 = _token1;
    }

    // update reserves and, on the first call per block, price accumulators
    function _update(uint balance0, uint balance1, uint112 _reserve0, uint112 _reserve1) private {
        require(balance0 <= uint112(-1) && balance1 <= uint112(-1), 'UniswapV2: OVERFLOW');
        uint32 blockTimestamp = uint32(block.timestamp % 2**32);
        uint32 timeElapsed = blockTimestamp - blockTimestampLast; // overflow is desired
        if (timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0) {
            // * never overflows, and + overflow is desired
            price0CumulativeLast += uint(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed;
            price1CumulativeLast += uint(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed;
        }
        reserve0 = uint112(balance0);
        reserve1 = uint112(balance1);
        blockTimestampLast = blockTimestamp;
        emit Sync(reserve0, reserve1);
    }

    // if fee is on, mint liquidity equivalent to 1/6th of the growth in sqrt(k)
    function _mintFee(uint112 _reserve0, uint112 _reserve1) private returns (bool feeOn) {
        address feeTo = IUniswapV2Factory(factory).feeTo();
        feeOn = feeTo != address(0);
        uint _kLast = kLast; // gas savings
        if (feeOn) {
            if (_kLast != 0) {
                uint rootK = Math.sqrt(uint(_reserve0).mul(_reserve1));
                uint rootKLast = Math.sqrt(_kLast);
                if (rootK > rootKLast) {
                    uint numerator = totalSupply.mul(rootK.sub(rootKLast));
                    uint denominator = rootK.mul(5).add(rootKLast);
                    uint liquidity = numerator / denominator;
                    if (liquidity > 0) _mint(feeTo, liquidity);
                }
            }
        } else if (_kLast != 0) {
            kLast = 0;
        }
    }

    // this low-level function should be called from a contract which performs important safety checks
    function mint(address to) external lock returns (uint liquidity) {
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        uint balance0 = IERC20Uniswap(token0).balanceOf(address(this));
        uint balance1 = IERC20Uniswap(token1).balanceOf(address(this));
        uint amount0 = balance0.sub(_reserve0);
        uint amount1 = balance1.sub(_reserve1);

        bool feeOn = _mintFee(_reserve0, _reserve1);
        uint _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee
        if (_totalSupply == 0) {
            address migrator = IUniswapV2Factory(factory).migrator();
            if (msg.sender == migrator) {
                liquidity = IMigrator(migrator).desiredLiquidity();
                require(liquidity > 0 && liquidity != uint256(-1), "Bad desired liquidity");
            } else {
                require(migrator == address(0), "Must not have migrator");
                liquidity = Math.sqrt(amount0.mul(amount1)).sub(MINIMUM_LIQUIDITY);
                _mint(address(0), MINIMUM_LIQUIDITY); // permanently lock the first MINIMUM_LIQUIDITY tokens
            }
        } else {
            liquidity = Math.min(amount0.mul(_totalSupply) / _reserve0, amount1.mul(_totalSupply) / _reserve1);
        }
        require(liquidity > 0, 'UniswapV2: INSUFFICIENT_LIQUIDITY_MINTED');
        _mint(to, liquidity);

        _update(balance0, balance1, _reserve0, _reserve1);
        if (feeOn) kLast = uint(reserve0).mul(reserve1); // reserve0 and reserve1 are up-to-date
        emit Mint(msg.sender, amount0, amount1);
    }

    // this low-level function should be called from a contract which performs important safety checks
    function burn(address to) external lock returns (uint amount0, uint amount1) {
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        address _token0 = token0;                                // gas savings
        address _token1 = token1;                                // gas savings
        uint balance0 = IERC20Uniswap(_token0).balanceOf(address(this));
        uint balance1 = IERC20Uniswap(_token1).balanceOf(address(this));
        uint liquidity = balanceOf[address(this)];

        bool feeOn = _mintFee(_reserve0, _reserve1);
        uint _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee
        amount0 = liquidity.mul(balance0) / _totalSupply; // using balances ensures pro-rata distribution
        amount1 = liquidity.mul(balance1) / _totalSupply; // using balances ensures pro-rata distribution
        require(amount0 > 0 && amount1 > 0, 'UniswapV2: INSUFFICIENT_LIQUIDITY_BURNED');
        _burn(address(this), liquidity);
        _safeTransfer(_token0, to, amount0);
        _safeTransfer(_token1, to, amount1);
        balance0 = IERC20Uniswap(_token0).balanceOf(address(this));
        balance1 = IERC20Uniswap(_token1).balanceOf(address(this));

        _update(balance0, balance1, _reserve0, _reserve1);
        if (feeOn) kLast = uint(reserve0).mul(reserve1); // reserve0 and reserve1 are up-to-date
        emit Burn(msg.sender, amount0, amount1, to);
    }

    // this low-level function should be called from a contract which performs important safety checks
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external lock {
        require(amount0Out > 0 || amount1Out > 0, 'UniswapV2: INSUFFICIENT_OUTPUT_AMOUNT');
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        require(amount0Out < _reserve0 && amount1Out < _reserve1, 'UniswapV2: INSUFFICIENT_LIQUIDITY');

        uint balance0;
        uint balance1;
        { // scope for _token{0,1}, avoids stack too deep errors
        address _token0 = token0;
        address _token1 = token1;
        require(to != _token0 && to != _token1, 'UniswapV2: INVALID_TO');
        if (amount0Out > 0) _safeTransfer(_token0, to, amount0Out); // optimistically transfer tokens
        if (amount1Out > 0) _safeTransfer(_token1, to, amount1Out); // optimistically transfer tokens
        if (data.length > 0) IUniswapV2Callee(to).uniswapV2Call(msg.sender, amount0Out, amount1Out, data);
        balance0 = IERC20Uniswap(_token0).balanceOf(address(this));
        balance1 = IERC20Uniswap(_token1).balanceOf(address(this));
        }
        uint amount0In = balance0 > _reserve0 - amount0Out ? balance0 - (_reserve0 - amount0Out) : 0;
        uint amount1In = balance1 > _reserve1 - amount1Out ? balance1 - (_reserve1 - amount1Out) : 0;
        require(amount0In > 0 || amount1In > 0, 'UniswapV2: INSUFFICIENT_INPUT_AMOUNT');
        { // scope for reserve{0,1}Adjusted, avoids stack too deep errors
        uint balance0Adjusted = balance0.mul(1000).sub(amount0In.mul(3));
        uint balance1Adjusted = balance1.mul(1000).sub(amount1In.mul(3));
        require(balance0Adjusted.mul(balance1Adjusted) >= uint(_reserve0).mul(_reserve1).mul(1000**2), 'UniswapV2: K');
        }

        _update(balance0, balance1, _reserve0, _reserve1);
        emit Swap(msg.sender, amount0In, amount1In, amount0Out, amount1Out, to);
    }

    // force balances to match reserves
    function skim(address to) external lock {
        address _token0 = token0; // gas savings
        address _token1 = token1; // gas savings
        _safeTransfer(_token0, to, IERC20Uniswap(_token0).balanceOf(address(this)).sub(reserve0));
        _safeTransfer(_token1, to, IERC20Uniswap(_token1).balanceOf(address(this)).sub(reserve1));
    }

    // force reserves to match balances
    function sync() external lock {
        _update(IERC20Uniswap(token0).balanceOf(address(this)), IERC20Uniswap(token1).balanceOf(address(this)), reserve0, reserve1);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint112","name":"reserve0","type":"uint112"},{"indexed":false,"internalType":"uint112","name":"reserve1","type":"uint112"}],"name":"Sync","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":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINIMUM_LIQUIDITY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReserves","outputs":[{"internalType":"uint112","name":"_reserve0","type":"uint112"},{"internalType":"uint112","name":"_reserve1","type":"uint112"},{"internalType":"uint32","name":"_blockTimestampLast","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token0","type":"address"},{"internalType":"address","name":"_token1","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"kLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","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"},{"inputs":[],"name":"price0CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price1CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"skim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount0Out","type":"uint256"},{"internalType":"uint256","name":"amount1Out","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"swap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60806040526001600c5534801561001557600080fd5b50604080518082018252601281527129bab9b434a9bbb0b8102628102a37b5b2b760711b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fefbffe65652a145845c9bc8d0532945be6b9830fe1e9966c887bd298e551ac83818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b03191633179055612377806101106000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a714610534578063d505accf1461053c578063dd62ed3e1461058d578063fff6cae9146105bb576101a9565b8063ba9a7a56146104fe578063bc25cf7714610506578063c45a01551461052c576101a9565b80637ecebe00116100d35780637ecebe001461046557806389afcb441461048b57806395d89b41146104ca578063a9059cbb146104d2576101a9565b80636a6278421461041157806370a08231146104375780637464fc3d1461045d576101a9565b806323b872dd116101665780633644e515116101405780633644e515146103cb578063485cc955146103d35780635909c0d5146104015780635a3d549314610409576101a9565b806323b872dd1461036f57806330adf81f146103a5578063313ce567146103ad576101a9565b8063022c0d9f146101ae57806306fdde031461023c5780630902f1ac146102b9578063095ea7b3146102f15780630dfe16811461033157806318160ddd14610355575b600080fd5b61023a600480360360808110156101c457600080fd5b8135916020810135916001600160a01b0360408301351691908101906080810160608201356401000000008111156101fb57600080fd5b82018360208201111561020d57600080fd5b8035906020019184600183028401116401000000008311171561022f57600080fd5b5090925090506105c3565b005b610244610acb565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561027e578181015183820152602001610266565b50505050905090810190601f1680156102ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102c1610af9565b604080516001600160701b03948516815292909316602083015263ffffffff168183015290519081900360600190f35b61031d6004803603604081101561030757600080fd5b506001600160a01b038135169060200135610b23565b604080519115158252519081900360200190f35b610339610b3a565b604080516001600160a01b039092168252519081900360200190f35b61035d610b49565b60408051918252519081900360200190f35b61031d6004803603606081101561038557600080fd5b506001600160a01b03813581169160208101359091169060400135610b4f565b61035d610be3565b6103b5610c07565b6040805160ff9092168252519081900360200190f35b61035d610c0c565b61023a600480360360408110156103e957600080fd5b506001600160a01b0381358116916020013516610c12565b61035d610c96565b61035d610c9c565b61035d6004803603602081101561042757600080fd5b50356001600160a01b0316610ca2565b61035d6004803603602081101561044d57600080fd5b50356001600160a01b031661111e565b61035d611130565b61035d6004803603602081101561047b57600080fd5b50356001600160a01b0316611136565b6104b1600480360360208110156104a157600080fd5b50356001600160a01b0316611148565b6040805192835260208301919091528051918290030190f35b6102446114dc565b61031d600480360360408110156104e857600080fd5b506001600160a01b0381351690602001356114fb565b61035d611508565b61023a6004803603602081101561051c57600080fd5b50356001600160a01b031661150e565b610339611680565b61033961168f565b61023a600480360360e081101561055257600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c0013561169e565b61035d600480360360408110156105a357600080fd5b506001600160a01b03813581169160200135166118a0565b61023a6118bd565b600c5460011461060e576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c55841515806106215750600084115b61065c5760405162461bcd60e51b81526004018080602001828103825260258152602001806122886025913960400191505060405180910390fd5b600080610667610af9565b5091509150816001600160701b03168710801561068c5750806001600160701b031686105b6106c75760405162461bcd60e51b81526004018080602001828103825260218152602001806122d16021913960400191505060405180910390fd5b60065460075460009182916001600160a01b039182169190811690891682148015906107055750806001600160a01b0316896001600160a01b031614155b61074e576040805162461bcd60e51b8152602060048201526015602482015274556e697377617056323a20494e56414c49445f544f60581b604482015290519081900360640190fd5b8a1561075f5761075f828a8d611a1f565b891561077057610770818a8c611a1f565b861561082257886001600160a01b03166310d1e85c338d8d8c8c6040518663ffffffff1660e01b815260040180866001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561080957600080fd5b505af115801561081d573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561086857600080fd5b505afa15801561087c573d6000803e3d6000fd5b505050506040513d602081101561089257600080fd5b5051604080516370a0823160e01b815230600482015290519195506001600160a01b038316916370a0823191602480820192602092909190829003018186803b1580156108de57600080fd5b505afa1580156108f2573d6000803e3d6000fd5b505050506040513d602081101561090857600080fd5b5051925060009150506001600160701b0385168a9003831161092b57600061093a565b89856001600160701b03160383035b9050600089856001600160701b0316038311610957576000610966565b89856001600160701b03160383035b905060008211806109775750600081115b6109b25760405162461bcd60e51b81526004018080602001828103825260248152602001806122ad6024913960400191505060405180910390fd5b60006109d46109c2846003611bb9565b6109ce876103e8611bb9565b90611c1c565b905060006109e66109c2846003611bb9565b9050610a0b620f4240610a056001600160701b038b8116908b16611bb9565b90611bb9565b610a158383611bb9565b1015610a57576040805162461bcd60e51b815260206004820152600c60248201526b556e697377617056323a204b60a01b604482015290519081900360640190fd5b5050610a6584848888611c6c565b60408051838152602081018390528082018d9052606081018c905290516001600160a01b038b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280601281526020017129bab9b434a9bbb0b8102628102a37b5b2b760711b81525081565b6008546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b6000610b30338484611e2b565b5060015b92915050565b6006546001600160a01b031681565b60005481565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610bce576001600160a01b0384166000908152600260209081526040808320338452909152902054610ba99083611c1c565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610bd9848484611e8d565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b6005546001600160a01b03163314610c68576040805162461bcd60e51b81526020600482015260146024820152732ab734b9bbb0b82b191d102327a92124a22222a760611b604482015290519081900360640190fd5b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c54600114610cef576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c81905580610cff610af9565b50600654604080516370a0823160e01b815230600482015290519395509193506000926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610d5357600080fd5b505afa158015610d67573d6000803e3d6000fd5b505050506040513d6020811015610d7d57600080fd5b5051600754604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610dd057600080fd5b505afa158015610de4573d6000803e3d6000fd5b505050506040513d6020811015610dfa57600080fd5b505190506000610e13836001600160701b038716611c1c565b90506000610e2a836001600160701b038716611c1c565b90506000610e388787611f3b565b6000549091508061100f5760055460408051637cd07e4760e01b815290516000926001600160a01b031691637cd07e47916004808301926020929190829003018186803b158015610e8857600080fd5b505afa158015610e9c573d6000803e3d6000fd5b505050506040513d6020811015610eb257600080fd5b50519050336001600160a01b0382161415610f8d57806001600160a01b03166340dc0e376040518163ffffffff1660e01b815260040160206040518083038186803b158015610f0057600080fd5b505afa158015610f14573d6000803e3d6000fd5b505050506040513d6020811015610f2a57600080fd5b505199508915801590610f3f57506000198a14155b610f88576040805162461bcd60e51b81526020600482015260156024820152744261642064657369726564206c697175696469747960581b604482015290519081900360640190fd5b611009565b6001600160a01b03811615610fe2576040805162461bcd60e51b815260206004820152601660248201527526bab9ba103737ba103430bb329036b4b3b930ba37b960511b604482015290519081900360640190fd5b610ffa6103e86109ce610ff58888611bb9565b61207b565b995061100960006103e86120cd565b50611052565b61104f6001600160701b0389166110268684611bb9565b8161102d57fe5b046001600160701b0389166110428685611bb9565b8161104957fe5b04612157565b98505b600089116110915760405162461bcd60e51b815260040180806020018281038252602881526020018061231a6028913960400191505060405180910390fd5b61109b8a8a6120cd565b6110a786868a8a611c6c565b81156110d1576008546110cd906001600160701b0380821691600160701b900416611bb9565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c54600114611196576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c819055806111a6610af9565b50600654600754604080516370a0823160e01b815230600482015290519496509294506001600160a01b039182169391169160009184916370a08231916024808301926020929190829003018186803b15801561120257600080fd5b505afa158015611216573d6000803e3d6000fd5b505050506040513d602081101561122c57600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038516916370a08231916024808301926020929190829003018186803b15801561127a57600080fd5b505afa15801561128e573d6000803e3d6000fd5b505050506040513d60208110156112a457600080fd5b5051306000908152600160205260408120549192506112c38888611f3b565b600054909150806112d48487611bb9565b816112db57fe5b049a50806112e98486611bb9565b816112f057fe5b04995060008b118015611303575060008a115b61133e5760405162461bcd60e51b81526004018080602001828103825260288152602001806122f26028913960400191505060405180910390fd5b611348308461216f565b611353878d8d611a1f565b61135e868d8c611a1f565b604080516370a0823160e01b815230600482015290516001600160a01b038916916370a08231916024808301926020929190829003018186803b1580156113a457600080fd5b505afa1580156113b8573d6000803e3d6000fd5b505050506040513d60208110156113ce57600080fd5b5051604080516370a0823160e01b815230600482015290519196506001600160a01b038816916370a0823191602480820192602092909190829003018186803b15801561141a57600080fd5b505afa15801561142e573d6000803e3d6000fd5b505050506040513d602081101561144457600080fd5b5051935061145485858b8b611c6c565b811561147e5760085461147a906001600160701b0380821691600160701b900416611bb9565b600b555b604080518c8152602081018c905281516001600160a01b038f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b604051806040016040528060038152602001620534c560ec1b81525081565b6000610b30338484611e8d565b6103e881565b600c54600114611559576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c55600654600754600854604080516370a0823160e01b815230600482015290516001600160a01b03948516949093169261160292859287926115fd926001600160701b03169185916370a0823191602480820192602092909190829003018186803b1580156115cb57600080fd5b505afa1580156115df573d6000803e3d6000fd5b505050506040513d60208110156115f557600080fd5b505190611c1c565b611a1f565b61167681846115fd6008600e9054906101000a90046001600160701b03166001600160701b0316856001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156115cb57600080fd5b50506001600c5550565b6005546001600160a01b031681565b6007546001600160a01b031681565b428410156116e8576040805162461bcd60e51b8152602060048201526012602482015271155b9a5cddd85c158c8e881156141254915160721b604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa158015611803573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906118395750886001600160a01b0316816001600160a01b0316145b61188a576040805162461bcd60e51b815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611895898989611e2b565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611908576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c55600654604080516370a0823160e01b81523060048201529051611a18926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561195957600080fd5b505afa15801561196d573d6000803e3d6000fd5b505050506040513d602081101561198357600080fd5b5051600754604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156119d057600080fd5b505afa1580156119e4573d6000803e3d6000fd5b505050506040513d60208110156119fa57600080fd5b50516008546001600160701b0380821691600160701b900416611c6c565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b60208310611acc5780518252601f199092019160209182019101611aad565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611b2e576040519150601f19603f3d011682016040523d82523d6000602084013e611b33565b606091505b5091509150818015611b61575080511580611b615750808060200190516020811015611b5e57600080fd5b50515b611bb2576040805162461bcd60e51b815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b6000811580611bd457505080820282828281611bd157fe5b04145b610b34576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820382811115610b34576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6001600160701b038411801590611c8a57506001600160701b038311155b611cd1576040805162461bcd60e51b8152602060048201526013602482015272556e697377617056323a204f564552464c4f5760681b604482015290519081900360640190fd5b60085463ffffffff42811691600160e01b90048116820390811615801590611d0157506001600160701b03841615155b8015611d1557506001600160701b03831615155b15611d80578063ffffffff16611d3d85611d2e86612201565b6001600160e01b031690612213565b600980546001600160e01b03929092169290920201905563ffffffff8116611d6884611d2e87612201565b600a80546001600160e01b0392909216929092020190555b600880546dffffffffffffffffffffffffffff19166001600160701b03888116919091176dffffffffffffffffffffffffffff60701b1916600160701b8883168102919091176001600160e01b0316600160e01b63ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316600090815260016020526040902054611eb09082611c1c565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611edf9082612238565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b158015611f8c57600080fd5b505afa158015611fa0573d6000803e3d6000fd5b505050506040513d6020811015611fb657600080fd5b5051600b546001600160a01b038216158015945091925090612067578015612062576000611ff3610ff56001600160701b03888116908816611bb9565b905060006120008361207b565b90508082111561205f5760006120226120198484611c1c565b60005490611bb9565b9050600061203b83612035866005611bb9565b90612238565b9050600081838161204857fe5b049050801561205b5761205b87826120cd565b5050505b50505b612073565b8015612073576000600b555b505092915050565b600060038211156120be575080600160028204015b818110156120b8578091506002818285816120a757fe5b0401816120b057fe5b049050612090565b506120c8565b81156120c8575060015b919050565b6000546120da9082612238565b60009081556001600160a01b0383168152600160205260409020546120ff9082612238565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106121665781612168565b825b9392505050565b6001600160a01b0382166000908152600160205260409020546121929082611c1c565b6001600160a01b038316600090815260016020526040812091909155546121b99082611c1c565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6001600160701b0316600160701b0290565b60006001600160701b0382166001600160e01b0384168161223057fe5b049392505050565b80820182811015610b34576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a2646970667358221220713a8bf21df06433f34b5c9abf186abb737e72524583bdf420105a289791e24864736f6c634300060c0033

Deployed ByteCode Sourcemap

7791:10161:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15428:1903;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15428:1903:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15428:1903:0;;-1:-1:-1;15428:1903:0;-1:-1:-1;15428:1903:0;:::i;:::-;;1714:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8803:231;;;:::i;:::-;;;;-1:-1:-1;;;;;8803:231:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3768:147;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3768:147:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;8092:21;;;:::i;:::-;;;;-1:-1:-1;;;;;8092:21:0;;;;;;;;;;;;;;1857:24;;;:::i;:::-;;;;;;;;;;;;;;;;4070:301;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4070:301:0;;;;;;;;;;;;;;;;;:::i;2149:108::-;;;:::i;1815:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2006:31;;;:::i;9863:210::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9863:210:0;;;;;;;;;;:::i;8443:32::-;;;:::i;8482:::-;;;:::i;12057:1653::-;;;;;;;;;;;;;;;;-1:-1:-1;12057:1653:0;-1:-1:-1;;;;;12057:1653:0;;:::i;1888:41::-;;;;;;;;;;;;;;;;-1:-1:-1;1888:41:0;-1:-1:-1;;;;;1888:41:0;;:::i;8521:17::-;;;:::i;2264:38::-;;;;;;;;;;;;;;;;-1:-1:-1;2264:38:0;-1:-1:-1;;;;;2264:38:0;;:::i;13822:1494::-;;;;;;;;;;;;;;;;-1:-1:-1;13822:1494:0;-1:-1:-1;;;;;13822:1494:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1771:37;;;:::i;3923:139::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3923:139:0;;;;;;;;:::i;7913:46::-;;;:::i;17380:348::-;;;;;;;;;;;;;;;;-1:-1:-1;17380:348:0;-1:-1:-1;;;;;17380:348:0;;:::i;8063:22::-;;;:::i;8120:21::-;;;:::i;4379:674::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4379:674:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1936:61::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1936:61:0;;;;;;;;;;:::i;17777:172::-;;;:::i;15428:1903::-;8694:8;;8706:1;8694:13;8686:43;;;;;-1:-1:-1;;;8686:43:0;;;;;;;;;;;;-1:-1:-1;;;8686:43:0;;;;;;;;;;;;;;;8751:1;8740:8;:12;15542:14;;;;:32:::1;;;15573:1;15560:10;:14;15542:32;15534:82;;;;-1:-1:-1::0;;;15534:82:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15628:17;15647::::0;15669:13:::1;:11;:13::i;:::-;15627:55;;;;;15729:9;-1:-1:-1::0;;;;;15716:22:0::1;:10;:22;:48;;;;;15755:9;-1:-1:-1::0;;;;;15742:22:0::1;:10;:22;15716:48;15708:94;;;;-1:-1:-1::0;;;15708:94:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15947:6;::::0;15982::::1;::::0;15815:13:::1;::::0;;;-1:-1:-1;;;;;15947:6:0;;::::1;::::0;15982;;::::1;::::0;16007:13;::::1;::::0;::::1;::::0;::::1;::::0;:30:::1;;;16030:7;-1:-1:-1::0;;;;;16024:13:0::1;:2;-1:-1:-1::0;;;;;16024:13:0::1;;;16007:30;15999:64;;;::::0;;-1:-1:-1;;;15999:64:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;15999:64:0;;;;;;;;;;;;;::::1;;16078:14:::0;;16074:58:::1;;16094:38;16108:7;16117:2;16121:10;16094:13;:38::i;:::-;16181:14:::0;;16177:58:::1;;16197:38;16211:7;16220:2;16224:10;16197:13;:38::i;:::-;16284:15:::0;;16280:97:::1;;16318:2;-1:-1:-1::0;;;;;16301:34:0::1;;16336:10;16348;16360;16372:4;;16301:76;;;;;;;;;;;;;-1:-1:-1::0;;;;;16301:76:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16280:97;16399:47;::::0;;-1:-1:-1;;;16399:47:0;;16440:4:::1;16399:47;::::0;::::1;::::0;;;-1:-1:-1;;;;;16399:32:0;::::1;::::0;::::1;::::0;:47;;;;;::::1;::::0;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;16399:47:0;16468::::1;::::0;;-1:-1:-1;;;16468:47:0;;16509:4:::1;16468:47;::::0;::::1;::::0;;;16399;;-1:-1:-1;;;;;;16468:32:0;::::1;::::0;::::1;::::0;:47;;;;;16399::::1;::::0;16468;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;16468:47:0;;-1:-1:-1;16537:14:0::1;::::0;-1:-1:-1;;;;;;;16565:22:0;::::1;::::0;;::::1;16554:33:::0;::::1;:75;;16628:1;16554:75;;;16614:10;16602:9;-1:-1:-1::0;;;;;16602:22:0::1;;16590:8;:35;16554:75;16537:92;;16640:14;16680:10;16668:9;-1:-1:-1::0;;;;;16668:22:0::1;;16657:8;:33;:75;;16731:1;16657:75;;;16717:10;16705:9;-1:-1:-1::0;;;;;16705:22:0::1;;16693:8;:35;16657:75;16640:92;;16763:1;16751:9;:13;:30;;;;16780:1;16768:9;:13;16751:30;16743:79;;;;-1:-1:-1::0;;;16743:79:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16908:21;16932:40;16955:16;:9:::0;16969:1:::1;16955:13;:16::i;:::-;16932:18;:8:::0;16945:4:::1;16932:12;:18::i;:::-;:22:::0;::::1;:40::i;:::-;16908:64:::0;-1:-1:-1;16983:21:0::1;17007:40;17030:16;:9:::0;17044:1:::1;17030:13;:16::i;17007:40::-;16983:64:::0;-1:-1:-1;17108:43:0::1;17143:7;17108:30;-1:-1:-1::0;;;;;17108:15:0;;::::1;::::0;:30;::::1;:19;:30::i;:::-;:34:::0;::::1;:43::i;:::-;17066:38;:16:::0;17087;17066:20:::1;:38::i;:::-;:85;;17058:110;;;::::0;;-1:-1:-1;;;17058:110:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;17058:110:0;;;;;;;;;;;;;::::1;;8763:1;;17192:49;17200:8;17210;17220:9;17231;17192:7;:49::i;:::-;17257:66;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17257:66:0;::::1;::::0;17262:10:::1;::::0;17257:66:::1;::::0;;;;;;;::::1;-1:-1:-1::0;;8786:1:0;8775:8;:12;-1:-1:-1;;;;;;;;;15428:1903:0:o;1714:50::-;;;;;;;;;;;;;;-1:-1:-1;;;1714:50:0;;;;:::o;8803:231::-;8936:8;;-1:-1:-1;;;;;8936:8:0;;;;-1:-1:-1;;;8967:8:0;;;;;;-1:-1:-1;;;9008:18:0;;;;;8803:231::o;3768:147::-;3832:4;3849:36;3858:10;3870:7;3879:5;3849:8;:36::i;:::-;-1:-1:-1;3903:4:0;3768:147;;;;;:::o;8092:21::-;;;-1:-1:-1;;;;;8092:21:0;;:::o;1857:24::-;;;;:::o;4070:301::-;-1:-1:-1;;;;;4169:15:0;;4148:4;4169:15;;;:9;:15;;;;;;;;4185:10;4169:27;;;;;;;;-1:-1:-1;;4169:39:0;4165:140;;-1:-1:-1;;;;;4255:15:0;;;;;;:9;:15;;;;;;;;4271:10;4255:27;;;;;;;;:38;;4287:5;4255:31;:38::i;:::-;-1:-1:-1;;;;;4225:15:0;;;;;;:9;:15;;;;;;;;4241:10;4225:27;;;;;;;:68;4165:140;4315:26;4325:4;4331:2;4335:5;4315:9;:26::i;:::-;-1:-1:-1;4359:4:0;4070:301;;;;;:::o;2149:108::-;2191:66;2149:108;:::o;1815:35::-;1848:2;1815:35;:::o;2006:31::-;;;;:::o;9863:210::-;9959:7;;-1:-1:-1;;;;;9959:7:0;9945:10;:21;9937:54;;;;;-1:-1:-1;;;9937:54:0;;;;;;;;;;;;-1:-1:-1;;;9937:54:0;;;;;;;;;;;;;;;10022:6;:16;;-1:-1:-1;;;;;10022:16:0;;;-1:-1:-1;;;;;;10022:16:0;;;;;;;10049:6;:16;;;;;;;;;;;9863:210::o;8443:32::-;;;;:::o;8482:::-;;;;:::o;12057:1653::-;12106:14;8694:8;;8706:1;8694:13;8686:43;;;;;-1:-1:-1;;;8686:43:0;;;;;;;;;;;;-1:-1:-1;;;8686:43:0;;;;;;;;;;;;;;;8751:1;8740:8;:12;;;8751:1;12175:13:::1;:11;:13::i;:::-;-1:-1:-1::0;12244:6:0::1;::::0;12230:46:::1;::::0;;-1:-1:-1;;;12230:46:0;;12270:4:::1;12230:46;::::0;::::1;::::0;;;12133:55;;-1:-1:-1;12133:55:0;;-1:-1:-1;12214:13:0::1;::::0;-1:-1:-1;;;;;12244:6:0;;::::1;::::0;12230:31:::1;::::0;:46;;;;;::::1;::::0;;;;;;;;12244:6;12230:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;12230:46:0;12317:6:::1;::::0;12303:46:::1;::::0;;-1:-1:-1;;;12303:46:0;;12343:4:::1;12303:46;::::0;::::1;::::0;;;12230;;-1:-1:-1;12287:13:0::1;::::0;-1:-1:-1;;;;;12317:6:0;;::::1;::::0;12303:31:::1;::::0;:46;;;;;12230::::1;::::0;12303;;;;;;;;12317:6;12303:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;12303:46:0;;-1:-1:-1;12360:12:0::1;12375:23;:8:::0;-1:-1:-1;;;;;12375:23:0;::::1;:12;:23::i;:::-;12360:38:::0;-1:-1:-1;12409:12:0::1;12424:23;:8:::0;-1:-1:-1;;;;;12424:23:0;::::1;:12;:23::i;:::-;12409:38;;12460:10;12473:30;12482:9;12493;12473:8;:30::i;:::-;12514:17;12534:11:::0;12460:43;;-1:-1:-1;12638:17:0;12634:751:::1;;12709:7;::::0;12691:37:::1;::::0;;-1:-1:-1;;;12691:37:0;;;;12672:16:::1;::::0;-1:-1:-1;;;;;12709:7:0::1;::::0;12691:35:::1;::::0;:37:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;12709:7;12691:37;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;12691:37:0;;-1:-1:-1;12747:10:0::1;-1:-1:-1::0;;;;;12747:22:0;::::1;;12743:500;;;12812:8;-1:-1:-1::0;;;;;12802:36:0::1;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;12802:38:0;;-1:-1:-1;12867:13:0;;;;;:41:::1;;;-1:-1:-1::0;;12884:9:0::1;:24;;12867:41;12859:75;;;::::0;;-1:-1:-1;;;12859:75:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;12859:75:0;;;;;;;;;;;;;::::1;;12743:500;;;-1:-1:-1::0;;;;;12983:22:0;::::1;::::0;12975:57:::1;;;::::0;;-1:-1:-1;;;12975:57:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;12975:57:0;;;;;;;;;;;;;::::1;;13063:54;7954:5;13063:31;13073:20;:7:::0;13085;13073:11:::1;:20::i;:::-;13063:9;:31::i;:54::-;13051:66;;13136:36;13150:1;7954:5;13136;:36::i;:::-;12634:751;;;;13287:86;-1:-1:-1::0;;;;;13296:37:0;::::1;:25;:7:::0;13308:12;13296:11:::1;:25::i;:::-;:37;;;;;;-1:-1:-1::0;;;;;13335:37:0;::::1;:25;:7:::0;13347:12;13335:11:::1;:25::i;:::-;:37;;;;;;13287:8;:86::i;:::-;13275:98;;12634:751;13415:1;13403:9;:13;13395:66;;;;-1:-1:-1::0;;;13395:66:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13472:20;13478:2;13482:9;13472:5;:20::i;:::-;13505:49;13513:8;13523;13533:9;13544;13505:7;:49::i;:::-;13569:5;13565:47;;;13603:8;::::0;13584:28:::1;::::0;-1:-1:-1;;;;;13589:8:0;;::::1;::::0;-1:-1:-1;;;13603:8:0;::::1;;13584:18;:28::i;:::-;13576:5;:36:::0;13565:47:::1;13668:34;::::0;;;;;::::1;::::0;::::1;::::0;;;;;13673:10:::1;::::0;13668:34:::1;::::0;;;;;;::::1;-1:-1:-1::0;;8786:1:0;8775:8;:12;-1:-1:-1;12057:1653:0;;;-1:-1:-1;;;;;;12057:1653:0:o;1888:41::-;;;;;;;;;;;;;:::o;8521:17::-;;;;:::o;2264:38::-;;;;;;;;;;;;;:::o;13822:1494::-;13871:12;13885;8694:8;;8706:1;8694:13;8686:43;;;;;-1:-1:-1;;;8686:43:0;;;;;;;;;;;;-1:-1:-1;;;8686:43:0;;;;;;;;;;;;;;;8751:1;8740:8;:12;;;8751:1;13952:13:::1;:11;:13::i;:::-;-1:-1:-1::0;14009:6:0::1;::::0;14090::::1;::::0;14169:47:::1;::::0;;-1:-1:-1;;;14169:47:0;;14210:4:::1;14169:47;::::0;::::1;::::0;;;13910:55;;-1:-1:-1;13910:55:0;;-1:-1:-1;;;;;;14009:6:0;;::::1;::::0;14090;::::1;::::0;13991:15:::1;::::0;14009:6;;14169:32:::1;::::0;:47;;;;;::::1;::::0;;;;;;;;14009:6;14169:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;14169:47:0;14243::::1;::::0;;-1:-1:-1;;;14243:47:0;;14284:4:::1;14243:47;::::0;::::1;::::0;;;14169;;-1:-1:-1;14227:13:0::1;::::0;-1:-1:-1;;;;;14243:32:0;::::1;::::0;::::1;::::0;:47;;;;;14169::::1;::::0;14243;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;14243:47:0;14336:4:::1;14301:14;14318:24:::0;;;:9:::1;14243:47;14318:24:::0;;;;;14243:47;;-1:-1:-1;14368:30:0::1;14377:9:::0;14388;14368:8:::1;:30::i;:::-;14409:17;14429:11:::0;14355:43;;-1:-1:-1;14429:11:0;14539:23:::1;:9:::0;14553:8;14539:13:::1;:23::i;:::-;:38;;;;;;::::0;-1:-1:-1;14672:12:0;14646:23:::1;:9:::0;14660:8;14646:13:::1;:23::i;:::-;:38;;;;;;14636:48;;14761:1;14751:7;:11;:26;;;;;14776:1;14766:7;:11;14751:26;14743:79;;;;-1:-1:-1::0;;;14743:79:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14833:31;14847:4;14854:9;14833:5;:31::i;:::-;14875:35;14889:7;14898:2;14902:7;14875:13;:35::i;:::-;14921;14935:7;14944:2;14948:7;14921:13;:35::i;:::-;14978:47;::::0;;-1:-1:-1;;;14978:47:0;;15019:4:::1;14978:47;::::0;::::1;::::0;;;-1:-1:-1;;;;;14978:32:0;::::1;::::0;::::1;::::0;:47;;;;;::::1;::::0;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;14978:47:0;15047::::1;::::0;;-1:-1:-1;;;15047:47:0;;15088:4:::1;15047:47;::::0;::::1;::::0;;;14978;;-1:-1:-1;;;;;;15047:32:0;::::1;::::0;::::1;::::0;:47;;;;;14978::::1;::::0;15047;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;15047:47:0;;-1:-1:-1;15107:49:0::1;15115:8:::0;15047:47;15135:9;15146;15107:7:::1;:49::i;:::-;15171:5;15167:47;;;15205:8;::::0;15186:28:::1;::::0;-1:-1:-1;;;;;15191:8:0;;::::1;::::0;-1:-1:-1;;;15205:8:0;::::1;;15186:18;:28::i;:::-;15178:5;:36:::0;15167:47:::1;15270:38;::::0;;;;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;15270:38:0;::::1;::::0;15275:10:::1;::::0;15270:38:::1;::::0;;;;;;;;;::::1;8763:1;;;;;;;;;8786::::0;8775:8;:12;;;;13822:1494;;;:::o;1771:37::-;;;;;;;;;;;;;;-1:-1:-1;;;1771:37:0;;;;:::o;3923:139::-;3983:4;4000:32;4010:10;4022:2;4026:5;4000:9;:32::i;7913:46::-;7954:5;7913:46;:::o;17380:348::-;8694:8;;8706:1;8694:13;8686:43;;;;;-1:-1:-1;;;8686:43:0;;;;;;;;;;;;-1:-1:-1;;;8686:43:0;;;;;;;;;;;;;;;8751:1;8740:8;:12;17449:6:::1;::::0;17499::::1;::::0;17610:8:::1;::::0;17558:47:::1;::::0;;-1:-1:-1;;;17558:47:0;;17599:4:::1;17558:47;::::0;::::1;::::0;;;-1:-1:-1;;;;;17449:6:0;;::::1;::::0;17499;;::::1;::::0;17531:89:::1;::::0;17449:6;;17554:2;;17558:61:::1;::::0;-1:-1:-1;;;;;17610:8:0::1;::::0;17449:6;;17558:32:::1;::::0;:47;;;;;::::1;::::0;;;;;;;;;17449:6;17558:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;17558:47:0;;:51:::1;:61::i;:::-;17531:13;:89::i;:::-;17631;17645:7;17654:2;17658:61;17710:8;;;;;;;;;-1:-1:-1::0;;;;;17710:8:0::1;-1:-1:-1::0;;;;;17658:61:0::1;17672:7;-1:-1:-1::0;;;;;17658:32:0::1;;17699:4;17658:47;;;;;;;;;;;;;-1:-1:-1::0;;;;;17658:47:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;17631:89;-1:-1:-1::0;;8786:1:0;8775:8;:12;-1:-1:-1;17380:348:0:o;8063:22::-;;;-1:-1:-1;;;;;8063:22:0;;:::o;8120:21::-;;;-1:-1:-1;;;;;8120:21:0;;:::o;4379:674::-;4525:15;4513:8;:27;;4505:58;;;;;-1:-1:-1;;;4505:58:0;;;;;;;;;;;;-1:-1:-1;;;4505:58:0;;;;;;;;;;;;;;;4679:16;;-1:-1:-1;;;;;4775:13:0;;;4574:14;4775:13;;;:6;:13;;;;;;;;:15;;;;;;;;;4724:77;;2191:66;4724:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4714:88;;;;;;-1:-1:-1;;;4615:202:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4591:237;;;;;;;;;4866:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4574:14;;4775:15;4866:26;;;;;-1:-1:-1;;4866:26:0;;;;;;;;;;4775:15;4866:26;;;;;;;;;;;;;;;-1:-1:-1;;4866:26:0;;-1:-1:-1;;4866:26:0;;;-1:-1:-1;;;;;;;4911:30:0;;;;;;:59;;;4965:5;-1:-1:-1;;;;;4945:25:0;:16;-1:-1:-1;;;;;4945:25:0;;4911:59;4903:100;;;;;-1:-1:-1;;;4903:100:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;5014:31;5023:5;5030:7;5039:5;5014:8;:31::i;:::-;4379:674;;;;;;;;;:::o;1936:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;17777:172::-;8694:8;;8706:1;8694:13;8686:43;;;;;-1:-1:-1;;;8686:43:0;;;;;;;;;;;;-1:-1:-1;;;8686:43:0;;;;;;;;;;;;;;;8751:1;8740:8;:12;17840:6:::1;::::0;17826:46:::1;::::0;;-1:-1:-1;;;17826:46:0;;17866:4:::1;17826:46;::::0;::::1;::::0;;;17818:123:::1;::::0;-1:-1:-1;;;;;17840:6:0::1;::::0;17826:31:::1;::::0;:46;;;;;::::1;::::0;;;;;;;;17840:6;17826:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;17826:46:0;17888:6:::1;::::0;17874:46:::1;::::0;;-1:-1:-1;;;17874:46:0;;17914:4:::1;17874:46;::::0;::::1;::::0;;;-1:-1:-1;;;;;17888:6:0;;::::1;::::0;17874:31:::1;::::0;:46;;;;;17826::::1;::::0;17874;;;;;;;;17888:6;17874:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;17874:46:0;17922:8:::1;::::0;-1:-1:-1;;;;;17922:8:0;;::::1;::::0;-1:-1:-1;;;17932:8:0;::::1;;17818:7;:123::i;:::-;8786:1:::0;8775:8;:12;17777:172::o;9042:287::-;8018:34;;;;;;;;;;;;;;;;;9170:43;;-1:-1:-1;;;;;9170:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9170:43:0;-1:-1:-1;;;9170:43:0;;;9159:55;;;;9124:12;;9138:17;;9159:10;;;9170:43;9159:55;;;9170:43;9159:55;;9170:43;9159:55;;;;;;;;;;-1:-1:-1;;9159:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9123:91;;;;9233:7;:57;;;;-1:-1:-1;9245:11:0;;:16;;:44;;;9276:4;9265:24;;;;;;;;;;;;;;;-1:-1:-1;9265:24:0;9245:44;9225:96;;;;;-1:-1:-1;;;9225:96:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9042:287;;;;;:::o;1414:142::-;1466:6;1493;;;:30;;-1:-1:-1;;1508:5:0;;;1522:1;1517;1508:5;1517:1;1503:15;;;;;:20;1493:30;1485:63;;;;;-1:-1:-1;;;1485:63:0;;;;;;;;;;;;-1:-1:-1;;;1485:63:0;;;;;;;;;;;;;;1277:129;1361:5;;;1356:16;;;;1348:50;;;;;-1:-1:-1;;;1348:50:0;;;;;;;;;;;;-1:-1:-1;;;1348:50:0;;;;;;;;;;;;;;10158:860;-1:-1:-1;;;;;10270:23:0;;;;;:50;;-1:-1:-1;;;;;;10297:23:0;;;10270:50;10262:82;;;;;-1:-1:-1;;;10262:82:0;;;;;;;;;;;;-1:-1:-1;;;10262:82:0;;;;;;;;;;;;;;;10459:18;;10386:23;:15;:23;;;-1:-1:-1;;;10459:18:0;;;;10442:35;;;10515:15;;;;;;:33;;-1:-1:-1;;;;;;10534:14:0;;;;10515:33;:51;;;;-1:-1:-1;;;;;;10552:14:0;;;;10515:51;10511:336;;;10721:11;10668:64;;10673:44;10707:9;10673:27;10690:9;10673:16;:27::i;:::-;-1:-1:-1;;;;;10673:33:0;;;:44::i;:::-;10644:20;:88;;-1:-1:-1;;;;;10668:50:0;;;;:64;;;;10644:88;;;10771:64;;;10776:44;10810:9;10776:27;10793:9;10776:16;:27::i;:44::-;10747:20;:88;;-1:-1:-1;;;;;10771:50:0;;;;:64;;;;10747:88;;;10511:336;10857:8;:28;;-1:-1:-1;;10857:28:0;-1:-1:-1;;;;;10857:28:0;;;;;;;-1:-1:-1;;;;10896:28:0;-1:-1:-1;;;10896:28:0;;;;;;;;;-1:-1:-1;;;;;10935:35:0;-1:-1:-1;;;10935:35:0;;;;;;;;;10986:24;;;10991:8;;;10986:24;;11001:8;;;;;;;10986:24;;;;;;;;;;;;;;;;;10158:860;;;;;;:::o;3363:169::-;-1:-1:-1;;;;;3444:16:0;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;3493:31;;;;;;;;;;;;;;;;;3363:169;;;:::o;3540:220::-;-1:-1:-1;;;;;3634:15:0;;;;;;:9;:15;;;;;;:26;;3654:5;3634:19;:26::i;:::-;-1:-1:-1;;;;;3616:15:0;;;;;;;:9;:15;;;;;;:44;;;;3687:13;;;;;;;:24;;3705:5;3687:17;:24::i;:::-;-1:-1:-1;;;;;3671:13:0;;;;;;;:9;:13;;;;;;;;;:40;;;;3727:25;;;;;;;3671:13;;3727:25;;;;;;;;;;;;;3540:220;;;:::o;11108:837::-;11181:10;11204:13;11238:7;;;;;;;;;-1:-1:-1;;;;;11238:7:0;-1:-1:-1;;;;;11220:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11220:34:0;11317:5;;-1:-1:-1;;;;;11273:19:0;;;;;;-1:-1:-1;11220:34:0;;-1:-1:-1;11317:5:0;11348:590;;11378:11;;11374:494;;11410:10;11423:41;11433:30;-1:-1:-1;;;;;11433:15:0;;;;:30;;:19;:30::i;11423:41::-;11410:54;;11483:14;11500:17;11510:6;11500:9;:17::i;:::-;11483:34;;11548:9;11540:5;:17;11536:317;;;11582:14;11599:37;11615:20;:5;11625:9;11615;:20::i;:::-;11599:11;;;:15;:37::i;:::-;11582:54;-1:-1:-1;11659:16:0;11678:27;11695:9;11678:12;:5;11688:1;11678:9;:12::i;:::-;:16;;:27::i;:::-;11659:46;;11728:14;11757:11;11745:9;:23;;;;;;;-1:-1:-1;11795:13:0;;11791:42;;11810:23;11816:5;11823:9;11810:5;:23::i;:::-;11536:317;;;;11374:494;;;11348:590;;;11889:11;;11885:53;;11925:1;11917:5;:9;11885:53;11108:837;;;;;;:::o;5428:303::-;5473:6;5500:1;5496;:5;5492:232;;;-1:-1:-1;5522:1:0;5555;5551;5547:5;;:9;5571:92;5582:1;5578;:5;5571:92;;;5608:1;5604:5;;5646:1;5641;5637;5633;:5;;;;;;:9;5632:15;;;;;;5628:19;;5571:92;;;5492:232;;;;5684:6;;5680:44;;-1:-1:-1;5711:1:0;5680:44;5428:303;;;:::o;2937:201::-;3010:11;;:22;;3026:5;3010:15;:22::i;:::-;2996:11;:36;;;-1:-1:-1;;;;;3059:13:0;;;;:9;:13;;;;;;:24;;3077:5;3059:17;:24::i;:::-;-1:-1:-1;;;;;3043:13:0;;;;;;:9;:13;;;;;;;;:40;;;;3099:31;;;;;;;3043:13;;;;3099:31;;;;;;;;;;2937:201;;:::o;5214:96::-;5266:6;5293:1;5289;:5;:13;;5301:1;5289:13;;;5297:1;5289:13;5285:17;5214:96;-1:-1:-1;;;5214:96:0:o;3146:209::-;-1:-1:-1;;;;;3225:15:0;;;;;;:9;:15;;;;;;:26;;3245:5;3225:19;:26::i;:::-;-1:-1:-1;;;;;3207:15:0;;;;;;:9;:15;;;;;:44;;;;3276:11;:22;;3292:5;3276:15;:22::i;:::-;3262:11;:36;;;3314:33;;;;;;;;-1:-1:-1;;;;;3314:33:0;;;;;;;;;;;;;3146:209;;:::o;6088:120::-;-1:-1:-1;;;;;6164:10:0;-1:-1:-1;;;6164:17:0;;6088:120::o;6279:108::-;6339:9;-1:-1:-1;;;;;6369:10:0;;-1:-1:-1;;;;;6365:14:0;;6369:10;6365:14;;;;;;6279:108;-1:-1:-1;;;6279:108:0:o;1141:128::-;1225:5;;;1220:16;;;;1212:49;;;;;-1:-1:-1;;;1212:49:0;;;;;;;;;;;;-1:-1:-1;;;1212:49:0;;;;;;;;;;;;;

Swarm Source

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