Contract 0x0625a68d25d304aed698c806267a4e369e8eb12a 3

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x242b93fb3f1b7a460197f9ac64ece4d5a2d4c53c8ad22c3f7d21c8e5fe020bccApprove68746132023-02-08 21:27:1315 hrs 10 mins ago0xadd8bf25b5042ad58987061e00ba5e655632f90c IN  0x0625a68d25d304aed698c806267a4e369e8eb12a0 CRO0.116434606039 4,817.319240344
0x1c0ef0c3bb379ae94045f50c2de6b0fb8d346a72038617b4313dbf57734e5837Approve65665312023-01-19 17:13:1720 days 19 hrs ago0xc5df20a043f277088759fb0af21a50b611ac0c1e IN  0x0625a68d25d304aed698c806267a4e369e8eb12a0 CRO0.126399722358 4,829.947357968
0xc4bd7e180744e37f417e577e309bb0436a0fc1282bc8d746b2eab0408134d8edApprove65665282023-01-19 17:13:0020 days 19 hrs ago0xc5df20a043f277088759fb0af21a50b611ac0c1e IN  0x0625a68d25d304aed698c806267a4e369e8eb12a0 CRO0.126399725955 4,829.947495444
0xd7882dda9ad838ff5756de671557b912ea37c631eaec3db69ac8e07aa9e7fe87Approve65665182023-01-19 17:12:0320 days 19 hrs ago0xc5df20a043f277088759fb0af21a50b611ac0c1e IN  0x0625a68d25d304aed698c806267a4e369e8eb12a0 CRO0.116739841752 4,829.947941779
0x55cb6e8fce40271dd8a0993321f4492d3ba3d9c79a886fbd44289b6fd8c3b963Approve64572482023-01-12 13:04:0727 days 23 hrs ago0xcbf3be705d1f8461446f565b2b8936fada5587b6 IN  0x0625a68d25d304aed698c806267a4e369e8eb12a0 CRO0.2130543355710
0x5691d583418eb56e68af0b6be916fb4ec396af13f9e01dcca9988bdef9abdc1aApprove64183442023-01-09 23:45:1230 days 12 hrs ago0x793fa15e0cd0f1a52af5c1bf2cb638adef9efdf1 IN  0x0625a68d25d304aed698c806267a4e369e8eb12a0 CRO0.214592994267 4,838.188083764
0xdcce4353a4b5a84a6098c0dc6414eee2a130055c5201598181e47f37220492eeApprove64096622023-01-09 10:07:1031 days 2 hrs ago0x5997c68d4d1c52bb883cceb63005e4d0d8705b7d IN  0x0625a68d25d304aed698c806267a4e369e8eb12a0 CRO0.11819760
0xcce704de9462577112c207bf43896c4fc55381876d3c0d5fa890782928f62e62Approve63903322023-01-08 3:46:4932 days 8 hrs ago0x7ca460f6fe913fde9eab1d8e5f0d98b819347c89 IN  0x0625a68d25d304aed698c806267a4e369e8eb12a0 CRO0.11356240
0x21d5955a35bbb1b4bdc19073fda1e0af9c9cd173eaf6ced87fa934f8678e1461Approve62714372022-12-31 9:05:4140 days 3 hrs ago0x2a18d1ddf8958ecd0739e157e3cafa17e21b182a IN  0x0625a68d25d304aed698c806267a4e369e8eb12a0 CRO0.11228640821 4,844.943398801
0x8d9742ec12aa6868e946a0a86557eb6f30789d7a6b8554de8f1b6396206c671aApprove60994822022-12-20 3:11:3551 days 9 hrs ago0xa7940e5d7951c1d951f8cc462e6a7a7577733881 IN  0x0625a68d25d304aed698c806267a4e369e8eb12a0 CRO0.2151787759970
0x119d5799f2b10143b574fb4e0b36c492420741d53e84817bca792838a1011fbdApprove59866842022-12-12 18:05:2758 days 18 hrs ago0x4d9a707b0bf5da22bc367d48882e548d03ceb37c IN  0x0625a68d25d304aed698c806267a4e369e8eb12a0 CRO0.141147646287 4,858.114073353
0x529b94c08a2429301152b98ebd29ceb0def1f8731f7a303fa7b7ef42fc032a95Approve59866202022-12-12 17:59:2658 days 18 hrs ago0x4d9a707b0bf5da22bc367d48882e548d03ceb37c IN  0x0625a68d25d304aed698c806267a4e369e8eb12a0 CRO0.14114773165 4,858.117011437
0xbe6969a5dccc0d74f7c3b5fb391323bf012298205c464e65020e0164835c13fcApprove59865742022-12-12 17:55:0658 days 18 hrs ago0x4d9a707b0bf5da22bc367d48882e548d03ceb37c IN  0x0625a68d25d304aed698c806267a4e369e8eb12a0 CRO0.213961283327 4,858.119143725
0x1bd7c9d2718f7908052a17c2623dd573df7585a0b8bf7866f31f1e636b3932b1Approve59136412022-12-07 23:10:1763 days 13 hrs ago0xae797c53bdce2a92b256fdf34eeb83d22bd070f5 IN  0x0625a68d25d304aed698c806267a4e369e8eb12a0 CRO0.214168539705 4,861.500424613
0x700c1787c9880b486c8c7b5cfa03feb839fc3f38906a9a56911599ff39f7a9c7Approve58063292022-11-30 22:13:1770 days 14 hrs ago0x36790bc9f64e5bfcd9f18a7a97cd545226fc3489 IN  0x0625a68d25d304aed698c806267a4e369e8eb12a0 CRO0.112784785735 4,866.447434227
0x53d0dfdb0d1202d6c7fde227f9eaa15cb18776f00a177c2975fec9ba9292c49dApprove57847992022-11-29 12:06:3872 days 31 mins ago0xda0a25cd53f0702fcb5b1edd87dcec2bb0f70d96 IN  0x0625a68d25d304aed698c806267a4e369e8eb12a0 CRO0.214371649435 4,867.436752081
0x9e13514b9ff9d5003092260ad4b939048d027c15b27ba644e0c02cf013dcde42Approve57151302022-11-24 21:39:3876 days 14 hrs ago0xc31be81c89bec8e09e47af0f2154135ecce3c358 IN  0x0625a68d25d304aed698c806267a4e369e8eb12a0 CRO0.2159670832210
0x247da8e8f8e24b5f8c893c3a35a4a52a2af647aaf96bbd5bf39379b06f44863bApprove56395302022-11-19 22:36:2381 days 14 hrs ago0x35ae0e1a7e45c5be4adafac757ab43ca1bb09806 IN  0x0625a68d25d304aed698c806267a4e369e8eb12a0 CRO0.21612218680
0x02d4493eb684649257e16a92856f2552fae03803af790054d3e898fa5f86ed77Approve56161092022-11-18 9:43:5683 days 2 hrs ago0x6d5d4f45a7b82757a277a82b2f5de29a2f13400f IN  0x0625a68d25d304aed698c806267a4e369e8eb12a0 CRO0.214715678561 4,875.248139542
0x07159f19b455805e24b6eed4c17e771fd8ebdbfd086d9a15924e3b308fc3b80cApprove55900482022-11-16 16:42:1084 days 19 hrs ago0x3a587f0b412b5acb90404c7f6094d9f3542b4b76 IN  0x0625a68d25d304aed698c806267a4e369e8eb12a0 CRO0.113016697941 4,876.454001632
0x7a0e6446d14383002bca200b9db4a13b75964e033a5ef7063217044af8954202Approve55900122022-11-16 16:38:4584 days 19 hrs ago0x3a587f0b412b5acb90404c7f6094d9f3542b4b76 IN  0x0625a68d25d304aed698c806267a4e369e8eb12a0 CRO0.113016736701 4,876.45567404
0x8a73d660f5da68c5eb5ae800968601ead13d7c6d10d09978c2bdb14d043a9f9cApprove54642412022-11-08 9:29:4493 days 3 hrs ago0x5b36c950956399692bed703d3a958c0e94609873 IN  0x0625a68d25d304aed698c806267a4e369e8eb12a0 CRO0.2164739487510
0x36dd839483c61e7c53a6d10d9e523148a346f69308e165a3875503efe3da9099Approve54601172022-11-08 2:56:3693 days 9 hrs ago0x9a5d2e931bb9e02299dc87a6be263eb8984be99c IN  0x0625a68d25d304aed698c806267a4e369e8eb12a0 CRO0.115880
0xf852eb0c5326e6b937f6a762fe579e1013f0c37a4a10d592a1102a2d910fdd7eApprove54471442022-11-07 6:28:4394 days 6 hrs ago0x4a5126d5e8f3752fe3500dd85170c3dcd0a50285 IN  0x0625a68d25d304aed698c806267a4e369e8eb12a0 CRO0.215051527151 4,882.873783023
0xda57a07536ce711c7b43df914366c7e3470a50ff2c857670bf17cbca26040650Approve54343732022-11-06 10:17:2295 days 2 hrs ago0x2a70bb7af3c3aab802801e0a33c668224b80d33f IN  0x0625a68d25d304aed698c806267a4e369e8eb12a0 CRO0.2165340634860
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0xfa6cfc01ade6108fae03493fc2a66978429f5b18a2383372646325969c01334a71832021-11-08 12:02:50458 days 34 mins ago CronaSwap: Factory  Contract Creation0 CRO
[ Download CSV Export 
Loading

Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0x6327fc19994bb85035000695f8d5177a7ab28035

Contract Name:
CronaSwapPair

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at cronoscan.com on 2022-01-07
*/

// Dependency file: contracts/libraries/SafeMath.sol

// SPDX-License-Identifier: MIT
// pragma solidity >=0.5.16;

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

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


// Dependency file: contracts/interfaces/ICronaSwapERC20.sol

// pragma solidity >=0.5.0;

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

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure 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);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
}


// Dependency file: contracts/swap/CronaSwapERC20.sol

// pragma solidity =0.5.16;

// import 'contracts/libraries/SafeMath.sol';
// import 'contracts/interfaces/ICronaSwapERC20.sol';

contract CronaSwapERC20 is ICronaSwapERC20 {
    using SafeMath for uint;

    string public constant name = 'Crona LPs';
    string public constant symbol = 'Crona-LP';
    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, 'CronaSwapERC20: 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, 'CronaSwapERC20: INVALID_SIGNATURE');
        _approve(owner, spender, value);
    }
}


// Dependency file: contracts/libraries/Math.sol

// pragma solidity =0.5.16;

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


// Dependency file: contracts/interfaces/IERC20.sol

// pragma solidity >=0.5.0;

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


// Dependency file: contracts/libraries/UQ112x112.sol

// pragma solidity =0.5.16;

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


// Dependency file: contracts/interfaces/ICronaSwapPair.sol

// pragma solidity >=0.5.0;

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

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure 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);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

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

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}


// Dependency file: contracts/interfaces/ICronaSwapFactory.sol

// pragma solidity >=0.5.0;

interface ICronaSwapFactory {
    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;
}

// Dependency file: contracts/interfaces/ICronaSwapCallee.sol

// pragma solidity >=0.5.0;

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


// Root file: contracts/swap/CronaSwapPair.sol

pragma solidity =0.5.16;

// import 'contracts/swap/CronaSwapERC20.sol';
// import 'contracts/libraries/Math.sol';
// import 'contracts/interfaces/IERC20.sol';
// import 'contracts/libraries/UQ112x112.sol';
// import 'contracts/interfaces/ICronaSwapPair.sol';
// import 'contracts/interfaces/ICronaSwapFactory.sol';
// import 'contracts/interfaces/ICronaSwapCallee.sol';

contract CronaSwapPair is ICronaSwapPair, CronaSwapERC20 {
    using SafeMath  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, 'CronaSwapPair: 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))), 'CronaSwapPair: 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, 'CronaSwapPair: 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), 'CronaSwapPair: 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 8/25 of the growth in sqrt(k)
    function _mintFee(uint112 _reserve0, uint112 _reserve1) private returns (bool feeOn) {
        address feeTo = ICronaSwapFactory(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)).mul(8);
                    uint denominator = rootK.mul(17).add(rootKLast.mul(8));
                    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 = IERC20(token0).balanceOf(address(this));
        uint balance1 = IERC20(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, 'CronaSwapPair: 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 = IERC20(_token0).balanceOf(address(this));
        uint balance1 = IERC20(_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, 'CronaSwapPair: INSUFFICIENT_LIQUIDITY_BURNED');
        _burn(address(this), liquidity);
        _safeTransfer(_token0, to, amount0);
        _safeTransfer(_token1, to, amount1);
        balance0 = IERC20(_token0).balanceOf(address(this));
        balance1 = IERC20(_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, 'CronaSwapPair: INSUFFICIENT_OUTPUT_AMOUNT');
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        require(amount0Out < _reserve0 && amount1Out < _reserve1, 'CronaSwapPair: 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, 'CronaSwapPair: 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) ICronaSwapCallee(to).cronaCall(msg.sender, amount0Out, amount1Out, data);
        balance0 = IERC20(_token0).balanceOf(address(this));
        balance1 = IERC20(_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, 'CronaSwapPair: INSUFFICIENT_INPUT_AMOUNT');
        { // scope for reserve{0,1}Adjusted, avoids stack too deep errors
        uint balance0Adjusted = (balance0.mul(10000).sub(amount0In.mul(25)));
        uint balance1Adjusted = (balance1.mul(10000).sub(amount1In.mul(25)));
        require(balance0Adjusted.mul(balance1Adjusted) >= uint(_reserve0).mul(_reserve1).mul(10000**2), 'CronaSwapPair: 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, IERC20(_token0).balanceOf(address(this)).sub(reserve0));
        _safeTransfer(_token1, to, IERC20(_token1).balanceOf(address(this)).sub(reserve1));
    }

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

Contract ABI

[{"inputs":[],"payable":false,"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"},{"constant":true,"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MINIMUM_LIQUIDITY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getReserves","outputs":[{"internalType":"uint112","name":"_reserve0","type":"uint112"},{"internalType":"uint112","name":"_reserve1","type":"uint112"},{"internalType":"uint32","name":"_blockTimestampLast","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_token0","type":"address"},{"internalType":"address","name":"_token1","type":"address"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"kLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"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":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"price0CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"price1CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"skim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"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":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"sync","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"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"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040526001600c5534801561001557600080fd5b5060405146908060526123f98239604080519182900360520182208282018252600983526843726f6e61204c507360b81b6020938401528151808301835260018152603160f81b908401528151808401919091527fe9f5f8c17a7be80f0eff451da66a9f855c021a15a734de5ec2fa0c44868cdbbb818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015260808101949094523060a0808601919091528151808603909101815260c09094019052825192019190912060035550600580546001600160a01b031916331790556122f5806101046000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a714610534578063d505accf1461053c578063dd62ed3e1461058d578063fff6cae9146105bb576101a9565b8063ba9a7a56146104fe578063bc25cf7714610506578063c45a01551461052c576101a9565b80637ecebe00116100d35780637ecebe001461046557806389afcb441461048b57806395d89b41146104ca578063a9059cbb146104d2576101a9565b80636a6278421461041157806370a08231146104375780637464fc3d1461045d576101a9565b806323b872dd116101665780633644e515116101405780633644e515146103cb578063485cc955146103d35780635909c0d5146104015780635a3d549314610409576101a9565b806323b872dd1461036f57806330adf81f146103a5578063313ce567146103ad576101a9565b8063022c0d9f146101ae57806306fdde031461023c5780630902f1ac146102b9578063095ea7b3146102f15780630dfe16811461033157806318160ddd14610355575b600080fd5b61023a600480360360808110156101c457600080fd5b8135916020810135916001600160a01b0360408301351691908101906080810160608201356401000000008111156101fb57600080fd5b82018360208201111561020d57600080fd5b8035906020019184600183028401116401000000008311171561022f57600080fd5b5090925090506105c3565b005b610244610b0f565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561027e578181015183820152602001610266565b50505050905090810190601f1680156102ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102c1610b34565b604080516001600160701b03948516815292909316602083015263ffffffff168183015290519081900360600190f35b61031d6004803603604081101561030757600080fd5b506001600160a01b038135169060200135610b5e565b604080519115158252519081900360200190f35b610339610b75565b604080516001600160a01b039092168252519081900360200190f35b61035d610b84565b60408051918252519081900360200190f35b61031d6004803603606081101561038557600080fd5b506001600160a01b03813581169160208101359091169060400135610b8a565b61035d610c24565b6103b5610c48565b6040805160ff9092168252519081900360200190f35b61035d610c4d565b61023a600480360360408110156103e957600080fd5b506001600160a01b0381358116916020013516610c53565b61035d610ce0565b61035d610ce6565b61035d6004803603602081101561042757600080fd5b50356001600160a01b0316610cec565b61035d6004803603602081101561044d57600080fd5b50356001600160a01b0316610ff0565b61035d611002565b61035d6004803603602081101561047b57600080fd5b50356001600160a01b0316611008565b6104b1600480360360208110156104a157600080fd5b50356001600160a01b031661101a565b6040805192835260208301919091528051918290030190f35b6102446113c4565b61031d600480360360408110156104e857600080fd5b506001600160a01b0381351690602001356113e8565b61035d6113f5565b61023a6004803603602081101561051c57600080fd5b50356001600160a01b03166113fb565b61033961156a565b610339611579565b61023a600480360360e081101561055257600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611588565b61035d600480360360408110156105a357600080fd5b506001600160a01b038135811691602001351661177f565b61023a61179c565b600c54600114610612576040805162461bcd60e51b815260206004820152601560248201527410dc9bdb9854ddd85c14185a5c8e881313d0d2d151605a1b604482015290519081900360640190fd5b6000600c55841515806106255750600084115b6106605760405162461bcd60e51b81526004018080602001828103825260298152602001806122986029913960400191505060405180910390fd5b60008061066b610b34565b5091509150816001600160701b0316871080156106905750806001600160701b031686105b6106cb5760405162461bcd60e51b81526004018080602001828103825260258152602001806121d26025913960400191505060405180910390fd5b60065460075460009182916001600160a01b039182169190811690891682148015906107095750806001600160a01b0316896001600160a01b031614155b61075a576040805162461bcd60e51b815260206004820152601960248201527f43726f6e6153776170506169723a20494e56414c49445f544f00000000000000604482015290519081900360640190fd5b8a1561076b5761076b828a8d611902565b891561077c5761077c818a8c611902565b861561083757886001600160a01b031663b2770f7b338d8d8c8c6040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561081e57600080fd5b505af1158015610832573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561087d57600080fd5b505afa158015610891573d6000803e3d6000fd5b505050506040513d60208110156108a757600080fd5b5051604080516370a0823160e01b815230600482015290519195506001600160a01b038316916370a0823191602480820192602092909190829003018186803b1580156108f357600080fd5b505afa158015610907573d6000803e3d6000fd5b505050506040513d602081101561091d57600080fd5b5051925060009150506001600160701b0385168a9003831161094057600061094f565b89856001600160701b03160383035b9050600089856001600160701b031603831161096c57600061097b565b89856001600160701b03160383035b9050600082118061098c5750600081115b6109c75760405162461bcd60e51b81526004018080602001828103825260288152602001806122706028913960400191505060405180910390fd5b60006109fb6109dd84601963ffffffff611a9c16565b6109ef8761271063ffffffff611a9c16565b9063ffffffff611aff16565b90506000610a136109dd84601963ffffffff611a9c16565b9050610a456305f5e100610a396001600160701b038b8116908b1663ffffffff611a9c16565b9063ffffffff611a9c16565b610a55838363ffffffff611a9c16565b1015610a9b576040805162461bcd60e51b815260206004820152601060248201526f43726f6e6153776170506169723a204b60801b604482015290519081900360640190fd5b5050610aa984848888611b4f565b60408051838152602081018390528082018d9052606081018c905290516001600160a01b038b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280600981526020016843726f6e61204c507360b81b81525081565b6008546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b6000610b6b338484611d1e565b5060015b92915050565b6006546001600160a01b031681565b60005481565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610c0f576001600160a01b0384166000908152600260209081526040808320338452909152902054610bea908363ffffffff611aff16565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610c1a848484611d80565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b6005546001600160a01b03163314610cb2576040805162461bcd60e51b815260206004820152601860248201527f43726f6e6153776170506169723a20464f5242494444454e0000000000000000604482015290519081900360640190fd5b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c54600114610d3d576040805162461bcd60e51b815260206004820152601560248201527410dc9bdb9854ddd85c14185a5c8e881313d0d2d151605a1b604482015290519081900360640190fd5b6000600c81905580610d4d610b34565b50600654604080516370a0823160e01b815230600482015290519395509193506000926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610da157600080fd5b505afa158015610db5573d6000803e3d6000fd5b505050506040513d6020811015610dcb57600080fd5b5051600754604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610e1e57600080fd5b505afa158015610e32573d6000803e3d6000fd5b505050506040513d6020811015610e4857600080fd5b505190506000610e67836001600160701b03871663ffffffff611aff16565b90506000610e84836001600160701b03871663ffffffff611aff16565b90506000610e928787611e3a565b60005490915080610ecf57610ebb6103e86109ef610eb6878763ffffffff611a9c16565b611fad565b9850610eca60006103e8611fff565b610f1e565b610f1b6001600160701b038916610eec868463ffffffff611a9c16565b81610ef357fe5b046001600160701b038916610f0e868563ffffffff611a9c16565b81610f1557fe5b04612095565b98505b60008911610f5d5760405162461bcd60e51b815260040180806020018281038252602c815260200180612244602c913960400191505060405180910390fd5b610f678a8a611fff565b610f7386868a8a611b4f565b8115610fa357600854610f9f906001600160701b0380821691600160701b90041663ffffffff611a9c16565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c5460011461106c576040805162461bcd60e51b815260206004820152601560248201527410dc9bdb9854ddd85c14185a5c8e881313d0d2d151605a1b604482015290519081900360640190fd5b6000600c8190558061107c610b34565b50600654600754604080516370a0823160e01b815230600482015290519496509294506001600160a01b039182169391169160009184916370a08231916024808301926020929190829003018186803b1580156110d857600080fd5b505afa1580156110ec573d6000803e3d6000fd5b505050506040513d602081101561110257600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038516916370a08231916024808301926020929190829003018186803b15801561115057600080fd5b505afa158015611164573d6000803e3d6000fd5b505050506040513d602081101561117a57600080fd5b5051306000908152600160205260408120549192506111998888611e3a565b600054909150806111b0848763ffffffff611a9c16565b816111b757fe5b049a50806111cb848663ffffffff611a9c16565b816111d257fe5b04995060008b1180156111e5575060008a115b6112205760405162461bcd60e51b815260040180806020018281038252602c815260200180612218602c913960400191505060405180910390fd5b61122a30846120ad565b611235878d8d611902565b611240868d8c611902565b604080516370a0823160e01b815230600482015290516001600160a01b038916916370a08231916024808301926020929190829003018186803b15801561128657600080fd5b505afa15801561129a573d6000803e3d6000fd5b505050506040513d60208110156112b057600080fd5b5051604080516370a0823160e01b815230600482015290519196506001600160a01b038816916370a0823191602480820192602092909190829003018186803b1580156112fc57600080fd5b505afa158015611310573d6000803e3d6000fd5b505050506040513d602081101561132657600080fd5b5051935061133685858b8b611b4f565b811561136657600854611362906001600160701b0380821691600160701b90041663ffffffff611a9c16565b600b555b604080518c8152602081018c905281516001600160a01b038f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b60405180604001604052806008815260200167043726f6e612d4c560c41b81525081565b6000610b6b338484611d80565b6103e881565b600c5460011461144a576040805162461bcd60e51b815260206004820152601560248201527410dc9bdb9854ddd85c14185a5c8e881313d0d2d151605a1b604482015290519081900360640190fd5b6000600c55600654600754600854604080516370a0823160e01b815230600482015290516001600160a01b0394851694909316926114f992859287926114f4926001600160701b03169185916370a0823191602480820192602092909190829003018186803b1580156114bc57600080fd5b505afa1580156114d0573d6000803e3d6000fd5b505050506040513d60208110156114e657600080fd5b50519063ffffffff611aff16565b611902565b600854604080516370a0823160e01b8152306004820152905161156092849287926114f492600160701b90046001600160701b0316916001600160a01b038616916370a0823191602480820192602092909190829003018186803b1580156114bc57600080fd5b50506001600c5550565b6005546001600160a01b031681565b6007546001600160a01b031681565b428410156115dd576040805162461bcd60e51b815260206004820152601760248201527f43726f6e615377617045524332303a2045585049524544000000000000000000604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa1580156116f8573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381161580159061172e5750886001600160a01b0316816001600160a01b0316145b6117695760405162461bcd60e51b81526004018080602001828103825260218152602001806121f76021913960400191505060405180910390fd5b611774898989611d1e565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c546001146117eb576040805162461bcd60e51b815260206004820152601560248201527410dc9bdb9854ddd85c14185a5c8e881313d0d2d151605a1b604482015290519081900360640190fd5b6000600c55600654604080516370a0823160e01b815230600482015290516118fb926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561183c57600080fd5b505afa158015611850573d6000803e3d6000fd5b505050506040513d602081101561186657600080fd5b5051600754604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156118b357600080fd5b505afa1580156118c7573d6000803e3d6000fd5b505050506040513d60208110156118dd57600080fd5b50516008546001600160701b0380821691600160701b900416611b4f565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b602083106119af5780518252601f199092019160209182019101611990565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611a11576040519150601f19603f3d011682016040523d82523d6000602084013e611a16565b606091505b5091509150818015611a44575080511580611a445750808060200190516020811015611a4157600080fd5b50515b611a95576040805162461bcd60e51b815260206004820152601e60248201527f43726f6e6153776170506169723a205452414e534645525f4641494c45440000604482015290519081900360640190fd5b5050505050565b6000811580611ab757505080820282828281611ab457fe5b04145b610b6f576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820382811115610b6f576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6001600160701b038411801590611b6d57506001600160701b038311155b611bbe576040805162461bcd60e51b815260206004820152601760248201527f43726f6e6153776170506169723a204f564552464c4f57000000000000000000604482015290519081900360640190fd5b60085463ffffffff42811691600160e01b90048116820390811615801590611bee57506001600160701b03841615155b8015611c0257506001600160701b03831615155b15611c73578063ffffffff16611c3085611c1b8661214b565b6001600160e01b03169063ffffffff61215d16565b600980546001600160e01b03929092169290920201905563ffffffff8116611c5b84611c1b8761214b565b600a80546001600160e01b0392909216929092020190555b600880546dffffffffffffffffffffffffffff19166001600160701b03888116919091176dffffffffffffffffffffffffffff60701b1916600160701b8883168102919091176001600160e01b0316600160e01b63ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316600090815260016020526040902054611da9908263ffffffff611aff16565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611dde908263ffffffff61218216565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b158015611e8b57600080fd5b505afa158015611e9f573d6000803e3d6000fd5b505050506040513d6020811015611eb557600080fd5b5051600b546001600160a01b038216158015945091925090611f99578015611f94576000611ef8610eb66001600160701b0388811690881663ffffffff611a9c16565b90506000611f0583611fad565b905080821115611f91576000611f386008610a39611f29868663ffffffff611aff16565b6000549063ffffffff611a9c16565b90506000611f6d611f5084600863ffffffff611a9c16565b611f6186601163ffffffff611a9c16565b9063ffffffff61218216565b90506000818381611f7a57fe5b0490508015611f8d57611f8d8782611fff565b5050505b50505b611fa5565b8015611fa5576000600b555b505092915050565b60006003821115611ff0575080600160028204015b81811015611fea57809150600281828581611fd957fe5b040181611fe257fe5b049050611fc2565b50611ffa565b8115611ffa575060015b919050565b600054612012908263ffffffff61218216565b60009081556001600160a01b03831681526001602052604090205461203d908263ffffffff61218216565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106120a457816120a6565b825b9392505050565b6001600160a01b0382166000908152600160205260409020546120d6908263ffffffff611aff16565b6001600160a01b03831660009081526001602052604081209190915554612103908263ffffffff611aff16565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6001600160701b0316600160701b0290565b60006001600160701b0382166001600160e01b0384168161217a57fe5b049392505050565b80820182811015610b6f576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfe43726f6e6153776170506169723a20494e53554646494349454e545f4c495155494449545943726f6e615377617045524332303a20494e56414c49445f5349474e415455524543726f6e6153776170506169723a20494e53554646494349454e545f4c49515549444954595f4255524e454443726f6e6153776170506169723a20494e53554646494349454e545f4c49515549444954595f4d494e54454443726f6e6153776170506169723a20494e53554646494349454e545f494e5055545f414d4f554e5443726f6e6153776170506169723a20494e53554646494349454e545f4f55545055545f414d4f554e54a265627a7a72315820fd6179b37986bcfdb77009ef146da91e3febfb21b3c0aa163bd84affbeecdf0664736f6c63430005100032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429

Deployed ByteCode Sourcemap

11752:9750:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11752:9750:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18995:1914;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;18995:1914:0;;;;;;;;-1:-1:-1;;;;;18995:1914:0;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;18995:1914:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;18995:1914:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;18995:1914:0;;-1:-1:-1;18995:1914:0;-1:-1:-1;18995:1914:0;:::i;:::-;;2193:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2193:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12777:231;;;:::i;:::-;;;;-1:-1:-1;;;;;12777:231:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4241:147;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4241:147:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;12062:21;;;:::i;:::-;;;;-1:-1:-1;;;;;12062:21:0;;;;;;;;;;;;;;2332:24;;;:::i;:::-;;;;;;;;;;;;;;;;4543:301;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4543:301:0;;;;;;;;;;;;;;;;;:::i;2624:108::-;;;:::i;2290:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2481:31;;;:::i;13841:214::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13841:214:0;;;;;;;;;;:::i;12413:32::-;;;:::i;12452:::-;;;:::i;16057:1244::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16057:1244:0;-1:-1:-1;;;;;16057:1244:0;;:::i;2363:41::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2363:41:0;-1:-1:-1;;;;;2363:41:0;;:::i;12491:17::-;;;:::i;2739:38::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2739:38:0;-1:-1:-1;;;;;2739:38:0;;:::i;17413:1470::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17413:1470:0;-1:-1:-1;;;;;17413:1470:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2241:42;;;:::i;4396:139::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4396:139:0;;;;;;;;:::i;11883:46::-;;;:::i;20958:334::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20958:334:0;-1:-1:-1;;;;;20958:334:0;;:::i;12033:22::-;;;:::i;12090:21::-;;;:::i;4852:684::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;4852:684:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2411:61::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2411:61:0;;;;;;;;;;:::i;21341:158::-;;;:::i;18995:1914::-;12664:8;;12676:1;12664:13;12656:47;;;;;-1:-1:-1;;;12656:47:0;;;;;;;;;;;;-1:-1:-1;;;12656:47:0;;;;;;;;;;;;;;;12725:1;12714:8;:12;19109:14;;;;:32;;;19140:1;19127:10;:14;19109:32;19101:86;;;;-1:-1:-1;;;19101:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19199:17;19218;19240:13;:11;:13::i;:::-;19198:55;;;;;19300:9;-1:-1:-1;;;;;19287:22:0;:10;:22;:48;;;;;19326:9;-1:-1:-1;;;;;19313:22:0;:10;:22;19287:48;19279:98;;;;-1:-1:-1;;;19279:98:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19522:6;;19557;;19390:13;;;;-1:-1:-1;;;;;19522:6:0;;;;19557;;;;19582:13;;;;;;;:30;;;19605:7;-1:-1:-1;;;;;19599:13:0;:2;-1:-1:-1;;;;;19599:13:0;;;19582:30;19574:68;;;;;-1:-1:-1;;;19574:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;19657:14;;19653:58;;19673:38;19687:7;19696:2;19700:10;19673:13;:38::i;:::-;19760:14;;19756:58;;19776:38;19790:7;19799:2;19803:10;19776:13;:38::i;:::-;19863:15;;19859:93;;19897:2;-1:-1:-1;;;;;19880:30:0;;19911:10;19923;19935;19947:4;;19880:72;;;;;;;;;;;;;-1:-1:-1;;;;;19880:72:0;-1:-1:-1;;;;;19880:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;19880:72:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19880:72:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19880:72:0;;;;19859:93;19974:40;;;-1:-1:-1;;;19974:40:0;;20008:4;19974:40;;;;;;-1:-1:-1;;;;;19974:25:0;;;;;:40;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;19974:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19974:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19974:40:0;20036;;;-1:-1:-1;;;20036:40:0;;20070:4;20036:40;;;;;;19974;;-1:-1:-1;;;;;;20036:25:0;;;;;:40;;;;;19974;;20036;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;20036:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20036:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20036:40:0;;-1:-1:-1;20098:14:0;;-1:-1:-1;;;;;;;20126:22:0;;;;;20115:33;;:75;;20189:1;20115:75;;;20175:10;20163:9;-1:-1:-1;;;;;20163:22:0;;20151:8;:35;20115:75;20098:92;;20201:14;20241:10;20229:9;-1:-1:-1;;;;;20229:22:0;;20218:8;:33;:75;;20292:1;20218:75;;;20278:10;20266:9;-1:-1:-1;;;;;20266:22:0;;20254:8;:35;20218:75;20201:92;;20324:1;20312:9;:13;:30;;;;20341:1;20329:9;:13;20312:30;20304:83;;;;-1:-1:-1;;;20304:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20473:21;20498:42;20522:17;:9;20536:2;20522:17;:13;:17;:::i;:::-;20498:19;:8;20511:5;20498:19;:12;:19;:::i;:::-;:23;:42;:23;:42;:::i;:::-;20473:68;-1:-1:-1;20552:21:0;20577:42;20601:17;:9;20615:2;20601:17;:13;:17;:::i;20577:42::-;20552:68;-1:-1:-1;20681:44:0;20716:8;20681:30;-1:-1:-1;;;;;20681:15:0;;;;:30;;;:19;:30;:::i;:::-;:34;:44;:34;:44;:::i;:::-;20639:38;:16;20660;20639:38;:20;:38;:::i;:::-;:86;;20631:115;;;;;-1:-1:-1;;;20631:115:0;;;;;;;;;;;;-1:-1:-1;;;20631:115:0;;;;;;;;;;;;;;;12737:1;;20770:49;20778:8;20788;20798:9;20809;20770:7;:49::i;:::-;20835:66;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20835:66:0;;;20840:10;;20835:66;;;;;;;;;-1:-1:-1;;12760:1:0;12749:8;:12;-1:-1:-1;;;;;;;;;18995:1914:0:o;2193:41::-;;;;;;;;;;;;;;-1:-1:-1;;;2193:41:0;;;;:::o;12777:231::-;12910:8;;-1:-1:-1;;;;;12910:8:0;;;;-1:-1:-1;;;12941:8:0;;;;;;-1:-1:-1;;;12982:18:0;;;;;12777:231::o;4241:147::-;4305:4;4322:36;4331:10;4343:7;4352:5;4322:8;:36::i;:::-;-1:-1:-1;4376:4:0;4241:147;;;;;:::o;12062:21::-;;;-1:-1:-1;;;;;12062:21:0;;:::o;2332:24::-;;;;:::o;4543:301::-;-1:-1:-1;;;;;4642:15:0;;4621:4;4642:15;;;:9;:15;;;;;;;;4658:10;4642:27;;;;;;;;-1:-1:-1;;4642:39:0;4638:140;;-1:-1:-1;;;;;4728:15:0;;;;;;:9;:15;;;;;;;;4744:10;4728:27;;;;;;;;:38;;4760:5;4728:38;:31;:38;:::i;:::-;-1:-1:-1;;;;;4698:15:0;;;;;;:9;:15;;;;;;;;4714:10;4698:27;;;;;;;:68;4638:140;4788:26;4798:4;4804:2;4808:5;4788:9;:26::i;:::-;-1:-1:-1;4832:4:0;4543:301;;;;;:::o;2624:108::-;2666:66;2624:108;:::o;2290:35::-;2323:2;2290:35;:::o;2481:31::-;;;;:::o;13841:214::-;13937:7;;-1:-1:-1;;;;;13937:7:0;13923:10;:21;13915:58;;;;;-1:-1:-1;;;13915:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14004:6;:16;;-1:-1:-1;;;;;14004:16:0;;;-1:-1:-1;;;;;;14004:16:0;;;;;;;14031:6;:16;;;;;;;;;;;13841:214::o;12413:32::-;;;;:::o;12452:::-;;;;:::o;16057:1244::-;16106:14;12664:8;;12676:1;12664:13;12656:47;;;;;-1:-1:-1;;;12656:47:0;;;;;;;;;;;;-1:-1:-1;;;12656:47:0;;;;;;;;;;;;;;;12725:1;12714:8;:12;;;12725:1;16175:13;:11;:13::i;:::-;-1:-1:-1;16237:6:0;;16230:39;;;-1:-1:-1;;;16230:39:0;;16263:4;16230:39;;;;;;16133:55;;-1:-1:-1;16133:55:0;;-1:-1:-1;16214:13:0;;-1:-1:-1;;;;;16237:6:0;;;;16230:24;;:39;;;;;;;;;;;;;;16237:6;16230:39;;;5:2:-1;;;;30:1;27;20:12;5:2;16230:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16230:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16230:39:0;16303:6;;16296:39;;;-1:-1:-1;;;16296:39:0;;16329:4;16296:39;;;;;;16230;;-1:-1:-1;16280:13:0;;-1:-1:-1;;;;;16303:6:0;;;;16296:24;;:39;;;;;16230;;16296;;;;;;;;16303:6;16296:39;;;5:2:-1;;;;30:1;27;20:12;5:2;16296:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16296:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16296:39:0;;-1:-1:-1;16346:12:0;16361:23;:8;-1:-1:-1;;;;;16361:23:0;;;:12;:23;:::i;:::-;16346:38;-1:-1:-1;16395:12:0;16410:23;:8;-1:-1:-1;;;;;16410:23:0;;;:12;:23;:::i;:::-;16395:38;;16446:10;16459:30;16468:9;16479;16459:8;:30::i;:::-;16500:17;16520:11;16446:43;;-1:-1:-1;16624:17:0;16620:352;;16670:54;11924:5;16670:31;16680:20;:7;16692;16680:20;:11;:20;:::i;:::-;16670:9;:31::i;:54::-;16658:66;;16738:36;16752:1;11924:5;16738;:36::i;:::-;16620:352;;;16874:86;-1:-1:-1;;;;;16883:37:0;;:25;:7;16895:12;16883:25;:11;:25;:::i;:::-;:37;;;;;;-1:-1:-1;;;;;16922:37:0;;:25;:7;16934:12;16922:25;:11;:25;:::i;:::-;:37;;;;;;16874:8;:86::i;:::-;16862:98;;16620:352;17002:1;16990:9;:13;16982:70;;;;-1:-1:-1;;;16982:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17063:20;17069:2;17073:9;17063:5;:20::i;:::-;17096:49;17104:8;17114;17124:9;17135;17096:7;:49::i;:::-;17160:5;17156:47;;;17194:8;;17175:28;;-1:-1:-1;;;;;17180:8:0;;;;-1:-1:-1;;;17194:8:0;;;17175:28;:18;:28;:::i;:::-;17167:5;:36;17156:47;17259:34;;;;;;;;;;;;;;17264:10;;17259:34;;;;;;;;-1:-1:-1;;12760:1:0;12749:8;:12;-1:-1:-1;16057:1244:0;;;-1:-1:-1;;;;;;16057:1244:0:o;2363:41::-;;;;;;;;;;;;;:::o;12491:17::-;;;;:::o;2739:38::-;;;;;;;;;;;;;:::o;17413:1470::-;17462:12;17476;12664:8;;12676:1;12664:13;12656:47;;;;;-1:-1:-1;;;12656:47:0;;;;;;;;;;;;-1:-1:-1;;;12656:47:0;;;;;;;;;;;;;;;12725:1;12714:8;:12;;;12725:1;17543:13;:11;:13::i;:::-;-1:-1:-1;17600:6:0;;17681;;17760:40;;;-1:-1:-1;;;17760:40:0;;17794:4;17760:40;;;;;;17501:55;;-1:-1:-1;17501:55:0;;-1:-1:-1;;;;;;17600:6:0;;;;17681;;;17582:15;;17600:6;;17760:25;;:40;;;;;;;;;;;;;;17600:6;17760:40;;;5:2:-1;;;;30:1;27;20:12;5:2;17760:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17760:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17760:40:0;17827;;;-1:-1:-1;;;17827:40:0;;17861:4;17827:40;;;;;;17760;;-1:-1:-1;17811:13:0;;-1:-1:-1;;;;;17827:25:0;;;;;:40;;;;;17760;;17827;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;17827:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17827:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17827:40:0;17913:4;17878:14;17895:24;;;:9;17827:40;17895:24;;;;;17827:40;;-1:-1:-1;17945:30:0;17954:9;17965;17945:8;:30::i;:::-;17986:17;18006:11;17932:43;;-1:-1:-1;18006:11:0;18116:23;:9;18130:8;18116:23;:13;:23;:::i;:::-;:38;;;;;;;-1:-1:-1;18249:12:0;18223:23;:9;18237:8;18223:23;:13;:23;:::i;:::-;:38;;;;;;18213:48;;18338:1;18328:7;:11;:26;;;;;18353:1;18343:7;:11;18328:26;18320:83;;;;-1:-1:-1;;;18320:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18414:31;18428:4;18435:9;18414:5;:31::i;:::-;18456:35;18470:7;18479:2;18483:7;18456:13;:35::i;:::-;18502;18516:7;18525:2;18529:7;18502:13;:35::i;:::-;18559:40;;;-1:-1:-1;;;18559:40:0;;18593:4;18559:40;;;;;;-1:-1:-1;;;;;18559:25:0;;;;;:40;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;18559:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18559:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18559:40:0;18621;;;-1:-1:-1;;;18621:40:0;;18655:4;18621:40;;;;;;18559;;-1:-1:-1;;;;;;18621:25:0;;;;;:40;;;;;18559;;18621;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;18621:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18621:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18621:40:0;;-1:-1:-1;18674:49:0;18682:8;18621:40;18702:9;18713;18674:7;:49::i;:::-;18738:5;18734:47;;;18772:8;;18753:28;;-1:-1:-1;;;;;18758:8:0;;;;-1:-1:-1;;;18772:8:0;;;18753:28;:18;:28;:::i;:::-;18745:5;:36;18734:47;18837:38;;;;;;;;;;;;;;-1:-1:-1;;;;;18837:38:0;;;18842:10;;18837:38;;;;;;;;;;;12737:1;;;;;;;;;12760;12749:8;:12;;;;17413:1470;;;:::o;2241:42::-;;;;;;;;;;;;;;-1:-1:-1;;;2241:42:0;;;;:::o;4396:139::-;4456:4;4473:32;4483:10;4495:2;4499:5;4473:9;:32::i;11883:46::-;11924:5;11883:46;:::o;20958:334::-;12664:8;;12676:1;12664:13;12656:47;;;;;-1:-1:-1;;;12656:47:0;;;;;;;;;;;;-1:-1:-1;;;12656:47:0;;;;;;;;;;;;;;;12725:1;12714:8;:12;21027:6;;21077;;21181:8;;21136:40;;;-1:-1:-1;;;21136:40:0;;21170:4;21136:40;;;;;;-1:-1:-1;;;;;21027:6:0;;;;21077;;;;21109:82;;21027:6;;21132:2;;21136:54;;-1:-1:-1;;;;;21181:8:0;;21027:6;;21136:25;;:40;;;;;;;;;;;;;;;21027:6;21136:40;;;5:2:-1;;;;30:1;27;20:12;5:2;21136:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21136:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21136:40:0;;:54;:44;:54;:::i;:::-;21109:13;:82::i;:::-;21274:8;;21229:40;;;-1:-1:-1;;;21229:40:0;;21263:4;21229:40;;;;;;21202:82;;21216:7;;21225:2;;21229:54;;-1:-1:-1;;;21274:8:0;;-1:-1:-1;;;;;21274:8:0;;-1:-1:-1;;;;;21229:25:0;;;;;:40;;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;21202:82:0;-1:-1:-1;;12760:1:0;12749:8;:12;-1:-1:-1;20958:334:0:o;12033:22::-;;;-1:-1:-1;;;;;12033:22:0;;:::o;12090:21::-;;;-1:-1:-1;;;;;12090:21:0;;:::o;4852:684::-;4998:15;4986:8;:27;;4978:63;;;;;-1:-1:-1;;;4978:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;5157:16;;-1:-1:-1;;;;;5253:13:0;;;5052:14;5253:13;;;:6;:13;;;;;;;;:15;;;;;;;;;5202:77;;2666:66;5202:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;5202:77:0;;;;;5192:88;;;;;;-1:-1:-1;;;5093:202:0;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;5093:202:0;;;;;;5069:237;;;;;;;;;5344:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5052:14;;5253:15;5344:26;;;;;-1:-1:-1;;5344:26:0;;;;;;;;;;5253:15;5344:26;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;5344:26:0;;-1:-1:-1;;5344:26:0;;;-1:-1:-1;;;;;;;5389:30:0;;;;;;:59;;;5443:5;-1:-1:-1;;;;;5423:25:0;:16;-1:-1:-1;;;;;5423:25:0;;5389:59;5381:105;;;;-1:-1:-1;;;5381:105:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5497:31;5506:5;5513:7;5522:5;5497:8;:31::i;:::-;4852:684;;;;;;;;;:::o;2411:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;21341:158::-;12664:8;;12676:1;12664:13;12656:47;;;;;-1:-1:-1;;;12656:47:0;;;;;;;;;;;;-1:-1:-1;;;12656:47:0;;;;;;;;;;;;;;;12725:1;12714:8;:12;21397:6;;21390:39;;;-1:-1:-1;;;21390:39:0;;21423:4;21390:39;;;;;;21382:109;;-1:-1:-1;;;;;21397:6:0;;21390:24;;:39;;;;;;;;;;;;;;21397:6;21390:39;;;5:2:-1;;;;30:1;27;20:12;5:2;21390:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21390:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21390:39:0;21438:6;;21431:39;;;-1:-1:-1;;;21431:39:0;;21464:4;21431:39;;;;;;-1:-1:-1;;;;;21438:6:0;;;;21431:24;;:39;;;;;21390;;21431;;;;;;;;21438:6;21431:39;;;5:2:-1;;;;30:1;27;20:12;5:2;21431:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21431:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21431:39:0;21472:8;;-1:-1:-1;;;;;21472:8:0;;;;-1:-1:-1;;;21482:8:0;;;21382:7;:109::i;:::-;12760:1;12749:8;:12;21341:158::o;13016:291::-;11988:34;;;;;;;;;;;;;;;;;13144:43;;-1:-1:-1;;;;;13144:43:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;13144:43:0;;;;;;25:18:-1;;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;13133:55:0;;;;13098:12;;13112:17;;13133:10;;;13144:43;13133:55;;;25:18:-1;13133:55:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;13133:55:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;13097:91:0;;;;13207:7;:57;;;;-1:-1:-1;13219:11:0;;:16;;:44;;;13250:4;13239:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13239:24:0;13219:44;13199:100;;;;;-1:-1:-1;;;13199:100:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13016:291;;;;;:::o;526:142::-;578:6;605;;;:30;;-1:-1:-1;;620:5:0;;;634:1;629;620:5;629:1;615:15;;;;;:20;605:30;597:63;;;;;-1:-1:-1;;;597:63:0;;;;;;;;;;;;-1:-1:-1;;;597:63:0;;;;;;;;;;;;;;389:129;473:5;;;468:16;;;;460:50;;;;;-1:-1:-1;;;460:50:0;;;;;;;;;;;;-1:-1:-1;;;460:50:0;;;;;;;;;;;;;;14140:864;-1:-1:-1;;;;;14252:23:0;;;;;:50;;-1:-1:-1;;;;;;14279:23:0;;;14252:50;14244:86;;;;;-1:-1:-1;;;14244:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14445:18;;14372:23;:15;:23;;;-1:-1:-1;;;14445:18:0;;;;14428:35;;;14501:15;;;;;;:33;;-1:-1:-1;;;;;;14520:14:0;;;;14501:33;:51;;;;-1:-1:-1;;;;;;14538:14:0;;;;14501:51;14497:336;;;14707:11;14654:64;;14659:44;14693:9;14659:27;14676:9;14659:16;:27::i;:::-;-1:-1:-1;;;;;14659:33:0;;:44;:33;:44;:::i;:::-;14630:20;:88;;-1:-1:-1;;;;;14654:50:0;;;;:64;;;;14630:88;;;14757:64;;;14762:44;14796:9;14762:27;14779:9;14762:16;:27::i;:44::-;14733:20;:88;;-1:-1:-1;;;;;14757:50:0;;;;:64;;;;14733:88;;;14497:336;14843:8;:28;;-1:-1:-1;;14843:28:0;-1:-1:-1;;;;;14843:28:0;;;;;;;-1:-1:-1;;;;14882:28:0;-1:-1:-1;;;14882:28:0;;;;;;;;;-1:-1:-1;;;;;14921:35:0;-1:-1:-1;;;14921:35:0;;;;;;;;;14972:24;;;14977:8;;;14972:24;;14987:8;;;;;;;14972:24;;;;;;;;;;;;;;;;;14140:864;;;;;;:::o;3836:169::-;-1:-1:-1;;;;;3917:16:0;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;3966:31;;;;;;;;;;;;;;;;;3836:169;;;:::o;4013:220::-;-1:-1:-1;;;;;4107:15:0;;;;;;:9;:15;;;;;;:26;;4127:5;4107:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;4089:15:0;;;;;;;:9;:15;;;;;;:44;;;;4160:13;;;;;;;:24;;4178:5;4160:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;4144:13:0;;;;;;;:9;:13;;;;;;;;;:40;;;;4200:25;;;;;;;4144:13;;4200:25;;;;;;;;;;;;;4013:220;;;:::o;15093:852::-;15166:10;15189:13;15223:7;;;;;;;;;-1:-1:-1;;;;;15223:7:0;-1:-1:-1;;;;;15205:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15205:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15205:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15205:34:0;15302:5;;-1:-1:-1;;;;;15258:19:0;;;;;;-1:-1:-1;15205:34:0;;-1:-1:-1;15302:5:0;15333:605;;15363:11;;15359:509;;15395:10;15408:41;15418:30;-1:-1:-1;;;;;15418:15:0;;;;:30;;;:19;:30;:::i;15408:41::-;15395:54;;15468:14;15485:17;15495:6;15485:9;:17::i;:::-;15468:34;;15533:9;15525:5;:17;15521:332;;;15567:14;15584:44;15626:1;15584:37;15600:20;:5;15610:9;15600:20;:9;:20;:::i;:::-;15584:11;;;:37;:15;:37;:::i;:44::-;15567:61;-1:-1:-1;15651:16:0;15670:35;15688:16;:9;15702:1;15688:16;:13;:16;:::i;:::-;15670:13;:5;15680:2;15670:13;:9;:13;:::i;:::-;:17;:35;:17;:35;:::i;:::-;15651:54;;15728:14;15757:11;15745:9;:23;;;;;;;-1:-1:-1;15795:13:0;;15791:42;;15810:23;15816:5;15823:9;15810:5;:23::i;:::-;15521:332;;;;15359:509;;;15333:605;;;15889:11;;15885:53;;15925:1;15917:5;:9;15885:53;15093:852;;;;;;:::o;5917:303::-;5962:6;5989:1;5985;:5;5981:232;;;-1:-1:-1;6011:1:0;6044;6040;6036:5;;:9;6060:92;6071:1;6067;:5;6060:92;;;6097:1;6093:5;;6135:1;6130;6126;6122;:5;;;;;;:9;6121:15;;;;;;6117:19;;6060:92;;;5981:232;;;;6173:6;;6169:44;;-1:-1:-1;6200:1:0;6169:44;5917:303;;;:::o;3410:201::-;3483:11;;:22;;3499:5;3483:22;:15;:22;:::i;:::-;3469:11;:36;;;-1:-1:-1;;;;;3532:13:0;;;;:9;:13;;;;;;:24;;3550:5;3532:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;3516:13:0;;;;;;:9;:13;;;;;;;;:40;;;;3572:31;;;;;;;3516:13;;;;3572:31;;;;;;;;;;3410:201;;:::o;5703:96::-;5755:6;5782:1;5778;:5;:13;;5790:1;5778:13;;;5786:1;5778:13;5774:17;5703:96;-1:-1:-1;;;5703:96:0:o;3619:209::-;-1:-1:-1;;;;;3698:15:0;;;;;;:9;:15;;;;;;:26;;3718:5;3698:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;3680:15:0;;;;;;:9;:15;;;;;:44;;;;3749:11;:22;;3765:5;3749:22;:15;:22;:::i;:::-;3735:11;:36;;;3787:33;;;;;;;;-1:-1:-1;;;;;3787:33:0;;;;;;;;;;;;;3619:209;;:::o;7485:120::-;-1:-1:-1;;;;;7561:10:0;-1:-1:-1;;;7561:17:0;;7485:120::o;7676:108::-;7736:9;-1:-1:-1;;;;;7766:10:0;;-1:-1:-1;;;;;7762:14:0;;7766:10;7762:14;;;;;;7676:108;-1:-1:-1;;;7676:108:0:o;253:128::-;337:5;;;332:16;;;;324:49;;;;;-1:-1:-1;;;324:49:0;;;;;;;;;;;;-1:-1:-1;;;324:49:0;;;;;;;;;;;;;

Swarm Source

bzzr://fd6179b37986bcfdb77009ef146da91e3febfb21b3c0aa163bd84affbeecdf06
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.