Contract 0xE18950c8F3b01f549cFc79dC44C3944FBd43fB76 2

Contract Overview

ICY.MONEY: ICY Token
Balance:
0 AVAX

AVAX Value:
$0.00

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xfff7253fb77d0894256eb5a971327d8cb362574fb2207fd17969970bbea5aa7eApprove Max149588012022-05-20 21:09:366 hrs 45 mins ago0x0166219c360c987a7c82e1eefb7437268321a853 IN  ICY.MONEY: ICY Token0 AVAX0.000707025 25
0xb37339147da8c847cc80ed1d973823985f72cafe8278cb59b111142f9ad4ccd6Approve148458942022-05-18 6:28:562 days 21 hrs ago0xc8e60c38e7a71e7aa8f137e279be3fa59df94541 IN  ICY.MONEY: ICY Token0 AVAX0.001234741 26.5
0xdb0f474da42f587658c5e06cc7feaeccea283f3bca79282cb11212fa0929fb41Approve Max148370112022-05-18 1:29:233 days 2 hrs ago0x682625db7a4c592f98c7a5aaf5c2e2a52c7e0c98 IN  ICY.MONEY: ICY Token0 AVAX0.000735306 26
0x18558c9873532f23263eecc2bdf6274030e6b29034c3723173581cb34dd43a6fApprove Max147989942022-05-17 4:13:073 days 23 hrs ago0x0a6bd795e8f19132c0471782dbd096e57e50d317 IN  ICY.MONEY: ICY Token0 AVAX0.000707025 25
0xf714b3a0fdf9bc57bdd5c1961c5e7ffd0d7e74ec8567bd8c127027e1102ca7deApprove147736122022-05-16 14:05:004 days 13 hrs ago0x52de0a4b1a743e5edfdf646d744b60a1ea7d044b IN  ICY.MONEY: ICY Token0 AVAX0.00072775 25
0x889771805641952cc59425c8a7f791f8ebdba82a130e75790cbb728805c7d390Approve Max147479782022-05-15 23:51:495 days 4 hrs ago0x2572f19edb84419462ca424b3935249c6a25fdb8 IN  ICY.MONEY: ICY Token0 AVAX0.000707025 25
0x0d9c5b33eaf4175fac71ffad8d6c7e6d1fe2a22a79b497590635ed3b3cae0861Approve Max147479782022-05-15 23:51:495 days 4 hrs ago0x2572f19edb84419462ca424b3935249c6a25fdb8 IN  ICY.MONEY: ICY Token0 AVAX0.000707025 25
0x3e91bb3d2e9769d73e6df94ad65291676702b604fb71ae33eb973db3012c1c73Approve Max147438282022-05-15 21:33:455 days 6 hrs ago0xcbe9dfe75fddc5ab5876d6e5c6b8a0d781f1602b IN  ICY.MONEY: ICY Token0 AVAX0.000707025 25
0x55ac4ccafde00c4d5f4eaadcd7e46c12f64e4ec12b1d57f90125daedcfb1ca07Approve Max147423692022-05-15 20:44:455 days 7 hrs ago0xd01b977271e655cca809f7f668e309f84e879757 IN  ICY.MONEY: ICY Token0 AVAX0.000707025 25
0xf08c2590923572b0625b24226cd95e65235f19f3b8f39172d17f3c41aec992d4Approve147204382022-05-15 8:33:285 days 19 hrs ago0xfb1c12c4ecf530f15c6a8c6f8b50683ac46783e2 IN  ICY.MONEY: ICY Token0 AVAX0.001258038 27
0xf0e247f7fad1f80f695c2affc277ee6efe8f6714844f2b92605978a3272b79dbTransfer147005312022-05-14 21:28:296 days 6 hrs ago0x1ee517a8cf6addf931bf6f948d6dd2734d2bc289 IN  ICY.MONEY: ICY Token0 AVAX0.015308947527.5
0x2fb0ea0d99b4bbc2cb7e798cc0f1ff64796f6e08a68b82cd6cbb5b248c73e1f7Approve146921152022-05-14 16:48:046 days 11 hrs ago0xa444a12e9cfbe486e5d532c52b21a175412c1cf5 IN  ICY.MONEY: ICY Token0 AVAX0.000771415 26.5
0x6face4ab79f97bd549bb0c721108b0073e397cdc3bcce2a74a04d8f47dbb1bb0Approve146921112022-05-14 16:47:586 days 11 hrs ago0xa444a12e9cfbe486e5d532c52b21a175412c1cf5 IN  ICY.MONEY: ICY Token0 AVAX0.000771415 26.5
0x77939148cd3d8b858f58de7c76ed03ba8c006cf6e9570722c36029c89e1b4a14Transfer146908102022-05-14 16:04:466 days 11 hrs ago0x8e179e832eed370098c61f883e3d062d8b3048b7 IN  ICY.MONEY: ICY Token0 AVAX0.013355364 26.5
0xf8df78b8a62fdf2563d4a0a38f3c45dcf7868606197bfaab4b4c20c82e44d4cdApprove Max146086442022-05-12 18:25:218 days 9 hrs ago0x4afd2887cfcefc8e7ccb204f82c3f6897ebd4a94 IN  ICY.MONEY: ICY Token0 AVAX0.003527097528 73.205154073
0x3b941610258168976a58a6ccd27a8ddbb8be8258c15fda513b4eb2a02b7e5071Approve146006432022-05-12 14:00:368 days 13 hrs ago0xfa41c9de182ad25a4823dfd896e4f28791613faf IN  ICY.MONEY: ICY Token0 AVAX0.003094434931 106.301440448
0x35491d36e10b97bdfaca40f466cd584369ffc3964a9351ea3e6ccd28d5711cb9Approve145781332022-05-12 1:39:579 days 2 hrs ago0x2a4c08391ca2d58e4d2f17f14f616fde52270399 IN  ICY.MONEY: ICY Token0 AVAX0.004074186273 87.440148371
0x01e9d23a0af67677c5a7033fd61b2aa8c216dc31f7169dbb55e4311583c46a5bApprove Max145066972022-05-10 9:50:1810 days 18 hrs ago0x000098dcab04760e6fac7deca1b98bbd0ad7da7c IN  ICY.MONEY: ICY Token0 AVAX0.00298885264 62.033844051
0x57c2895dc9c26d7c7df9e90d0294c9afb377ec6cd66c217a741551c633a14ba2Approve144911992022-05-10 1:01:4211 days 2 hrs ago0x2fa6bfd5ee435d84ff623744708b4291387d0489 IN  ICY.MONEY: ICY Token0 AVAX0.007073032379 151.801355954
0xf763241d205e2255d07f4bee8ee847e58529b1f69c7c5759bbebc3d113509e63Approve Max144904062022-05-10 0:34:5311 days 3 hrs ago0xe3e0bfdada051c8d285283e75758264e8ba758ea IN  ICY.MONEY: ICY Token0 AVAX0.010868331853 225.572982153
0x16c6288a7962bf1b5fff5403d34a4c7a01072b64ed5ff50483e43b30f14c043dApprove144903952022-05-10 0:34:3011 days 3 hrs ago0xe3e0bfdada051c8d285283e75758264e8ba758ea IN  ICY.MONEY: ICY Token0 AVAX0.010848903365 232.839064365
0x3be9513c0217c9bdd74e1d78a1f9603f1008c41d688aa7be58e283ed5dac9b39Approve Max144073642022-05-08 0:43:2513 days 3 hrs ago0x0a6bd795e8f19132c0471782dbd096e57e50d317 IN  ICY.MONEY: ICY Token0 AVAX0.000862450551 30.495758704
0xce1de93041e28fb6655c04bb3b1422216b7f5daca398dd10430aabe4b275c578Approve144060402022-05-07 23:57:2113 days 3 hrs ago0x116aae29a626c76d0766f80b16a86e64d1f095f3 IN  ICY.MONEY: ICY Token0 AVAX0.002672192393 57.350568598
0xb7fd591f444e43a22bc417422f7b07060e736686eaef0dc1bfc4894819be737cApprove Max143981362022-05-07 19:15:1313 days 8 hrs ago0x17db2d3e50aba339e5c989aa01fbbd3682af93e8 IN  ICY.MONEY: ICY Token0 AVAX0.001110942988 39.282309273
0xde88c36e3e58df88273a202336534a12a1028ba31baf9282d65d1932ef417c08Approve143210522022-05-05 22:49:3515 days 5 hrs ago0x09e2b5463fcd9de64ed9d3446ca0efbfaf161c04 IN  ICY.MONEY: ICY Token0 AVAX0.002533309788 54.369871413
[ Download CSV Export 

OVERVIEW

Hyperbonding-as-a-Service offering higher returns than normal staking, with 12% $ETH reflections to holders and recurring buybacks. Located on the Avalanche C-Chain.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x29f725f9282b2d80fb2e97da8ea26a34487c8d889aa9b589f54f488b17697ac2148459562022-05-18 6:31:012 days 21 hrs ago ICY.MONEY: ICY Token0x0cc3489ba1e0f96de99aaba718fb6771e0b725a81.166120778424407806 AVAX
0x29f725f9282b2d80fb2e97da8ea26a34487c8d889aa9b589f54f488b17697ac2148459562022-05-18 6:31:012 days 21 hrs ago Trader Joe: Router ICY.MONEY: ICY Token1.166120778424407806 AVAX
0xeb953927760e4196c6011a7dfa01ac4f3378f2691dc8c057c49d0170f258684c134078302022-04-14 12:12:5036 days 15 hrs ago ICY.MONEY: ICY Token0x0cc3489ba1e0f96de99aaba718fb6771e0b725a81.141277983527212034 AVAX
0xeb953927760e4196c6011a7dfa01ac4f3378f2691dc8c057c49d0170f258684c134078302022-04-14 12:12:5036 days 15 hrs ago Trader Joe: Router ICY.MONEY: ICY Token1.141277983527212034 AVAX
0xab6a3cb4ccecaa0f60761b407c8bcfda35726e12b14f0b7d52ed0e3d9babfcd5132602672022-04-11 1:39:3440 days 2 hrs ago ICY.MONEY: ICY Token0x0cc3489ba1e0f96de99aaba718fb6771e0b725a81.051689049624019862 AVAX
0xab6a3cb4ccecaa0f60761b407c8bcfda35726e12b14f0b7d52ed0e3d9babfcd5132602672022-04-11 1:39:3440 days 2 hrs ago Trader Joe: Router ICY.MONEY: ICY Token1.051689049624019862 AVAX
0x812417d0131a59f9a3706147fa86aac3f5c4b6ebf8c4db2045faf5ba28fc921a131870632022-04-09 8:26:1041 days 19 hrs ago ICY.MONEY: ICY Token0x0cc3489ba1e0f96de99aaba718fb6771e0b725a81.088140942450592874 AVAX
0x812417d0131a59f9a3706147fa86aac3f5c4b6ebf8c4db2045faf5ba28fc921a131870632022-04-09 8:26:1041 days 19 hrs ago Trader Joe: Router ICY.MONEY: ICY Token1.088140942450592874 AVAX
0x6fdecb1578e498dda5799136817d9de9821cbc10c867e91cb70e874e06adf3c6131845882022-04-09 7:02:4941 days 20 hrs ago ICY.MONEY: ICY Token0x0cc3489ba1e0f96de99aaba718fb6771e0b725a81.06843446217372989 AVAX
0x6fdecb1578e498dda5799136817d9de9821cbc10c867e91cb70e874e06adf3c6131845882022-04-09 7:02:4941 days 20 hrs ago Trader Joe: Router ICY.MONEY: ICY Token1.06843446217372989 AVAX
0x1db8cfcacd9e874324032952a86f851fa7531e5398da573943c58bd38eb8f82d131825592022-04-09 5:54:1641 days 22 hrs ago ICY.MONEY: ICY Token0x0cc3489ba1e0f96de99aaba718fb6771e0b725a81.080200666701009354 AVAX
0x1db8cfcacd9e874324032952a86f851fa7531e5398da573943c58bd38eb8f82d131825592022-04-09 5:54:1641 days 22 hrs ago Trader Joe: Router ICY.MONEY: ICY Token1.080200666701009354 AVAX
0x713821e903b1ecc24f64639b547c42647d48b5383ffdfed8d77c214c8c33e45e131733252022-04-09 0:43:0942 days 3 hrs ago ICY.MONEY: ICY Token0x0cc3489ba1e0f96de99aaba718fb6771e0b725a80.872663757159557826 AVAX
0x713821e903b1ecc24f64639b547c42647d48b5383ffdfed8d77c214c8c33e45e131733252022-04-09 0:43:0942 days 3 hrs ago Trader Joe: Router ICY.MONEY: ICY Token0.872663757159557826 AVAX
0x06e65f641e5ffaef9d765d2827988b9219a8ba4c905d638151e0e1741a4a0987131730862022-04-09 0:35:1142 days 3 hrs ago ICY.MONEY: ICY Token0x0cc3489ba1e0f96de99aaba718fb6771e0b725a821.277979788805249717 AVAX
0x06e65f641e5ffaef9d765d2827988b9219a8ba4c905d638151e0e1741a4a0987131730862022-04-09 0:35:1142 days 3 hrs ago Trader Joe: Router ICY.MONEY: ICY Token21.277979788805249717 AVAX
0x64ac850a2b27da925cd4055d69d0c9bcb9a2eaa0ec427256b70aeb69ba564d4b131728172022-04-09 0:26:0742 days 3 hrs ago ICY.MONEY: ICY Token0x0cc3489ba1e0f96de99aaba718fb6771e0b725a829.776478803884707672 AVAX
0x64ac850a2b27da925cd4055d69d0c9bcb9a2eaa0ec427256b70aeb69ba564d4b131728172022-04-09 0:26:0742 days 3 hrs ago Trader Joe: Router ICY.MONEY: ICY Token29.776478803884707672 AVAX
0x2f80f559649fe6ab0c8dd13940caacfb7148095b111cf683d8c5d932d18ee207131727992022-04-09 0:25:2842 days 3 hrs ago ICY.MONEY: ICY Token0x0cc3489ba1e0f96de99aaba718fb6771e0b725a839.485598474126068613 AVAX
0x2f80f559649fe6ab0c8dd13940caacfb7148095b111cf683d8c5d932d18ee207131727992022-04-09 0:25:2842 days 3 hrs ago Trader Joe: Router ICY.MONEY: ICY Token39.485598474126068613 AVAX
0x471c363c63e9810ca864a7728a59b8fbc47b6d26ff53fad96ff43fba7579245e131726572022-04-09 0:20:3742 days 3 hrs ago ICY.MONEY: ICY Token0x0cc3489ba1e0f96de99aaba718fb6771e0b725a834.611085418169699975 AVAX
0x471c363c63e9810ca864a7728a59b8fbc47b6d26ff53fad96ff43fba7579245e131726572022-04-09 0:20:3742 days 3 hrs ago Trader Joe: Router ICY.MONEY: ICY Token34.611085418169699975 AVAX
0x548c5d0878fb1e6634b4456149da7211dd05ea2afa75f9a56ff1f0c9001c2859131726322022-04-09 0:19:4642 days 3 hrs ago ICY.MONEY: ICY Token0x0cc3489ba1e0f96de99aaba718fb6771e0b725a844.312607827099712587 AVAX
0x548c5d0878fb1e6634b4456149da7211dd05ea2afa75f9a56ff1f0c9001c2859131726322022-04-09 0:19:4642 days 3 hrs ago Trader Joe: Router ICY.MONEY: ICY Token44.312607827099712587 AVAX
0x4af275e728a02bd989759c3df6b40b9ac4c725c088f261b5ea0102354896c8c1131725542022-04-09 0:17:1142 days 3 hrs ago ICY.MONEY: ICY Token0x0cc3489ba1e0f96de99aaba718fb6771e0b725a858.762116706857982083 AVAX
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ICYMONEY

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at snowtrace.io on 2021-12-18
*/

pragma solidity ^0.8.0;

library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

interface IBEP20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    /**
     * Function modifier to require caller to be contract owner
     */
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    /**
     * Function modifier to require caller to be authorized
     */
    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    /**
     * Authorize address. Owner only
     */
    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    /**
     * Remove address' authorization. Owner only
     */
    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    /**
     * Check if address is owner
     */
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    /**
     * Return address' authorization status
     */
    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    /**
     * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized
     */
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDEXRouter {
    function factory() external pure returns (address);
    function WAVAX() 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 addLiquidityAVAX(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountAVAXMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountAVAX, uint liquidity);

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

    function swapExactAVAXForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

    function swapExactTokensForAVAXSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IDividendDistributor {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function process(uint256 gas) external;
}

contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;

    address _token;
    IBEP20 WETH = IBEP20(0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB);
    address WAVAX = 0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7;
    IDEXRouter router;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }

    mapping (address => Share) public shares;
    address[] shareholders;
    mapping (address => uint256) shareholderIndexes;
    mapping (address => uint256) shareholderClaims;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;

    uint256 public minPeriod = 1 hours;
    uint256 public minDistribution = 10 * (10 ** 18);

    uint256 currentIndex;

    bool initialized;
    modifier initialization() {
        require(!initialized);
        _;
        initialized = true;
    }

    modifier onlyToken() {
        require(msg.sender == _token);
        _;
    }

    constructor (address _router) {
        router = IDEXRouter(_router);
        _token = msg.sender;
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
    }

    function setShare(address shareholder, uint256 amount) external override onlyToken {
        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }

        if(amount > 0 && shares[shareholder].amount == 0){
            addShareholder(shareholder);
        }else if(amount == 0 && shares[shareholder].amount > 0){
            removeShareholder(shareholder);
        }

        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function deposit() external payable override onlyToken {
        uint256 balanceBefore = WETH.balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = WAVAX;
        path[1] = address(WETH);

        router.swapExactAVAXForTokensSupportingFeeOnTransferTokens{value: msg.value}(
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amount = WETH.balanceOf(address(this)).sub(balanceBefore);

        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }

    function process(uint256 gas) external override onlyToken {
        uint256 shareholderCount = shareholders.length;

        if(shareholderCount == 0) { return; }

        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();

        uint256 iterations = 0;

        while(gasUsed < gas && iterations < shareholderCount) {
            if(currentIndex >= shareholderCount){
                currentIndex = 0;
            }

            if(shouldDistribute(shareholders[currentIndex])){
                distributeDividend(shareholders[currentIndex]);
            }

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }

    function shouldDistribute(address shareholder) internal view returns (bool) {
        return shareholderClaims[shareholder] + minPeriod < block.timestamp
        && getUnpaidEarnings(shareholder) > minDistribution;
    }

    function distributeDividend(address shareholder) internal {
        if(shares[shareholder].amount == 0){ return; }

        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            WETH.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }

    function claimDividend() external {
        distributeDividend(msg.sender);
    }

    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        if(shares[shareholder].amount == 0){ return 0; }

        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
}

contract ICYMONEY is IBEP20, Auth {
    using SafeMath for uint256;

    address public WETH = 0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB;
    address public WAVAX = 0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "ICY.MONEY";
    string constant _symbol = "ICY";
    uint8 constant _decimals = 6;

    uint256 public _totalSupply = 1_000_000_000_000_000 * (10 ** _decimals);
    uint256 public _maxTxAmount = _totalSupply.div(40);
    uint256 public _maxWallet = _totalSupply.div(40);

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) isDividendExempt;
    mapping (address => bool) public _isFree;

    uint256 liquidityFee = 200;
    uint256 treasuryFee = 0;
    uint256 reflectionFee = 1400;
    uint256 marketingFee = 300;
    uint256 totalFee = liquidityFee.add(treasuryFee).add(reflectionFee).add(marketingFee);
    uint256 feeDenominator = 10000;

    address public liquidityWallet = 0x3B1e7FeA6d6A5A6646Fb1E1d2Fab7E0e5c900b09;
    address public treasuryWallet = 0x3B1e7FeA6d6A5A6646Fb1E1d2Fab7E0e5c900b09;
    address public marketingWallet = 0x3B1e7FeA6d6A5A6646Fb1E1d2Fab7E0e5c900b09;

    uint256 targetLiquidity = 10;
    uint256 targetLiquidityDenominator = 100;

    address public routerAddress = 0x60aE616a2155Ee3d9A68541Ba4544862310933d4;
    IDEXRouter public router;
    address public pair;

    uint256 public launchedAt;
    uint256 public launchedAtTimestamp;

    DividendDistributor distributor;
    address public distributorAddress;

    uint256 distributorGas = 500000;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 5000;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(routerAddress);
        pair = IDEXFactory(router.factory()).createPair(WAVAX, address(this));
        _allowances[address(this)][address(router)] = _totalSupply;

        WAVAX = router.WAVAX();
        distributor = new DividendDistributor(routerAddress);
        distributorAddress = address(distributor);

        isFeeExempt[msg.sender] = true;
        isFeeExempt[liquidityWallet] = true;
        isFeeExempt[treasuryWallet] = true;
        isFeeExempt[marketingWallet] = true;
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[liquidityWallet] = true;
        isTxLimitExempt[treasuryWallet] = true;
        isTxLimitExempt[marketingWallet] = true;
        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;

        liquidityWallet = msg.sender;
        treasuryWallet = msg.sender;
        marketingWallet = msg.sender;

        approve(routerAddress, _totalSupply);
        approve(address(pair), _totalSupply);
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }
    

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, _totalSupply);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != _totalSupply){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }
         
        checkTxLimit(sender, amount);

        bool isBuy = sender == pair || sender == routerAddress;
        bool isSell = recipient == pair || recipient == routerAddress;
        
        if (!isSell && !_isFree[recipient]) {
            require((_balances[recipient] + amount) < _maxWallet, "Maximum wallet amount exceeded");
        }
        
        if (isSell) {
            if (shouldSwapBack()) { swapBack(); }
        }

        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);

        if(!isDividendExempt[sender]){ try distributor.setShare(sender, _balances[sender]) {} catch {} }
        if(!isDividendExempt[recipient]){ try distributor.setShare(recipient, _balances[recipient]) {} catch {} }
        try distributor.process(distributorGas) {} catch {}

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        return true;
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function getTotalFee(bool selling) public view returns (uint256) {
        if(launchedAt + 1 >= block.number){ return totalFee; }
        if(selling){ return totalFee; }
        return totalFee;
    }

    function getMultipliedFee() public view returns (uint256) {
        return totalFee;
    }

    function takeFee(address sender, address receiver, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(getTotalFee(receiver == pair)).div(feeDenominator);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WAVAX;
        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForAVAXSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountAVAX = address(this).balance.sub(balanceBefore);
        uint256 totalAVAXFee = totalFee.sub(dynamicLiquidityFee.div(2));

        uint256 amountAVAXLiquidity = amountAVAX.mul(dynamicLiquidityFee).div(totalAVAXFee).div(2);
        uint256 amountAVAXTreasury = amountAVAX.mul(treasuryFee).div(totalAVAXFee);
        uint256 amountAVAXReflection = amountAVAX.mul(reflectionFee).div(totalAVAXFee);
        uint256 amountAVAXMarketing = amountAVAX.mul(marketingFee).div(totalAVAXFee);

        try distributor.deposit{value: amountAVAXReflection}() {} catch {}
        payable(treasuryWallet).transfer(amountAVAXTreasury);
        payable(marketingWallet).transfer(amountAVAXMarketing);

        if(amountToLiquify > 0){
            router.addLiquidityAVAX{value: amountAVAXLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                liquidityWallet,
                block.timestamp
            );
            emit AutoLiquify(amountAVAXLiquidity, amountToLiquify);
        }
    }

    function buyTokens(uint256 amount, address to) internal swapping {
        address[] memory path = new address[](2);
        path[0] = WAVAX;
        path[1] = address(this);

        router.swapExactAVAXForTokensSupportingFeeOnTransferTokens{value: amount}(
            0,
            path,
            to,
            block.timestamp
        );
    }
    
    function Sweep() external onlyOwner {
        uint256 balance = address(this).balance;
        payable(msg.sender).transfer(balance);
    }

    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() public authorized {
        require(launchedAt == 0, "Already launched");
        launchedAt = block.number;
        launchedAtTimestamp = block.timestamp;
    }
    
    function setMaxWallet(uint256 amount) external authorized {
        require(amount >= _totalSupply / 1000);
        _maxWallet = amount;
    }

    function setTxLimit(uint256 amount) external authorized {
        require(amount >= _totalSupply / 1000);
        _maxTxAmount = amount;
    }

    function setIsDividendExempt(address holder, bool exempt) external authorized {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        if(exempt){
            distributor.setShare(holder, 0);
        }else{
            distributor.setShare(holder, _balances[holder]);
        }
    }

    function setIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external authorized {
        isTxLimitExempt[holder] = exempt;
    }
    
    function setFree(address holder) public onlyOwner {
        _isFree[holder] = true;
    }
    
    function unSetFree(address holder) public onlyOwner {
        _isFree[holder] = false;
    }
    
    function checkFree(address holder) public view onlyOwner returns(bool){
        return _isFree[holder];
    }

    function setFees(uint256 _liquidityFee, uint256 _treasuryFee, uint256 _reflectionFee, uint256 _marketingFee, uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        treasuryFee = _treasuryFee;
        reflectionFee = _reflectionFee;
        marketingFee = _marketingFee;
        totalFee = _liquidityFee.add(_treasuryFee).add(_reflectionFee).add(_marketingFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator/4);
    }

    function setWallets(address _liquidityWallet, address _treasuryWallet, address _marketingWallet) external authorized {
        liquidityWallet = _liquidityWallet;
        treasuryWallet = _treasuryWallet;
        marketingWallet = _marketingWallet;
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }

    function setTargetLiquidity(uint256 _target, uint256 _denominator) external authorized {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external authorized {
        distributor.setDistributionCriteria(_minPeriod, _minDistribution);
    }

    function setDistributorSettings(uint256 gas) external authorized {
        require(gas < 750000);
        distributorGas = gas;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }

    event AutoLiquify(uint256 amountAVAX, uint256 amountBOG);
}

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountAVAX","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"Sweep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"WAVAX","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isFree","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"checkFree","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributorAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMultipliedFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"selling","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAtTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"routerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"setFree","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_liquidityWallet","type":"address"},{"internalType":"address","name":"_treasuryWallet","type":"address"},{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"unSetFree","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600280546001600160a01b03199081167349d5c2bdffac6ce2bfdb6640f4f80f226bc10bab1790915560038054821673b31f66aa3c1e785363f0875a1b74e27b85fd66c717905560048054821661dead1790556005805490911690556200006e6006600a6200070f565b620000819066038d7ea4c68000620007ce565b600655620000a16028600654620005b660201b620013c21790919060201c565b600755620000c16028600654620005b660201b620013c21790919060201c565b60085560c8600f55600060105561057860115561012c6012556200011a6012546200010660115462000106601054600f54620005cd60201b620013ce1790919060201c565b620005cd60201b620013ce1790919060201c565b601355612710601455601580546001600160a01b0319908116733b1e7fea6d6a5a6646fb1e1d2fab7e0e5c900b0990811790925560168054821683179055601780548216909217909155600a6018556064601955601a80549091167360ae616a2155ee3d9a68541ba4544862310933d41790556207a1206021556022805460ff19166001179055600654620001b39061138890620006a3565b602355348015620001c357600080fd5b5060008054336001600160a01b031991821681178355825260016020818152604093849020805460ff1916909217909155601a54601b80546001600160a01b03909216919093168117909255825163c45a015560e01b81529251919263c45a01559260048083019392829003018186803b1580156200024157600080fd5b505afa15801562000256573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027c919062000656565b6003546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c6539690604401602060405180830381600087803b158015620002c957600080fd5b505af1158015620002de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000304919062000656565b601c80546001600160a01b0319166001600160a01b03928316179055600654306000908152600a60209081526040808320601b8054871685529083529281902093909355905482516339d94ae160e11b815292519316926373b295c2926004808201939291829003018186803b1580156200037e57600080fd5b505afa15801562000393573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b9919062000656565b600380546001600160a01b0319166001600160a01b03928316179055601a54604051911690620003e99062000648565b6001600160a01b039091168152602001604051809103906000f08015801562000416573d6000803e3d6000fd5b50601f80546001600160a01b039283166001600160a01b031991821681179092556020805482169092178255336000818152600b84526040808220805460ff19908116600190811790925560158054891685528385208054831684179055601680548a1686528486208054841685179055601780548b1687528587208054851686179055878752600c8a52858720805485168617905582548b168752858720805485168617905581548b168752858720805485168617905580548b1687528587208054851686179055601c548b168752600d909952848620805484168517905530865284862080548416851790556004548a168652939094208054909116909117905581548416831790915580548316821790558254909116179055601a5460065462000548929190911690620005db565b50601c5460065462000564916001600160a01b031690620005db565b5060065433600081815260096020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000806565b6000620005c48284620006a3565b90505b92915050565b6000620005c4828462000688565b336000818152600a602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590620006379086815260200190565b60405180910390a350600192915050565b610e2c8062002a2183390190565b6000602082840312156200066957600080fd5b81516001600160a01b03811681146200068157600080fd5b9392505050565b600082198211156200069e576200069e620007f0565b500190565b600082620006c157634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111562000707578160001904821115620006eb57620006eb620007f0565b80851615620006f957918102915b93841c9390800290620006cb565b509250929050565b6000620005c460ff8416836000826200072b57506001620005c7565b816200073a57506000620005c7565b81600181146200075357600281146200075e576200077e565b6001915050620005c7565b60ff841115620007725762000772620007f0565b50506001821b620005c7565b5060208310610133831016604e8410600b8410161715620007a3575081810a620005c7565b620007af8383620006c6565b8060001904821115620007c657620007c6620007f0565b029392505050565b6000816000190483118215151615620007eb57620007eb620007f0565b500290565b634e487b7160e01b600052601160045260246000fd5b61220b80620008166000396000f3fe6080604052600436106103395760003560e01c806375cb1bd1116101ab578063bf56b371116100f7578063f0b37c0411610095578063f708a64f1161006f578063f708a64f146109c5578063f84ba65d146109e5578063f887ea4014610a05578063fe9fbb8014610a2557600080fd5b8063f0b37c0414610965578063f1f3bca314610985578063f2fde38b146109a557600080fd5b8063d51ed1c8116100d1578063d51ed1c8146108ca578063d806d12f146108ea578063dd62ed3e146108ff578063df20fd491461094557600080fd5b8063bf56b3711461087e578063c6d2577d14610894578063d4698016146108aa57600080fd5b806395d89b4111610164578063a8aa1b311161013e578063a8aa1b31146107fe578063a9059cbb1461081e578063ad5c46481461083e578063b6a5d7de1461085e57600080fd5b806395d89b41146107925780639d1944f5146107be578063a51af4c5146107de57600080fd5b806375cb1bd1146106e857806375f0a874146107085780637d1db4a51461072857806382247ec01461073e578063893d20e81461075457806389ef69f61461077257600080fd5b80632f54bf6e116102855780635c85974f116102235780636ddd1713116101fd5780636ddd1713146106635780637088fb7f1461067d57806370a082311461069257806373b295c2146106c857600080fd5b80635c85974f146106035780635d0044ca14610623578063658d4b7f1461064357600080fd5b80633425c0011161025f5780633425c0011461058d5780633eaaf86b146105ad5780634626402b146105c3578063571ac8b0146105e357600080fd5b80632f54bf6e1461050a578063313ce567146105395780633268cc561461055557600080fd5b80631161ae39116102f257806323b872dd116102cc57806323b872dd14610485578063296020e7146104a55780632b112e49146104d55780632d48e896146104ea57600080fd5b80631161ae391461043057806318160ddd14610450578063201e79911461046557600080fd5b806301339c21146103455780630445b6671461035c57806304a66b481461038557806306fdde03146103a557806307c89fe8146103e0578063095ea7b31461041057600080fd5b3661034057005b600080fd5b34801561035157600080fd5b5061035a610a45565b005b34801561036857600080fd5b5061037260235481565b6040519081526020015b60405180910390f35b34801561039157600080fd5b5061035a6103a0366004611fdb565b610ac0565b3480156103b157600080fd5b506040805180820190915260098152684943592e4d4f4e455960b81b60208201525b60405161037c9190612016565b3480156103ec57600080fd5b506104006103fb366004611df8565b610b36565b604051901515815260200161037c565b34801561041c57600080fd5b5061040061042b366004611f0f565b610b84565b34801561043c57600080fd5b5061040061044b366004611f8b565b610bf0565b34801561045c57600080fd5b50600654610372565b34801561047157600080fd5b5061035a610480366004611f8b565b610c04565b34801561049157600080fd5b506104006104a0366004611e99565b610c34565b3480156104b157600080fd5b506104006104c0366004611df8565b600e6020526000908152604090205460ff1681565b3480156104e157600080fd5b50610372610cf8565b3480156104f657600080fd5b5061035a610505366004611f8b565b610d4a565b34801561051657600080fd5b50610400610525366004611df8565b6000546001600160a01b0391821691161490565b34801561054557600080fd5b506040516006815260200161037c565b34801561056157600080fd5b50601a54610575906001600160a01b031681565b6040516001600160a01b03909116815260200161037c565b34801561059957600080fd5b5061035a6105a8366004611df8565b610dd9565b3480156105b957600080fd5b5061037260065481565b3480156105cf57600080fd5b50601654610575906001600160a01b031681565b3480156105ef57600080fd5b506104006105fe366004611df8565b610e24565b34801561060f57600080fd5b5061035a61061e366004611f72565b610e38565b34801561062f57600080fd5b5061035a61063e366004611f72565b610e7e565b34801561064f57600080fd5b5061035a61065e366004611eda565b610ec4565b34801561066f57600080fd5b506022546104009060ff1681565b34801561068957600080fd5b5061035a610f14565b34801561069e57600080fd5b506103726106ad366004611df8565b6001600160a01b031660009081526009602052604090205490565b3480156106d457600080fd5b50600354610575906001600160a01b031681565b3480156106f457600080fd5b5061035a610703366004611e4e565b610f71565b34801561071457600080fd5b50601754610575906001600160a01b031681565b34801561073457600080fd5b5061037260075481565b34801561074a57600080fd5b5061037260085481565b34801561076057600080fd5b506000546001600160a01b0316610575565b34801561077e57600080fd5b5061035a61078d366004611df8565b610fd5565b34801561079e57600080fd5b5060408051808201909152600381526249435960e81b60208201526103d3565b3480156107ca57600080fd5b5061035a6107d9366004611f72565b611023565b3480156107ea57600080fd5b50602054610575906001600160a01b031681565b34801561080a57600080fd5b50601c54610575906001600160a01b031681565b34801561082a57600080fd5b50610400610839366004611f0f565b61105c565b34801561084a57600080fd5b50600254610575906001600160a01b031681565b34801561086a57600080fd5b5061035a610879366004611df8565b611069565b34801561088a57600080fd5b50610372601d5481565b3480156108a057600080fd5b50610372601e5481565b3480156108b657600080fd5b50601554610575906001600160a01b031681565b3480156108d657600080fd5b506103726108e5366004611f72565b6110ba565b3480156108f657600080fd5b50601354610372565b34801561090b57600080fd5b5061037261091a366004611e15565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b34801561095157600080fd5b5061035a610960366004611f56565b6110fe565b34801561097157600080fd5b5061035a610980366004611df8565b61113a565b34801561099157600080fd5b506103726109a0366004611f3b565b611185565b3480156109b157600080fd5b5061035a6109c0366004611df8565b6111ba565b3480156109d157600080fd5b5061035a6109e0366004611eda565b611250565b3480156109f157600080fd5b5061035a610a00366004611eda565b611354565b348015610a1157600080fd5b50601b54610575906001600160a01b031681565b348015610a3157600080fd5b50610400610a40366004611df8565b6113a4565b610a4e336113a4565b610a735760405162461bcd60e51b8152600401610a6a9061208b565b60405180910390fd5b601d5415610ab65760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481b185d5b98da195960821b6044820152606401610a6a565b43601d5542601e55565b610ac9336113a4565b610ae55760405162461bcd60e51b8152600401610a6a9061208b565b600f859055601084905560118390556012829055610b0f82610b09858189896113ce565b906113ce565b6013556014819055610b22600482612139565b60135410610b2f57600080fd5b5050505050565b600080546001600160a01b03163314610b615760405162461bcd60e51b8152600401610a6a9061206b565b506001600160a01b0381166000908152600e602052604090205460ff165b919050565b336000818152600a602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610bdf9086815260200190565b60405180910390a350600192915050565b600082610bfc836110ba565b119392505050565b610c0d336113a4565b610c295760405162461bcd60e51b8152600401610a6a9061208b565b601891909155601955565b6006546001600160a01b0384166000908152600a60209081526040808320338452909152812054909114610ce3576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600a82528381203382529091529190912054610cbe9184906113da565b6001600160a01b0385166000908152600a602090815260408083203384529091529020555b610cee848484611406565b90505b9392505050565b6005546001600160a01b0316600090815260096020526040812054610d45906004546001600160a01b0316600090815260096020526040902054610d3f90600654906117f3565b906117f3565b905090565b610d53336113a4565b610d6f5760405162461bcd60e51b8152600401610a6a9061208b565b601f546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b158015610dbd57600080fd5b505af1158015610dd1573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610e035760405162461bcd60e51b8152600401610a6a9061206b565b6001600160a01b03166000908152600e60205260409020805460ff19169055565b6000610e3282600654610b84565b92915050565b610e41336113a4565b610e5d5760405162461bcd60e51b8152600401610a6a9061208b565b6103e8600654610e6d9190612139565b811015610e7957600080fd5b600755565b610e87336113a4565b610ea35760405162461bcd60e51b8152600401610a6a9061208b565b6103e8600654610eb39190612139565b811015610ebf57600080fd5b600855565b610ecd336113a4565b610ee95760405162461bcd60e51b8152600401610a6a9061208b565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610f3e5760405162461bcd60e51b8152600401610a6a9061206b565b6040514790339082156108fc029083906000818181858888f19350505050158015610f6d573d6000803e3d6000fd5b5050565b610f7a336113a4565b610f965760405162461bcd60e51b8152600401610a6a9061208b565b601580546001600160a01b039485166001600160a01b031991821617909155601680549385169382169390931790925560178054919093169116179055565b6000546001600160a01b03163314610fff5760405162461bcd60e51b8152600401610a6a9061206b565b6001600160a01b03166000908152600e60205260409020805460ff19166001179055565b61102c336113a4565b6110485760405162461bcd60e51b8152600401610a6a9061208b565b620b71b0811061105757600080fd5b602155565b6000610cf1338484611406565b6000546001600160a01b031633146110935760405162461bcd60e51b8152600401610a6a9061206b565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000610e326110c7610cf8565b601c546001600160a01b03166000908152600960205260409020546110f8906110f19060026117ff565b85906117ff565b906113c2565b611107336113a4565b6111235760405162461bcd60e51b8152600401610a6a9061208b565b6022805460ff191692151592909217909155602355565b6000546001600160a01b031633146111645760405162461bcd60e51b8152600401610a6a9061206b565b6001600160a01b03166000908152600160205260409020805460ff19169055565b600043601d5460016111979190612121565b106111a457505060135490565b81156111b257505060135490565b505060135490565b6000546001600160a01b031633146111e45760405162461bcd60e51b8152600401610a6a9061206b565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b611259336113a4565b6112755760405162461bcd60e51b8152600401610a6a9061208b565b6001600160a01b038216301480159061129c5750601c546001600160a01b03838116911614155b6112a557600080fd5b6001600160a01b0382166000908152600d60205260409020805460ff1916821580159190911790915561130b57601f54604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401610da3565b601f546001600160a01b0383811660008181526009602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401610da3565b61135d336113a4565b6113795760405162461bcd60e51b8152600401610a6a9061208b565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b6000610cf18284612139565b6000610cf18284612121565b600081848411156113fe5760405162461bcd60e51b8152600401610a6a9190612016565b505050900390565b60245460009060ff16156114265761141f84848461180b565b9050610cf1565b61143084836118ae565b601c546000906001600160a01b038681169116148061145c5750601a546001600160a01b038681169116145b601c549091506000906001600160a01b038681169116148061148b5750601a546001600160a01b038681169116145b9050801580156114b457506001600160a01b0385166000908152600e602052604090205460ff16155b1561152d576008546001600160a01b0386166000908152600960205260409020546114e0908690612121565b1061152d5760405162461bcd60e51b815260206004820152601e60248201527f4d6178696d756d2077616c6c657420616d6f756e7420657863656564656400006044820152606401610a6a565b80156115485761153b611917565b1561154857611548611966565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03891660009081526009909152919091205461159a9186906113da565b6001600160a01b038716600090815260096020908152604080832093909355600b90529081205460ff16156115cf57846115da565b6115da878787611d2d565b6001600160a01b03871660009081526009602052604090205490915061160090826113ce565b6001600160a01b03808816600090815260096020908152604080832094909455918a168152600d909152205460ff166116a457601f546001600160a01b0388811660008181526009602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561169157600080fd5b505af19250505080156116a2575060015b505b6001600160a01b0386166000908152600d602052604090205460ff1661173557601f546001600160a01b0387811660008181526009602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561172257600080fd5b505af1925050508015611733575060015b505b601f546021546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c4799161176d9160040190815260200190565b600060405180830381600087803b15801561178757600080fd5b505af1925050508015611798575060015b50856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516117de91815260200190565b60405180910390a35060019695505050505050565b6000610cf1828461217a565b6000610cf1828461215b565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260099091529182205461185c9184906113da565b6001600160a01b03808616600090815260096020526040808220939093559085168152205461188b90836113ce565b6001600160a01b0384166000908152600960205260409020555060019392505050565b600754811115806118d757506001600160a01b0382166000908152600c602052604090205460ff165b610f6d5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610a6a565b601c546000906001600160a01b03163314801590611938575060245460ff16155b8015611946575060225460ff165b8015610d4557505060235430600090815260096020526040902054101590565b6024805460ff1916600117905560185460195460009161198591610bf0565b61199157600f54611994565b60005b905060006119b860026110f86013546110f8866023546117ff90919063ffffffff16565b905060006119d1826023546117f390919063ffffffff16565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611a0b57611a0b6121a7565b6001600160a01b039283166020918202929092010152600354825191169082906001908110611a3c57611a3c6121a7565b6001600160a01b039283166020918202929092010152601b54604051633b158ab160e11b81524792919091169063762b156290611a869086906000908790309042906004016120b0565b600060405180830381600087803b158015611aa057600080fd5b505af1158015611ab4573d6000803e3d6000fd5b505050506000611acd82476117f390919063ffffffff16565b90506000611ae8611adf8860026113c2565b601354906117f3565b90506000611afd60026110f88481878d6117ff565b90506000611b1a836110f8601054876117ff90919063ffffffff16565b90506000611b37846110f8601154886117ff90919063ffffffff16565b90506000611b54856110f8601254896117ff90919063ffffffff16565b9050601f60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015611ba657600080fd5b505af193505050508015611bb8575060015b506016546040516001600160a01b039091169084156108fc029085906000818181858888f19350505050158015611bf3573d6000803e3d6000fd5b506017546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611c2e573d6000803e3d6000fd5b508915611d1657601b54601554604051637c8d9fb960e11b8152306004820152602481018d905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f91b3f7290869060c4016060604051808303818588803b158015611ca057600080fd5b505af1158015611cb4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611cd99190611fad565b505060408051868152602081018d90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506024805460ff19169055505050505050505050565b601454601c546000918291611d5f91906110f890611d58906001600160a01b03898116911614611185565b86906117ff565b30600090815260096020526040902054909150611d7c90826113ce565b30600081815260096020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611dcd9085815260200190565b60405180910390a3611ddf83826117f3565b95945050505050565b80358015158114610b7f57600080fd5b600060208284031215611e0a57600080fd5b8135610cf1816121bd565b60008060408385031215611e2857600080fd5b8235611e33816121bd565b91506020830135611e43816121bd565b809150509250929050565b600080600060608486031215611e6357600080fd5b8335611e6e816121bd565b92506020840135611e7e816121bd565b91506040840135611e8e816121bd565b809150509250925092565b600080600060608486031215611eae57600080fd5b8335611eb9816121bd565b92506020840135611ec9816121bd565b929592945050506040919091013590565b60008060408385031215611eed57600080fd5b8235611ef8816121bd565b9150611f0660208401611de8565b90509250929050565b60008060408385031215611f2257600080fd5b8235611f2d816121bd565b946020939093013593505050565b600060208284031215611f4d57600080fd5b610cf182611de8565b60008060408385031215611f6957600080fd5b611f2d83611de8565b600060208284031215611f8457600080fd5b5035919050565b60008060408385031215611f9e57600080fd5b50508035926020909101359150565b600080600060608486031215611fc257600080fd5b8351925060208401519150604084015190509250925092565b600080600080600060a08688031215611ff357600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600060208083528351808285015260005b8181101561204357858101830151858201604001528201612027565b81811115612055576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156121005784516001600160a01b0316835293830193918301916001016120db565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561213457612134612191565b500190565b60008261215657634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561217557612175612191565b500290565b60008282101561218c5761218c612191565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146121d257600080fd5b5056fea2646970667358221220454e5a359680c887c9bae48f85e1824de9821ad151ccd1c907e5b87944d6b8bc64736f6c634300080700336080604052600180546001600160a01b03199081167349d5c2bdffac6ce2bfdb6640f4f80f226bc10bab179091556002805490911673b31f66aa3c1e785363f0875a1b74e27b85fd66c71790556ec097ce7bc90715b34b9f1000000000600c55610e10600d55678ac7230489e80000600e5534801561007d57600080fd5b50604051610e2c380380610e2c83398101604081905261009c916100ca565b600380546001600160a01b039092166001600160a01b031992831617905560008054909116331790556100fa565b6000602082840312156100dc57600080fd5b81516001600160a01b03811681146100f357600080fd5b9392505050565b610d23806101096000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed14610224578063f0fc6bca1461023a578063ffb2c4791461024f578063ffd49c841461026f57600080fd5b8063ce7c2ac2146101af578063d0e30db014610206578063e2d2e2191461020e57600080fd5b80632d48e896116100bb5780632d48e8961461014d5780633a98ef391461016d5780634fab0ae814610183578063997664d71461019957600080fd5b806311ce023d146100e257806314b6ca961461010b57806328fd31981461012d575b600080fd5b3480156100ee57600080fd5b506100f8600c5481565b6040519081526020015b60405180910390f35b34801561011757600080fd5b5061012b610126366004610b16565b610285565b005b34801561013957600080fd5b506100f8610148366004610afb565b6103fd565b34801561015957600080fd5b5061012b610168366004610b94565b610486565b34801561017957600080fd5b506100f860085481565b34801561018f57600080fd5b506100f8600e5481565b3480156101a557600080fd5b506100f860095481565b3480156101bb57600080fd5b506101eb6101ca366004610afb565b60046020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610102565b61012b6104a8565b34801561021a57600080fd5b506100f8600b5481565b34801561023057600080fd5b506100f8600a5481565b34801561024657600080fd5b5061012b6106f5565b34801561025b57600080fd5b5061012b61026a366004610b62565b610700565b34801561027b57600080fd5b506100f8600d5481565b6000546001600160a01b0316331461029c57600080fd5b6001600160a01b038216600090815260046020526040902054156102c3576102c382610800565b6000811180156102e957506001600160a01b038216600090815260046020526040902054155b1561034f57600580546001600160a01b0384166000818152600660205260408120839055600183018455929092527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0319169091179055610382565b8015801561037457506001600160a01b03821660009081526004602052604090205415155b15610382576103828261092b565b6001600160a01b0382166000908152600460205260409020546008546103b39183916103ad91610a40565b90610a53565b6008556001600160a01b03821660009081526004602052604090208190556103da81610a5f565b6001600160a01b0390921660009081526004602052604090206001019190915550565b6001600160a01b03811660009081526004602052604081205461042257506000919050565b6001600160a01b03821660009081526004602052604081205461044490610a5f565b6001600160a01b038416600090815260046020526040902060010154909150808211610474575060009392505050565b61047e8282610a40565b949350505050565b6000546001600160a01b0316331461049d57600080fd5b600d91909155600e55565b6000546001600160a01b031633146104bf57600080fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b15801561050357600080fd5b505afa158015610517573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053b9190610b7b565b6040805160028082526060820183529293506000929091602083019080368337505060025482519293506001600160a01b03169183915060009061058157610581610cd7565b6001600160a01b03928316602091820292909201015260018054835192169183919081106105b1576105b1610cd7565b6001600160a01b03928316602091820292909201015260035460405163c57559dd60e01b815291169063c57559dd9034906105f790600090869030904290600401610bb6565b6000604051808303818588803b15801561061057600080fd5b505af1158015610624573d6000803e3d6000fd5b50506001546040516370a0823160e01b8152306004820152600094506106b393508692506001600160a01b03909116906370a082319060240160206040518083038186803b15801561067557600080fd5b505afa158015610689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ad9190610b7b565b90610a40565b6009549091506106c39082610a53565b600955600854600c546106ed916106e4916106de9085610a82565b90610a8e565b600b5490610a53565b600b55505050565b6106fe33610800565b565b6000546001600160a01b0316331461071757600080fd5b60055480610723575050565b6000805a905060005b848310801561073a57508381105b156107f95783600f541061074e576000600f555b6107806005600f548154811061076657610766610cd7565b6000918252602090912001546001600160a01b0316610a9a565b156107b7576107b76005600f548154811061079d5761079d610cd7565b6000918252602090912001546001600160a01b0316610800565b6107cc6107c55a8490610a40565b8490610a53565b92505a600f805491935060006107e183610c90565b919050555080806107f190610c90565b91505061072c565b5050505050565b6001600160a01b0381166000908152600460205260409020546108205750565b600061082b826103fd565b9050801561092757600a546108409082610a53565b600a5560015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb90604401602060405180830381600087803b15801561089157600080fd5b505af11580156108a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c99190610b40565b506001600160a01b038216600090815260076020908152604080832042905560049091529020600201546108fd9082610a53565b6001600160a01b03831660009081526004602052604090206002810191909155546103da90610a5f565b5050565b6005805461093b90600190610c79565b8154811061094b5761094b610cd7565b60009182526020808320909101546001600160a01b038481168452600690925260409092205460058054929093169291811061098957610989610cd7565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600691829052604081205460058054919392916109d590600190610c79565b815481106109e5576109e5610cd7565b60009182526020808320909101546001600160a01b031683528201929092526040019020556005805480610a1b57610a1b610cc1565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610a4c8284610c79565b9392505050565b6000610a4c8284610c20565b6000610a7c600c546106de600b5485610a8290919063ffffffff16565b92915050565b6000610a4c8284610c5a565b6000610a4c8284610c38565b600d546001600160a01b03821660009081526007602052604081205490914291610ac49190610c20565b108015610a7c5750600e54610ad8836103fd565b1192915050565b80356001600160a01b0381168114610af657600080fd5b919050565b600060208284031215610b0d57600080fd5b610a4c82610adf565b60008060408385031215610b2957600080fd5b610b3283610adf565b946020939093013593505050565b600060208284031215610b5257600080fd5b81518015158114610a4c57600080fd5b600060208284031215610b7457600080fd5b5035919050565b600060208284031215610b8d57600080fd5b5051919050565b60008060408385031215610ba757600080fd5b50508035926020909101359150565b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610c005784516001600160a01b031683529383019391830191600101610bdb565b50506001600160a01b039690961660408501525050506060015292915050565b60008219821115610c3357610c33610cab565b500190565b600082610c5557634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615610c7457610c74610cab565b500290565b600082821015610c8b57610c8b610cab565b500390565b6000600019821415610ca457610ca4610cab565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea2646970667358221220c1986f2a235c25474f0cd5cc06f7e5375f3a31854751713263218b35eb7adcf864736f6c63430008070033

Deployed ByteCode Sourcemap

12463:13562:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22566:183;;;;;;;;;;;;;:::i;:::-;;14390:50;;;;;;;;;;;;;;;;;;;8857:25:1;;;8845:2;8830:18;14390:50:0;;;;;;;;24018:500;;;;;;;;;;-1:-1:-1;24018:500:0;;;;;:::i;:::-;;:::i;16062:80::-;;;;;;;;;;-1:-1:-1;16134:5:0;;;;;;;;;;;;-1:-1:-1;;;16134:5:0;;;;16062:80;;;;;;;:::i;23899:111::-;;;;;;;;;;-1:-1:-1;23899:111:0;;;;;:::i;:::-;;:::i;:::-;;;6132:14:1;;6125:22;6107:41;;6095:2;6080:18;23899:111:0;5967:187:1;16484:216:0;;;;;;;;;;-1:-1:-1;16484:216:0;;;;;:::i;:::-;;:::i;25807:150::-;;;;;;;;;;-1:-1:-1;25807:150:0;;;;;:::i;:::-;;:::i;15792:88::-;;;;;;;;;;-1:-1:-1;15865:12:0;;15792:88;;24956:183;;;;;;;;;;-1:-1:-1;24956:183:0;;;;;:::i;:::-;;:::i;16997:365::-;;;;;;;;;;-1:-1:-1;16997:365:0;;;;;:::i;:::-;;:::i;13377:40::-;;;;;;;;;;-1:-1:-1;13377:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;25482:142;;;;;;;;;;;;;:::i;25147:183::-;;;;;;;;;;-1:-1:-1;25147:183:0;;;;;:::i;:::-;;:::i;4443:103::-;;;;;;;;;;-1:-1:-1;4443:103:0;;;;;:::i;:::-;4498:4;4533:5;-1:-1:-1;;;;;4522:16:0;;;4533:5;;4522:16;;4443:103;15886:80;;;;;;;;;;-1:-1:-1;15886:80:0;;12919:1;10273:36:1;;10261:2;10246:18;15886:80:0;10131:184:1;14019:73:0;;;;;;;;;;-1:-1:-1;14019:73:0;;;;-1:-1:-1;;;;;14019:73:0;;;;;;-1:-1:-1;;;;;4529:32:1;;;4511:51;;4499:2;4484:18;14019:73:0;4365:203:1;23793:94:0;;;;;;;;;;-1:-1:-1;23793:94:0;;;;;:::i;:::-;;:::i;12929:71::-;;;;;;;;;;;;;;;;13770:74;;;;;;;;;;-1:-1:-1;13770:74:0;;;;-1:-1:-1;;;;;13770:74:0;;;16708:117;;;;;;;;;;-1:-1:-1;16708:117:0;;;;;:::i;:::-;;:::i;22914:145::-;;;;;;;;;;-1:-1:-1;22914:145:0;;;;;:::i;:::-;;:::i;22761:::-;;;;;;;;;;-1:-1:-1;22761:145:0;;;;;:::i;:::-;;:::i;23422:120::-;;;;;;;;;;-1:-1:-1;23422:120:0;;;;;:::i;:::-;;:::i;14353:30::-;;;;;;;;;;-1:-1:-1;14353:30:0;;;;;;;;22318:142;;;;;;;;;;;;;:::i;16232:105::-;;;;;;;;;;-1:-1:-1;16232:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;16316:18:0;16298:7;16316:18;;;:9;:18;;;;;;;16232:105;12610:65;;;;;;;;;;-1:-1:-1;12610:65:0;;;;-1:-1:-1;;;;;12610:65:0;;;24526:258;;;;;;;;;;-1:-1:-1;24526:258:0;;;;;:::i;:::-;;:::i;13851:75::-;;;;;;;;;;-1:-1:-1;13851:75:0;;;;-1:-1:-1;;;;;13851:75:0;;;13007:50;;;;;;;;;;;;;;;;13064:48;;;;;;;;;;;;;;;;16148:78;;;;;;;;;;-1:-1:-1;16200:7:0;16218:5;-1:-1:-1;;;;;16218:5:0;16148:78;;23690:91;;;;;;;;;;-1:-1:-1;23690:91:0;;;;;:::i;:::-;;:::i;15972:84::-;;;;;;;;;;-1:-1:-1;16046:7:0;;;;;;;;;;;;-1:-1:-1;;;16046:7:0;;;;15972:84;;25338:136;;;;;;;;;;-1:-1:-1;25338:136:0;;;;;:::i;:::-;;:::i;14271:33::-;;;;;;;;;;-1:-1:-1;14271:33:0;;;;-1:-1:-1;;;;;14271:33:0;;;14130:19;;;;;;;;;;-1:-1:-1;14130:19:0;;;;-1:-1:-1;;;;;14130:19:0;;;16833:156;;;;;;;;;;-1:-1:-1;16833:156:0;;;;;:::i;:::-;;:::i;12539:64::-;;;;;;;;;;-1:-1:-1;12539:64:0;;;;-1:-1:-1;;;;;12539:64:0;;;4116:94;;;;;;;;;;-1:-1:-1;4116:94:0;;;;;:::i;:::-;;:::i;14158:25::-;;;;;;;;;;;;;;;;14190:34;;;;;;;;;;;;;;;;13688:75;;;;;;;;;;-1:-1:-1;13688:75:0;;;;-1:-1:-1;;;;;13688:75:0;;;25632:167;;;;;;;;;;-1:-1:-1;25632:167:0;;;;;:::i;:::-;;:::i;19460:92::-;;;;;;;;;;-1:-1:-1;19536:8:0;;19460:92;;16343:133;;;;;;;;;;-1:-1:-1;16343:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;16445:19:0;;;16427:7;16445:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;16343:133;24792:156;;;;;;;;;;-1:-1:-1;24792:156:0;;;;;:::i;:::-;;:::i;4286:97::-;;;;;;;;;;-1:-1:-1;4286:97:0;;;;;:::i;:::-;;:::i;19248:204::-;;;;;;;;;;-1:-1:-1;19248:204:0;;;;;:::i;:::-;;:::i;4843:173::-;;;;;;;;;;-1:-1:-1;4843:173:0;;;;;:::i;:::-;;:::i;23067:347::-;;;;;;;;;;-1:-1:-1;23067:347:0;;;;;:::i;:::-;;:::i;23550:128::-;;;;;;;;;;-1:-1:-1;23550:128:0;;;;;:::i;:::-;;:::i;14099:24::-;;;;;;;;;;-1:-1:-1;14099:24:0;;;;-1:-1:-1;;;;;14099:24:0;;;4617:107;;;;;;;;;;-1:-1:-1;4617:107:0;;;;;:::i;:::-;;:::i;22566:183::-;4001:24;4014:10;4001:12;:24::i;:::-;3993:48;;;;-1:-1:-1;;;3993:48:0;;;;;;;:::i;:::-;;;;;;;;;22621:10:::1;::::0;:15;22613:44:::1;;;::::0;-1:-1:-1;;;22613:44:0;;7535:2:1;22613:44:0::1;::::0;::::1;7517:21:1::0;7574:2;7554:18;;;7547:30;-1:-1:-1;;;7593:18:1;;;7586:46;7649:18;;22613:44:0::1;7333:340:1::0;22613:44:0::1;22681:12;22668:10;:25:::0;22726:15:::1;22704:19;:37:::0;22566:183::o;24018:500::-;4001:24;4014:10;4001:12;:24::i;:::-;3993:48;;;;-1:-1:-1;;;3993:48:0;;;;;;;:::i;:::-;24183:12:::1;:28:::0;;;24222:11:::1;:26:::0;;;24259:13:::1;:30:::0;;;24300:12:::1;:28:::0;;;24350:70:::1;24315:13:::0;24350:51:::1;24275:14:::0;24350:51;24198:13;24236:12;24350:17:::1;:31::i;:::-;:35:::0;::::1;:51::i;:70::-;24339:8;:81:::0;24431:14:::1;:32:::0;;;24493:16:::1;24508:1;24448:15:::0;24493:16:::1;:::i;:::-;24482:8;;:27;24474:36;;;::::0;::::1;;24018:500:::0;;;;;:::o;23899:111::-;23964:4;4533:5;;-1:-1:-1;;;;;4533:5:0;3840:10;4522:16;3824:38;;;;-1:-1:-1;;;3824:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;23987:15:0;::::1;;::::0;;;:7:::1;:15;::::0;;;;;::::1;;3864:1;23899:111:::0;;;:::o;16484:216::-;16588:10;16559:4;16576:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;16576:32:0;;;;;;;;;;:41;;;16633:37;16559:4;;16576:32;;16633:37;;;;16611:6;8857:25:1;;8845:2;8830:18;;8711:177;16633:37:0;;;;;;;;-1:-1:-1;16688:4:0;16484:216;;;;:::o;25807:150::-;25887:4;25943:6;25911:29;25931:8;25911:19;:29::i;:::-;:38;;25807:150;-1:-1:-1;;;25807:150:0:o;24956:183::-;4001:24;4014:10;4001:12;:24::i;:::-;3993:48;;;;-1:-1:-1;;;3993:48:0;;;;;;;:::i;:::-;25054:15:::1;:25:::0;;;;25090:26:::1;:41:::0;24956:183::o;16997:365::-;17152:12;;-1:-1:-1;;;;;17117:19:0;;17097:4;17117:19;;;:11;:19;;;;;;;;17137:10;17117:31;;;;;;;;17097:4;;17117:47;17114:181;;17214:69;;;;;;;;;;;-1:-1:-1;;;17214:69:0;;;;;;;;-1:-1:-1;;;;;17214:19:0;;-1:-1:-1;17214:19:0;;;:11;:19;;;;;17234:10;17214:31;;;;;;;;;;:69;;17250:6;;17214:35;:69::i;:::-;-1:-1:-1;;;;;17180:19:0;;;;;;:11;:19;;;;;;;;17200:10;17180:31;;;;;;;:103;17114:181;17314:40;17328:6;17336:9;17347:6;17314:13;:40::i;:::-;17307:47;;16997:365;;;;;;:::o;25482:142::-;25610:4;;-1:-1:-1;;;;;25610:4:0;25535:7;16316:18;;;:9;:18;;;;;;25562:54;;25589:4;;-1:-1:-1;;;;;25589:4:0;16298:7;16316:18;;;:9;:18;;;;;;25562:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;25555:61;;25482:142;:::o;25147:183::-;4001:24;4014:10;4001:12;:24::i;:::-;3993:48;;;;-1:-1:-1;;;3993:48:0;;;;;;;:::i;:::-;25257:11:::1;::::0;:65:::1;::::0;-1:-1:-1;;;25257:65:0;;::::1;::::0;::::1;10052:25:1::0;;;10093:18;;;10086:34;;;-1:-1:-1;;;;;25257:11:0;;::::1;::::0;:35:::1;::::0;10025:18:1;;25257:65:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;25147:183:::0;;:::o;23793:94::-;4498:4;4533:5;-1:-1:-1;;;;;4533:5:0;3840:10;4522:16;3824:38;;;;-1:-1:-1;;;3824:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23856:15:0::1;23874:5;23856:15:::0;;;:7:::1;:15;::::0;;;;:23;;-1:-1:-1;;23856:23:0::1;::::0;;23793:94::o;16708:117::-;16763:4;16787:30;16795:7;16804:12;;16787:7;:30::i;:::-;16780:37;16708:117;-1:-1:-1;;16708:117:0:o;22914:145::-;4001:24;4014:10;4001:12;:24::i;:::-;3993:48;;;;-1:-1:-1;;;3993:48:0;;;;;;;:::i;:::-;23014:4:::1;22999:12;;:19;;;;:::i;:::-;22989:6;:29;;22981:38;;;::::0;::::1;;23030:12;:21:::0;22914:145::o;22761:::-;4001:24;4014:10;4001:12;:24::i;:::-;3993:48;;;;-1:-1:-1;;;3993:48:0;;;;;;;:::i;:::-;22863:4:::1;22848:12;;:19;;;;:::i;:::-;22838:6;:29;;22830:38;;;::::0;::::1;;22879:10;:19:::0;22761:145::o;23422:120::-;4001:24;4014:10;4001:12;:24::i;:::-;3993:48;;;;-1:-1:-1;;;3993:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23506:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;23506:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23422:120::o;22318:142::-;4498:4;4533:5;-1:-1:-1;;;;;4533:5:0;3840:10;4522:16;3824:38;;;;-1:-1:-1;;;3824:38:0;;;;;;;:::i;:::-;22415:37:::1;::::0;22383:21:::1;::::0;22423:10:::1;::::0;22415:37;::::1;;;::::0;22383:21;;22365:15:::1;22415:37:::0;22365:15;22415:37;22383:21;22423:10;22415:37;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;22354:106;22318:142::o:0;24526:258::-;4001:24;4014:10;4001:12;:24::i;:::-;3993:48;;;;-1:-1:-1;;;3993:48:0;;;;;;;:::i;:::-;24654:15:::1;:34:::0;;-1:-1:-1;;;;;24654:34:0;;::::1;-1:-1:-1::0;;;;;;24654:34:0;;::::1;;::::0;;;24699:14:::1;:32:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;24742:15:::1;:34:::0;;;;;::::1;::::0;::::1;;::::0;;24526:258::o;23690:91::-;4498:4;4533:5;-1:-1:-1;;;;;4533:5:0;3840:10;4522:16;3824:38;;;;-1:-1:-1;;;3824:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23751:15:0::1;;::::0;;;:7:::1;:15;::::0;;;;:22;;-1:-1:-1;;23751:22:0::1;23769:4;23751:22;::::0;;23690:91::o;25338:136::-;4001:24;4014:10;4001:12;:24::i;:::-;3993:48;;;;-1:-1:-1;;;3993:48:0;;;;;;;:::i;:::-;25428:6:::1;25422:3;:12;25414:21;;;::::0;::::1;;25446:14;:20:::0;25338:136::o;16833:156::-;16913:4;16937:44;16951:10;16963:9;16974:6;16937:13;:44::i;4116:94::-;4498:4;4533:5;-1:-1:-1;;;;;4533:5:0;3840:10;4522:16;3824:38;;;;-1:-1:-1;;;3824:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4176:19:0::1;;::::0;;;4198:4:::1;4176:19;::::0;;;;;;;:26;;-1:-1:-1;;4176:26:0::1;::::0;;::::1;::::0;;4116:94::o;25632:167::-;25700:7;25727:64;25768:22;:20;:22::i;:::-;25750:4;;-1:-1:-1;;;;;25750:4:0;16298:7;16316:18;;;:9;:18;;;;;;25727:36;;25740:22;;25760:1;25740:19;:22::i;:::-;25727:8;;:12;:36::i;:::-;:40;;:64::i;24792:156::-;4001:24;4014:10;4001:12;:24::i;:::-;3993:48;;;;-1:-1:-1;;;3993:48:0;;;;;;;:::i;:::-;24884:11:::1;:22:::0;;-1:-1:-1;;24884:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;24917:13:::1;:23:::0;24792:156::o;4286:97::-;4498:4;4533:5;-1:-1:-1;;;;;4533:5:0;3840:10;4522:16;3824:38;;;;-1:-1:-1;;;3824:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4348:19:0::1;4370:5;4348:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;4348:27:0::1;::::0;;4286:97::o;19248:204::-;19304:7;19345:12;19327:10;;19340:1;19327:14;;;;:::i;:::-;:30;19324:54;;-1:-1:-1;;19367:8:0;;;19248:204::o;19324:54::-;19391:7;19388:31;;;-1:-1:-1;;19408:8:0;;;19248:204::o;19388:31::-;-1:-1:-1;;19436:8:0;;;19248:204::o;4843:173::-;4498:4;4533:5;-1:-1:-1;;;;;4533:5:0;3840:10;4522:16;3824:38;;;;-1:-1:-1;;;3824:38:0;;;;;;;:::i;:::-;4919:5:::1;:11:::0;;-1:-1:-1;;;;;;4919:11:0::1;-1:-1:-1::0;;;;;4919:11:0;::::1;::::0;;::::1;::::0;;4941:19;;;-1:-1:-1;4941:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;4941:26:0::1;::::0;;::::1;::::0;;;4983:25;;4511:51:1;;;4983:25:0::1;::::0;4484:18:1;4983:25:0::1;;;;;;;4843:173:::0;:::o;23067:347::-;4001:24;4014:10;4001:12;:24::i;:::-;3993:48;;;;-1:-1:-1;;;3993:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23164:23:0;::::1;23182:4;23164:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;23201:4:0::1;::::0;-1:-1:-1;;;;;23191:14:0;;::::1;23201:4:::0;::::1;23191:14;;23164:41;23156:50;;;::::0;::::1;;-1:-1:-1::0;;;;;23217:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;23217:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;23261:146:::1;;23286:11;::::0;:31:::1;::::0;-1:-1:-1;;;23286:31:0;;-1:-1:-1;;;;;4989:32:1;;;23286:31:0::1;::::0;::::1;4971:51:1::0;23286:11:0::1;5038:18:1::0;;;5031:34;23286:11:0;;::::1;::::0;:20:::1;::::0;4944:18:1;;23286:31:0::1;4789:282:1::0;23261:146:0::1;23348:11;::::0;-1:-1:-1;;;;;23377:17:0;;::::1;23348:11;23377:17:::0;;;:9:::1;:17;::::0;;;;;;;23348:47;;-1:-1:-1;;;23348:47:0;;::::1;::::0;::::1;4971:51:1::0;;;;5038:18;;;5031:34;23348:11:0;::::1;::::0;:20:::1;::::0;4944:18:1;;23348:47:0::1;4789:282:1::0;23550:128:0;4001:24;4014:10;4001:12;:24::i;:::-;3993:48;;;;-1:-1:-1;;;3993:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23638:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;23638:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23550:128::o;4617:107::-;-1:-1:-1;;;;;4697:19:0;4673:4;4697:19;;;:14;:19;;;;;;;;;4617:107::o;1718:98::-;1776:7;1803:5;1807:1;1803;:5;:::i;1400:98::-;1458:7;1485:5;1489:1;1485;:5;:::i;1930:206::-;2016:7;2077:12;2069:6;;;;2061:29;;;;-1:-1:-1;;;2061:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2112:5:0;;;1930:206::o;17370:1287::-;17483:6;;17462:4;;17483:6;;17479:87;;;17513:41;17528:6;17536:9;17547:6;17513:14;:41::i;:::-;17506:48;;;;17479:87;17587:28;17600:6;17608;17587:12;:28::i;:::-;17651:4;;17628:10;;-1:-1:-1;;;;;17641:14:0;;;17651:4;;17641:14;;:41;;-1:-1:-1;17669:13:0;;-1:-1:-1;;;;;17659:23:0;;;17669:13;;17659:23;17641:41;17720:4;;17628:54;;-1:-1:-1;17693:11:0;;-1:-1:-1;;;;;17707:17:0;;;17720:4;;17707:17;;:47;;-1:-1:-1;17741:13:0;;-1:-1:-1;;;;;17728:26:0;;;17741:13;;17728:26;17707:47;17693:61;;17780:6;17779:7;:30;;;;-1:-1:-1;;;;;;17791:18:0;;;;;;:7;:18;;;;;;;;17790:19;17779:30;17775:150;;;17868:10;;-1:-1:-1;;;;;17835:20:0;;;;;;:9;:20;;;;;;:29;;17858:6;;17835:29;:::i;:::-;17834:44;17826:87;;;;-1:-1:-1;;;17826:87:0;;7880:2:1;17826:87:0;;;7862:21:1;7919:2;7899:18;;;7892:30;7958:32;7938:18;;;7931:60;8008:18;;17826:87:0;7678:354:1;17826:87:0;17949:6;17945:75;;;17976:16;:14;:16::i;:::-;17972:37;;;17996:10;:8;:10::i;:::-;18052:53;;;;;;;;;;;-1:-1:-1;;;18052:53:0;;;;;;;;-1:-1:-1;;;;;18052:17:0;;-1:-1:-1;18052:17:0;;;:9;:17;;;;;;;;:53;;18074:6;;18052:21;:53::i;:::-;-1:-1:-1;;;;;18032:17:0;;;;;;:9;:17;;;;;;;;:73;;;;19213:11;:19;;;;;;;;19212:20;18141:67;;18202:6;18141:67;;;18165:34;18173:6;18181:9;18192:6;18165:7;:34::i;:::-;-1:-1:-1;;;;;18242:20:0;;;;;;:9;:20;;;;;;18116:92;;-1:-1:-1;18242:40:0;;18116:92;18242:24;:40::i;:::-;-1:-1:-1;;;;;18219:20:0;;;;;;;:9;:20;;;;;;;;:63;;;;18299:24;;;;;:16;:24;;;;;;;18295:96;;18330:11;;-1:-1:-1;;;;;18359:17:0;;;18330:11;18359:17;;;:9;:17;;;;;;;;18330:47;;-1:-1:-1;;;18330:47:0;;;;;4971:51:1;;;;5038:18;;;5031:34;18330:11:0;;;:20;;4944:18:1;;18330:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18326:63;;-1:-1:-1;;;;;18405:27:0;;;;;;:16;:27;;;;;;;;18401:105;;18439:11;;-1:-1:-1;;;;;18471:20:0;;;18439:11;18471:20;;;:9;:20;;;;;;;;18439:53;;-1:-1:-1;;;18439:53:0;;;;;4971:51:1;;;;5038:18;;;5031:34;18439:11:0;;;:20;;4944:18:1;;18439:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18435:69;;18520:11;;18540:14;;18520:35;;-1:-1:-1;;;;;;18520:35:0;;-1:-1:-1;;;;;18520:11:0;;;;:19;;:35;;;;8857:25:1;;;8845:2;8830:18;;8711:177;18520:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18516:51;18601:9;-1:-1:-1;;;;;18584:43:0;18593:6;-1:-1:-1;;;;;18584:43:0;;18612:14;18584:43;;;;8857:25:1;;8845:2;8830:18;;8711:177;18584:43:0;;;;;;;;-1:-1:-1;18645:4:0;;17370:1287;-1:-1:-1;;;;;;17370:1287:0:o;1506:98::-;1564:7;1591:5;1595:1;1591;:5;:::i;1612:98::-;1670:7;1697:5;1701:1;1697;:5;:::i;18665:279::-;18795:53;;;;;;;;;;;-1:-1:-1;;;18795:53:0;;;;;;;;-1:-1:-1;;;;;18795:17:0;;18758:4;18795:17;;;:9;:17;;;;;;;:53;;18817:6;;18795:21;:53::i;:::-;-1:-1:-1;;;;;18775:17:0;;;;;;;:9;:17;;;;;;:73;;;;18882:20;;;;;;;:32;;18907:6;18882:24;:32::i;:::-;-1:-1:-1;;;;;18859:20:0;;;;;;:9;:20;;;;;:55;-1:-1:-1;18932:4:0;18665:279;;;;;:::o;18952:166::-;19049:12;;19039:6;:22;;:49;;;-1:-1:-1;;;;;;19065:23:0;;;;;;:15;:23;;;;;;;;19039:49;19031:79;;;;-1:-1:-1;;;19031:79:0;;7189:2:1;19031:79:0;;;7171:21:1;7228:2;7208:18;;;7201:30;-1:-1:-1;;;7247:18:1;;;7240:47;7304:18;;19031:79:0;6987:341:1;19940:197:0;20027:4;;19989;;-1:-1:-1;;;;;20027:4:0;20013:10;:18;;;;:38;;-1:-1:-1;20045:6:0;;;;20044:7;20013:38;:62;;;;-1:-1:-1;20064:11:0;;;;20013:62;:116;;;;-1:-1:-1;;20116:13:0;;20106:4;20088:24;;;;:9;:24;;;;;;:41;;;19940:197::o;20145:1790::-;14487:6;:13;;-1:-1:-1;;14487:13:0;14496:4;14487:13;;;20240:15:::1;::::0;20257:26:::1;::::0;14487:6;;20224:60:::1;::::0;:15:::1;:60::i;:::-;:79;;20291:12;;20224:79;;;20287:1;20224:79;20194:109;;20314:23;20340:59;20397:1;20340:52;20383:8;;20340:38;20358:19;20340:13;;:17;;:38;;;;:::i;:59::-;20314:85;;20410:20;20433:34;20451:15;20433:13;;:17;;:34;;;;:::i;:::-;20504:16;::::0;;20518:1:::1;20504:16:::0;;;;;::::1;::::0;;20410:57;;-1:-1:-1;20480:21:0::1;::::0;20504:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;20504:16:0::1;20480:40;;20549:4;20531;20536:1;20531:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20531:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;20575:5:::1;::::0;20565:7;;20575:5;::::1;::::0;20565:4;;20575:5;;20565:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;20565:15:0;;::::1;:7;::::0;;::::1;::::0;;;;;:15;20649:6:::1;::::0;:189:::1;::::0;-1:-1:-1;;;20649:189:0;;20615:21:::1;::::0;20649:6;;;::::1;::::0;:58:::1;::::0;:189:::1;::::0;20722:12;;20591:21:::1;::::0;20765:4;;20792::::1;::::0;20812:15:::1;::::0;20649:189:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20851:18;20872:40;20898:13;20872:21;:25;;:40;;;;:::i;:::-;20851:61:::0;-1:-1:-1;20923:20:0::1;20946:40;20959:26;:19:::0;20983:1:::1;20959:23;:26::i;:::-;20946:8;::::0;;:12:::1;:40::i;:::-;20923:63:::0;-1:-1:-1;20999:27:0::1;21029:60;21087:1;21029:53;20923:63:::0;21029:53;:10;21044:19;21029:14:::1;:35::i;:60::-;20999:90;;21100:26;21129:45;21161:12;21129:27;21144:11;;21129:10;:14;;:27;;;;:::i;:45::-;21100:74;;21185:28;21216:47;21250:12;21216:29;21231:13;;21216:10;:14;;:29;;;;:::i;:47::-;21185:78;;21274:27;21304:46;21337:12;21304:28;21319:12;;21304:10;:14;;:28;;;;:::i;:46::-;21274:76;;21367:11;;;;;;;;;-1:-1:-1::0;;;;;21367:11:0::1;-1:-1:-1::0;;;;;21367:19:0::1;;21394:20;21367:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;21363:66:::0;21447:14:::1;::::0;21439:52:::1;::::0;-1:-1:-1;;;;;21447:14:0;;::::1;::::0;21439:52;::::1;;;::::0;21472:18;;21447:14:::1;21439:52:::0;21447:14;21439:52;21472:18;21447:14;21439:52;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;21510:15:0::1;::::0;21502:54:::1;::::0;-1:-1:-1;;;;;21510:15:0;;::::1;::::0;21502:54;::::1;;;::::0;21536:19;;21510:15:::1;21502:54:::0;21510:15;21502:54;21536:19;21510:15;21502:54;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;21572:19:0;;21569:359:::1;;21607:6;::::0;21783:15:::1;::::0;21607:240:::1;::::0;-1:-1:-1;;;21607:240:0;;21685:4:::1;21607:240;::::0;::::1;5696:34:1::0;5746:18;;;5739:34;;;21607:6:0::1;5789:18:1::0;;;5782:34;;;5832:18;;;5825:34;-1:-1:-1;;;;;21783:15:0;;::::1;5875:19:1::0;;;5868:44;21817:15:0::1;5928:19:1::0;;;5921:35;21607:6:0;::::1;::::0;:23:::1;::::0;21638:19;;5630::1;;21607:240:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;21867:49:0::1;::::0;;10052:25:1;;;10108:2;10093:18;;10086:34;;;21867:49:0::1;::::0;-1:-1:-1;10025:18:1;21867:49:0::1;;;;;;;21569:359;-1:-1:-1::0;;14505:6:0;:14;;-1:-1:-1;;14505:14:0;;;-1:-1:-1;;;;;;;;;20145:1790:0:o;19560:372::-;19731:14;;19720:4;;19645:7;;;;19685:61;;19731:14;19685:41;;19696:29;;-1:-1:-1;;;;;19708:16:0;;;19720:4;;19708:16;19696:11;:29::i;:::-;19685:6;;:10;:41::i;:61::-;19804:4;19786:24;;;;:9;:24;;;;;;19665:81;;-1:-1:-1;19786:39:0;;19665:81;19786:28;:39::i;:::-;19777:4;19759:24;;;;:9;:24;;;;;;;:66;;;;19841:42;;-1:-1:-1;;;;;19841:42:0;;;;;;;19873:9;8857:25:1;;8845:2;8830:18;;8711:177;19841:42:0;;;;;;;;19903:21;:6;19914:9;19903:10;:21::i;:::-;19896:28;19560:372;-1:-1:-1;;;;;19560:372:0:o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;179:247;238:6;291:2;279:9;270:7;266:23;262:32;259:52;;;307:1;304;297:12;259:52;346:9;333:23;365:31;390:5;365:31;:::i;691:388::-;759:6;767;820:2;808:9;799:7;795:23;791:32;788:52;;;836:1;833;826:12;788:52;875:9;862:23;894:31;919:5;894:31;:::i;:::-;944:5;-1:-1:-1;1001:2:1;986:18;;973:32;1014:33;973:32;1014:33;:::i;:::-;1066:7;1056:17;;;691:388;;;;;:::o;1084:529::-;1161:6;1169;1177;1230:2;1218:9;1209:7;1205:23;1201:32;1198:52;;;1246:1;1243;1236:12;1198:52;1285:9;1272:23;1304:31;1329:5;1304:31;:::i;:::-;1354:5;-1:-1:-1;1411:2:1;1396:18;;1383:32;1424:33;1383:32;1424:33;:::i;:::-;1476:7;-1:-1:-1;1535:2:1;1520:18;;1507:32;1548:33;1507:32;1548:33;:::i;:::-;1600:7;1590:17;;;1084:529;;;;;:::o;1618:456::-;1695:6;1703;1711;1764:2;1752:9;1743:7;1739:23;1735:32;1732:52;;;1780:1;1777;1770:12;1732:52;1819:9;1806:23;1838:31;1863:5;1838:31;:::i;:::-;1888:5;-1:-1:-1;1945:2:1;1930:18;;1917:32;1958:33;1917:32;1958:33;:::i;:::-;1618:456;;2010:7;;-1:-1:-1;;;2064:2:1;2049:18;;;;2036:32;;1618:456::o;2079:315::-;2144:6;2152;2205:2;2193:9;2184:7;2180:23;2176:32;2173:52;;;2221:1;2218;2211:12;2173:52;2260:9;2247:23;2279:31;2304:5;2279:31;:::i;:::-;2329:5;-1:-1:-1;2353:35:1;2384:2;2369:18;;2353:35;:::i;:::-;2343:45;;2079:315;;;;;:::o;2399:::-;2467:6;2475;2528:2;2516:9;2507:7;2503:23;2499:32;2496:52;;;2544:1;2541;2534:12;2496:52;2583:9;2570:23;2602:31;2627:5;2602:31;:::i;:::-;2652:5;2704:2;2689:18;;;;2676:32;;-1:-1:-1;;;2399:315:1:o;2719:180::-;2775:6;2828:2;2816:9;2807:7;2803:23;2799:32;2796:52;;;2844:1;2841;2834:12;2796:52;2867:26;2883:9;2867:26;:::i;2904:248::-;2969:6;2977;3030:2;3018:9;3009:7;3005:23;3001:32;2998:52;;;3046:1;3043;3036:12;2998:52;3069:26;3085:9;3069:26;:::i;3157:180::-;3216:6;3269:2;3257:9;3248:7;3244:23;3240:32;3237:52;;;3285:1;3282;3275:12;3237:52;-1:-1:-1;3308:23:1;;3157:180;-1:-1:-1;3157:180:1:o;3342:248::-;3410:6;3418;3471:2;3459:9;3450:7;3446:23;3442:32;3439:52;;;3487:1;3484;3477:12;3439:52;-1:-1:-1;;3510:23:1;;;3580:2;3565:18;;;3552:32;;-1:-1:-1;3342:248:1:o;3595:306::-;3683:6;3691;3699;3752:2;3740:9;3731:7;3727:23;3723:32;3720:52;;;3768:1;3765;3758:12;3720:52;3797:9;3791:16;3781:26;;3847:2;3836:9;3832:18;3826:25;3816:35;;3891:2;3880:9;3876:18;3870:25;3860:35;;3595:306;;;;;:::o;3906:454::-;4001:6;4009;4017;4025;4033;4086:3;4074:9;4065:7;4061:23;4057:33;4054:53;;;4103:1;4100;4093:12;4054:53;-1:-1:-1;;4126:23:1;;;4196:2;4181:18;;4168:32;;-1:-1:-1;4247:2:1;4232:18;;4219:32;;4298:2;4283:18;;4270:32;;-1:-1:-1;4349:3:1;4334:19;4321:33;;-1:-1:-1;3906:454:1;-1:-1:-1;3906:454:1:o;6385:597::-;6497:4;6526:2;6555;6544:9;6537:21;6587:6;6581:13;6630:6;6625:2;6614:9;6610:18;6603:34;6655:1;6665:140;6679:6;6676:1;6673:13;6665:140;;;6774:14;;;6770:23;;6764:30;6740:17;;;6759:2;6736:26;6729:66;6694:10;;6665:140;;;6823:6;6820:1;6817:13;6814:91;;;6893:1;6888:2;6879:6;6868:9;6864:22;6860:31;6853:42;6814:91;-1:-1:-1;6966:2:1;6945:15;-1:-1:-1;;6941:29:1;6926:45;;;;6973:2;6922:54;;6385:597;-1:-1:-1;;;6385:597:1:o;8037:329::-;8239:2;8221:21;;;8278:1;8258:18;;;8251:29;-1:-1:-1;;;8311:2:1;8296:18;;8289:36;8357:2;8342:18;;8037:329::o;8371:335::-;8573:2;8555:21;;;8612:2;8592:18;;;8585:30;-1:-1:-1;;;8646:2:1;8631:18;;8624:41;8697:2;8682:18;;8371:335::o;8893:980::-;9155:4;9203:3;9192:9;9188:19;9234:6;9223:9;9216:25;9260:2;9298:6;9293:2;9282:9;9278:18;9271:34;9341:3;9336:2;9325:9;9321:18;9314:31;9365:6;9400;9394:13;9431:6;9423;9416:22;9469:3;9458:9;9454:19;9447:26;;9508:2;9500:6;9496:15;9482:29;;9529:1;9539:195;9553:6;9550:1;9547:13;9539:195;;;9618:13;;-1:-1:-1;;;;;9614:39:1;9602:52;;9709:15;;;;9674:12;;;;9650:1;9568:9;9539:195;;;-1:-1:-1;;;;;;;9790:32:1;;;;9785:2;9770:18;;9763:60;-1:-1:-1;;;9854:3:1;9839:19;9832:35;9751:3;8893:980;-1:-1:-1;;;8893:980:1:o;10320:128::-;10360:3;10391:1;10387:6;10384:1;10381:13;10378:39;;;10397:18;;:::i;:::-;-1:-1:-1;10433:9:1;;10320:128::o;10453:217::-;10493:1;10519;10509:132;;10563:10;10558:3;10554:20;10551:1;10544:31;10598:4;10595:1;10588:15;10626:4;10623:1;10616:15;10509:132;-1:-1:-1;10655:9:1;;10453:217::o;10675:168::-;10715:7;10781:1;10777;10773:6;10769:14;10766:1;10763:21;10758:1;10751:9;10744:17;10740:45;10737:71;;;10788:18;;:::i;:::-;-1:-1:-1;10828:9:1;;10675:168::o;10848:125::-;10888:4;10916:1;10913;10910:8;10907:34;;;10921:18;;:::i;:::-;-1:-1:-1;10958:9:1;;10848:125::o;10978:127::-;11039:10;11034:3;11030:20;11027:1;11020:31;11070:4;11067:1;11060:15;11094:4;11091:1;11084:15;11110:127;11171:10;11166:3;11162:20;11159:1;11152:31;11202:4;11199:1;11192:15;11226:4;11223:1;11216:15;11374:131;-1:-1:-1;;;;;11449:31:1;;11439:42;;11429:70;;11495:1;11492;11485:12;11429:70;11374:131;:::o

Swarm Source

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