Contract 0x3343dd801085a3d40e1316715c6a599895535601

Contract Overview

Balance:
0 CRO

CRO Value:
$0.00

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xed2eee93de2ab1c568778d7a695412817b8173cfac6c91d7e87bcc3421f2c615Approve76034212023-03-28 13:12:031 hr 2 mins ago0x0d3e88898e1b459cce26201ad32b04bdd5931e3c IN  0x3343dd801085a3d40e1316715c6a5998955356010 CRO0.2219654495220
0x6e8fb48981921f5979ca9b8a7061908a52af9b5bc82294b29046ad24830c93e7Approve75961222023-03-28 1:45:2812 hrs 29 mins ago0xf7a3e4520b1e40bb31d0b4a1647853e92241c078 IN  0x3343dd801085a3d40e1316715c6a5998955356010 CRO0.2219811123950
0x88120bee7b99fddcdf7ad8948fbe58474c0a11e2fa461a906cc1c73d1b31f3a8Transfer75907912023-03-27 17:23:5620 hrs 50 mins ago0xb7c984e9105d82a2d5eb3141ca2c59e0a3202b77 IN  0x3343dd801085a3d40e1316715c6a5998955356010 CRO2.995478243342 4,784.482293601
0x0148fb75b0e19b1eba5071bac6d9563935d6402db6aa4c81b4afbd3dfec45087Approve75907312023-03-27 17:18:1720 hrs 56 mins ago0xb7629c48fa9ba752a7b698176cabc4b0919e5aad IN  0x3343dd801085a3d40e1316715c6a5998955356010 CRO0.2219926937870
0x11743eb49b5d004703327bc9968477f18f30e631b192547a17bfb952f74e9fe2Approve75825082023-03-27 4:24:171 day 9 hrs ago0xe47767939299eb2ce2aee6dfafc7156d324cf74d IN  0x3343dd801085a3d40e1316715c6a5998955356010 CRO0.131305 5,000
0xbaf47333014965677f16699ca2b86098f2e201d3f890aef56307998f44ef4a1cApprove75825042023-03-27 4:23:551 day 9 hrs ago0xe47767939299eb2ce2aee6dfafc7156d324cf74d IN  0x3343dd801085a3d40e1316715c6a5998955356010 CRO0.230805 5,000
0x81746e4f96c9453cbfec66c4f0accbe4308e1b951482cf95bc067d4904ddd4d5Approve75824772023-03-27 4:21:231 day 9 hrs ago0xe47767939299eb2ce2aee6dfafc7156d324cf74d IN  0x3343dd801085a3d40e1316715c6a5998955356010 CRO0.220874100721 4,784.863861734
0xb4a33e8f180a3a39b1ab06bbbddad3a6dd4cc78f135d26a8fc2ebdd70499151fApprove75793192023-03-26 23:24:211 day 14 hrs ago0xcf066b771e77391e5cf9cc6fe69ceaced15d863d IN  0x3343dd801085a3d40e1316715c6a5998955356010 CRO0.2240966829 4,828.317128834
0xa20b4ec492df35636faf19cbd948b3f755f0cbc97c3858c876f1a085260f9898Approve75786962023-03-26 22:25:491 day 15 hrs ago0x3dcb208cc489ebdd5b9b0586ca82419817748fda IN  0x3343dd801085a3d40e1316715c6a5998955356010 CRO0.222087995639 4,785.038580552
0xceb1bfb495ca187e22fa7ac27947611f8304afc34f5e7e0ff53fcc95db77e62bApprove75774102023-03-26 20:25:001 day 17 hrs ago0xc324719b0916656d178940462b8e9b8cee432ef0 IN  0x3343dd801085a3d40e1316715c6a5998955356010 CRO0.222090747895 4,785.097879804
0x2024fdd085a0478325b0d1caa5b1e1c0f8ec2a1bc2790e1d9d838ff6af23a5fbApprove75769922023-03-26 19:45:441 day 18 hrs ago0xb3d3ce9a3cbe818bd845bd2a668463e330ca56f3 IN  0x3343dd801085a3d40e1316715c6a5998955356010 CRO0.2321114130
0x26b2df46bef39efb7ed44e77b832eebb6d1c4225bce20672ce758a96233df49dApprove75765932023-03-26 19:08:121 day 19 hrs ago0x971541c1f8368957411980354ce966dd4a27e0e3 IN  0x3343dd801085a3d40e1316715c6a5998955356010 CRO0.2220228899270
0x53a1983dc3d5be6edd8bb0eaee9c90c7c2e8e5b129da5cd253b0b7bc634635d8Transfer75762022023-03-26 18:31:271 day 19 hrs ago0xb8e10dfee68bee39295f3e2883298d3c9bb97594 IN  0x3343dd801085a3d40e1316715c6a5998955356010 CRO3.871151027028 4,785.153656685
0xa1d6130194523a435cdc8f7020dda79a7100830efa8247c79cb08881b21259ceApprove Max75746062023-03-26 16:01:321 day 22 hrs ago0x2b5653d4c4cdb27fcee8ebd030a09c11f0cd424d IN  0x3343dd801085a3d40e1316715c6a5998955356010 CRO0.12486702616 4,784.727216182
0x19edeb3d2585a1671bc651fa8ab62f1cef2337a5c533f5b70f6f69092094c03bApprove75675212023-03-26 4:55:502 days 9 hrs ago0x9150c37803974496cef333213c1da0b3f1fed336 IN  0x3343dd801085a3d40e1316715c6a5998955356010 CRO0.2220423848410
0x1f5bb9b931e733c7de43c4c8c6b06c76cb9d7ac09a5002c52bc273df200c2084Approve75618032023-03-25 19:59:022 days 18 hrs ago0xb8fe0130a637cd6141fe16c15d8f18dbabe8caa4 IN  0x3343dd801085a3d40e1316715c6a5998955356010 CRO0.2220546384270
0xe7f451faea98aef534ba1cdef3368cb292e0101a74053895894a1c96ae9d59a2Approve75567642023-03-25 12:05:023 days 2 hrs ago0xcf4a36f8105d60fc2c8ef0eb97f616867dd5a67a IN  0x3343dd801085a3d40e1316715c6a5998955356010 CRO0.2220652996010
0x37a9c4ee46e640dd84ee6bbb6f4451d2fafd710b54275b7c17802b9c8b34fce3Transfer75567332023-03-25 12:02:083 days 2 hrs ago0xb7c984e9105d82a2d5eb3141ca2c59e0a3202b77 IN  0x3343dd801085a3d40e1316715c6a5998955356010 CRO2.996460256583 4,786.05079939
0xd8b29437ab3d62793e623ceb9ee37c630ae1bb680deca0df428d9586c4660264Approve75546462023-03-25 8:45:593 days 5 hrs ago0x18541f70fc8a2abf7599e446420acad69e2e5ef4 IN  0x3343dd801085a3d40e1316715c6a5998955356010 CRO0.222139466348 4,786.147552379
0x865805f6f6c7f6c0ab97242655a94b8489391306eb1e47102d71fd5582586921Transfer75520692023-03-25 4:43:533 days 9 hrs ago0xdc2dfec5d7b77e2e1c3b914a00fb8034ed58d152 IN  0x3343dd801085a3d40e1316715c6a5998955356010 CRO4.3971981705630
0x2a10aa0479b55a97069668c1e55c758111d8fa4690b73fdd4908fba7ae54ec70Approve75294162023-03-23 17:12:214 days 21 hrs ago0xb7c984e9105d82a2d5eb3141ca2c59e0a3202b77 IN  0x3343dd801085a3d40e1316715c6a5998955356010 CRO0.222193378112 4,787.309118394
0xcb4c251ea90a0cade79e5bbb4b7928f86d4d304fc65a36a99a64ae140e5ae70dApprove75261182023-03-23 12:00:555 days 2 hrs ago0x0ea97dce23bf8f50b92fdddc5a54aa0faa683ea0 IN  0x3343dd801085a3d40e1316715c6a5998955356010 CRO0.2320650
0x6cd68c49862310b657ba33d14786c966d696f77c87cdd755cda54a40b02e18c4Approve75229702023-03-23 7:04:255 days 7 hrs ago0x0d5de262d164d9a5475a0f6963ffd759b7a7a46c IN  0x3343dd801085a3d40e1316715c6a5998955356010 CRO0.222207079755 4,787.604329732
0x52c6156bc1e9f8944bae83c8e866b3b4a63398797d1d45d54d01271ea6ab9dbbTransfer Ownersh...75169492023-03-22 21:37:155 days 16 hrs ago0x535f4044c7ba7966fcdda4994c07531f98800273 IN  0x3343dd801085a3d40e1316715c6a5998955356010 CRO0.1452954042750
0x2044dd421c3c9ea6a53997259a4d8271e53fe89d74db35882c2520aafa8e5e60Approve75160292023-03-22 20:10:285 days 18 hrs ago0xad95de718ba4395eb5cff7ab9acedfa27757ee3b IN  0x3343dd801085a3d40e1316715c6a5998955356010 CRO0.222221885699 4,787.923333968
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xb1bacc7255fb49feb56707c87935964b70e9dc7cf3d8b3b230d6290a6ab5f9cc76028322023-03-28 12:16:371 hr 58 mins ago 0x3343dd801085a3d40e1316715c6a599895535601 Mad Meerkat Finance: Master Meerkat & Router0.450641962626366877 CRO
0xb1bacc7255fb49feb56707c87935964b70e9dc7cf3d8b3b230d6290a6ab5f9cc76028322023-03-28 12:16:371 hr 58 mins ago 0x3343dd801085a3d40e1316715c6a5998955356010x535f4044c7ba7966fcdda4994c07531f988002730.413088465740836305 CRO
0xb1bacc7255fb49feb56707c87935964b70e9dc7cf3d8b3b230d6290a6ab5f9cc76028322023-03-28 12:16:371 hr 58 mins ago 0x3343dd801085a3d40e1316715c6a5998955356010x60e410ebcbd30375ac71bbab1048a59a6f4f72c81.239265397222508912 CRO
0xb1bacc7255fb49feb56707c87935964b70e9dc7cf3d8b3b230d6290a6ab5f9cc76028322023-03-28 12:16:371 hr 58 mins ago 0x3343dd801085a3d40e1316715c6a599895535601 0x056c639bebf3f94594784e0237db5a42feb226170.901283925252733754 CRO
0xb1bacc7255fb49feb56707c87935964b70e9dc7cf3d8b3b230d6290a6ab5f9cc76028322023-03-28 12:16:371 hr 58 mins ago Mad Meerkat Finance: Master Meerkat & Router 0x3343dd801085a3d40e1316715c6a5998955356013.004279750842445848 CRO
0x17d3c70eda61caf269fc0ab27dea24371d98b75985a089a131c14adc8652ee8076028192023-03-28 12:15:241 hr 59 mins ago 0x3343dd801085a3d40e1316715c6a599895535601 Mad Meerkat Finance: Master Meerkat & Router85.260881819562132478 CRO
0x17d3c70eda61caf269fc0ab27dea24371d98b75985a089a131c14adc8652ee8076028192023-03-28 12:15:241 hr 59 mins ago 0x3343dd801085a3d40e1316715c6a5998955356010x535f4044c7ba7966fcdda4994c07531f9880027378.155808334598621439 CRO
0x17d3c70eda61caf269fc0ab27dea24371d98b75985a089a131c14adc8652ee8076028192023-03-28 12:15:241 hr 59 mins ago 0x3343dd801085a3d40e1316715c6a5998955356010x60e410ebcbd30375ac71bbab1048a59a6f4f72c8234.467425003795864316 CRO
0x17d3c70eda61caf269fc0ab27dea24371d98b75985a089a131c14adc8652ee8076028192023-03-28 12:15:241 hr 59 mins ago 0x3343dd801085a3d40e1316715c6a599895535601 0x056c639bebf3f94594784e0237db5a42feb22617170.521763639124264957 CRO
0x17d3c70eda61caf269fc0ab27dea24371d98b75985a089a131c14adc8652ee8076028192023-03-28 12:15:241 hr 59 mins ago Mad Meerkat Finance: Master Meerkat & Router 0x3343dd801085a3d40e1316715c6a599895535601568.40587879708088319 CRO
0xc289f73fa4d864fcb7fdd6f5c90ddb2bbf331b3e679a5e4cd677d55f65cee36876018762023-03-28 10:46:393 hrs 27 mins ago 0x3343dd801085a3d40e1316715c6a599895535601 Mad Meerkat Finance: Master Meerkat & Router0.018167396721082777 CRO
0xc289f73fa4d864fcb7fdd6f5c90ddb2bbf331b3e679a5e4cd677d55f65cee36876018762023-03-28 10:46:393 hrs 27 mins ago 0x3343dd801085a3d40e1316715c6a5998955356010x535f4044c7ba7966fcdda4994c07531f988002730.01665344699432588 CRO
0xc289f73fa4d864fcb7fdd6f5c90ddb2bbf331b3e679a5e4cd677d55f65cee36876018762023-03-28 10:46:393 hrs 27 mins ago 0x3343dd801085a3d40e1316715c6a5998955356010x60e410ebcbd30375ac71bbab1048a59a6f4f72c80.049960340982977637 CRO
0xc289f73fa4d864fcb7fdd6f5c90ddb2bbf331b3e679a5e4cd677d55f65cee36876018762023-03-28 10:46:393 hrs 27 mins ago 0x3343dd801085a3d40e1316715c6a599895535601 0x056c639bebf3f94594784e0237db5a42feb226170.036334793442165554 CRO
0xc289f73fa4d864fcb7fdd6f5c90ddb2bbf331b3e679a5e4cd677d55f65cee36876018762023-03-28 10:46:393 hrs 27 mins ago Mad Meerkat Finance: Master Meerkat & Router 0x3343dd801085a3d40e1316715c6a5998955356010.121115978140551848 CRO
0x2ac6885da3a1ec9c78a575ecf0d0b600b71f82b5481bb86bdd10e48c9c9e3dd576013512023-03-28 9:57:154 hrs 17 mins ago 0x3343dd801085a3d40e1316715c6a599895535601 Mad Meerkat Finance: Master Meerkat & Router2.614975911646988749 CRO
0x2ac6885da3a1ec9c78a575ecf0d0b600b71f82b5481bb86bdd10e48c9c9e3dd576013512023-03-28 9:57:154 hrs 17 mins ago 0x3343dd801085a3d40e1316715c6a5998955356010x535f4044c7ba7966fcdda4994c07531f988002732.397061252343073021 CRO
0x2ac6885da3a1ec9c78a575ecf0d0b600b71f82b5481bb86bdd10e48c9c9e3dd576013512023-03-28 9:57:154 hrs 17 mins ago 0x3343dd801085a3d40e1316715c6a5998955356010x60e410ebcbd30375ac71bbab1048a59a6f4f72c87.191183757029219063 CRO
0x2ac6885da3a1ec9c78a575ecf0d0b600b71f82b5481bb86bdd10e48c9c9e3dd576013512023-03-28 9:57:154 hrs 17 mins ago 0x3343dd801085a3d40e1316715c6a599895535601 0x056c639bebf3f94594784e0237db5a42feb226175.229951823293977499 CRO
0x2ac6885da3a1ec9c78a575ecf0d0b600b71f82b5481bb86bdd10e48c9c9e3dd576013512023-03-28 9:57:154 hrs 17 mins ago Mad Meerkat Finance: Master Meerkat & Router 0x3343dd801085a3d40e1316715c6a59989553560117.433172744313258332 CRO
0x20b1cbe6f05b691050ad2997c0470dec7cf87b4357978b269a7fd85542edde2476013272023-03-28 9:55:004 hrs 19 mins ago 0x3343dd801085a3d40e1316715c6a599895535601 Mad Meerkat Finance: Master Meerkat & Router0.016448668942965781 CRO
0x20b1cbe6f05b691050ad2997c0470dec7cf87b4357978b269a7fd85542edde2476013272023-03-28 9:55:004 hrs 19 mins ago 0x3343dd801085a3d40e1316715c6a5998955356010x535f4044c7ba7966fcdda4994c07531f988002730.015077946531051967 CRO
0x20b1cbe6f05b691050ad2997c0470dec7cf87b4357978b269a7fd85542edde2476013272023-03-28 9:55:004 hrs 19 mins ago 0x3343dd801085a3d40e1316715c6a5998955356010x60e410ebcbd30375ac71bbab1048a59a6f4f72c80.045233839593155899 CRO
0x20b1cbe6f05b691050ad2997c0470dec7cf87b4357978b269a7fd85542edde2476013272023-03-28 9:55:004 hrs 19 mins ago 0x3343dd801085a3d40e1316715c6a599895535601 0x056c639bebf3f94594784e0237db5a42feb226170.032897337885931563 CRO
0x20b1cbe6f05b691050ad2997c0470dec7cf87b4357978b269a7fd85542edde2476013272023-03-28 9:55:004 hrs 19 mins ago Mad Meerkat Finance: Master Meerkat & Router 0x3343dd801085a3d40e1316715c6a5998955356010.10965779295310521 CRO
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Tycoon

Compiler Version
v0.7.4+commit.3f05b770

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at cronoscan.com on 2023-01-18
*/

/**
 *Submitted for verification at Etherscan.io on 2023-01-17
*/

// 

// LAUNCHED BY POSSESSEDPIRATES.COM DEV IT PAYS TO BE A PIRATE! join our discord crofam!
// CONTRACT DESIGNED FOR TYCOON COMMUNITY
//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 routerAddress = 0x145677FC4d9b8F19B5D56d1820c48e0443049a30; //MMF
    IBEP20 RewardToken = IBEP20(0xe44Fd7fCb2b1581822D0c862B68222998a0c299a); //WETH

    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 = 30 minutes ;
    uint256 public minDistribution = 1 / 100000 * (10 ** 18);

    uint256 currentIndex;

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

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

    constructor (address _router) {
        router = _router != address(0) ? IDEXRouter(_router) : IDEXRouter(routerAddress);
        _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 {

        uint256 balanceBefore = RewardToken.balanceOf(address(this));

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

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

        uint256 amount = RewardToken.balanceOf(address(this)).sub(balanceBefore);
        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }

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

        if(shareholderCount == 0) { return; }

        uint256 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);
            RewardToken.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }
    
    function claimDividend() external {

        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 Tycoon is IBEP20, Auth {
    
    using SafeMath for uint256;

    string constant _name = "Tycoon";
    string constant _symbol = "CIW";
    uint8 constant _decimals = 18;

    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    
    address routerAddress = 0x145677FC4d9b8F19B5D56d1820c48e0443049a30; //MMF
    address RewardToken = 0xe44Fd7fCb2b1581822D0c862B68222998a0c299a; //WETH

    uint256 _totalSupply = 10 * 10**10 * (10 ** _decimals);
    uint256 public _maxTxAmount = 9 * 10**5 * (10 ** _decimals);
    uint256 public _walletMax = 9 * 10**5 * (10 ** _decimals);
    
    bool public restrictWhales = true;

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

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

    uint256 public liquidityFee = 3;
    uint256 public marketingFee =5;
    uint256 public rewardsFee = 5;
    uint256 public extraFeeOnSell = 5;

    uint256 public totalFee = 0;
    uint256 public totalFeeIfSelling = 0;

    address public autoLiquidityReceiver;
    address public marketingWallet;
    address public devWallet;

    IDEXRouter public router;
    address public pair;

    uint256 public launchedAt;
    bool public tradingOpen = false;

    DividendDistributor public dividendDistributor;
    uint256 distributorGas = 300000;

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

    uint256 public swapThreshold = 1 * 10**4 * (10 ** _decimals);
    
    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(address(router));

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

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

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

        // NICE!
        autoLiquidityReceiver = 0x21420c42f0f39B657B78d3cC04025913D4b6Ad14;
        marketingWallet = 0x21420c42f0f39B657B78d3cC04025913D4b6Ad14;
        devWallet = 0x21420c42f0f39B657B78d3cC04025913D4b6Ad14;
        
        totalFee = liquidityFee.add(marketingFee).add(rewardsFee);
        totalFeeIfSelling = totalFee.add(extraFeeOnSell);

        _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 changeTxLimit(uint256 newLimit) external authorized {
        _maxTxAmount = newLimit;
    }

    function changeWalletLimit(uint256 newLimit) external authorized {
        _walletMax  = newLimit;
    }

    function changeRestrictWhales(bool newValue) external authorized {
       restrictWhales = newValue;
    }
    
    function changeIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }

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

    function changeIsDividendExempt(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 changeFees(uint256 newLiqFee, uint256 newRewardFee, uint256 newMarketingFee, uint256 newExtraSellFee) external authorized {
        liquidityFee = newLiqFee;
        rewardsFee = newRewardFee;
        marketingFee = newMarketingFee;
        extraFeeOnSell = newExtraSellFee;
        
        totalFee = liquidityFee.add(marketingFee).add(rewardsFee);
        totalFeeIfSelling = totalFee.add(extraFeeOnSell);
    }

    function changeFeeReceivers(address newLiquidityReceiver, address newMarketingWallet, address newDevWallet) external authorized {
        autoLiquidityReceiver = newLiquidityReceiver;
        marketingWallet = newMarketingWallet;
        devWallet = newDevWallet;
    }

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

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

    function changeDistributorSettings(uint256 gas) external authorized {
        require(gas < 300000);
        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) {
        
        if(inSwapAndLiquify){ return _basicTransfer(sender, recipient, amount); }

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

        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");

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

        if(!launched() && recipient == pair) {
            require(_balances[sender] > 0);
            launch();
        }

        //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        
        if(!isTxLimitExempt[recipient] && restrictWhales)
        {
            require(_balances[recipient].add(amount) <= _walletMax);
        }

        uint256 finalAmount = !isFeeExempt[sender] && !isFeeExempt[recipient] ? takeFee(sender, recipient, amount) : 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 takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeApplicable = pair == recipient ? totalFeeIfSelling : totalFee;
        uint256 feeAmount = amount.mul(feeApplicable).div(100);

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

        return amount.sub(feeAmount);
    }

    function tradingStatus(bool newStatus) public onlyOwner {
        tradingOpen = newStatus;
    }

    function swapBack() internal lockTheSwap {
        
        uint256 tokensToLiquify = _balances[address(this)];
        uint256 amountToLiquify = tokensToLiquify.mul(liquidityFee).div(totalFee).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 amountBNB = address(this).balance;

        uint256 totalBNBFee = totalFee.sub(liquidityFee.div(2));
        
        uint256 amountBNBLiquidity = amountBNB.mul(liquidityFee).div(totalBNBFee).div(2);
        uint256 amountBNBReflection = amountBNB.mul(rewardsFee).div(totalBNBFee);
        uint256 amountBNBMarketing = amountBNB.sub(amountBNBLiquidity).sub(amountBNBReflection);

        try dividendDistributor.deposit{value: amountBNBReflection}() {} catch {}
        
        uint256 marketingShare = amountBNBMarketing.mul(3).div(4);
        uint256 devShare = amountBNBMarketing.sub(marketingShare);
        
        (bool tmpSuccess,) = payable(marketingWallet).call{value: marketingShare, gas: 30000}("");
        (bool tmpSuccess1,) = payable(devWallet).call{value: devShare, gas: 30000}("");
        
        // only to supress warning msg
        tmpSuccess = false;
        tmpSuccess1 = false;

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountBNBLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountBNBLiquidity, 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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","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":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","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":"address","name":"newLiquidityReceiver","type":"address"},{"internalType":"address","name":"newMarketingWallet","type":"address"},{"internalType":"address","name":"newDevWallet","type":"address"}],"name":"changeFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiqFee","type":"uint256"},{"internalType":"uint256","name":"newRewardFee","type":"uint256"},{"internalType":"uint256","name":"newMarketingFee","type":"uint256"},{"internalType":"uint256","name":"newExtraSellFee","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"changeRestrictWhales","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"},{"internalType":"bool","name":"swapByLimitOnly","type":"bool"}],"name":"changeSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeWalletLimit","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":"dividendDistributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"extraFeeOnSell","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":"","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":"","type":"address"}],"name":"isTxLimitExempt","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":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"restrictWhales","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardsFee","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":[],"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":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeIfSelling","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":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"newStatus","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600280546001600160a01b031990811661dead17909155600380548216815560048054831673145677fc4d9b8f19b5d56d1820c48e0443049a301790556005805490921673e44fd7fcb2b1581822d0c862b68222998a0c299a1782556c01431e0fae6d7217caa000000060065569be951906eba2aa80000060078190556008556009805460ff19908116600117909155600f919091556010829055601182905560129190915560006013819055601455601b80549091169055620493e0601c55601d805462ff00001961ff00199091166101001716905569021e19e0c9bab2400000601e55348015620000f657600080fd5b50600080546001600160a01b0319908116339081178355825260016020818152604093849020805460ff191690921790915560048054601880549094166001600160a01b039182161793849055845163c45a015560e01b8152945193169363c45a01559381830193929091829003018186803b1580156200017657600080fd5b505afa1580156200018b573d6000803e3d6000fd5b505050506040513d6020811015620001a257600080fd5b5051601854604080516315ab88c960e31b815290516001600160a01b039384169363c9c6539693169163ad5c4648916004808301926020929190829003018186803b158015620001f157600080fd5b505afa15801562000206573d6000803e3d6000fd5b505050506040513d60208110156200021d57600080fd5b5051604080516001600160e01b031960e085901b1681526001600160a01b0390921660048301523060248301525160448083019260209291908290030181600087803b1580156200026d57600080fd5b505af115801562000282573d6000803e3d6000fd5b505050506040513d60208110156200029957600080fd5b5051601980546001600160a01b0319166001600160a01b03928316179055306000908152600b6020908152604080832060188054861685529252918290206000199055549051911690620002ed906200053c565b6001600160a01b03909116815260405190819003602001906000f0801580156200031b573d6000803e3d6000fd5b50601b8054610100600160a81b0319166101006001600160a01b0393841602179055336000818152600c60209081526040808320805460ff199081166001908117909255308086528386208054831684179055868652600d85528386208054831684179055601980548916875284872080548416851790555488168652600e8552838620805483168417905595855282852080548216831790559484528184208054861682179055600254861684528184208054861682179055600354909516835290912080549092169092179055601580547321420c42f0f39b657b78d3cc04025913d4b6ad146001600160a01b0319918216811790925560168054821683179055601780549091169091179055601154601054600f5462000461936200044d9290620004da811b620016a517901c565b620004da60201b620016a51790919060201c565b60138190555062000485601254601354620004da60201b620016a51790919060201c565b601455600654336000818152600a60209081526040808320859055805194855251929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a36200054a565b60008282018381101562000535576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b610f768062002a4783390190565b6124ed806200055a6000396000f3fe6080604052600436106103035760003560e01c80637db1342c11610190578063bf56b371116100dc578063e66b1d1e11610095578063f887ea401161006f578063f887ea4014610ac8578063fabe628314610add578063fe9fbb8014610b18578063ffb54a9914610b4b5761030a565b8063e66b1d1e14610a36578063f0b37c0414610a62578063f2fde38b14610a955761030a565b8063bf56b3711461097d578063ca33e64c14610992578063ca987b0e146109a7578063d920334e146109bc578063da00097d146109e6578063dd62ed3e146109fb5761030a565b806398118cb411610149578063a9059cbb11610123578063a9059cbb146108cc578063a9f7864b14610905578063b6a5d7de14610935578063bad3ea6a146109685761030a565b806398118cb414610867578063a3a2e89e1461087c578063a8aa1b31146108b75761030a565b80637db1342c146107b6578063807c2d9c146107e0578063893d20e8146107f55780638b42507f1461080a5780638ea5220f1461083d57806395d89b41146108525761030a565b80633f4218e01161024f578063650c42261161020857806370a08231116101e257806370a082311461070257806375f0a87414610735578063773fcb5c146107665780637d1db4a5146107a15761030a565b8063650c42261461069c57806369cf17d4146106d85780636b67c4df146106ed5761030a565b80633f4218e0146105af5780634355855a146105e257806344de2e4c14610615578063479f66d81461062a5780634a74bb0214610654578063571ac8b0146106695761030a565b806323b872dd116102bc5780632f54bf6e116102965780632f54bf6e146104d2578063313ce56714610505578063315dca291461053057806334c70889146105755761030a565b806323b872dd146104655780632b112e49146104a85780632bb14e1d146104bd5761030a565b80630445b6671461030f57806306fdde0314610336578063095ea7b3146103c05780630d2959801461040d57806318160ddd1461043b5780631df4ccfc146104505761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610b60565b60408051918252519081900360200190f35b34801561034257600080fd5b5061034b610b66565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561038557818101518382015260200161036d565b50505050905090810190601f1680156103b25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103cc57600080fd5b506103f9600480360360408110156103e357600080fd5b506001600160a01b038135169060200135610b86565b604080519115158252519081900360200190f35b34801561041957600080fd5b506104396004803603602081101561043057600080fd5b50351515610bed565b005b34801561044757600080fd5b50610324610c43565b34801561045c57600080fd5b50610324610c49565b34801561047157600080fd5b506103f96004803603606081101561048857600080fd5b506001600160a01b03813581169160208101359091169060400135610c4f565b3480156104b457600080fd5b50610324610d11565b3480156104c957600080fd5b50610324610d5a565b3480156104de57600080fd5b506103f9600480360360208110156104f557600080fd5b50356001600160a01b0316610d60565b34801561051157600080fd5b5061051a610d74565b6040805160ff9092168252519081900360200190f35b34801561053c57600080fd5b506104396004803603606081101561055357600080fd5b506001600160a01b038135811691602081013582169160409091013516610d79565b34801561058157600080fd5b506104396004803603606081101561059857600080fd5b508035151590602081013590604001351515610e00565b3480156105bb57600080fd5b506103f9600480360360208110156105d257600080fd5b50356001600160a01b0316610e7a565b3480156105ee57600080fd5b506103f96004803603602081101561060557600080fd5b50356001600160a01b0316610e8f565b34801561062157600080fd5b506103f9610ea4565b34801561063657600080fd5b506104396004803603602081101561064d57600080fd5b5035610ead565b34801561066057600080fd5b506103f9610f09565b34801561067557600080fd5b506103f96004803603602081101561068c57600080fd5b50356001600160a01b0316610f17565b3480156106a857600080fd5b50610439600480360360808110156106bf57600080fd5b5080359060208101359060408101359060600135610f25565b3480156106e457600080fd5b50610324610fb0565b3480156106f957600080fd5b50610324610fb6565b34801561070e57600080fd5b506103246004803603602081101561072557600080fd5b50356001600160a01b0316610fbc565b34801561074157600080fd5b5061074a610fd7565b604080516001600160a01b039092168252519081900360200190f35b34801561077257600080fd5b506104396004803603604081101561078957600080fd5b506001600160a01b0381351690602001351515610fe6565b3480156107ad57600080fd5b50610324611183565b3480156107c257600080fd5b50610439600480360360208110156107d957600080fd5b5035611189565b3480156107ec57600080fd5b506103246111d6565b34801561080157600080fd5b5061074a6111dc565b34801561081657600080fd5b506103f96004803603602081101561082d57600080fd5b50356001600160a01b03166111eb565b34801561084957600080fd5b5061074a611200565b34801561085e57600080fd5b5061034b61120f565b34801561087357600080fd5b5061032461122c565b34801561088857600080fd5b506104396004803603604081101561089f57600080fd5b506001600160a01b0381351690602001351515611232565b3480156108c357600080fd5b5061074a6112a5565b3480156108d857600080fd5b506103f9600480360360408110156108ef57600080fd5b506001600160a01b0381351690602001356112b4565b34801561091157600080fd5b506104396004803603604081101561092857600080fd5b50803590602001356112c1565b34801561094157600080fd5b506104396004803603602081101561095857600080fd5b50356001600160a01b031661136c565b34801561097457600080fd5b5061074a6113d6565b34801561098957600080fd5b506103246113ea565b34801561099e57600080fd5b5061074a6113f0565b3480156109b357600080fd5b506103246113ff565b3480156109c857600080fd5b50610439600480360360208110156109df57600080fd5b5035611405565b3480156109f257600080fd5b506103f9611452565b348015610a0757600080fd5b5061032460048036036040811015610a1e57600080fd5b506001600160a01b0381358116916020013516611461565b348015610a4257600080fd5b5061043960048036036020811015610a5957600080fd5b5035151561148c565b348015610a6e57600080fd5b5061043960048036036020811015610a8557600080fd5b50356001600160a01b03166114e7565b348015610aa157600080fd5b5061043960048036036020811015610ab857600080fd5b50356001600160a01b031661154b565b348015610ad457600080fd5b5061074a6115fc565b348015610ae957600080fd5b5061043960048036036040811015610b0057600080fd5b506001600160a01b038135169060200135151561160b565b348015610b2457600080fd5b506103f960048036036020811015610b3b57600080fd5b50356001600160a01b031661167e565b348015610b5757600080fd5b506103f961169c565b601e5481565b6040805180820190915260068152652a3cb1b7b7b760d11b602082015290565b336000818152600b602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b610bf633610d60565b610c30576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601b805460ff1916911515919091179055565b60065490565b60135481565b6001600160a01b0383166000908152600b6020908152604080832033845290915281205460001914610cfc576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600b82528381203382529091529190912054610cd79184906116ff565b6001600160a01b0385166000908152600b602090815260408083203384529091529020555b610d07848484611796565b90505b9392505050565b600354600090610d5590610d2d906001600160a01b0316610fbc565b600254610d4f90610d46906001600160a01b0316610fbc565b60065490611cb2565b90611cb2565b905090565b60115481565b6000546001600160a01b0390811691161490565b601290565b610d823361167e565b610dc1576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601580546001600160a01b039485166001600160a01b031991821617909155601680549385169382169390931790925560178054919093169116179055565b610e093361167e565b610e48576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601d8054601e93909355901515620100000262ff0000199315156101000261ff00199093169290921792909216179055565b600c6020526000908152604090205460ff1681565b600e6020526000908152604090205460ff1681565b60095460ff1681565b610eb63361167e565b610ef5576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b620493e08110610f0457600080fd5b601c55565b601d54610100900460ff1681565b6000610be782600019610b86565b610f2e3361167e565b610f6d576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b600f849055601183905560108290556012819055610f9583610f8f86856116a5565b906116a5565b6013819055601254610fa791906116a5565b60145550505050565b60125481565b60105481565b6001600160a01b03166000908152600a602052604090205490565b6016546001600160a01b031681565b610fef3361167e565b61102e576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b038216301480159061105557506019546001600160a01b03838116911614155b61105e57600080fd5b6001600160a01b0382166000908152600e60205260409020805460ff1916821580159190911790915561110057601b5460408051630a5b654b60e11b81526001600160a01b038581166004830152600060248301819052925161010090940416926314b6ca969260448084019391929182900301818387803b1580156110e357600080fd5b505af11580156110f7573d6000803e3d6000fd5b5050505061117f565b601b546001600160a01b038381166000818152600a6020526040808220548151630a5b654b60e11b81526004810194909452602484015251610100909404909216926314b6ca969260448084019391929182900301818387803b15801561116657600080fd5b505af115801561117a573d6000803e3d6000fd5b505050505b5050565b60075481565b6111923361167e565b6111d1576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b600855565b60085481565b6000546001600160a01b031690565b600d6020526000908152604090205460ff1681565b6017546001600160a01b031681565b60408051808201909152600381526243495760e81b602082015290565b600f5481565b61123b3361167e565b61127a576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6019546001600160a01b031681565b6000610d0a338484611796565b6112ca3361167e565b611309576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601b60019054906101000a90046001600160a01b03166001600160a01b0316632d48e89683836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b15801561116657600080fd5b61137533610d60565b6113af576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b601b5461010090046001600160a01b031681565b601a5481565b6015546001600160a01b031681565b60145481565b61140e3361167e565b61144d576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b600755565b601d5462010000900460ff1681565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b6114953361167e565b6114d4576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6009805460ff1916911515919091179055565b6114f033610d60565b61152a576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b61155433610d60565b61158e576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff1916909217909155825191825291517f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163929181900390910190a150565b6018546001600160a01b031681565b6116143361167e565b611653576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b601b5460ff1681565b600082820183811015610d0a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000818484111561178e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561175357818101518382015260200161173b565b50505050905090810190601f1680156117805780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b601d5460009060ff16156117b6576117af848484611cf4565b9050610d0a565b6001600160a01b03841660009081526001602052604090205460ff161580156117f857506001600160a01b03831660009081526001602052604090205460ff16155b1561184b57601b5460ff1661184b576040805162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015290519081900360640190fd5b6007548211158061187457506001600160a01b0384166000908152600d602052604090205460ff165b6118b9576040805162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015290519081900360640190fd5b6019546001600160a01b031633148015906118d75750601d5460ff16155b80156118ea5750601d54610100900460ff165b80156119075750601e54306000908152600a602052604090205410155b1561191457611914611dd5565b61191c6122ce565b15801561193657506019546001600160a01b038481169116145b15611965576001600160a01b0384166000908152600a602052604090205461195d57600080fd5b6119656122d6565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600a90915291909120546119b79184906116ff565b6001600160a01b038086166000908152600a60209081526040808320949094559186168152600d909152205460ff161580156119f5575060095460ff165b15611a2b576008546001600160a01b0384166000908152600a6020526040902054611a2090846116a5565b1115611a2b57600080fd5b6001600160a01b0384166000908152600c602052604081205460ff16158015611a6d57506001600160a01b0384166000908152600c602052604090205460ff16155b611a775782611a82565b611a828585856122dc565b6001600160a01b0385166000908152600a6020526040902054909150611aa890826116a5565b6001600160a01b038086166000908152600a60209081526040808320949094559188168152600e909152205460ff16611b5457601b546001600160a01b038681166000818152600a6020526040808220548151630a5b654b60e11b81526004810194909452602484015251610100909404909216926314b6ca969260448084019391929182900301818387803b158015611b4157600080fd5b505af1925050508015611b52575060015b505b6001600160a01b0384166000908152600e602052604090205460ff16611bed57601b546001600160a01b038581166000818152600a6020526040808220548151630a5b654b60e11b81526004810194909452602484015251610100909404909216926314b6ca969260448084019391929182900301818387803b158015611bda57600080fd5b505af1925050508015611beb575060015b505b601b60019054906101000a90046001600160a01b03166001600160a01b031663ffb2c479601c546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015611c4a57600080fd5b505af1925050508015611c5b575060015b50836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3506001949350505050565b6000610d0a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506116ff565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600a90915291822054611d459184906116ff565b6001600160a01b038086166000908152600a60205260408082209390935590851681522054611d7490836116a5565b6001600160a01b038085166000818152600a602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019392505050565b601d805460ff19166001179055306000908152600a6020526040812054601354600f54919291611e1691600291611e1091908290879061239b565b906123f4565b90506000611e248383611cb2565b6040805160028082526060808301845293945090916020830190803683370190505090503081600081518110611e5657fe5b6001600160a01b03928316602091820292909201810191909152601854604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611eaa57600080fd5b505afa158015611ebe573d6000803e3d6000fd5b505050506040513d6020811015611ed457600080fd5b5051815182906001908110611ee557fe5b60200260200101906001600160a01b031690816001600160a01b031681525050601860009054906101000a90046001600160a01b03166001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015611f9f578181015183820152602001611f87565b505050509050019650505050505050600060405180830381600087803b158015611fc857600080fd5b505af1158015611fdc573d6000803e3d6000fd5b5050600f544792506000915061200090611ff79060026123f4565b60135490611cb2565b905060006120226002611e1084611e10600f548861239b90919063ffffffff16565b9050600061203f83611e106011548761239b90919063ffffffff16565b9050600061205182610d4f8786611cb2565b9050601b60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b1580156120a357600080fd5b505af1935050505080156120b5575060015b5060006120c86004611e1084600361239b565b905060006120d68383611cb2565b6016546040519192506000916001600160a01b039091169061753090859084818181858888f193505050503d806000811461212d576040519150601f19603f3d011682016040523d82523d6000602084013e612132565b606091505b50506017546040519192506000916001600160a01b039091169061753090859084818181858888f193505050503d806000811461218b576040519150601f19603f3d011682016040523d82523d6000602084013e612190565b606091505b5060009350839250508c1590506122b557601860009054906101000a90046001600160a01b03166001600160a01b031663f305d71988308f600080601560009054906101000a90046001600160a01b0316426040518863ffffffff1660e01b815260040180876001600160a01b03168152602001868152602001858152602001848152602001836001600160a01b0316815260200182815260200196505050505050506060604051808303818588803b15801561224c57600080fd5b505af1158015612260573d6000803e3d6000fd5b50505050506040513d606081101561227757600080fd5b505060408051888152602081018e905281517f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506929181900390910190a15b5050601d805460ff191690555050505050505050505050565b601a54151590565b43601a55565b60195460009081906001600160a01b038581169116146122fe57601354612302565b6014545b905060006123156064611e10868561239b565b306000908152600a602052604090205490915061233290826116a5565b306000818152600a6020908152604091829020939093558051848152905191926001600160a01b038a16927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a36123918482611cb2565b9695505050505050565b6000826123aa57506000610be7565b828202828482816123b757fe5b0414610d0a5760405162461bcd60e51b81526004018080602001828103825260218152602001806124976021913960400191505060405180910390fd5b6000610d0a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836124805760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561175357818101518382015260200161173b565b50600083858161248c57fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212200ee8b9571fa63519f786c6c03244aefd38359bc857314c1508311aaf73eee68164736f6c634300070400336080604052600280546001600160a01b031990811673145677fc4d9b8f19b5d56d1820c48e0443049a30179091556003805490911673e44fd7fcb2b1581822d0c862b68222998a0c299a1790556ec097ce7bc90715b34b9f1000000000600c55610708600d556509184e72a000600e5534801561007b57600080fd5b50604051610f76380380610f768339818101604052602081101561009e57600080fd5b50516001600160a01b0381166100bf576002546001600160a01b03166100c1565b805b600180546001600160a01b03929092166001600160a01b0319928316179055600080549091163317905550610e7b806100fb6000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed14610254578063f0fc6bca14610269578063ffb2c4791461027e578063ffd49c84146102a8576100dd565b8063ce7c2ac2146101e6578063d0e30db014610237578063e2d2e2191461023f576100dd565b80632d48e896116100bb5780632d48e896146101775780633a98ef39146101a75780634fab0ae8146101bc578063997664d7146101d1576100dd565b806311ce023d146100e257806314b6ca961461010957806328fd319814610144575b600080fd5b3480156100ee57600080fd5b506100f76102bd565b60408051918252519081900360200190f35b34801561011557600080fd5b506101426004803603604081101561012c57600080fd5b506001600160a01b0381351690602001356102c3565b005b34801561015057600080fd5b506100f76004803603602081101561016757600080fd5b50356001600160a01b03166103e8565b34801561018357600080fd5b506101426004803603604081101561019a57600080fd5b5080359060200135610474565b3480156101b357600080fd5b506100f7610496565b3480156101c857600080fd5b506100f761049c565b3480156101dd57600080fd5b506100f76104a2565b3480156101f257600080fd5b506102196004803603602081101561020957600080fd5b50356001600160a01b03166104a8565b60408051938452602084019290925282820152519081900360600190f35b6101426104c9565b34801561024b57600080fd5b506100f76107bd565b34801561026057600080fd5b506100f76107c3565b34801561027557600080fd5b506101426107c9565b34801561028a57600080fd5b50610142600480360360208110156102a157600080fd5b503561082e565b3480156102b457600080fd5b506100f7610913565b600c5481565b6000546001600160a01b031633146102da57600080fd5b6001600160a01b038216600090815260076020526040902054156103015761030182610919565b60008111801561032757506001600160a01b038216600090815260076020526040902054155b1561033a5761033582610a41565b61036d565b8015801561035f57506001600160a01b03821660009081526007602052604090205415155b1561036d5761036d82610aa2565b6001600160a01b03821660009081526007602052604090205460085461039e91839161039891610b8f565b90610bda565b6008556001600160a01b03821660009081526007602052604090208190556103c581610c34565b6001600160a01b0390921660009081526007602052604090206001019190915550565b6001600160a01b03811660009081526007602052604081205461040d5750600061046f565b6001600160a01b03821660009081526007602052604081205461042f90610c34565b6001600160a01b0384166000908152600760205260409020600101549091508082116104605760009250505061046f565b61046a8282610b8f565b925050505b919050565b6000546001600160a01b0316331461048b57600080fd5b600d91909155600e55565b60085481565b600e5481565b60095481565b60076020526000908152604090208054600182015460029092015490919083565b6000546001600160a01b031633146104e057600080fd5b600354604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561052b57600080fd5b505afa15801561053f573d6000803e3d6000fd5b505050506040513d602081101561055557600080fd5b50516040805160028082526060808301845293945090916020830190803683375050600154604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b1580156105bf57600080fd5b505afa1580156105d3573d6000803e3d6000fd5b505050506040513d60208110156105e957600080fd5b5051815182906000906105f857fe5b6001600160a01b03928316602091820292909201015260035482519116908290600190811061062357fe5b6001600160a01b0392831660209182029290920181019190915260015460405163b6f9de9560e01b815260006004820181815230604484018190524260648501819052608060248601908152895160848701528951969098169763b6f9de9597349795968b969495939460a49091019187810191028083838b5b838110156106b557818101518382015260200161069d565b50505050905001955050505050506000604051808303818588803b1580156106dc57600080fd5b505af11580156106f0573d6000803e3d6000fd5b5050600354604080516370a0823160e01b815230600482015290516000955061077b94508793506001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561074957600080fd5b505afa15801561075d573d6000803e3d6000fd5b505050506040513d602081101561077357600080fd5b505190610b8f565b60095490915061078b9082610bda565b600955600854600c546107b5916107ac916107a69085610c51565b90610caa565b600b5490610bda565b600b55505050565b600b5481565b600a5481565b6107d233610cec565b610823576040805162461bcd60e51b815260206004820152601760248201527f546f6f20736f6f6e2e204e65656420746f207761697421000000000000000000604482015290519081900360640190fd5b61082c33610919565b565b6000546001600160a01b0316331461084557600080fd5b600454806108535750610910565b60008060005a90505b848210801561086a57508383105b1561090b5783600f541061087e576000600f555b6108aa6004600f548154811061089057fe5b6000918252602090912001546001600160a01b0316610cec565b156108db576108db6004600f54815481106108c157fe5b6000918252602090912001546001600160a01b0316610919565b6108f06108e95a8390610b8f565b8390610bda565b91505a600f805460019081019091559390930192905061085c565b505050505b50565b600d5481565b6001600160a01b03811660009081526007602052604090205461093b57610910565b6000610946826103e8565b90508015610a3d57600a5461095b9082610bda565b600a556003546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156109b457600080fd5b505af11580156109c8573d6000803e3d6000fd5b505050506040513d60208110156109de57600080fd5b50506001600160a01b03821660009081526006602090815260408083204290556007909152902060020154610a139082610bda565b6001600160a01b03831660009081526007602052604090206002810191909155546103c590610c34565b5050565b600480546001600160a01b039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90910180546001600160a01b0319169091179055565b600480546000198101908110610ab457fe5b60009182526020808320909101546001600160a01b0384811684526005909252604090922054600480549290931692918110610aec57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600591829052604081205460048054919392916000198101908110610b3a57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610b6a57fe5b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610bd183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d28565b90505b92915050565b600082820183811015610bd1576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000610bd4600c546107a6600b5485610c5190919063ffffffff16565b600082610c6057506000610bd4565b82820282848281610c6d57fe5b0414610bd15760405162461bcd60e51b8152600401808060200182810382526021815260200180610e256021913960400191505060405180910390fd5b6000610bd183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610dbf565b600d546001600160a01b0382166000908152600660205260408120549091429101108015610bd45750600e54610d21836103e8565b1192915050565b60008184841115610db75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610d7c578181015183820152602001610d64565b50505050905090810190601f168015610da95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183610e0e5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610d7c578181015183820152602001610d64565b506000838581610e1a57fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122003e1d93fb75c6c85d9a7a204acc0ee744fe1dad48217a650b989a2b5ccd4bf4864736f6c63430007040033

Deployed ByteCode Sourcemap

11485:11946:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13189:60;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;14623:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15467:216;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15467:216:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;21336:98;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21336:98:0;;;;:::i;:::-;;14885:88;;;;;;;;;;;;;:::i;12644:27::-;;;;;;;;;;;;;:::i;18518:372::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18518:372:0;;;;;;;;;;;;;;;;;:::i;15065:142::-;;;;;;;;;;;;;:::i;12566:29::-;;;;;;;;;;;;;:::i;10855:103::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10855:103:0;-1:-1:-1;;;;;10855:103:0;;:::i;14799:80::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17430:273;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17430:273:0;;;;;;;;;;;;;;;;;;;:::i;17711:276::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17711:276:0;;;;;;;;;;;;;;;;:::i;12327:44::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12327:44:0;-1:-1:-1;;;;;12327:44:0;;:::i;12433:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12433:49:0;-1:-1:-1;;;;;12433:49:0;;:::i;12170:33::-;;;;;;;;;;;;;:::i;18203:139::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18203:139:0;;:::i;13088:40::-;;;;;;;;;;;;;:::i;15691:116::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15691:116:0;-1:-1:-1;;;;;15691:116:0;;:::i;16991:431::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16991:431:0;;;;;;;;;;;;;;;;;:::i;12602:33::-;;;;;;;;;;;;;:::i;12529:30::-;;;;;;;;;;;;;:::i;15215:105::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15215:105:0;-1:-1:-1;;;;;15215:105:0;;:::i;12766:30::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;12766:30:0;;;;;;;;;;;;;;16607:376;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16607:376:0;;;;;;;;;;:::i;12034:59::-;;;;;;;;;;;;;:::i;16103:106::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16103:106:0;;:::i;12100:57::-;;;;;;;;;;;;;:::i;14979:78::-;;;;;;;;;;;;;:::i;12378:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12378:48:0;-1:-1:-1;;;;;12378:48:0;;:::i;12803:24::-;;;;;;;;;;;;;:::i;14709:84::-;;;;;;;;;;;;;:::i;12491:31::-;;;;;;;;;;;;;:::i;16337:123::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16337:123:0;;;;;;;;;;:::i;12867:19::-;;;;;;;;;;;;;:::i;18354:156::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18354:156:0;;;;;;;;:::i;17995:200::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17995:200:0;;;;;;;:::i;10528:94::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10528:94:0;-1:-1:-1;;;;;10528:94:0;;:::i;12967:46::-;;;;;;;;;;;;;:::i;12895:25::-;;;;;;;;;;;;;:::i;12723:36::-;;;;;;;;;;;;;:::i;12678:::-;;;;;;;;;;;;;:::i;15992:103::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15992:103:0;;:::i;13135:45::-;;;;;;;;;;;;;:::i;15326:133::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15326:133:0;;;;;;;;;;:::i;16217:108::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16217:108:0;;;;:::i;10698:97::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10698:97:0;-1:-1:-1;;;;;10698:97:0;;:::i;11255:173::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11255:173:0;-1:-1:-1;;;;;11255:173:0;;:::i;12836:24::-;;;;;;;;;;;;;:::i;16468:131::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16468:131:0;;;;;;;;;;:::i;11029:107::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11029:107:0;-1:-1:-1;;;;;11029:107:0;;:::i;12927:31::-;;;;;;;;;;;;;:::i;13189:60::-;;;;:::o;14623:80::-;14695:5;;;;;;;;;;;;-1:-1:-1;;;14695:5:0;;;;14623:80;:::o;15467:216::-;15571:10;15542:4;15559:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;15559:32:0;;;;;;;;;;;:41;;;15616:37;;;;;;;15542:4;;15559:32;;15571:10;;15616:37;;;;;;;;-1:-1:-1;15671:4:0;15467:216;;;;;:::o;21336:98::-;10244:19;10252:10;10244:7;:19::i;:::-;10236:38;;;;;-1:-1:-1;;;10236:38:0;;;;;;;;;;;;-1:-1:-1;;;10236:38:0;;;;;;;;;;;;;;;21403:11:::1;:23:::0;;-1:-1:-1;;21403:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21336:98::o;14885:88::-;14958:12;;14885:88;:::o;12644:27::-;;;;:::o;18518:372::-;-1:-1:-1;;;;;18648:19:0;;18618:4;18648:19;;;:11;:19;;;;;;;;18668:10;18648:31;;;;;;;;-1:-1:-1;;18648:46:0;18645:180;;18744:69;;;;;;;;;;;-1:-1:-1;;;18744:69:0;;;;;;;;-1:-1:-1;;;;;18744:19:0;;-1:-1:-1;18744:19:0;;;:11;:19;;;;;18764:10;18744:31;;;;;;;;;;:69;;18780:6;;18744:35;:69::i;:::-;-1:-1:-1;;;;;18710:19:0;;;;;;:11;:19;;;;;;;;18730:10;18710:31;;;;;;;:103;18645:180;18842:40;18856:6;18864:9;18875:6;18842:13;:40::i;:::-;18835:47;;18518:372;;;;;;:::o;15065:142::-;15193:4;;15118:7;;15145:54;;15183:15;;-1:-1:-1;;;;;15193:4:0;15183:9;:15::i;:::-;15172:4;;15145:33;;15162:15;;-1:-1:-1;;;;;15172:4:0;15162:9;:15::i;:::-;15145:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;15138:61;;15065:142;:::o;12566:29::-;;;;:::o;10855:103::-;10910:4;10945:5;-1:-1:-1;;;;;10945:5:0;;;10934:16;;;;10855:103::o;14799:80::-;11669:2;14799:80;:::o;17430:273::-;10413:24;10426:10;10413:12;:24::i;:::-;10405:48;;;;;-1:-1:-1;;;10405:48:0;;;;;;;;;;;;-1:-1:-1;;;10405:48:0;;;;;;;;;;;;;;;17569:21:::1;:44:::0;;-1:-1:-1;;;;;17569:44:0;;::::1;-1:-1:-1::0;;;;;;17569:44:0;;::::1;;::::0;;;17624:15:::1;:36:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;17671:9:::1;:24:::0;;;;;::::1;::::0;::::1;;::::0;;17430:273::o;17711:276::-;10413:24;10426:10;10413:12;:24::i;:::-;10405:48;;;;;-1:-1:-1;;;10405:48:0;;;;;;;;;;;;-1:-1:-1;;;10405:48:0;;;;;;;;;;;;;;;17843:21:::1;:39:::0;;17893:13:::1;:32:::0;;;;17936:43;::::1;;::::0;::::1;-1:-1:-1::0;;17843:39:0;::::1;;;;-1:-1:-1::0;;17843:39:0;;::::1;::::0;;;::::1;17936:43:::0;;;::::1;;::::0;;17711:276::o;12327:44::-;;;;;;;;;;;;;;;:::o;12433:49::-;;;;;;;;;;;;;;;:::o;12170:33::-;;;;;;:::o;18203:139::-;10413:24;10426:10;10413:12;:24::i;:::-;10405:48;;;;;-1:-1:-1;;;10405:48:0;;;;;;;;;;;;-1:-1:-1;;;10405:48:0;;;;;;;;;;;;;;;18296:6:::1;18290:3;:12;18282:21;;;::::0;::::1;;18314:14;:20:::0;18203:139::o;13088:40::-;;;;;;;;;:::o;15691:116::-;15746:4;15770:29;15778:7;-1:-1:-1;;15770:7:0;:29::i;16991:431::-;10413:24;10426:10;10413:12;:24::i;:::-;10405:48;;;;;-1:-1:-1;;;10405:48:0;;;;;;;;;;;;-1:-1:-1;;;10405:48:0;;;;;;;;;;;;;;;17133:12:::1;:24:::0;;;17168:10:::1;:25:::0;;;17204:12:::1;:30:::0;;;17245:14:::1;:32:::0;;;17309:46:::1;17181:12:::0;17309:30:::1;17148:9:::0;17219:15;17309:16:::1;:30::i;:::-;:34:::0;::::1;:46::i;:::-;17298:8;:57:::0;;;17399:14:::1;::::0;17386:28:::1;::::0;17298:57;17386:12:::1;:28::i;:::-;17366:17;:48:::0;-1:-1:-1;;;;16991:431:0:o;12602:33::-;;;;:::o;12529:30::-;;;;:::o;15215:105::-;-1:-1:-1;;;;;15299:18:0;15281:7;15299:18;;;:9;:18;;;;;;;15215:105::o;12766:30::-;;;-1:-1:-1;;;;;12766:30:0;;:::o;16607:376::-;10413:24;10426:10;10413:12;:24::i;:::-;10405:48;;;;;-1:-1:-1;;;10405:48:0;;;;;;;;;;;;-1:-1:-1;;;10405:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;16707:23:0;::::1;16725:4;16707:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;16744:4:0::1;::::0;-1:-1:-1;;;;;16734:14:0;;::::1;16744:4:::0;::::1;16734:14;;16707:41;16699:50;;;::::0;::::1;;-1:-1:-1::0;;;;;16760:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;16760:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;16814:162:::1;;16839:19;::::0;:39:::1;::::0;;-1:-1:-1;;;16839:39:0;;-1:-1:-1;;;;;16839:39:0;;::::1;;::::0;::::1;::::0;16876:1:::1;16839:39:::0;;;;;;;;:19:::1;::::0;;::::1;;::::0;:28:::1;::::0;:39;;;;;16876:1;;16839:39;;;;;;16876:1;16839:19;:39;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16814:162;;;16909:19;::::0;-1:-1:-1;;;;;16946:17:0;;::::1;;::::0;;;:9:::1;:17;::::0;;;;;;16909:55;;-1:-1:-1;;;16909:55:0;;::::1;::::0;::::1;::::0;;;;;;;;;:19:::1;::::0;;::::1;::::0;;::::1;::::0;:28:::1;::::0;:55;;;;;16946:17;;16909:55;;;;;;16946:17;16909:19;:55;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16814:162;16607:376:::0;;:::o;12034:59::-;;;;:::o;16103:106::-;10413:24;10426:10;10413:12;:24::i;:::-;10405:48;;;;;-1:-1:-1;;;10405:48:0;;;;;;;;;;;;-1:-1:-1;;;10405:48:0;;;;;;;;;;;;;;;16179:10:::1;:22:::0;16103:106::o;12100:57::-;;;;:::o;14979:78::-;15031:7;15049:5;-1:-1:-1;;;;;15049:5:0;14979:78;:::o;12378:48::-;;;;;;;;;;;;;;;:::o;12803:24::-;;;-1:-1:-1;;;;;12803:24:0;;:::o;14709:84::-;14783:7;;;;;;;;;;;;-1:-1:-1;;;14783:7:0;;;;14709:84;:::o;12491:31::-;;;;:::o;16337:123::-;10413:24;10426:10;10413:12;:24::i;:::-;10405:48;;;;;-1:-1:-1;;;10405:48:0;;;;;;;;;;;;-1:-1:-1;;;10405:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;16424:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;16424:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16337:123::o;12867:19::-;;;-1:-1:-1;;;;;12867:19:0;;:::o;18354:156::-;18434:4;18458:44;18472:10;18484:9;18495:6;18458:13;:44::i;17995:200::-;10413:24;10426:10;10413:12;:24::i;:::-;10405:48;;;;;-1:-1:-1;;;10405:48:0;;;;;;;;;;;;-1:-1:-1;;;10405:48:0;;;;;;;;;;;;;;;18111:19:::1;;;;;;;;;-1:-1:-1::0;;;;;18111:19:0::1;-1:-1:-1::0;;;;;18111:43:0::1;;18155:11;18168:18;18111:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;10528:94:::0;10244:19;10252:10;10244:7;:19::i;:::-;10236:38;;;;;-1:-1:-1;;;10236:38:0;;;;;;;;;;;;-1:-1:-1;;;10236:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;10588:19:0::1;;::::0;;;10610:4:::1;10588:19;::::0;;;;;;;:26;;-1:-1:-1;;10588:26:0::1;::::0;;::::1;::::0;;10528:94::o;12967:46::-;;;;;;-1:-1:-1;;;;;12967:46:0;;:::o;12895:25::-;;;;:::o;12723:36::-;;;-1:-1:-1;;;;;12723:36:0;;:::o;12678:::-;;;;:::o;15992:103::-;10413:24;10426:10;10413:12;:24::i;:::-;10405:48;;;;;-1:-1:-1;;;10405:48:0;;;;;;;;;;;;-1:-1:-1;;;10405:48:0;;;;;;;;;;;;;;;16064:12:::1;:23:::0;15992:103::o;13135:45::-;;;;;;;;;:::o;15326:133::-;-1:-1:-1;;;;;15428:19:0;;;15410:7;15428:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;15326:133::o;16217:108::-;10413:24;10426:10;10413:12;:24::i;:::-;10405:48;;;;;-1:-1:-1;;;10405:48:0;;;;;;;;;;;;-1:-1:-1;;;10405:48:0;;;;;;;;;;;;;;;16292:14:::1;:25:::0;;-1:-1:-1;;16292:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16217:108::o;10698:97::-;10244:19;10252:10;10244:7;:19::i;:::-;10236:38;;;;;-1:-1:-1;;;10236:38:0;;;;;;;;;;;;-1:-1:-1;;;10236:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;10760:19:0::1;10782:5;10760:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;10760:27:0::1;::::0;;10698:97::o;11255:173::-;10244:19;10252:10;10244:7;:19::i;:::-;10236:38;;;;;-1:-1:-1;;;10236:38:0;;;;;;;;;;;;-1:-1:-1;;;10236:38:0;;;;;;;;;;;;;;;11331:5:::1;:11:::0;;-1:-1:-1;;;;;;11331:11:0::1;-1:-1:-1::0;;;;;11331:11:0;::::1;::::0;;::::1;::::0;;11353:19;;;-1:-1:-1;11353:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;11353:26:0::1;::::0;;::::1;::::0;;;11395:25;;;;;;;::::1;::::0;;;;;;;;;::::1;11255:173:::0;:::o;12836:24::-;;;-1:-1:-1;;;;;12836:24:0;;:::o;16468:131::-;10413:24;10426:10;10413:12;:24::i;:::-;10405:48;;;;;-1:-1:-1;;;10405:48:0;;;;;;;;;;;;-1:-1:-1;;;10405:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;16559:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;16559:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16468:131::o;11029:107::-;-1:-1:-1;;;;;11109:19:0;11085:4;11109:19;;;:14;:19;;;;;;;;;11029:107::o;12927:31::-;;;;;;:::o;303:179::-;361:7;393:5;;;417:6;;;;409:46;;;;;-1:-1:-1;;;409:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;634:190;720:7;756:12;748:6;;;;740:29;;;;-1:-1:-1;;;740:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;792:5:0;;;634:190::o;18898:1641::-;19020:16;;18990:4;;19020:16;;19017:73;;;19046:41;19061:6;19069:9;19080:6;19046:14;:41::i;:::-;19039:48;;;;19017:73;-1:-1:-1;;;;;19106:22:0;;;;;;:14;:22;;;;;;;;19105:23;:53;;;;-1:-1:-1;;;;;;19133:25:0;;;;;;:14;:25;;;;;;;;19132:26;19105:53;19102:128;;;19182:11;;;;19174:44;;;;;-1:-1:-1;;;19174:44:0;;;;;;;;;;;;-1:-1:-1;;;19174:44:0;;;;;;;;;;;;;;;19260:12;;19250:6;:22;;:49;;;-1:-1:-1;;;;;;19276:23:0;;;;;;:15;:23;;;;;;;;19250:49;19242:79;;;;;-1:-1:-1;;;19242:79:0;;;;;;;;;;;;-1:-1:-1;;;19242:79:0;;;;;;;;;;;;;;;19351:4;;-1:-1:-1;;;;;19351:4:0;19337:10;:18;;;;:39;;-1:-1:-1;19360:16:0;;;;19359:17;19337:39;:64;;;;-1:-1:-1;19380:21:0;;;;;;;19337:64;:109;;;;-1:-1:-1;19433:13:0;;19423:4;19405:24;;;;:9;:24;;;;;;:41;;19337:109;19334:128;;;19449:10;:8;:10::i;:::-;19478;:8;:10::i;:::-;19477:11;:32;;;;-1:-1:-1;19505:4:0;;-1:-1:-1;;;;;19492:17:0;;;19505:4;;19492:17;19477:32;19474:117;;;-1:-1:-1;;;;;19534:17:0;;19554:1;19534:17;;;:9;:17;;;;;;19526:30;;;;;;19571:8;:6;:8::i;:::-;19650:53;;;;;;;;;;;-1:-1:-1;;;19650:53:0;;;;;;;;-1:-1:-1;;;;;19650:17:0;;-1:-1:-1;19650:17:0;;;:9;:17;;;;;;;;:53;;19672:6;;19650:21;:53::i;:::-;-1:-1:-1;;;;;19630:17:0;;;;;;;:9;:17;;;;;;;;:73;;;;19728:26;;;;;:15;:26;;;;;;;19727:27;:45;;;;-1:-1:-1;19758:14:0;;;;19727:45;19724:141;;;19842:10;;-1:-1:-1;;;;;19806:20:0;;;;;;:9;:20;;;;;;:32;;19831:6;19806:24;:32::i;:::-;:46;;19798:55;;;;;;-1:-1:-1;;;;;19900:19:0;;19877;19900;;;:11;:19;;;;;;;;19899:20;:47;;;;-1:-1:-1;;;;;;19924:22:0;;;;;;:11;:22;;;;;;;;19923:23;19899:47;:93;;19986:6;19899:93;;;19949:34;19957:6;19965:9;19976:6;19949:7;:34::i;:::-;-1:-1:-1;;;;;20026:20:0;;;;;;:9;:20;;;;;;19877:115;;-1:-1:-1;20026:37:0;;19877:115;20026:24;:37::i;:::-;-1:-1:-1;;;;;20003:20:0;;;;;;;:9;:20;;;;;;;;:60;;;;20109:24;;;;;:16;:24;;;;;;;20105:127;;20154:19;;-1:-1:-1;;;;;20191:17:0;;;;;;;:9;:17;;;;;;;20154:55;;-1:-1:-1;;;20154:55:0;;;;;;;;;;;;;;:19;;;;;;;;:28;;:55;;;;;20191:17;;20154:55;;;;;;20191:17;20154:19;:55;;;;;;;;;;;;;;;;;;;;;;;;;20150:71;;-1:-1:-1;;;;;20248:27:0;;;;;;:16;:27;;;;;;;;20244:137;;20296:19;;-1:-1:-1;;;;;20336:20:0;;;;;;;:9;:20;;;;;;;20296:61;;-1:-1:-1;;;20296:61:0;;;;;;;;;;;;;;:19;;;;;;;;:28;;:61;;;;;20336:20;;20296:61;;;;;;20336:20;20296:19;:61;;;;;;;;;;;;;;;;;;;;;;;;;20292:77;;20397:19;;;;;;;;;-1:-1:-1;;;;;20397:19:0;-1:-1:-1;;;;;20397:27:0;;20425:14;;20397:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20393:59;20486:9;-1:-1:-1;;;;;20469:40:0;20478:6;-1:-1:-1;;;;;20469:40:0;;20497:11;20469:40;;;;;;;;;;;;;;;;;;-1:-1:-1;20527:4:0;;18898:1641;-1:-1:-1;;;;18898:1641:0:o;490:136::-;548:7;575:43;579:1;582;575:43;;;;;;;;;;;;;;;;;:3;:43::i;20551:330::-;20681:53;;;;;;;;;;;-1:-1:-1;;;20681:53:0;;;;;;;;-1:-1:-1;;;;;20681:17:0;;20644:4;20681:17;;;:9;:17;;;;;;;:53;;20703:6;;20681:21;:53::i;:::-;-1:-1:-1;;;;;20661:17:0;;;;;;;:9;:17;;;;;;:73;;;;20768:20;;;;;;;:32;;20793:6;20768:24;:32::i;:::-;-1:-1:-1;;;;;20745:20:0;;;;;;;:9;:20;;;;;;;;;:55;;;;20816:35;;;;;;;20745:20;;20816:35;;;;;;;;;;;;;-1:-1:-1;20869:4:0;20551:330;;;;;:::o;21442:1920::-;13294:16;:23;;-1:-1:-1;;13294:23:0;13313:4;13294:23;;;21548:4:::1;13294:16:::0;21530:24;;;:9:::1;:24;::::0;;;;;21629:8:::1;::::0;21611:12:::1;::::0;21530:24;;13294:16;21591:54:::1;::::0;21643:1:::1;::::0;21591:47:::1;::::0;21629:8;21591:47;;21530:24;;21591:19:::1;:33::i;:::-;:37:::0;::::1;:47::i;:54::-;21565:80:::0;-1:-1:-1;21656:20:0::1;21679:36;:15:::0;21565:80;21679:19:::1;:36::i;:::-;21752:16;::::0;;21766:1:::1;21752:16:::0;;;21728:21:::1;21752:16:::0;;::::1;::::0;;21656:59;;-1:-1:-1;21752:16:0;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;21752:16:0::1;21728:40;;21797:4;21779;21784:1;21779:7;;;;;;;;-1:-1:-1::0;;;;;21779:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;21823:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;21823:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;21779:7;;21823:13;;;;;:6;:13;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;21823:13:0;21813:7;;:4;;21818:1:::1;::::0;21813:7;::::1;;;;;;;;;;:23;-1:-1:-1::0;;;;;21813:23:0::1;;;-1:-1:-1::0;;;;;21813:23:0::1;;;::::0;::::1;21849:6;;;;;;;;;-1:-1:-1::0;;;;;21849:6:0::1;-1:-1:-1::0;;;;;21849:57:0::1;;21921:12;21948:1;21964:4;21991;22011:15;21849:188;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;21849:188:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;22139:12:0::1;::::0;22070:21:::1;::::0;-1:-1:-1;22050:17:0::1;::::0;-1:-1:-1;22126:33:0::1;::::0;22139:19:::1;::::0;22156:1:::1;22139:16;:19::i;:::-;22126:8;::::0;;:12:::1;:33::i;:::-;22104:55;;22180:26;22209:51;22258:1;22209:44;22241:11;22209:27;22223:12;;22209:9;:13;;:27;;;;:::i;:51::-;22180:80;;22271:27;22301:42;22331:11;22301:25;22315:10;;22301:9;:13;;:25;;;;:::i;:42::-;22271:72:::0;-1:-1:-1;22354:26:0::1;22383:58;22271:72:::0;22383:33:::1;:9:::0;22397:18;22383:13:::1;:33::i;:58::-;22354:87;;22458:19;;;;;;;;;-1:-1:-1::0;;;;;22458:19:0::1;-1:-1:-1::0;;;;;22458:27:0::1;;22493:19;22458:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;22454:73:::0;22547:22:::1;22572:32;22602:1;22572:25;:18:::0;22595:1:::1;22572:22;:25::i;:32::-;22547:57:::0;-1:-1:-1;22615:16:0::1;22634:38;:18:::0;22547:57;22634:22:::1;:38::i;:::-;22722:15;::::0;22714:68:::1;::::0;22615:57;;-1:-1:-1;22694:15:0::1;::::0;-1:-1:-1;;;;;22722:15:0;;::::1;::::0;22772:5:::1;::::0;22751:14;;22694:15;22714:68;22694:15;22714:68;22751:14;22722:15;22772:5;22714:68:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;22823:9:0::1;::::0;22815:56:::1;::::0;22693:89;;-1:-1:-1;22794:16:0::1;::::0;-1:-1:-1;;;;;22823:9:0;;::::1;::::0;22861:5:::1;::::0;22846:8;;22794:16;22815:56;22794:16;22815:56;22846:8;22823:9;22861:5;22815:56:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;22945:5:0::1;::::0;-1:-1:-1;22945:5:0;;-1:-1:-1;;22996:19:0;;;-1:-1:-1;22993:362:0::1;;23031:6;;;;;;;;;-1:-1:-1::0;;;;;23031:6:0::1;-1:-1:-1::0;;;;;23031:22:0::1;;23061:18;23107:4;23131:15;23165:1;23185::::0;23205:21:::1;;;;;;;;;-1:-1:-1::0;;;;;23205:21:0::1;23245:15;23031:244;;;;;;;;;;;;;-1:-1:-1::0;;;;;23031:244:0::1;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;23031:244:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;23031:244:0;23295:48;;;;;23031:244:::1;23295:48:::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;22993:362;-1:-1:-1::0;;13340:16:0;:24;;-1:-1:-1;;13340:24:0;;;-1:-1:-1;;;;;;;;;;;21442:1920:0:o;15815:90::-;15882:10;;:15;;15815:90;:::o;15913:71::-;15964:12;15951:10;:25;15913:71::o;20889:439::-;21029:4;;20975:7;;;;-1:-1:-1;;;;;21029:17:0;;;:4;;:17;:48;;21069:8;;21029:48;;;21049:17;;21029:48;21005:72;-1:-1:-1;21088:17:0;21108:34;21138:3;21108:25;:6;21005:72;21108:10;:25::i;:34::-;21200:4;21182:24;;;;:9;:24;;;;;;21088:54;;-1:-1:-1;21182:39:0;;21088:54;21182:28;:39::i;:::-;21173:4;21155:24;;;;:9;:24;;;;;;;;;:66;;;;21237:42;;;;;;;21173:4;;-1:-1:-1;;;;;21237:42:0;;;;;;;;;;;;;21299:21;:6;21310:9;21299:10;:21::i;:::-;21292:28;20889:439;-1:-1:-1;;;;;;20889:439:0:o;832:224::-;890:7;914:6;910:25;;-1:-1:-1;931:1:0;924:8;;910:25;957:5;;;961:1;957;:5;:1;981:5;;;;;:10;973:56;;;;-1:-1:-1;;;973:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1064:132;1122:7;1149:39;1153:1;1156;1149:39;;;;;;;;;;;;;;;;;1290:7;1325:12;1318:5;1310:28;;;;-1:-1:-1;;;1310:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1349:9;1365:1;1361;:5;;;;;;;1204:189;-1:-1:-1;;;;;1204:189:0:o

Swarm Source

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