Contract 0xbd67d157502a23309db761c41965600c2ec788b2 5

 

Contract Overview

Just Liquidity: Router
Balance:
0 BNB

BNB Value:
$0.00

Token:
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xe80aac8856bec16688a5431656c04fbe5139adfee0b9d33c868cb247865eb15cSwap Exact Token...119611432021-10-21 9:22:4451 secs ago0x057c499f6e7ece2ef75abe1a47cd68d9334d41eb IN  Just Liquidity: Router0 BNB0.000567465
0x36b65baa17c9cd3c911a02ec92c2343b6f6fb9097e8510a2437d9790dfceb5e4Swap Exact Token...119609122021-10-21 9:10:4312 mins ago0xa061f9482be6d81c26cd7df2139f43b746231e2c IN  Just Liquidity: Router0 BNB0.000567345
0x13178edac82cee61d870e1b9444ad2929c585957f7ab3639c377555087a4cde8Swap Exact BNB F...119609102021-10-21 9:10:3712 mins ago0x30454b50668495bd8267b58ab37bcd6bdb1e142a IN  Just Liquidity: Router0.025 BNB0.000858035
0x024e6228358d73171cb37a7a141c00b5aa1a5078bc299998c79cd9b9e52e16d2Swap Exact Token...119607202021-10-21 9:00:5822 mins ago0xfdf1d2c1f4b57b0cc602c9cf14e40dedf822466f IN  Just Liquidity: Router0 BNB0.000858595
0x20b29c4b21f32a102c9908965cb85c598e51e7edb2916dc3511723ab7d3383c2Swap BNB For Exa...119606812021-10-21 8:58:4724 mins ago0xcd4e84e3b36ce96a0261f58026bd6533a2b52ff7 IN  Just Liquidity: Router0.053094942000445 BNB0.000590905
0xa3da2c094f604a3e553d22cce9f633681c67483ff17d1e482165f95942d9fdd3Swap Exact Token...119606642021-10-21 8:57:5125 mins ago0xc7d82411d63e7dea560989d9e1dbea00bd5629cb IN  Just Liquidity: Router0 BNB0.000567405
0xaf98a555d7782b19728883503ccea58fcc31bc17d1ace903a90dc13059129d75Swap Exact BNB F...119606362021-10-21 8:56:2127 mins ago0x19c83e711f47469c989f39ba78bc7ee7c9b1502c IN  Just Liquidity: Router0.54 BNB0.00055123
0x32fd884e8b94e034b734bb8a27a9cccf25ceb60ad5ea9456bc63c6f3470bf681Swap Exact Token...119606242021-10-21 8:55:4127 mins ago0xd4987858b2a7dd390aee62163b6cb1b8da002841 IN  Just Liquidity: Router0 BNB0.00077067
0x9ef4e3f0614aadfd8d59d61b2e19245f8331aa00b5e06a9b2c557872bb419f1dSwap Exact Token...119605982021-10-21 8:54:0629 mins ago0x1c1df322fc0be2387bb7bcb9d310f7a82df11eab IN  Just Liquidity: Router0 BNB0.000783475
0x896082ef3eeb86f181efe0c5784eeb129d1bba96031d65c6b6af9a60b97afed5Swap Exact Token...119602712021-10-21 8:37:0646 mins ago0xe12868be7a64fcbb5775622ae6ba08e55d04d325 IN  Just Liquidity: Router0 BNB0.000477725
0x4b086bc123b97e5ac54bf8cd0dd44fc15f9a60f4685fc82769ae74da9869a260Swap Exact BNB F...119600472021-10-21 8:25:5457 mins ago0xc8189b2f763d231823171c683de529d4451af404 IN  Just Liquidity: Router0.028 BNB0.000933035
0xd66bfcf0b2b0c1336a9db701c1bbe28acd900bd38a3c34c33e1d98000153b568Swap Exact Token...119599332021-10-21 8:19:311 hr 4 mins ago0xc8189b2f763d231823171c683de529d4451af404 IN  Just Liquidity: Router0 BNB0.000642225
0x4a4f9d9486d0bd200187c54791499ae63a483cf7f910fa5bc3b090b3420e2b74Swap Exact Token...119596822021-10-21 8:06:561 hr 16 mins ago0x17a623083b3b3cabb8bee17f766013e39c84bdaa IN  Just Liquidity: Router0 BNB0.001257395
0x5678488668867f709f961cd6e3c7177f806c47e2bbaad129c6f20f4746889638Swap Exact BNB F...119596312021-10-21 8:04:231 hr 19 mins ago0x52fbfd9a362cfec3edf72afa53625af7a49ab60f IN  Just Liquidity: Router0.611937316277416 BNB0.00055123
0x1992d1c32bd6f48104b2b0df69da99e182c6d3f98cbcb759d06d957c6a9fb9daSwap Exact Token...119593322021-10-21 7:49:261 hr 34 mins ago0x85e84230daa907a9247028f7f6fe157c0007eb0e IN  Just Liquidity: Router0 BNB0.000567285
0xbb1c87364c3136b61f2e0b8f4ceb36680aae56663163da17e1638fa47236b3f0Swap Exact Token...119593282021-10-21 7:49:141 hr 34 mins ago0x82094aa852cd5f4fe93e3b5a0b025b8af40490c0 IN  Just Liquidity: Router0 BNB0.000567695
0x35640dcfc6a584e524367d2484fac2a731bcc5c53760560ccbcf488398913957Swap Exact Token...119592712021-10-21 7:46:231 hr 37 mins ago0xd1a1cd9055e77816083be1fe4abb8e64271c76d1 IN  Just Liquidity: Router0 BNB0.001225371
0xadce74373b56d8b09990d24fb1001b4dbcda9e2f4a157d8bbb9eea48102a679bSwap Tokens For ...119592572021-10-21 7:45:411 hr 37 mins ago0xc1c66549e1b290ea48344fbdeb1f865fc8811376 IN  Just Liquidity: Router0 BNB0.000627375
0xf0ae80e35edc35b46c2b5e5cd990e8e13891005c35513d6b6ffbadd0828c9c85Swap Exact Token...119592512021-10-21 7:45:231 hr 38 mins ago0x266d0b3b6b1801e73e5443ada67c4e10e79744dc IN  Just Liquidity: Router0 BNB0.000859605
0xf3fc0c900f2ec614687a3a217737089594384d4035a4da625daabea6e58a43d3Swap Exact Token...119592022021-10-21 7:42:561 hr 40 mins ago0x20dc7a56eaf2fab284c3a914580e70329b6eca15 IN  Just Liquidity: Router0 BNB0.000859605
0x2e4d096fd5175a6c2a033f160857b574220caa819b44fd19f586bbc892367760Swap Exact Token...119591582021-10-21 7:40:441 hr 42 mins ago0x3e47eb5caefa07bd62b0d32b2ac7833c4fa918e0 IN  Just Liquidity: Router0 BNB0.000642225
0x2aad9640c31998da0f970462566c1c21e89d5bd764808a6f4f17ad8064a20686Swap Exact Token...119590432021-10-21 7:34:591 hr 48 mins ago0x80f4c7f04ccda29e724146b522a134f93c8c48a2 IN  Just Liquidity: Router0 BNB0.00047713
0xd8b6e944d7a827f385cebaa812d399aeefa1dc191ba855206b62f6c537ee9673Swap Tokens For ...119589622021-10-21 7:30:561 hr 52 mins ago0xb8c3405905f02c9c67a5129d23303202f53c239b IN  Just Liquidity: Router0 BNB0.000706981
0xdcb7d9d258e9e52cba0edef9b42a3619d5d12e69cde3e708d5942bf607c50b20Swap Exact Token...119588662021-10-21 7:26:081 hr 57 mins ago0x9d7c996495d9a5316dd85f59062fcf4985e37d49 IN  Just Liquidity: Router0 BNB0.000875455
0x0d4efd7dc93073179e4ab2d06fbf8a6141633dd67cc50ad1d263bafaac8f416cSwap Exact Token...119588642021-10-21 7:26:021 hr 57 mins ago0x512150d7688f017997d42f512663d9549c218603 IN  Just Liquidity: Router0 BNB0.000870815
[ Download CSV Export 

OVERVIEW

JulSwap offers the same trading engine and analytics as Uniswap and some additional features from Sushiswap.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x36b65baa17c9cd3c911a02ec92c2343b6f6fb9097e8510a2437d9790dfceb5e4119609122021-10-21 9:10:4312 mins ago Just Liquidity: Router0xa061f9482be6d81c26cd7df2139f43b746231e2c0.003461876146263185 BNB
0x36b65baa17c9cd3c911a02ec92c2343b6f6fb9097e8510a2437d9790dfceb5e4119609122021-10-21 9:10:4312 mins ago Binance: WBNB Token Just Liquidity: Router0.003461876146263185 BNB
0x13178edac82cee61d870e1b9444ad2929c585957f7ab3639c377555087a4cde8119609102021-10-21 9:10:3712 mins ago Just Liquidity: Router Binance: WBNB Token0.025 BNB
0x20b29c4b21f32a102c9908965cb85c598e51e7edb2916dc3511723ab7d3383c2119606812021-10-21 8:58:4724 mins ago Just Liquidity: Router0xcd4e84e3b36ce96a0261f58026bd6533a2b52ff70.000264153940300724 BNB
0x20b29c4b21f32a102c9908965cb85c598e51e7edb2916dc3511723ab7d3383c2119606812021-10-21 8:58:4724 mins ago Just Liquidity: Router Binance: WBNB Token0.052830788060144884 BNB
0xa3da2c094f604a3e553d22cce9f633681c67483ff17d1e482165f95942d9fdd3119606642021-10-21 8:57:5125 mins ago Just Liquidity: Router0xc7d82411d63e7dea560989d9e1dbea00bd5629cb1.668490283972186817 BNB
0xa3da2c094f604a3e553d22cce9f633681c67483ff17d1e482165f95942d9fdd3119606642021-10-21 8:57:5125 mins ago Binance: WBNB Token Just Liquidity: Router1.668490283972186817 BNB
0xaf98a555d7782b19728883503ccea58fcc31bc17d1ace903a90dc13059129d75119606362021-10-21 8:56:2127 mins ago Just Liquidity: Router Binance: WBNB Token0.54 BNB
0x32fd884e8b94e034b734bb8a27a9cccf25ceb60ad5ea9456bc63c6f3470bf681119606242021-10-21 8:55:4127 mins ago Just Liquidity: Router0xd4987858b2a7dd390aee62163b6cb1b8da0028410.224028003987502442 BNB
0x32fd884e8b94e034b734bb8a27a9cccf25ceb60ad5ea9456bc63c6f3470bf681119606242021-10-21 8:55:4127 mins ago Binance: WBNB Token Just Liquidity: Router0.224028003987502442 BNB
0x4b086bc123b97e5ac54bf8cd0dd44fc15f9a60f4685fc82769ae74da9869a260119600472021-10-21 8:25:5457 mins ago Just Liquidity: Router Binance: WBNB Token0.028 BNB
0xd66bfcf0b2b0c1336a9db701c1bbe28acd900bd38a3c34c33e1d98000153b568119599332021-10-21 8:19:311 hr 4 mins ago Just Liquidity: Router0xc8189b2f763d231823171c683de529d4451af4040.029110707212239067 BNB
0xd66bfcf0b2b0c1336a9db701c1bbe28acd900bd38a3c34c33e1d98000153b568119599332021-10-21 8:19:311 hr 4 mins ago Binance: WBNB Token Just Liquidity: Router0.029110707212239067 BNB
0x5678488668867f709f961cd6e3c7177f806c47e2bbaad129c6f20f4746889638119596312021-10-21 8:04:231 hr 19 mins ago Just Liquidity: Router Binance: WBNB Token0.611937316277416123 BNB
0x1992d1c32bd6f48104b2b0df69da99e182c6d3f98cbcb759d06d957c6a9fb9da119593322021-10-21 7:49:261 hr 34 mins ago Just Liquidity: Router0x85e84230daa907a9247028f7f6fe157c0007eb0e0.01963664728073762 BNB
0x1992d1c32bd6f48104b2b0df69da99e182c6d3f98cbcb759d06d957c6a9fb9da119593322021-10-21 7:49:261 hr 34 mins ago Binance: WBNB Token Just Liquidity: Router0.01963664728073762 BNB
0xbb1c87364c3136b61f2e0b8f4ceb36680aae56663163da17e1638fa47236b3f0119593282021-10-21 7:49:141 hr 34 mins ago Just Liquidity: Router0x82094aa852cd5f4fe93e3b5a0b025b8af40490c00.00204634705969698 BNB
0xbb1c87364c3136b61f2e0b8f4ceb36680aae56663163da17e1638fa47236b3f0119593282021-10-21 7:49:141 hr 34 mins ago Binance: WBNB Token Just Liquidity: Router0.00204634705969698 BNB
0x35640dcfc6a584e524367d2484fac2a731bcc5c53760560ccbcf488398913957119592712021-10-21 7:46:231 hr 37 mins ago Just Liquidity: Router0xd1a1cd9055e77816083be1fe4abb8e64271c76d10.344651468571986721 BNB
0x35640dcfc6a584e524367d2484fac2a731bcc5c53760560ccbcf488398913957119592712021-10-21 7:46:231 hr 37 mins ago Binance: WBNB Token Just Liquidity: Router0.344651468571986721 BNB
0x2e4d096fd5175a6c2a033f160857b574220caa819b44fd19f586bbc892367760119591582021-10-21 7:40:441 hr 42 mins ago Just Liquidity: Router0x3e47eb5caefa07bd62b0d32b2ac7833c4fa918e00.010603687947137029 BNB
0x2e4d096fd5175a6c2a033f160857b574220caa819b44fd19f586bbc892367760119591582021-10-21 7:40:441 hr 42 mins ago Binance: WBNB Token Just Liquidity: Router0.010603687947137029 BNB
0xd8b6e944d7a827f385cebaa812d399aeefa1dc191ba855206b62f6c537ee9673119589622021-10-21 7:30:561 hr 52 mins ago Just Liquidity: Router0xb8c3405905f02c9c67a5129d23303202f53c239b0.211049999999999968 BNB
0xd8b6e944d7a827f385cebaa812d399aeefa1dc191ba855206b62f6c537ee9673119589622021-10-21 7:30:561 hr 52 mins ago Binance: WBNB Token Just Liquidity: Router0.211049999999999968 BNB
0xdcb7d9d258e9e52cba0edef9b42a3619d5d12e69cde3e708d5942bf607c50b20119588662021-10-21 7:26:081 hr 57 mins ago Just Liquidity: Router0x9d7c996495d9a5316dd85f59062fcf4985e37d490.002244328687995472 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BSCswapRouter

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2020-10-04
*/

// File: contracts/bscswap/interfaces/IBSCswapPair.sol

// SPDX-License-Identifier: GPL-3.0-or-later

pragma solidity >=0.5.0;

interface IBSCswapPair {
    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: contracts/bscswap/libraries/SafeMath.sol

pragma solidity =0.6.12;

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

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

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

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

// File: contracts/bscswap/libraries/BSCswapLibrary.sol

pragma solidity >=0.5.0;

library BSCswapLibrary {
    using SafeMathBSCswap 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, 'BSCswapLibrary: IDENTICAL_ADDRESSES');
        (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
        require(token0 != address(0), 'BSCswapLibrary: 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'b1e98e21a5335633815a8cfb3b580071c2e4561c50afd57a8746def9ed890b18' // init code hash
            ))));
    }

    // 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);
        (uint reserve0, uint reserve1,) = IBSCswapPair(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, 'BSCswapLibrary: INSUFFICIENT_AMOUNT');
        require(reserveA > 0 && reserveB > 0, 'BSCswapLibrary: 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, 'BSCswapLibrary: INSUFFICIENT_INPUT_AMOUNT');
        require(reserveIn > 0 && reserveOut > 0, 'BSCswapLibrary: 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, 'BSCswapLibrary: INSUFFICIENT_OUTPUT_AMOUNT');
        require(reserveIn > 0 && reserveOut > 0, 'BSCswapLibrary: 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, 'BSCswapLibrary: 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, 'BSCswapLibrary: 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: contracts/bscswap/libraries/TransferHelper.sol

pragma solidity >=0.6.0;

// helper methods for interacting with BEP20 tokens and sending BNB that do not consistently return true/false
library TransferHelper {
    function safeApprove(address token, address to, uint value) internal {
        // bytes4(keccak256(bytes('approve(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');
    }

    function safeTransfer(address token, address to, uint value) internal {
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');
    }

    function safeTransferFrom(address token, address from, address to, uint value) internal {
        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');
    }

    function safeTransferBNB(address to, uint value) internal {
        (bool success,) = to.call{value:value}(new bytes(0));
        require(success, 'TransferHelper: BNB_TRANSFER_FAILED');
    }
}

// File: contracts/bscswap/interfaces/IBSCswapRouter01.sol

pragma solidity >=0.6.2;

interface IBSCswapRouter01 {
    function factory() external pure returns (address);
    function WBNB() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityBNB(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountBNBMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountBNB, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityBNB(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountBNBMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountBNB);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityBNBWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountBNBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountBNB);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactBNBForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactBNB(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForBNB(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapBNBForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

// File: contracts/bscswap/interfaces/IBSCswapRouter02.sol

pragma solidity >=0.6.2;


interface IBSCswapRouter02 is IBSCswapRouter01 {
    function removeLiquidityBNBSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountBNBMin,
        address to,
        uint deadline
    ) external returns (uint amountBNB);
    function removeLiquidityBNBWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountBNBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountBNB);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactBNBForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForBNBSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

// File: contracts/bscswap/interfaces/IBSCswapFactory.sol

pragma solidity >=0.5.0;

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

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

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

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

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

// File: contracts/bscswap/interfaces/IBEP20.sol

pragma solidity >=0.5.0;

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

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

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

// File: contracts/bscswap/interfaces/IWBNB.sol

pragma solidity >=0.5.0;

interface IWBNB {
    function deposit() external payable;
    function transfer(address to, uint value) external returns (bool);
    function withdraw(uint) external;
}

// File: contracts/bscswap/BSCswapRouter.sol

pragma solidity =0.6.12;

contract BSCswapRouter is IBSCswapRouter02 {
    using SafeMathBSCswap for uint;

    address public immutable override factory;
    address public immutable override WBNB;

    modifier ensure(uint deadline) {
        require(deadline >= block.timestamp, 'BSCswapRouter: EXPIRED');
        _;
    }

    constructor(address _factory, address _WBNB) public {
        factory = _factory;
        WBNB = _WBNB;
    }

    receive() external payable {
        assert(msg.sender == WBNB); // only accept BNB via fallback from the WBNB contract
    }

    // **** ADD LIQUIDITY ****
    function _addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin
    ) internal virtual returns (uint amountA, uint amountB) {
        // create the pair if it doesn't exist yet
        if (IBSCswapFactory(factory).getPair(tokenA, tokenB) == address(0)) {
            IBSCswapFactory(factory).createPair(tokenA, tokenB);
        }
        (uint reserveA, uint reserveB) = BSCswapLibrary.getReserves(factory, tokenA, tokenB);
        if (reserveA == 0 && reserveB == 0) {
            (amountA, amountB) = (amountADesired, amountBDesired);
        } else {
            uint amountBOptimal = BSCswapLibrary.quote(amountADesired, reserveA, reserveB);
            if (amountBOptimal <= amountBDesired) {
                require(amountBOptimal >= amountBMin, 'BSCswapRouter: INSUFFICIENT_B_AMOUNT');
                (amountA, amountB) = (amountADesired, amountBOptimal);
            } else {
                uint amountAOptimal = BSCswapLibrary.quote(amountBDesired, reserveB, reserveA);
                assert(amountAOptimal <= amountADesired);
                require(amountAOptimal >= amountAMin, 'BSCswapRouter: INSUFFICIENT_A_AMOUNT');
                (amountA, amountB) = (amountAOptimal, amountBDesired);
            }
        }
    }
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external virtual override ensure(deadline) returns (uint amountA, uint amountB, uint liquidity) {
        (amountA, amountB) = _addLiquidity(tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin);
        address pair = BSCswapLibrary.pairFor(factory, tokenA, tokenB);
        TransferHelper.safeTransferFrom(tokenA, msg.sender, pair, amountA);
        TransferHelper.safeTransferFrom(tokenB, msg.sender, pair, amountB);
        liquidity = IBSCswapPair(pair).mint(to);
    }
    function addLiquidityBNB(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountBNBMin,
        address to,
        uint deadline
    ) external virtual override payable ensure(deadline) returns (uint amountToken, uint amountBNB, uint liquidity) {
        (amountToken, amountBNB) = _addLiquidity(
            token,
            WBNB,
            amountTokenDesired,
            msg.value,
            amountTokenMin,
            amountBNBMin
        );
        address pair = BSCswapLibrary.pairFor(factory, token, WBNB);
        TransferHelper.safeTransferFrom(token, msg.sender, pair, amountToken);
        IWBNB(WBNB).deposit{value: amountBNB}();
        assert(IWBNB(WBNB).transfer(pair, amountBNB));
        liquidity = IBSCswapPair(pair).mint(to);
        // refund dust BNB, if any
        if (msg.value > amountBNB) TransferHelper.safeTransferBNB(msg.sender, msg.value - amountBNB);
    }

    // **** REMOVE LIQUIDITY ****
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) public virtual override ensure(deadline) returns (uint amountA, uint amountB) {
        address pair = BSCswapLibrary.pairFor(factory, tokenA, tokenB);
        IBSCswapPair(pair).transferFrom(msg.sender, pair, liquidity); // send liquidity to pair
        (uint amount0, uint amount1) = IBSCswapPair(pair).burn(to);
        (address token0,) = BSCswapLibrary.sortTokens(tokenA, tokenB);
        (amountA, amountB) = tokenA == token0 ? (amount0, amount1) : (amount1, amount0);
        require(amountA >= amountAMin, 'BSCswapRouter: INSUFFICIENT_A_AMOUNT');
        require(amountB >= amountBMin, 'BSCswapRouter: INSUFFICIENT_B_AMOUNT');
    }
    function removeLiquidityBNB(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountBNBMin,
        address to,
        uint deadline
    ) public virtual override ensure(deadline) returns (uint amountToken, uint amountBNB) {
        (amountToken, amountBNB) = removeLiquidity(
            token,
            WBNB,
            liquidity,
            amountTokenMin,
            amountBNBMin,
            address(this),
            deadline
        );
        TransferHelper.safeTransfer(token, to, amountToken);
        IWBNB(WBNB).withdraw(amountBNB);
        TransferHelper.safeTransferBNB(to, amountBNB);
    }
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external virtual override returns (uint amountA, uint amountB) {
        address pair = BSCswapLibrary.pairFor(factory, tokenA, tokenB);
        uint value = approveMax ? uint(-1) : liquidity;
        IBSCswapPair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);
        (amountA, amountB) = removeLiquidity(tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline);
    }
    function removeLiquidityBNBWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountBNBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external virtual override returns (uint amountToken, uint amountBNB) {
        address pair = BSCswapLibrary.pairFor(factory, token, WBNB);
        uint value = approveMax ? uint(-1) : liquidity;
        IBSCswapPair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);
        (amountToken, amountBNB) = removeLiquidityBNB(token, liquidity, amountTokenMin, amountBNBMin, to, deadline);
    }

    // **** REMOVE LIQUIDITY (supporting fee-on-transfer tokens) ****
    function removeLiquidityBNBSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountBNBMin,
        address to,
        uint deadline
    ) public virtual override ensure(deadline) returns (uint amountBNB) {
        (, amountBNB) = removeLiquidity(
            token,
            WBNB,
            liquidity,
            amountTokenMin,
            amountBNBMin,
            address(this),
            deadline
        );
        TransferHelper.safeTransfer(token, to, IBEP20BSCswap(token).balanceOf(address(this)));
        IWBNB(WBNB).withdraw(amountBNB);
        TransferHelper.safeTransferBNB(to, amountBNB);
    }
    function removeLiquidityBNBWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountBNBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external virtual override returns (uint amountBNB) {
        address pair = BSCswapLibrary.pairFor(factory, token, WBNB);
        uint value = approveMax ? uint(-1) : liquidity;
        IBSCswapPair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);
        amountBNB = removeLiquidityBNBSupportingFeeOnTransferTokens(
            token, liquidity, amountTokenMin, amountBNBMin, to, deadline
        );
    }

    // **** SWAP ****
    // requires the initial amount to have already been sent to the first pair
    function _swap(uint[] memory amounts, address[] memory path, address _to) internal virtual {
        for (uint i; i < path.length - 1; i++) {
            (address input, address output) = (path[i], path[i + 1]);
            (address token0,) = BSCswapLibrary.sortTokens(input, output);
            uint amountOut = amounts[i + 1];
            (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOut) : (amountOut, uint(0));
            address to = i < path.length - 2 ? BSCswapLibrary.pairFor(factory, output, path[i + 2]) : _to;
            IBSCswapPair(BSCswapLibrary.pairFor(factory, input, output)).swap(
                amount0Out, amount1Out, to, new bytes(0)
            );
        }
    }
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external virtual override ensure(deadline) returns (uint[] memory amounts) {
        amounts = BSCswapLibrary.getAmountsOut(factory, amountIn, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'BSCswapRouter: INSUFFICIENT_OUTPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, BSCswapLibrary.pairFor(factory, path[0], path[1]), amounts[0]
        );
        _swap(amounts, path, to);
    }
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external virtual override ensure(deadline) returns (uint[] memory amounts) {
        amounts = BSCswapLibrary.getAmountsIn(factory, amountOut, path);
        require(amounts[0] <= amountInMax, 'BSCswapRouter: EXCESSIVE_INPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, BSCswapLibrary.pairFor(factory, path[0], path[1]), amounts[0]
        );
        _swap(amounts, path, to);
    }
    function swapExactBNBForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        virtual
        override
        payable
        ensure(deadline)
        returns (uint[] memory amounts)
    {
        require(path[0] == WBNB, 'BSCswapRouter: INVALID_PATH');
        amounts = BSCswapLibrary.getAmountsOut(factory, msg.value, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'BSCswapRouter: INSUFFICIENT_OUTPUT_AMOUNT');
        IWBNB(WBNB).deposit{value: amounts[0]}();
        assert(IWBNB(WBNB).transfer(BSCswapLibrary.pairFor(factory, path[0], path[1]), amounts[0]));
        _swap(amounts, path, to);
    }
    function swapTokensForExactBNB(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        virtual
        override
        ensure(deadline)
        returns (uint[] memory amounts)
    {
        require(path[path.length - 1] == WBNB, 'BSCswapRouter: INVALID_PATH');
        amounts = BSCswapLibrary.getAmountsIn(factory, amountOut, path);
        require(amounts[0] <= amountInMax, 'BSCswapRouter: EXCESSIVE_INPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, BSCswapLibrary.pairFor(factory, path[0], path[1]), amounts[0]
        );
        _swap(amounts, path, address(this));
        IWBNB(WBNB).withdraw(amounts[amounts.length - 1]);
        TransferHelper.safeTransferBNB(to, amounts[amounts.length - 1]);
    }
    function swapExactTokensForBNB(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        virtual
        override
        ensure(deadline)
        returns (uint[] memory amounts)
    {
        require(path[path.length - 1] == WBNB, 'BSCswapRouter: INVALID_PATH');
        amounts = BSCswapLibrary.getAmountsOut(factory, amountIn, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'BSCswapRouter: INSUFFICIENT_OUTPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, BSCswapLibrary.pairFor(factory, path[0], path[1]), amounts[0]
        );
        _swap(amounts, path, address(this));
        IWBNB(WBNB).withdraw(amounts[amounts.length - 1]);
        TransferHelper.safeTransferBNB(to, amounts[amounts.length - 1]);
    }
    function swapBNBForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        virtual
        override
        payable
        ensure(deadline)
        returns (uint[] memory amounts)
    {
        require(path[0] == WBNB, 'BSCswapRouter: INVALID_PATH');
        amounts = BSCswapLibrary.getAmountsIn(factory, amountOut, path);
        require(amounts[0] <= msg.value, 'BSCswapRouter: EXCESSIVE_INPUT_AMOUNT');
        IWBNB(WBNB).deposit{value: amounts[0]}();
        assert(IWBNB(WBNB).transfer(BSCswapLibrary.pairFor(factory, path[0], path[1]), amounts[0]));
        _swap(amounts, path, to);
        // refund dust BNB, if any
        if (msg.value > amounts[0]) TransferHelper.safeTransferBNB(msg.sender, msg.value - amounts[0]);
    }

    // **** SWAP (supporting fee-on-transfer tokens) ****
    // requires the initial amount to have already been sent to the first pair
    function _swapSupportingFeeOnTransferTokens(address[] memory path, address _to) internal virtual {
        for (uint i; i < path.length - 1; i++) {
            (address input, address output) = (path[i], path[i + 1]);
            (address token0,) = BSCswapLibrary.sortTokens(input, output);
            IBSCswapPair pair = IBSCswapPair(BSCswapLibrary.pairFor(factory, input, output));
            uint amountInput;
            uint amountOutput;
            { // scope to avoid stack too deep errors
            (uint reserve0, uint reserve1,) = pair.getReserves();
            (uint reserveInput, uint reserveOutput) = input == token0 ? (reserve0, reserve1) : (reserve1, reserve0);
            amountInput = IBEP20BSCswap(input).balanceOf(address(pair)).sub(reserveInput);
            amountOutput = BSCswapLibrary.getAmountOut(amountInput, reserveInput, reserveOutput);
            }
            (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOutput) : (amountOutput, uint(0));
            address to = i < path.length - 2 ? BSCswapLibrary.pairFor(factory, output, path[i + 2]) : _to;
            pair.swap(amount0Out, amount1Out, to, new bytes(0));
        }
    }
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external virtual override ensure(deadline) {
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, BSCswapLibrary.pairFor(factory, path[0], path[1]), amountIn
        );
        uint balanceBefore = IBEP20BSCswap(path[path.length - 1]).balanceOf(to);
        _swapSupportingFeeOnTransferTokens(path, to);
        require(
            IBEP20BSCswap(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,
            'BSCswapRouter: INSUFFICIENT_OUTPUT_AMOUNT'
        );
    }
    function swapExactBNBForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    )
        external
        virtual
        override
        payable
        ensure(deadline)
    {
        require(path[0] == WBNB, 'BSCswapRouter: INVALID_PATH');
        uint amountIn = msg.value;
        IWBNB(WBNB).deposit{value: amountIn}();
        assert(IWBNB(WBNB).transfer(BSCswapLibrary.pairFor(factory, path[0], path[1]), amountIn));
        uint balanceBefore = IBEP20BSCswap(path[path.length - 1]).balanceOf(to);
        _swapSupportingFeeOnTransferTokens(path, to);
        require(
            IBEP20BSCswap(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,
            'BSCswapRouter: INSUFFICIENT_OUTPUT_AMOUNT'
        );
    }
    function swapExactTokensForBNBSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    )
        external
        virtual
        override
        ensure(deadline)
    {
        require(path[path.length - 1] == WBNB, 'BSCswapRouter: INVALID_PATH');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, BSCswapLibrary.pairFor(factory, path[0], path[1]), amountIn
        );
        _swapSupportingFeeOnTransferTokens(path, address(this));
        uint amountOut = IBEP20BSCswap(WBNB).balanceOf(address(this));
        require(amountOut >= amountOutMin, 'BSCswapRouter: INSUFFICIENT_OUTPUT_AMOUNT');
        IWBNB(WBNB).withdraw(amountOut);
        TransferHelper.safeTransferBNB(to, amountOut);
    }

    // **** LIBRARY FUNCTIONS ****
    function quote(uint amountA, uint reserveA, uint reserveB) public pure virtual override returns (uint amountB) {
        return BSCswapLibrary.quote(amountA, reserveA, reserveB);
    }

    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut)
        public
        pure
        virtual
        override
        returns (uint amountOut)
    {
        return BSCswapLibrary.getAmountOut(amountIn, reserveIn, reserveOut);
    }

    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut)
        public
        pure
        virtual
        override
        returns (uint amountIn)
    {
        return BSCswapLibrary.getAmountIn(amountOut, reserveIn, reserveOut);
    }

    function getAmountsOut(uint amountIn, address[] memory path)
        public
        view
        virtual
        override
        returns (uint[] memory amounts)
    {
        return BSCswapLibrary.getAmountsOut(factory, amountIn, path);
    }

    function getAmountsIn(uint amountOut, address[] memory path)
        public
        view
        virtual
        override
        returns (uint[] memory amounts)
    {
        return BSCswapLibrary.getAmountsIn(factory, amountOut, path);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_WBNB","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"WBNB","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"amountADesired","type":"uint256"},{"internalType":"uint256","name":"amountBDesired","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountTokenDesired","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountBNBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidityBNB","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountBNB","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountIn","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountOut","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsIn","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsOut","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"reserveA","type":"uint256"},{"internalType":"uint256","name":"reserveB","type":"uint256"}],"name":"quote","outputs":[{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountBNBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityBNB","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountBNB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountBNBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityBNBSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountBNB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountBNBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityBNBWithPermit","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountBNB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountBNBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityBNBWithPermitSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountBNB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityWithPermit","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapBNBForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactBNBForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactBNBForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForBNB","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForBNBSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactBNB","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c060405234801561001057600080fd5b50604051620048a6380380620048a68339818101604052604081101561003557600080fd5b5080516020909101516001600160601b0319606092831b8116608052911b1660a05260805160601c60a05160601c614721620001856000398061019f5280610e5e5280611186528061122d52806112a152806117a652806119485280611a265280611b5d5280611cb25280611d3a5280611fbd5280612032528061218a528061221252806123a0528061245452806127ec52806128d952806129b35280612a945280612c3a5280612c755280612e9f5280612ef55280612f295280612f9d525080610d095280610d425280610e3c5280610f9c528061107352806112d352806115ce52806118465280611a045280611c025280611d6c5280611f0d52806120d7528061224452806125335280612744528061276d5280612b345280612d755280612ed35280613738528061377b528061391d5280613a9a528061413c52806141f552806142a852506147216000f3fe60806040526004361061018f5760003560e01c80638dd95002116100d6578063d06ca61f1161007f578063e058848811610059578063e058848814610bd4578063e8e3370014610c27578063eaaed44214610ca7576101c8565b8063d06ca61f146109ed578063d46d2f8314610aa4578063d67b571e14610b3c576101c8565b8063b7e65949116100b0578063b7e6594914610928578063baa2abde1461097b578063c45a0155146109d8576101c8565b80638dd950021461083b5780639cf689111461086c578063ad615dec146108f2576101c8565b80635c11d795116101385780638332a963116101125780638332a963146106e757806385f8c2591461076d5780638803dbee146107a3576101c8565b80635c11d795146105445780635d616c5b146105dc578063685a0a3414610674576101c8565b806334a0772d1161016957806334a0772d146103b357806338ed17391461042657806350e27df3146104be576101c8565b8063054d50d4146101cd5780631f00ca74146102155780632195995c1461031c576101c8565b366101c857336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101c657fe5b005b600080fd5b3480156101d957600080fd5b50610203600480360360608110156101f057600080fd5b5080359060208101359060400135610ced565b60408051918252519081900360200190f35b34801561022157600080fd5b506102cc6004803603604081101561023857600080fd5b8135919081019060408101602082013564010000000081111561025a57600080fd5b82018360208201111561026c57600080fd5b8035906020019184602083028401116401000000008311171561028e57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610d02945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156103085781810151838201526020016102f0565b505050509050019250505060405180910390f35b34801561032857600080fd5b5061039a600480360361016081101561034057600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff6101008201351690610120810135906101400135610d38565b6040805192835260208301919091528051918290030190f35b3480156103bf57600080fd5b5061039a60048036036101408110156103d757600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135610e32565b34801561043257600080fd5b506102cc600480360360a081101561044957600080fd5b81359160208101359181019060608101604082013564010000000081111561047057600080fd5b82018360208201111561048257600080fd5b803590602001918460208302840111640100000000831117156104a457600080fd5b91935091506001600160a01b038135169060200135610f46565b6101c6600480360360808110156104d457600080fd5b813591908101906040810160208201356401000000008111156104f657600080fd5b82018360208201111561050857600080fd5b8035906020019184602083028401116401000000008311171561052a57600080fd5b91935091506001600160a01b038135169060200135611135565b34801561055057600080fd5b506101c6600480360360a081101561056757600080fd5b81359160208101359181019060608101604082013564010000000081111561058e57600080fd5b8201836020820111156105a057600080fd5b803590602001918460208302840111640100000000831117156105c257600080fd5b91935091506001600160a01b038135169060200135611559565b3480156105e857600080fd5b506102cc600480360360a08110156105ff57600080fd5b81359160208101359181019060608101604082013564010000000081111561062657600080fd5b82018360208201111561063857600080fd5b8035906020019184602083028401116401000000008311171561065a57600080fd5b91935091506001600160a01b03813516906020013561174b565b34801561068057600080fd5b50610203600480360361014081101561069857600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356119fc565b6102cc600480360360808110156106fd57600080fd5b8135919081019060408101602082013564010000000081111561071f57600080fd5b82018360208201111561073157600080fd5b8035906020019184602083028401116401000000008311171561075357600080fd5b91935091506001600160a01b038135169060200135611b0a565b34801561077957600080fd5b506102036004803603606081101561079057600080fd5b5080359060208101359060400135611eaa565b3480156107af57600080fd5b506102cc600480360360a08110156107c657600080fd5b8135916020810135918101906060810160408201356401000000008111156107ed57600080fd5b8201836020820111156107ff57600080fd5b8035906020019184602083028401116401000000008311171561082157600080fd5b91935091506001600160a01b038135169060200135611eb7565b34801561084757600080fd5b50610850611fbb565b604080516001600160a01b039092168252519081900360200190f35b6102cc6004803603608081101561088257600080fd5b813591908101906040810160208201356401000000008111156108a457600080fd5b8201836020820111156108b657600080fd5b803590602001918460208302840111640100000000831117156108d857600080fd5b91935091506001600160a01b038135169060200135611fdf565b3480156108fe57600080fd5b506102036004803603606081101561091557600080fd5b508035906020810135906040013561233c565b34801561093457600080fd5b50610203600480360360c081101561094b57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135612349565b34801561098757600080fd5b5061039a600480360360e081101561099e57600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c001356124da565b3480156109e457600080fd5b50610850612742565b3480156109f957600080fd5b506102cc60048036036040811015610a1057600080fd5b81359190810190604081016020820135640100000000811115610a3257600080fd5b820183602082011115610a4457600080fd5b80359060200191846020830284011164010000000083111715610a6657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612766945050505050565b348015610ab057600080fd5b506101c6600480360360a0811015610ac757600080fd5b813591602081013591810190606081016040820135640100000000811115610aee57600080fd5b820183602082011115610b0057600080fd5b80359060200191846020830284011164010000000083111715610b2257600080fd5b91935091506001600160a01b038135169060200135612793565b348015610b4857600080fd5b506102cc600480360360a0811015610b5f57600080fd5b813591602081013591810190606081016040820135640100000000811115610b8657600080fd5b820183602082011115610b9857600080fd5b80359060200191846020830284011164010000000083111715610bba57600080fd5b91935091506001600160a01b038135169060200135612a39565b348015610be057600080fd5b5061039a600480360360c0811015610bf757600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135612be2565b348015610c3357600080fd5b50610c896004803603610100811015610c4b57600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135612d07565b60408051938452602084019290925282820152519081900360600190f35b610c89600480360360c0811015610cbd57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135612e45565b6000610cfa8484846130e3565b949350505050565b6060610d2f7f000000000000000000000000000000000000000000000000000000000000000084846131bb565b90505b92915050565b6000806000610d687f00000000000000000000000000000000000000000000000000000000000000008f8f613308565b9050600087610d77578c610d7b565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b158015610df157600080fd5b505af1158015610e05573d6000803e3d6000fd5b50505050610e188f8f8f8f8f8f8f6124da565b809450819550505050509b509b9950505050505050505050565b6000806000610e827f00000000000000000000000000000000000000000000000000000000000000008e7f0000000000000000000000000000000000000000000000000000000000000000613308565b9050600087610e91578c610e95565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b158015610f0b57600080fd5b505af1158015610f1f573d6000803e3d6000fd5b50505050610f318e8e8e8e8e8e612be2565b909f909e509c50505050505050505050505050565b60608142811015610f97576040805162461bcd60e51b81526020600482015260166024820152751094d0dcddd85c149bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b610ff57f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506133e092505050565b9150868260018451038151811061100857fe5b6020026020010151101561104d5760405162461bcd60e51b81526004018080602001828103825260298152602001806146366029913960400191505060405180910390fd5b6110eb8686600081811061105d57fe5b905060200201356001600160a01b0316336110d17f00000000000000000000000000000000000000000000000000000000000000008a8a600081811061109f57fe5b905060200201356001600160a01b03168b8b60018181106110bc57fe5b905060200201356001600160a01b0316613308565b856000815181106110de57fe5b6020026020010151613517565b61112a82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613689915050565b509695505050505050565b8042811015611184576040805162461bcd60e51b81526020600482015260166024820152751094d0dcddd85c149bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316858560008181106111bb57fe5b905060200201356001600160a01b03166001600160a01b031614611226576040805162461bcd60e51b815260206004820152601b60248201527f42534373776170526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b60003490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561128657600080fd5b505af115801561129a573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb61131c7f0000000000000000000000000000000000000000000000000000000000000000898960008181106112ff57fe5b905060200201356001600160a01b03168a8a60018181106110bc57fe5b836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561136357600080fd5b505af1158015611377573d6000803e3d6000fd5b505050506040513d602081101561138d57600080fd5b505161139557fe5b6000868660001981018181106113a757fe5b905060200201356001600160a01b03166001600160a01b03166370a08231866040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561140357600080fd5b505afa158015611417573d6000803e3d6000fd5b505050506040513d602081101561142d57600080fd5b5051604080516020898102828101820190935289825292935061146f9290918a918a9182918501908490808284376000920191909152508992506138c6915050565b87611512828989600019810181811061148457fe5b905060200201356001600160a01b03166001600160a01b03166370a08231896040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156114e057600080fd5b505afa1580156114f4573d6000803e3d6000fd5b505050506040513d602081101561150a57600080fd5b505190613bed565b101561154f5760405162461bcd60e51b81526004018080602001828103825260298152602001806146366029913960400191505060405180910390fd5b5050505050505050565b80428110156115a8576040805162461bcd60e51b81526020600482015260166024820152751094d0dcddd85c149bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b611600858560008181106115b857fe5b905060200201356001600160a01b0316336115fa7f0000000000000000000000000000000000000000000000000000000000000000898960008181106112ff57fe5b8a613517565b60008585600019810181811061161257fe5b905060200201356001600160a01b03166001600160a01b03166370a08231856040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561166e57600080fd5b505afa158015611682573d6000803e3d6000fd5b505050506040513d602081101561169857600080fd5b505160408051602088810282810182019093528882529293506116da9290918991899182918501908490808284376000920191909152508892506138c6915050565b8661151282888860001981018181106116ef57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231886040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156114e057600080fd5b6060814281101561179c576040805162461bcd60e51b81526020600482015260166024820152751094d0dcddd85c149bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016868660001981018181106117d657fe5b905060200201356001600160a01b03166001600160a01b031614611841576040805162461bcd60e51b815260206004820152601b60248201527f42534373776170526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b61189f7f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506133e092505050565b915086826001845103815181106118b257fe5b602002602001015110156118f75760405162461bcd60e51b81526004018080602001828103825260298152602001806146366029913960400191505060405180910390fd5b6119078686600081811061105d57fe5b61194682878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250613689915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d8360018551038151811061198557fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156119c357600080fd5b505af11580156119d7573d6000803e3d6000fd5b5050505061112a84836001855103815181106119ef57fe5b6020026020010151613c45565b600080611a4a7f00000000000000000000000000000000000000000000000000000000000000008d7f0000000000000000000000000000000000000000000000000000000000000000613308565b9050600086611a59578b611a5d565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c4810187905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b158015611ad357600080fd5b505af1158015611ae7573d6000803e3d6000fd5b50505050611af98d8d8d8d8d8d612349565b9d9c50505050505050505050505050565b60608142811015611b5b576040805162461bcd60e51b81526020600482015260166024820152751094d0dcddd85c149bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031686866000818110611b9257fe5b905060200201356001600160a01b03166001600160a01b031614611bfd576040805162461bcd60e51b815260206004820152601b60248201527f42534373776170526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b611c5b7f0000000000000000000000000000000000000000000000000000000000000000888888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506131bb92505050565b91503482600081518110611c6b57fe5b60200260200101511115611cb05760405162461bcd60e51b81526004018080602001828103825260258152602001806145c76025913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db083600081518110611cec57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015611d1f57600080fd5b505af1158015611d33573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb611d987f0000000000000000000000000000000000000000000000000000000000000000898960008181106112ff57fe5b84600081518110611da557fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611df357600080fd5b505af1158015611e07573d6000803e3d6000fd5b505050506040513d6020811015611e1d57600080fd5b5051611e2557fe5b611e6482878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613689915050565b81600081518110611e7157fe5b6020026020010151341115611ea057611ea03383600081518110611e9157fe5b60200260200101513403613c45565b5095945050505050565b6000610cfa848484613d38565b60608142811015611f08576040805162461bcd60e51b81526020600482015260166024820152751094d0dcddd85c149bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b611f667f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506131bb92505050565b91508682600081518110611f7657fe5b6020026020010151111561104d5760405162461bcd60e51b81526004018080602001828103825260258152602001806145c76025913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b60608142811015612030576040805162461bcd60e51b81526020600482015260166024820152751094d0dcddd85c149bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168686600081811061206757fe5b905060200201356001600160a01b03166001600160a01b0316146120d2576040805162461bcd60e51b815260206004820152601b60248201527f42534373776170526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b6121307f0000000000000000000000000000000000000000000000000000000000000000348888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506133e092505050565b9150868260018451038151811061214357fe5b602002602001015110156121885760405162461bcd60e51b81526004018080602001828103825260298152602001806146366029913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0836000815181106121c457fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b1580156121f757600080fd5b505af115801561220b573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6122707f0000000000000000000000000000000000000000000000000000000000000000898960008181106112ff57fe5b8460008151811061227d57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156122cb57600080fd5b505af11580156122df573d6000803e3d6000fd5b505050506040513d60208110156122f557600080fd5b50516122fd57fe5b611ea082878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613689915050565b6000610cfa848484613e10565b6000814281101561239a576040805162461bcd60e51b81526020600482015260166024820152751094d0dcddd85c149bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b6123c9887f000000000000000000000000000000000000000000000000000000000000000089898930896124da565b90508092505061245288858a6001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561242157600080fd5b505afa158015612435573d6000803e3d6000fd5b505050506040513d602081101561244b57600080fd5b5051613eb6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156124b857600080fd5b505af11580156124cc573d6000803e3d6000fd5b5050505061112a8483613c45565b600080824281101561252c576040805162461bcd60e51b81526020600482015260166024820152751094d0dcddd85c149bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b60006125597f00000000000000000000000000000000000000000000000000000000000000008c8c613308565b604080516323b872dd60e01b81523360048201526001600160a01b03831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b1580156125b457600080fd5b505af11580156125c8573d6000803e3d6000fd5b505050506040513d60208110156125de57600080fd5b5050604080517f89afcb440000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b15801561264457600080fd5b505af1158015612658573d6000803e3d6000fd5b505050506040513d604081101561266e57600080fd5b508051602090910151909250905060006126888e8e61404e565b509050806001600160a01b03168e6001600160a01b0316146126ab5781836126ae565b82825b90975095508a8710156126f25760405162461bcd60e51b81526004018080602001828103825260248152602001806145a36024913960400191505060405180910390fd5b898610156127315760405162461bcd60e51b81526004018080602001828103825260248152602001806145ec6024913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060610d2f7f000000000000000000000000000000000000000000000000000000000000000084846133e0565b80428110156127e2576040805162461bcd60e51b81526020600482015260166024820152751094d0dcddd85c149bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168585600019810181811061281c57fe5b905060200201356001600160a01b03166001600160a01b031614612887576040805162461bcd60e51b815260206004820152601b60248201527f42534373776170526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b612897858560008181106115b857fe5b6128d58585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152503092506138c6915050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561294457600080fd5b505afa158015612958573d6000803e3d6000fd5b505050506040513d602081101561296e57600080fd5b50519050868110156129b15760405162461bcd60e51b81526004018080602001828103825260298152602001806146366029913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015612a1757600080fd5b505af1158015612a2b573d6000803e3d6000fd5b5050505061154f8482613c45565b60608142811015612a8a576040805162461bcd60e51b81526020600482015260166024820152751094d0dcddd85c149bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001686866000198101818110612ac457fe5b905060200201356001600160a01b03166001600160a01b031614612b2f576040805162461bcd60e51b815260206004820152601b60248201527f42534373776170526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b612b8d7f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506131bb92505050565b91508682600081518110612b9d57fe5b602002602001015111156118f75760405162461bcd60e51b81526004018080602001828103825260258152602001806145c76025913960400191505060405180910390fd5b6000808242811015612c34576040805162461bcd60e51b81526020600482015260166024820152751094d0dcddd85c149bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b612c63897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a6124da565b9093509150612c73898685613eb6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015612cd957600080fd5b505af1158015612ced573d6000803e3d6000fd5b50505050612cfb8583613c45565b50965096945050505050565b60008060008342811015612d5b576040805162461bcd60e51b81526020600482015260166024820152751094d0dcddd85c149bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b612d698c8c8c8c8c8c61412c565b90945092506000612d9b7f00000000000000000000000000000000000000000000000000000000000000008e8e613308565b9050612da98d338388613517565b612db58c338387613517565b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b158015612e0457600080fd5b505af1158015612e18573d6000803e3d6000fd5b505050506040513d6020811015612e2e57600080fd5b5051949d939c50939a509198505050505050505050565b60008060008342811015612e99576040805162461bcd60e51b81526020600482015260166024820152751094d0dcddd85c149bdd5d195c8e881156141254915160521b604482015290519081900360640190fd5b612ec78a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c61412c565b90945092506000612f197f00000000000000000000000000000000000000000000000000000000000000008c7f0000000000000000000000000000000000000000000000000000000000000000613308565b9050612f278b338388613517565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b158015612f8257600080fd5b505af1158015612f96573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb82866040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561301257600080fd5b505af1158015613026573d6000803e3d6000fd5b505050506040513d602081101561303c57600080fd5b505161304457fe5b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b15801561309357600080fd5b505af11580156130a7573d6000803e3d6000fd5b505050506040513d60208110156130bd57600080fd5b50519250348410156130d5576130d533853403613c45565b505096509650969350505050565b60008084116131235760405162461bcd60e51b81526004018080602001828103825260298152602001806145506029913960400191505060405180910390fd5b6000831180156131335750600082115b61316e5760405162461bcd60e51b81526004018080602001828103825260268152602001806146106026913960400191505060405180910390fd5b600061317c856103e56143bd565b9050600061318a82856143bd565b905060006131a48361319e886103e86143bd565b90614429565b90508082816131af57fe5b04979650505050505050565b6060600282511015613214576040805162461bcd60e51b815260206004820152601c60248201527f425343737761704c6962726172793a20494e56414c49445f5041544800000000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561322c57600080fd5b50604051908082528060200260200182016040528015613256578160200160208202803683370190505b509050828160018351038151811061326a57fe5b60209081029190910101528151600019015b8015613300576000806132b98786600186038151811061329857fe5b60200260200101518786815181106132ac57fe5b6020026020010151614481565b915091506132db8484815181106132cc57fe5b60200260200101518383613d38565b8460018503815181106132ea57fe5b602090810291909101015250506000190161327c565b509392505050565b6000806000613317858561404e565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527fb1e98e21a5335633815a8cfb3b580071c2e4561c50afd57a8746def9ed890b18609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6060600282511015613439576040805162461bcd60e51b815260206004820152601c60248201527f425343737761704c6962726172793a20494e56414c49445f5041544800000000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561345157600080fd5b5060405190808252806020026020018201604052801561347b578160200160208202803683370190505b509050828160008151811061348c57fe5b60200260200101818152505060005b6001835103811015613300576000806134d1878685815181106134ba57fe5b60200260200101518786600101815181106132ac57fe5b915091506134f38484815181106134e457fe5b602002602001015183836130e3565b84846001018151811061350257fe5b6020908102919091010152505060010161349b565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b17815292518251600094606094938a169392918291908083835b602083106135b15780518252601f199092019160209182019101613592565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613613576040519150601f19603f3d011682016040523d82523d6000602084013e613618565b606091505b5091509150818015613646575080511580613646575080806020019051602081101561364357600080fd5b50515b6136815760405162461bcd60e51b81526004018080602001828103825260248152602001806146a56024913960400191505060405180910390fd5b505050505050565b60005b60018351038110156138c0576000808483815181106136a757fe5b60200260200101518584600101815181106136be57fe5b60200260200101519150915060006136d6838361404e565b50905060008785600101815181106136ea57fe5b60200260200101519050600080836001600160a01b0316866001600160a01b0316146137185782600061371c565b6000835b91509150600060028a510388106137335788613774565b6137747f0000000000000000000000000000000000000000000000000000000000000000878c8b6002018151811061376757fe5b6020026020010151613308565b90506137a17f00000000000000000000000000000000000000000000000000000000000000008888613308565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156137de576020820181803683370190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561384657818101518382015260200161382e565b50505050905090810190601f1680156138735780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561389557600080fd5b505af11580156138a9573d6000803e3d6000fd5b50506001909901985061368c975050505050505050565b50505050565b60005b6001835103811015613be8576000808483815181106138e457fe5b60200260200101518584600101815181106138fb57fe5b6020026020010151915091506000613913838361404e565b50905060006139437f00000000000000000000000000000000000000000000000000000000000000008585613308565b9050600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561398457600080fd5b505afa158015613998573d6000803e3d6000fd5b505050506040513d60608110156139ae57600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506000806001600160a01b038a8116908916146139eb5782846139ee565b83835b91509150613a43828b6001600160a01b03166370a082318a6040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156114e057600080fd5b9550613a508683836130e3565b945050505050600080856001600160a01b0316886001600160a01b031614613a7a57826000613a7e565b6000835b91509150600060028c51038a10613a95578a613ac9565b613ac97f0000000000000000000000000000000000000000000000000000000000000000898e8d6002018151811061376757fe5b60408051600080825260208201928390527f022c0d9f00000000000000000000000000000000000000000000000000000000835260248201878152604483018790526001600160a01b038086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b83811015613b6c578181015183820152602001613b54565b50505050905090810190601f168015613b995780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015613bbb57600080fd5b505af1158015613bcf573d6000803e3d6000fd5b50506001909b019a506138c99950505050505050505050565b505050565b80820382811115610d32576040805162461bcd60e51b815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b60208310613c915780518252601f199092019160209182019101613c72565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613cf3576040519150601f19603f3d011682016040523d82523d6000602084013e613cf8565b606091505b5050905080613be85760405162461bcd60e51b815260040180806020018281038252602381526020018061465f6023913960400191505060405180910390fd5b6000808411613d785760405162461bcd60e51b815260040180806020018281038252602a815260200180614579602a913960400191505060405180910390fd5b600083118015613d885750600082115b613dc35760405162461bcd60e51b81526004018080602001828103825260268152602001806146106026913960400191505060405180910390fd5b6000613ddb6103e8613dd586886143bd565b906143bd565b90506000613def6103e5613dd58689613bed565b9050613e066001828481613dff57fe5b0490614429565b9695505050505050565b6000808411613e505760405162461bcd60e51b81526004018080602001828103825260238152602001806146c96023913960400191505060405180910390fd5b600083118015613e605750600082115b613e9b5760405162461bcd60e51b81526004018080602001828103825260268152602001806146106026913960400191505060405180910390fd5b82613ea685846143bd565b81613ead57fe5b04949350505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b60208310613f615780518252601f199092019160209182019101613f42565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613fc3576040519150601f19603f3d011682016040523d82523d6000602084013e613fc8565b606091505b5091509150818015613ff6575080511580613ff65750808060200190516020811015613ff357600080fd5b50515b614047576040805162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b600080826001600160a01b0316846001600160a01b031614156140a25760405162461bcd60e51b81526004018080602001828103825260238152602001806146826023913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b0316106140c25782846140c5565b83835b90925090506001600160a01b038216614125576040805162461bcd60e51b815260206004820152601c60248201527f425343737761704c6962726172793a205a45524f5f4144445245535300000000604482015290519081900360640190fd5b9250929050565b60008060006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e6a439058a8a6040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b1580156141b857600080fd5b505afa1580156141cc573d6000803e3d6000fd5b505050506040513d60208110156141e257600080fd5b50516001600160a01b031614156142a0577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c9c6539689896040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b0316815260200192505050602060405180830381600087803b15801561427357600080fd5b505af1158015614287573d6000803e3d6000fd5b505050506040513d602081101561429d57600080fd5b50505b6000806142ce7f00000000000000000000000000000000000000000000000000000000000000008b8b614481565b915091508160001480156142e0575080155b156142f0578793508692506143b0565b60006142fd898484613e10565b905087811161435057858110156143455760405162461bcd60e51b81526004018080602001828103825260248152602001806145ec6024913960400191505060405180910390fd5b8894509250826143ae565b600061435d898486613e10565b90508981111561436957fe5b878110156143a85760405162461bcd60e51b81526004018080602001828103825260248152602001806145a36024913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b60008115806143d8575050808202828282816143d557fe5b04145b610d32576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820182811015610d32576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b6000806000614490858561404e565b5090506000806144a1888888613308565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156144d957600080fd5b505afa1580156144ed573d6000803e3d6000fd5b505050506040513d606081101561450357600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506001600160a01b038781169084161461453d578082614540565b81815b9099909850965050505050505056fe425343737761704c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54425343737761704c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e5442534373776170526f757465723a20494e53554646494349454e545f415f414d4f554e5442534373776170526f757465723a204558434553534956455f494e5055545f414d4f554e5442534373776170526f757465723a20494e53554646494349454e545f425f414d4f554e54425343737761704c6962726172793a20494e53554646494349454e545f4c495155494449545942534373776170526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e545472616e7366657248656c7065723a20424e425f5452414e534645525f4641494c4544425343737761704c6962726172793a204944454e544943414c5f4144445245535345535472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544425343737761704c6962726172793a20494e53554646494349454e545f414d4f554e54a2646970667358221220f5dd67d47f108fcbc4c17314902460f0c2c44be43ceadc8f5deefc4a278141d764736f6c634300060c0033000000000000000000000000553990f2cba90272390f62c5bdb1681ffc899675000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c

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

000000000000000000000000553990f2cba90272390f62c5bdb1681ffc899675000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c

-----Decoded View---------------
Arg [0] : _factory (address): 0x553990f2cba90272390f62c5bdb1681ffc899675
Arg [1] : _WBNB (address): 0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000553990f2cba90272390f62c5bdb1681ffc899675
Arg [1] : 000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c


Deployed ByteCode Sourcemap

16394:18461:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16875:10;-1:-1:-1;;;;;16889:4:0;16875:18;;16868:26;;;;16394:18461;;;;;33807:260;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33807:260:0;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;34601:251;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34601:251:0;;-1:-1:-1;34601:251:0;;-1:-1:-1;;;;;34601:251:0:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21670:673;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;21670:673:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;22349:665;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22349:665:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;25364:622::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25364:622:0;-1:-1:-1;;;;;;25364:622:0;;;;;;;;:::i;31861:858::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31861:858:0;-1:-1:-1;;;;;;31861:858:0;;;;;;;;:::i;31131:724::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31131:724:0;-1:-1:-1;;;;;;31131:724:0;;;;;;;;:::i;28119:842::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28119:842:0;-1:-1:-1;;;;;;28119:842:0;;;;;;;;:::i;23806:714::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23806:714:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;28967:802::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28967:802:0;-1:-1:-1;;;;;;28967:802:0;;;;;;;;:::i;34075:259::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34075:259:0;;;;;;;;;;;;:::i;25992:600::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25992:600:0;-1:-1:-1;;;;;;25992:600:0;;;;;;;;:::i;16531:38::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;16531:38:0;;;;;;;;;;;;;;26598:689;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26598:689:0;-1:-1:-1;;;;;;26598:689:0;;;;;;;;:::i;33613:186::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33613:186:0;;;;;;;;;;;;:::i;23093:707::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23093:707:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;20132:853::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20132:853:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;16483:41::-;;;;;;;;;;;;;:::i;34342:251::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34342:251:0;;-1:-1:-1;34342:251:0;;-1:-1:-1;;;;;34342:251:0:i;32725:844::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32725:844:0;-1:-1:-1;;;;;;32725:844:0;;;;;;;;:::i;27293:820::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27293:820:0;-1:-1:-1;;;;;;27293:820:0;;;;;;;;:::i;20991:673::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20991:673:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18379:734::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18379:734:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;19119:970;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19119:970:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;33807:260::-;33960:14;33999:60;34027:8;34037:9;34048:10;33999:27;:60::i;:::-;33992:67;33807:260;-1:-1:-1;;;;33807:260:0:o;34601:251::-;34745:21;34791:53;34819:7;34828:9;34839:4;34791:27;:53::i;:::-;34784:60;;34601:251;;;;;:::o;21670:673::-;21976:12;21990;22015;22030:47;22053:7;22062:6;22070;22030:22;:47::i;:::-;22015:62;;22088:10;22101;:33;;22125:9;22101:33;;;-1:-1:-1;;22101:33:0;22145:78;;;-1:-1:-1;;;22145:78:0;;22171:10;22145:78;;;;22191:4;22145:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22088:46;;-1:-1:-1;;;;;;22145:25:0;;;;;:78;;;;;-1:-1:-1;;22145:78:0;;;;;;;;-1:-1:-1;22145:25:0;:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22255:80;22271:6;22279;22287:9;22298:10;22310;22322:2;22326:8;22255:15;:80::i;:::-;22234:101;;;;;;;;21670:673;;;;;;;;;;;;;;;;:::o;22349:665::-;22638:16;22656:14;22683:12;22698:44;22721:7;22730:5;22737:4;22698:22;:44::i;:::-;22683:59;;22753:10;22766;:33;;22790:9;22766:33;;;-1:-1:-1;;22766:33:0;22810:78;;;-1:-1:-1;;;22810:78:0;;22836:10;22810:78;;;;22856:4;22810:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22753:46;;-1:-1:-1;;;;;;22810:25:0;;;;;:78;;;;;-1:-1:-1;;22810:78:0;;;;;;;;-1:-1:-1;22810:25:0;:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22926:80;22945:5;22952:9;22963:14;22979:12;22993:2;22997:8;22926:18;:80::i;:::-;22899:107;;;;-1:-1:-1;22349:665:0;-1:-1:-1;;;;;;;;;;;;;22349:665:0:o;25364:622::-;25588:21;25569:8;16640:15;16628:8;:27;;16620:62;;;;;-1:-1:-1;;;16620:62:0;;;;;;;;;;;;-1:-1:-1;;;16620:62:0;;;;;;;;;;;;;;;25632:53:::1;25661:7;25670:8;25680:4;;25632:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;25632:28:0::1;::::0;-1:-1:-1;;;25632:53:0:i:1;:::-;25622:63;;25735:12;25704:7;25729:1;25712:7;:14;:18;25704:27;;;;;;;;;;;;;;:43;;25696:97;;;;-1:-1:-1::0;;;25696:97:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25804:139;25850:4;;25855:1;25850:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;25850:7:0::1;25859:10;25871:49;25894:7;25903:4;;25908:1;25903:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;25903:7:0::1;25912:4;;25917:1;25912:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;25912:7:0::1;25871:22;:49::i;:::-;25922:7;25930:1;25922:10;;;;;;;;;;;;;;25804:31;:139::i;:::-;25954:24;25960:7;25969:4;;25954:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;25975:2:0;;-1:-1:-1;25954:5:0::1;::::0;-1:-1:-1;;25954:24:0:i:1;:::-;25364:622:::0;;;;;;;;;:::o;31861:858::-;32121:8;16640:15;16628:8;:27;;16620:62;;;;;-1:-1:-1;;;16620:62:0;;;;;;;;;;;;-1:-1:-1;;;16620:62:0;;;;;;;;;;;;;;;32166:4:::1;-1:-1:-1::0;;;;;32155:15:0::1;:4;;32160:1;32155:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;32155:7:0::1;-1:-1:-1::0;;;;;32155:15:0::1;;32147:55;;;::::0;;-1:-1:-1;;;32147:55:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;32213:13;32229:9;32213:25;;32255:4;-1:-1:-1::0;;;;;32249:19:0::1;;32276:8;32249:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;32311:4;-1:-1:-1::0;;;;;32305:20:0::1;;32326:49;32349:7;32358:4;;32363:1;32358:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;32358:7:0::1;32367:4;;32372:1;32367:7;;;;;;32326:49;32377:8;32305:81;;;;;;;;;;;;;-1:-1:-1::0;;;;;32305:81:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;32305:81:0;32298:89:::1;;;;32398:18;32433:4:::0;;-1:-1:-1;;32438:15:0;;32433:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;32433:21:0::1;-1:-1:-1::0;;;;;32419:46:0::1;;32466:2;32419:50;;;;;;;;;;;;;-1:-1:-1::0;;;;;32419:50:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;32419:50:0;32480:44:::1;::::0;;32419:50:::1;32480:44:::0;;::::1;::::0;;;;;;;;;;;32419:50;;-1:-1:-1;32480:44:0::1;::::0;;;32515:4;;;;;;32480:44;::::1;::::0;32515:4;;32480:44;32515:4;32480:44;::::1;;::::0;::::1;::::0;;;;-1:-1:-1;32521:2:0;;-1:-1:-1;32480:34:0::1;::::0;-1:-1:-1;;32480:44:0:i:1;:::-;32630:12:::0;32557:69:::1;32612:13:::0;32571:4;;-1:-1:-1;;32576:15:0;;32571:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;32571:21:0::1;-1:-1:-1::0;;;;;32557:46:0::1;;32604:2;32557:50;;;;;;;;;;;;;-1:-1:-1::0;;;;;32557:50:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;32557:50:0;;:54:::1;:69::i;:::-;:85;;32535:176;;;;-1:-1:-1::0;;;32535:176:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16693:1;;31861:858:::0;;;;;;:::o;31131:724::-;31365:8;16640:15;16628:8;:27;;16620:62;;;;;-1:-1:-1;;;16620:62:0;;;;;;;;;;;;-1:-1:-1;;;16620:62:0;;;;;;;;;;;;;;;31386:137:::1;31432:4;;31437:1;31432:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;31432:7:0::1;31441:10;31453:49;31476:7;31485:4;;31490:1;31485:7;;;;;;31453:49;31504:8;31386:31;:137::i;:::-;31534:18;31569:4:::0;;-1:-1:-1;;31574:15:0;;31569:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;31569:21:0::1;-1:-1:-1::0;;;;;31555:46:0::1;;31602:2;31555:50;;;;;;;;;;;;;-1:-1:-1::0;;;;;31555:50:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;31555:50:0;31616:44:::1;::::0;;31555:50:::1;31616:44:::0;;::::1;::::0;;;;;;;;;;;31555:50;;-1:-1:-1;31616:44:0::1;::::0;;;31651:4;;;;;;31616:44;::::1;::::0;31651:4;;31616:44;31651:4;31616:44;::::1;;::::0;::::1;::::0;;;;-1:-1:-1;31657:2:0;;-1:-1:-1;31616:34:0::1;::::0;-1:-1:-1;;31616:44:0:i:1;:::-;31766:12:::0;31693:69:::1;31748:13:::0;31707:4;;-1:-1:-1;;31712:15:0;;31707:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;31707:21:0::1;-1:-1:-1::0;;;;;31693:46:0::1;;31740:2;31693:50;;;;;;;;;;;;;-1:-1:-1::0;;;;;31693:50:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;28119:842:::0;28333:21;28305:8;16640:15;16628:8;:27;;16620:62;;;;;-1:-1:-1;;;16620:62:0;;;;;;;;;;;;-1:-1:-1;;;16620:62:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;28405:4:0::1;28380:29;:4:::0;;-1:-1:-1;;28385:15:0;;28380:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;28380:21:0::1;-1:-1:-1::0;;;;;28380:29:0::1;;28372:69;;;::::0;;-1:-1:-1;;;28372:69:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;28462:53;28491:7;28500:8;28510:4;;28462:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;28462:28:0::1;::::0;-1:-1:-1;;;28462:53:0:i:1;:::-;28452:63;;28565:12;28534:7;28559:1;28542:7;:14;:18;28534:27;;;;;;;;;;;;;;:43;;28526:97;;;;-1:-1:-1::0;;;28526:97:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28634:139;28680:4;;28685:1;28680:7;;;;;;28634:139;28784:35;28790:7;28799:4;;28784:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;28813:4:0::1;::::0;-1:-1:-1;28784:5:0::1;::::0;-1:-1:-1;;28784:35:0:i:1;:::-;28836:4;-1:-1:-1::0;;;;;28830:20:0::1;;28851:7;28876:1;28859:7;:14;:18;28851:27;;;;;;;;;;;;;;28830:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28890:63;28921:2;28925:7;28950:1;28933:7;:14;:18;28925:27;;;;;;;;;;;;;;28890:30;:63::i;23806:714::-:0;24124:14;24151:12;24166:44;24189:7;24198:5;24205:4;24166:22;:44::i;:::-;24151:59;;24221:10;24234;:33;;24258:9;24234:33;;;-1:-1:-1;;24234:33:0;24278:78;;;-1:-1:-1;;;24278:78:0;;24304:10;24278:78;;;;24324:4;24278:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24221:46;;-1:-1:-1;;;;;;24278:25:0;;;;;:78;;;;;-1:-1:-1;;24278:78:0;;;;;;;;-1:-1:-1;24278:25:0;:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24379:133;24441:5;24448:9;24459:14;24475:12;24489:2;24493:8;24379:47;:133::i;:::-;24367:145;23806:714;-1:-1:-1;;;;;;;;;;;;;23806:714:0:o;28967:802::-;29180:21;29152:8;16640:15;16628:8;:27;;16620:62;;;;;-1:-1:-1;;;16620:62:0;;;;;;;;;;;;-1:-1:-1;;;16620:62:0;;;;;;;;;;;;;;;29238:4:::1;-1:-1:-1::0;;;;;29227:15:0::1;:4;;29232:1;29227:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;29227:7:0::1;-1:-1:-1::0;;;;;29227:15:0::1;;29219:55;;;::::0;;-1:-1:-1;;;29219:55:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;29295:53;29323:7;29332:9;29343:4;;29295:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;29295:27:0::1;::::0;-1:-1:-1;;;29295:53:0:i:1;:::-;29285:63;;29381:9;29367:7;29375:1;29367:10;;;;;;;;;;;;;;:23;;29359:73;;;;-1:-1:-1::0;;;29359:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29449:4;-1:-1:-1::0;;;;;29443:19:0::1;;29470:7;29478:1;29470:10;;;;;;;;;;;;;;29443:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;29507:4;-1:-1:-1::0;;;;;29501:20:0::1;;29522:49;29545:7;29554:4;;29559:1;29554:7;;;;;;29522:49;29573:7;29581:1;29573:10;;;;;;;;;;;;;;29501:83;;;;;;;;;;;;;-1:-1:-1::0;;;;;29501:83:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;29501:83:0;29494:91:::1;;;;29596:24;29602:7;29611:4;;29596:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;29617:2:0;;-1:-1:-1;29596:5:0::1;::::0;-1:-1:-1;;29596:24:0:i:1;:::-;29683:7;29691:1;29683:10;;;;;;;;;;;;;;29671:9;:22;29667:94;;;29695:66;29726:10;29750:7;29758:1;29750:10;;;;;;;;;;;;;;29738:9;:22;29695:30;:66::i;:::-;28967:802:::0;;;;;;;;:::o;34075:259::-;34228:13;34266:60;34293:9;34304;34315:10;34266:26;:60::i;25992:600::-;26216:21;26197:8;16640:15;16628:8;:27;;16620:62;;;;;-1:-1:-1;;;16620:62:0;;;;;;;;;;;;-1:-1:-1;;;16620:62:0;;;;;;;;;;;;;;;26260:53:::1;26288:7;26297:9;26308:4;;26260:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;26260:27:0::1;::::0;-1:-1:-1;;;26260:53:0:i:1;:::-;26250:63;;26346:11;26332:7;26340:1;26332:10;;;;;;;;;;;;;;:25;;26324:75;;;;-1:-1:-1::0;;;26324:75:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16531:38:::0;;;:::o;26598:689::-;26814:21;26786:8;16640:15;16628:8;:27;;16620:62;;;;;-1:-1:-1;;;16620:62:0;;;;;;;;;;;;-1:-1:-1;;;16620:62:0;;;;;;;;;;;;;;;26872:4:::1;-1:-1:-1::0;;;;;26861:15:0::1;:4;;26866:1;26861:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;26861:7:0::1;-1:-1:-1::0;;;;;26861:15:0::1;;26853:55;;;::::0;;-1:-1:-1;;;26853:55:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;26929:54;26958:7;26967:9;26978:4;;26929:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;26929:28:0::1;::::0;-1:-1:-1;;;26929:54:0:i:1;:::-;26919:64;;27033:12;27002:7;27027:1;27010:7;:14;:18;27002:27;;;;;;;;;;;;;;:43;;26994:97;;;;-1:-1:-1::0;;;26994:97:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27108:4;-1:-1:-1::0;;;;;27102:19:0::1;;27129:7;27137:1;27129:10;;;;;;;;;;;;;;27102:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;27166:4;-1:-1:-1::0;;;;;27160:20:0::1;;27181:49;27204:7;27213:4;;27218:1;27213:7;;;;;;27181:49;27232:7;27240:1;27232:10;;;;;;;;;;;;;;27160:83;;;;;;;;;;;;;-1:-1:-1::0;;;;;27160:83:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;27160:83:0;27153:91:::1;;;;27255:24;27261:7;27270:4;;27255:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;27276:2:0;;-1:-1:-1;27255:5:0::1;::::0;-1:-1:-1;;27255:24:0:i:1;33613:186::-:0;33710:12;33742:49;33763:7;33772:8;33782;33742:20;:49::i;23093:707::-;23359:14;23340:8;16640:15;16628:8;:27;;16620:62;;;;;-1:-1:-1;;;16620:62:0;;;;;;;;;;;;-1:-1:-1;;;16620:62:0;;;;;;;;;;;;;;;23402:196:::1;23432:5;23452:4;23471:9;23495:14;23524:12;23559:4;23579:8;23402:15;:196::i;:::-;23386:212;;;;;;23609:85;23637:5;23644:2;23662:5;-1:-1:-1::0;;;;;23648:30:0::1;;23687:4;23648:45;;;;;;;;;;;;;-1:-1:-1::0;;;;;23648:45:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;23648:45:0;23609:27:::1;:85::i;:::-;23711:4;-1:-1:-1::0;;;;;23705:20:0::1;;23726:9;23705:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23747:45;23778:2;23782:9;23747:30;:45::i;20132:853::-:0;20386:12;20400;20367:8;16640:15;16628:8;:27;;16620:62;;;;;-1:-1:-1;;;16620:62:0;;;;;;;;;;;;-1:-1:-1;;;16620:62:0;;;;;;;;;;;;;;;20425:12:::1;20440:47;20463:7;20472:6;20480;20440:22;:47::i;:::-;20498:60;::::0;;-1:-1:-1;;;20498:60:0;;20530:10:::1;20498:60;::::0;::::1;::::0;-1:-1:-1;;;;;20498:31:0;::::1;:60:::0;;;;;;;;;;;;;;20425:62;;-1:-1:-1;20498:31:0;;::::1;::::0;:60;;;;;::::1;::::0;;;;;;;;;-1:-1:-1;20498:31:0;:60;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;20626:27:0::1;::::0;;;;;-1:-1:-1;;;;;20626:27:0;;::::1;;::::0;::::1;::::0;;;20596:12:::1;::::0;;;20626:23;;::::1;::::0;::::1;::::0;:27;;;;;;;;;;;20596:12;20626:23;:27;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;20626:27:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;20626:27:0;-1:-1:-1;20665:14:0::1;20684:41;20710:6:::0;20718;20684:25:::1;:41::i;:::-;20664:61;;;20767:6;-1:-1:-1::0;;;;;20757:16:0::1;:6;-1:-1:-1::0;;;;;20757:16:0::1;;:58;;20798:7;20807;20757:58;;;20777:7;20786;20757:58;20736:79:::0;;-1:-1:-1;20736:79:0;-1:-1:-1;20834:21:0;;::::1;;20826:70;;;;-1:-1:-1::0;;;20826:70:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20926:10;20915:7;:21;;20907:70;;;;-1:-1:-1::0;;;20907:70:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16693:1;;;;20132:853:::0;;;;;;;;;;;:::o;16483:41::-;;;:::o;34342:251::-;34486:21;34532:53;34561:7;34570:8;34580:4;34532:28;:53::i;32725:844::-;32992:8;16640:15;16628:8;:27;;16620:62;;;;;-1:-1:-1;;;16620:62:0;;;;;;;;;;;;-1:-1:-1;;;16620:62:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;33051:4:0::1;33026:29;:4:::0;;-1:-1:-1;;33031:15:0;;33026:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;33026:21:0::1;-1:-1:-1::0;;;;;33026:29:0::1;;33018:69;;;::::0;;-1:-1:-1;;;33018:69:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;33098:137;33144:4;;33149:1;33144:7;;;;;;33098:137;33246:55;33281:4;;33246:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;33295:4:0::1;::::0;-1:-1:-1;33246:34:0::1;::::0;-1:-1:-1;;33246:55:0:i:1;:::-;33312:14;33343:4;-1:-1:-1::0;;;;;33329:29:0::1;;33367:4;33329:44;;;;;;;;;;;;;-1:-1:-1::0;;;;;33329:44:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;33329:44:0;;-1:-1:-1;33392:25:0;;::::1;;33384:79;;;;-1:-1:-1::0;;;33384:79:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33480:4;-1:-1:-1::0;;;;;33474:20:0::1;;33495:9;33474:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;33516:45;33547:2;33551:9;33516:30;:45::i;27293:820::-:0;27507:21;27479:8;16640:15;16628:8;:27;;16620:62;;;;;-1:-1:-1;;;16620:62:0;;;;;;;;;;;;-1:-1:-1;;;16620:62:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;27579:4:0::1;27554:29;:4:::0;;-1:-1:-1;;27559:15:0;;27554:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;27554:21:0::1;-1:-1:-1::0;;;;;27554:29:0::1;;27546:69;;;::::0;;-1:-1:-1;;;27546:69:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;27636:53;27664:7;27673:9;27684:4;;27636:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;27636:27:0::1;::::0;-1:-1:-1;;;27636:53:0:i:1;:::-;27626:63;;27722:11;27708:7;27716:1;27708:10;;;;;;;;;;;;;;:25;;27700:75;;;;-1:-1:-1::0;;;27700:75:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20991:673:::0;21228:16;21246:14;21209:8;16640:15;16628:8;:27;;16620:62;;;;;-1:-1:-1;;;16620:62:0;;;;;;;;;;;;-1:-1:-1;;;16620:62:0;;;;;;;;;;;;;;;21300:196:::1;21330:5;21350:4;21369:9;21393:14;21422:12;21457:4;21477:8;21300:15;:196::i;:::-;21273:223:::0;;-1:-1:-1;21273:223:0;-1:-1:-1;21507:51:0::1;21535:5:::0;21542:2;21273:223;21507:27:::1;:51::i;:::-;21575:4;-1:-1:-1::0;;;;;21569:20:0::1;;21590:9;21569:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21611:45;21642:2;21646:9;21611:30;:45::i;:::-;20991:673:::0;;;;;;;;;;:::o;18379:734::-;18667:12;18681;18695:14;18648:8;16640:15;16628:8;:27;;16620:62;;;;;-1:-1:-1;;;16620:62:0;;;;;;;;;;;;-1:-1:-1;;;16620:62:0;;;;;;;;;;;;;;;18743:85:::1;18757:6;18765;18773:14;18789;18805:10;18817;18743:13;:85::i;:::-;18722:106:::0;;-1:-1:-1;18722:106:0;-1:-1:-1;18839:12:0::1;18854:47;18877:7;18886:6:::0;18894;18854:22:::1;:47::i;:::-;18839:62;;18912:66;18944:6;18952:10;18964:4;18970:7;18912:31;:66::i;:::-;18989;19021:6;19029:10;19041:4;19047:7;18989:31;:66::i;:::-;19091:4;-1:-1:-1::0;;;;;19078:23:0::1;;19102:2;19078:27;;;;;;;;;;;;;-1:-1:-1::0;;;;;19078:27:0::1;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;19078:27:0;18379:734;;;;-1:-1:-1;19078:27:0;;-1:-1:-1;18379:734:0;;-1:-1:-1;;;;;;;;;18379:734:0:o;19119:970::-;19372:16;19390:14;19406;19353:8;16640:15;16628:8;:27;;16620:62;;;;;-1:-1:-1;;;16620:62:0;;;;;;;;;;;;-1:-1:-1;;;16620:62:0;;;;;;;;;;;;;;;19460:176:::1;19488:5;19508:4;19527:18;19560:9;19584:14;19613:12;19460:13;:176::i;:::-;19433:203:::0;;-1:-1:-1;19433:203:0;-1:-1:-1;19647:12:0::1;19662:44;19685:7;19694:5:::0;19701:4:::1;19662:22;:44::i;:::-;19647:59;;19717:69;19749:5;19756:10;19768:4;19774:11;19717:31;:69::i;:::-;19803:4;-1:-1:-1::0;;;;;19797:19:0::1;;19824:9;19797:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;19860:4;-1:-1:-1::0;;;;;19854:20:0::1;;19875:4;19881:9;19854:37;;;;;;;;;;;;;-1:-1:-1::0;;;;;19854:37:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;19854:37:0;19847:45:::1;;;;19928:4;-1:-1:-1::0;;;;;19915:23:0::1;;19939:2;19915:27;;;;;;;;;;;;;-1:-1:-1::0;;;;;19915:27:0::1;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;19915:27:0;;-1:-1:-1;19993:9:0::1;:21:::0;-1:-1:-1;19989:92:0::1;;;20016:65;20047:10;20071:9;20059;:21;20016:30;:65::i;:::-;16693:1;19119:970:::0;;;;;;;;;;;:::o;5395:513::-;5488:14;5534:1;5523:8;:12;5515:66;;;;-1:-1:-1;;;5515:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5612:1;5600:9;:13;:31;;;;;5630:1;5617:10;:14;5600:31;5592:82;;;;-1:-1:-1;;;5592:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5685:20;5708:17;:8;5721:3;5708:12;:17::i;:::-;5685:40;-1:-1:-1;5736:14:0;5753:31;5685:40;5773:10;5753:19;:31::i;:::-;5736:48;-1:-1:-1;5795:16:0;5814:40;5838:15;5814:19;:9;5828:4;5814:13;:19::i;:::-;:23;;:40::i;:::-;5795:59;;5889:11;5877:9;:23;;;;;;;5395:513;-1:-1:-1;;;;;;;5395:513:0:o;7169:530::-;7270:21;7327:1;7312:4;:11;:16;;7304:57;;;;;-1:-1:-1;;;7304:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7393:4;:11;7382:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7382:23:0;;7372:33;;7446:9;7416:7;7441:1;7424:7;:14;:18;7416:27;;;;;;;;;;;;;;;;;:39;7480:11;;-1:-1:-1;;7480:15:0;7466:226;7497:5;;7466:226;;7525:14;7541:15;7560:42;7572:7;7581:4;7590:1;7586;:5;7581:11;;;;;;;;;;;;;;7594:4;7599:1;7594:7;;;;;;;;;;;;;;7560:11;:42::i;:::-;7524:78;;;;7634:46;7646:7;7654:1;7646:10;;;;;;;;;;;;;;7658:9;7669:10;7634:11;:46::i;:::-;7617:7;7629:1;7625;:5;7617:14;;;;;;;;;;;;;;;;;:63;-1:-1:-1;;;;7504:3:0;7466:226;;;;7169:530;;;;;:::o;3918:478::-;4007:12;4033:14;4049;4067:26;4078:6;4086;4067:10;:26::i;:::-;4231:32;;;-1:-1:-1;;4231:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4221:43;;;;;;4134:251;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4124:262;;;;;;;;;3918:478;-1:-1:-1;;;;;3918:478:0:o;6579:509::-;6680:21;6737:1;6722:4;:11;:16;;6714:57;;;;;-1:-1:-1;;;6714:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;6803:4;:11;6792:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6792:23:0;;6782:33;;6839:8;6826:7;6834:1;6826:10;;;;;;;;;;;;;:21;;;;;6863:6;6858:223;6889:1;6875:4;:11;:15;6871:1;:19;6858:223;;;6913:14;6929:15;6948:42;6960:7;6969:4;6974:1;6969:7;;;;;;;;;;;;;;6978:4;6983:1;6987;6983:5;6978:11;;;;;;;6948:42;6912:78;;;;7022:47;7035:7;7043:1;7035:10;;;;;;;;;;;;;;7047:9;7058:10;7022:12;:47::i;:::-;7005:7;7013:1;7017;7013:5;7005:14;;;;;;;;;;;;;;;;;:64;-1:-1:-1;;6892:3:0;;6858:223;;8670:402;8895:51;;;-1:-1:-1;;;;;8895:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8895:51:0;;;8884:63;;;;8849:12;;8863:17;;8884:10;;;;8895:51;8884:63;;;8895:51;8884:63;;8895:51;8884:63;;;;;;;;;;-1:-1:-1;;8884:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8848:99;;;;8966:7;:57;;;;-1:-1:-1;8978:11:0;;:16;;:44;;;9009:4;8998:24;;;;;;;;;;;;;;;-1:-1:-1;8998:24:0;8978:44;8958:106;;;;-1:-1:-1;;;8958:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8670:402;;;;;;:::o;24631:727::-;24738:6;24733:618;24764:1;24750:4;:11;:15;24746:1;:19;24733:618;;;24788:13;24803:14;24822:4;24827:1;24822:7;;;;;;;;;;;;;;24831:4;24836:1;24840;24836:5;24831:11;;;;;;;;;;;;;;24787:56;;;;24859:14;24878:40;24904:5;24911:6;24878:25;:40::i;:::-;24858:60;;;24933:14;24950:7;24958:1;24962;24958:5;24950:14;;;;;;;;;;;;;;24933:31;;24980:15;24997;25025:6;-1:-1:-1;;;;;25016:15:0;:5;-1:-1:-1;;;;;25016:15:0;;:61;;25058:9;25074:1;25016:61;;;25040:1;25044:9;25016:61;24979:98;;;;25092:10;25123:1;25109:4;:11;:15;25105:1;:19;:80;;25182:3;25105:80;;;25127:52;25150:7;25159:6;25167:4;25172:1;25176;25172:5;25167:11;;;;;;;;;;;;;;25127:22;:52::i;:::-;25092:93;;25213:46;25236:7;25245:5;25252:6;25213:22;:46::i;:::-;-1:-1:-1;;;;;25200:65:0;;25284:10;25296;25308:2;25322:1;25312:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25312:12:0;;25200:139;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25200:139:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24767:3:0;;;;;-1:-1:-1;24733:618:0;;-1:-1:-1;;;;;;;;24733:618:0;;;24631:727;;;:::o;29916:1209::-;30029:6;30024:1094;30055:1;30041:4;:11;:15;30037:1;:19;30024:1094;;;30079:13;30094:14;30113:4;30118:1;30113:7;;;;;;;;;;;;;;30122:4;30127:1;30131;30127:5;30122:11;;;;;;;;;;;;;;30078:56;;;;30150:14;30169:40;30195:5;30202:6;30169:25;:40::i;:::-;30149:60;;;30224:17;30257:46;30280:7;30289:5;30296:6;30257:22;:46::i;:::-;30224:80;;30319:16;30350:17;30438:13;30453;30471:4;-1:-1:-1;;;;;30471:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30471:18:0;;;;;;;30437:52;;;;;-1:-1:-1;30437:52:0;;-1:-1:-1;30505:17:0;;-1:-1:-1;;;;;30546:15:0;;;;;;;:61;;30588:8;30598;30546:61;;;30565:8;30575;30546:61;30504:103;;;;30636:63;30686:12;30650:5;-1:-1:-1;;;;;30636:30:0;;30675:4;30636:45;;;;;;;;;;;;;-1:-1:-1;;;;;30636:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;:63;30622:77;;30729:69;30757:11;30770:12;30784:13;30729:27;:69::i;:::-;30714:84;;30024:1094;;;;30829:15;30846;30874:6;-1:-1:-1;;;;;30865:15:0;:5;-1:-1:-1;;;;;30865:15:0;;:67;;30910:12;30929:1;30865:67;;;30889:1;30893:12;30865:67;30828:104;;;;30947:10;30978:1;30964:4;:11;:15;30960:1;:19;:80;;31037:3;30960:80;;;30982:52;31005:7;31014:6;31022:4;31027:1;31031;31027:5;31022:11;;;;;;;30982:52;31093:12;;;31103:1;31093:12;;;;;;;;;;31055:51;;;;;;;;;;;;;;;-1:-1:-1;;;;;31055:51:0;;;;;;;;;;;;;;;;;;;;;;30947:93;;-1:-1:-1;31055:9:0;;;;;;31065:10;;31077;;30947:93;;31093:12;;31055:51;;;;;;;;31093:12;;31055:51;;;;31093:12;;31055:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;30058:3:0;;;;;-1:-1:-1;30024:1094:0;;-1:-1:-1;;;;;;;;;;30024:1094:0;;;29916:1209;;:::o;2938:129::-;3022:5;;;3017:16;;;;3009:50;;;;;-1:-1:-1;;;3009:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;9080:195;9188:12;;;9150;9188;;;;;;;;;-1:-1:-1;;;;;9167:7:0;;;9181:5;;9167:34;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9167:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9149:52;;;9220:7;9212:55;;;;-1:-1:-1;;;9212:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6029:468;6122:13;6168:1;6156:9;:13;6148:68;;;;-1:-1:-1;;;6148:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6247:1;6235:9;:13;:31;;;;;6265:1;6252:10;:14;6235:31;6227:82;;;;-1:-1:-1;;;6227:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6320:14;6337:34;6366:4;6337:24;:9;6351;6337:13;:24::i;:::-;:28;;:34::i;:::-;6320:51;-1:-1:-1;6382:16:0;6401:34;6431:3;6401:25;:10;6416:9;6401:14;:25::i;:34::-;6382:53;;6457:32;6487:1;6470:11;6458:9;:23;;;;;;;6457:29;:32::i;:::-;6446:43;6029:468;-1:-1:-1;;;;;;6029:468:0:o;4956:317::-;5038:12;5081:1;5071:7;:11;5063:59;;;;-1:-1:-1;;;5063:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5152:1;5141:8;:12;:28;;;;;5168:1;5157:8;:12;5141:28;5133:79;;;;-1:-1:-1;;;5133:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5257:8;5233:21;:7;5245:8;5233:11;:21::i;:::-;:32;;;;;;;4956:317;-1:-1:-1;;;;4956:317:0:o;8301:361::-;8496:45;;;-1:-1:-1;;;;;8496:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8485:57;;;;8450:12;;8464:17;;8485:10;;;;8496:45;8485:57;;;8496:45;8485:57;;8496:45;8485:57;;;;;;;;;;-1:-1:-1;;8485:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8449:93;;;;8561:7;:57;;;;-1:-1:-1;8573:11:0;;:16;;:44;;;8604:4;8593:24;;;;;;;;;;;;;;;-1:-1:-1;8593:24:0;8573:44;8553:101;;;;;-1:-1:-1;;;8553:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8301:361;;;;;:::o;3481:345::-;3556:14;3572;3617:6;-1:-1:-1;;;;;3607:16:0;:6;-1:-1:-1;;;;;3607:16:0;;;3599:64;;;;-1:-1:-1;;;3599:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3702:6;-1:-1:-1;;;;;3693:15:0;:6;-1:-1:-1;;;;;3693:15:0;;:53;;3731:6;3739;3693:53;;;3712:6;3720;3693:53;3674:72;;-1:-1:-1;3674:72:0;-1:-1:-1;;;;;;3765:20:0;;3757:61;;;;;-1:-1:-1;;;3757:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3481:345;;;;;:::o;16997:1376::-;17215:12;17229;17370:1;-1:-1:-1;;;;;17310:62:0;17326:7;-1:-1:-1;;;;;17310:32:0;;17343:6;17351;17310:48;;;;;;;;;;;;;-1:-1:-1;;;;;17310:48:0;;;;;;-1:-1:-1;;;;;17310:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17310:48:0;-1:-1:-1;;;;;17310:62:0;;17306:146;;;17405:7;-1:-1:-1;;;;;17389:35:0;;17425:6;17433;17389:51;;;;;;;;;;;;;-1:-1:-1;;;;;17389:51:0;;;;;;-1:-1:-1;;;;;17389:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17306:146:0;17463:13;17478;17495:51;17522:7;17531:6;17539;17495:26;:51::i;:::-;17462:84;;;;17561:8;17573:1;17561:13;:30;;;;-1:-1:-1;17578:13:0;;17561:30;17557:809;;;17630:14;;-1:-1:-1;17646:14:0;;-1:-1:-1;17557:809:0;;;17694:19;17716:56;17737:14;17753:8;17763;17716:20;:56::i;:::-;17694:78;;17809:14;17791;:32;17787:568;;17870:10;17852:14;:28;;17844:77;;;;-1:-1:-1;;;17844:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17962:14;;-1:-1:-1;17978:14:0;-1:-1:-1;17978:14:0;17787:568;;;18034:19;18056:56;18077:14;18093:8;18103;18056:20;:56::i;:::-;18034:78;;18156:14;18138;:32;;18131:40;;;;18216:10;18198:14;:28;;18190:77;;;;-1:-1:-1;;;18190:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18308:14;-1:-1:-1;18324:14:0;;-1:-1:-1;17787:568:0;17557:809;;16997:1376;;;;;;;;;;;:::o;3075:142::-;3127:6;3154;;;:30;;-1:-1:-1;;3169:5:0;;;3183:1;3178;3169:5;3178:1;3164:15;;;;;:20;3154:30;3146:63;;;;;-1:-1:-1;;;3146:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;2802:128;2886:5;;;2881:16;;;;2873:49;;;;;-1:-1:-1;;;2873:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;4454:389;4547:13;4562;4589:14;4608:26;4619:6;4627;4608:10;:26::i;:::-;4588:46;;;4646:13;4661;4692:32;4700:7;4709:6;4717;4692:7;:32::i;:::-;-1:-1:-1;;;;;4679:58:0;;:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4679:60:0;;;;;;;4645:94;;;;;-1:-1:-1;4645:94:0;;-1:-1:-1;;;;;;4773:16:0;;;;;;;:62;;4816:8;4826;4773:62;;;4793:8;4803;4773:62;4750:85;;;;-1:-1:-1;4454:389:0;-1:-1:-1;;;;;;;4454:389:0:o

Swarm Source

ipfs://f5dd67d47f108fcbc4c17314902460f0c2c44be43ceadc8f5deefc4a278141d7
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.