Contract 0x86407bea2078ea5f5eb5a52b2caa963bc1f889da

 

Contract Overview

Balance:
0 BNB

BNB Value:
$0.00

Token:
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xbd37bf0cc913b6d4f4c466ae44a826edb1535d54a3f1fc348796a5cd9ffc425cSet Fee To104779162021-08-30 11:20:4347 days 15 hrs ago0xf78b4098180aeebf6c2b0ceef841e1b06953005b IN  0x86407bea2078ea5f5eb5a52b2caa963bc1f889da0 BNB0.000142165
0x8925d8d9e3b1cfbd498472654171ff26b749992b5df60106d19d66000064e3fcSet Fee To Sette...98828232021-08-09 14:07:3468 days 12 hrs ago0x51549179275abfdde8f9f26b5415f50714d12694 IN  0x86407bea2078ea5f5eb5a52b2caa963bc1f889da0 BNB0.000141775
0x61f7a4a744e785fca44068e7933e8fc320eaebd8afdbce08a68f99e6ec60b2e4Set Fee To97440752021-08-04 15:07:3973 days 11 hrs ago0x51549179275abfdde8f9f26b5415f50714d12694 IN  0x86407bea2078ea5f5eb5a52b2caa963bc1f889da0 BNB0.000142165
0xccccb6bf7d340e57899eda2286a24b56020ebfd66fd6ebbb07656c80ebac2673Set Fee To93973442021-07-23 3:18:4585 days 23 hrs ago0x51549179275abfdde8f9f26b5415f50714d12694 IN  0x86407bea2078ea5f5eb5a52b2caa963bc1f889da0 BNB0.000142165
0x1d15476365abe754e08621a811a184df0e1337169c0b90d7aefbbe7da1d0fec7Set Fee To93973022021-07-23 3:16:3985 days 23 hrs ago0x514de7ba2cc60af1065d269fd9716b5bd3433b10 IN  0x86407bea2078ea5f5eb5a52b2caa963bc1f889da0 BNB0.000113355
0x2d593817400a3119ed469ff5f90fcd2342b5e448001046aca5461782bbc9d995Set Fee To93868142021-07-22 18:31:4786 days 8 hrs ago0x51549179275abfdde8f9f26b5415f50714d12694 IN  0x86407bea2078ea5f5eb5a52b2caa963bc1f889da0 BNB0.000142165
0xc8a771f4bd6c6e2a36c214103650e0b9a8aef591182fb791fe601904fd9ce086Set Fee To Sette...84302722021-06-19 10:39:52119 days 16 hrs agoBabySwap: Deployer IN  0x86407bea2078ea5f5eb5a52b2caa963bc1f889da0 BNB0.000141835
0xd86610737e8b6a466887ed2e80d4dc67d259227eb0e96c92f05402e14222b7b4Set Fee To84088422021-06-18 16:40:02120 days 10 hrs agoBabySwap: Deployer IN  0x86407bea2078ea5f5eb5a52b2caa963bc1f889da0 BNB0.000170598
0x85a0a7a95160078641a6b47518de1bfb5c72120849b63b2f3c29d054344f71adSet Fee To79113972021-06-01 7:51:21137 days 19 hrs agoBabySwap: Deployer IN  0x86407bea2078ea5f5eb5a52b2caa963bc1f889da0 BNB0.000217165
0x0e308bd1dc1797ea00723384a652e1487f25e498085b72f392fee96fdbdc2d6b0x6080604079113932021-06-01 7:51:09137 days 19 hrs agoBabySwap: Deployer IN  Contract Creation0 BNB0.012651135
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x1e8c6c7c62519709230cd3db5bf37ecf987521fb64a4d034e01f94a92f5ec368118170582021-10-16 7:58:5718 hrs 59 mins ago 0x86407bea2078ea5f5eb5a52b2caa963bc1f889da  Contract Creation0 BNB
0x210ee6c2ef6078b8159f1f21bf3ce68186023603a8e468dc7e4c15af7ea4ff87118170312021-10-16 7:57:3619 hrs 1 min ago 0x86407bea2078ea5f5eb5a52b2caa963bc1f889da  Contract Creation0 BNB
0x95be5269af7719427f929e8dc24c53e97319abb6b9f5bf413cd9a307c3ddce7e118144872021-10-16 5:50:2021 hrs 8 mins ago 0x86407bea2078ea5f5eb5a52b2caa963bc1f889da  Contract Creation0 BNB
0xe9b67de7a60fa4821fcb6f067af8ea60674f30b1949d9731fe6cf25b88046080118116722021-10-16 3:29:3523 hrs 29 mins ago 0x86407bea2078ea5f5eb5a52b2caa963bc1f889da  Contract Creation0 BNB
0x3a2cd3ded8a477ccef1d69d6b36c5ab867362fff3a82f4c6bc1cf2d4bb68be61118067402021-10-15 23:20:501 day 3 hrs ago 0x86407bea2078ea5f5eb5a52b2caa963bc1f889da  Contract Creation0 BNB
0x10cf71f144925b8b9de9278ceb11f2a090b88dcd59a1ef8b904489cd67a69419118024222021-10-15 19:44:051 day 7 hrs ago 0x86407bea2078ea5f5eb5a52b2caa963bc1f889da  Contract Creation0 BNB
0x0db81bb0e6cb214bc3c154d7091b4e8eeae04f0d69abe02531d8fd12c312a3fe117798302021-10-15 0:51:592 days 2 hrs ago 0x86407bea2078ea5f5eb5a52b2caa963bc1f889da  Contract Creation0 BNB
0x5111b132a2718a24f3d091f3100992cce52b3dd5992aa200cf7a580ef3e31504117794672021-10-15 0:33:502 days 2 hrs ago 0x86407bea2078ea5f5eb5a52b2caa963bc1f889da  Contract Creation0 BNB
0x1692fa605ff2bef443005ecf460e7bd853ecef30dcf23401f477d8fd9f09d2b8117697722021-10-14 16:28:512 days 10 hrs ago 0x86407bea2078ea5f5eb5a52b2caa963bc1f889da  Contract Creation0 BNB
0xa1a51ab82d11d5aaa2bb505bb38b7d7142e26b04044a74f2849b709dbabee04a117644682021-10-14 12:01:562 days 14 hrs ago 0x86407bea2078ea5f5eb5a52b2caa963bc1f889da  Contract Creation0 BNB
0xdf629d9eed59840388f372db28161cfbf6fade96932e66cd44f3d2979c1ba097117626162021-10-14 10:28:332 days 16 hrs ago 0x86407bea2078ea5f5eb5a52b2caa963bc1f889da  Contract Creation0 BNB
0xdd5c78a3abf21196c6b0f7cdcfaa95779bc699e7b22a3a6e1031ca11ea59693a117577152021-10-14 6:22:352 days 20 hrs ago 0x86407bea2078ea5f5eb5a52b2caa963bc1f889da  Contract Creation0 BNB
0x674d53a3f7aacd8bc0df3f9822eef98649edc0a64140e84c62a1d5f4f98e4ae4117438972021-10-13 18:47:103 days 8 hrs ago 0x86407bea2078ea5f5eb5a52b2caa963bc1f889da  Contract Creation0 BNB
0x816c95581e7a20fabdccb004fe572be4bf1c0b5523aeb51a97fc440fb76a0b6b117410872021-10-13 16:26:123 days 10 hrs ago 0x86407bea2078ea5f5eb5a52b2caa963bc1f889da  Contract Creation0 BNB
0xa3911fb19b1a4242cd7abceb02fafeab35366ef98fb9de15eccb1298c87a5d3c117341252021-10-13 10:30:153 days 16 hrs ago 0x86407bea2078ea5f5eb5a52b2caa963bc1f889da  Contract Creation0 BNB
0x53f96c403152e401b9ac1de48d6a65690cd9c73e7d519acea6acdf5790d1b0a1117320292021-10-13 8:45:263 days 18 hrs ago 0x86407bea2078ea5f5eb5a52b2caa963bc1f889da  Contract Creation0 BNB
0xb8163ebb7caf6d0eba4592331a97fde5673b706a694b2f59b8d0cc43308681aa117319812021-10-13 8:42:543 days 18 hrs ago 0x86407bea2078ea5f5eb5a52b2caa963bc1f889da  Contract Creation0 BNB
0x43b8a7f35547c8a43cdaf65f098128803ff697991aa6fc3e76b02792ed4c29e1117288472021-10-13 5:50:083 days 21 hrs ago 0x86407bea2078ea5f5eb5a52b2caa963bc1f889da  Contract Creation0 BNB
0xefc7fc1ccd552019102acfabacaaa7445689658bd25db353aa03d496e9816976116813362021-10-11 13:25:575 days 13 hrs ago 0x86407bea2078ea5f5eb5a52b2caa963bc1f889da  Contract Creation0 BNB
0xac5ff9134fefdcc32ec3af1fb581608857cb9028c051190a4a1e3d135abc5c3c116769622021-10-11 9:46:255 days 17 hrs ago 0x86407bea2078ea5f5eb5a52b2caa963bc1f889da  Contract Creation0 BNB
0xb74a1916b4be99bd72cb8b0ee16826e56fafd077f0a37e46eb239ee6437f5d58116756212021-10-11 8:39:225 days 18 hrs ago 0x86407bea2078ea5f5eb5a52b2caa963bc1f889da  Contract Creation0 BNB
0xee53a940db055b4f4b2c42b367b25c0a95d993153b735533b41c6536812452b2116755752021-10-11 8:37:045 days 18 hrs ago 0x86407bea2078ea5f5eb5a52b2caa963bc1f889da  Contract Creation0 BNB
0x2547ebe5fd32c29eeccfc8e9c93dc2dc2542779dc60faa1ffbfad89f86f11804116746652021-10-11 7:51:215 days 19 hrs ago 0x86407bea2078ea5f5eb5a52b2caa963bc1f889da  Contract Creation0 BNB
0xb4e00f888ee1b2343e483a00f495f24e34e0de017cd69905b821df5b95250d68116736762021-10-11 7:01:545 days 19 hrs ago 0x86407bea2078ea5f5eb5a52b2caa963bc1f889da  Contract Creation0 BNB
0xda57b64f055f1cb83ab0228e969f53657b272fe61658c0b06d9dfd113376a413116558952021-10-10 16:11:436 days 10 hrs ago 0x86407bea2078ea5f5eb5a52b2caa963bc1f889da  Contract Creation0 BNB
[ Download CSV Export 
Loading

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

Contract Name:
BabyFactory

Compiler Version
v0.7.4+commit.3f05b770

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 12 : IBabyCallee.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.5.0;

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

File 2 of 12 : IBabyERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.5.0;

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

File 3 of 12 : IBabyFactory.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.5.0;

interface IBabyFactory {
    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 expectPairFor(address token0, address token1) external view returns (address);
    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 12 : IBabyPair.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.5.0;

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

File 5 of 12 : IERC20.sol
// SPDX-License-Identifier: MIT

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

File 6 of 12 : BabyLibrary.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.5.0;

import '../interfaces/IBabyPair.sol';
import "./SafeMath.sol";

library BabyLibrary {
    using SafeMath for uint;

    // returns sorted token addresses, used to handle return values from pairs sorted in this order
    function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) {
        require(tokenA != tokenB, 'PancakeLibrary: IDENTICAL_ADDRESSES');
        (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
        require(token0 != address(0), 'PancakeLibrary: ZERO_ADDRESS');
    }

    // calculates the CREATE2 address for a pair without making any external calls
    function pairFor(address factory, address tokenA, address tokenB) internal pure returns (address pair) {
        (address token0, address token1) = sortTokens(tokenA, tokenB);
        pair = address(uint(keccak256(abi.encodePacked(
                hex'ff',
                factory,
                keccak256(abi.encodePacked(token0, token1)),
                hex'48c8bec5512d397a5d512fbb7d83d515e7b6d91e9838730bd1aa1b16575da7f5'
            ))));
    }

    // fetches and sorts the reserves for a pair
    function getReserves(address factory, address tokenA, address tokenB) internal view returns (uint reserveA, uint reserveB) {
        (address token0,) = sortTokens(tokenA, tokenB);
        pairFor(factory, tokenA, tokenB);
        (uint reserve0, uint reserve1,) = IBabyPair(pairFor(factory, tokenA, tokenB)).getReserves();
        (reserveA, reserveB) = tokenA == token0 ? (reserve0, reserve1) : (reserve1, reserve0);
    }

    // given some amount of an asset and pair reserves, returns an equivalent amount of the other asset
    function quote(uint amountA, uint reserveA, uint reserveB) internal pure returns (uint amountB) {
        require(amountA > 0, 'PancakeLibrary: INSUFFICIENT_AMOUNT');
        require(reserveA > 0 && reserveB > 0, 'PancakeLibrary: INSUFFICIENT_LIQUIDITY');
        amountB = amountA.mul(reserveB) / reserveA;
    }

    // given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) internal pure returns (uint amountOut) {
        require(amountIn > 0, 'PancakeLibrary: INSUFFICIENT_INPUT_AMOUNT');
        require(reserveIn > 0 && reserveOut > 0, 'PancakeLibrary: INSUFFICIENT_LIQUIDITY');
        uint amountInWithFee = amountIn.mul(997);
        uint numerator = amountInWithFee.mul(reserveOut);
        uint denominator = reserveIn.mul(1000).add(amountInWithFee);
        amountOut = numerator / denominator;
    }

    // given an output amount of an asset and pair reserves, returns a required input amount of the other asset
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) internal pure returns (uint amountIn) {
        require(amountOut > 0, 'PancakeLibrary: INSUFFICIENT_OUTPUT_AMOUNT');
        require(reserveIn > 0 && reserveOut > 0, 'PancakeLibrary: INSUFFICIENT_LIQUIDITY');
        uint numerator = reserveIn.mul(amountOut).mul(1000);
        uint denominator = reserveOut.sub(amountOut).mul(997);
        amountIn = (numerator / denominator).add(1);
    }

    // performs chained getAmountOut calculations on any number of pairs
    function getAmountsOut(address factory, uint amountIn, address[] memory path) internal view returns (uint[] memory amounts) {
        require(path.length >= 2, 'PancakeLibrary: INVALID_PATH');
        amounts = new uint[](path.length);
        amounts[0] = amountIn;
        for (uint i; i < path.length - 1; i++) {
            (uint reserveIn, uint reserveOut) = getReserves(factory, path[i], path[i + 1]);
            amounts[i + 1] = getAmountOut(amounts[i], reserveIn, reserveOut);
        }
    }

    // performs chained getAmountIn calculations on any number of pairs
    function getAmountsIn(address factory, uint amountOut, address[] memory path) internal view returns (uint[] memory amounts) {
        require(path.length >= 2, 'PancakeLibrary: INVALID_PATH');
        amounts = new uint[](path.length);
        amounts[amounts.length - 1] = amountOut;
        for (uint i = path.length - 1; i > 0; i--) {
            (uint reserveIn, uint reserveOut) = getReserves(factory, path[i - 1], path[i]);
            amounts[i - 1] = getAmountIn(amounts[i], reserveIn, reserveOut);
        }
    }
}

File 7 of 12 : Math.sol
// SPDX-License-Identifier: MIT

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

File 8 of 12 : SafeMath.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.4.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, 'SafeMath: addition overflow');

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, 'SafeMath: subtraction overflow');
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, 'SafeMath: multiplication overflow');

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, 'SafeMath: division by zero');
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, 'SafeMath: modulo by zero');
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }

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

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

File 9 of 12 : UQ112x112.sol
// SPDX-License-Identifier: MIT

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

File 10 of 12 : BabyFactory.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.5.16;

import './BabyPair.sol';
import '../libraries/BabyLibrary.sol';

contract BabyFactory {
    bytes32 public constant INIT_CODE_PAIR_HASH = keccak256(abi.encodePacked(type(BabyPair).creationCode));

    address public feeTo;
    address public feeToSetter;

    mapping(address => mapping(address => address)) public getPair;
    address[] public allPairs;

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

    constructor(address _feeToSetter) {
        feeToSetter = _feeToSetter;
    }

    function allPairsLength() external view returns (uint) {
        return allPairs.length;
    }

    function expectPairFor(address token0, address token1) public view returns (address) {
        return BabyLibrary.pairFor(address(this), token0, token1);
    }

    function createPair(address tokenA, address tokenB) external returns (address pair) {
        require(tokenA != tokenB, 'Baby: IDENTICAL_ADDRESSES');
        (address token0, address token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
        require(token0 != address(0), 'Baby: ZERO_ADDRESS');
        require(getPair[token0][token1] == address(0), 'Baby: PAIR_EXISTS'); // single check is sufficient
        bytes memory bytecode = type(BabyPair).creationCode;
        bytes32 salt = keccak256(abi.encodePacked(token0, token1));
        assembly {
            pair := create2(0, add(bytecode, 32), mload(bytecode), salt)
        }
        IBabyPair(pair).initialize(token0, token1);
        getPair[token0][token1] = pair;
        getPair[token1][token0] = pair; // populate mapping in the reverse direction
        allPairs.push(pair);
        emit PairCreated(token0, token1, pair, allPairs.length);
    }

    function setFeeTo(address _feeTo) external {
        require(msg.sender == feeToSetter, 'Baby: FORBIDDEN');
        feeTo = _feeTo;
    }

    function setFeeToSetter(address _feeToSetter) external {
        require(msg.sender == feeToSetter, 'Baby: FORBIDDEN');
        feeToSetter = _feeToSetter;
    }
}

File 11 of 12 : BabyPair.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.5.16;

import '../interfaces/IBabyPair.sol';
import '../token/BabyERC20.sol';
import '../libraries/Math.sol';
import '../libraries/UQ112x112.sol';
import '../interfaces/IERC20.sol';
import '../interfaces/IBabyFactory.sol';
import '../interfaces/IBabyCallee.sol';

contract BabyPair is BabyERC20 {
    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, 'Baby: 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))), 'Baby: 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() {
        factory = msg.sender;
    }

    // called once by the factory at time of deployment
    function initialize(address _token0, address _token1) external {
        require(msg.sender == factory, 'Baby: 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), 'Baby: 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 = IBabyFactory(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(3).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 = 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, 'Baby: 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
        require(_totalSupply != 0, "influence balance");
        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, 'Baby: 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, 'Baby: INSUFFICIENT_OUTPUT_AMOUNT');
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        require(amount0Out < _reserve0 && amount1Out < _reserve1, 'Baby: 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, 'Baby: 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) IBabyCallee(to).babyCall(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, 'Baby: INSUFFICIENT_INPUT_AMOUNT');
        { // scope for reserve{0,1}Adjusted, avoids stack too deep errors
        uint balance0Adjusted = balance0.mul(1000).sub(amount0In.mul(2));
        uint balance1Adjusted = balance1.mul(1000).sub(amount1In.mul(2));
        require(balance0Adjusted.mul(balance1Adjusted) >= uint(_reserve0).mul(_reserve1).mul(1000**2), 'Baby: 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);
    }
}

File 12 of 12 : BabyERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.5.16;

import '../interfaces/IBabyERC20.sol';
import '../libraries/SafeMath.sol';

contract BabyERC20 is IBabyERC20 {
    using SafeMath for uint256;

    string public override constant name = 'Baby LPs';
    string public override constant symbol = 'Baby-LP';
    uint8 public override constant decimals = 18;
    uint  public override totalSupply;
    mapping(address => uint) public override balanceOf;
    mapping(address => mapping(address => uint)) public override allowance;

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

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

    constructor() {
        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 override returns (bool) {
        _approve(msg.sender, spender, value);
        return true;
    }

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

    function transferFrom(address from, address to, uint value) external override 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 override {
        require(deadline >= block.timestamp, 'Baby: 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, 'Baby: INVALID_SIGNATURE');
        _approve(owner, spender, value);
    }
}

Settings
{
  "evmVersion": "istanbul",
  "libraries": {},
  "metadata": {
    "bytecodeHash": "ipfs",
    "useLiteralContent": true
  },
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "remappings": [],
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_feeToSetter","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token0","type":"address"},{"indexed":true,"internalType":"address","name":"token1","type":"address"},{"indexed":false,"internalType":"address","name":"pair","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"PairCreated","type":"event"},{"inputs":[],"name":"INIT_CODE_PAIR_HASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allPairs","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allPairsLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"}],"name":"createPair","outputs":[{"internalType":"address","name":"pair","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"}],"name":"expectPairFor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeTo","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeToSetter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"getPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_feeTo","type":"address"}],"name":"setFeeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_feeToSetter","type":"address"}],"name":"setFeeToSetter","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b50604051612cca380380612cca8339818101604052602081101561003357600080fd5b5051600180546001600160a01b0319166001600160a01b03909216919091179055612c67806100636000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806368942ce41161006657806368942ce41461010e578063a2e74af61461013c578063c9c6539614610164578063e6a4390514610192578063f46901ed146101c05761009e565b8063017e7e58146100a3578063094b7415146100c75780631e3dd18b146100cf578063574f2ba3146100ec5780635855a25a14610106575b600080fd5b6100ab6101e6565b604080516001600160a01b039092168252519081900360200190f35b6100ab6101f5565b6100ab600480360360208110156100e557600080fd5b5035610204565b6100f461022e565b60408051918252519081900360200190f35b6100f4610234565b6100ab6004803603604081101561012457600080fd5b506001600160a01b03813581169160200135166102c7565b6101626004803603602081101561015257600080fd5b50356001600160a01b03166102db565b005b6100ab6004803603604081101561017a57600080fd5b506001600160a01b038135811691602001351661034e565b6100ab600480360360408110156101a857600080fd5b506001600160a01b0381358116916020013516610669565b610162600480360360208110156101d657600080fd5b50356001600160a01b031661068f565b6000546001600160a01b031681565b6001546001600160a01b031681565b6003818154811061021457600080fd5b6000918252602090912001546001600160a01b0316905081565b60035490565b604051610243602082016108a0565b6020820181038252601f19601f820116604052506040516020018082805190602001908083835b602083106102895780518252601f19909201916020918201910161026a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012081565b60006102d4308484610702565b9392505050565b6001546001600160a01b0316331461032c576040805162461bcd60e51b815260206004820152600f60248201526e2130b13c9d102327a92124a22222a760891b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000816001600160a01b0316836001600160a01b031614156103b7576040805162461bcd60e51b815260206004820152601960248201527f426162793a204944454e544943414c5f41444452455353455300000000000000604482015290519081900360640190fd5b600080836001600160a01b0316856001600160a01b0316106103da5783856103dd565b84845b90925090506001600160a01b038216610432576040805162461bcd60e51b8152602060048201526012602482015271426162793a205a45524f5f4144445245535360701b604482015290519081900360640190fd5b6001600160a01b038281166000908152600260209081526040808320858516845290915290205416156104a0576040805162461bcd60e51b8152602060048201526011602482015270426162793a20504149525f45584953545360781b604482015290519081900360640190fd5b6060604051806020016104b2906108a0565b6020820181038252601f19601f8201166040525090506000838360405160200180836001600160a01b031660601b8152601401826001600160a01b031660601b815260140192505050604051602081830303815290604052805190602001209050808251602084016000f59450846001600160a01b031663485cc95585856040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b0316815260200192505050600060405180830381600087803b15801561057f57600080fd5b505af1158015610593573d6000803e3d6000fd5b505050506001600160a01b0384811660008181526002602081815260408084208987168086529083528185208054978d166001600160a01b031998891681179091559383528185208686528352818520805488168517905560038054600181018255958190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90950180549097168417909655925483519283529082015281517f0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9929181900390910190a35050505092915050565b60026020908152600092835260408084209091529082529020546001600160a01b031681565b6001546001600160a01b031633146106e0576040805162461bcd60e51b815260206004820152600f60248201526e2130b13c9d102327a92124a22222a760891b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080600061071185856107c2565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501206001600160f81b031960688401529a90941b9093166069840152607d8301989098527f48c8bec5512d397a5d512fbb7d83d515e7b6d91e9838730bd1aa1b16575da7f5609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b600080826001600160a01b0316846001600160a01b031614156108165760405162461bcd60e51b8152600401808060200182810382526023815260200180612c0f6023913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610610836578284610839565b83835b90925090506001600160a01b038216610899576040805162461bcd60e51b815260206004820152601c60248201527f50616e63616b654c6962726172793a205a45524f5f4144445245535300000000604482015290519081900360640190fd5b9250929050565b612361806108ae8339019056fe60806040526001600c5534801561001557600080fd5b50604080518082018252600881526742616279204c507360c01b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527ff2af0fab7d1e24a43eb09fbcee8483ea7a053194f6a00a9b241b717441ba0019818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b0319163317905561225b806101066000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a714610534578063d505accf1461053c578063dd62ed3e1461058d578063fff6cae9146105bb576101a9565b8063ba9a7a56146104fe578063bc25cf7714610506578063c45a01551461052c576101a9565b80637ecebe00116100d35780637ecebe001461046557806389afcb441461048b57806395d89b41146104ca578063a9059cbb146104d2576101a9565b80636a6278421461041157806370a08231146104375780637464fc3d1461045d576101a9565b806323b872dd116101665780633644e515116101405780633644e515146103cb578063485cc955146103d35780635909c0d5146104015780635a3d549314610409576101a9565b806323b872dd1461036f57806330adf81f146103a5578063313ce567146103ad576101a9565b8063022c0d9f146101ae57806306fdde031461023c5780630902f1ac146102b9578063095ea7b3146102f15780630dfe16811461033157806318160ddd14610355575b600080fd5b61023a600480360360808110156101c457600080fd5b8135916020810135916001600160a01b0360408301351691908101906080810160608201356401000000008111156101fb57600080fd5b82018360208201111561020d57600080fd5b8035906020019184600183028401116401000000008311171561022f57600080fd5b5090925090506105c3565b005b610244610afe565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561027e578181015183820152602001610266565b50505050905090810190601f1680156102ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102c1610b22565b604080516001600160701b03948516815292909316602083015263ffffffff168183015290519081900360600190f35b61031d6004803603604081101561030757600080fd5b506001600160a01b038135169060200135610b4c565b604080519115158252519081900360200190f35b610339610b63565b604080516001600160a01b039092168252519081900360200190f35b61035d610b72565b60408051918252519081900360200190f35b61031d6004803603606081101561038557600080fd5b506001600160a01b03813581169160208101359091169060400135610b78565b61035d610c0c565b6103b5610c30565b6040805160ff9092168252519081900360200190f35b61035d610c35565b61023a600480360360408110156103e957600080fd5b506001600160a01b0381358116916020013516610c3b565b61035d610cba565b61035d610cc0565b61035d6004803603602081101561042757600080fd5b50356001600160a01b0316610cc6565b61035d6004803603602081101561044d57600080fd5b50356001600160a01b0316610f9d565b61035d610faf565b61035d6004803603602081101561047b57600080fd5b50356001600160a01b0316610fb5565b6104b1600480360360208110156104a157600080fd5b50356001600160a01b0316610fc7565b6040805192835260208301919091528051918290030190f35b61024461139c565b61031d600480360360408110156104e857600080fd5b506001600160a01b0381351690602001356113bf565b61035d6113cc565b61023a6004803603602081101561051c57600080fd5b50356001600160a01b03166113d2565b61033961153f565b61033961154e565b61023a600480360360e081101561055257600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c0013561155d565b61035d600480360360408110156105a357600080fd5b506001600160a01b038135811691602001351661175a565b61023a611777565b600c54600114610609576040805162461bcd60e51b815260206004820152600c60248201526b1098589e4e881313d0d2d15160a21b604482015290519081900360640190fd5b6000600c558415158061061c5750600084115b61066d576040805162461bcd60e51b815260206004820181905260248201527f426162793a20494e53554646494349454e545f4f55545055545f414d4f554e54604482015290519081900360640190fd5b600080610678610b22565b5091509150816001600160701b03168710801561069d5750806001600160701b031686105b6106ee576040805162461bcd60e51b815260206004820152601c60248201527f426162793a20494e53554646494349454e545f4c495155494449545900000000604482015290519081900360640190fd5b60065460075460009182916001600160a01b0391821691908116908916821480159061072c5750806001600160a01b0316896001600160a01b031614155b610770576040805162461bcd60e51b815260206004820152601060248201526f426162793a20494e56414c49445f544f60801b604482015290519081900360640190fd5b8a1561078157610781828a8d6118d4565b891561079257610792818a8c6118d4565b861561084457886001600160a01b031663110c03de338d8d8c8c6040518663ffffffff1660e01b815260040180866001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561082b57600080fd5b505af115801561083f573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561088a57600080fd5b505afa15801561089e573d6000803e3d6000fd5b505050506040513d60208110156108b457600080fd5b5051604080516370a0823160e01b815230600482015290519195506001600160a01b038316916370a0823191602480820192602092909190829003018186803b15801561090057600080fd5b505afa158015610914573d6000803e3d6000fd5b505050506040513d602081101561092a57600080fd5b5051925060009150506001600160701b0385168a9003831161094d57600061095c565b89856001600160701b03160383035b9050600089856001600160701b0316038311610979576000610988565b89856001600160701b03160383035b905060008211806109995750600081115b6109ea576040805162461bcd60e51b815260206004820152601f60248201527f426162793a20494e53554646494349454e545f494e5055545f414d4f554e5400604482015290519081900360640190fd5b6000610a0c6109fa846002611a66565b610a06876103e8611a66565b90611ac6565b90506000610a1e6109fa846002611a66565b9050610a43620f4240610a3d6001600160701b038b8116908b16611a66565b90611a66565b610a4d8383611a66565b1015610a8a576040805162461bcd60e51b8152602060048201526007602482015266426162793a204b60c81b604482015290519081900360640190fd5b5050610a9884848888611b08565b60408051838152602081018390528082018d9052606081018c905290516001600160a01b038b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280600881526020016742616279204c507360c01b81525081565b6008546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b6000610b59338484611cc2565b5060015b92915050565b6006546001600160a01b031681565b60005481565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610bf7576001600160a01b0384166000908152600260209081526040808320338452909152902054610bd29083611ac6565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610c02848484611d24565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b6005546001600160a01b03163314610c8c576040805162461bcd60e51b815260206004820152600f60248201526e2130b13c9d102327a92124a22222a760891b604482015290519081900360640190fd5b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c54600114610d0e576040805162461bcd60e51b815260206004820152600c60248201526b1098589e4e881313d0d2d15160a21b604482015290519081900360640190fd5b6000600c81905580610d1e610b22565b50600654604080516370a0823160e01b815230600482015290519395509193506000926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610d7257600080fd5b505afa158015610d86573d6000803e3d6000fd5b505050506040513d6020811015610d9c57600080fd5b5051600754604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610def57600080fd5b505afa158015610e03573d6000803e3d6000fd5b505050506040513d6020811015610e1957600080fd5b505190506000610e32836001600160701b038716611ac6565b90506000610e49836001600160701b038716611ac6565b90506000610e578787611dd2565b60005490915080610e8e57610e7a6103e8610a06610e758787611a66565b611f12565b9850610e8960006103e8611f64565b610ed1565b610ece6001600160701b038916610ea58684611a66565b81610eac57fe5b046001600160701b038916610ec18685611a66565b81610ec857fe5b04611fee565b98505b60008911610f105760405162461bcd60e51b81526004018080602001828103825260238152602001806122036023913960400191505060405180910390fd5b610f1a8a8a611f64565b610f2686868a8a611b08565b8115610f5057600854610f4c906001600160701b0380821691600160701b900416611a66565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c54600114611010576040805162461bcd60e51b815260206004820152600c60248201526b1098589e4e881313d0d2d15160a21b604482015290519081900360640190fd5b6000600c81905580611020610b22565b50600654600754604080516370a0823160e01b815230600482015290519496509294506001600160a01b039182169391169160009184916370a08231916024808301926020929190829003018186803b15801561107c57600080fd5b505afa158015611090573d6000803e3d6000fd5b505050506040513d60208110156110a657600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038516916370a08231916024808301926020929190829003018186803b1580156110f457600080fd5b505afa158015611108573d6000803e3d6000fd5b505050506040513d602081101561111e57600080fd5b50513060009081526001602052604081205491925061113d8888611dd2565b60005490915080611189576040805162461bcd60e51b8152602060048201526011602482015270696e666c75656e63652062616c616e636560781b604482015290519081900360640190fd5b806111948487611a66565b8161119b57fe5b049a50806111a98486611a66565b816111b057fe5b04995060008b1180156111c3575060008a115b6111fe5760405162461bcd60e51b81526004018080602001828103825260238152602001806121bf6023913960400191505060405180910390fd5b6112083084612004565b611213878d8d6118d4565b61121e868d8c6118d4565b604080516370a0823160e01b815230600482015290516001600160a01b038916916370a08231916024808301926020929190829003018186803b15801561126457600080fd5b505afa158015611278573d6000803e3d6000fd5b505050506040513d602081101561128e57600080fd5b5051604080516370a0823160e01b815230600482015290519196506001600160a01b038816916370a0823191602480820192602092909190829003018186803b1580156112da57600080fd5b505afa1580156112ee573d6000803e3d6000fd5b505050506040513d602081101561130457600080fd5b5051935061131485858b8b611b08565b811561133e5760085461133a906001600160701b0380821691600160701b900416611a66565b600b555b604080518c8152602081018c905281516001600160a01b038f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b604051806040016040528060078152602001660426162792d4c560cc1b81525081565b6000610b59338484611d24565b6103e881565b600c54600114611418576040805162461bcd60e51b815260206004820152600c60248201526b1098589e4e881313d0d2d15160a21b604482015290519081900360640190fd5b6000600c55600654600754600854604080516370a0823160e01b815230600482015290516001600160a01b0394851694909316926114c192859287926114bc926001600160701b03169185916370a0823191602480820192602092909190829003018186803b15801561148a57600080fd5b505afa15801561149e573d6000803e3d6000fd5b505050506040513d60208110156114b457600080fd5b505190611ac6565b6118d4565b61153581846114bc6008600e9054906101000a90046001600160701b03166001600160701b0316856001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561148a57600080fd5b50506001600c5550565b6005546001600160a01b031681565b6007546001600160a01b031681565b428410156115a2576040805162461bcd60e51b815260206004820152600d60248201526c1098589e4e8811561412549151609a1b604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa1580156116bd573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906116f35750886001600160a01b0316816001600160a01b0316145b611744576040805162461bcd60e51b815260206004820152601760248201527f426162793a20494e56414c49445f5349474e4154555245000000000000000000604482015290519081900360640190fd5b61174f898989611cc2565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c546001146117bd576040805162461bcd60e51b815260206004820152600c60248201526b1098589e4e881313d0d2d15160a21b604482015290519081900360640190fd5b6000600c55600654604080516370a0823160e01b815230600482015290516118cd926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561180e57600080fd5b505afa158015611822573d6000803e3d6000fd5b505050506040513d602081101561183857600080fd5b5051600754604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561188557600080fd5b505afa158015611899573d6000803e3d6000fd5b505050506040513d60208110156118af57600080fd5b50516008546001600160701b0380821691600160701b900416611b08565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b602083106119815780518252601f199092019160209182019101611962565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146119e3576040519150601f19603f3d011682016040523d82523d6000602084013e6119e8565b606091505b5091509150818015611a16575080511580611a165750808060200190516020811015611a1357600080fd5b50515b611a5f576040805162461bcd60e51b81526020600482015260156024820152741098589e4e881514905394d1915497d19052531151605a1b604482015290519081900360640190fd5b5050505050565b600082611a7557506000610b5d565b82820282848281611a8257fe5b0414611abf5760405162461bcd60e51b81526004018080602001828103825260218152602001806121e26021913960400191505060405180910390fd5b9392505050565b6000611abf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612096565b6001600160701b038411801590611b2657506001600160701b038311155b611b68576040805162461bcd60e51b815260206004820152600e60248201526d426162793a204f564552464c4f5760901b604482015290519081900360640190fd5b60085463ffffffff42811691600160e01b90048116820390811615801590611b9857506001600160701b03841615155b8015611bac57506001600160701b03831615155b15611c17578063ffffffff16611bd485611bc58661212d565b6001600160e01b03169061213f565b600980546001600160e01b03929092169290920201905563ffffffff8116611bff84611bc58761212d565b600a80546001600160e01b0392909216929092020190555b600880546dffffffffffffffffffffffffffff19166001600160701b03888116919091176dffffffffffffffffffffffffffff60701b1916600160701b8883168102919091176001600160e01b0316600160e01b63ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316600090815260016020526040902054611d479082611ac6565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611d769082612164565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b158015611e2357600080fd5b505afa158015611e37573d6000803e3d6000fd5b505050506040513d6020811015611e4d57600080fd5b5051600b546001600160a01b038216158015945091925090611efe578015611ef9576000611e8a610e756001600160701b03888116908816611a66565b90506000611e9783611f12565b905080821115611ef6576000611eb9611eb08484611ac6565b60005490611a66565b90506000611ed283611ecc866003611a66565b90612164565b90506000818381611edf57fe5b0490508015611ef257611ef28782611f64565b5050505b50505b611f0a565b8015611f0a576000600b555b505092915050565b60006003821115611f55575080600160028204015b81811015611f4f57809150600281828581611f3e57fe5b040181611f4757fe5b049050611f27565b50611f5f565b8115611f5f575060015b919050565b600054611f719082612164565b60009081556001600160a01b038316815260016020526040902054611f969082612164565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000818310611ffd5781611abf565b5090919050565b6001600160a01b0382166000908152600160205260409020546120279082611ac6565b6001600160a01b0383166000908152600160205260408120919091555461204e9082611ac6565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b600081848411156121255760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156120ea5781810151838201526020016120d2565b50505050905090810190601f1680156121175780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160701b0316600160701b0290565b60006001600160701b0382166001600160e01b0384168161215c57fe5b049392505050565b600082820183811015611abf576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fdfe426162793a20494e53554646494349454e545f4c49515549444954595f4255524e4544536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77426162793a20494e53554646494349454e545f4c49515549444954595f4d494e544544a2646970667358221220d62a16710db5d5c1c2b9e5d18733ac66aae6371399c94c4aafaa2d10e4a60cac64736f6c6343000704003350616e63616b654c6962726172793a204944454e544943414c5f414444524553534553a2646970667358221220ab37881f6829d46766605e0110f6ac62bc9d858084eba6703eaa50d13677510e64736f6c63430007040033000000000000000000000000c0a56aee755bd397235367008f7c2c4599768395

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