Contract 0xBc7579Fe48792f0044087b48786e4ca151bcf4C0 1

 

Contract Overview

Chameleon Rewards v2: CRewards Token
Balance:
1.894045635739886551 BNB

BNB Value:
$736.18 (@ $388.68/BNB)

Token:
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x86e497c798b617077cbf872a0de3ac077680718d78f6d982110d2a0b3225fdf6Approve143516842022-01-14 6:59:2114 days 18 hrs ago0x59dfddefba72c67bd96c0de6ec943fa2758651c5 IN  Chameleon Rewards v2: CRewards Token0 BNB0.000221675
0x03398f0e8ed49bb3214788fc3d7003cba726cc248c046fd9db025ccde2a69569Approve143516092022-01-14 6:55:3614 days 18 hrs ago0x8b690529ba8b0c50b1e9db08e63deba795a8b0d1 IN  Chameleon Rewards v2: CRewards Token0 BNB0.000221675
0x57755a74b53758eec96c225bc0e0ec4b779119dd98c869c11b480858b88b3a4eSet Is Fee Exemp...143512282022-01-14 6:36:3314 days 18 hrs agoChameleon Rewards v2: Deployer IN  Chameleon Rewards v2: CRewards Token0 BNB0.00021877
0xe8d180ac6aaf4a504e99dfd74e4ebf348d9dcfcad57a73b649b3f1c0cbc7f81fSet Is Fee Exemp...143512082022-01-14 6:35:3314 days 18 hrs agoChameleon Rewards v2: Deployer IN  Chameleon Rewards v2: CRewards Token0 BNB0.00021877
0x9990617bfd8ea09abafaf2d4912067158a6bc3533076c53cce17366ab7029776Set Is Dividend ...143512032022-01-14 6:35:1814 days 18 hrs agoChameleon Rewards v2: Deployer IN  Chameleon Rewards v2: CRewards Token0 BNB0.00028323
0x593a06f3ebdd85d302f457945f3829dacd1cd271aee25aae57d0a0ed5324cbb9Approve143511052022-01-14 6:30:2414 days 18 hrs ago0x59dfddefba72c67bd96c0de6ec943fa2758651c5 IN  Chameleon Rewards v2: CRewards Token0 BNB0.000221675
0xeb6f4f67e407d9f972a0bbd81b1b29717d0055c874b9b1c82f6b29f4e33b76e1Approve140352442022-01-03 6:45:4625 days 18 hrs ago0xb468b46a62798b6c4b17b0c5f4c6f94f4fcc8933 IN  Chameleon Rewards v2: CRewards Token0 BNB0.000221675
0x97b0a22e80b772cd8fa227811082526e4c4e4ea26e671de4cad74db2826dc35dAirdrop Fixed140316412022-01-03 3:45:3725 days 21 hrs agoChameleon Rewards v2: Deployer IN  Chameleon Rewards v2: CRewards Token0 BNB0.019619355
0x3cad601195efc52825cd976a9629d3245dc422c362eeac12bb139e38f720178cSwitch Token140313702022-01-03 3:32:0425 days 21 hrs agoChameleon Rewards v2: Deployer IN  Chameleon Rewards v2: CRewards Token0 BNB0.00510559
0x3d686f7eeb013a4ffa57a73c6c80073ccada8550daa314e240854b69c6d92647Purge Before Swi...140313472022-01-03 3:30:5525 days 21 hrs agoChameleon Rewards v2: Deployer IN  Chameleon Rewards v2: CRewards Token0 BNB0.000184315
0xc6a7148dcc89dc7835ed21c74a23b3f07a9ae65c1b02238ed9009c6ed8b532ddApprove135900242021-12-18 18:41:1641 days 6 hrs ago0x28f95bb39dc0afa5cf3fccc05344d0ec9aa884ef IN  Chameleon Rewards v2: CRewards Token0 BNB0.000221675
0xd15b1ab618c64682bf0ef4b708258e30b97a07a53c8496fe303cf45f2d8adf0dApprove134540282021-12-14 0:50:4646 days 30 mins ago0x38bcc5026e99329f72e6e4b4992c5ca73303d29f IN  Chameleon Rewards v2: CRewards Token0 BNB0.000221675
0xc0344823abace04c1803fb9291494ebe6fe93da9ef9556165785f051e2f2e2b6Approve133346682021-12-09 20:56:0350 days 4 hrs ago0x4bd7ed4bf6ed9e9aad67bfa36041fb62997d9002 IN  Chameleon Rewards v2: CRewards Token0 BNB0.000123755
0x2263522652e0fa43f6c4647262a45f4cb988aeb2faa36dd402f850ce0f40134cApprove133346652021-12-09 20:55:5450 days 4 hrs ago0x4bd7ed4bf6ed9e9aad67bfa36041fb62997d9002 IN  Chameleon Rewards v2: CRewards Token0 BNB0.000123755
0xe878f1dfedd649c583c4accd39306b1f67fdcf3a9c0af5c246e6d8e3fbfd2286Approve133346622021-12-09 20:55:4550 days 4 hrs ago0x4bd7ed4bf6ed9e9aad67bfa36041fb62997d9002 IN  Chameleon Rewards v2: CRewards Token0 BNB0.00007238
0x8946a645acbee06e1e27230cbb1cd7388a2f7f7b3600221b242089c345c069f0Airdrop Fixed132615602021-12-07 3:44:0852 days 21 hrs agoChameleon Rewards v2: Deployer IN  Chameleon Rewards v2: CRewards Token0 BNB0.01918874
0xc857d8a6d18a8d0094ff7b375f29a8e69e708b643d8eb3b8e991132d30d60dfbSwitch Token132612722021-12-07 3:29:1652 days 21 hrs agoChameleon Rewards v2: Deployer IN  Chameleon Rewards v2: CRewards Token0 BNB0.00510553
0xd3af93add1392298746dad38d22d2d4e6bdd44e94631a7190e72928c1a328b22Purge Before Swi...132612512021-12-07 3:28:1352 days 21 hrs agoChameleon Rewards v2: Deployer IN  Chameleon Rewards v2: CRewards Token0 BNB0.000348265
0x5e58262fb7cd124798fb7a3b678051a7b527b95f82e246c39164620f9c921dd7Approve132180972021-12-05 14:26:1954 days 10 hrs ago0x1347e59663297b4023eaa435d17d7fadecd0dad0 IN  Chameleon Rewards v2: CRewards Token0 BNB0.000221675
0xd69afe43faf7234039677c138a72fc69c7b2e9a46b8f636401c0429f6b44d30dApprove131996722021-12-04 22:51:5055 days 2 hrs ago0x2c0b8760d82b62ed8a0c5a513899bc09b16649ca IN  Chameleon Rewards v2: CRewards Token0 BNB0.000221675
0x2e51cd873637ca1dc86aa35adc69ec258a1848bacc8b33fa6d866c927f6b09f8Approve129330812021-11-25 2:13:0464 days 23 hrs ago0xb2ab724120f36dd11484a7292478c792a65d5aaf IN  Chameleon Rewards v2: CRewards Token0 BNB0.000221675
0x01e731bc9e4400312ed9f916694412690fb80707fbf62a349059a9e56f3b420fApprove129009042021-11-23 22:11:3766 days 3 hrs ago0xe6fd746c1a44b52ee4727b95b6d971066af59a6e IN  Chameleon Rewards v2: CRewards Token0 BNB0.000221675
0xb78a2bdaba09911533a6c6011750e289bf53f92a93435aa0d326f896e2722b37Approve128842202021-11-23 7:30:5266 days 17 hrs ago0x242facadd466d2958b13526743a8af7c015beb4a IN  Chameleon Rewards v2: CRewards Token0 BNB0.000221675
0x031f541c45fd8b2d6aa07bc896be9f67274f9a01ffa30ef8610e9f7d562bef84Airdrop Fixed128706142021-11-22 19:58:3367 days 5 hrs agoChameleon Rewards v2: Deployer IN  Chameleon Rewards v2: CRewards Token0 BNB0.02004997
0x6af5f6bdb4a47eb7b69c86704613e64cf471a5cb2cd92d343d383fdcc64cd6aeSwitch Token128703862021-11-22 19:47:0867 days 5 hrs agoChameleon Rewards v2: Deployer IN  Chameleon Rewards v2: CRewards Token0 BNB0.00510559
[ Download CSV Export 

OVERVIEW

An innovative dividend token with the goal of passively diversifying your crypto holdings by holding Chameleon Rewards. 5% of each transaction automatically distributed to holders in the set dividend token which changes every 2 weeks.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x373a5670ba415ed77dfc2de29c8e1a919ff88e9f2a0ee5f2953e4184312dba41145056822022-01-19 16:12:559 days 9 hrs ago Chameleon Rewards v2: CRewards Token0x49fbe6feee9c3a98a3cd6a2edc157a392bd1866c0.018433468642448401 BNB
0x373a5670ba415ed77dfc2de29c8e1a919ff88e9f2a0ee5f2953e4184312dba41145056822022-01-19 16:12:559 days 9 hrs ago Chameleon Rewards v2: CRewards Token 0x637041e24e47fb3b5260b810d869a4252e2542c00.023041835803060502 BNB
0x373a5670ba415ed77dfc2de29c8e1a919ff88e9f2a0ee5f2953e4184312dba41145056822022-01-19 16:12:559 days 9 hrs ago PancakeSwap: Router v2 Chameleon Rewards v2: CRewards Token0.055300405927345205 BNB
0x1678ba014dbc0cfe2aa2a58257d44be240b34d944a0e3ffa26cad915bcaebae2143516962022-01-14 6:59:5714 days 18 hrs ago Chameleon Rewards v2: CRewards Token0x49fbe6feee9c3a98a3cd6a2edc157a392bd1866c0.018751049427505217 BNB
0x1678ba014dbc0cfe2aa2a58257d44be240b34d944a0e3ffa26cad915bcaebae2143516962022-01-14 6:59:5714 days 18 hrs ago Chameleon Rewards v2: CRewards Token 0x637041e24e47fb3b5260b810d869a4252e2542c00.023438811784381521 BNB
0x1678ba014dbc0cfe2aa2a58257d44be240b34d944a0e3ffa26cad915bcaebae2143516962022-01-14 6:59:5714 days 18 hrs ago PancakeSwap: Router v2 Chameleon Rewards v2: CRewards Token0.056253148282515651 BNB
0xf098e6b075ce3421ee431868edf95a5976f627fcb1716f053bb6d4fadf9baa80143513182022-01-14 6:41:0314 days 18 hrs ago Chameleon Rewards v2: CRewards Token0x49fbe6feee9c3a98a3cd6a2edc157a392bd1866c0.019076912223948981 BNB
0xf098e6b075ce3421ee431868edf95a5976f627fcb1716f053bb6d4fadf9baa80143513182022-01-14 6:41:0314 days 18 hrs ago Chameleon Rewards v2: CRewards Token 0x637041e24e47fb3b5260b810d869a4252e2542c00.023846140279936226 BNB
0xf098e6b075ce3421ee431868edf95a5976f627fcb1716f053bb6d4fadf9baa80143513182022-01-14 6:41:0314 days 18 hrs ago PancakeSwap: Router v2 Chameleon Rewards v2: CRewards Token0.057230736671846943 BNB
0xe9b558f0a108743ab0b240a27b3c48efac908c1ff58535a32ef1433cfbf35381140352502022-01-03 6:46:0425 days 18 hrs ago Chameleon Rewards v2: CRewards Token0x49fbe6feee9c3a98a3cd6a2edc157a392bd1866c0.017648698528695169 BNB
0xe9b558f0a108743ab0b240a27b3c48efac908c1ff58535a32ef1433cfbf35381140352502022-01-03 6:46:0425 days 18 hrs ago Chameleon Rewards v2: CRewards Token 0x637041e24e47fb3b5260b810d869a4252e2542c00.022060873160868962 BNB
0xe9b558f0a108743ab0b240a27b3c48efac908c1ff58535a32ef1433cfbf35381140352502022-01-03 6:46:0425 days 18 hrs ago PancakeSwap: Router v2 Chameleon Rewards v2: CRewards Token0.052946095586085509 BNB
0x3cad601195efc52825cd976a9629d3245dc422c362eeac12bb139e38f720178c140313702022-01-03 3:32:0425 days 21 hrs ago Chameleon Rewards v2: CRewards Token  Contract Creation0 BNB
0xf74f2ba51f5058e0c3bf3eb17ecbb4d58ed78f56888bb3465a0b664f8daf1966135900602021-12-18 18:43:0441 days 6 hrs ago Chameleon Rewards v2: CRewards Token0x49fbe6feee9c3a98a3cd6a2edc157a392bd1866c0.018099800958772639 BNB
0xf74f2ba51f5058e0c3bf3eb17ecbb4d58ed78f56888bb3465a0b664f8daf1966135900602021-12-18 18:43:0441 days 6 hrs ago Chameleon Rewards v2: CRewards Token 0x9ec53940c9731c551199071371fd9f34120334b30.022624751198465799 BNB
0xf74f2ba51f5058e0c3bf3eb17ecbb4d58ed78f56888bb3465a0b664f8daf1966135900602021-12-18 18:43:0441 days 6 hrs ago PancakeSwap: Router v2 Chameleon Rewards v2: CRewards Token0.054299402876317918 BNB
0x20169ba026ec3188e6c683214fd28528758c105f98c332b802ad1f200ec45b68134541962021-12-14 0:59:1046 days 21 mins ago Chameleon Rewards v2: CRewards Token0x49fbe6feee9c3a98a3cd6a2edc157a392bd1866c0.020326315607362855 BNB
0x20169ba026ec3188e6c683214fd28528758c105f98c332b802ad1f200ec45b68134541962021-12-14 0:59:1046 days 21 mins ago Chameleon Rewards v2: CRewards Token 0x9ec53940c9731c551199071371fd9f34120334b30.024391578728835426 BNB
0x20169ba026ec3188e6c683214fd28528758c105f98c332b802ad1f200ec45b68134541962021-12-14 0:59:1046 days 21 mins ago PancakeSwap: Router v2 Chameleon Rewards v2: CRewards Token0.060978946822088566 BNB
0xc3cbcc6cd58ac17f4ef6adccb7fb9f4b8c943ee9f5b163a04fbc699cc4b868c2132743232021-12-07 15:01:5052 days 10 hrs ago Chameleon Rewards v2: CRewards Token0x49fbe6feee9c3a98a3cd6a2edc157a392bd1866c0.021017311760821812 BNB
0xc3cbcc6cd58ac17f4ef6adccb7fb9f4b8c943ee9f5b163a04fbc699cc4b868c2132743232021-12-07 15:01:5052 days 10 hrs ago Chameleon Rewards v2: CRewards Token 0x9ec53940c9731c551199071371fd9f34120334b30.026271639701027265 BNB
0xc3cbcc6cd58ac17f4ef6adccb7fb9f4b8c943ee9f5b163a04fbc699cc4b868c2132743232021-12-07 15:01:5052 days 10 hrs ago PancakeSwap: Router v2 Chameleon Rewards v2: CRewards Token0.063051935282465436 BNB
0xc857d8a6d18a8d0094ff7b375f29a8e69e708b643d8eb3b8e991132d30d60dfb132612722021-12-07 3:29:1652 days 21 hrs ago Chameleon Rewards v2: CRewards Token  Contract Creation0 BNB
0xfbc233e5f8d92eea1017bb715c9e93d8cff082b955cb834d13561436c7bd36ad132181442021-12-05 14:28:4954 days 10 hrs ago Chameleon Rewards v2: CRewards Token0x49fbe6feee9c3a98a3cd6a2edc157a392bd1866c0.022131209037884372 BNB
0xfbc233e5f8d92eea1017bb715c9e93d8cff082b955cb834d13561436c7bd36ad132181442021-12-05 14:28:4954 days 10 hrs ago Chameleon Rewards v2: CRewards Token 0xd2c0fcf58209946fd8405c4f5b003aaf241fa4f50.026557450845461247 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ChameleonRewards2

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-09-27
*/

//SPDX-License-Identifier: Unlicensed

pragma solidity ^0.7.6;


library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

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

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

/**
 * BEP20 standard interface.
 */
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);
}

/**
 * Allows for contract ownership along with multi-address authorization
 */
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 WETH() 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 addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

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

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        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;
    function purge(address receiver) external;
}

contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;

    address public _token;

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

    IBEP20 public REWARD;
    address public WBNB = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c;
    IDEXRouter public router;

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

    mapping (address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;
    uint256 public minPeriod = 60 * 60;
    uint256 public minDistribution = 1 * (10 ** 9);

    uint256 currentIndex;

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

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

    constructor (address _router, address rewardToken) {
        router = _router != address(0)
            ? IDEXRouter(_router)
            : IDEXRouter(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        _token = msg.sender;
        REWARD = IBEP20(rewardToken);
    }

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

    function purge(address receiver) external override onlyToken {
        uint256 balance = REWARD.balanceOf(address(this));
        REWARD.transfer(receiver, balance);
    }

    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 = REWARD.balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = WBNB;
        path[1] = address(REWARD);

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

        uint256 amount = REWARD.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);
            REWARD.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 ChameleonRewards2 is IBEP20, Auth {
    using SafeMath for uint256;

    address WBNB = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "Chameleon Rewards v2";
    string constant _symbol = "CRewards";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 5000000000 * 10**9;
    uint256 public _maxTxAmount = _totalSupply * 100 / 100;

    //max wallet holding of (SET)% 
    uint256 public _maxWalletToken = ( _totalSupply * 100 ) / 100;

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

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) isTimelockExempt;
    mapping (address => bool) isDividendExempt;

    uint256 private liquidityFee    = 3;
    uint256 private reflectionFee   = 5;
    uint256 private marketingFee    = 4;
    uint256 totalFee = 12;
    uint256 feeDenominator  = 100;
    uint256 BuyliquidityFee    = 3;
    uint256 BuyreflectionFee   = 5;
    uint256 BuymarketingFee    = 4;
    uint256 SellliquidityFee    = 4;
    uint256 SellreflectionFee   = 6;
    uint256 SellmarketingFee    = 5;
    
    //To avoid snipers and bots on launch, "BAN" fees are increased fees 
    //on launch for the first 5mins of the contract (300 seconds)
    uint256 private banliquidityFee    = 10; 
    uint256 private banreflectionFee   = 10;
    uint256 private banmarketingFee    = 10;
    
    uint256 blocks = 0;
    uint256 banblock = 0;

    address autoLiquidityReceiver;
    address marketingFeeReceiver;

    uint256 targetLiquidity = 20;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    address public pair;

    bool public tradingOpen = false;

    DividendDistributor public distributor;
    uint256 distributorGas = 500000;

    // Cooldown & timer functionality
    bool public buyCooldownEnabled = false;
    uint8 public cooldownTimerInterval = 0;
    mapping (address => uint) private cooldownTimer;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 10 / 10000; // 0.01% of supply
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        pair = IDEXFactory(router.factory()).createPair(WBNB, address(this));
        _allowances[address(this)][address(router)] = uint256(-1);

        distributor = new DividendDistributor(address(router), 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c);

        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;

        // No timelock for these people
        isTimelockExempt[msg.sender] = true;
        isTimelockExempt[DEAD] = true;
        isTimelockExempt[address(this)] = true;

        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;

        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = msg.sender;

        _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, uint256(-1));
    }

    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] != uint256(-1)){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    //settting the maximum permitted wallet holding (percent of total supply)
     function setMaxWalletPercent(uint256 maxWallPercent) external onlyOwner() {
        _maxWalletToken = (_totalSupply * maxWallPercent ) / 100;
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
    

        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen,"Trading not open yet");
        }



        // max wallet & Tx code
        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != marketingFeeReceiver && recipient != autoLiquidityReceiver){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}
            require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
        
        // cooldown timer, so a bot doesnt do quick trades! 1min gap between 2 trades.
        if (sender == pair &&
            buyCooldownEnabled &&
            !isTimelockExempt[recipient]) {
            require(cooldownTimer[recipient] < block.timestamp,"Please wait for cooldown between buys");
            cooldownTimer[recipient] = block.timestamp + cooldownTimerInterval;
        }


        // Liquidity, Maintained at 20%
        if(shouldSwapBack()){ swapBack(); }

        //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

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

        // Dividend tracker
        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);
        emit Transfer(sender, recipient, amount);
        return true;
    }


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

    function takeFee(address sender, uint256 amount) internal returns (uint256) {
        if (block.timestamp < banblock){
            liquidityFee = banliquidityFee;
            marketingFee = banmarketingFee;
            reflectionFee = banreflectionFee;
            totalFee = banliquidityFee.add(banmarketingFee).add(banreflectionFee);
        }
        else{
        if (sender == pair){
            liquidityFee = BuyliquidityFee;
            marketingFee = BuymarketingFee;
            reflectionFee = BuyreflectionFee;
            totalFee = liquidityFee.add(marketingFee).add(reflectionFee);
        }
        else{
            liquidityFee = SellliquidityFee;
            marketingFee = SellmarketingFee;
            reflectionFee = SellreflectionFee;
            totalFee = liquidityFee.add(marketingFee).add(reflectionFee);
        }
        }
        
        uint256 feeAmount = amount.mul(totalFee).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 clearStuckBalance(uint256 amountPercentage) external onlyOwner {
        uint256 amountBNB = address(this).balance;
        payable(marketingFeeReceiver).transfer(amountBNB * amountPercentage / 100);
    }


    // switch Trading
    function tradingStatus(bool _status) public onlyOwner {
        tradingOpen = _status;
        banblock = block.timestamp + blocks;
    }

    // enable cooldown between trades
    function cooldownEnabled(bool _status, uint8 _interval) public onlyOwner {
        buyCooldownEnabled = _status;
        cooldownTimerInterval = _interval;
    }

    // new dividend tracker, clear balance
    function purgeBeforeSwitch() public onlyOwner {
        distributor.purge(msg.sender);
    }

    // new dividend tracker
    function switchToken(address rewardToken) public onlyOwner {
        distributor = new DividendDistributor(address(router), rewardToken);
    }

    // manual claim for the greedy humans
    function ___claimRewards() public {
        distributor.claimDividend();
        try distributor.process(distributorGas) {} catch {}
    }

    // manually clear the queue
    function claimProcess() public {
        try distributor.process(distributorGas) {} catch {}
    }




    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] = WBNB;

        uint256 balanceBefore = address(this).balance;

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

        uint256 amountBNB = address(this).balance.sub(balanceBefore);

        uint256 totalBNBFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountBNBLiquidity = amountBNB.mul(dynamicLiquidityFee).div(totalBNBFee).div(2);
        uint256 amountBNBReflection = amountBNB.mul(reflectionFee).div(totalBNBFee);
        uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(totalBNBFee);

        try distributor.deposit{value: amountBNBReflection}() {} catch {}
        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountBNBMarketing, gas: 30000}("");
        
        // only to supress warning msg
        tmpSuccess = false;

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountBNBLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountBNBLiquidity, amountToLiquify);
        }
    }


    function setTxLimit(uint256 amount) external authorized {
        _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 setIsTimelockExempt(address holder, bool exempt) external authorized {
        isTimelockExempt[holder] = exempt;
    }

    function setSellFees(uint256 _liquidityFee, uint256 _reflectionFee, uint256 _marketingFee, uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        reflectionFee = _reflectionFee;
        marketingFee = _marketingFee;
        totalFee = _liquidityFee.add(_reflectionFee).add(_marketingFee);
        SellliquidityFee = _liquidityFee;
        SellreflectionFee = _reflectionFee;
        SellmarketingFee = _marketingFee;
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator/4);
        
    }

    function setBuyFees(uint256 _liquidityFee, uint256 _reflectionFee, uint256 _marketingFee) external authorized {
        BuyliquidityFee = _liquidityFee;
        BuyreflectionFee = _reflectionFee;
        BuymarketingFee = _marketingFee;
    }

    function setBanFees(uint256 _liquidityFee, uint256 _reflectionFee, uint256 _marketingFee) external authorized {
        banliquidityFee = _liquidityFee;
        banreflectionFee = _reflectionFee;
        banmarketingFee = _marketingFee;
    }
    
    function setBanblock(uint256 _blocks) external authorized {
        blocks = _blocks;
    }
    
    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver) external authorized {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
    }

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


 function airdrop(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {

    uint256 SCCC = 0;

    require(addresses.length == tokens.length,"Mismatch between Address and token count");

    for(uint i=0; i < addresses.length; i++){
        SCCC = SCCC + tokens[i];
    }

    require(balanceOf(from) >= SCCC, "Not enough tokens to airdrop");

    for(uint i=0; i < addresses.length; i++){
        _basicTransfer(from,addresses[i],tokens[i]);
        if(!isDividendExempt[addresses[i]]) {
            try distributor.setShare(addresses[i], _balances[addresses[i]]) {} catch {} 
        }
    }

    // Dividend tracker
    if(!isDividendExempt[from]) {
        try distributor.setShare(from, _balances[from]) {} catch {}
    }
}

 function airdropFixed(address from, address[] calldata addresses, uint256 tokens) external onlyOwner {

    uint256 SCCC = addresses.length * tokens;

    require(balanceOf(from) >= SCCC, "Not enough tokens to airdrop");

    for(uint i=0; i < addresses.length; i++){
        _basicTransfer(from,addresses[i],tokens);
        if(!isDividendExempt[addresses[i]]) {
            try distributor.setShare(addresses[i], _balances[addresses[i]]) {} catch {} 
        }
    }

    // Dividend tracker
    if(!isDividendExempt[from]) {
        try distributor.setShare(from, _balances[from]) {} catch {}
    }
}

    event AutoLiquify(uint256 amountBNB, uint256 amountBOG);

}

Contract Security Audit

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":"amountBNB","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":"___claimRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"airdropFixed","outputs":[],"stateMutability":"nonpayable","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":[],"name":"buyCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimProcess","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint8","name":"_interval","type":"uint8"}],"name":"cooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownTimerInterval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract DividendDistributor","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":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"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":"purgeBeforeSwitch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setBanFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_blocks","type":"uint256"}],"name":"setBanblock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","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":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","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":"setIsTimelockExempt","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":"maxWallPercent","type":"uint256"}],"name":"setMaxWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setSellFees","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":[],"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":[{"internalType":"address","name":"rewardToken","type":"address"}],"name":"switchToken","outputs":[],"stateMutability":"nonpayable","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":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600280546001600160a01b031990811673bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c1790915560038054821661dead178155600480549092168255674563918244f4000060058181556006828155600792909255600e839055600f8190556010849055600c6011556064601281905560139390935560148181556015859055601694909455601791909155601855600a6019819055601a819055601b556000601c819055601d556020919091556021556023805460ff60a01b191690556207a1206025556026805461ffff191690556028805460ff191660011790556611c37937e08000602955348015620000fb57600080fd5b50600080546001600160a01b0319908116339081178355825260016020818152604093849020805460ff1916909217909155602280549092167310ed43c718714eb63d5aa57b78b54704e256024e1791829055825163c45a015560e01b815292516001600160a01b03929092169263c45a01559260048083019392829003018186803b1580156200018b57600080fd5b505afa158015620001a0573d6000803e3d6000fd5b505050506040513d6020811015620001b757600080fd5b5051600254604080516364e329cb60e11b81526001600160a01b0392831660048201523060248201529051919092169163c9c653969160448083019260209291908290030181600087803b1580156200020f57600080fd5b505af115801562000224573d6000803e3d6000fd5b505050506040513d60208110156200023b57600080fd5b5051602380546001600160a01b0319166001600160a01b039283161790553060009081526009602090815260408083206022805486168552925291829020600019905554905191169073bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c90620002a590620003f0565b6001600160a01b03928316815291166020820152604080519182900301906000f080158015620002d9573d6000803e3d6000fd5b50602480546001600160a01b039283166001600160a01b031991821617909155336000818152600a60209081526040808320805460ff199081166001908117909255600b84528285208054821683179055600c84528285208054821683179055600380548916865283862080548316841790553080875284872080548416851790556023548a168752600d8652848720805484168517905586528386208054831684179055549097168452818420805490971617909555601e8054851684179055601f805490941683179093556005548282526008845284822081905584519081529351919390927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3620003fe565b6110de806200490883390190565b6144fa806200040e6000396000f3fe6080604052600436106200036d5760003560e01c806370a0823111620001d5578063b6a5d7de116200010f578063f0b37c0411620000a3578063f84ba65d1162000079578063f84ba65d1462000de1578063f887ea401462000e20578063fe9fbb801462000e38578063ffb54a991462000e6f5762000375565b8063f0b37c041462000d34578063f2fde38b1462000d6b578063f708a64f1462000da25762000375565b8063d51ed1c811620000e5578063d51ed1c81462000c79578063d695bb271462000ca7578063dd62ed3e1462000cbf578063df20fd491462000cfe5762000375565b8063b6a5d7de1462000bf3578063bfe109281462000c2a578063d4bc12b41462000c425762000375565b806395d89b411162000187578063a8aa1b31116200015d578063a8aa1b311462000ad0578063a9059cbb1462000ae8578063a91b753b1462000b25578063abdcd9481462000b5f5762000375565b806395d89b411462000a4b5780639d1944f51462000a63578063a4b45c001462000a915762000375565b806370a08231146200096a578063722b62ad14620009a157806378109e5414620009b95780637d1db4a514620009d157806382bf293c14620009e9578063893d20e81462000a175762000375565b80632d59456711620002a75780635c85974f1162000259578063621c4479116200022f578063621c447914620008bb578063658d4b7f14620008d35780636c5b285514620009125780636ddd171314620009525762000375565b80635c85974f146200085d5780635fe4bea8146200088b578063617fe0ed14620008a35762000375565b80632d594567146200071b5780632f54bf6e1462000754578063313ce567146200078b578063506cb62314620007b957806350db71fb14620007e7578063571ac8b014620008265762000375565b80631161ae39116200031f578063201e799111620002f5578063201e7991146200065457806323b872dd14620006885780632b112e4914620006cf5780632d48e89614620006e75762000375565b80631161ae3914620005da57806318160ddd146200060e5780631da1db5e14620006265762000375565b8063025ff12f146200037a5780630445b667146200046557806306fdde03146200048f578063095ea7b3146200051f5780630d075d9c14620005705780630d29598014620005aa5762000375565b366200037557005b600080fd5b3480156200038757600080fd5b506200046360048036036060811015620003a057600080fd5b6001600160a01b038235169190810190604081016020820135640100000000811115620003cc57600080fd5b820183602082011115620003df57600080fd5b803590602001918460208302840111640100000000831117156200040257600080fd5b9193909290916020810190356401000000008111156200042157600080fd5b8201836020820111156200043457600080fd5b803590602001918460208302840111640100000000831117156200045757600080fd5b50909250905062000e87565b005b3480156200047257600080fd5b506200047d6200119b565b60408051918252519081900360200190f35b3480156200049c57600080fd5b50620004a7620011a1565b6040805160208082528351818301528351919283929083019185019080838360005b83811015620004e3578181015183820152602001620004c9565b50505050905090810190601f168015620005115780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156200052c57600080fd5b506200055c600480360360408110156200054557600080fd5b506001600160a01b038135169060200135620011cf565b604080519115158252519081900360200190f35b3480156200057d57600080fd5b5062000463600480360360608110156200059657600080fd5b508035906020810135906040013562001236565b348015620005b757600080fd5b506200046360048036036020811015620005d057600080fd5b503515156200128f565b348015620005e757600080fd5b506200055c600480360360408110156200060057600080fd5b5080359060200135620012fb565b3480156200061b57600080fd5b506200047d62001311565b3480156200063357600080fd5b5062000463600480360360208110156200064c57600080fd5b503562001317565b3480156200066157600080fd5b5062000463600480360360408110156200067a57600080fd5b5080359060200135620013a1565b3480156200069557600080fd5b506200055c60048036036060811015620006ae57600080fd5b506001600160a01b03813581169160208101359091169060400135620013f7565b348015620006dc57600080fd5b506200047d620014be565b348015620006f457600080fd5b5062000463600480360360408110156200070d57600080fd5b50803590602001356200150f565b3480156200072857600080fd5b5062000463600480360360408110156200074157600080fd5b5080351515906020013560ff16620015c2565b3480156200076157600080fd5b506200055c600480360360208110156200077a57600080fd5b50356001600160a01b03166200162e565b3480156200079857600080fd5b50620007a362001642565b6040805160ff9092168252519081900360200190f35b348015620007c657600080fd5b506200046360048036036020811015620007df57600080fd5b503562001647565b348015620007f457600080fd5b5062000463600480360360408110156200080d57600080fd5b506001600160a01b038135169060200135151562001697565b3480156200083357600080fd5b506200055c600480360360208110156200084c57600080fd5b50356001600160a01b03166200170d565b3480156200086a57600080fd5b5062000463600480360360208110156200088357600080fd5b50356200171d565b3480156200089857600080fd5b50620004636200176d565b348015620008b057600080fd5b506200055c62001818565b348015620008c857600080fd5b506200046362001821565b348015620008e057600080fd5b506200046360048036036040811015620008f957600080fd5b506001600160a01b0381351690602001351515620018f1565b3480156200091f57600080fd5b5062000463600480360360808110156200093857600080fd5b508035906020810135906040810135906060013562001967565b3480156200095f57600080fd5b506200055c62001a02565b3480156200097757600080fd5b506200047d600480360360208110156200099057600080fd5b50356001600160a01b031662001a0b565b348015620009ae57600080fd5b50620007a362001a26565b348015620009c657600080fd5b506200047d62001a34565b348015620009de57600080fd5b506200047d62001a3a565b348015620009f657600080fd5b50620004636004803603602081101562000a0f57600080fd5b503562001a40565b34801562000a2457600080fd5b5062000a2f62001a9c565b604080516001600160a01b039092168252519081900360200190f35b34801562000a5857600080fd5b50620004a762001aab565b34801562000a7057600080fd5b50620004636004803603602081101562000a8957600080fd5b503562001acd565b34801562000a9e57600080fd5b50620004636004803603604081101562000ab757600080fd5b506001600160a01b038135811691602001351662001b2d565b34801562000add57600080fd5b5062000a2f62001ba6565b34801562000af557600080fd5b506200055c6004803603604081101562000b0e57600080fd5b506001600160a01b03813516906020013562001bb5565b34801562000b3257600080fd5b50620004636004803603606081101562000b4b57600080fd5b508035906020810135906040013562001bc4565b34801562000b6c57600080fd5b50620004636004803603606081101562000b8557600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111562000bb157600080fd5b82018360208201111562000bc457600080fd5b8035906020019184602083028401116401000000008311171562000be757600080fd5b91935091503562001c1d565b34801562000c0057600080fd5b50620004636004803603602081101562000c1957600080fd5b50356001600160a01b031662001ea9565b34801562000c3757600080fd5b5062000a2f62001f16565b34801562000c4f57600080fd5b50620004636004803603602081101562000c6857600080fd5b50356001600160a01b031662001f25565b34801562000c8657600080fd5b506200047d6004803603602081101562000c9f57600080fd5b503562001fe2565b34801562000cb457600080fd5b50620004636200202c565b34801562000ccc57600080fd5b506200047d6004803603604081101562000ce557600080fd5b506001600160a01b03813581169160200135166200207d565b34801562000d0b57600080fd5b50620004636004803603604081101562000d2457600080fd5b50803515159060200135620020a8565b34801562000d4157600080fd5b50620004636004803603602081101562000d5a57600080fd5b50356001600160a01b03166200210a565b34801562000d7857600080fd5b50620004636004803603602081101562000d9157600080fd5b50356001600160a01b031662002171565b34801562000daf57600080fd5b50620004636004803603604081101562000dc857600080fd5b506001600160a01b038135169060200135151562002225565b34801562000dee57600080fd5b50620004636004803603604081101562000e0757600080fd5b506001600160a01b0381351690602001351515620023ab565b34801562000e2d57600080fd5b5062000a2f62002421565b34801562000e4557600080fd5b506200055c6004803603602081101562000e5e57600080fd5b50356001600160a01b031662002430565b34801562000e7c57600080fd5b506200055c6200244e565b62000e92336200162e565b62000ecd576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600083821462000f0f5760405162461bcd60e51b8152600401808060200182810382526028815260200180620044196028913960400191505060405180910390fd5b60005b8481101562000f3f5783838281811062000f2857fe5b602002919091013592909201915060010162000f12565b508062000f4c8762001a0b565b101562000fa0576040805162461bcd60e51b815260206004820152601c60248201527f4e6f7420656e6f75676820746f6b656e7320746f2061697264726f7000000000604482015290519081900360640190fd5b60005b84811015620010f95762000fe88787878481811062000fbe57fe5b905060200201356001600160a01b031686868581811062000fdb57fe5b905060200201356200245e565b50600d600087878481811062000ffa57fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16620010f0576024546001600160a01b03166314b6ca968787848181106200104357fe5b905060200201356001600160a01b0316600860008a8a878181106200106457fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015620010dc57600080fd5b505af1925050508015620010ee575060015b505b60010162000fa3565b506001600160a01b0386166000908152600d602052604090205460ff166200119357602480546001600160a01b03888116600081815260086020526040808220548151630a5b654b60e11b8152600481019490945295830195909552935191909216926314b6ca96926044808201939182900301818387803b1580156200117f57600080fd5b505af192505050801562001191575060015b505b505050505050565b60295481565b60408051808201909152601481527321b430b6b2b632b7b7102932bbb0b93239903b1960611b602082015290565b3360008181526009602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b620012413362002430565b62001281576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601392909255601455601555565b6200129a336200162e565b620012d5576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60238054911515600160a01b0260ff60a01b19909216919091179055601c544201601d55565b600082620013098362001fe2565b119392505050565b60055490565b62001322336200162e565b6200135d576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601f5460405147916001600160a01b03169060648484020480156108fc02916000818181858888f193505050501580156200139c573d6000803e3d6000fd5b505050565b620013ac3362002430565b620013ec576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b602091909155602155565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914620014a7576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526009825283812033825290915291909120546200148291849062002543565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b620014b4848484620025de565b90505b9392505050565b6004546000906200150a90620014dd906001600160a01b031662001a0b565b6003546200150390620014f9906001600160a01b031662001a0b565b6005549062002bad565b9062002bad565b905090565b6200151a3362002430565b6200155a576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b60248054604080516316a4744b60e11b815260048101869052928301849052516001600160a01b0390911691632d48e89691604480830192600092919082900301818387803b158015620015ad57600080fd5b505af115801562001193573d6000803e3d6000fd5b620015cd336200162e565b62001608576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6026805460ff19169215159290921761ff00191661010060ff9290921691909102179055565b6000546001600160a01b0390811691161490565b600990565b620016523362002430565b62001692576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601c55565b620016a23362002430565b620016e2576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b60006200123082600019620011cf565b620017283362002430565b62001768576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b600655565b62001778336200162e565b620017b3576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b602480546040805163a6871bc360e01b815233600482015290516001600160a01b039092169263a6871bc392828201926000929082900301818387803b158015620017fd57600080fd5b505af115801562001812573d6000803e3d6000fd5b50505050565b60265460ff1681565b602460009054906101000a90046001600160a01b03166001600160a01b031663f0fc6bca6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200187257600080fd5b505af115801562001887573d6000803e3d6000fd5b505060248054602554604080516001624d3b8760e01b031981526004810192909252516001600160a01b03909216945063ffb2c4799350808301926000929182900301818387803b158015620018dc57600080fd5b505af1925050508015620018ee575060015b50565b620018fc3362002430565b6200193c576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b620019723362002430565b620019b2576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b600e849055600f8390556010829055620019d982620019d2868662002bf1565b9062002bf1565b601155601684905560178390556018829055601281905560048104601154106200181257600080fd5b60285460ff1681565b6001600160a01b031660009081526008602052604090205490565b602654610100900460ff1681565b60075481565b60065481565b62001a4b336200162e565b62001a86576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b606481600554028162001a9557fe5b0460075550565b6000546001600160a01b031690565b604080518082019091526008815267435265776172647360c01b602082015290565b62001ad83362002430565b62001b18576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b620b71b0811062001b2857600080fd5b602555565b62001b383362002430565b62001b78576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601e80546001600160a01b039384166001600160a01b031991821617909155601f8054929093169116179055565b6023546001600160a01b031681565b6000620014b7338484620025de565b62001bcf3362002430565b62001c0f576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601992909255601a55601b55565b62001c28336200162e565b62001c63576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b8181028062001c728662001a0b565b101562001cc6576040805162461bcd60e51b815260206004820152601c60248201527f4e6f7420656e6f75676820746f6b656e7320746f2061697264726f7000000000604482015290519081900360640190fd5b60005b8381101562001e0c5762001cfb8686868481811062001ce457fe5b905060200201356001600160a01b0316856200245e565b50600d600086868481811062001d0d57fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff1662001e03576024546001600160a01b03166314b6ca9686868481811062001d5657fe5b905060200201356001600160a01b03166008600089898781811062001d7757fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801562001def57600080fd5b505af192505050801562001e01575060015b505b60010162001cc9565b506001600160a01b0385166000908152600d602052604090205460ff1662001ea257602480546001600160a01b03878116600081815260086020526040808220548151630a5b654b60e11b8152600481019490945295830195909552935191909216926314b6ca96926044808201939182900301818387803b15801562001e9257600080fd5b505af19250505080156200119357505b5050505050565b62001eb4336200162e565b62001eef576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6024546001600160a01b031681565b62001f30336200162e565b62001f6b576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6022546040516001600160a01b0390911690829062001f8a906200332c565b6001600160a01b03928316815291166020820152604080519182900301906000f08015801562001fbe573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b039290921691909117905550565b60006200123062001ff2620014be565b60235462002025906200201d9060029062002016906001600160a01b031662001a0b565b9062002c4c565b859062002c4c565b9062002caa565b60248054602554604080516001624d3b8760e01b031981526004810192909252516001600160a01b039092169263ffb2c47992828201926000929082900301818387803b158015620018dc57600080fd5b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b620020b33362002430565b620020f3576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6028805460ff191692151592909217909155602955565b62002115336200162e565b62002150576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b6200217c336200162e565b620021b7576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff1916909217909155825191825291517f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163929181900390910190a150565b620022303362002430565b62002270576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03821630148015906200229857506023546001600160a01b03838116911614155b620022a257600080fd5b6001600160a01b0382166000908152600d60205260409020805460ff1916821580159190911790915562002343576024805460408051630a5b654b60e11b81526001600160a01b0386811660048301526000948201859052915191909216926314b6ca96926044808201939182900301818387803b1580156200232457600080fd5b505af115801562002339573d6000803e3d6000fd5b50505050620023a7565b602480546001600160a01b03848116600081815260086020526040808220548151630a5b654b60e11b8152600481019490945295830195909552935191909216926314b6ca96926044808201939182900301818387803b158015620015ad57600080fd5b5050565b620023b63362002430565b620023f6576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6022546001600160a01b031681565b6001600160a01b031660009081526001602052604090205460ff1690565b602354600160a01b900460ff1681565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600890915291822054620024b191849062002543565b6001600160a01b038086166000908152600860205260408082209390935590851681522054620024e2908362002bf1565b6001600160a01b0380851660008181526008602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019392505050565b60008184841115620025d65760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200259a57818101518382015260200162002580565b50505050905090810190601f168015620025c85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b602a5460009060ff16156200260257620025fa8484846200245e565b9050620014b7565b6001600160a01b03841660009081526001602052604090205460ff161580156200264557506001600160a01b03831660009081526001602052604090205460ff16155b15620026a157602354600160a01b900460ff16620026a1576040805162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015290519081900360640190fd5b6001600160a01b03841660009081526001602052604090205460ff16158015620026d457506001600160a01b0383163014155b8015620026ef57506003546001600160a01b03848116911614155b80156200270a57506023546001600160a01b03848116911614155b8015620027255750601f546001600160a01b03848116911614155b8015620027405750601e546001600160a01b03848116911614155b156200279c576000620027538462001a0b565b905060075483820111156200279a5760405162461bcd60e51b815260040180806020018281038252603e81526020018062004487603e913960400191505060405180910390fd5b505b60065482111580620027c657506001600160a01b0384166000908152600b602052604090205460ff165b6200280c576040805162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015290519081900360640190fd5b6023546001600160a01b0385811691161480156200282c575060265460ff165b80156200285257506001600160a01b0383166000908152600c602052604090205460ff16155b15620028d9576001600160a01b0383166000908152602760205260409020544211620028b05760405162461bcd60e51b8152600401808060200182810382526025815260200180620044416025913960400191505060405180910390fd5b6026546001600160a01b038416600090815260276020526040902061010090910460ff16420190555b620028e362002cee565b15620028f357620028f362002d40565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600890915291909120546200294791849062002543565b6001600160a01b0385166000908152600860205260408120919091556200296e856200314a565b6200297a578262002986565b62002986858462003169565b6001600160a01b038516600090815260086020526040902054909150620029ae908262002bf1565b6001600160a01b038086166000908152600860209081526040808320949094559188168152600d909152205460ff1662002a5a57602480546001600160a01b03878116600081815260086020526040808220548151630a5b654b60e11b8152600481019490945295830195909552935191909216926314b6ca96926044808201939182900301818387803b15801562002a4657600080fd5b505af192505050801562002a58575060015b505b6001600160a01b0384166000908152600d602052604090205460ff1662002af357602480546001600160a01b03868116600081815260086020526040808220548151630a5b654b60e11b8152600481019490945295830195909552935191909216926314b6ca96926044808201939182900301818387803b15801562002adf57600080fd5b505af192505050801562002af1575060015b505b60248054602554604080516001624d3b8760e01b031981526004810192909252516001600160a01b039092169263ffb2c47992828201926000929082900301818387803b15801562002b4457600080fd5b505af192505050801562002b56575060015b50836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3506001949350505050565b6000620014b783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525062002543565b600082820183811015620014b7576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008262002c5d5750600062001230565b8282028284828162002c6b57fe5b0414620014b75760405162461bcd60e51b8152600401808060200182810382526021815260200180620044666021913960400191505060405180910390fd5b6000620014b783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620032c3565b6023546000906001600160a01b0316331480159062002d105750602a5460ff16155b801562002d1f575060285460ff165b80156200150a57505060295430600090815260086020526040902054101590565b602a805460ff1916600117905560205460215460009162002d6191620012fb565b62002d6f57600e5462002d72565b60005b9050600062002d9a600262002025601154620020258660295462002c4c90919063ffffffff16565b9050600062002db58260295462002bad90919063ffffffff16565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811062002dea57fe5b6001600160a01b03928316602091820292909201015260025482519116908290600190811062002e1657fe5b6001600160a01b0392831660209182029290920181019190915260225460405163791ac94760e01b8152600481018681526000602483018190523060648401819052426084850181905260a060448601908152895160a487015289514799979097169763791ac947978c9795968c9690939260c49091019187820191028083838b5b8381101562002eb257818101518382015260200162002e98565b505050509050019650505050505050600060405180830381600087803b15801562002edc57600080fd5b505af115801562002ef1573d6000803e3d6000fd5b50505050600062002f0c824762002bad90919063ffffffff16565b9050600062002f2b62002f2188600262002caa565b6011549062002bad565b9050600062002f436002620020258481878d62002c4c565b9050600062002f638362002025600f548762002c4c90919063ffffffff16565b9050600062002f8384620020256010548862002c4c90919063ffffffff16565b9050602460009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801562002fd657600080fd5b505af19350505050801562002fe9575060015b50601f546040516000916001600160a01b03169061753090849084818181858888f193505050503d80600081146200303e576040519150601f19603f3d011682016040523d82523d6000602084013e62003043565b606091505b5060009250508a1590506200313357602254601e546040805163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991879160c48082019260609290919082900301818588803b158015620030c857600080fd5b505af1158015620030dd573d6000803e3d6000fd5b50505050506040513d6060811015620030f557600080fd5b505060408051858152602081018c905281517f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506929181900390910190a15b5050602a805460ff19169055505050505050505050565b6001600160a01b03166000908152600a602052604090205460ff161590565b6000601d54421015620031aa57601954600e819055601b546010819055601a54600f819055620031a1929091620019d2919062002bf1565b6011556200321b565b6023546001600160a01b0384811691161415620031ec57601354600e8190556015546010819055601454600f819055620031a1929091620019d2919062002bf1565b601654600e8190556018546010819055601754600f81905562003217929091620019d2919062002bf1565b6011555b60006200323b601254620020256011548662002c4c90919063ffffffff16565b306000908152600860205260409020549091506200325a908262002bf1565b30600081815260086020908152604091829020939093558051848152905191926001600160a01b038816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a3620032bb838262002bad565b949350505050565b60008183620033155760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156200259a57818101518382015260200162002580565b5060008385816200332257fe5b0495945050505050565b6110de806200333b8339019056fe6080604052600280546001600160a01b03191673bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c1790556ec097ce7bc90715b34b9f1000000000600c55610e10600d55633b9aca00600e5534801561005757600080fd5b506040516110de3803806110de8339818101604052604081101561007a57600080fd5b5080516020909101516001600160a01b0382166100ab577310ed43c718714eb63d5aa57b78b54704e256024e6100ad565b815b600380546001600160a01b039283166001600160a01b031991821617909155600080548216331790556001805493909216921691909117905550610fe8806100f66000396000f3fe6080604052600436106101145760003560e01c8063cab34c08116100a0578063efca2eed11610064578063efca2eed14610319578063f0fc6bca1461032e578063f887ea4014610343578063ffb2c47914610358578063ffd49c841461038257610114565b8063cab34c0814610281578063ce7c2ac214610296578063d0e30db0146102e7578063e2d2e219146102ef578063ecd0c0c31461030457610114565b80633a98ef39116100e75780633a98ef39146101de5780634fab0ae8146101f35780638dd9500214610208578063997664d714610239578063a6871bc31461024e57610114565b806311ce023d1461011957806314b6ca961461014057806328fd31981461017b5780632d48e896146101ae575b600080fd5b34801561012557600080fd5b5061012e610397565b60408051918252519081900360200190f35b34801561014c57600080fd5b506101796004803603604081101561016357600080fd5b506001600160a01b03813516906020013561039d565b005b34801561018757600080fd5b5061012e6004803603602081101561019e57600080fd5b50356001600160a01b03166104c2565b3480156101ba57600080fd5b50610179600480360360408110156101d157600080fd5b508035906020013561054e565b3480156101ea57600080fd5b5061012e610570565b3480156101ff57600080fd5b5061012e610576565b34801561021457600080fd5b5061021d61057c565b604080516001600160a01b039092168252519081900360200190f35b34801561024557600080fd5b5061012e61058b565b34801561025a57600080fd5b506101796004803603602081101561027157600080fd5b50356001600160a01b0316610591565b34801561028d57600080fd5b5061021d6106a7565b3480156102a257600080fd5b506102c9600480360360208110156102b957600080fd5b50356001600160a01b03166106b6565b60408051938452602084019290925282820152519081900360600190f35b6101796106d7565b3480156102fb57600080fd5b5061012e610969565b34801561031057600080fd5b5061021d61096f565b34801561032557600080fd5b5061012e61097e565b34801561033a57600080fd5b50610179610984565b34801561034f57600080fd5b5061021d61098f565b34801561036457600080fd5b506101796004803603602081101561037b57600080fd5b503561099e565b34801561038e57600080fd5b5061012e610a80565b600c5481565b6000546001600160a01b031633146103b457600080fd5b6001600160a01b038216600090815260076020526040902054156103db576103db82610a86565b60008111801561040157506001600160a01b038216600090815260076020526040902054155b156104145761040f82610bae565b610447565b8015801561043957506001600160a01b03821660009081526007602052604090205415155b156104475761044782610c0f565b6001600160a01b03821660009081526007602052604090205460085461047891839161047291610cfc565b90610d47565b6008556001600160a01b038216600090815260076020526040902081905561049f81610da1565b6001600160a01b0390921660009081526007602052604090206001019190915550565b6001600160a01b0381166000908152600760205260408120546104e757506000610549565b6001600160a01b03821660009081526007602052604081205461050990610da1565b6001600160a01b03841660009081526007602052604090206001015490915080821161053a57600092505050610549565b6105448282610cfc565b925050505b919050565b6000546001600160a01b0316331461056557600080fd5b600d91909155600e55565b60085481565b600e5481565b6002546001600160a01b031681565b60095481565b6000546001600160a01b031633146105a857600080fd5b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156105f357600080fd5b505afa158015610607573d6000803e3d6000fd5b505050506040513d602081101561061d57600080fd5b50516001546040805163a9059cbb60e01b81526001600160a01b03868116600483015260248201859052915193945091169163a9059cbb916044808201926020929091908290030181600087803b15801561067757600080fd5b505af115801561068b573d6000803e3d6000fd5b505050506040513d60208110156106a157600080fd5b50505050565b6001546001600160a01b031681565b60076020526000908152604090208054600182015460029092015490919083565b6000546001600160a01b031633146106ee57600080fd5b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561073957600080fd5b505afa15801561074d573d6000803e3d6000fd5b505050506040513d602081101561076357600080fd5b50516040805160028082526060820183529293506000929091602083019080368337505060025482519293506001600160a01b0316918391506000906107a557fe5b6001600160a01b03928316602091820292909201015260018054835192169183919081106107cf57fe5b6001600160a01b0392831660209182029290920181019190915260035460405163b6f9de9560e01b815260006004820181815230604484018190524260648501819052608060248601908152895160848701528951969098169763b6f9de9597349795968b969495939460a49091019187810191028083838b5b83811015610861578181015183820152602001610849565b50505050905001955050505050506000604051808303818588803b15801561088857600080fd5b505af115801561089c573d6000803e3d6000fd5b5050600154604080516370a0823160e01b815230600482015290516000955061092794508793506001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156108f557600080fd5b505afa158015610909573d6000803e3d6000fd5b505050506040513d602081101561091f57600080fd5b505190610cfc565b6009549091506109379082610d47565b600955600854600c5461096191610958916109529085610dbe565b90610e17565b600b5490610d47565b600b55505050565b600b5481565b6000546001600160a01b031681565b600a5481565b61098d33610a86565b565b6003546001600160a01b031681565b6000546001600160a01b031633146109b557600080fd5b600454806109c35750610a7d565b6000805a905060005b84831080156109da57508381105b15610a785783600f54106109ee576000600f555b610a1a6004600f5481548110610a0057fe5b6000918252602090912001546001600160a01b0316610e59565b15610a4b57610a4b6004600f5481548110610a3157fe5b6000918252602090912001546001600160a01b0316610a86565b610a60610a595a8490610cfc565b8490610d47565b92505a600f80546001908101909155909250016109cc565b505050505b50565b600d5481565b6001600160a01b038116600090815260076020526040902054610aa857610a7d565b6000610ab3826104c2565b90508015610baa57600a54610ac89082610d47565b600a556001546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015610b2157600080fd5b505af1158015610b35573d6000803e3d6000fd5b505050506040513d6020811015610b4b57600080fd5b50506001600160a01b03821660009081526006602090815260408083204290556007909152902060020154610b809082610d47565b6001600160a01b038316600090815260076020526040902060028101919091555461049f90610da1565b5050565b600480546001600160a01b039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90910180546001600160a01b0319169091179055565b600480546000198101908110610c2157fe5b60009182526020808320909101546001600160a01b0384811684526005909252604090922054600480549290931692918110610c5957fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600591829052604081205460048054919392916000198101908110610ca757fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610cd757fe5b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610d3e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e95565b90505b92915050565b600082820183811015610d3e576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000610d41600c54610952600b5485610dbe90919063ffffffff16565b600082610dcd57506000610d41565b82820282848281610dda57fe5b0414610d3e5760405162461bcd60e51b8152600401808060200182810382526021815260200180610f926021913960400191505060405180910390fd5b6000610d3e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610f2c565b600d546001600160a01b0382166000908152600660205260408120549091429101108015610d415750600e54610e8e836104c2565b1192915050565b60008184841115610f245760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610ee9578181015183820152602001610ed1565b50505050905090810190601f168015610f165780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183610f7b5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610ee9578181015183820152602001610ed1565b506000838581610f8757fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220010f6616866f1dac6f23c357d858b18967802a3cb4e5b785a41db9fa3d45cf5a64736f6c634300070600334d69736d61746368206265747765656e204164647265737320616e6420746f6b656e20636f756e74506c65617365207761697420666f7220636f6f6c646f776e206265747765656e2062757973536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f74616c20486f6c64696e672069732063757272656e746c79206c696d697465642c20796f752063616e206e6f74206275792074686174206d7563682ea2646970667358221220ae262f0eca2543d64a578b27aa61174efe679e130c14d36e78e8a217f5a2d06564736f6c634300070600336080604052600280546001600160a01b03191673bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c1790556ec097ce7bc90715b34b9f1000000000600c55610e10600d55633b9aca00600e5534801561005757600080fd5b506040516110de3803806110de8339818101604052604081101561007a57600080fd5b5080516020909101516001600160a01b0382166100ab577310ed43c718714eb63d5aa57b78b54704e256024e6100ad565b815b600380546001600160a01b039283166001600160a01b031991821617909155600080548216331790556001805493909216921691909117905550610fe8806100f66000396000f3fe6080604052600436106101145760003560e01c8063cab34c08116100a0578063efca2eed11610064578063efca2eed14610319578063f0fc6bca1461032e578063f887ea4014610343578063ffb2c47914610358578063ffd49c841461038257610114565b8063cab34c0814610281578063ce7c2ac214610296578063d0e30db0146102e7578063e2d2e219146102ef578063ecd0c0c31461030457610114565b80633a98ef39116100e75780633a98ef39146101de5780634fab0ae8146101f35780638dd9500214610208578063997664d714610239578063a6871bc31461024e57610114565b806311ce023d1461011957806314b6ca961461014057806328fd31981461017b5780632d48e896146101ae575b600080fd5b34801561012557600080fd5b5061012e610397565b60408051918252519081900360200190f35b34801561014c57600080fd5b506101796004803603604081101561016357600080fd5b506001600160a01b03813516906020013561039d565b005b34801561018757600080fd5b5061012e6004803603602081101561019e57600080fd5b50356001600160a01b03166104c2565b3480156101ba57600080fd5b50610179600480360360408110156101d157600080fd5b508035906020013561054e565b3480156101ea57600080fd5b5061012e610570565b3480156101ff57600080fd5b5061012e610576565b34801561021457600080fd5b5061021d61057c565b604080516001600160a01b039092168252519081900360200190f35b34801561024557600080fd5b5061012e61058b565b34801561025a57600080fd5b506101796004803603602081101561027157600080fd5b50356001600160a01b0316610591565b34801561028d57600080fd5b5061021d6106a7565b3480156102a257600080fd5b506102c9600480360360208110156102b957600080fd5b50356001600160a01b03166106b6565b60408051938452602084019290925282820152519081900360600190f35b6101796106d7565b3480156102fb57600080fd5b5061012e610969565b34801561031057600080fd5b5061021d61096f565b34801561032557600080fd5b5061012e61097e565b34801561033a57600080fd5b50610179610984565b34801561034f57600080fd5b5061021d61098f565b34801561036457600080fd5b506101796004803603602081101561037b57600080fd5b503561099e565b34801561038e57600080fd5b5061012e610a80565b600c5481565b6000546001600160a01b031633146103b457600080fd5b6001600160a01b038216600090815260076020526040902054156103db576103db82610a86565b60008111801561040157506001600160a01b038216600090815260076020526040902054155b156104145761040f82610bae565b610447565b8015801561043957506001600160a01b03821660009081526007602052604090205415155b156104475761044782610c0f565b6001600160a01b03821660009081526007602052604090205460085461047891839161047291610cfc565b90610d47565b6008556001600160a01b038216600090815260076020526040902081905561049f81610da1565b6001600160a01b0390921660009081526007602052604090206001019190915550565b6001600160a01b0381166000908152600760205260408120546104e757506000610549565b6001600160a01b03821660009081526007602052604081205461050990610da1565b6001600160a01b03841660009081526007602052604090206001015490915080821161053a57600092505050610549565b6105448282610cfc565b925050505b919050565b6000546001600160a01b0316331461056557600080fd5b600d91909155600e55565b60085481565b600e5481565b6002546001600160a01b031681565b60095481565b6000546001600160a01b031633146105a857600080fd5b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156105f357600080fd5b505afa158015610607573d6000803e3d6000fd5b505050506040513d602081101561061d57600080fd5b50516001546040805163a9059cbb60e01b81526001600160a01b03868116600483015260248201859052915193945091169163a9059cbb916044808201926020929091908290030181600087803b15801561067757600080fd5b505af115801561068b573d6000803e3d6000fd5b505050506040513d60208110156106a157600080fd5b50505050565b6001546001600160a01b031681565b60076020526000908152604090208054600182015460029092015490919083565b6000546001600160a01b031633146106ee57600080fd5b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561073957600080fd5b505afa15801561074d573d6000803e3d6000fd5b505050506040513d602081101561076357600080fd5b50516040805160028082526060820183529293506000929091602083019080368337505060025482519293506001600160a01b0316918391506000906107a557fe5b6001600160a01b03928316602091820292909201015260018054835192169183919081106107cf57fe5b6001600160a01b0392831660209182029290920181019190915260035460405163b6f9de9560e01b815260006004820181815230604484018190524260648501819052608060248601908152895160848701528951969098169763b6f9de9597349795968b969495939460a49091019187810191028083838b5b83811015610861578181015183820152602001610849565b50505050905001955050505050506000604051808303818588803b15801561088857600080fd5b505af115801561089c573d6000803e3d6000fd5b5050600154604080516370a0823160e01b815230600482015290516000955061092794508793506001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156108f557600080fd5b505afa158015610909573d6000803e3d6000fd5b505050506040513d602081101561091f57600080fd5b505190610cfc565b6009549091506109379082610d47565b600955600854600c5461096191610958916109529085610dbe565b90610e17565b600b5490610d47565b600b55505050565b600b5481565b6000546001600160a01b031681565b600a5481565b61098d33610a86565b565b6003546001600160a01b031681565b6000546001600160a01b031633146109b557600080fd5b600454806109c35750610a7d565b6000805a905060005b84831080156109da57508381105b15610a785783600f54106109ee576000600f555b610a1a6004600f5481548110610a0057fe5b6000918252602090912001546001600160a01b0316610e59565b15610a4b57610a4b6004600f5481548110610a3157fe5b6000918252602090912001546001600160a01b0316610a86565b610a60610a595a8490610cfc565b8490610d47565b92505a600f80546001908101909155909250016109cc565b505050505b50565b600d5481565b6001600160a01b038116600090815260076020526040902054610aa857610a7d565b6000610ab3826104c2565b90508015610baa57600a54610ac89082610d47565b600a556001546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015610b2157600080fd5b505af1158015610b35573d6000803e3d6000fd5b505050506040513d6020811015610b4b57600080fd5b50506001600160a01b03821660009081526006602090815260408083204290556007909152902060020154610b809082610d47565b6001600160a01b038316600090815260076020526040902060028101919091555461049f90610da1565b5050565b600480546001600160a01b039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90910180546001600160a01b0319169091179055565b600480546000198101908110610c2157fe5b60009182526020808320909101546001600160a01b0384811684526005909252604090922054600480549290931692918110610c5957fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600591829052604081205460048054919392916000198101908110610ca757fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610cd757fe5b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610d3e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e95565b90505b92915050565b600082820183811015610d3e576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000610d41600c54610952600b5485610dbe90919063ffffffff16565b600082610dcd57506000610d41565b82820282848281610dda57fe5b0414610d3e5760405162461bcd60e51b8152600401808060200182810382526021815260200180610f926021913960400191505060405180910390fd5b6000610d3e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610f2c565b600d546001600160a01b0382166000908152600660205260408120549091429101108015610d415750600e54610e8e836104c2565b1192915050565b60008184841115610f245760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610ee9578181015183820152602001610ed1565b50505050905090810190601f168015610f165780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183610f7b5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610ee9578181015183820152602001610ed1565b506000838581610f8757fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220010f6616866f1dac6f23c357d858b18967802a3cb4e5b785a41db9fa3d45cf5a64736f6c63430007060033

Deployed ByteCode Sourcemap

11764:17148:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27429:789;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27429:789:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27429:789:0;;-1:-1:-1;27429:789:0;-1:-1:-1;27429:789:0;:::i;:::-;;14026:56;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;15478:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15900:216;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15900:216:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;25400:246;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25400:246:0;;;;;;;;;;;;:::i;21161:140::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21161:140:0;;;;:::i;27272:150::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27272:150:0;;;;;;;:::i;15208:88::-;;;;;;;;;;;;;:::i;20911:217::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20911:217:0;;:::i;26417:183::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26417:183:0;;;;;;;:::i;16412:364::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16412:364:0;;;;;;;;;;;;;;;;;:::i;26947:142::-;;;;;;;;;;;;;:::i;26608:183::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26608:183:0;;;;;;;:::i;21348:164::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21348:164:0;;;;;;;;;;;:::i;3364:103::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3364:103:0;-1:-1:-1;;;;;3364:103:0;;:::i;15302:80::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25912:93;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25912:93:0;;:::i;24686:130::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24686:130:0;;;;;;;;;;:::i;16124:116::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16124:116:0;-1:-1:-1;;;;;16124:116:0;;:::i;23963:96::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23963:96:0;;:::i;21564:94::-;;;;;;;;;;;;;:::i;13843:38::-;;;;;;;;;;;;;:::i;21891:141::-;;;;;;;;;;;;;:::i;24422:120::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24422:120:0;;;;;;;;;;:::i;24824:568::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24824:568:0;;;;;;;;;;;;;;;;;:::i;13989:30::-;;;;;;;;;;;;;:::i;15648:105::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15648:105:0;-1:-1:-1;;;;;15648:105:0;;:::i;13888:38::-;;;;;;;;;;;;;:::i;12324:61::-;;;;;;;;;;;;;:::i;12224:54::-;;;;;;;;;;;;;:::i;16864:149::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16864:149:0;;:::i;15564:78::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;15564:78:0;;;;;;;;;;;;;;15388:84;;;;;;;;;;;;;:::i;26799:136::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26799:136:0;;:::i;26017:228::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;26017:228:0;;;;;;;;;;:::i;13651:19::-;;;;;;;;;;;;;:::i;16248:156::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16248:156:0;;;;;;;;:::i;25654:246::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25654:246:0;;;;;;;;;;;;:::i;28223:620::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28223:620:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28223:620:0;-1:-1:-1;28223:620:0;;:::i;3037:94::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3037:94:0;-1:-1:-1;;;;;3037:94:0;;:::i;13719:38::-;;;;;;;;;;;;;:::i;21695:145::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21695:145:0;-1:-1:-1;;;;;21695:145:0;;:::i;27097:167::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27097:167:0;;:::i;22073:100::-;;;;;;;;;;;;;:::i;15759:133::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15759:133:0;;;;;;;;;;:::i;26253:156::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26253:156:0;;;;;;;;;:::i;3207:97::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3207:97:0;-1:-1:-1;;;;;3207:97:0;;:::i;3764:173::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3764:173:0;-1:-1:-1;;;;;3764:173:0;;:::i;24067:347::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24067:347:0;;;;;;;;;;:::i;24550:128::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24550:128:0;;;;;;;;;;:::i;13620:24::-;;;;;;;;;;;;;:::i;3538:107::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3538:107:0;-1:-1:-1;;;;;3538:107:0;;:::i;13679:31::-;;;;;;;;;;;;;:::i;27429:789::-;2753:19;2761:10;2753:7;:19::i;:::-;2745:38;;;;;-1:-1:-1;;;2745:38:0;;;;;;;;;;;;-1:-1:-1;;;2745:38:0;;;;;;;;;;;;;;;27545:12:::1;27578:33:::0;;::::1;27570:85;;;;-1:-1:-1::0;;;27570:85:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27668:6;27664:82;27678:20:::0;;::::1;27664:82;;;27729:6;;27736:1;27729:9;;;;;;;;;::::0;;;::::1;;27722:16:::0;;;::::1;::::0;-1:-1:-1;27700:3:0::1;;27664:82;;;;27781:4;27762:15;27772:4;27762:9;:15::i;:::-;:23;;27754:64;;;::::0;;-1:-1:-1;;;27754:64:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;27831:6;27827:250;27841:20:::0;;::::1;27827:250;;;27878:43;27893:4;27898:9;;27908:1;27898:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;27898:12:0::1;27911:6;;27918:1;27911:9;;;;;;;;;;;;;27878:14;:43::i;:::-;;27936:16;:30;27953:9;;27963:1;27953:12;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;27953:12:0::1;27936:30:::0;;-1:-1:-1;27936:30:0;::::1;::::0;;;;;;-1:-1:-1;27936:30:0;;::::1;;27932:138;;27987:11;::::0;-1:-1:-1;;;;;27987:11:0::1;:20;28008:9:::0;;28018:1;28008:12;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;28008:12:0::1;28022:9;:23;28032:9;;28042:1;28032:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;28032:12:0::1;-1:-1:-1::0;;;;;28022:23:0::1;-1:-1:-1::0;;;;;28022:23:0::1;;;;;;;;;;;;;27987:59;;;;;;;;;;;;;-1:-1:-1::0;;;;;27987:59:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;27983:75:::0;::::1;27863:3;;27827:250;;;-1:-1:-1::0;;;;;;28114:22:0;::::1;;::::0;;;:16:::1;:22;::::0;;;;;::::1;;28110:105;;28153:11;::::0;;-1:-1:-1;;;;;28180:15:0;;::::1;28153:11;28180:15:::0;;;:9:::1;:15;::::0;;;;;;28153:43;;-1:-1:-1;;;28153:43:0;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;:11;;;::::1;::::0;:20:::1;::::0;:43;;;;;;;;;;;:11;;:43;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;;;;;28149:59:::0;::::1;2785:1;27429:789:::0;;;;;:::o;14026:56::-;;;;:::o;15478:80::-;15550:5;;;;;;;;;;;;-1:-1:-1;;;15550:5:0;;;;15478:80;:::o;15900:216::-;16004:10;15975:4;15992:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;15992:32:0;;;;;;;;;;;:41;;;16049:37;;;;;;;15975:4;;15992:32;;16004:10;;16049:37;;;;;;;;-1:-1:-1;16104:4:0;15900:216;;;;;:::o;25400:246::-;2922:24;2935:10;2922:12;:24::i;:::-;2914:48;;;;;-1:-1:-1;;;2914:48:0;;;;;;;;;;;;-1:-1:-1;;;2914:48:0;;;;;;;;;;;;;;;25521:15:::1;:31:::0;;;;25563:16:::1;:33:::0;25607:15:::1;:31:::0;25400:246::o;21161:140::-;2753:19;2761:10;2753:7;:19::i;:::-;2745:38;;;;;-1:-1:-1;;;2745:38:0;;;;;;;;;;;;-1:-1:-1;;;2745:38:0;;;;;;;;;;;;;;;21226:11:::1;:21:::0;;;::::1;;-1:-1:-1::0;;;21226:21:0::1;-1:-1:-1::0;;;;21226:21:0;;::::1;::::0;;;::::1;::::0;;21287:6:::1;::::0;21269:15:::1;:24;21258:8;:35:::0;21161:140::o;27272:150::-;27352:4;27408:6;27376:29;27396:8;27376:19;:29::i;:::-;:38;;27272:150;-1:-1:-1;;;27272:150:0:o;15208:88::-;15281:12;;15208:88;:::o;20911:217::-;2753:19;2761:10;2753:7;:19::i;:::-;2745:38;;;;;-1:-1:-1;;;2745:38:0;;;;;;;;;;;;-1:-1:-1;;;2745:38:0;;;;;;;;;;;;;;;21054:20:::1;::::0;21046:74:::1;::::0;21014:21:::1;::::0;-1:-1:-1;;;;;21054:20:0::1;::::0;21116:3:::1;21085:28:::0;;::::1;:34;21046:74:::0;::::1;;;::::0;::::1;::::0;;;21085:34;21054:20;21046:74;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;2785:1;20911:217:::0;:::o;26417:183::-;2922:24;2935:10;2922:12;:24::i;:::-;2914:48;;;;;-1:-1:-1;;;2914:48:0;;;;;;;;;;;;-1:-1:-1;;;2914:48:0;;;;;;;;;;;;;;;26515:15:::1;:25:::0;;;;26551:26:::1;:41:::0;26417:183::o;16412:364::-;-1:-1:-1;;;;;16532:19:0;;16512:4;16532:19;;;:11;:19;;;;;;;;16552:10;16532:31;;;;;;;;-1:-1:-1;;16532:46:0;16529:180;;16628:69;;;;;;;;;;;-1:-1:-1;;;16628:69:0;;;;;;;;-1:-1:-1;;;;;16628:19:0;;-1:-1:-1;16628:19:0;;;:11;:19;;;;;16648:10;16628:31;;;;;;;;;;:69;;16664:6;;16628:35;:69::i;:::-;-1:-1:-1;;;;;16594:19:0;;;;;;:11;:19;;;;;;;;16614:10;16594:31;;;;;;;:103;16529:180;16728:40;16742:6;16750:9;16761:6;16728:13;:40::i;:::-;16721:47;;16412:364;;;;;;:::o;26947:142::-;27075:4;;27000:7;;27027:54;;27065:15;;-1:-1:-1;;;;;27075:4:0;27065:9;:15::i;:::-;27054:4;;27027:33;;27044:15;;-1:-1:-1;;;;;27054:4:0;27044:9;:15::i;:::-;27027:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;27020:61;;26947:142;:::o;26608:183::-;2922:24;2935:10;2922:12;:24::i;:::-;2914:48;;;;;-1:-1:-1;;;2914:48:0;;;;;;;;;;;;-1:-1:-1;;;2914:48:0;;;;;;;;;;;;;;;26718:11:::1;::::0;;:65:::1;::::0;;-1:-1:-1;;;26718:65:0;;::::1;::::0;::::1;::::0;;;;;;;;;;-1:-1:-1;;;;;26718:11:0;;::::1;::::0;:35:::1;::::0;:65;;;;;:11:::1;::::0;:65;;;;;;;:11;;:65;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;21348:164:::0;2753:19;2761:10;2753:7;:19::i;:::-;2745:38;;;;;-1:-1:-1;;;2745:38:0;;;;;;;;;;;;-1:-1:-1;;;2745:38:0;;;;;;;;;;;;;;;21432:18:::1;:28:::0;;-1:-1:-1;;21432:28:0::1;::::0;::::1;;::::0;;;::::1;-1:-1:-1::0;;21471:33:0::1;21432:28;;21471:33:::0;;;::::1;::::0;;;::::1;;::::0;;21348:164::o;3364:103::-;3419:4;3454:5;-1:-1:-1;;;;;3454:5:0;;;3443:16;;;;3364:103::o;15302:80::-;12166:1;15302:80;:::o;25912:93::-;2922:24;2935:10;2922:12;:24::i;:::-;2914:48;;;;;-1:-1:-1;;;2914:48:0;;;;;;;;;;;;-1:-1:-1;;;2914:48:0;;;;;;;;;;;;;;;25981:6:::1;:16:::0;25912:93::o;24686:130::-;2922:24;2935:10;2922:12;:24::i;:::-;2914:48;;;;;-1:-1:-1;;;2914:48:0;;;;;;;;;;;;-1:-1:-1;;;2914:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;24775:24:0;;;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;24775:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24686:130::o;16124:116::-;16179:4;16203:29;16211:7;-1:-1:-1;;16203:7:0;:29::i;23963:96::-;2922:24;2935:10;2922:12;:24::i;:::-;2914:48;;;;;-1:-1:-1;;;2914:48:0;;;;;;;;;;;;-1:-1:-1;;;2914:48:0;;;;;;;;;;;;;;;24030:12:::1;:21:::0;23963:96::o;21564:94::-;2753:19;2761:10;2753:7;:19::i;:::-;2745:38;;;;;-1:-1:-1;;;2745:38:0;;;;;;;;;;;;-1:-1:-1;;;2745:38:0;;;;;;;;;;;;;;;21621:11:::1;::::0;;:29:::1;::::0;;-1:-1:-1;;;21621:29:0;;21639:10:::1;21621:29;::::0;::::1;::::0;;;-1:-1:-1;;;;;21621:11:0;;::::1;::::0;:17:::1;::::0;:29;;;;:11:::1;::::0;:29;;;;;;:11;;:29;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21564:94::o:0;13843:38::-;;;;;;:::o;21891:141::-;21936:11;;;;;;;;;-1:-1:-1;;;;;21936:11:0;-1:-1:-1;;;;;21936:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21978:11:0;;;21998:14;;21978:35;;;-1:-1:-1;;;;;;21978:35:0;;;;;;;;;;-1:-1:-1;;;;;21978:11:0;;;;-1:-1:-1;21978:19:0;;-1:-1:-1;21978:35:0;;;;:11;;:35;;;;;;:11;;:35;;;;;;;;;;;;;;;;;;;;;;;;;21974:51;21891:141::o;24422:120::-;2922:24;2935:10;2922:12;:24::i;:::-;2914:48;;;;;-1:-1:-1;;;2914:48:0;;;;;;;;;;;;-1:-1:-1;;;2914:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;24506:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;24506:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24422:120::o;24824:568::-;2922:24;2935:10;2922:12;:24::i;:::-;2914:48;;;;;-1:-1:-1;;;2914:48:0;;;;;;;;;;;;-1:-1:-1;;;2914:48:0;;;;;;;;;;;;;;;24971:12:::1;:28:::0;;;25010:13:::1;:30:::0;;;25051:12:::1;:28:::0;;;25101:52:::1;25066:13:::0;25101:33:::1;24986:13:::0;25026:14;25101:17:::1;:33::i;:::-;:37:::0;::::1;:52::i;:::-;25090:8;:63:::0;25164:16:::1;:32:::0;;;25207:17:::1;:34:::0;;;25252:16:::1;:32:::0;;;25295:14:::1;:32:::0;;;-1:-1:-1;25312:15:0;25357:16:::1;25346:8;;:27;25338:36;;;::::0;::::1;13989:30:::0;;;;;;:::o;15648:105::-;-1:-1:-1;;;;;15732:18:0;15714:7;15732:18;;;:9;:18;;;;;;;15648:105::o;13888:38::-;;;;;;;;;:::o;12324:61::-;;;;:::o;12224:54::-;;;;:::o;16864:149::-;2753:19;2761:10;2753:7;:19::i;:::-;2745:38;;;;;-1:-1:-1;;;2745:38:0;;;;;;;;;;;;-1:-1:-1;;;2745:38:0;;;;;;;;;;;;;;;17002:3:::1;16983:14;16968:12;;:29;16967:38;;;;;;16949:15;:56:::0;-1:-1:-1;16864:149:0:o;15564:78::-;15616:7;15634:5;-1:-1:-1;;;;;15634:5:0;15564:78;:::o;15388:84::-;15462:7;;;;;;;;;;;;-1:-1:-1;;;15462:7:0;;;;15388:84;:::o;26799:136::-;2922:24;2935:10;2922:12;:24::i;:::-;2914:48;;;;;-1:-1:-1;;;2914:48:0;;;;;;;;;;;;-1:-1:-1;;;2914:48:0;;;;;;;;;;;;;;;26889:6:::1;26883:3;:12;26875:21;;;::::0;::::1;;26907:14;:20:::0;26799:136::o;26017:228::-;2922:24;2935:10;2922:12;:24::i;:::-;2914:48;;;;;-1:-1:-1;;;2914:48:0;;;;;;;;;;;;-1:-1:-1;;;2914:48:0;;;;;;;;;;;;;;;26136:21:::1;:46:::0;;-1:-1:-1;;;;;26136:46:0;;::::1;-1:-1:-1::0;;;;;;26136:46:0;;::::1;;::::0;;;26193:20:::1;:44:::0;;;;;::::1;::::0;::::1;;::::0;;26017:228::o;13651:19::-;;;-1:-1:-1;;;;;13651:19:0;;:::o;16248:156::-;16328:4;16352:44;16366:10;16378:9;16389:6;16352:13;:44::i;25654:246::-;2922:24;2935:10;2922:12;:24::i;:::-;2914:48;;;;;-1:-1:-1;;;2914:48:0;;;;;;;;;;;;-1:-1:-1;;;2914:48:0;;;;;;;;;;;;;;;25775:15:::1;:31:::0;;;;25817:16:::1;:33:::0;25861:15:::1;:31:::0;25654:246::o;28223:620::-;2753:19;2761:10;2753:7;:19::i;:::-;2745:38;;;;;-1:-1:-1;;;2745:38:0;;;;;;;;;;;;-1:-1:-1;;;2745:38:0;;;;;;;;;;;;;;;28348:25;;::::1;::::0;28390:15:::1;28400:4:::0;28390:9:::1;:15::i;:::-;:23;;28382:64;;;::::0;;-1:-1:-1;;;28382:64:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;28459:6;28455:247;28469:20:::0;;::::1;28455:247;;;28506:40;28521:4;28526:9;;28536:1;28526:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;28526:12:0::1;28539:6;28506:14;:40::i;:::-;;28561:16;:30;28578:9;;28588:1;28578:12;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;28578:12:0::1;28561:30:::0;;-1:-1:-1;28561:30:0;::::1;::::0;;;;;;-1:-1:-1;28561:30:0;;::::1;;28557:138;;28612:11;::::0;-1:-1:-1;;;;;28612:11:0::1;:20;28633:9:::0;;28643:1;28633:12;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;28633:12:0::1;28647:9;:23;28657:9;;28667:1;28657:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;28657:12:0::1;-1:-1:-1::0;;;;;28647:23:0::1;-1:-1:-1::0;;;;;28647:23:0::1;;;;;;;;;;;;;28612:59;;;;;;;;;;;;;-1:-1:-1::0;;;;;28612:59:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;28608:75:::0;::::1;28491:3;;28455:247;;;-1:-1:-1::0;;;;;;28739:22:0;::::1;;::::0;;;:16:::1;:22;::::0;;;;;::::1;;28735:105;;28778:11;::::0;;-1:-1:-1;;;;;28805:15:0;;::::1;28778:11;28805:15:::0;;;:9:::1;:15;::::0;;;;;;28778:43;;-1:-1:-1;;;28778:43:0;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;:11;;;::::1;::::0;:20:::1;::::0;:43;;;;;;;;;;;:11;;:43;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;;;28774:59;2785:1;28223:620:::0;;;;:::o;3037:94::-;2753:19;2761:10;2753:7;:19::i;:::-;2745:38;;;;;-1:-1:-1;;;2745:38:0;;;;;;;;;;;;-1:-1:-1;;;2745:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;3097:19:0::1;;::::0;;;3119:4:::1;3097:19;::::0;;;;;;;:26;;-1:-1:-1;;3097:26:0::1;::::0;;::::1;::::0;;3037:94::o;13719:38::-;;;-1:-1:-1;;;;;13719:38:0;;:::o;21695:145::-;2753:19;2761:10;2753:7;:19::i;:::-;2745:38;;;;;-1:-1:-1;;;2745:38:0;;;;;;;;;;;;-1:-1:-1;;;2745:38:0;;;;;;;;;;;;;;;21811:6:::1;::::0;21779:53:::1;::::0;-1:-1:-1;;;;;21811:6:0;;::::1;::::0;21820:11;;21779:53:::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;;;;;21779:53:0;;::::1;::::0;;;::::1;;::::0;::::1;::::0;;;;;;;;;;-1:-1:-1;21779:53:0::1;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;21765:11:0::1;:67:::0;;-1:-1:-1;;;;;;21765:67:0::1;-1:-1:-1::0;;;;;21765:67:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;21695:145:0:o;27097:167::-;27165:7;27192:64;27233:22;:20;:22::i;:::-;27215:4;;27192:36;;27205:22;;27225:1;;27205:15;;-1:-1:-1;;;;;27215:4:0;27205:9;:15::i;:::-;:19;;:22::i;:::-;27192:8;;:12;:36::i;:::-;:40;;:64::i;22073:100::-;22119:11;;;22139:14;;22119:35;;;-1:-1:-1;;;;;;22119:35:0;;;;;;;;;;-1:-1:-1;;;;;22119:11:0;;;;:19;;:35;;;;:11;;:35;;;;;;:11;;:35;;;;;;;;;;15759:133;-1:-1:-1;;;;;15861:19:0;;;15843:7;15861:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;15759:133::o;26253:156::-;2922:24;2935:10;2922:12;:24::i;:::-;2914:48;;;;;-1:-1:-1;;;2914:48:0;;;;;;;;;;;;-1:-1:-1;;;2914:48:0;;;;;;;;;;;;;;;26345:11:::1;:22:::0;;-1:-1:-1;;26345:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;26378:13:::1;:23:::0;26253:156::o;3207:97::-;2753:19;2761:10;2753:7;:19::i;:::-;2745:38;;;;;-1:-1:-1;;;2745:38:0;;;;;;;;;;;;-1:-1:-1;;;2745:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;3269:19:0::1;3291:5;3269:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;3269:27:0::1;::::0;;3207:97::o;3764:173::-;2753:19;2761:10;2753:7;:19::i;:::-;2745:38;;;;;-1:-1:-1;;;2745:38:0;;;;;;;;;;;;-1:-1:-1;;;2745:38:0;;;;;;;;;;;;;;;3840:5:::1;:11:::0;;-1:-1:-1;;;;;;3840:11:0::1;-1:-1:-1::0;;;;;3840:11:0;::::1;::::0;;::::1;::::0;;3862:19;;;-1:-1:-1;3862:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;3862:26:0::1;::::0;;::::1;::::0;;;3904:25;;;;;;;::::1;::::0;;;;;;;;;::::1;3764:173:::0;:::o;24067:347::-;2922:24;2935:10;2922:12;:24::i;:::-;2914:48;;;;;-1:-1:-1;;;2914:48:0;;;;;;;;;;;;-1:-1:-1;;;2914:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;24164:23:0;::::1;24182:4;24164:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;24201:4:0::1;::::0;-1:-1:-1;;;;;24191:14:0;;::::1;24201:4:::0;::::1;24191:14;;24164:41;24156:50;;;::::0;::::1;;-1:-1:-1::0;;;;;24217:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;24217:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;24261:146:::1;;24286:11;::::0;;:31:::1;::::0;;-1:-1:-1;;;24286:31:0;;-1:-1:-1;;;;;24286:31:0;;::::1;;::::0;::::1;::::0;:11:::1;:31:::0;;;;;;;;:11;;;::::1;::::0;:20:::1;::::0;:31;;;;;;;;;;;:11;;:31;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24261:146;;;24348:11;::::0;;-1:-1:-1;;;;;24377:17:0;;::::1;24348:11;24377:17:::0;;;:9:::1;:17;::::0;;;;;;24348:47;;-1:-1:-1;;;24348:47:0;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;:11;;;::::1;::::0;:20:::1;::::0;:47;;;;;;;;;;;:11;;:47;::::1;;::::0;::::1;;;;::::0;::::1;24261:146;24067:347:::0;;:::o;24550:128::-;2922:24;2935:10;2922:12;:24::i;:::-;2914:48;;;;;-1:-1:-1;;;2914:48:0;;;;;;;;;;;;-1:-1:-1;;;2914:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;24638:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;24638:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24550:128::o;13620:24::-;;;-1:-1:-1;;;;;13620:24:0;;:::o;3538:107::-;-1:-1:-1;;;;;3618:19:0;3594:4;3618:19;;;:14;:19;;;;;;;;;3538:107::o;13679:31::-;;;-1:-1:-1;;;13679:31:0;;;;;:::o;19099:330::-;19229:53;;;;;;;;;;;-1:-1:-1;;;19229:53:0;;;;;;;;-1:-1:-1;;;;;19229:17:0;;19192:4;19229:17;;;:9;:17;;;;;;;:53;;19251:6;;19229:21;:53::i;:::-;-1:-1:-1;;;;;19209:17:0;;;;;;;:9;:17;;;;;;:73;;;;19316:20;;;;;;;:32;;19341:6;19316:24;:32::i;:::-;-1:-1:-1;;;;;19293:20:0;;;;;;;:9;:20;;;;;;;;;:55;;;;19364:35;;;;;;;19293:20;;19364:35;;;;;;;;;;;;;-1:-1:-1;19417:4:0;19099:330;;;;;:::o;423:192::-;509:7;545:12;537:6;;;;529:29;;;;-1:-1:-1;;;529:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;581:5:0;;;423:192::o;17021:2066::-;17141:6;;17113:4;;17141:6;;17138:63;;;17157:41;17172:6;17180:9;17191:6;17157:14;:41::i;:::-;17150:48;;;;17138:63;-1:-1:-1;;;;;17217:22:0;;;;;;:14;:22;;;;;;;;17216:23;:53;;;;-1:-1:-1;;;;;;17244:25:0;;;;;;:14;:25;;;;;;;;17243:26;17216:53;17213:127;;;17293:11;;-1:-1:-1;;;17293:11:0;;;;17285:43;;;;;-1:-1:-1;;;17285:43:0;;;;;;;;;;;;-1:-1:-1;;;17285:43:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;17394:22:0;;;;;;:14;:22;;;;;;;;17393:23;:53;;;;-1:-1:-1;;;;;;17420:26:0;;17441:4;17420:26;;17393:53;:84;;;;-1:-1:-1;17472:4:0;;-1:-1:-1;;;;;17451:26:0;;;17472:4;;17451:26;;17393:84;:105;;;;-1:-1:-1;17494:4:0;;-1:-1:-1;;;;;17481:17:0;;;17494:4;;17481:17;;17393:105;:142;;;;-1:-1:-1;17515:20:0;;-1:-1:-1;;;;;17502:33:0;;;17515:20;;17502:33;;17393:142;:180;;;;-1:-1:-1;17552:21:0;;-1:-1:-1;;;;;17539:34:0;;;17552:21;;17539:34;;17393:180;17389:372;;;17589:18;17610:20;17620:9;17610;:20::i;:::-;17589:41;;17678:15;;17667:6;17654:10;:19;17653:40;;17645:114;;;;-1:-1:-1;;;17645:114:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17389:372;;17793:12;;17783:6;:22;;:49;;;-1:-1:-1;;;;;;17809:23:0;;;;;;:15;:23;;;;;;;;17783:49;17775:79;;;;;-1:-1:-1;;;17775:79:0;;;;;;;;;;;;-1:-1:-1;;;17775:79:0;;;;;;;;;;;;;;;17977:4;;-1:-1:-1;;;;;17967:14:0;;;17977:4;;17967:14;:49;;;;-1:-1:-1;17998:18:0;;;;17967:49;:94;;;;-1:-1:-1;;;;;;18034:27:0;;;;;;:16;:27;;;;;;;;18033:28;17967:94;17963:299;;;-1:-1:-1;;;;;18086:24:0;;;;;;:13;:24;;;;;;18113:15;-1:-1:-1;18078:91:0;;;;-1:-1:-1;;;18078:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18229:21;;-1:-1:-1;;;;;18184:24:0;;;;;;:13;:24;;;;;18229:21;;;;;;18211:15;:39;18184:66;;17963:299;18320:16;:14;:16::i;:::-;18317:35;;;18339:10;:8;:10::i;:::-;18411:53;;;;;;;;;;;-1:-1:-1;;;18411:53:0;;;;;;;;-1:-1:-1;;;;;18411:17:0;;-1:-1:-1;18411:17:0;;;:9;:17;;;;;;;;:53;;18433:6;;18411:21;:53::i;:::-;-1:-1:-1;;;;;18391:17:0;;;;;;:9;:17;;;;;:73;;;;18502:21;18401:6;18502:13;:21::i;:::-;:56;;18552:6;18502:56;;;18526:23;18534:6;18542;18526:7;:23::i;:::-;-1:-1:-1;;;;;18592:20:0;;;;;;:9;:20;;;;;;18477:81;;-1:-1:-1;18592:40:0;;18477:81;18592:24;:40::i;:::-;-1:-1:-1;;;;;18569:20:0;;;;;;;:9;:20;;;;;;;;:63;;;;18678:24;;;;;:16;:24;;;;;;;18674:119;;18723:11;;;-1:-1:-1;;;;;18752:17:0;;;18723:11;18752:17;;;:9;:17;;;;;;;18723:47;;-1:-1:-1;;;18723:47:0;;;;;;;;;;;;;;;;;;:11;;;;;:20;;:47;;;;;;;;;;;:11;;:47;;;;;;;;;;;;;;;;;;;;;;;;;18719:63;;-1:-1:-1;;;;;18809:27:0;;;;;;:16;:27;;;;;;;;18805:129;;18857:11;;;-1:-1:-1;;;;;18889:20:0;;;18857:11;18889:20;;;:9;:20;;;;;;;18857:53;;-1:-1:-1;;;18857:53:0;;;;;;;;;;;;;;;;;;:11;;;;;:20;;:53;;;;;;;;;;;:11;;:53;;;;;;;;;;;;;;;;;;;;;;;;;18853:69;;18950:11;;;18970:14;;18950:35;;;-1:-1:-1;;;;;;18950:35:0;;;;;;;;;;-1:-1:-1;;;;;18950:11:0;;;;:19;;:35;;;;:11;;:35;;;;;;:11;;:35;;;;;;;;;;;;;;;;;;;;;;;;;18946:51;19031:9;-1:-1:-1;;;;;19014:43:0;19023:6;-1:-1:-1;;;;;19014:43:0;;19042:14;19014:43;;;;;;;;;;;;;;;;;;-1:-1:-1;19075:4:0;;17021:2066;-1:-1:-1;;;;17021:2066:0:o;281:136::-;339:7;366:43;370:1;373;366:43;;;;;;;;;;;;;;;;;:3;:43::i;94:181::-;152:7;184:5;;;208:6;;;;200:46;;;;;-1:-1:-1;;;200:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;621:250;679:7;703:6;699:47;;-1:-1:-1;733:1:0;726:8;;699:47;770:5;;;774:1;770;:5;:1;794:5;;;;;:10;786:56;;;;-1:-1:-1;;;786:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;877:132;935:7;962:39;966:1;969;962:39;;;;;;;;;;;;;;;;;:3;:39::i;20706:197::-;20793:4;;20755;;-1:-1:-1;;;;;20793:4:0;20779:10;:18;;;;:38;;-1:-1:-1;20811:6:0;;;;20810:7;20779:38;:62;;;;-1:-1:-1;20830:11:0;;;;20779:62;:116;;;;-1:-1:-1;;20882:13:0;;20872:4;20854:24;;;;:9;:24;;;;;;:41;;;20706:197::o;22187:1766::-;14148:6;:13;;-1:-1:-1;;14148:13:0;14157:4;14148:13;;;22282:15:::1;::::0;22299:26:::1;::::0;14148:6;;22266:60:::1;::::0;:15:::1;:60::i;:::-;:79;;22333:12;;22266:79;;;22329:1;22266:79;22236:109;;22356:23;22382:59;22439:1;22382:52;22425:8;;22382:38;22400:19;22382:13;;:17;;:38;;;;:::i;:59::-;22356:85;;22452:20;22475:34;22493:15;22475:13;;:17;;:34;;;;:::i;:::-;22546:16;::::0;;22560:1:::1;22546:16:::0;;;;;::::1;::::0;;22452:57;;-1:-1:-1;22522:21:0::1;::::0;22546:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;22546:16:0::1;22522:40;;22591:4;22573;22578:1;22573:7;;;;;;;;-1:-1:-1::0;;;;;22573:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;22617:4:::1;::::0;22607:7;;22617:4;::::1;::::0;22607;;22617;;22607:7;::::1;;;;;-1:-1:-1::0;;;;;22607:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:14;;;;22692:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;22692:188:0;;::::1;::::0;::::1;::::0;;;22634:21:::1;22692:188:::0;;;;;;22834:4:::1;22692:188:::0;;;;;;22854:15:::1;22692:188:::0;;;;;;;;;;;;;;;;;;;;;22658:21:::1;::::0;22692:6;;;::::1;::::0;:57:::1;::::0;22764:12;;22634:21;;22807:4;;22692:188;;;;;;;;;;::::1;::::0;::::1;::::0;;;22634:21;22692:188:::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22893:17;22913:40;22939:13;22913:21;:25;;:40;;;;:::i;:::-;22893:60:::0;-1:-1:-1;22966:19:0::1;22988:40;23001:26;:19:::0;23025:1:::1;23001:23;:26::i;:::-;22988:8;::::0;;:12:::1;:40::i;:::-;22966:62:::0;-1:-1:-1;23049:26:0::1;23078:58;23134:1;23078:51;22966:62:::0;23078:51;:9;23092:19;23078:13:::1;:34::i;:58::-;23049:87;;23147:27;23177:45;23210:11;23177:28;23191:13;;23177:9;:13;;:28;;;;:::i;:45::-;23147:75;;23233:26;23262:44;23294:11;23262:27;23276:12;;23262:9;:13;;:27;;;;:::i;:44::-;23233:73;;23323:11;;;;;;;;;-1:-1:-1::0;;;;;23323:11:0::1;-1:-1:-1::0;;;;;23323:19:0::1;;23350;23323:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;23319:65:::0;23423:20:::1;::::0;23415:77:::1;::::0;23395:15:::1;::::0;-1:-1:-1;;;;;23423:20:0::1;::::0;23482:5:::1;::::0;23457:18;;23395:15;23415:77;23395:15;23415:77;23457:18;23423:20;23482:5;23415:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;23566:5:0::1;::::0;-1:-1:-1;;23587:19:0;;;-1:-1:-1;23584:362:0::1;;23622:6;::::0;23796:21:::1;::::0;23622:244:::1;::::0;;-1:-1:-1;;;23622:244:0;;23698:4:::1;23622:244;::::0;::::1;::::0;;;;;;;:6:::1;:244:::0;;;;;;;;;;-1:-1:-1;;;;;23796:21:0;;::::1;23622:244:::0;;;;23836:15:::1;23622:244:::0;;;;;;:6;;;::::1;::::0;:22:::1;::::0;23652:18;;23622:244;;;;;::::1;::::0;;;;;;;;;23652:18;23622:6;:244;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;23622:244:0;23886:48;;;;;23622:244:::1;23886:48:::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;23584:362;-1:-1:-1::0;;14166:6:0;:14;;-1:-1:-1;;14166:14:0;;;-1:-1:-1;;;;;;;;;22187:1766:0:o;19439:114::-;-1:-1:-1;;;;;19526:19:0;19501:4;19526:19;;;:11;:19;;;;;;;;19525:20;;19439:114::o;19561:1137::-;19628:7;19670:8;;19652:15;:26;19648:784;;;19709:15;;19694:12;:30;;;19754:15;;19739:12;:30;;;19800:16;;19784:13;:32;;;19842:58;;19800:16;;19842:36;;19709:15;19842:19;:36::i;:58::-;19831:8;:69;19648:784;;;19951:4;;-1:-1:-1;;;;;19941:14:0;;;19951:4;;19941:14;19937:484;;;19986:15;;19971:12;:30;;;20031:15;;20016:12;:30;;;20077:16;;20061:13;:32;;;20119:49;;20077:16;;20119:30;;19986:15;20119:16;:30::i;19937:484::-;20224:16;;20209:12;:31;;;20270:16;;20255:12;:31;;;20317:17;;20301:13;:33;;;20360:49;;20317:17;;20360:30;;20224:16;20360;:30::i;:49::-;20349:8;:60;19937:484;20452:17;20472:40;20497:14;;20472:20;20483:8;;20472:6;:10;;:20;;;;:::i;:40::-;20570:4;20552:24;;;;:9;:24;;;;;;20452:60;;-1:-1:-1;20552:39:0;;20452:60;20552:28;:39::i;:::-;20543:4;20525:24;;;;:9;:24;;;;;;;;;:66;;;;20607:42;;;;;;;20543:4;;-1:-1:-1;;;;;20607:42:0;;;;;;;;;;;;;20669:21;:6;20680:9;20669:10;:21::i;:::-;20662:28;19561:1137;-1:-1:-1;;;;19561:1137:0:o;1015:345::-;1101:7;1203:12;1196:5;1188:28;;;;-1:-1:-1;;;1188:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1227:9;1243:1;1239;:5;;;;;;;1015:345;-1:-1:-1;;;;;1015:345:0:o;-1:-1:-1:-;;;;;;;;:::o

Swarm Source

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