Contract 0x256762736c4d1e7c6f39b00960d5eac81446fb64

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x47646689f6f2e3d23ec65303bf2444ab45ca03c3928d7db3efaf7ef0b648071bApprove199866962023-06-24 10:15:5191 days 23 hrs ago0xfade4d4dd226240f9039022947ad95ded6ff4d4f IN 0x256762736c4d1e7c6f39b00960d5eac81446fb640 CELO0.00112745
0xfda51344fbe13993c46bd76f0b899e89bdbe848ab671f772661689e58e2eff5eApprove186439942023-04-07 17:22:28169 days 16 hrs ago0xfb6c6d561332c88547a77ffd4ee653357f98d782 IN 0x256762736c4d1e7c6f39b00960d5eac81446fb640 CELO0.00112745
0xf69b16fdbe97066956608f8945f60a46561fe1d1468fac5c00681fa6f5ca2732Swap Exact Token...183456322023-03-21 10:58:45186 days 23 hrs ago0xaaba3446e4575e956aa43c13d012630183fbf343 IN 0x256762736c4d1e7c6f39b00960d5eac81446fb640 CELO0.00011612
0x76e02e121ad79209357864023c0703f7610a8f9c26f470a1cbbd44811cf0d6bcSwap Exact Token...183456152023-03-21 10:57:20186 days 23 hrs ago0xaaba3446e4575e956aa43c13d012630183fbf343 IN 0x256762736c4d1e7c6f39b00960d5eac81446fb640 CELO0.00011612
0x7c8d8744a35cebcc1ecd97a9d1b0fdf70b78524a0388ba6671826ba694a314fbSwap Exact Token...183456112023-03-21 10:57:00186 days 23 hrs ago0xaaba3446e4575e956aa43c13d012630183fbf343 IN 0x256762736c4d1e7c6f39b00960d5eac81446fb640 CELO0.00011612
0xc2b17555c53572714623b63d7f28421c1e7006a23b48f215431e2ee48dce066fSwap Exact Token...183456012023-03-21 10:56:10186 days 23 hrs ago0xaaba3446e4575e956aa43c13d012630183fbf343 IN 0x256762736c4d1e7c6f39b00960d5eac81446fb640 CELO0.00011612
0x4dfe8cd4ee70a1cafd16e36f79f1527dad0ad59cabbc9a9745c5d1e6c2ccfb3bSwap Exact Token...183455942023-03-21 10:55:35186 days 23 hrs ago0xaaba3446e4575e956aa43c13d012630183fbf343 IN 0x256762736c4d1e7c6f39b00960d5eac81446fb640 CELO0.00011612
0x93f4bc8286aeb454c8615abca9f694af51c5293085c05eab5bf8a1616d13845cSwap Exact Token...183455872023-03-21 10:55:00186 days 23 hrs ago0xaaba3446e4575e956aa43c13d012630183fbf343 IN 0x256762736c4d1e7c6f39b00960d5eac81446fb640 CELO0.00011612
0xc9b0545cc606176e3086eb531adf316b552806b39a2012b68692c33ac9bc6980Swap Exact Token...183455772023-03-21 10:54:10186 days 23 hrs ago0xaaba3446e4575e956aa43c13d012630183fbf343 IN 0x256762736c4d1e7c6f39b00960d5eac81446fb640 CELO0.00011612
0xfdf6dda33d336b502ebd6e6af124d693eb1e737b3076805e46d0f135d59e00bdSwap Exact Token...183454732023-03-21 10:45:30186 days 23 hrs ago0xaaba3446e4575e956aa43c13d012630183fbf343 IN 0x256762736c4d1e7c6f39b00960d5eac81446fb640 CELO0.00011612
0x6706e2a5343a7be58aac9720f9fc0d59f6d2becd152e2f50fadee2c68856203cApprove156738622022-10-17 20:08:24341 days 13 hrs ago0xc151c0326dbf46f6d688c9cb3deb90c464e66192 IN 0x256762736c4d1e7c6f39b00960d5eac81446fb640 CELO0.000022549
0x120529c94fa76f43fb0c76e5719457b78c42e46577581e9d498c2fa918966f84Approve149189052022-09-04 3:33:34385 days 6 hrs ago0x930166df7c8dc0e18b88d76455df8b90ba834551 IN 0x256762736c4d1e7c6f39b00960d5eac81446fb640 CELO0.000022549
0x880f751ee826ca95b6a754cea1df495b1406e9483a43724ef102e3b145829616Approve143151792022-07-31 5:02:06420 days 5 hrs ago0xb2ce11ed2b0efd6582864730e31c25b58fe02981 IN 0x256762736c4d1e7c6f39b00960d5eac81446fb640 CELO0.000022549
0x5aff4bb0eb5fa8e8d4f495c57b141a6a0b1cb370a40df7dc2437ca491ef28cb6Approve136166452022-06-19 18:14:40461 days 15 hrs ago0x2f9b1a144db2ca36771e56b2e66043d3b2da4913 IN 0x256762736c4d1e7c6f39b00960d5eac81446fb640 CELO0.000022549
0x5e8005c7d8cfec1fd37dbfee4cf3cd0fa20ab6f37f1ab93d97738cb7060660b4Approve125932222022-04-21 12:40:58520 days 21 hrs ago0x8988835000d9331ff7f4e9308ab0703cad449fe2 IN 0x256762736c4d1e7c6f39b00960d5eac81446fb640 CELO0.000022549
0x19f2cf2297dcbc2feddcdb5aa1eec8a2b81446f90abcc5752b5b311b67227855Approve125187742022-04-17 5:16:51525 days 4 hrs ago0x77bfa810c631465549c2ec6d47ecd5c82ff89e4d IN 0x256762736c4d1e7c6f39b00960d5eac81446fb640 CELO0.000022549
0xc2f3168b11d9f729f55f8e6b926db498aba87bbebbf2c1514d26b2f78cfcfc28Approve124950992022-04-15 20:23:47526 days 13 hrs ago0xf380d8cb8ed5e2591ea47644868bdd0765bcafc2 IN 0x256762736c4d1e7c6f39b00960d5eac81446fb640 CELO0.000022549
0x145e171d2417a77d2bf34e559366d08aacb821ec12434f91336a158cb1ff245fApprove124281642022-04-11 23:25:45530 days 10 hrs ago0x976b5205a629a0609578b6b8a016b8c02c59ad05 IN 0x256762736c4d1e7c6f39b00960d5eac81446fb640 CELO0.000022549
0x9a5d577fe2ba5c04747b180545fe771d9766e61980cd45cb80675659cb2ed979Approve123912202022-04-09 20:07:05532 days 14 hrs ago0xb961cfbc9704e0b777ece6080bf17a877a1eed12 IN 0x256762736c4d1e7c6f39b00960d5eac81446fb640 CELO0.000022549
0x4b3bb45493ae88bcbae175fc6ea4ba69dbc2d8b34224fd1cac57dd7bc7348c52Approve122577912022-04-02 2:47:41540 days 7 hrs ago0x35c2827f85eb6b2cc12c18bda68b07767ce3d764 IN 0x256762736c4d1e7c6f39b00960d5eac81446fb640 CELO0.000022549
0x1a05a3e32c4ac07ab399e6f46f2fa5e70fd038dd63a538048ca25d634d7f1821Approve122286952022-03-31 10:22:59541 days 23 hrs ago0xa41261d4ad48104aa9c3f81c2e3e4d7fd0a6f160 IN 0x256762736c4d1e7c6f39b00960d5eac81446fb640 CELO0.000012599
0x20b7f5efbd0aa3f8a5628ff7b47b1fc41f5c0afa90a098ef35404d02249ddb21Approve122286902022-03-31 10:22:34541 days 23 hrs ago0xa41261d4ad48104aa9c3f81c2e3e4d7fd0a6f160 IN 0x256762736c4d1e7c6f39b00960d5eac81446fb640 CELO0.000022549
0x26ab22d0de92818e7f9850cdb1254d77eef20c830517c6a9e707690f03bc1073Approve119646912022-03-16 3:42:03557 days 6 hrs ago0x6deaf90739b82ac1975171f6bfd0d1bcdd2fe390 IN 0x256762736c4d1e7c6f39b00960d5eac81446fb640 CELO0.000022549
0x96d8b7368578f26dc93cac63735077b0f160420d2905b211d39964bb83c4bb47Approve114055712022-02-11 19:07:50589 days 15 hrs ago0x0e0fa977889fc9e581ef3a4216bb80276c57aa21 IN 0x256762736c4d1e7c6f39b00960d5eac81446fb640 CELO0.000022149
0x2b21b9caabd93c468ffbdcf8efe5dfadc90e04015679e455196a21c6a43de61aApprove113762332022-02-10 2:22:57591 days 7 hrs ago0xf0a2559b031802c9e03bf4668d8376e842dee73a IN 0x256762736c4d1e7c6f39b00960d5eac81446fb640 CELO0.000022149
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x13bae4d549bd4cfd22f1f888672c6c9305af34b3dbdfcafd6fb641a611cdf00e106984822022-01-01 20:57:01630 days 13 hrs ago 0x62d5b84be28a183abb507e125b384122d2c25fae  Contract Creation0 CELO
[ Download CSV Export 
Index Block
Loading

Similar Match Source Code
This contract matches the deployed ByteCode of the Source Code for Contract 0xf5b1BC6C9c180b64F5711567b1d6a51A350f8422
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
UniswapV2Pair

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 5000 runs

Other Settings:
default evmVersion
File 1 of 8 : UniswapV2Pair.sol
// SPDX-License-Identifier: MIT

pragma solidity =0.6.12;

import './UniswapV2ERC20.sol';
import './libraries/Math.sol';
import './libraries/UQ112x112.sol';
import './interfaces/IERC20.sol';
import './interfaces/IUniswapV2Factory.sol';
import './interfaces/IUniswapV2Callee.sol';


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) {
            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);
    }
}

File 2 of 8 : IUniswapV2Callee.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.5.0;

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

File 3 of 8 : IUniswapV2Factory.sol
// SPDX-License-Identifier: MIT

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 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;
}

File 4 of 8 : IERC20.sol
// SPDX-License-Identifier: MIT

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 5 of 8 : UQ112x112.sol
// SPDX-License-Identifier: MIT

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 6 of 8 : Math.sol
// SPDX-License-Identifier: MIT

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 7 of 8 : UniswapV2ERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity =0.6.12;

import './libraries/SafeMath.sol';

contract UniswapV2ERC20 {
    using SafeMathUniswap for uint;

    string public constant name = 'Ubeswap LP Token';
    string public constant symbol = 'ULP';
    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 8 of 8 : SafeMath.sol
// SPDX-License-Identifier: MIT

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');
    }
}

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

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"}]

60806040526001600c5534801561001557600080fd5b50604080518082018252601081526f2ab132b9bbb0b8102628102a37b5b2b760811b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fbe8446b12ef59266abbe8402ac168b493d424c96e99e6817df1862b07f49aad2818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b031916331790556124ea8061010e6000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a71461054b578063d505accf14610553578063dd62ed3e146105a4578063fff6cae9146105d2576101b9565b8063ba9a7a5614610515578063bc25cf771461051d578063c45a015514610543576101b9565b80637ecebe00116100d35780637ecebe001461047c57806389afcb44146104a257806395d89b41146104e1578063a9059cbb146104e9576101b9565b80636a6278421461042857806370a082311461044e5780637464fc3d14610474576101b9565b806323b872dd116101665780633644e515116101405780633644e515146103e2578063485cc955146103ea5780635909c0d5146104185780635a3d549314610420576101b9565b806323b872dd1461038657806330adf81f146103bc578063313ce567146103c4576101b9565b8063095ea7b311610197578063095ea7b3146103085780630dfe16811461034857806318160ddd1461036c576101b9565b8063022c0d9f146101be57806306fdde031461024c5780630902f1ac146102c9575b600080fd5b61024a600480360360808110156101d457600080fd5b8135916020810135916001600160a01b03604083013516919081019060808101606082013564010000000081111561020b57600080fd5b82018360208201111561021d57600080fd5b8035906020019184600183028401116401000000008311171561023f57600080fd5b5090925090506105da565b005b610254610b38565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561028e578181015183820152602001610276565b50505050905090810190601f1680156102bb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102d1610b71565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b6103346004803603604081101561031e57600080fd5b506001600160a01b038135169060200135610bc6565b604080519115158252519081900360200190f35b610350610bdd565b604080516001600160a01b039092168252519081900360200190f35b610374610bec565b60408051918252519081900360200190f35b6103346004803603606081101561039c57600080fd5b506001600160a01b03813581169160208101359091169060400135610bf2565b610374610ca4565b6103cc610cc8565b6040805160ff9092168252519081900360200190f35b610374610ccd565b61024a6004803603604081101561040057600080fd5b506001600160a01b0381358116916020013516610cd3565b610374610d78565b610374610d7e565b6103746004803603602081101561043e57600080fd5b50356001600160a01b0316610d84565b6103746004803603602081101561046457600080fd5b50356001600160a01b031661109a565b6103746110ac565b6103746004803603602081101561049257600080fd5b50356001600160a01b03166110b2565b6104c8600480360360208110156104b857600080fd5b50356001600160a01b03166110c4565b6040805192835260208301919091528051918290030190f35b610254611476565b610334600480360360408110156104ff57600080fd5b506001600160a01b0381351690602001356114af565b6103746114bc565b61024a6004803603602081101561053357600080fd5b50356001600160a01b03166114c2565b610350611655565b610350611664565b61024a600480360360e081101561056957600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611673565b610374600480360360408110156105ba57600080fd5b506001600160a01b038135811691602001351661189b565b61024a6118b8565b600c54600114610631576040805162461bcd60e51b815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55841515806106445750600084115b61067f5760405162461bcd60e51b81526004018080602001828103825260258152602001806123fb6025913960400191505060405180910390fd5b60008061068a610b71565b5091509150816dffffffffffffffffffffffffffff16871080156106bd5750806dffffffffffffffffffffffffffff1686105b6106f85760405162461bcd60e51b81526004018080602001828103825260218152602001806124446021913960400191505060405180910390fd5b60065460075460009182916001600160a01b039182169190811690891682148015906107365750806001600160a01b0316896001600160a01b031614155b610787576040805162461bcd60e51b815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f0000000000000000000000604482015290519081900360640190fd5b8a1561079857610798828a8d611a38565b89156107a9576107a9818a8c611a38565b861561085b57886001600160a01b03166310d1e85c338d8d8c8c6040518663ffffffff1660e01b815260040180866001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561084257600080fd5b505af1158015610856573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b1580156108a157600080fd5b505afa1580156108b5573d6000803e3d6000fd5b505050506040513d60208110156108cb57600080fd5b5051604080516370a0823160e01b815230600482015290519195506001600160a01b038316916370a0823191602480820192602092909190829003018186803b15801561091757600080fd5b505afa15801561092b573d6000803e3d6000fd5b505050506040513d602081101561094157600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a9003831161096b576000610981565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff160383116109a55760006109bb565b89856dffffffffffffffffffffffffffff160383035b905060008211806109cc5750600081115b610a075760405162461bcd60e51b81526004018080602001828103825260248152602001806124206024913960400191505060405180910390fd5b6000610a29610a17846003611c00565b610a23876103e8611c00565b90611c6c565b90506000610a3b610a17846003611c00565b9050610a67620f4240610a616dffffffffffffffffffffffffffff8b8116908b16611c00565b90611c00565b610a718383611c00565b1015610ac4576040805162461bcd60e51b815260206004820152600c60248201527f556e697377617056323a204b0000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610ad284848888611cc4565b60408051838152602081018390528082018d9052606081018c905290516001600160a01b038b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280601081526020017f55626573776170204c5020546f6b656e0000000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610bd3338484611f60565b5060015b92915050565b6006546001600160a01b031681565b60005481565b6001600160a01b03831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610c8f576001600160a01b0384166000908152600260209081526040808320338452909152902054610c6a9083611c6c565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610c9a848484611fc2565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b6005546001600160a01b03163314610d32576040805162461bcd60e51b815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600680546001600160a01b039384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c54600114610ddd576040805162461bcd60e51b815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c81905580610ded610b71565b50600654604080516370a0823160e01b815230600482015290519395509193506000926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610e4157600080fd5b505afa158015610e55573d6000803e3d6000fd5b505050506040513d6020811015610e6b57600080fd5b5051600754604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610ebe57600080fd5b505afa158015610ed2573d6000803e3d6000fd5b505050506040513d6020811015610ee857600080fd5b505190506000610f08836dffffffffffffffffffffffffffff8716611c6c565b90506000610f26836dffffffffffffffffffffffffffff8716611c6c565b90506000610f348787612070565b60005490915080610f6b57610f576103e8610a23610f528787611c00565b6121b7565b9850610f6660006103e8612209565b610fbc565b610fb96dffffffffffffffffffffffffffff8916610f898684611c00565b81610f9057fe5b046dffffffffffffffffffffffffffff8916610fac8685611c00565b81610fb357fe5b04612293565b98505b60008911610ffb5760405162461bcd60e51b815260040180806020018281038252602881526020018061248d6028913960400191505060405180910390fd5b6110058a8a612209565b61101186868a8a611cc4565b811561104d57600854611049906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611c00565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c5460011461111e576040805162461bcd60e51b815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061112e610b71565b50600654600754604080516370a0823160e01b815230600482015290519496509294506001600160a01b039182169391169160009184916370a08231916024808301926020929190829003018186803b15801561118a57600080fd5b505afa15801561119e573d6000803e3d6000fd5b505050506040513d60208110156111b457600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038516916370a08231916024808301926020929190829003018186803b15801561120257600080fd5b505afa158015611216573d6000803e3d6000fd5b505050506040513d602081101561122c57600080fd5b50513060009081526001602052604081205491925061124b8888612070565b6000549091508061125c8487611c00565b8161126357fe5b049a50806112718486611c00565b8161127857fe5b04995060008b11801561128b575060008a115b6112c65760405162461bcd60e51b81526004018080602001828103825260288152602001806124656028913960400191505060405180910390fd5b6112d030846122ab565b6112db878d8d611a38565b6112e6868d8c611a38565b604080516370a0823160e01b815230600482015290516001600160a01b038916916370a08231916024808301926020929190829003018186803b15801561132c57600080fd5b505afa158015611340573d6000803e3d6000fd5b505050506040513d602081101561135657600080fd5b5051604080516370a0823160e01b815230600482015290519196506001600160a01b038816916370a0823191602480820192602092909190829003018186803b1580156113a257600080fd5b505afa1580156113b6573d6000803e3d6000fd5b505050506040513d60208110156113cc57600080fd5b505193506113dc85858b8b611cc4565b811561141857600854611414906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611c00565b600b555b604080518c8152602081018c905281516001600160a01b038f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600381526020017f554c50000000000000000000000000000000000000000000000000000000000081525081565b6000610bd3338484611fc2565b6103e881565b600c54600114611519576040805162461bcd60e51b815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654600754600854604080516370a0823160e01b815230600482015290516001600160a01b0394851694909316926115c992859287926115c4926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b15801561159257600080fd5b505afa1580156115a6573d6000803e3d6000fd5b505050506040513d60208110156115bc57600080fd5b505190611c6c565b611a38565b61164b81846115c46008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16856001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561159257600080fd5b50506001600c5550565b6005546001600160a01b031681565b6007546001600160a01b031681565b428410156116c8576040805162461bcd60e51b815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa1580156117fe573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906118345750886001600160a01b0316816001600160a01b0316145b611885576040805162461bcd60e51b815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611890898989611f60565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c5460011461190f576040805162461bcd60e51b815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654604080516370a0823160e01b81523060048201529051611a31926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561196057600080fd5b505afa158015611974573d6000803e3d6000fd5b505050506040513d602081101561198a57600080fd5b5051600754604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156119d757600080fd5b505afa1580156119eb573d6000803e3d6000fd5b505050506040513d6020811015611a0157600080fd5b50516008546dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611cc4565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b60208310611b135780518252601f199092019160209182019101611af4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611b75576040519150601f19603f3d011682016040523d82523d6000602084013e611b7a565b606091505b5091509150818015611ba8575080511580611ba85750808060200190516020811015611ba557600080fd5b50515b611bf9576040805162461bcd60e51b815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b6000811580611c1b57505080820282828281611c1857fe5b04145b610bd7576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610bd7576040805162461bcd60e51b815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff8411801590611cf057506dffffffffffffffffffffffffffff8311155b611d41576040805162461bcd60e51b815260206004820152601360248201527f556e697377617056323a204f564552464c4f5700000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff428116917c010000000000000000000000000000000000000000000000000000000090048116820390811615801590611d9157506dffffffffffffffffffffffffffff841615155b8015611dac57506dffffffffffffffffffffffffffff831615155b15611e56578063ffffffff16611de985611dc58661233d565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690612361565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff8116611e2984611dc58761233d565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316600090815260016020526040902054611fe59082611c6c565b6001600160a01b03808516600090815260016020526040808220939093559084168152205461201490826123a2565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156120c157600080fd5b505afa1580156120d5573d6000803e3d6000fd5b505050506040513d60208110156120eb57600080fd5b5051600b546001600160a01b0382161580159450919250906121a357801561219e57600061212f610f526dffffffffffffffffffffffffffff888116908816611c00565b9050600061213c836121b7565b90508082111561219b57600061215e6121558484611c6c565b60005490611c00565b9050600061217783612171866005611c00565b906123a2565b9050600081838161218457fe5b0490508015612197576121978782612209565b5050505b50505b6121af565b80156121af576000600b555b505092915050565b600060038211156121fa575080600160028204015b818110156121f4578091506002818285816121e357fe5b0401816121ec57fe5b0490506121cc565b50612204565b8115612204575060015b919050565b60005461221690826123a2565b60009081556001600160a01b03831681526001602052604090205461223b90826123a2565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106122a257816122a4565b825b9392505050565b6001600160a01b0382166000908152600160205260409020546122ce9082611c6c565b6001600160a01b038316600090815260016020526040812091909155546122f59082611c6c565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff84168161239a57fe5b049392505050565b80820182811015610bd7576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a2646970667358221220b2a1ccb1e079ab3d71da7f01ce62eaa2596b49b333186a64522fb6be6256cb8364736f6c634300060c0033

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.