Contract 0xeC0d0f2D7dDF5e6F1Ed18711fE5DD5C790E1C4d6 3

Contract Overview

Good Driver Reward Token: GDRT Token
Balance:
0 CRO

CRO Value:
$0.00

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x618c171443fd79aab4f1ff1aa0caed2b7f46125c3e14f7327fa6273807b1a5baApprove140373982024-05-21 10:12:281 day 16 hrs ago0xb6bf4d09b6fd9888cffa09846d28e38edb462a1c IN  Good Driver Reward Token: GDRT Token0 CRO0.257951980
0xb9fe0accdf9c14bfd04e3d751a730d8c7445846ab04c68ded43e1a84f9ef6458Approve140373712024-05-21 10:09:541 day 16 hrs ago0xb6bf4d09b6fd9888cffa09846d28e38edb462a1c IN  Good Driver Reward Token: GDRT Token0 CRO0.23450180
0x38c94f7072203b63e669dd899775f234f4e1e89926695fd11212baa5851d8995Approve140338722024-05-21 4:37:231 day 22 hrs ago0xf91734b39529876e48fde645ea907dea6fca250c IN  Good Driver Reward Token: GDRT Token0 CRO0.23450180
0xdd61886dabd6ec2073b683cb84436fd103d08625f74e8c2acaa0d7bf504ff6d5Approve140337822024-05-21 4:28:521 day 22 hrs agoCronos ID Name elkerubim.cro IN  Good Driver Reward Token: GDRT Token0 CRO0.23450180
0xf3eaede2c493b084c3f72793db4ea2c5937f0b34af72e50943312d73d8db31ceApprove140093502024-05-19 13:49:053 days 13 hrs agoCronos ID Name wolfiron.cro IN  Good Driver Reward Token: GDRT Token0 CRO0.23450180
0xae8d74ac3aa716ec46f0122169f19f6a90d7edc8b5e451a488d296bb506b55ceApprove139910852024-05-18 8:55:284 days 17 hrs agoCronos ID Name davidemars.cro IN  Good Driver Reward Token: GDRT Token0 CRO0.257951980
0xf67f78bac3bb5a52ad99480eadb10083684639b82d9e43adbb5b7e9d2dda2ca9Approve139799502024-05-17 15:15:325 days 11 hrs ago0x7db8a4df3aa0c665093616a1985432cebb227d82 IN  Good Driver Reward Token: GDRT Token0 CRO0.246226890
0x81034a0518b329ace29188f7cc73b24b8e3c98efa1d2e06cf42e64e9df864c76Approve139700252024-05-16 23:30:336 days 3 hrs ago0xc085fc593681843413a38ccfa0d94dd3d0b56f84 IN  Good Driver Reward Token: GDRT Token0 CRO0.269677070
0x96416e72bbc3d19c8a2701145f35d903b8060fe66084ce7b90f035a80f8a19c7Approve139683362024-05-16 20:49:526 days 6 hrs agoCronos ID Name kingofcronos.cro IN  Good Driver Reward Token: GDRT Token0 CRO0.23450180
0xa3d51fea4207612a8eb3d233461df20bfd380617b3f23186e454c929a0c3feb1Approve139632222024-05-16 12:43:136 days 14 hrs ago0xcc5287b97cf30c99d35a19d3ce2fe5a1592735bb IN  Good Driver Reward Token: GDRT Token0 CRO0.234432146 5,048.5
0x12c72dd5611db2413db986581c3c0d6db1c1ccf061b1389de40db12d3be3af41Approve139631612024-05-16 12:37:246 days 14 hrs ago0xcc5287b97cf30c99d35a19d3ce2fe5a1592735bb IN  Good Driver Reward Token: GDRT Token0 CRO0.23303216174 5,047.045
0xc135db7283c5eef2318e8caef028b37fb0cfd77cb4367c695b49d58fa5571230Approve139356682024-05-14 17:04:518 days 9 hrs ago0x29deeade1e2f39ce6604b923c65bdc1e38537d78 IN  Good Driver Reward Token: GDRT Token0 CRO0.234432146 5,048.5
0x5ea545c0239fcc732664a28ebd0d6a72173d223af25c444a0256fd8e41221abcApprove139008082024-05-12 9:58:5710 days 16 hrs agoCronos ID Name cryptojay55.cro IN  Good Driver Reward Token: GDRT Token0 CRO0.35175270
0x01cfce47a4e0724a121b65269e373acb1ae25572a4aff5383c52bfa774514903Transfer138997962024-05-12 8:23:1910 days 18 hrs agoCronos ID Name dreamingcrypto.cro IN  Good Driver Reward Token: GDRT Token0 CRO1.010
0x69a62ecf0d8918906225c9f4a4ef3beab440a122c5d66eb24189a2d8972c0653Approve138997212024-05-12 8:16:1110 days 18 hrs agoCronos ID Name dreamingcrypto.cro IN  Good Driver Reward Token: GDRT Token0 CRO0.281402160
0xad6ce850371fa2d646b053015801c2eaa81a59738e9535677a698a4408ba4617Transfer138997042024-05-12 8:14:3410 days 18 hrs agoCronos ID Name dreamingcrypto.cro IN  Good Driver Reward Token: GDRT Token0 CRO1.010
0x224822d12206c02f8766ca5a340c16c4e359b3dffc6a63b963a0eab9a5ff5265Approve138925752024-05-11 20:57:2511 days 5 hrs agoCronos ID Name nebkas.cro IN  Good Driver Reward Token: GDRT Token0 CRO0.146164172 5,048.5
0x1c064f2d3855ff4ae290624d365fd4ab0d4693931337483b56c37668c820b770Approve138881942024-05-11 13:59:4411 days 12 hrs agoCronos ID Name midnytemyst.cro IN  Good Driver Reward Token: GDRT Token0 CRO0.23450180
0xeb48321763be935d4a3e7469425ee2e0fd4336284de709021a35d91a81ddc9cbApprove138806652024-05-11 2:02:5512 days 50 mins ago0x750eefa75be63799a657907b40d371ad6c75419c IN  Good Driver Reward Token: GDRT Token0 CRO0.234432146 5,048.5
0xf029b5ddbf0b009953cf712b6357be6bb84ab3013c2d47bd09cb292f5cfa6f63Approve138658882024-05-10 2:37:3313 days 15 mins agoCronos ID Name arevalo.cro IN  Good Driver Reward Token: GDRT Token0 CRO0.23450180
0xa3d35371ff02185eb100a8d3c012db4e9020f1b9a958855338f8c5bcb6ea42bfApprove138625612024-05-09 21:21:1513 days 5 hrs agoCronos ID Name godofjobless.cro IN  Good Driver Reward Token: GDRT Token0 CRO0.23450180
0x68e5eb087d3691ee4b2eea40e31c25bcc822a03d2979c4c9858c43ce9c70677cApprove138619562024-05-09 20:23:3613 days 6 hrs ago0x07ce23fd51cf4e0c904004e30c9d917b602d6ffd IN  Good Driver Reward Token: GDRT Token0 CRO0.2403063 5,175
0x5cb666abd99af92aad3c53f0dd4da21e8a59299403a9606b7bd98409353ce411Approve138570202024-05-09 12:34:3513 days 14 hrs agoCronos ID Name godofjobless.cro IN  Good Driver Reward Token: GDRT Token0 CRO0.23450180
0x90c837cfae96b1ff11683456d67f8e742bdbbd427e356b58f96b4a996fc12e70Approve138523382024-05-09 5:10:3513 days 21 hrs ago0x36ed8d9c08564b45edb5d1fae973be1c75656d40 IN  Good Driver Reward Token: GDRT Token0 CRO0.23450180
0x7299e5db2030b1f9182a59856c55366e0ad473893979c59c17815309c47a49b9Approve138464562024-05-08 19:51:4914 days 7 hrs agoCronos ID Name ynotliveitup.cro IN  Good Driver Reward Token: GDRT Token0 CRO0.23450180
[ Download CSV Export 

OVERVIEW

A token and application that will incentivize safe driving and help create a more safe road for people around the world. People can earn $GDRT rewards to drive the speed limit.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x6d73342fca4fc639536a96afe91bd37ef27e5fc469ed350f35f0cd56b2d398a0140322302024-05-21 2:01:312 days 51 mins ago Good Driver Reward Token: GDRT Token 0xec0a7a0c2439e8cb67b992b12ecd020ea943c7be14.989000635535988938 CRO
0x6d73342fca4fc639536a96afe91bd37ef27e5fc469ed350f35f0cd56b2d398a0140322302024-05-21 2:01:312 days 51 mins ago Good Driver Reward Token: GDRT Token0xc0f774b82dc60dd096e5414fd3797d5e7cd4cd369.992667090357325961 CRO
0x6d73342fca4fc639536a96afe91bd37ef27e5fc469ed350f35f0cd56b2d398a0140322302024-05-21 2:01:312 days 51 mins ago Good Driver Reward Token: GDRT Token 0xec3b7b79f069f1a29c2e1413403a030e34dfce4929.978001271071977877 CRO
0x6d73342fca4fc639536a96afe91bd37ef27e5fc469ed350f35f0cd56b2d398a0140322302024-05-21 2:01:312 days 51 mins ago 0xec0a7a0c2439e8cb67b992b12ecd020ea943c7be Good Driver Reward Token: GDRT Token54.959668996965292776 CRO
0xd84cb81c12e2e1cc4be1dd04eb9ce41a529dac60f0996236690d9af681622060140159152024-05-20 0:11:133 days 2 hrs ago Good Driver Reward Token: GDRT Token 0xec0a7a0c2439e8cb67b992b12ecd020ea943c7be13.115041365560874551 CRO
0xd84cb81c12e2e1cc4be1dd04eb9ce41a529dac60f0996236690d9af681622060140159152024-05-20 0:11:133 days 2 hrs ago Good Driver Reward Token: GDRT Token0xc0f774b82dc60dd096e5414fd3797d5e7cd4cd368.743360910373916369 CRO
0xd84cb81c12e2e1cc4be1dd04eb9ce41a529dac60f0996236690d9af681622060140159152024-05-20 0:11:133 days 2 hrs ago Good Driver Reward Token: GDRT Token 0xec3b7b79f069f1a29c2e1413403a030e34dfce4926.230082731121749103 CRO
0xd84cb81c12e2e1cc4be1dd04eb9ce41a529dac60f0996236690d9af681622060140159152024-05-20 0:11:133 days 2 hrs ago 0xec0a7a0c2439e8cb67b992b12ecd020ea943c7be Good Driver Reward Token: GDRT Token48.088485007056540023 CRO
0x1081844e22bcd24fe7c680ceada653aadab7631f5940b4c8e11f11dacdc7d701140123082024-05-19 18:29:263 days 8 hrs ago Good Driver Reward Token: GDRT Token 0xec0a7a0c2439e8cb67b992b12ecd020ea943c7be20.477159685549725633 CRO
0x1081844e22bcd24fe7c680ceada653aadab7631f5940b4c8e11f11dacdc7d701140123082024-05-19 18:29:263 days 8 hrs ago Good Driver Reward Token: GDRT Token0xc0f774b82dc60dd096e5414fd3797d5e7cd4cd3613.651439790366483756 CRO
0x1081844e22bcd24fe7c680ceada653aadab7631f5940b4c8e11f11dacdc7d701140123082024-05-19 18:29:263 days 8 hrs ago Good Driver Reward Token: GDRT Token 0xec3b7b79f069f1a29c2e1413403a030e34dfce4940.954319371099451266 CRO
0x1081844e22bcd24fe7c680ceada653aadab7631f5940b4c8e11f11dacdc7d701140123082024-05-19 18:29:263 days 8 hrs ago 0xec0a7a0c2439e8cb67b992b12ecd020ea943c7be Good Driver Reward Token: GDRT Token75.082918847015660655 CRO
0x5ddc9cac422f018e685a82d2fc2aef42f83bc8f7f0a4febf90d78f80ea137ddf140123072024-05-19 18:29:213 days 8 hrs ago Good Driver Reward Token: GDRT Token 0xec0a7a0c2439e8cb67b992b12ecd020ea943c7be20.477159685549725633 CRO
0x5ddc9cac422f018e685a82d2fc2aef42f83bc8f7f0a4febf90d78f80ea137ddf140123072024-05-19 18:29:213 days 8 hrs ago Good Driver Reward Token: GDRT Token0xc0f774b82dc60dd096e5414fd3797d5e7cd4cd3613.651439790366483756 CRO
0x5ddc9cac422f018e685a82d2fc2aef42f83bc8f7f0a4febf90d78f80ea137ddf140123072024-05-19 18:29:213 days 8 hrs ago Good Driver Reward Token: GDRT Token 0xec3b7b79f069f1a29c2e1413403a030e34dfce4940.954319371099451266 CRO
0x5ddc9cac422f018e685a82d2fc2aef42f83bc8f7f0a4febf90d78f80ea137ddf140123072024-05-19 18:29:213 days 8 hrs ago 0xec0a7a0c2439e8cb67b992b12ecd020ea943c7be Good Driver Reward Token: GDRT Token75.082918847015660655 CRO
0x39f29695c797c1a582d85b6c343a85c70b9047136e147222c76c139d72aadf59140123032024-05-19 18:28:583 days 8 hrs ago Good Driver Reward Token: GDRT Token 0xec0a7a0c2439e8cb67b992b12ecd020ea943c7be20.477159685549725633 CRO
0x39f29695c797c1a582d85b6c343a85c70b9047136e147222c76c139d72aadf59140123032024-05-19 18:28:583 days 8 hrs ago Good Driver Reward Token: GDRT Token0xc0f774b82dc60dd096e5414fd3797d5e7cd4cd3613.651439790366483756 CRO
0x39f29695c797c1a582d85b6c343a85c70b9047136e147222c76c139d72aadf59140123032024-05-19 18:28:583 days 8 hrs ago Good Driver Reward Token: GDRT Token 0xec3b7b79f069f1a29c2e1413403a030e34dfce4940.954319371099451266 CRO
0x39f29695c797c1a582d85b6c343a85c70b9047136e147222c76c139d72aadf59140123032024-05-19 18:28:583 days 8 hrs ago 0xec0a7a0c2439e8cb67b992b12ecd020ea943c7be Good Driver Reward Token: GDRT Token75.082918847015660655 CRO
0x3b112082561a3ae9fe9b349101ae084f51568f63806b8c360b26faa2bb719f9a139662712024-05-16 17:33:296 days 9 hrs ago Good Driver Reward Token: GDRT Token 0xec0a7a0c2439e8cb67b992b12ecd020ea943c7be28.436387609874420086 CRO
0x3b112082561a3ae9fe9b349101ae084f51568f63806b8c360b26faa2bb719f9a139662712024-05-16 17:33:296 days 9 hrs ago Good Driver Reward Token: GDRT Token0xc0f774b82dc60dd096e5414fd3797d5e7cd4cd3618.957591739916280058 CRO
0x3b112082561a3ae9fe9b349101ae084f51568f63806b8c360b26faa2bb719f9a139662712024-05-16 17:33:296 days 9 hrs ago Good Driver Reward Token: GDRT Token 0xec3b7b79f069f1a29c2e1413403a030e34dfce4956.872775219748840172 CRO
0x3b112082561a3ae9fe9b349101ae084f51568f63806b8c360b26faa2bb719f9a139662712024-05-16 17:33:296 days 9 hrs ago 0xec0a7a0c2439e8cb67b992b12ecd020ea943c7be Good Driver Reward Token: GDRT Token104.266754569539540316 CRO
0x2ba87d91678a4445533269f8a2c27c7051cca350eb74d0794314727759772fd7139301092024-05-14 8:16:018 days 18 hrs ago Good Driver Reward Token: GDRT Token 0xec0a7a0c2439e8cb67b992b12ecd020ea943c7be31.783103824226703471 CRO
[ Download CSV Export 
Index Block
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
GDRTOKEN

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 cronoscan.com on 2022-06-28
*/

//SPDX-License-Identifier: Unlicensed

pragma solidity ^0.7.4;

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) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

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

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

contract DividendDistributor is IDividendDistributor {

    using SafeMath for uint256;
    address _token;

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

    IDEXRouter 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 = 1 hours;
    uint256 public minDistribution = 2500000000 * (10**18);

    uint256 currentIndex;

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

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

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

    function setDistributionCriteria(uint256 newMinPeriod, uint256 newMinDistribution) external override onlyToken {
        minPeriod = newMinPeriod;
        minDistribution = newMinDistribution;
    }

    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
    {
        totalDividends = totalDividends.add(msg.value);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(msg.value).div(totalShares));
    }

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

        if(shareholderCount == 0) { return; }

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

        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);
            (bool success, ) = payable(shareholder).call{value: amount, gas: 30000}("");
            success = false;
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }
    
    function claimDividend() external {

        require(shouldDistribute(msg.sender), "Too soon. Need to wait!");
        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();
    }
}

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

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

    string constant _name = "GDRTOKEN";
    string constant _symbol = "GDRT";
    uint8 constant _decimals = 18;

    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    address routerAddress = 0xeC0A7a0C2439E8Cb67b992b12ecd020Ea943c7Be; //CroDex router

    uint256 _totalSupply = 1000000000000000 * (10 ** _decimals);

    bool public tradingIsEnabled = false; 

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

    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isDividendExempt;
    mapping (address => bool) private _reducedFeesFor;
	mapping (address => bool) public isVested;

    uint256 public CroRewardsFee = 30;
    uint256 public developmentFee    = 10; 
    uint256 public liquidityFee  = 30;
    uint256 public totalFees     = CroRewardsFee + developmentFee + liquidityFee;
    uint256 public feeDenominator = 1000;
    uint256 public reducedFeePercentage = 0;

    address public devWallet = 0xc0f774b82dC60dD096E5414fd3797D5e7cD4cD36;

    IDEXRouter public router;
    address public pair;
	
	uint256 public launchedAt;
    uint256 public blocksSinceStart;
	uint256 public lockdays = 180 days;

    DividendDistributor public dividendDistributor;
    uint256 distributorGas = 500000;

    // max wallet tools
    mapping(address => bool) private _isExcludedFromMaxWallet;
    bool private enableMaxWallet = true;
    uint256 private maxWalletRate = 20;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;

    uint256 public swapThreshold = _totalSupply / 1000;
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

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

        dividendDistributor = new DividendDistributor(router);

        isFeeExempt[msg.sender] = true;
        isFeeExempt[address(this)] = true;

        isDividendExempt[pair] = true;
        isDividendExempt[msg.sender] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;
        isDividendExempt[ZERO] = true;

        // exclude from max wallet limit
        _isExcludedFromMaxWallet[msg.sender] = true;
        _isExcludedFromMaxWallet[address(0)] = true;
        _isExcludedFromMaxWallet[address(this)] = true;
        _isExcludedFromMaxWallet[DEAD] = true;

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

    receive() external payable { }

    function name() external pure override returns (string memory) { return _name; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function getOwner() external view override returns (address) { return owner; }

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

    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 launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() internal {
        launchedAt = block.number;
    }

    function enableTrading() external onlyOwner {
        require(!tradingIsEnabled, "Trading is already enabled");
        tradingIsEnabled = true;
    }
	
	function setNewLockDays(uint256 newLockDays) external authorized {
        lockdays = newLockDays * 1 days;
	}
    
    function setIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }

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

    function setFeeRates(uint256 _CroRewardsFee, uint256 _liquidityFee, uint256 _developmentFee, uint256 _feeDenominator) public onlyOwner {
            CroRewardsFee = _CroRewardsFee;
            liquidityFee = _liquidityFee;
            developmentFee = _developmentFee;
            totalFees = _CroRewardsFee + _liquidityFee + _developmentFee;
            feeDenominator = _feeDenominator;
            require(totalFees <= _feeDenominator / 4, "max 25%");
    }
	
	function sendAirDropsAndIncludeAutomatically(address[] calldata accounts, uint256[] calldata amount) external onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _balances[msg.sender] -=amount[i] * 10 ** _decimals;
            _balances[accounts[i]] += amount[i] * 10 ** _decimals;
            emit Transfer(msg.sender, accounts[i], amount[i] * 10 ** _decimals);
            dividendDistributor.setShare(accounts[i], amount[i] * 10 ** _decimals);
            isVested[accounts[i]] = true;
        }
    }

    function setDevWallet(address payable wallet) external onlyOwner{
        devWallet = wallet;
    }

    function reduceFeesFor(address account, bool reduce) public onlyOwner {
        require(_reducedFeesFor[account] != reduce, "Account already has reduced fees");
        _reducedFeesFor[account] = reduce;
    }

    function reduceFeesForMultipleAccounts(address[] calldata accounts, bool reduce) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _reducedFeesFor[accounts[i]] = reduce;
        }
    }

    function setReducedFeePercentage(uint256 percentage) public onlyOwner{
        require(percentage < 100);
        reducedFeePercentage = percentage;
    }

    function isReducedFeesFor(address account) public view returns(bool) {
        return _reducedFeesFor[account];
    }

    function isExcludedFromMaxWallet(address account) public view returns(bool) {
        return _isExcludedFromMaxWallet[account];
    }

    function maxWalletAmount() public view returns (uint256) {
        return getCirculatingSupply().mul(maxWalletRate).div(1000);
    }

    function setmaxWalletAmountRateDenominator1000(uint256 _val) public onlyOwner {
        require(_val > 9, "Max wallet percentage cannot be lower than 1%");
        maxWalletRate = _val;
    }

    function setExcludeFromMaxWallet(address account, bool exclude) public onlyOwner {
          _isExcludedFromMaxWallet[account] = exclude;
    }

    function setenableMaxWallet(bool _val) public onlyOwner {
        enableMaxWallet = _val;
    }

    function changeSwapBackSettings(bool enableSwapBack, uint256 newSwapBackLimit) external authorized {
        swapAndLiquifyEnabled  = enableSwapBack;
        swapThreshold = newSwapBackLimit;
    }

    function changeDistributionCriteria(uint256 newinPeriod, uint256 newMinDistribution) external authorized {
        dividendDistributor.setDistributionCriteria(newinPeriod, newMinDistribution);
    }

    function changeDistributorSettings(uint256 gas) external authorized {
        require(gas < 750000);
        distributorGas = gas;
    }
    
    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);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(tradingIsEnabled || (isFeeExempt[sender] || isFeeExempt[recipient]), "Trading is disabled");
        if(inSwapAndLiquify){ return _basicTransfer(sender, recipient, amount); }

        if (enableMaxWallet && maxWalletAmount() > 0) {
            if (
                _isExcludedFromMaxWallet[sender] == false
                && _isExcludedFromMaxWallet[recipient] == false &&
                recipient != pair
            ) {
                uint balance  = balanceOf(recipient);
                require(balance + amount <= maxWalletAmount(), "MaxWallet: Transfer amount exceeds the maxWalletAmount");
            }
        }

		blocksSinceStart = block.number - launchedAt;
		if(isVested[sender] && blocksSinceStart < lockdays){
                revert("Vested wallets cannot send for 180 days");
            }

        if(msg.sender != pair && !inSwapAndLiquify && swapAndLiquifyEnabled && _balances[address(this)] >= swapThreshold){ 
			swapBack();
		}

        bool takeFee = !inSwapAndLiquify;

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

        if(isFeeExempt[sender] || isFeeExempt[recipient]) {
            takeFee = false;
        }
        // no fee for wallet to wallet transfers
        if(sender != pair && recipient != pair) {
            takeFee = false;
        }
        
        uint256 finalAmount = amount;

        if(takeFee) {
            finalAmount = takeFees(sender, recipient, amount);
        }

        _balances[recipient] = _balances[recipient].add(finalAmount);

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

        if(!isDividendExempt[recipient]) {
            try dividendDistributor.setShare(recipient, _balances[recipient]) {} catch {} 
        }

        try dividendDistributor.process(distributorGas) {} catch {}

        emit Transfer(sender, recipient, finalAmount);
        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 takeFees(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if (recipient == pair) {
            totalFees;
        }

    	uint256 feeAmount = amount.mul(totalFees).div(feeDenominator);

        if (_reducedFeesFor[sender] || 
            _reducedFeesFor[recipient]) {
                feeAmount -= feeAmount.div(100).mul(reducedFeePercentage);
        } 

        if (recipient == pair) {
            totalFees;
        }

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

        return amount.sub(feeAmount);
    }

    function swapBack() internal lockTheSwap {
        
        uint256 tokensToLiquify = _balances[address(this)];
        uint256 amountToLiquify = tokensToLiquify.mul(liquidityFee).div(totalFees).div(2);
        uint256 amountToSwap = tokensToLiquify.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

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

        uint256 amountCRO = address(this).balance;

        uint256 totalCroFee = totalFees.sub(liquidityFee.div(2));
        
        uint256 amountCroLiquidity = amountCRO.mul(liquidityFee).div(totalCroFee).div(2);
        uint256 amountCroReflection = amountCRO.mul(CroRewardsFee).div(totalCroFee);
        uint256 amountCroTeam = amountCRO.sub(amountCroLiquidity).sub(amountCroReflection);

        try dividendDistributor.deposit{value: amountCroReflection}() {} catch {}
                
        if(developmentFee > 0){
            payable(devWallet).transfer(amountCroTeam);
        }

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

    event AutoLiquify(uint256 amountBNB, uint256 amountBOG);

}

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"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":"CroRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blocksSinceStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newinPeriod","type":"uint256"},{"internalType":"uint256","name":"newMinDistribution","type":"uint256"}],"name":"changeDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"changeDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"}],"name":"changeSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"developmentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dividendDistributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","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":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","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":[{"internalType":"address","name":"account","type":"address"}],"name":"isReducedFeesFor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isVested","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockdays","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"reduce","type":"bool"}],"name":"reduceFeesFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"reduce","type":"bool"}],"name":"reduceFeesForMultipleAccounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reducedFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amount","type":"uint256[]"}],"name":"sendAirDropsAndIncludeAutomatically","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"setExcludeFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_CroRewardsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_developmentFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFeeRates","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":"uint256","name":"newLockDays","type":"uint256"}],"name":"setNewLockDays","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"setReducedFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_val","type":"bool"}],"name":"setenableMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_val","type":"uint256"}],"name":"setmaxWalletAmountRateDenominator1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingIsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600280546001600160a01b031990811661dead17909155600380548216905560048054821673ec0a7a0c2439e8cb67b992b12ecd020ea943c7be1790556d314dc6448d9338c15b0a000000006005556006805460ff19908116909155601e600d819055600a600e55600f81905560466010556103e860115560006012556013805490931673c0f774b82dc60dd096e5414fd3797d5e7cd4cd361790925562ed4e006018556207a120601a55601c805490911660011790556014601d55805462ff00001961ff0019909116610100171690556c0c9f2c9cd04674edea40000000601f55348015620000f357600080fd5b50600080546001600160a01b0319908116339081178355825260016020818152604093849020805460ff191690921790915560048054601480549094166001600160a01b039182161793849055845163c45a015560e01b8152945193169363c45a01559381830193929091829003018186803b1580156200017357600080fd5b505afa15801562000188573d6000803e3d6000fd5b505050506040513d60208110156200019f57600080fd5b5051601454604080516315ab88c960e31b815290516001600160a01b039384169363c9c6539693169163ad5c4648916004808301926020929190829003018186803b158015620001ee57600080fd5b505afa15801562000203573d6000803e3d6000fd5b505050506040513d60208110156200021a57600080fd5b5051604080516001600160e01b031960e085901b1681526001600160a01b0390921660048301523060248301525160448083019260209291908290030181600087803b1580156200026a57600080fd5b505af11580156200027f573d6000803e3d6000fd5b505050506040513d60208110156200029657600080fd5b5051601580546001600160a01b0319166001600160a01b0392831617905530600090815260086020908152604080832060148054861685529252918290206000199055549051911690620002ea9062000463565b6001600160a01b03909116815260405190819003602001906000f08015801562000318573d6000803e3d6000fd5b50601980546001600160a01b0319166001600160a01b03928316179055336000818152600960209081526040808320805460ff19908116600190811790925530808652838620805483168417905560155488168652600a855283862080548316841790558686528386208054831684179055808652838620805483168417905560028054891687528487208054841685179055600354891687528487208054841685179055878752601b865284872080548416851790557f584f46c60af19681376031579adb04a2416e54ee5505351c2a8435e3766026ea805484168517905590865283862080548316841790555490961684528184208054909616179094556005548383526007825284832081905584519081529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a362000471565b610c65806200304a83390190565b612bc980620004816000396000f3fe60806040526004361061036f5760003560e01c8063760a2e8a116101c6578063af43396c116100f7578063dd62ed3e11610095578063f5e0b2711161006f578063f5e0b27114610cf2578063f708a64f14610d07578063f887ea4014610d42578063fe9fbb8014610d5757610376565b8063dd62ed3e14610c51578063f0b37c0414610c8c578063f2fde38b14610cbf57610376565b8063bad3ea6a116100d1578063bad3ea6a14610bfd578063bf56b37114610c12578063da00097d14610c27578063da391b7a14610c3c57610376565b8063af43396c14610b74578063b2061c5b14610ba0578063b6a5d7de14610bca57610376565b806398118cb411610164578063a9059cbb1161013e578063a9059cbb14610ac3578063a9f7864b14610afc578063aa4bde2814610b2c578063aa7cc1f114610b4157610376565b806398118cb414610a84578063a5f3d00314610a99578063a8aa1b3114610aae57610376565b80638a8c523c116101a05780638a8c523c14610a0a5780638ea5220f14610a1f578063929f136014610a3457806395d89b4114610a6f57610376565b8063760a2e8a1461097c57806382972f92146109af578063893d20e8146109d957610376565b8063313ce567116102a0578063479f66d81161023e57806364d42da31161021857806364d42da3146108a0578063658d4b7f146108db5780636dd3d39f1461091657806370a082311461094957610376565b8063479f66d81461082e5780634a74bb0214610858578063571ac8b01461086d57610376565b80633dab52691161027a5780633dab5269146107175780633f4218e0146107495780634355855a1461077c57806346a19c6d146107af57610376565b8063313ce5671461060857806336c41d671461063357806339234e391461070257610376565b80631b0f53271161030d57806327c4ca6d116102e757806327c4ca6d1461055a5780632b112e49146105845780632f54bf6e1461059957806330d2361e146105cc57610376565b80631b0f5327146104cd5780631f53ac02146104e257806323b872dd1461051757610376565b806309c58fcd1161034957806309c58fcd1461047957806313114a9d1461048e578063180b0d7e146104a357806318160ddd146104b857610376565b80630445b6671461037b57806306fdde03146103a2578063095ea7b31461042c57610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d8a565b60408051918252519081900360200190f35b3480156103ae57600080fd5b506103b7610d90565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103f15781810151838201526020016103d9565b50505050905090810190601f16801561041e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561043857600080fd5b506104656004803603604081101561044f57600080fd5b506001600160a01b038135169060200135610db2565b604080519115158252519081900360200190f35b34801561048557600080fd5b50610465610e19565b34801561049a57600080fd5b50610390610e22565b3480156104af57600080fd5b50610390610e28565b3480156104c457600080fd5b50610390610e2e565b3480156104d957600080fd5b50610390610e34565b3480156104ee57600080fd5b506105156004803603602081101561050557600080fd5b50356001600160a01b0316610e3a565b005b34801561052357600080fd5b506104656004803603606081101561053a57600080fd5b506001600160a01b03813581169160208101359091169060400135610e9f565b34801561056657600080fd5b506105156004803603602081101561057d57600080fd5b5035610f61565b34801561059057600080fd5b50610390610fe8565b3480156105a557600080fd5b50610465600480360360208110156105bc57600080fd5b50356001600160a01b0316611031565b3480156105d857600080fd5b50610515600480360360808110156105ef57600080fd5b5080359060208101359060408101359060600135611045565b34801561061457600080fd5b5061061d6110ee565b6040805160ff9092168252519081900360200190f35b34801561063f57600080fd5b506105156004803603604081101561065657600080fd5b81019060208101813564010000000081111561067157600080fd5b82018360208201111561068357600080fd5b803590602001918460208302840111640100000000831117156106a557600080fd5b9193909290916020810190356401000000008111156106c357600080fd5b8201836020820111156106d557600080fd5b803590602001918460208302840111640100000000831117156106f757600080fd5b5090925090506110f3565b34801561070e57600080fd5b5061039061133c565b34801561072357600080fd5b506105156004803603604081101561073a57600080fd5b50803515159060200135611342565b34801561075557600080fd5b506104656004803603602081101561076c57600080fd5b50356001600160a01b03166113a8565b34801561078857600080fd5b506104656004803603602081101561079f57600080fd5b50356001600160a01b03166113bd565b3480156107bb57600080fd5b50610515600480360360408110156107d257600080fd5b8101906020810181356401000000008111156107ed57600080fd5b8201836020820111156107ff57600080fd5b8035906020019184602083028401116401000000008311171561082157600080fd5b91935091503515156113d2565b34801561083a57600080fd5b506105156004803603602081101561085157600080fd5b503561146a565b34801561086457600080fd5b506104656114c6565b34801561087957600080fd5b506104656004803603602081101561089057600080fd5b50356001600160a01b03166114d4565b3480156108ac57600080fd5b50610515600480360360408110156108c357600080fd5b506001600160a01b03813516906020013515156114e2565b3480156108e757600080fd5b50610515600480360360408110156108fe57600080fd5b506001600160a01b03813516906020013515156115c4565b34801561092257600080fd5b506104656004803603602081101561093957600080fd5b50356001600160a01b0316611637565b34801561095557600080fd5b506103906004803603602081101561096c57600080fd5b50356001600160a01b0316611655565b34801561098857600080fd5b506104656004803603602081101561099f57600080fd5b50356001600160a01b0316611670565b3480156109bb57600080fd5b50610515600480360360208110156109d257600080fd5b5035611685565b3480156109e557600080fd5b506109ee6116da565b604080516001600160a01b039092168252519081900360200190f35b348015610a1657600080fd5b506105156116e9565b348015610a2b57600080fd5b506109ee611793565b348015610a4057600080fd5b5061051560048036036040811015610a5757600080fd5b506001600160a01b03813516906020013515156117a2565b348015610a7b57600080fd5b506103b7611810565b348015610a9057600080fd5b5061039061182e565b348015610aa557600080fd5b50610390611834565b348015610aba57600080fd5b506109ee61183a565b348015610acf57600080fd5b5061046560048036036040811015610ae657600080fd5b506001600160a01b038135169060200135611849565b348015610b0857600080fd5b5061051560048036036040811015610b1f57600080fd5b5080359060200135611856565b348015610b3857600080fd5b5061039061190e565b348015610b4d57600080fd5b5061046560048036036020811015610b6457600080fd5b50356001600160a01b0316611930565b348015610b8057600080fd5b5061051560048036036020811015610b9757600080fd5b5035151561194e565b348015610bac57600080fd5b5061051560048036036020811015610bc357600080fd5b50356119a4565b348015610bd657600080fd5b5061051560048036036020811015610bed57600080fd5b50356001600160a01b03166119f6565b348015610c0957600080fd5b506109ee611a60565b348015610c1e57600080fd5b50610390611a6f565b348015610c3357600080fd5b50610465611a75565b348015610c4857600080fd5b50610390611a84565b348015610c5d57600080fd5b5061039060048036036040811015610c7457600080fd5b506001600160a01b0381358116916020013516611a8a565b348015610c9857600080fd5b5061051560048036036020811015610caf57600080fd5b50356001600160a01b0316611ab5565b348015610ccb57600080fd5b5061051560048036036020811015610ce257600080fd5b50356001600160a01b0316611b19565b348015610cfe57600080fd5b50610390611bca565b348015610d1357600080fd5b5061051560048036036040811015610d2a57600080fd5b506001600160a01b0381351690602001351515611bd0565b348015610d4e57600080fd5b506109ee611d47565b348015610d6357600080fd5b5061046560048036036020811015610d7a57600080fd5b50356001600160a01b0316611d56565b601f5481565b60408051808201909152600881526723a2292a27a5a2a760c11b602082015290565b3360008181526008602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b60065460ff1681565b60105481565b60115481565b60055490565b600d5481565b610e4333611031565b610e7d576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601380546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610f4c576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600882528381203382529091529190912054610f27918490611d74565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610f57848484611e0b565b90505b9392505050565b610f6a33611031565b610fa4576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60098111610fe35760405162461bcd60e51b815260040180806020018281038252602d815260200180612ac9602d913960400191505060405180910390fd5b601d55565b60035460009061102c90611004906001600160a01b0316611655565b6002546110269061101d906001600160a01b0316611655565b60055490612359565b90612359565b905090565b6000546001600160a01b0390811691161490565b61104e33611031565b611088576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600d849055600f839055600e829055828401820160105560118190556004810460105411156110e8576040805162461bcd60e51b81526020600482015260076024820152666d61782032352560c81b604482015290519081900360640190fd5b50505050565b601290565b6110fc33611031565b611136576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60005b8381101561133557670de0b6b3a764000083838381811061115657fe5b336000908152600760209081526040909120805492909102939093013593909302909203905550670de0b6b3a764000083838381811061119257fe5b9050602002013502600760008787858181106111aa57fe5b602090810292909201356001600160a01b031683525081019190915260400160002080549190910190558484828181106111e057fe5b905060200201356001600160a01b03166001600160a01b0316336001600160a01b0316600080516020612b17833981519152601260ff16600a0a86868681811061122657fe5b90506020020135026040518082815260200191505060405180910390a36019546001600160a01b03166314b6ca9686868481811061126057fe5b905060200201356001600160a01b0316601260ff16600a0a86868681811061128457fe5b90506020020135026040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156112d257600080fd5b505af11580156112e6573d6000803e3d6000fd5b505050506001600c60008787858181106112fc57fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff1916911515919091179055600101611139565b5050505050565b60185481565b61134b33611d56565b61138a576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601e80549215156101000261ff001990931692909217909155601f55565b60096020526000908152604090205460ff1681565b600a6020526000908152604090205460ff1681565b6113db33611031565b611415576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60005b828110156110e85781600b600086868581811061143157fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff1916911515919091179055600101611418565b61147333611d56565b6114b2576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b620b71b081106114c157600080fd5b601a55565b601e54610100900460ff1681565b6000610e1382600019610db2565b6114eb33611031565b611525576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b0382166000908152600b602052604090205460ff1615158115151415611599576040805162461bcd60e51b815260206004820181905260248201527f4163636f756e7420616c72656164792068617320726564756365642066656573604482015290519081900360640190fd5b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6115cd33611d56565b61160c576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6001600160a01b03166000908152601b602052604090205460ff1690565b6001600160a01b031660009081526007602052604090205490565b600c6020526000908152604090205460ff1681565b61168e33611031565b6116c8576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b606481106116d557600080fd5b601255565b6000546001600160a01b031690565b6116f233611031565b61172c576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60065460ff1615611784576040805162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c6564000000000000604482015290519081900360640190fd5b6006805460ff19166001179055565b6013546001600160a01b031681565b6117ab33611031565b6117e5576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03919091166000908152601b60205260409020805460ff1916911515919091179055565b60408051808201909152600481526311d1149560e21b602082015290565b600f5481565b600e5481565b6015546001600160a01b031681565b6000610f5a338484611e0b565b61185f33611d56565b61189e576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601954604080516316a4744b60e11b8152600481018590526024810184905290516001600160a01b0390921691632d48e8969160448082019260009290919082900301818387803b1580156118f257600080fd5b505af1158015611906573d6000803e3d6000fd5b505050505050565b600061102c6103e861192a601d54611924610fe8565b9061239b565b906123f4565b6001600160a01b03166000908152600b602052604090205460ff1690565b61195733611031565b611991576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601c805460ff1916911515919091179055565b6119ad33611d56565b6119ec576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6201518002601855565b6119ff33611031565b611a39576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6019546001600160a01b031681565b60165481565b601e5462010000900460ff1681565b60125481565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b611abe33611031565b611af8576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b611b2233611031565b611b5c576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff1916909217909155825191825291517f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163929181900390910190a150565b60175481565b611bd933611d56565b611c18576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b0382163014801590611c3f57506015546001600160a01b03838116911614155b611c4857600080fd5b6001600160a01b0382166000908152600a60205260409020805460ff19168215801591909117909155611ce55760195460408051630a5b654b60e11b81526001600160a01b03858116600483015260006024830181905292519316926314b6ca969260448084019391929182900301818387803b158015611cc857600080fd5b505af1158015611cdc573d6000803e3d6000fd5b50505050611d43565b6019546001600160a01b03838116600081815260076020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b1580156118f257600080fd5b5050565b6014546001600160a01b031681565b6001600160a01b031660009081526001602052604090205460ff1690565b60008184841115611e035760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611dc8578181015183820152602001611db0565b50505050905090810190601f168015611df55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60065460009060ff1680611e5957506001600160a01b03841660009081526009602052604090205460ff1680611e5957506001600160a01b03831660009081526009602052604090205460ff165b611ea0576040805162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81a5cc8191a5cd8589b1959606a1b604482015290519081900360640190fd5b601e5460ff1615611ebd57611eb6848484612436565b9050610f5a565b601c5460ff168015611ed657506000611ed461190e565b115b15611f93576001600160a01b0384166000908152601b602052604090205460ff16158015611f1d57506001600160a01b0383166000908152601b602052604090205460ff16155b8015611f3757506015546001600160a01b03848116911614155b15611f93576000611f4784611655565b9050611f5161190e565b8382011115611f915760405162461bcd60e51b8152600401808060200182810382526036815260200180612b376036913960400191505060405180910390fd5b505b60165443036017556001600160a01b0384166000908152600c602052604090205460ff168015611fc65750601854601754105b156120025760405162461bcd60e51b8152600401808060200182810382526027815260200180612b6d6027913960400191505060405180910390fd5b6015546001600160a01b031633148015906120205750601e5460ff16155b80156120335750601e54610100900460ff165b80156120505750601f543060009081526007602052604090205410155b1561205d5761205d612505565b601e546040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03881660009081526007909152919091205460ff90921615916120b9918590611d74565b6001600160a01b03861660009081526007602090815260408083209390935560099052205460ff168061210457506001600160a01b03841660009081526009602052604090205460ff165b1561210d575060005b6015546001600160a01b0386811691161480159061213957506015546001600160a01b03858116911614155b15612142575060005b8281156121575761215486868661291f565b90505b6001600160a01b03851660009081526007602052604090205461217a9082612a09565b6001600160a01b038087166000908152600760209081526040808320949094559189168152600a909152205460ff1661221e576019546001600160a01b03878116600081815260076020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b15801561220b57600080fd5b505af192505050801561221c575060015b505b6001600160a01b0385166000908152600a602052604090205460ff166122af576019546001600160a01b03868116600081815260076020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b15801561229c57600080fd5b505af19250505080156122ad575060015b505b601954601a54604080516001624d3b8760e01b031981526004810192909252516001600160a01b039092169163ffb2c4799160248082019260009290919082900301818387803b15801561230257600080fd5b505af1925050508015612313575060015b50846001600160a01b0316866001600160a01b0316600080516020612b17833981519152836040518082815260200191505060405180910390a350600195945050505050565b6000610f5a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d74565b6000826123aa57506000610e13565b828202828482816123b757fe5b0414610f5a5760405162461bcd60e51b8152600401808060200182810382526021815260200180612af66021913960400191505060405180910390fd5b6000610f5a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a63565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600790915291822054612487918490611d74565b6001600160a01b0380861660009081526007602052604080822093909355908516815220546124b69083612a09565b6001600160a01b038085166000818152600760209081526040918290209490945580518681529051919392881692600080516020612b1783398151915292918290030190a35060019392505050565b601e805460ff1916600117905530600090815260076020526040812054601054600f549192916125409160029161192a91908290879061239b565b9050600061254e8383612359565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061258257fe5b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156125d657600080fd5b505afa1580156125ea573d6000803e3d6000fd5b505050506040513d602081101561260057600080fd5b505181518290600190811061261157fe5b60200260200101906001600160a01b031690816001600160a01b031681525050601460009054906101000a90046001600160a01b03166001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156126cb5781810151838201526020016126b3565b505050509050019650505050505050600060405180830381600087803b1580156126f457600080fd5b505af1158015612708573d6000803e3d6000fd5b5050600f544792506000915061272c906127239060026123f4565b60105490612359565b9050600061274e600261192a8461192a600f548861239b90919063ffffffff16565b9050600061276b8361192a600d548761239b90919063ffffffff16565b9050600061277d826110268786612359565b9050601960009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b1580156127cf57600080fd5b505af1935050505080156127e1575060015b50600e5415612826576013546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612824573d6000803e3d6000fd5b505b871561290a576014546002546040805163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991869160c48082019260609290919082900301818588803b1580156128a157600080fd5b505af11580156128b5573d6000803e3d6000fd5b50505050506040513d60608110156128cc57600080fd5b505060408051848152602081018a905281517f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506929181900390910190a15b5050601e805460ff1916905550505050505050565b60008061293d60115461192a6010548661239b90919063ffffffff16565b6001600160a01b0386166000908152600b602052604090205490915060ff168061297f57506001600160a01b0384166000908152600b602052604090205460ff165b1561299957601254612996906119248360646123f4565b90035b306000908152600760205260409020546129b39082612a09565b30600081815260076020908152604091829020939093558051848152905191926001600160a01b03891692600080516020612b178339815191529281900390910190a3612a008382612359565b95945050505050565b600082820183811015610f5a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008183612ab25760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611dc8578181015183820152602001611db0565b506000838581612abe57fe5b049594505050505056fe4d61782077616c6c65742070657263656e746167652063616e6e6f74206265206c6f776572207468616e203125536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef4d617857616c6c65743a205472616e7366657220616d6f756e74206578636565647320746865206d617857616c6c6574416d6f756e745665737465642077616c6c6574732063616e6e6f742073656e6420666f72203138302064617973a2646970667358221220ff09978fbc7bc37818a8857349057711a233964e1ac795fa9141ccdc9aa9afa364736f6c6343000706003360806040526ec097ce7bc90715b34b9f1000000000600a55610e10600b556b0813f3978f89409844000000600c5534801561003957600080fd5b50604051610c65380380610c658339818101604052602081101561005c57600080fd5b5051600180546001600160a01b039092166001600160a01b03199283161790556000805490911633179055610bcf806100966000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed14610254578063f0fc6bca14610269578063ffb2c4791461027e578063ffd49c84146102a8576100dd565b8063ce7c2ac2146101e6578063d0e30db014610237578063e2d2e2191461023f576100dd565b80632d48e896116100bb5780632d48e896146101775780633a98ef39146101a75780634fab0ae8146101bc578063997664d7146101d1576100dd565b806311ce023d146100e257806314b6ca961461010957806328fd319814610144575b600080fd5b3480156100ee57600080fd5b506100f76102bd565b60408051918252519081900360200190f35b34801561011557600080fd5b506101426004803603604081101561012c57600080fd5b506001600160a01b0381351690602001356102c3565b005b34801561015057600080fd5b506100f76004803603602081101561016757600080fd5b50356001600160a01b03166103e8565b34801561018357600080fd5b506101426004803603604081101561019a57600080fd5b5080359060200135610474565b3480156101b357600080fd5b506100f7610496565b3480156101c857600080fd5b506100f761049c565b3480156101dd57600080fd5b506100f76104a2565b3480156101f257600080fd5b506102196004803603602081101561020957600080fd5b50356001600160a01b03166104a8565b60408051938452602084019290925282820152519081900360600190f35b6101426104c9565b34801561024b57600080fd5b506100f761051c565b34801561026057600080fd5b506100f7610522565b34801561027557600080fd5b50610142610528565b34801561028a57600080fd5b50610142600480360360208110156102a157600080fd5b503561058d565b3480156102b457600080fd5b506100f7610672565b600a5481565b6000546001600160a01b031633146102da57600080fd5b6001600160a01b038216600090815260056020526040902054156103015761030182610678565b60008111801561032757506001600160a01b038216600090815260056020526040902054155b1561033a5761033582610795565b61036d565b8015801561035f57506001600160a01b03821660009081526005602052604090205415155b1561036d5761036d826107f6565b6001600160a01b03821660009081526005602052604090205460065461039e918391610398916108e3565b9061092e565b6006556001600160a01b03821660009081526005602052604090208190556103c581610988565b6001600160a01b0390921660009081526005602052604090206001019190915550565b6001600160a01b03811660009081526005602052604081205461040d5750600061046f565b6001600160a01b03821660009081526005602052604081205461042f90610988565b6001600160a01b0384166000908152600560205260409020600101549091508082116104605760009250505061046f565b61046a82826108e3565b925050505b919050565b6000546001600160a01b0316331461048b57600080fd5b600b91909155600c55565b60065481565b600c5481565b60075481565b60056020526000908152604090208054600182015460029092015490919083565b6000546001600160a01b031633146104e057600080fd5b6007546104ed903461092e565b600755600654600a546105179161050e9161050890346109a5565b906109fe565b6009549061092e565b600955565b60095481565b60085481565b61053133610a40565b610582576040805162461bcd60e51b815260206004820152601760248201527f546f6f20736f6f6e2e204e65656420746f207761697421000000000000000000604482015290519081900360640190fd5b61058b33610678565b565b6000546001600160a01b031633146105a457600080fd5b600254806105b2575061066f565b60008060005a90505b84821080156105c957508383105b1561066a5783600d54106105dd576000600d555b6106096002600d54815481106105ef57fe5b6000918252602090912001546001600160a01b0316610a40565b1561063a5761063a6002600d548154811061062057fe5b6000918252602090912001546001600160a01b0316610678565b61064f6106485a83906108e3565b839061092e565b91505a600d80546001908101909155939093019290506105bb565b505050505b50565b600b5481565b6001600160a01b03811660009081526005602052604090205461069a5761066f565b60006106a5826103e8565b90508015610791576008546106ba908261092e565b6008556040516000906001600160a01b0384169061753090849084818181858888f193505050503d806000811461070d576040519150601f19603f3d011682016040523d82523d6000602084013e610712565b606091505b505050506001600160a01b03821660009081526004602090815260408083204290556005909152812060020154610749908361092e565b6001600160a01b038416600090815260056020526040902060028101919091555461077390610988565b6001600160a01b038416600090815260056020526040902060010155505b5050565b600280546001600160a01b039092166000818152600360205260408120849055600184018355919091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180546001600160a01b0319169091179055565b60028054600019810190811061080857fe5b60009182526020808320909101546001600160a01b038481168452600390925260409092205460028054929093169291811061084057fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260039182905260408120546002805491939291600019810190811061088e57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205560028054806108be57fe5b600082815260209020810160001990810180546001600160a01b031916905501905550565b600061092583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610a7c565b90505b92915050565b600082820183811015610925576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000610928600a54610508600954856109a590919063ffffffff16565b6000826109b457506000610928565b828202828482816109c157fe5b04146109255760405162461bcd60e51b8152600401808060200182810382526021815260200180610b796021913960400191505060405180910390fd5b600061092583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610b13565b600b546001600160a01b03821660009081526004602052604081205490914291011080156109285750600c54610a75836103e8565b1192915050565b60008184841115610b0b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610ad0578181015183820152602001610ab8565b50505050905090810190601f168015610afd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183610b625760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610ad0578181015183820152602001610ab8565b506000838581610b6e57fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220a726e8724530d71e645a9c1c59f148431433d2ffde8ad3bea4944d43a59423f964736f6c63430007060033

Deployed Bytecode

0x60806040526004361061036f5760003560e01c8063760a2e8a116101c6578063af43396c116100f7578063dd62ed3e11610095578063f5e0b2711161006f578063f5e0b27114610cf2578063f708a64f14610d07578063f887ea4014610d42578063fe9fbb8014610d5757610376565b8063dd62ed3e14610c51578063f0b37c0414610c8c578063f2fde38b14610cbf57610376565b8063bad3ea6a116100d1578063bad3ea6a14610bfd578063bf56b37114610c12578063da00097d14610c27578063da391b7a14610c3c57610376565b8063af43396c14610b74578063b2061c5b14610ba0578063b6a5d7de14610bca57610376565b806398118cb411610164578063a9059cbb1161013e578063a9059cbb14610ac3578063a9f7864b14610afc578063aa4bde2814610b2c578063aa7cc1f114610b4157610376565b806398118cb414610a84578063a5f3d00314610a99578063a8aa1b3114610aae57610376565b80638a8c523c116101a05780638a8c523c14610a0a5780638ea5220f14610a1f578063929f136014610a3457806395d89b4114610a6f57610376565b8063760a2e8a1461097c57806382972f92146109af578063893d20e8146109d957610376565b8063313ce567116102a0578063479f66d81161023e57806364d42da31161021857806364d42da3146108a0578063658d4b7f146108db5780636dd3d39f1461091657806370a082311461094957610376565b8063479f66d81461082e5780634a74bb0214610858578063571ac8b01461086d57610376565b80633dab52691161027a5780633dab5269146107175780633f4218e0146107495780634355855a1461077c57806346a19c6d146107af57610376565b8063313ce5671461060857806336c41d671461063357806339234e391461070257610376565b80631b0f53271161030d57806327c4ca6d116102e757806327c4ca6d1461055a5780632b112e49146105845780632f54bf6e1461059957806330d2361e146105cc57610376565b80631b0f5327146104cd5780631f53ac02146104e257806323b872dd1461051757610376565b806309c58fcd1161034957806309c58fcd1461047957806313114a9d1461048e578063180b0d7e146104a357806318160ddd146104b857610376565b80630445b6671461037b57806306fdde03146103a2578063095ea7b31461042c57610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d8a565b60408051918252519081900360200190f35b3480156103ae57600080fd5b506103b7610d90565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103f15781810151838201526020016103d9565b50505050905090810190601f16801561041e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561043857600080fd5b506104656004803603604081101561044f57600080fd5b506001600160a01b038135169060200135610db2565b604080519115158252519081900360200190f35b34801561048557600080fd5b50610465610e19565b34801561049a57600080fd5b50610390610e22565b3480156104af57600080fd5b50610390610e28565b3480156104c457600080fd5b50610390610e2e565b3480156104d957600080fd5b50610390610e34565b3480156104ee57600080fd5b506105156004803603602081101561050557600080fd5b50356001600160a01b0316610e3a565b005b34801561052357600080fd5b506104656004803603606081101561053a57600080fd5b506001600160a01b03813581169160208101359091169060400135610e9f565b34801561056657600080fd5b506105156004803603602081101561057d57600080fd5b5035610f61565b34801561059057600080fd5b50610390610fe8565b3480156105a557600080fd5b50610465600480360360208110156105bc57600080fd5b50356001600160a01b0316611031565b3480156105d857600080fd5b50610515600480360360808110156105ef57600080fd5b5080359060208101359060408101359060600135611045565b34801561061457600080fd5b5061061d6110ee565b6040805160ff9092168252519081900360200190f35b34801561063f57600080fd5b506105156004803603604081101561065657600080fd5b81019060208101813564010000000081111561067157600080fd5b82018360208201111561068357600080fd5b803590602001918460208302840111640100000000831117156106a557600080fd5b9193909290916020810190356401000000008111156106c357600080fd5b8201836020820111156106d557600080fd5b803590602001918460208302840111640100000000831117156106f757600080fd5b5090925090506110f3565b34801561070e57600080fd5b5061039061133c565b34801561072357600080fd5b506105156004803603604081101561073a57600080fd5b50803515159060200135611342565b34801561075557600080fd5b506104656004803603602081101561076c57600080fd5b50356001600160a01b03166113a8565b34801561078857600080fd5b506104656004803603602081101561079f57600080fd5b50356001600160a01b03166113bd565b3480156107bb57600080fd5b50610515600480360360408110156107d257600080fd5b8101906020810181356401000000008111156107ed57600080fd5b8201836020820111156107ff57600080fd5b8035906020019184602083028401116401000000008311171561082157600080fd5b91935091503515156113d2565b34801561083a57600080fd5b506105156004803603602081101561085157600080fd5b503561146a565b34801561086457600080fd5b506104656114c6565b34801561087957600080fd5b506104656004803603602081101561089057600080fd5b50356001600160a01b03166114d4565b3480156108ac57600080fd5b50610515600480360360408110156108c357600080fd5b506001600160a01b03813516906020013515156114e2565b3480156108e757600080fd5b50610515600480360360408110156108fe57600080fd5b506001600160a01b03813516906020013515156115c4565b34801561092257600080fd5b506104656004803603602081101561093957600080fd5b50356001600160a01b0316611637565b34801561095557600080fd5b506103906004803603602081101561096c57600080fd5b50356001600160a01b0316611655565b34801561098857600080fd5b506104656004803603602081101561099f57600080fd5b50356001600160a01b0316611670565b3480156109bb57600080fd5b50610515600480360360208110156109d257600080fd5b5035611685565b3480156109e557600080fd5b506109ee6116da565b604080516001600160a01b039092168252519081900360200190f35b348015610a1657600080fd5b506105156116e9565b348015610a2b57600080fd5b506109ee611793565b348015610a4057600080fd5b5061051560048036036040811015610a5757600080fd5b506001600160a01b03813516906020013515156117a2565b348015610a7b57600080fd5b506103b7611810565b348015610a9057600080fd5b5061039061182e565b348015610aa557600080fd5b50610390611834565b348015610aba57600080fd5b506109ee61183a565b348015610acf57600080fd5b5061046560048036036040811015610ae657600080fd5b506001600160a01b038135169060200135611849565b348015610b0857600080fd5b5061051560048036036040811015610b1f57600080fd5b5080359060200135611856565b348015610b3857600080fd5b5061039061190e565b348015610b4d57600080fd5b5061046560048036036020811015610b6457600080fd5b50356001600160a01b0316611930565b348015610b8057600080fd5b5061051560048036036020811015610b9757600080fd5b5035151561194e565b348015610bac57600080fd5b5061051560048036036020811015610bc357600080fd5b50356119a4565b348015610bd657600080fd5b5061051560048036036020811015610bed57600080fd5b50356001600160a01b03166119f6565b348015610c0957600080fd5b506109ee611a60565b348015610c1e57600080fd5b50610390611a6f565b348015610c3357600080fd5b50610465611a75565b348015610c4857600080fd5b50610390611a84565b348015610c5d57600080fd5b5061039060048036036040811015610c7457600080fd5b506001600160a01b0381358116916020013516611a8a565b348015610c9857600080fd5b5061051560048036036020811015610caf57600080fd5b50356001600160a01b0316611ab5565b348015610ccb57600080fd5b5061051560048036036020811015610ce257600080fd5b50356001600160a01b0316611b19565b348015610cfe57600080fd5b50610390611bca565b348015610d1357600080fd5b5061051560048036036040811015610d2a57600080fd5b506001600160a01b0381351690602001351515611bd0565b348015610d4e57600080fd5b506109ee611d47565b348015610d6357600080fd5b5061046560048036036020811015610d7a57600080fd5b50356001600160a01b0316611d56565b601f5481565b60408051808201909152600881526723a2292a27a5a2a760c11b602082015290565b3360008181526008602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b60065460ff1681565b60105481565b60115481565b60055490565b600d5481565b610e4333611031565b610e7d576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601380546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610f4c576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600882528381203382529091529190912054610f27918490611d74565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610f57848484611e0b565b90505b9392505050565b610f6a33611031565b610fa4576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60098111610fe35760405162461bcd60e51b815260040180806020018281038252602d815260200180612ac9602d913960400191505060405180910390fd5b601d55565b60035460009061102c90611004906001600160a01b0316611655565b6002546110269061101d906001600160a01b0316611655565b60055490612359565b90612359565b905090565b6000546001600160a01b0390811691161490565b61104e33611031565b611088576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600d849055600f839055600e829055828401820160105560118190556004810460105411156110e8576040805162461bcd60e51b81526020600482015260076024820152666d61782032352560c81b604482015290519081900360640190fd5b50505050565b601290565b6110fc33611031565b611136576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60005b8381101561133557670de0b6b3a764000083838381811061115657fe5b336000908152600760209081526040909120805492909102939093013593909302909203905550670de0b6b3a764000083838381811061119257fe5b9050602002013502600760008787858181106111aa57fe5b602090810292909201356001600160a01b031683525081019190915260400160002080549190910190558484828181106111e057fe5b905060200201356001600160a01b03166001600160a01b0316336001600160a01b0316600080516020612b17833981519152601260ff16600a0a86868681811061122657fe5b90506020020135026040518082815260200191505060405180910390a36019546001600160a01b03166314b6ca9686868481811061126057fe5b905060200201356001600160a01b0316601260ff16600a0a86868681811061128457fe5b90506020020135026040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156112d257600080fd5b505af11580156112e6573d6000803e3d6000fd5b505050506001600c60008787858181106112fc57fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff1916911515919091179055600101611139565b5050505050565b60185481565b61134b33611d56565b61138a576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601e80549215156101000261ff001990931692909217909155601f55565b60096020526000908152604090205460ff1681565b600a6020526000908152604090205460ff1681565b6113db33611031565b611415576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60005b828110156110e85781600b600086868581811061143157fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff1916911515919091179055600101611418565b61147333611d56565b6114b2576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b620b71b081106114c157600080fd5b601a55565b601e54610100900460ff1681565b6000610e1382600019610db2565b6114eb33611031565b611525576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b0382166000908152600b602052604090205460ff1615158115151415611599576040805162461bcd60e51b815260206004820181905260248201527f4163636f756e7420616c72656164792068617320726564756365642066656573604482015290519081900360640190fd5b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6115cd33611d56565b61160c576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6001600160a01b03166000908152601b602052604090205460ff1690565b6001600160a01b031660009081526007602052604090205490565b600c6020526000908152604090205460ff1681565b61168e33611031565b6116c8576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b606481106116d557600080fd5b601255565b6000546001600160a01b031690565b6116f233611031565b61172c576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60065460ff1615611784576040805162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c6564000000000000604482015290519081900360640190fd5b6006805460ff19166001179055565b6013546001600160a01b031681565b6117ab33611031565b6117e5576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03919091166000908152601b60205260409020805460ff1916911515919091179055565b60408051808201909152600481526311d1149560e21b602082015290565b600f5481565b600e5481565b6015546001600160a01b031681565b6000610f5a338484611e0b565b61185f33611d56565b61189e576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601954604080516316a4744b60e11b8152600481018590526024810184905290516001600160a01b0390921691632d48e8969160448082019260009290919082900301818387803b1580156118f257600080fd5b505af1158015611906573d6000803e3d6000fd5b505050505050565b600061102c6103e861192a601d54611924610fe8565b9061239b565b906123f4565b6001600160a01b03166000908152600b602052604090205460ff1690565b61195733611031565b611991576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601c805460ff1916911515919091179055565b6119ad33611d56565b6119ec576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6201518002601855565b6119ff33611031565b611a39576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6019546001600160a01b031681565b60165481565b601e5462010000900460ff1681565b60125481565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b611abe33611031565b611af8576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b611b2233611031565b611b5c576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff1916909217909155825191825291517f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163929181900390910190a150565b60175481565b611bd933611d56565b611c18576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b0382163014801590611c3f57506015546001600160a01b03838116911614155b611c4857600080fd5b6001600160a01b0382166000908152600a60205260409020805460ff19168215801591909117909155611ce55760195460408051630a5b654b60e11b81526001600160a01b03858116600483015260006024830181905292519316926314b6ca969260448084019391929182900301818387803b158015611cc857600080fd5b505af1158015611cdc573d6000803e3d6000fd5b50505050611d43565b6019546001600160a01b03838116600081815260076020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b1580156118f257600080fd5b5050565b6014546001600160a01b031681565b6001600160a01b031660009081526001602052604090205460ff1690565b60008184841115611e035760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611dc8578181015183820152602001611db0565b50505050905090810190601f168015611df55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60065460009060ff1680611e5957506001600160a01b03841660009081526009602052604090205460ff1680611e5957506001600160a01b03831660009081526009602052604090205460ff165b611ea0576040805162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81a5cc8191a5cd8589b1959606a1b604482015290519081900360640190fd5b601e5460ff1615611ebd57611eb6848484612436565b9050610f5a565b601c5460ff168015611ed657506000611ed461190e565b115b15611f93576001600160a01b0384166000908152601b602052604090205460ff16158015611f1d57506001600160a01b0383166000908152601b602052604090205460ff16155b8015611f3757506015546001600160a01b03848116911614155b15611f93576000611f4784611655565b9050611f5161190e565b8382011115611f915760405162461bcd60e51b8152600401808060200182810382526036815260200180612b376036913960400191505060405180910390fd5b505b60165443036017556001600160a01b0384166000908152600c602052604090205460ff168015611fc65750601854601754105b156120025760405162461bcd60e51b8152600401808060200182810382526027815260200180612b6d6027913960400191505060405180910390fd5b6015546001600160a01b031633148015906120205750601e5460ff16155b80156120335750601e54610100900460ff165b80156120505750601f543060009081526007602052604090205410155b1561205d5761205d612505565b601e546040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03881660009081526007909152919091205460ff90921615916120b9918590611d74565b6001600160a01b03861660009081526007602090815260408083209390935560099052205460ff168061210457506001600160a01b03841660009081526009602052604090205460ff165b1561210d575060005b6015546001600160a01b0386811691161480159061213957506015546001600160a01b03858116911614155b15612142575060005b8281156121575761215486868661291f565b90505b6001600160a01b03851660009081526007602052604090205461217a9082612a09565b6001600160a01b038087166000908152600760209081526040808320949094559189168152600a909152205460ff1661221e576019546001600160a01b03878116600081815260076020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b15801561220b57600080fd5b505af192505050801561221c575060015b505b6001600160a01b0385166000908152600a602052604090205460ff166122af576019546001600160a01b03868116600081815260076020526040808220548151630a5b654b60e11b8152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b15801561229c57600080fd5b505af19250505080156122ad575060015b505b601954601a54604080516001624d3b8760e01b031981526004810192909252516001600160a01b039092169163ffb2c4799160248082019260009290919082900301818387803b15801561230257600080fd5b505af1925050508015612313575060015b50846001600160a01b0316866001600160a01b0316600080516020612b17833981519152836040518082815260200191505060405180910390a350600195945050505050565b6000610f5a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d74565b6000826123aa57506000610e13565b828202828482816123b757fe5b0414610f5a5760405162461bcd60e51b8152600401808060200182810382526021815260200180612af66021913960400191505060405180910390fd5b6000610f5a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a63565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600790915291822054612487918490611d74565b6001600160a01b0380861660009081526007602052604080822093909355908516815220546124b69083612a09565b6001600160a01b038085166000818152600760209081526040918290209490945580518681529051919392881692600080516020612b1783398151915292918290030190a35060019392505050565b601e805460ff1916600117905530600090815260076020526040812054601054600f549192916125409160029161192a91908290879061239b565b9050600061254e8383612359565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061258257fe5b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156125d657600080fd5b505afa1580156125ea573d6000803e3d6000fd5b505050506040513d602081101561260057600080fd5b505181518290600190811061261157fe5b60200260200101906001600160a01b031690816001600160a01b031681525050601460009054906101000a90046001600160a01b03166001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156126cb5781810151838201526020016126b3565b505050509050019650505050505050600060405180830381600087803b1580156126f457600080fd5b505af1158015612708573d6000803e3d6000fd5b5050600f544792506000915061272c906127239060026123f4565b60105490612359565b9050600061274e600261192a8461192a600f548861239b90919063ffffffff16565b9050600061276b8361192a600d548761239b90919063ffffffff16565b9050600061277d826110268786612359565b9050601960009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b1580156127cf57600080fd5b505af1935050505080156127e1575060015b50600e5415612826576013546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612824573d6000803e3d6000fd5b505b871561290a576014546002546040805163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991869160c48082019260609290919082900301818588803b1580156128a157600080fd5b505af11580156128b5573d6000803e3d6000fd5b50505050506040513d60608110156128cc57600080fd5b505060408051848152602081018a905281517f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506929181900390910190a15b5050601e805460ff1916905550505050505050565b60008061293d60115461192a6010548661239b90919063ffffffff16565b6001600160a01b0386166000908152600b602052604090205490915060ff168061297f57506001600160a01b0384166000908152600b602052604090205460ff165b1561299957601254612996906119248360646123f4565b90035b306000908152600760205260409020546129b39082612a09565b30600081815260076020908152604091829020939093558051848152905191926001600160a01b03891692600080516020612b178339815191529281900390910190a3612a008382612359565b95945050505050565b600082820183811015610f5a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008183612ab25760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611dc8578181015183820152602001611db0565b506000838581612abe57fe5b049594505050505056fe4d61782077616c6c65742070657263656e746167652063616e6e6f74206265206c6f776572207468616e203125536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef4d617857616c6c65743a205472616e7366657220616d6f756e74206578636565647320746865206d617857616c6c6574416d6f756e745665737465642077616c6c6574732063616e6e6f742073656e6420666f72203138302064617973a2646970667358221220ff09978fbc7bc37818a8857349057711a233964e1ac795fa9141ccdc9aa9afa364736f6c63430007060033

Deployed ByteCode Sourcemap

10636:13758:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12434:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;13650:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14494:216;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14494:216:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;11123:36;;;;;;;;;;;;;:::i;11619:76::-;;;;;;;;;;;;;:::i;11702:36::-;;;;;;;;;;;;;:::i;13912:88::-;;;;;;;;;;;;;:::i;11494:33::-;;;;;;;;;;;;;:::i;16831:101::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16831:101:0;-1:-1:-1;;;;;16831:101:0;;:::i;:::-;;19161:372;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;19161:372:0;;;;;;;;;;;;;;;;;:::i;17970:194::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17970:194:0;;:::i;14092:142::-;;;;;;;;;;;;;:::i;10006:103::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10006:103:0;-1:-1:-1;;;;;10006:103:0;;:::i;15811:467::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15811:467:0;;;;;;;;;;;;;;;;;:::i;13826:80::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16284:539;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16284:539:0;;-1:-1:-1;16284:539:0;-1:-1:-1;16284:539:0;:::i;11995:34::-;;;;;;;;;;;;;:::i;18430:200::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18430:200:0;;;;;;;;;:::i;11284:44::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11284:44:0;-1:-1:-1;;;;;11284:44:0;;:::i;11335:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11335:49:0;-1:-1:-1;;;;;11335:49:0;;:::i;17160:225::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17160:225:0;-1:-1:-1;17160:225:0;;;;:::i;18846:139::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18846:139:0;;:::i;12333:40::-;;;;;;;;;;;;;:::i;14718:116::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14718:116:0;-1:-1:-1;;;;;14718:116:0;;:::i;16940:212::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16940:212:0;;;;;;;;;;:::i;15302:120::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15302:120:0;;;;;;;;;;:::i;17685:135::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17685:135:0;-1:-1:-1;;;;;17685:135:0;;:::i;14242:105::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14242:105:0;-1:-1:-1;;;;;14242:105:0;;:::i;11444:41::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11444:41:0;-1:-1:-1;;;;;11444:41:0;;:::i;17393:157::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17393:157:0;;:::i;14006:78::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;14006:78:0;;;;;;;;;;;;;;15019:153;;;;;;;;;;;;;:::i;11793:69::-;;;;;;;;;;;;;:::i;18172:145::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18172:145:0;;;;;;;;;;:::i;13736:84::-;;;;;;;;;;;;;:::i;11579:33::-;;;;;;;;;;;;;:::i;11534:37::-;;;;;;;;;;;;;:::i;11902:19::-;;;;;;;;;;;;;:::i;18997:156::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18997:156:0;;;;;;;;:::i;18638:200::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18638:200:0;;;;;;;:::i;17828:134::-;;;;;;;;;;;;;:::i;17558:119::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17558:119:0;-1:-1:-1;;;;;17558:119:0;;:::i;18325:97::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18325:97:0;;;;:::i;15178:112::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15178:112:0;;:::i;9679:94::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9679:94:0;-1:-1:-1;;;;;9679:94:0;;:::i;12038:46::-;;;;;;;;;;;;;:::i;11928:25::-;;;;;;;;;;;;;:::i;12380:45::-;;;;;;;;;;;;;:::i;11745:39::-;;;;;;;;;;;;;:::i;14353:133::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14353:133:0;;;;;;;;;;:::i;9849:97::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9849:97:0;-1:-1:-1;;;;;9849:97:0;;:::i;10406:173::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10406:173:0;-1:-1:-1;;;;;10406:173:0;;:::i;11960:31::-;;;;;;;;;;;;;:::i;15430:373::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15430:373:0;;;;;;;;;;:::i;11871:24::-;;;;;;;;;;;;;:::i;10180:107::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10180:107:0;-1:-1:-1;;;;;10180:107:0;;:::i;12434:50::-;;;;:::o;13650:80::-;13722:5;;;;;;;;;;;;-1:-1:-1;;;13722:5:0;;;;13650:80;:::o;14494:216::-;14598:10;14569:4;14586:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;14586:32:0;;;;;;;;;;;:41;;;14643:37;;;;;;;14569:4;;14586:32;;14598:10;;14643:37;;;;;;;;-1:-1:-1;14698:4:0;14494:216;;;;;:::o;11123:36::-;;;;;;:::o;11619:76::-;;;;:::o;11702:36::-;;;;:::o;13912:88::-;13985:12;;13912:88;:::o;11494:33::-;;;;:::o;16831:101::-;9395:19;9403:10;9395:7;:19::i;:::-;9387:38;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;;;;16906:9:::1;:18:::0;;-1:-1:-1;;;;;;16906:18:0::1;-1:-1:-1::0;;;;;16906:18:0;;;::::1;::::0;;;::::1;::::0;;16831:101::o;19161:372::-;-1:-1:-1;;;;;19291:19:0;;19261:4;19291:19;;;:11;:19;;;;;;;;19311:10;19291:31;;;;;;;;-1:-1:-1;;19291:46:0;19288:180;;19387:69;;;;;;;;;;;-1:-1:-1;;;19387:69:0;;;;;;;;-1:-1:-1;;;;;19387:19:0;;-1:-1:-1;19387:19:0;;;:11;:19;;;;;19407:10;19387:31;;;;;;;;;;:69;;19423:6;;19387:35;:69::i;:::-;-1:-1:-1;;;;;19353:19:0;;;;;;:11;:19;;;;;;;;19373:10;19353:31;;;;;;;:103;19288:180;19485:40;19499:6;19507:9;19518:6;19485:13;:40::i;:::-;19478:47;;19161:372;;;;;;:::o;17970:194::-;9395:19;9403:10;9395:7;:19::i;:::-;9387:38;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;;;;18074:1:::1;18067:4;:8;18059:66;;;;-1:-1:-1::0;;;18059:66:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18136:13;:20:::0;17970:194::o;14092:142::-;14220:4;;14145:7;;14172:54;;14210:15;;-1:-1:-1;;;;;14220:4:0;14210:9;:15::i;:::-;14199:4;;14172:33;;14189:15;;-1:-1:-1;;;;;14199:4:0;14189:9;:15::i;:::-;14172:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;14165:61;;14092:142;:::o;10006:103::-;10061:4;10096:5;-1:-1:-1;;;;;10096:5:0;;;10085:16;;;;10006:103::o;15811:467::-;9395:19;9403:10;9395:7;:19::i;:::-;9387:38;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;;;;15961:13:::1;:30:::0;;;16006:12:::1;:28:::0;;;16049:14:::1;:32:::0;;;16108:30;;::::1;:48:::0;::::1;16096:9;:60:::0;16171:14:::1;:32:::0;;;16257:1:::1;16188:15:::0;16239:19:::1;16226:9;;:32;;16218:52;;;::::0;;-1:-1:-1;;;16218:52:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;16218:52:0;;;;;;;;;;;;;::::1;;15811:467:::0;;;;:::o;13826:80::-;10825:2;13826:80;:::o;16284:539::-;9395:19;9403:10;9395:7;:19::i;:::-;9387:38;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;;;;16419:9:::1;16415:401;16434:19:::0;;::::1;16415:401;;;16511:15:::0;16499:6;;16506:1;16499:9;;::::1;;;;;16485:10;16475:21;::::0;;;:9:::1;16499;16475:21:::0;;;;;;;:51;;16499:9;;;::::1;::::0;;;::::1;;:27:::0;;;::::1;16475:51:::0;;::::1;::::0;;-1:-1:-1;16579:15:0;16567:6;;16574:1;16567:9;;::::1;;;;;;;;;;;:27;16541:9;:22;16551:8;;16560:1;16551:11;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;16551:11:0::1;16541:22:::0;;-1:-1:-1;16541:22:0;::::1;::::0;;;;;;-1:-1:-1;16541:22:0;:53;;;;;::::1;::::0;;16635:8;;16644:1;16635:11;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;16635:11:0::1;-1:-1:-1::0;;;;;16614:62:0::1;16623:10;-1:-1:-1::0;;;;;16614:62:0::1;-1:-1:-1::0;;;;;;;;;;;10825:2:0::1;16660:15;;:2;:15;16648:6;;16655:1;16648:9;;;;;;;;;;;;;:27;16614:62;;;;;;;;;;;;;;;;;;16691:19;::::0;-1:-1:-1;;;;;16691:19:0::1;:28;16720:8:::0;;16729:1;16720:11;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;16720:11:0::1;10825:2;16745:15;;:2;:15;16733:6;;16740:1;16733:9;;;;;;;;;;;;;:27;16691:70;;;;;;;;;;;;;-1:-1:-1::0;;;;;16691:70:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16800:4;16776:8;:21;16785:8;;16794:1;16785:11;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;16785:11:0::1;16776:21:::0;;-1:-1:-1;16776:21:0;::::1;::::0;;;;;;-1:-1:-1;16776:21:0;:28;;-1:-1:-1;;16776:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;16455:3:0::1;16415:401;;;;16284:539:::0;;;;:::o;11995:34::-;;;;:::o;18430:200::-;9564:24;9577:10;9564:12;:24::i;:::-;9556:48;;;;;-1:-1:-1;;;9556:48:0;;;;;;;;;;;;-1:-1:-1;;;9556:48:0;;;;;;;;;;;;;;;18540:21:::1;:39:::0;;;::::1;;;;-1:-1:-1::0;;18540:39:0;;::::1;::::0;;;::::1;::::0;;;18590:13:::1;:32:::0;18430:200::o;11284:44::-;;;;;;;;;;;;;;;:::o;11335:49::-;;;;;;;;;;;;;;;:::o;17160:225::-;9395:19;9403:10;9395:7;:19::i;:::-;9387:38;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;;;;17273:9:::1;17269:109;17288:19:::0;;::::1;17269:109;;;17360:6;17329:15;:28;17345:8;;17354:1;17345:11;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;17345:11:0::1;17329:28:::0;;-1:-1:-1;17329:28:0;::::1;::::0;;;;;;-1:-1:-1;17329:28:0;:37;;-1:-1:-1;;17329:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;17309:3:0::1;17269:109;;18846:139:::0;9564:24;9577:10;9564:12;:24::i;:::-;9556:48;;;;;-1:-1:-1;;;9556:48:0;;;;;;;;;;;;-1:-1:-1;;;9556:48:0;;;;;;;;;;;;;;;18939:6:::1;18933:3;:12;18925:21;;;::::0;::::1;;18957:14;:20:::0;18846:139::o;12333:40::-;;;;;;;;;:::o;14718:116::-;14773:4;14797:29;14805:7;-1:-1:-1;;14797:7:0;:29::i;16940:212::-;9395:19;9403:10;9395:7;:19::i;:::-;9387:38;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;17029:24:0;::::1;;::::0;;;:15:::1;:24;::::0;;;;;::::1;;:34;;::::0;::::1;;;;17021:79;;;::::0;;-1:-1:-1;;;17021:79:0;;::::1;;::::0;::::1;::::0;;;;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;17111:24:0;;;::::1;;::::0;;;:15:::1;:24;::::0;;;;:33;;-1:-1:-1;;17111:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16940:212::o;15302:120::-;9564:24;9577:10;9564:12;:24::i;:::-;9556:48;;;;;-1:-1:-1;;;9556:48:0;;;;;;;;;;;;-1:-1:-1;;;9556:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;15386:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;15386:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15302:120::o;17685:135::-;-1:-1:-1;;;;;17779:33:0;17755:4;17779:33;;;:24;:33;;;;;;;;;17685:135::o;14242:105::-;-1:-1:-1;;;;;14326:18:0;14308:7;14326:18;;;:9;:18;;;;;;;14242:105::o;11444:41::-;;;;;;;;;;;;;;;:::o;17393:157::-;9395:19;9403:10;9395:7;:19::i;:::-;9387:38;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;;;;17494:3:::1;17481:10;:16;17473:25;;;::::0;::::1;;17509:20;:33:::0;17393:157::o;14006:78::-;14058:7;14076:5;-1:-1:-1;;;;;14076:5:0;14006:78;:::o;15019:153::-;9395:19;9403:10;9395:7;:19::i;:::-;9387:38;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;;;;15083:16:::1;::::0;::::1;;15082:17;15074:56;;;::::0;;-1:-1:-1;;;15074:56:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;15141:16;:23:::0;;-1:-1:-1;;15141:23:0::1;15160:4;15141:23;::::0;;15019:153::o;11793:69::-;;;-1:-1:-1;;;;;11793:69:0;;:::o;18172:145::-;9395:19;9403:10;9395:7;:19::i;:::-;9387:38;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;18266:33:0;;;::::1;;::::0;;;:24:::1;:33;::::0;;;;:43;;-1:-1:-1;;18266:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18172:145::o;13736:84::-;13810:7;;;;;;;;;;;;-1:-1:-1;;;13810:7:0;;;;13736:84;:::o;11579:33::-;;;;:::o;11534:37::-;;;;:::o;11902:19::-;;;-1:-1:-1;;;;;11902:19:0;;:::o;18997:156::-;19077:4;19101:44;19115:10;19127:9;19138:6;19101:13;:44::i;18638:200::-;9564:24;9577:10;9564:12;:24::i;:::-;9556:48;;;;;-1:-1:-1;;;9556:48:0;;;;;;;;;;;;-1:-1:-1;;;9556:48:0;;;;;;;;;;;;;;;18754:19:::1;::::0;:76:::1;::::0;;-1:-1:-1;;;18754:76:0;;::::1;::::0;::::1;::::0;;;;;;;;;;;-1:-1:-1;;;;;18754:19:0;;::::1;::::0;:43:::1;::::0;:76;;;;;:19:::1;::::0;:76;;;;;;;;:19;;:76;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18638:200:::0;;:::o;17828:134::-;17876:7;17903:51;17949:4;17903:41;17930:13;;17903:22;:20;:22::i;:::-;:26;;:41::i;:::-;:45;;:51::i;17558:119::-;-1:-1:-1;;;;;17645:24:0;17621:4;17645:24;;;:15;:24;;;;;;;;;17558:119::o;18325:97::-;9395:19;9403:10;9395:7;:19::i;:::-;9387:38;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;;;;18392:15:::1;:22:::0;;-1:-1:-1;;18392:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18325:97::o;15178:112::-;9564:24;9577:10;9564:12;:24::i;:::-;9556:48;;;;;-1:-1:-1;;;9556:48:0;;;;;;;;;;;;-1:-1:-1;;;9556:48:0;;;;;;;;;;;;;;;15279:6:::1;15265:20;15254:8;:31:::0;15178:112::o;9679:94::-;9395:19;9403:10;9395:7;:19::i;:::-;9387:38;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;9739:19:0::1;;::::0;;;9761:4:::1;9739:19;::::0;;;;;;;:26;;-1:-1:-1;;9739:26:0::1;::::0;;::::1;::::0;;9679:94::o;12038:46::-;;;-1:-1:-1;;;;;12038:46:0;;:::o;11928:25::-;;;;:::o;12380:45::-;;;;;;;;;:::o;11745:39::-;;;;:::o;14353:133::-;-1:-1:-1;;;;;14455:19:0;;;14437:7;14455:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;14353:133::o;9849:97::-;9395:19;9403:10;9395:7;:19::i;:::-;9387:38;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;9911:19:0::1;9933:5;9911:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;9911:27:0::1;::::0;;9849:97::o;10406:173::-;9395:19;9403:10;9395:7;:19::i;:::-;9387:38;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;-1:-1:-1;;;9387:38:0;;;;;;;;;;;;;;;10482:5:::1;:11:::0;;-1:-1:-1;;;;;;10482:11:0::1;-1:-1:-1::0;;;;;10482:11:0;::::1;::::0;;::::1;::::0;;10504:19;;;-1:-1:-1;10504:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;10504:26:0::1;::::0;;::::1;::::0;;;10546:25;;;;;;;::::1;::::0;;;;;;;;;::::1;10406:173:::0;:::o;11960:31::-;;;;:::o;15430:373::-;9564:24;9577:10;9564:12;:24::i;:::-;9556:48;;;;;-1:-1:-1;;;9556:48:0;;;;;;;;;;;;-1:-1:-1;;;9556:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;15527:23:0;::::1;15545:4;15527:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;15564:4:0::1;::::0;-1:-1:-1;;;;;15554:14:0;;::::1;15564:4:::0;::::1;15554:14;;15527:41;15519:50;;;::::0;::::1;;-1:-1:-1::0;;;;;15580:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;15580:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;15634:162:::1;;15659:19;::::0;:39:::1;::::0;;-1:-1:-1;;;15659:39:0;;-1:-1:-1;;;;;15659:39:0;;::::1;;::::0;::::1;::::0;:19:::1;:39:::0;;;;;;;;:19;::::1;::::0;:28:::1;::::0;:39;;;;;:19;;:39;;;;;;:19;;:39;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15634:162;;;15729:19;::::0;-1:-1:-1;;;;;15766:17:0;;::::1;15729:19;15766:17:::0;;;:9:::1;:17;::::0;;;;;;15729:55;;-1:-1:-1;;;15729:55:0;;::::1;::::0;::::1;::::0;;;;;;;;;:19;;;::::1;::::0;:28:::1;::::0;:55;;;;;;;;;;:19;;:55;::::1;;::::0;::::1;;;;::::0;::::1;15634:162;15430:373:::0;;:::o;11871:24::-;;;-1:-1:-1;;;;;11871:24:0;;:::o;10180:107::-;-1:-1:-1;;;;;10260:19:0;10236:4;10260:19;;;:14;:19;;;;;;;;;10180:107::o;425:190::-;511:7;547:12;539:6;;;;531:29;;;;-1:-1:-1;;;531:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;583:5:0;;;425:190::o;19541:2191::-;19658:16;;19633:4;;19658:16;;;:67;;-1:-1:-1;;;;;;19679:19:0;;;;;;:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;19702:22:0;;;;;;:11;:22;;;;;;;;19679:45;19650:99;;;;;-1:-1:-1;;;19650:99:0;;;;;;;;;;;;-1:-1:-1;;;19650:99:0;;;;;;;;;;;;;;;19763:16;;;;19760:73;;;19789:41;19804:6;19812:9;19823:6;19789:14;:41::i;:::-;19782:48;;;;19760:73;19849:15;;;;:40;;;;;19888:1;19868:17;:15;:17::i;:::-;:21;19849:40;19845:448;;;-1:-1:-1;;;;;19928:32:0;;;;;;:24;:32;;;;;;;;:41;;;:106;;-1:-1:-1;;;;;;19990:35:0;;;;;;:24;:35;;;;;;;;:44;19928:106;:144;;;;-1:-1:-1;20068:4:0;;-1:-1:-1;;;;;20055:17:0;;;20068:4;;20055:17;;19928:144;19906:376;;;20107:12;20123:20;20133:9;20123;:20::i;:::-;20107:36;;20190:17;:15;:17::i;:::-;20180:6;20170:7;:16;:37;;20162:104;;;;-1:-1:-1;;;20162:104:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19906:376;;20333:10;;20318:12;:25;20299:16;:44;-1:-1:-1;;;;;20351:16:0;;-1:-1:-1;20351:16:0;;;:8;:16;;;;;;;;:47;;;;;20390:8;;20371:16;;:27;20351:47;20348:135;;;20418:49;;-1:-1:-1;;;20418:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20348:135;20512:4;;-1:-1:-1;;;;;20512:4:0;20498:10;:18;;;;:39;;-1:-1:-1;20521:16:0;;;;20520:17;20498:39;:64;;;;-1:-1:-1;20541:21:0;;;;;;;20498:64;:109;;;;-1:-1:-1;20594:13:0;;20584:4;20566:24;;;;:9;:24;;;;;;:41;;20498:109;20495:136;;;20615:10;:8;:10::i;:::-;20659:16;;20735:53;;;;;;;;;;;-1:-1:-1;;;20735:53:0;;;;;;;;-1:-1:-1;;;;;20735:17:0;;20643:12;20735:17;;;:9;:17;;;;;;;;20659:16;;;;20658:17;;20735:53;;20757:6;;20735:21;:53::i;:::-;-1:-1:-1;;;;;20715:17:0;;;;;;:9;:17;;;;;;;;:73;;;;20804:11;:19;;;;;;;:45;;-1:-1:-1;;;;;;20827:22:0;;;;;;:11;:22;;;;;;;;20804:45;20801:92;;;-1:-1:-1;20876:5:0;20801:92;20966:4;;-1:-1:-1;;;;;20956:14:0;;;20966:4;;20956:14;;;;:35;;-1:-1:-1;20987:4:0;;-1:-1:-1;;;;;20974:17:0;;;20987:4;;20974:17;;20956:35;20953:82;;;-1:-1:-1;21018:5:0;20953:82;21077:6;21096:88;;;;21137:35;21146:6;21154:9;21165:6;21137:8;:35::i;:::-;21123:49;;21096:88;-1:-1:-1;;;;;21219:20:0;;;;;;:9;:20;;;;;;:37;;21244:11;21219:24;:37::i;:::-;-1:-1:-1;;;;;21196:20:0;;;;;;;:9;:20;;;;;;;;:60;;;;21302:24;;;;;:16;:24;;;;;;;21298:127;;21347:19;;-1:-1:-1;;;;;21384:17:0;;;21347:19;21384:17;;;:9;:17;;;;;;;21347:55;;-1:-1:-1;;;21347:55:0;;;;;;;;;;;;;;:19;;;;;:28;;:55;;;;;;;;;;:19;;:55;;;;;;;;;;;;;;;;;;;;;;;;;21343:71;;-1:-1:-1;;;;;21441:27:0;;;;;;:16;:27;;;;;;;;21437:137;;21489:19;;-1:-1:-1;;;;;21529:20:0;;;21489:19;21529:20;;;:9;:20;;;;;;;21489:61;;-1:-1:-1;;;21489:61:0;;;;;;;;;;;;;;:19;;;;;:28;;:61;;;;;;;;;;:19;;:61;;;;;;;;;;;;;;;;;;;;;;;;;21485:77;;21590:19;;21618:14;;21590:43;;;-1:-1:-1;;;;;;21590:43:0;;;;;;;;;;-1:-1:-1;;;;;21590:19:0;;;;:27;;:43;;;;;:19;;:43;;;;;;;;:19;;:43;;;;;;;;;;;;;;;;;;;;;;;;;21586:59;21679:9;-1:-1:-1;;;;;21662:40:0;21671:6;-1:-1:-1;;;;;21662:40:0;-1:-1:-1;;;;;;;;;;;21690:11:0;21662:40;;;;;;;;;;;;;;;;;;-1:-1:-1;21720:4:0;;19541:2191;-1:-1:-1;;;;;19541:2191:0:o;281:136::-;339:7;366:43;370:1;373;366:43;;;;;;;;;;;;;;;;;:3;:43::i;623:224::-;681:7;705:6;701:25;;-1:-1:-1;722:1:0;715:8;;701:25;748:5;;;752:1;748;:5;:1;772:5;;;;;:10;764:56;;;;-1:-1:-1;;;764:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;855:132;913:7;940:39;944:1;947;940:39;;;;;;;;;;;;;;;;;:3;:39::i;21744:330::-;21874:53;;;;;;;;;;;-1:-1:-1;;;21874:53:0;;;;;;;;-1:-1:-1;;;;;21874:17:0;;21837:4;21874:17;;;:9;:17;;;;;;;:53;;21896:6;;21874:21;:53::i;:::-;-1:-1:-1;;;;;21854:17:0;;;;;;;:9;:17;;;;;;:73;;;;21961:20;;;;;;;:32;;21986:6;21961:24;:32::i;:::-;-1:-1:-1;;;;;21938:20:0;;;;;;;:9;:20;;;;;;;;;:55;;;;22009:35;;;;;;;21938:20;;22009:35;;;;-1:-1:-1;;;;;;;;;;;22009:35:0;;;;;;;;-1:-1:-1;22062:4:0;21744:330;;;;;:::o;22757:1568::-;12529:16;:23;;-1:-1:-1;;12529:23:0;12548:4;12529:23;;;22863:4:::1;12529:16:::0;22845:24;;;:9:::1;:24;::::0;;;;;22944:9:::1;::::0;22926:12:::1;::::0;22845:24;;12529:16;22906:55:::1;::::0;22959:1:::1;::::0;22906:48:::1;::::0;22944:9;22906:48;;22845:24;;22906:19:::1;:33::i;:55::-;22880:81:::0;-1:-1:-1;22972:20:0::1;22995:36;:15:::0;22880:81;22995:19:::1;:36::i;:::-;23068:16;::::0;;23082:1:::1;23068:16:::0;;;;;::::1;::::0;;22972:59;;-1:-1:-1;23044:21:0::1;::::0;23068:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;23068:16:0::1;23044:40;;23113:4;23095;23100:1;23095:7;;;;;;;;-1:-1:-1::0;;;;;23095:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;23139:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;23139:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;23095:7;;23139:13;;;;;:6;:13;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;23139:13:0;23129:7;;:4;;23134:1:::1;::::0;23129:7;::::1;;;;;;;;;;:23;-1:-1:-1::0;;;;;23129:23:0::1;;;-1:-1:-1::0;;;;;23129:23:0::1;;;::::0;::::1;23165:6;;;;;;;;;-1:-1:-1::0;;;;;23165:6:0::1;-1:-1:-1::0;;;;;23165:57:0::1;;23237:12;23264:1;23280:4;23307;23327:15;23165:188;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;23165:188:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;23456:12:0::1;::::0;23386:21:::1;::::0;-1:-1:-1;23366:17:0::1;::::0;-1:-1:-1;23442:34:0::1;::::0;23456:19:::1;::::0;23473:1:::1;23456:16;:19::i;:::-;23442:9;::::0;;:13:::1;:34::i;:::-;23420:56;;23497:26;23526:51;23575:1;23526:44;23558:11;23526:27;23540:12;;23526:9;:13;;:27;;;;:::i;:51::-;23497:80;;23588:27;23618:45;23651:11;23618:28;23632:13;;23618:9;:13;;:28;;;;:::i;:45::-;23588:75:::0;-1:-1:-1;23674:21:0::1;23698:58;23588:75:::0;23698:33:::1;:9:::0;23712:18;23698:13:::1;:33::i;:58::-;23674:82;;23773:19;;;;;;;;;-1:-1:-1::0;;;;;23773:19:0::1;-1:-1:-1::0;;;;;23773:27:0::1;;23808:19;23773:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;23769:73:::0;23873:14:::1;::::0;:18;23870:91:::1;;23915:9;::::0;23907:42:::1;::::0;-1:-1:-1;;;;;23915:9:0;;::::1;::::0;23907:42;::::1;;;::::0;23935:13;;23915:9:::1;23907:42:::0;23915:9;23907:42;23935:13;23915:9;23907:42;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;23870:91;23976:19:::0;;23973:345:::1;;24011:6;::::0;24185:4:::1;::::0;24011:227:::1;::::0;;-1:-1:-1;;;24011:227:0;;24087:4:::1;24011:227;::::0;::::1;::::0;;;;;;;:6:::1;:227:::0;;;;;;;;;;-1:-1:-1;;;;;24185:4:0;;::::1;24011:227:::0;;;;24208:15:::1;24011:227:::0;;;;;;:6;;;::::1;::::0;:22:::1;::::0;24041:18;;24011:227;;;;;::::1;::::0;;;;;;;;;24041:18;24011:6;:227;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;24011:227:0;24258:48;;;;;24011:227:::1;24258:48:::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;23973:345;-1:-1:-1::0;;12575:16:0;:24;;-1:-1:-1;;12575:24:0;;;-1:-1:-1;;;;;;;22757:1568:0:o;22082:667::-;22169:7;22257:17;22277:41;22303:14;;22277:21;22288:9;;22277:6;:10;;:21;;;;:::i;:41::-;-1:-1:-1;;;;;22335:23:0;;;;;;:15;:23;;;;;;22257:61;;-1:-1:-1;22335:23:0;;;:67;;-1:-1:-1;;;;;;22376:26:0;;;;;;:15;:26;;;;;;;;22335:67;22331:161;;;22459:20;;22436:44;;:18;:9;22450:3;22436:13;:18::i;:44::-;22423:57;;22331:161;22621:4;22603:24;;;;:9;:24;;;;;;:39;;22632:9;22603:28;:39::i;:::-;22594:4;22576:24;;;;:9;:24;;;;;;;;;:66;;;;22658:42;;;;;;;22594:4;;-1:-1:-1;;;;;22658:42:0;;;-1:-1:-1;;;;;;;;;;;22658:42:0;;;;;;;;;22720:21;:6;22731:9;22720:10;:21::i;:::-;22713:28;22082:667;-1:-1:-1;;;;;22082:667:0:o;94:179::-;152:7;184:5;;;208:6;;;;200:46;;;;;-1:-1:-1;;;200:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;995:189;1081:7;1116:12;1109:5;1101:28;;;;-1:-1:-1;;;1101:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1140:9;1156:1;1152;:5;;;;;;;995:189;-1:-1:-1;;;;;995:189:0:o

Swarm Source

ipfs://a726e8724530d71e645a9c1c59f148431433d2ffde8ad3bea4944d43a59423f9
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
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.