ETH Price: $2,686.95 (-0.37%)
Gas: 0.72 Gwei

Contract

0xFEb6d5238Ed8F1d59DCaB2db381AA948e625966D
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

TokenTracker

Doge-TV ($DGTV) (@$0.0003)
Transaction Hash
Method
Block
From
To
Approve217790742025-02-05 8:23:2312 days ago1738743803IN
DogeTV: $DGTV Token
0 ETH0.000069111.48665825
Approve217789632025-02-05 8:01:1112 days ago1738742471IN
DogeTV: $DGTV Token
0 ETH0.000061371.32008549
Approve217789332025-02-05 7:54:5912 days ago1738742099IN
DogeTV: $DGTV Token
0 ETH0.000064271.38251794
Approve217523172025-02-01 14:38:1115 days ago1738420691IN
DogeTV: $DGTV Token
0 ETH0.000125512.69969907
Approve217522912025-02-01 14:32:5915 days ago1738420379IN
DogeTV: $DGTV Token
0 ETH0.000125652.70280953
Approve217521472025-02-01 14:04:1115 days ago1738418651IN
DogeTV: $DGTV Token
0 ETH0.000254095.4653274
Approve217520302025-02-01 13:40:4715 days ago1738417247IN
DogeTV: $DGTV Token
0 ETH0.000179283.85614974
Approve217519962025-02-01 13:33:4715 days ago1738416827IN
DogeTV: $DGTV Token
0 ETH0.000132922.85910056
Approve217460842025-01-31 17:45:2316 days ago1738345523IN
DogeTV: $DGTV Token
0 ETH0.00028056.03350132
Approve217460532025-01-31 17:39:1116 days ago1738345151IN
DogeTV: $DGTV Token
0 ETH0.00029746.39686363
Approve217085882025-01-26 12:07:5921 days ago1737893279IN
DogeTV: $DGTV Token
0 ETH0.000119964.95556253
Approve216432632025-01-17 9:17:1130 days ago1737105431IN
DogeTV: $DGTV Token
0 ETH0.000345047.42169695
Approve216432442025-01-17 9:13:2330 days ago1737105203IN
DogeTV: $DGTV Token
0 ETH0.000322616.93918776
Approve216432022025-01-17 9:04:5930 days ago1737104699IN
DogeTV: $DGTV Token
0 ETH0.000345527.4318487
Approve216428962025-01-17 8:03:2331 days ago1737101003IN
DogeTV: $DGTV Token
0 ETH0.000180863.90741032
Approve216426802025-01-17 7:19:3531 days ago1737098375IN
DogeTV: $DGTV Token
0 ETH0.000264915.6994585
Approve215058832024-12-29 4:57:1150 days ago1735448231IN
DogeTV: $DGTV Token
0 ETH0.000118244.88462866
Approve214631412024-12-23 5:36:3556 days ago1734932195IN
DogeTV: $DGTV Token
0 ETH0.000290436.24699659
Approve208499162024-09-28 15:05:23141 days ago1727535923IN
DogeTV: $DGTV Token
0 ETH0.000209148.61808516
Approve206997582024-09-07 15:55:59162 days ago1725724559IN
DogeTV: $DGTV Token
0 ETH0.000043681.8
Approve206997562024-09-07 15:55:35162 days ago1725724535IN
DogeTV: $DGTV Token
0 ETH0.000041151.7
Approve203863472024-07-25 21:48:35206 days ago1721944115IN
DogeTV: $DGTV Token
0 ETH0.000088423.6438362
Approve202991132024-07-13 17:36:23218 days ago1720892183IN
DogeTV: $DGTV Token
0 ETH0.000138863
Approve202807872024-07-11 4:10:47221 days ago1720671047IN
DogeTV: $DGTV Token
0 ETH0.000079173.27055939
Approve202761472024-07-10 12:37:59221 days ago1720615079IN
DogeTV: $DGTV Token
0 ETH0.000216268.23291239
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
217790822025-02-05 8:24:5912 days ago1738743899
DogeTV: $DGTV Token
0.00000002 ETH
217790822025-02-05 8:24:5912 days ago1738743899
DogeTV: $DGTV Token
0.00000002 ETH
217790772025-02-05 8:23:5912 days ago1738743839
DogeTV: $DGTV Token
0.00000002 ETH
217790772025-02-05 8:23:5912 days ago1738743839
DogeTV: $DGTV Token
0.00000002 ETH
217789712025-02-05 8:02:4712 days ago1738742567
DogeTV: $DGTV Token
0.00000002 ETH
217789712025-02-05 8:02:4712 days ago1738742567
DogeTV: $DGTV Token
0.00000002 ETH
217789662025-02-05 8:01:4712 days ago1738742507
DogeTV: $DGTV Token
0.00000002 ETH
217789662025-02-05 8:01:4712 days ago1738742507
DogeTV: $DGTV Token
0.00000002 ETH
217789422025-02-05 7:56:5912 days ago1738742219
DogeTV: $DGTV Token
0.00000003 ETH
217789422025-02-05 7:56:5912 days ago1738742219
DogeTV: $DGTV Token
0.00000003 ETH
217789352025-02-05 7:55:2312 days ago1738742123
DogeTV: $DGTV Token
0.00000003 ETH
217789352025-02-05 7:55:2312 days ago1738742123
DogeTV: $DGTV Token
0.00000003 ETH
217523342025-02-01 14:41:3515 days ago1738420895
DogeTV: $DGTV Token
0.00000003 ETH
217523342025-02-01 14:41:3515 days ago1738420895
DogeTV: $DGTV Token
0.00000003 ETH
217523282025-02-01 14:40:2315 days ago1738420823
DogeTV: $DGTV Token
0.00000003 ETH
217523282025-02-01 14:40:2315 days ago1738420823
DogeTV: $DGTV Token
0.00000003 ETH
217523012025-02-01 14:34:5915 days ago1738420499
DogeTV: $DGTV Token
0.00000004 ETH
217523012025-02-01 14:34:5915 days ago1738420499
DogeTV: $DGTV Token
0.00000004 ETH
217522942025-02-01 14:33:3515 days ago1738420415
DogeTV: $DGTV Token
0.00000004 ETH
217522942025-02-01 14:33:3515 days ago1738420415
DogeTV: $DGTV Token
0.00000004 ETH
217521572025-02-01 14:06:1115 days ago1738418771
DogeTV: $DGTV Token
0.00000004 ETH
217521572025-02-01 14:06:1115 days ago1738418771
DogeTV: $DGTV Token
0.00000004 ETH
217521532025-02-01 14:05:2315 days ago1738418723
DogeTV: $DGTV Token
0.00000005 ETH
217521532025-02-01 14:05:2315 days ago1738418723
DogeTV: $DGTV Token
0.00000005 ETH
217520412025-02-01 13:42:5915 days ago1738417379
DogeTV: $DGTV Token
0.00000005 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DogeTV

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-27
*/

pragma solidity ^0.8.7;
//SPDX-License-Identifier: UNLICENCED
/*
    DogeTV
    8% tax on buy and sell, 8% tax on transfers
    starting taxes: 20/25%
    contract dev: @CryptoBatmanBSC
    Telegram:
    https://t.me/dogetvofficial
    Website: 
    https://Dogetv.app 
*/

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

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

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

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

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

        return c;
    }
}

interface INFTREWARDS {
    function Deposit(uint256 amount) external returns (bool success);
}

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

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

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

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

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

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

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

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

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

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

    event OwnershipTransferred(address owner);
}

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

interface IDEXRouter {
    function factory() external pure returns (address);
    function 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;
    
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}


contract DogeTV is IERC20, Auth {

    struct DogeTvPackage{
        uint256 price;
        uint256 durationDays;
        uint256 packageID;
        string name;
        bool isOnlySpecial;
    }

    struct SubbedTvPackage{
        uint256 subbedTime;
        uint256 expiration_time;
        uint256 packageID;
        uint256 packageVariant;
        bool wasDiscounted;
        bool isSpecial;
    }

    using SafeMath for uint256;
    // fees. all uint8 for gas efficiency and storage.
    /* @dev   
        all fees are set with 1 decimal places added, please remember this when setting fees.
    */
    uint8 public liquidityFee = 20;
    uint8 public marketingFee = 60;
    uint8 public totalFee = 80;

    uint8 public initialSellFee = 250;
    uint8 public initialBuyFee = 200;

    /*
    @dev:
        these are multipled by 10 so that you can have fractional percents
    */
    uint8 public specialPercentHigh = 20;
    uint8 public specialPercentLow = 16;

    uint8 public discountPercentHigh = 15;
    uint8 public discountPercentLow = 10;


    // denominator. uint 16 for storage efficiency - makes the above fees all to 1 dp.
    uint16 public AllfeeDenominator = 1000;
    
    // trading control;
    bool public canTrade = false;
    uint256 public launchedAt;
    
    
    // tokenomics - uint256 BN but located here fro storage efficiency
    uint256 _totalSupply = 1 * 10**7 * (10 **_decimals); //10 mil
    uint256 public _maxTxAmount = _totalSupply / 100; // 1%
    uint256 public _maxHoldAmount = _totalSupply / 50; // 2%
    uint256 public swapThreshold = _totalSupply / 500; // 0.2%

    //Important addresses    
    address USDT = 0xdAC17F958D2ee523a2206206994597C13D831ec7; // mainnet tether, used to get price;
    //address USDT = 0xF99a0CbEa2799f8d4b51709024454F74eD63a86D;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    address public autoLiquidityReceiver;
    address public marketingFeeReceiver;

    address public pair;

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

    mapping (address => bool) public pairs;

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) isMaxHoldExempt;
    mapping (address => bool) isBlacklisted;

    mapping (address => SubbedTvPackage) public userSubs;

    IDEXRouter public router;
    INFTREWARDS public NftStakingContract;


    bool public swapEnabled = true;
    bool inSwap;
    mapping(uint =>  DogeTvPackage) public DtvPackages;
    //DogeTvPackage[] public DtvPackages;
    address[] public subbedUsers;
    uint public totalSubs;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    string constant _name = "Doge-TV";
    string constant _symbol = "$DGTV";
    uint8 constant _decimals = 18;

    bool public initialTaxesEnabled = true;

    constructor (address tokenOwner) Auth(tokenOwner) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //Mainnet Uniswap
        pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this)); // ETH pair
        pairs[pair] = true;
        _allowances[address(this)][address(router)] = _totalSupply;
        isMaxHoldExempt[pair] = true;
        isMaxHoldExempt[DEAD] = true;
        isMaxHoldExempt[ZERO] = true;
        
        owner = tokenOwner;
        DummyNFT nftctrct = new DummyNFT(address(this), owner);
        NftStakingContract = INFTREWARDS(nftctrct);
        isTxLimitExempt[owner] = true;
        isFeeExempt[owner] = true;
        authorizations[owner] = true;
        isMaxHoldExempt[owner] = true;
        autoLiquidityReceiver = owner;
        marketingFeeReceiver = owner;

        _balances[owner] = _totalSupply;

        emit Transfer(address(0), owner, _totalSupply);
    }

    receive() external payable { }

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

    
    function getEstimatedTokenForUSDT(uint USDTAmount) public view returns (uint) {
            address[] memory path = new address[](3);
                path[0] = USDT;
                path[1] = router.WETH();
                path[2] = address(this);
            return router.getAmountsOut(USDTAmount, path)[2];
    }
    
    function setBlacklistedStatus(address walletToBlacklist, bool isBlacklistedBool)external authorized{
        isBlacklisted[walletToBlacklist] = isBlacklistedBool;
    }

    function setBlacklistArray(address[] calldata walletToBlacklistArray)external authorized{
        for(uint i = 0; i < walletToBlacklistArray.length; i++){
            isBlacklisted[walletToBlacklistArray[i]] = true;
        }
    }

    function getPackageWithId(uint ID) internal view returns (DogeTvPackage memory package){
                return DtvPackages[ID];
    }

    function subToPackage(uint _packageID, uint durationVariant)external returns(bool success){
            /*
             struct SubbedTvPackage{
                uint256 expiration_time;
                uint256 packageID;
                bool wasDiscounted;
                bool isSpecial;
            }
            */
            DogeTvPackage memory pack = getPackageWithId(_packageID);
            // get the price in token
            uint256 tokenPrice = getEstimatedTokenForUSDT(pack.price);
            
            require(_balances[msg.sender] >= tokenPrice, "DogeTV, You dont have enough token for this");
            uint divisor = 1;
            bool isfree = false;
            bool isDiscounted = false;
            uint256 percentageHeld = ((_balances[msg.sender]*10) / _totalSupply) * 100;
            if(percentageHeld >= discountPercentLow && percentageHeld <= discountPercentHigh){
                divisor = 2;
                isDiscounted = true;
            }
            if(percentageHeld > specialPercentLow){
                isfree = true;
            }
            if(pack.isOnlySpecial){
                require(isfree, "DogeTV: this package is not available to anyone not holding the requirements");
            }
            tokenPrice = tokenPrice / divisor;
            SubbedTvPackage memory packageSubbed;
            if(!isfree){
                require(!pack.isOnlySpecial, "DTV, only high percentage holders can have this package");
                _balances[msg.sender] -= tokenPrice;
                _balances[DEAD] += tokenPrice /2;
                emit Transfer(msg.sender, DEAD, tokenPrice/2);
                _balances[address(NftStakingContract)]+= tokenPrice/2;
                NftStakingContract.Deposit(tokenPrice/2);
                emit Transfer(msg.sender, address(NftStakingContract), tokenPrice/2);
            }
            
            packageSubbed.packageID =  pack.packageID;
            packageSubbed.wasDiscounted = isDiscounted;
            packageSubbed.isSpecial = isfree;
            packageSubbed.subbedTime = block.timestamp;
            packageSubbed.packageVariant = durationVariant;
            packageSubbed.expiration_time = block.timestamp + pack.durationDays * 86400;
            emit PackageSubbed(msg.sender, pack.name);
            userSubs[msg.sender] = packageSubbed;
            subbedUsers.push(msg.sender);
            return true;
    }

    function checkSubs(address user)internal view returns (bool wasdiscounted, bool isSpecial){
        return (userSubs[user].wasDiscounted,userSubs[user].isSpecial );
    }

    function getSubbedUsersLength()external view returns (uint SubbedUsersLength){
        return subbedUsers.length;
    }

    function setNFTContract(INFTREWARDS ctrct)external authorized{
        NftStakingContract = ctrct;
    }

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

    function setSwapThresholdDivisor(uint divisor)external authorized {
        require(divisor >= 100, "DogeTV: max sell percent is 1%");
        swapThreshold = _totalSupply / divisor;
    }
    
    function approveMax(address spender) external returns (bool) {
        return approve(spender, _totalSupply);
    }
    
    function setmaxholdpercentage(uint256 percentageMul10) external authorized {
        require(percentageMul10 >= 5, "DogeTV, max hold cannot be less than 0.5%"); // cant change percentage below 0.5%, so everyone can hold the percentage
        _maxHoldAmount = _totalSupply * percentageMul10 / 1000; // percentage based on amount
    }
    
    function allowtrading()external authorized {
        canTrade = true;
    }
    
    function addNewPair(address newPair)external authorized{
        pairs[newPair] = true;
        isMaxHoldExempt[newPair] = true;
    }
    
    function removePair(address pairToRemove)external authorized{
        pairs[pairToRemove] = false;
        isMaxHoldExempt[pairToRemove] = false;
    }

    function addTVPackage( uint256 ppvID, uint256 _USDTPriceNoDecimals, uint256 _durationDays, string calldata packName, bool onlyTopHolders) external authorized {
        DogeTvPackage memory packageToAdd;
        packageToAdd.durationDays = _durationDays;
        packageToAdd.packageID = ppvID;
        packageToAdd.name = packName;
        packageToAdd.price = _USDTPriceNoDecimals * 10 ** 18;
        packageToAdd.isOnlySpecial = onlyTopHolders;
        DtvPackages[ppvID] = packageToAdd;
    }

    function changeTvPackagePrice(uint256 _ID, uint256 newPrice) external authorized returns(bool success){
                DtvPackages[_ID].price = newPrice * 10 ** 18;
                return true;
    }

    function removeTvPackage(uint256 _ID) external authorized returns(bool success){
                delete DtvPackages[_ID];
                return true;
    }
    
    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(_totalSupply)){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

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

        if(!canTrade){
            require(sender == owner, "DogeTV, Only owner or presale Contract allowed to add LP"); // only owner allowed to trade or add liquidity
        }
        if(sender != owner && recipient != owner){
            if(!pairs[recipient] && !isMaxHoldExempt[recipient]){
                require (balanceOf(recipient) + amount <= _maxHoldAmount, "DogeTV, cant hold more than max hold dude, sorry");
            }
        }
        
        checkTxLimit(sender, recipient, amount);
        require(!isBlacklisted[sender] && !isBlacklisted[recipient], "DogeTV, Sorry bro, youre blacklisted");
        if(!launched() && pairs[recipient]){ require(_balances[sender] > 0); launch(); }
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }
        
        _balances[sender] = _balances[sender].sub(amount, "DogeTV, Insufficient Balance");

        if(pairs[recipient]){
            // its a sell
            /*
                struct SubbedTvPackage{
                    uint256 subbedTime;
                    uint256 expiration_time;
                    uint256 packageID;
                    uint256 packageVariant;
                    bool wasDiscounted;
                    bool isSpecial;
                }
            */
            (bool discounted, bool special) = checkSubs(sender);
            if(special){
                if((_balances[sender] * 10 /100) < specialPercentLow){ // theyve crossed the threshold
                    delete userSubs[sender];
                    emit SubWithdrawn(sender);
                }
            }
            if(discounted){
                 if((_balances[sender] * 10 /100) < discountPercentLow){ // theyve crossed the threshold
                     userSubs[sender].expiration_time = userSubs[sender].subbedTime + ((userSubs[sender].expiration_time - userSubs[sender].subbedTime) / 2);
                     if(userSubs[sender].expiration_time >= block.timestamp){
                        delete userSubs[sender];
                        emit SubWithdrawn(sender);
                     }
                }
            }
        }

        uint256 amountReceived = 0;
        if(!shouldTakeFee(sender) || !shouldTakeFee(recipient)){
            amountReceived = amount;
        }else{
            bool isbuy = pairs[sender];
            amountReceived = takeFee(sender, isbuy, amount);
        }

        if(shouldSwapBack(recipient)){ swapBack(); }

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

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

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

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

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

    function takeFee(address sender, bool isBuy, uint256 amount) internal returns (uint256) {
        uint fee = totalFee;
        if(initialTaxesEnabled){
            fee = initialSellFee;
            if(isBuy){
                fee = initialBuyFee;
            }
        }

        uint256 feeAmount = amount.mul(fee).div(AllfeeDenominator);
        
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function setInitialfees(uint8 _initialBuyFeePercentMul10, uint8 _initialSellFeePercentMul10) external authorized {
        if(initialBuyFee >= _initialBuyFeePercentMul10){initialBuyFee = _initialBuyFeePercentMul10;}else{initialTaxesEnabled = false;}
        if(initialSellFee >= _initialSellFeePercentMul10){initialSellFee = _initialSellFeePercentMul10;}else{initialTaxesEnabled = false;}
    }

    // returns any mis-sent tokens to the marketing wallet
    function claimtokensback(IERC20 tokenAddress) external authorized {
        payable(marketingFeeReceiver).transfer(address(this).balance);
        tokenAddress.transfer(marketingFeeReceiver, tokenAddress.balanceOf(address(this)));
    }

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

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

    function stopInitialTax()external authorized{
        // this can only ever be called once
        initialTaxesEnabled = false;
    }

    function setTxLimit(uint256 amount) external authorized {
        require(amount >= _totalSupply / 200, "DogeTV, must be higher than 0.5%");
        require(amount > _maxTxAmount, "DogeTV, can only ever increase the tx limit");
        _maxTxAmount = amount;
    }

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


    function setIsTxLimitExempt(address holder, bool exempt) external authorized {
        isTxLimitExempt[holder] = exempt;
    }
    /*
    Dev sets the individual buy fees
    */
    function setFees(uint8 _liquidityFeeMul10, uint8 _marketingFeeMul10) external authorized {
        require(_liquidityFeeMul10 + _marketingFeeMul10 <= 80, "DogeTV taxes can never exceed 8%");
        require(_liquidityFeeMul10 + _marketingFeeMul10 <= totalFee, "Dogetv, taxes can only ever change ratio");
        liquidityFee = _liquidityFeeMul10;
        marketingFee = _marketingFeeMul10;
       
        totalFee = _liquidityFeeMul10 + (_marketingFeeMul10) ;
    }

    function setSpecialPackPercentages(uint8 percentLowerMul10, uint8 percentHigherMul10) external authorized {
        
        specialPercentHigh = percentHigherMul10;
        specialPercentLow = percentLowerMul10;
       
    }

    function setDiscountPackPercentages(uint8 percentLowerMul10, uint8 percentHigherMul10) external authorized {
        
        discountPercentHigh = percentHigherMul10;
        discountPercentLow = percentLowerMul10;
       
    }
    
    function swapBack() internal swapping {
        uint256 amountToLiquify = 0;
        if(liquidityFee > 0){
            amountToLiquify = swapThreshold.mul(liquidityFee).div(totalFee).div(2); // leave some tokens for liquidity addition
        }
        
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify); // swap everything bar the liquidity tokens. we need to add a pair

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        uint256 balanceBefore = address(this).balance;
        
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp + 100
        );

        uint256 amountETH = address(this).balance.sub(balanceBefore);
        
        uint256 totalETHFee = totalFee - (liquidityFee /2);
        if(totalETHFee > 0){
            uint256 amountETHMarketing = 0;
            if(marketingFee > 0){
                amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
                payable(marketingFeeReceiver).transfer(amountETHMarketing);
            }
            if(amountToLiquify > 0){
                
                uint256 amountETHLiquidity = amountETH - amountETHMarketing;
                router.addLiquidityETH{value: amountETHLiquidity}(
                    address(this),
                    amountToLiquify,
                    0,
                    0,
                    autoLiquidityReceiver,
                    block.timestamp
                );
                emit AutoLiquify(amountETHLiquidity, amountToLiquify);
            }
        }
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver) external authorized {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }
    
    function shouldSwapBack(address recipient) internal view returns (bool) {
        return !inSwap
        && swapEnabled
        && pairs[recipient]
        && _balances[address(this)] >= swapThreshold;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    event AutoLiquify(uint256 amountPairToken, uint256 amountToken);
    event PackageSubbed(address user,string packName);
    event SubWithdrawn(address user);

}

contract DummyNFT is INFTREWARDS {

    address public owner;
    IERC20 public rewardToken;
    uint256 oldBalance;

    function Deposit(uint amount) external override returns (bool success) {
        require(oldBalance + amount == rewardToken.balanceOf(address(this)));
        // reflect the amount here
        oldBalance = rewardToken.balanceOf(address(this));
        return true;

    }

    function claimTokensBack()external {
        require(msg.sender == owner);
        rewardToken.transfer(msg.sender, rewardToken.balanceOf(address(this)));
        oldBalance = rewardToken.balanceOf(address(this));
    }

     constructor (address rewardsToken, address _owner){
         owner = _owner;
         rewardToken = IERC20(rewardsToken);
     }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"}],"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":"amountPairToken","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToken","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":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"string","name":"packName","type":"string"}],"name":"PackageSubbed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"}],"name":"SubWithdrawn","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":"AllfeeDenominator","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"DtvPackages","outputs":[{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"durationDays","type":"uint256"},{"internalType":"uint256","name":"packageID","type":"uint256"},{"internalType":"string","name":"name","type":"string"},{"internalType":"bool","name":"isOnlySpecial","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NftStakingContract","outputs":[{"internalType":"contract INFTREWARDS","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxHoldAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newPair","type":"address"}],"name":"addNewPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ppvID","type":"uint256"},{"internalType":"uint256","name":"_USDTPriceNoDecimals","type":"uint256"},{"internalType":"uint256","name":"_durationDays","type":"uint256"},{"internalType":"string","name":"packName","type":"string"},{"internalType":"bool","name":"onlyTopHolders","type":"bool"}],"name":"addTVPackage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allowtrading","outputs":[],"stateMutability":"nonpayable","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":[],"name":"canTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_ID","type":"uint256"},{"internalType":"uint256","name":"newPrice","type":"uint256"}],"name":"changeTvPackagePrice","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"tokenAddress","type":"address"}],"name":"claimtokensback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"discountPercentHigh","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"discountPercentLow","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"USDTAmount","type":"uint256"}],"name":"getEstimatedTokenForUSDT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSubbedUsersLength","outputs":[{"internalType":"uint256","name":"SubbedUsersLength","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialBuyFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialSellFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialTaxesEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"account","type":"address"}],"name":"isOwner","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":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","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":[{"internalType":"address","name":"","type":"address"}],"name":"pairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pairToRemove","type":"address"}],"name":"removePair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_ID","type":"uint256"}],"name":"removeTvPackage","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"walletToBlacklistArray","type":"address[]"}],"name":"setBlacklistArray","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"walletToBlacklist","type":"address"},{"internalType":"bool","name":"isBlacklistedBool","type":"bool"}],"name":"setBlacklistedStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"percentLowerMul10","type":"uint8"},{"internalType":"uint8","name":"percentHigherMul10","type":"uint8"}],"name":"setDiscountPackPercentages","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_liquidityFeeMul10","type":"uint8"},{"internalType":"uint8","name":"_marketingFeeMul10","type":"uint8"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_initialBuyFeePercentMul10","type":"uint8"},{"internalType":"uint8","name":"_initialSellFeePercentMul10","type":"uint8"}],"name":"setInitialfees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract INFTREWARDS","name":"ctrct","type":"address"}],"name":"setNFTContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"percentLowerMul10","type":"uint8"},{"internalType":"uint8","name":"percentHigherMul10","type":"uint8"}],"name":"setSpecialPackPercentages","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setSwapThresholdDivisor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentageMul10","type":"uint256"}],"name":"setmaxholdpercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"specialPercentHigh","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"specialPercentLow","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stopInitialTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_packageID","type":"uint256"},{"internalType":"uint256","name":"durationVariant","type":"uint256"}],"name":"subToPackage","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"subbedUsers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSubs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userSubs","outputs":[{"internalType":"uint256","name":"subbedTime","type":"uint256"},{"internalType":"uint256","name":"expiration_time","type":"uint256"},{"internalType":"uint256","name":"packageID","type":"uint256"},{"internalType":"uint256","name":"packageVariant","type":"uint256"},{"internalType":"bool","name":"wasDiscounted","type":"bool"},{"internalType":"bool","name":"isSpecial","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600280546001600160601b0319166a03e80a0f1014c8fa503c141790556200002f6012600a6200057f565b6200003e906298968062000640565b600455606460045462000052919062000513565b600555603260045462000066919062000513565b6006556101f46004546200007b919062000513565b600755600880546001600160a01b031990811673dac17f958d2ee523a2206206994597c13d831ec71790915560098054821661dead179055600a805490911690556017805460ff60a01b1916600160a01b179055601b805460ff19166001179055348015620000e957600080fd5b506040516200476b3803806200476b8339810160408190526200010c91620004e1565b600080546001600160a01b03199081166001600160a01b0384169081178355825260016020818152604093849020805460ff191690921790915560168054737a250d5630b4cf539739df2c5dacb4c659f2488d931683179055825163c45a015560e01b81529251919263c45a01559260048083019392829003018186803b1580156200019757600080fd5b505afa158015620001ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d29190620004e1565b6001600160a01b031663c9c65396601660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200022f57600080fd5b505afa15801562000244573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026a9190620004e1565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b158015620002b257600080fd5b505af1158015620002c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ed9190620004e1565b600d80546001600160a01b039283166001600160a01b0319918216811783556000908152601060209081526040808320805460ff19908116600190811790925560045430808752600f86528487206016548b16885286528487209190915596548816855260139093528184208054841682179055600954871684528184208054841682179055600a5487168452818420805490931617909155815494861694909216841781559051909290620003a390620004d3565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620003d7573d6000803e3d6000fd5b50601780546001600160a01b038084166001600160a01b0319928316179092556000805483168152601260209081526040808320805460ff199081166001908117909255845487168552601184528285208054821683179055845487168552818452828520805482168317905584548716855260138452828520805490911690911790558254600b805486169187169182179055600c80549095168117909455600454938352600e90915280822083905581549051949550909216927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91620004c39190815260200190565b60405180910390a3505062000678565b6104ee806200427d83390190565b600060208284031215620004f457600080fd5b81516001600160a01b03811681146200050c57600080fd5b9392505050565b6000826200053157634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115620005775781600019048211156200055b576200055b62000662565b808516156200056957918102915b93841c93908002906200053b565b509250929050565b60006200050c60ff8416836000826200059b575060016200063a565b81620005aa575060006200063a565b8160018114620005c35760028114620005ce57620005ee565b60019150506200063a565b60ff841115620005e257620005e262000662565b50506001821b6200063a565b5060208310610133831016604e8410600b841016171562000613575081810a6200063a565b6200061f838362000536565b806000190482111562000636576200063662000662565b0290505b92915050565b60008160001904831182151516156200065d576200065d62000662565b500290565b634e487b7160e01b600052601160045260246000fd5b613bf580620006886000396000f3fe6080604052600436106103fe5760003560e01c80637d1db4a511610213578063ca33e64c11610123578063f0b37c04116100ab578063f84ba65d1161007a578063f84ba65d14610cce578063f887ea4014610cee578063fe33b30214610d0e578063fe9fbb8014610d3e578063ffcc1fa814610d5e57600080fd5b8063f0b37c0414610c58578063f1366d9a14610c78578063f2fde38b14610c98578063f5676f8f14610cb857600080fd5b8063dd62ed3e116100f2578063dd62ed3e14610b92578063df20fd4914610bd8578063e405be2914610bf8578063e96fada214610c18578063ee8969c514610c3857600080fd5b8063ca33e64c14610b11578063d90ec3a714610b31578063daa09bf814610b51578063dbc993db14610b7157600080fd5b8063a4b45c00116101a6578063a9059cbb11610175578063a9059cbb14610a7b578063af6c9c1d14610a9b578063b00755df14610abb578063b6a5d7de14610adb578063bf56b37114610afb57600080fd5b8063a4b45c0014610a06578063a633423114610a26578063a7ccabdf14610a3b578063a8aa1b3114610a5b57600080fd5b80639215a2a4116101e25780639215a2a41461097b57806395d89b411461099e57806398118cb4146109cc578063a41d40e1146109e657600080fd5b80637d1db4a5146108a057806381530a92146108b6578063893d20e8146108d65780638f3184cd146108f457600080fd5b80633ab045de1161030e578063683c3063116102a15780636f2a4914116102705780636f2a4914146107f557806370a082311461080a578063715b1c3b14610840578063759f62a6146108605780637bdd90f01461088057600080fd5b8063683c30631461077f5780636b67c4df146107a05780636bad6a6a146107bf5780636ddd1713146107d457600080fd5b8063571ac8b0116102dd578063571ac8b0146106ff5780635c85974f1461071f578063658d4b7f1461073f57806366bb5dd31461075f57600080fd5b80633ab045de1461066a578063413f60921461069f57806342c7a6f7146106bf5780634fcd2446146106df57600080fd5b806321d13a66116103915780632f05205c116103605780632f05205c146105ca5780632f54bf6e146105eb578063313ce5671461061a57806331e02e0b1461062e57806332406b351461065057600080fd5b806321d13a661461055257806323b872dd146105745780632b112e49146105945780632b36a6d2146105a957600080fd5b806318160ddd116103cd57806318160ddd146104cf5780631936d368146104e45780631df4ccfc1461051c5780631fc9efa11461053c57600080fd5b80630445b6671461040a57806306fdde0314610433578063095ea7b31461046c5780631720513f1461049c57600080fd5b3661040557005b600080fd5b34801561041657600080fd5b5061042060075481565b6040519081526020015b60405180910390f35b34801561043f57600080fd5b506040805180820190915260078152662237b3b296aa2b60c91b60208201525b60405161042a919061391c565b34801561047857600080fd5b5061048c61048736600461356e565b610d8f565b604051901515815260200161042a565b3480156104a857600080fd5b506002546104bd90600160301b900460ff1681565b60405160ff909116815260200161042a565b3480156104db57600080fd5b50600454610420565b3480156104f057600080fd5b506105046104ff36600461370f565b610dfc565b6040516001600160a01b03909116815260200161042a565b34801561052857600080fd5b506002546104bd9062010000900460ff1681565b34801561054857600080fd5b5061042060065481565b34801561055e57600080fd5b5061057261056d366004613834565b610e26565b005b34801561058057600080fd5b5061048c61058f3660046134ff565b610e8c565b3480156105a057600080fd5b50610420610f50565b3480156105b557600080fd5b506002546104bd906301000000900460ff1681565b3480156105d657600080fd5b5060025461048c90600160581b900460ff1681565b3480156105f757600080fd5b5061048c61060636600461348c565b6000546001600160a01b0391821691161490565b34801561062657600080fd5b5060126104bd565b34801561063a57600080fd5b506002546104bd90640100000000900460ff1681565b34801561065c57600080fd5b50601b5461048c9060ff1681565b34801561067657600080fd5b5060025461068c90600160481b900461ffff1681565b60405161ffff909116815260200161042a565b3480156106ab57600080fd5b50601754610504906001600160a01b031681565b3480156106cb57600080fd5b506105726106da366004613834565b610fa2565b3480156106eb57600080fd5b506105726106fa366004613834565b61104b565b34801561070b57600080fd5b5061048c61071a36600461348c565b611187565b34801561072b57600080fd5b5061057261073a36600461370f565b611195565b34801561074b57600080fd5b5061057261075a366004613540565b611282565b34801561076b57600080fd5b5061057261077a36600461348c565b6112d2565b34801561078b57600080fd5b506002546104bd90600160381b900460ff1681565b3480156107ac57600080fd5b506002546104bd90610100900460ff1681565b3480156107cb57600080fd5b50601954610420565b3480156107e057600080fd5b5060175461048c90600160a01b900460ff1681565b34801561080157600080fd5b50610572611435565b34801561081657600080fd5b5061042061082536600461348c565b6001600160a01b03166000908152600e602052604090205490565b34801561084c57600080fd5b5061057261085b36600461370f565b611466565b34801561086c57600080fd5b5061057261087b366004613540565b61150f565b34801561088c57600080fd5b5061048c61089b36600461370f565b61155f565b3480156108ac57600080fd5b5061042060055481565b3480156108c257600080fd5b5061048c6108d1366004613741565b6115c8565b3480156108e257600080fd5b506000546001600160a01b0316610504565b34801561090057600080fd5b5061094a61090f36600461348c565b601560205260009081526040902080546001820154600283015460038401546004909401549293919290919060ff8082169161010090041686565b60408051968752602087019590955293850192909252606084015215156080830152151560a082015260c00161042a565b34801561098757600080fd5b506002546104bd9065010000000000900460ff1681565b3480156109aa57600080fd5b50604080518082019091526005815264122223aa2b60d91b602082015261045f565b3480156109d857600080fd5b506002546104bd9060ff1681565b3480156109f257600080fd5b50610572610a0136600461348c565b611619565b348015610a1257600080fd5b50610572610a213660046134c6565b61167a565b348015610a3257600080fd5b506105726116cd565b348015610a4757600080fd5b50610572610a5636600461348c565b611707565b348015610a6757600080fd5b50600d54610504906001600160a01b031681565b348015610a8757600080fd5b5061048c610a9636600461356e565b61174e565b348015610aa757600080fd5b50610572610ab636600461348c565b61175b565b348015610ac757600080fd5b5061048c610ad6366004613741565b6117b6565b348015610ae757600080fd5b50610572610af636600461348c565b611cfe565b348015610b0757600080fd5b5061042060035481565b348015610b1d57600080fd5b50600b54610504906001600160a01b031681565b348015610b3d57600080fd5b50610572610b4c366004613791565b611d4f565b348015610b5d57600080fd5b50610572610b6c366004613834565b611e71565b348015610b7d57600080fd5b506002546104bd90600160401b900460ff1681565b348015610b9e57600080fd5b50610420610bad3660046134c6565b6001600160a01b039182166000908152600f6020908152604080832093909416825291909152205490565b348015610be457600080fd5b50610572610bf33660046136f1565b611ed0565b348015610c0457600080fd5b50610572610c1336600461359a565b611f17565b348015610c2457600080fd5b50600c54610504906001600160a01b031681565b348015610c4457600080fd5b50610420610c5336600461370f565b611fb3565b348015610c6457600080fd5b50610572610c7336600461348c565b612181565b348015610c8457600080fd5b50610572610c9336600461370f565b6121cc565b348015610ca457600080fd5b50610572610cb336600461348c565b612256565b348015610cc457600080fd5b50610420601a5481565b348015610cda57600080fd5b50610572610ce9366004613540565b6122ec565b348015610cfa57600080fd5b50601654610504906001600160a01b031681565b348015610d1a57600080fd5b5061048c610d2936600461348c565b60106020526000908152604090205460ff1681565b348015610d4a57600080fd5b5061048c610d5936600461348c565b61233c565b348015610d6a57600080fd5b50610d7e610d7936600461370f565b61235a565b60405161042a9594939291906139c9565b336000818152600f602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610dea9086815260200190565b60405180910390a35060015b92915050565b60198181548110610e0c57600080fd5b6000918252602090912001546001600160a01b0316905081565b610e2f3361233c565b610e545760405162461bcd60e51b8152600401610e4b9061394f565b60405180910390fd5b6002805466ffff000000000019166501000000000060ff9384160266ff000000000000191617600160301b9390921692909202179055565b6004546001600160a01b0384166000908152600f60209081526040808320338452909152812054909114610f3b576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600f82528381203382529091529190912054610f16918490612416565b6001600160a01b0385166000908152600f602090815260408083203384529091529020555b610f46848484612450565b90505b9392505050565b600a546001600160a01b03166000908152600e6020526040812054610f9d906009546001600160a01b03166000908152600e6020526040902054610f979060045490612ad1565b90612ad1565b905090565b610fab3361233c565b610fc75760405162461bcd60e51b8152600401610e4b9061394f565b60025460ff8084166401000000009092041610610ffd576002805464ff00000000191664010000000060ff851602179055611008565b601b805460ff191690555b60025460ff8083166301000000909204161061103c576002805460ff831663010000000263ff000000199091161790555050565b601b805460ff191690555b5050565b6110543361233c565b6110705760405162461bcd60e51b8152600401610e4b9061394f565b605061107c8284613a1a565b60ff1611156110cd5760405162461bcd60e51b815260206004820181905260248201527f446f676554562074617865732063616e206e65766572206578636565642038256044820152606401610e4b565b60025462010000900460ff166110e38284613a1a565b60ff1611156111455760405162461bcd60e51b815260206004820152602860248201527f446f676574762c2074617865732063616e206f6e6c792065766572206368616e604482015267676520726174696f60c01b6064820152608401610e4b565b6002805460ff8381166101000261ffff199092169085161717905561116a8183613a1a565b6002806101000a81548160ff021916908360ff1602179055505050565b6000610df682600454610d8f565b61119e3361233c565b6111ba5760405162461bcd60e51b8152600401610e4b9061394f565b60c86004546111c99190613a3f565b8110156112185760405162461bcd60e51b815260206004820181905260248201527f446f676554562c206d75737420626520686967686572207468616e20302e35256044820152606401610e4b565b600554811161127d5760405162461bcd60e51b815260206004820152602b60248201527f446f676554562c2063616e206f6e6c79206576657220696e637265617365207460448201526a1a19481d1e081b1a5b5a5d60aa1b6064820152608401610e4b565b600555565b61128b3361233c565b6112a75760405162461bcd60e51b8152600401610e4b9061394f565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6112db3361233c565b6112f75760405162461bcd60e51b8152600401610e4b9061394f565b600c546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611330573d6000803e3d6000fd5b50600c546040516370a0823160e01b81523060048201526001600160a01b038381169263a9059cbb9291169083906370a082319060240160206040518083038186803b15801561137f57600080fd5b505afa158015611393573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b79190613728565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156113fd57600080fd5b505af1158015611411573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104791906136d4565b61143e3361233c565b61145a5760405162461bcd60e51b8152600401610e4b9061394f565b601b805460ff19169055565b61146f3361233c565b61148b5760405162461bcd60e51b8152600401610e4b9061394f565b60058110156114ee5760405162461bcd60e51b815260206004820152602960248201527f446f676554562c206d617820686f6c642063616e6e6f74206265206c657373206044820152687468616e20302e352560b81b6064820152608401610e4b565b6103e8816004546114ff9190613a75565b6115099190613a3f565b60065550565b6115183361233c565b6115345760405162461bcd60e51b8152600401610e4b9061394f565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b600061156a3361233c565b6115865760405162461bcd60e51b8152600401610e4b9061394f565b60008281526018602052604081208181556001810182905560028101829055906115b360038301826133a5565b50600401805460ff191690555060015b919050565b60006115d33361233c565b6115ef5760405162461bcd60e51b8152600401610e4b9061394f565b61160182670de0b6b3a7640000613a75565b60008481526018602052604090205550600192915050565b6116223361233c565b61163e5760405162461bcd60e51b8152600401610e4b9061394f565b6001600160a01b031660009081526010602090815260408083208054600160ff1991821681179092556013909352922080549091169091179055565b6116833361233c565b61169f5760405162461bcd60e51b8152600401610e4b9061394f565b600b80546001600160a01b039384166001600160a01b031991821617909155600c8054929093169116179055565b6116d63361233c565b6116f25760405162461bcd60e51b8152600401610e4b9061394f565b6002805460ff60581b1916600160581b179055565b6117103361233c565b61172c5760405162461bcd60e51b8152600401610e4b9061394f565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6000610f49338484612450565b6117643361233c565b6117805760405162461bcd60e51b8152600401610e4b9061394f565b6001600160a01b03166000908152601060209081526040808320805460ff19908116909155601390925290912080549091169055565b6000806117c284612b13565b905060006117d38260000151611fb3565b336000908152600e60205260409020549091508111156118495760405162461bcd60e51b815260206004820152602b60248201527f446f676554562c20596f7520646f6e74206861766520656e6f75676820746f6b60448201526a656e20666f72207468697360a81b6064820152608401610e4b565b600454336000908152600e6020526040812054600192829182919061186f90600a613a75565b6118799190613a3f565b611884906064613a75565b600254909150600160401b900460ff1681108015906118af5750600254600160381b900460ff168111155b156118bd5760029350600191505b600254600160301b900460ff168111156118d657600192505b85608001511561196857826119685760405162461bcd60e51b815260206004820152604c60248201527f446f676554563a2074686973207061636b616765206973206e6f74206176616960448201527f6c61626c6520746f20616e796f6e65206e6f7420686f6c64696e67207468652060648201526b726571756972656d656e747360a01b608482015260a401610e4b565b6119728486613a3f565b94506119b16040518060c00160405280600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b83611bc557866080015115611a2e5760405162461bcd60e51b815260206004820152603760248201527f4454562c206f6e6c7920686967682070657263656e7461676520686f6c64657260448201527f732063616e20686176652074686973207061636b6167650000000000000000006064820152608401610e4b565b336000908152600e602052604081208054889290611a4d908490613a94565b90915550611a5e9050600287613a3f565b6009546001600160a01b03166000908152600e602052604081208054909190611a88908490613a02565b90915550506009546001600160a01b031633600080516020613ba0833981519152611ab460028a613a3f565b60405190815260200160405180910390a3611ad0600287613a3f565b6017546001600160a01b03166000908152600e602052604081208054909190611afa908490613a02565b90915550506017546001600160a01b0316634d6ce1e5611b1b600289613a3f565b6040518263ffffffff1660e01b8152600401611b3991815260200190565b602060405180830381600087803b158015611b5357600080fd5b505af1158015611b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8b91906136d4565b506017546001600160a01b031633600080516020613ba0833981519152611bb360028a613a3f565b60405190815260200160405180910390a35b60408088015190820152821515608082015283151560a0820152428152606081018990526020870151611bfb9062015180613a75565b611c059042613a02565b602082015260608701516040517f39dc1b34ded6b839d48dab8499d0500ef59a8747e57b4c3216747b22ede5a25191611c40913391906138f8565b60405180910390a133600081815260156020908152604080832085518155918501516001808401919091559085015160028301556060850151600383015560808501516004909201805460a09096015161ffff1990961692151561ff001916929092176101009515159590950294909417905560198054808501825591527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c96950180546001600160a01b03191690911790559998505050505050505050565b6000546001600160a01b03163314611d285760405162461bcd60e51b8152600401610e4b9061392f565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b611d583361233c565b611d745760405162461bcd60e51b8152600401610e4b9061394f565b611da86040518060a00160405280600081526020016000815260200160008152602001606081526020016000151581525090565b602080820186905260408083018990528051601f86018390048302810183019091528481529085908590819084018382808284376000920191909152505050506060820152611dff86670de0b6b3a7640000613a75565b815281151560808201526000878152601860209081526040918290208351815581840151600182015591830151600283015560608301518051849392611e4c9260038501929101906133e2565b50608091909101516004909101805460ff191691151591909117905550505050505050565b611e7a3361233c565b611e965760405162461bcd60e51b8152600401610e4b9061394f565b6002805468ffff000000000000001916600160381b60ff9384160268ff0000000000000000191617600160401b9390921692909202179055565b611ed93361233c565b611ef55760405162461bcd60e51b8152600401610e4b9061394f565b60178054921515600160a01b0260ff60a01b1990931692909217909155600755565b611f203361233c565b611f3c5760405162461bcd60e51b8152600401610e4b9061394f565b60005b81811015611fae57600160146000858585818110611f5f57611f5f613b50565b9050602002016020810190611f74919061348c565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611fa681613b09565b915050611f3f565b505050565b6040805160038082526080820190925260009182919060208201606080368337505060085482519293506001600160a01b031691839150600090611ff957611ff9613b50565b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561204d57600080fd5b505afa158015612061573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208591906134a9565b8160018151811061209857612098613b50565b60200260200101906001600160a01b031690816001600160a01b03168152505030816002815181106120cc576120cc613b50565b6001600160a01b03928316602091820292909201015260165460405163d06ca61f60e01b815291169063d06ca61f9061210b9086908590600401613974565b60006040518083038186803b15801561212357600080fd5b505afa158015612137573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261215f919081019061360f565b60028151811061217157612171613b50565b6020026020010151915050919050565b6000546001600160a01b031633146121ab5760405162461bcd60e51b8152600401610e4b9061392f565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6121d53361233c565b6121f15760405162461bcd60e51b8152600401610e4b9061394f565b60648110156122425760405162461bcd60e51b815260206004820152601e60248201527f446f676554563a206d61782073656c6c2070657263656e7420697320312500006044820152606401610e4b565b806004546122509190613a3f565b60075550565b6000546001600160a01b031633146122805760405162461bcd60e51b8152600401610e4b9061392f565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b6122f53361233c565b6123115760405162461bcd60e51b8152600401610e4b9061394f565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b60186020526000908152604090208054600182015460028301546003840180549394929391929161238a90613ace565b80601f01602080910402602001604051908101604052809291908181526020018280546123b690613ace565b80156124035780601f106123d857610100808354040283529160200191612403565b820191906000526020600020905b8154815290600101906020018083116123e657829003601f168201915b5050506004909301549192505060ff1685565b6000818484111561243a5760405162461bcd60e51b8152600401610e4b919061391c565b5060006124478486613a94565b95945050505050565b600254600090600160581b900460ff166124e7576000546001600160a01b038581169116146124e75760405162461bcd60e51b815260206004820152603860248201527f446f676554562c204f6e6c79206f776e6572206f722070726573616c6520436f60448201527f6e747261637420616c6c6f77656420746f20616464204c5000000000000000006064820152608401610e4b565b6000546001600160a01b0385811691161480159061251357506000546001600160a01b03848116911614155b156125f3576001600160a01b03831660009081526010602052604090205460ff1615801561255a57506001600160a01b03831660009081526013602052604090205460ff16155b156125f35760065482612582856001600160a01b03166000908152600e602052604090205490565b61258c9190613a02565b11156125f35760405162461bcd60e51b815260206004820152603060248201527f446f676554562c2063616e7420686f6c64206d6f7265207468616e206d61782060448201526f686f6c6420647564652c20736f72727960801b6064820152608401610e4b565b6125fe848484612c2c565b6001600160a01b03841660009081526014602052604090205460ff1615801561264057506001600160a01b03831660009081526014602052604090205460ff16155b6126985760405162461bcd60e51b8152602060048201526024808201527f446f676554562c20536f7272792062726f2c20796f75726520626c61636b6c696044820152631cdd195960e21b6064820152608401610e4b565b6003541580156126c057506001600160a01b03831660009081526010602052604090205460ff165b156126f0576001600160a01b0384166000908152600e60205260409020546126e757600080fd5b6126f042600355565b601754600160a81b900460ff16156127145761270d848484612cc6565b9050610f49565b604080518082018252601c81527f446f676554562c20496e73756666696369656e742042616c616e6365000000006020808301919091526001600160a01b0387166000908152600e909152919091205461276f918490612416565b6001600160a01b038086166000908152600e602090815260408083209490945591861681526010909152205460ff16156129c9576001600160a01b03841660009081526015602052604090206004015460ff80821691610100900416801561288a576002546001600160a01b0387166000908152600e6020526040902054600160301b90910460ff169060649061280790600a613a75565b6128119190613a3f565b101561288a576001600160a01b0386166000818152601560209081526040808320838155600181018490556002810184905560038101939093556004909201805461ffff1916905590519182527f4bb63b43e31da369bd81d81e679aa662904e90c88dee0dd4bed8876ab83a18bc910160405180910390a15b81156129c6576002546001600160a01b0387166000908152600e6020526040902054600160401b90910460ff16906064906128c690600a613a75565b6128d09190613a3f565b10156129c6576001600160a01b0386166000908152601560205260409020805460019091015460029161290291613a94565b61290c9190613a3f565b6001600160a01b03871660009081526015602052604090205461292f9190613a02565b6001600160a01b038716600090815260156020526040902060010181905542116129c6576001600160a01b0386166000818152601560209081526040808320838155600181018490556002810184905560038101939093556004909201805461ffff1916905590519182527f4bb63b43e31da369bd81d81e679aa662904e90c88dee0dd4bed8876ab83a18bc910160405180910390a15b50505b6001600160a01b03841660009081526011602052604081205460ff16151580612a0c57506001600160a01b03841660009081526011602052604090205460ff1615155b15612a18575081612a43565b6001600160a01b03851660009081526010602052604090205460ff16612a3f868286612d9a565b9150505b612a4c84612e76565b15612a5957612a59612ee2565b6001600160a01b0384166000908152600e6020526040902054612a7c908261325c565b6001600160a01b038086166000818152600e60205260409081902093909355915190871690600080516020613ba083398151915290612abe9085815260200190565b60405180910390a3506001949350505050565b6000610f4983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612416565b612b476040518060a00160405280600081526020016000815260200160008152602001606081526020016000151581525090565b601860008381526020019081526020016000206040518060a0016040529081600082015481526020016001820154815260200160028201548152602001600382018054612b9390613ace565b80601f0160208091040260200160405190810160405280929190818152602001828054612bbf90613ace565b8015612c0c5780601f10612be157610100808354040283529160200191612c0c565b820191906000526020600020905b815481529060010190602001808311612bef57829003601f168201915b50505091835250506004919091015460ff16151560209091015292915050565b6000546001600160a01b03848116911614801590612c5857506000546001600160a01b03838116911614155b15611fae5760055481111580612c8657506001600160a01b03831660009081526012602052604090205460ff165b611fae5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610e4b565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600e90915291822054612d17918490612416565b6001600160a01b038086166000908152600e60205260408082209390935590851681522054612d46908361325c565b6001600160a01b038085166000818152600e60205260409081902093909355915190861690600080516020613ba083398151915290612d889086815260200190565b60405180910390a35060019392505050565b600254601b5460009160ff620100009091048116911615612dd957506002546301000000900460ff168315612dd95750600254640100000000900460ff165b600254600090612dfe90600160481b900461ffff16612df886856132bb565b9061333a565b306000908152600e6020526040902054909150612e1b908261325c565b306000818152600e6020526040908190209290925590516001600160a01b03881690600080516020613ba083398151915290612e5a9085815260200190565b60405180910390a3612e6c8482612ad1565b9695505050505050565b601754600090600160a81b900460ff16158015612e9c5750601754600160a01b900460ff165b8015612ec057506001600160a01b03821660009081526010602052604090205460ff165b8015610df65750600754306000908152600e6020526040902054101592915050565b6017805460ff60a81b1916600160a81b17905560025460009060ff1615612f2a5760028054600754612f279291612df89160ff620100008304811692849291166132bb565b90505b600754600090612f3a9083612ad1565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110612f7457612f74613b50565b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612fc857600080fd5b505afa158015612fdc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300091906134a9565b8160018151811061301357613013613b50565b6001600160a01b03928316602091820292909201015260165447911663791ac9478460008530613044426064613a02565b6040518663ffffffff1660e01b815260040161306495949392919061398d565b600060405180830381600087803b15801561307e57600080fd5b505af1158015613092573d6000803e3d6000fd5b5050505060006130ab8247612ad190919063ffffffff16565b600280549192506000916130c2919060ff16613a53565b6002546130d8919062010000900460ff16613aab565b60ff169050801561324757600254600090610100900460ff161561314f57600254613112908390612df8908690610100900460ff166132bb565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561314d573d6000803e3d6000fd5b505b86156132455760006131618285613a94565b601654600b5460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a4820152929350169063f305d71990839060c4016060604051808303818588803b1580156131ce57600080fd5b505af11580156131e2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906132079190613763565b505060408051838152602081018b90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a1505b505b50506017805460ff60a81b1916905550505050565b6000806132698385613a02565b905083811015610f495760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610e4b565b6000826132ca57506000610df6565b60006132d68385613a75565b9050826132e38583613a3f565b14610f495760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610e4b565b6000610f4983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836133985760405162461bcd60e51b8152600401610e4b919061391c565b5060006124478486613a3f565b5080546133b190613ace565b6000825580601f106133c1575050565b601f0160209004906000526020600020908101906133df9190613466565b50565b8280546133ee90613ace565b90600052602060002090601f0160209004810192826134105760008555613456565b82601f1061342957805160ff1916838001178555613456565b82800160010185558215613456579182015b8281111561345657825182559160200191906001019061343b565b50613462929150613466565b5090565b5b808211156134625760008155600101613467565b803560ff811681146115c357600080fd5b60006020828403121561349e57600080fd5b8135610f4981613b7c565b6000602082840312156134bb57600080fd5b8151610f4981613b7c565b600080604083850312156134d957600080fd5b82356134e481613b7c565b915060208301356134f481613b7c565b809150509250929050565b60008060006060848603121561351457600080fd5b833561351f81613b7c565b9250602084013561352f81613b7c565b929592945050506040919091013590565b6000806040838503121561355357600080fd5b823561355e81613b7c565b915060208301356134f481613b91565b6000806040838503121561358157600080fd5b823561358c81613b7c565b946020939093013593505050565b600080602083850312156135ad57600080fd5b823567ffffffffffffffff808211156135c557600080fd5b818501915085601f8301126135d957600080fd5b8135818111156135e857600080fd5b8660208260051b85010111156135fd57600080fd5b60209290920196919550909350505050565b6000602080838503121561362257600080fd5b825167ffffffffffffffff8082111561363a57600080fd5b818501915085601f83011261364e57600080fd5b81518181111561366057613660613b66565b8060051b604051601f19603f8301168101818110858211171561368557613685613b66565b604052828152858101935084860182860187018a10156136a457600080fd5b600095505b838610156136c75780518552600195909501949386019386016136a9565b5098975050505050505050565b6000602082840312156136e657600080fd5b8151610f4981613b91565b6000806040838503121561370457600080fd5b823561358c81613b91565b60006020828403121561372157600080fd5b5035919050565b60006020828403121561373a57600080fd5b5051919050565b6000806040838503121561375457600080fd5b50508035926020909101359150565b60008060006060848603121561377857600080fd5b8351925060208401519150604084015190509250925092565b60008060008060008060a087890312156137aa57600080fd5b863595506020870135945060408701359350606087013567ffffffffffffffff808211156137d757600080fd5b818901915089601f8301126137eb57600080fd5b8135818111156137fa57600080fd5b8a602082850101111561380c57600080fd5b602083019550809450505050608087013561382681613b91565b809150509295509295509295565b6000806040838503121561384757600080fd5b6138508361347b565b915061385e6020840161347b565b90509250929050565b600081518084526020808501945080840160005b838110156138a05781516001600160a01b03168752958201959082019060010161387b565b509495945050505050565b6000815180845260005b818110156138d1576020818501810151868301820152016138b5565b818111156138e3576000602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0383168152604060208201819052600090610f46908301846138ab565b602081526000610f4960208301846138ab565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b828152604060208201526000610f466040830184613867565b85815284602082015260a0604082015260006139ac60a0830186613867565b6001600160a01b0394909416606083015250608001529392505050565b85815284602082015283604082015260a0606082015260006139ee60a08301856138ab565b905082151560808301529695505050505050565b60008219821115613a1557613a15613b24565b500190565b600060ff821660ff84168060ff03821115613a3757613a37613b24565b019392505050565b600082613a4e57613a4e613b3a565b500490565b600060ff831680613a6657613a66613b3a565b8060ff84160491505092915050565b6000816000190483118215151615613a8f57613a8f613b24565b500290565b600082821015613aa657613aa6613b24565b500390565b600060ff821660ff841680821015613ac557613ac5613b24565b90039392505050565b600181811c90821680613ae257607f821691505b60208210811415613b0357634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415613b1d57613b1d613b24565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146133df57600080fd5b80151581146133df57600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220308b5a7910be6eb522cf0fdea430079b289eab6b56c0ae2021716b529e5bd4b164736f6c63430008070033608060405234801561001057600080fd5b506040516104ee3803806104ee83398101604081905261002f9161007f565b600080546001600160a01b039283166001600160a01b031991821617909155600180549390921692169190911790556100b2565b80516001600160a01b038116811461007a57600080fd5b919050565b6000806040838503121561009257600080fd5b61009b83610063565b91506100a960208401610063565b90509250929050565b61042d806100c16000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80634d6ce1e5146100515780638da5cb5b14610079578063c93f895d146100a4578063f7c618c1146100ae575b600080fd5b61006461005f36600461039f565b6100c1565b60405190151581526020015b60405180910390f35b60005461008c906001600160a01b031681565b6040516001600160a01b039091168152602001610070565b6100ac6101db565b005b60015461008c906001600160a01b031681565b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b15801561010557600080fd5b505afa158015610119573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061013d91906103b8565b8260025461014b91906103d1565b1461015557600080fd5b6001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b15801561019857600080fd5b505afa1580156101ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d091906103b8565b600255506001919050565b6000546001600160a01b031633146101f257600080fd5b6001546040516370a0823160e01b81523060048201526001600160a01b039091169063a9059cbb90339083906370a082319060240160206040518083038186803b15801561023f57600080fd5b505afa158015610253573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027791906103b8565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156102bd57600080fd5b505af11580156102d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f59190610376565b506001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b15801561033957600080fd5b505afa15801561034d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037191906103b8565b600255565b60006020828403121561038857600080fd5b8151801515811461039857600080fd5b9392505050565b6000602082840312156103b157600080fd5b5035919050565b6000602082840312156103ca57600080fd5b5051919050565b600082198211156103f257634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220ed4f843aaa4999fbad0c59cb38d286e671c0ee0ce22b8b91de90e281d1d708e064736f6c634300080700330000000000000000000000000fdc977660c0603320ebcdcb63bff2123a97153d

Deployed Bytecode

0x6080604052600436106103fe5760003560e01c80637d1db4a511610213578063ca33e64c11610123578063f0b37c04116100ab578063f84ba65d1161007a578063f84ba65d14610cce578063f887ea4014610cee578063fe33b30214610d0e578063fe9fbb8014610d3e578063ffcc1fa814610d5e57600080fd5b8063f0b37c0414610c58578063f1366d9a14610c78578063f2fde38b14610c98578063f5676f8f14610cb857600080fd5b8063dd62ed3e116100f2578063dd62ed3e14610b92578063df20fd4914610bd8578063e405be2914610bf8578063e96fada214610c18578063ee8969c514610c3857600080fd5b8063ca33e64c14610b11578063d90ec3a714610b31578063daa09bf814610b51578063dbc993db14610b7157600080fd5b8063a4b45c00116101a6578063a9059cbb11610175578063a9059cbb14610a7b578063af6c9c1d14610a9b578063b00755df14610abb578063b6a5d7de14610adb578063bf56b37114610afb57600080fd5b8063a4b45c0014610a06578063a633423114610a26578063a7ccabdf14610a3b578063a8aa1b3114610a5b57600080fd5b80639215a2a4116101e25780639215a2a41461097b57806395d89b411461099e57806398118cb4146109cc578063a41d40e1146109e657600080fd5b80637d1db4a5146108a057806381530a92146108b6578063893d20e8146108d65780638f3184cd146108f457600080fd5b80633ab045de1161030e578063683c3063116102a15780636f2a4914116102705780636f2a4914146107f557806370a082311461080a578063715b1c3b14610840578063759f62a6146108605780637bdd90f01461088057600080fd5b8063683c30631461077f5780636b67c4df146107a05780636bad6a6a146107bf5780636ddd1713146107d457600080fd5b8063571ac8b0116102dd578063571ac8b0146106ff5780635c85974f1461071f578063658d4b7f1461073f57806366bb5dd31461075f57600080fd5b80633ab045de1461066a578063413f60921461069f57806342c7a6f7146106bf5780634fcd2446146106df57600080fd5b806321d13a66116103915780632f05205c116103605780632f05205c146105ca5780632f54bf6e146105eb578063313ce5671461061a57806331e02e0b1461062e57806332406b351461065057600080fd5b806321d13a661461055257806323b872dd146105745780632b112e49146105945780632b36a6d2146105a957600080fd5b806318160ddd116103cd57806318160ddd146104cf5780631936d368146104e45780631df4ccfc1461051c5780631fc9efa11461053c57600080fd5b80630445b6671461040a57806306fdde0314610433578063095ea7b31461046c5780631720513f1461049c57600080fd5b3661040557005b600080fd5b34801561041657600080fd5b5061042060075481565b6040519081526020015b60405180910390f35b34801561043f57600080fd5b506040805180820190915260078152662237b3b296aa2b60c91b60208201525b60405161042a919061391c565b34801561047857600080fd5b5061048c61048736600461356e565b610d8f565b604051901515815260200161042a565b3480156104a857600080fd5b506002546104bd90600160301b900460ff1681565b60405160ff909116815260200161042a565b3480156104db57600080fd5b50600454610420565b3480156104f057600080fd5b506105046104ff36600461370f565b610dfc565b6040516001600160a01b03909116815260200161042a565b34801561052857600080fd5b506002546104bd9062010000900460ff1681565b34801561054857600080fd5b5061042060065481565b34801561055e57600080fd5b5061057261056d366004613834565b610e26565b005b34801561058057600080fd5b5061048c61058f3660046134ff565b610e8c565b3480156105a057600080fd5b50610420610f50565b3480156105b557600080fd5b506002546104bd906301000000900460ff1681565b3480156105d657600080fd5b5060025461048c90600160581b900460ff1681565b3480156105f757600080fd5b5061048c61060636600461348c565b6000546001600160a01b0391821691161490565b34801561062657600080fd5b5060126104bd565b34801561063a57600080fd5b506002546104bd90640100000000900460ff1681565b34801561065c57600080fd5b50601b5461048c9060ff1681565b34801561067657600080fd5b5060025461068c90600160481b900461ffff1681565b60405161ffff909116815260200161042a565b3480156106ab57600080fd5b50601754610504906001600160a01b031681565b3480156106cb57600080fd5b506105726106da366004613834565b610fa2565b3480156106eb57600080fd5b506105726106fa366004613834565b61104b565b34801561070b57600080fd5b5061048c61071a36600461348c565b611187565b34801561072b57600080fd5b5061057261073a36600461370f565b611195565b34801561074b57600080fd5b5061057261075a366004613540565b611282565b34801561076b57600080fd5b5061057261077a36600461348c565b6112d2565b34801561078b57600080fd5b506002546104bd90600160381b900460ff1681565b3480156107ac57600080fd5b506002546104bd90610100900460ff1681565b3480156107cb57600080fd5b50601954610420565b3480156107e057600080fd5b5060175461048c90600160a01b900460ff1681565b34801561080157600080fd5b50610572611435565b34801561081657600080fd5b5061042061082536600461348c565b6001600160a01b03166000908152600e602052604090205490565b34801561084c57600080fd5b5061057261085b36600461370f565b611466565b34801561086c57600080fd5b5061057261087b366004613540565b61150f565b34801561088c57600080fd5b5061048c61089b36600461370f565b61155f565b3480156108ac57600080fd5b5061042060055481565b3480156108c257600080fd5b5061048c6108d1366004613741565b6115c8565b3480156108e257600080fd5b506000546001600160a01b0316610504565b34801561090057600080fd5b5061094a61090f36600461348c565b601560205260009081526040902080546001820154600283015460038401546004909401549293919290919060ff8082169161010090041686565b60408051968752602087019590955293850192909252606084015215156080830152151560a082015260c00161042a565b34801561098757600080fd5b506002546104bd9065010000000000900460ff1681565b3480156109aa57600080fd5b50604080518082019091526005815264122223aa2b60d91b602082015261045f565b3480156109d857600080fd5b506002546104bd9060ff1681565b3480156109f257600080fd5b50610572610a0136600461348c565b611619565b348015610a1257600080fd5b50610572610a213660046134c6565b61167a565b348015610a3257600080fd5b506105726116cd565b348015610a4757600080fd5b50610572610a5636600461348c565b611707565b348015610a6757600080fd5b50600d54610504906001600160a01b031681565b348015610a8757600080fd5b5061048c610a9636600461356e565b61174e565b348015610aa757600080fd5b50610572610ab636600461348c565b61175b565b348015610ac757600080fd5b5061048c610ad6366004613741565b6117b6565b348015610ae757600080fd5b50610572610af636600461348c565b611cfe565b348015610b0757600080fd5b5061042060035481565b348015610b1d57600080fd5b50600b54610504906001600160a01b031681565b348015610b3d57600080fd5b50610572610b4c366004613791565b611d4f565b348015610b5d57600080fd5b50610572610b6c366004613834565b611e71565b348015610b7d57600080fd5b506002546104bd90600160401b900460ff1681565b348015610b9e57600080fd5b50610420610bad3660046134c6565b6001600160a01b039182166000908152600f6020908152604080832093909416825291909152205490565b348015610be457600080fd5b50610572610bf33660046136f1565b611ed0565b348015610c0457600080fd5b50610572610c1336600461359a565b611f17565b348015610c2457600080fd5b50600c54610504906001600160a01b031681565b348015610c4457600080fd5b50610420610c5336600461370f565b611fb3565b348015610c6457600080fd5b50610572610c7336600461348c565b612181565b348015610c8457600080fd5b50610572610c9336600461370f565b6121cc565b348015610ca457600080fd5b50610572610cb336600461348c565b612256565b348015610cc457600080fd5b50610420601a5481565b348015610cda57600080fd5b50610572610ce9366004613540565b6122ec565b348015610cfa57600080fd5b50601654610504906001600160a01b031681565b348015610d1a57600080fd5b5061048c610d2936600461348c565b60106020526000908152604090205460ff1681565b348015610d4a57600080fd5b5061048c610d5936600461348c565b61233c565b348015610d6a57600080fd5b50610d7e610d7936600461370f565b61235a565b60405161042a9594939291906139c9565b336000818152600f602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610dea9086815260200190565b60405180910390a35060015b92915050565b60198181548110610e0c57600080fd5b6000918252602090912001546001600160a01b0316905081565b610e2f3361233c565b610e545760405162461bcd60e51b8152600401610e4b9061394f565b60405180910390fd5b6002805466ffff000000000019166501000000000060ff9384160266ff000000000000191617600160301b9390921692909202179055565b6004546001600160a01b0384166000908152600f60209081526040808320338452909152812054909114610f3b576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600f82528381203382529091529190912054610f16918490612416565b6001600160a01b0385166000908152600f602090815260408083203384529091529020555b610f46848484612450565b90505b9392505050565b600a546001600160a01b03166000908152600e6020526040812054610f9d906009546001600160a01b03166000908152600e6020526040902054610f979060045490612ad1565b90612ad1565b905090565b610fab3361233c565b610fc75760405162461bcd60e51b8152600401610e4b9061394f565b60025460ff8084166401000000009092041610610ffd576002805464ff00000000191664010000000060ff851602179055611008565b601b805460ff191690555b60025460ff8083166301000000909204161061103c576002805460ff831663010000000263ff000000199091161790555050565b601b805460ff191690555b5050565b6110543361233c565b6110705760405162461bcd60e51b8152600401610e4b9061394f565b605061107c8284613a1a565b60ff1611156110cd5760405162461bcd60e51b815260206004820181905260248201527f446f676554562074617865732063616e206e65766572206578636565642038256044820152606401610e4b565b60025462010000900460ff166110e38284613a1a565b60ff1611156111455760405162461bcd60e51b815260206004820152602860248201527f446f676574762c2074617865732063616e206f6e6c792065766572206368616e604482015267676520726174696f60c01b6064820152608401610e4b565b6002805460ff8381166101000261ffff199092169085161717905561116a8183613a1a565b6002806101000a81548160ff021916908360ff1602179055505050565b6000610df682600454610d8f565b61119e3361233c565b6111ba5760405162461bcd60e51b8152600401610e4b9061394f565b60c86004546111c99190613a3f565b8110156112185760405162461bcd60e51b815260206004820181905260248201527f446f676554562c206d75737420626520686967686572207468616e20302e35256044820152606401610e4b565b600554811161127d5760405162461bcd60e51b815260206004820152602b60248201527f446f676554562c2063616e206f6e6c79206576657220696e637265617365207460448201526a1a19481d1e081b1a5b5a5d60aa1b6064820152608401610e4b565b600555565b61128b3361233c565b6112a75760405162461bcd60e51b8152600401610e4b9061394f565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6112db3361233c565b6112f75760405162461bcd60e51b8152600401610e4b9061394f565b600c546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611330573d6000803e3d6000fd5b50600c546040516370a0823160e01b81523060048201526001600160a01b038381169263a9059cbb9291169083906370a082319060240160206040518083038186803b15801561137f57600080fd5b505afa158015611393573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b79190613728565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156113fd57600080fd5b505af1158015611411573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104791906136d4565b61143e3361233c565b61145a5760405162461bcd60e51b8152600401610e4b9061394f565b601b805460ff19169055565b61146f3361233c565b61148b5760405162461bcd60e51b8152600401610e4b9061394f565b60058110156114ee5760405162461bcd60e51b815260206004820152602960248201527f446f676554562c206d617820686f6c642063616e6e6f74206265206c657373206044820152687468616e20302e352560b81b6064820152608401610e4b565b6103e8816004546114ff9190613a75565b6115099190613a3f565b60065550565b6115183361233c565b6115345760405162461bcd60e51b8152600401610e4b9061394f565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b600061156a3361233c565b6115865760405162461bcd60e51b8152600401610e4b9061394f565b60008281526018602052604081208181556001810182905560028101829055906115b360038301826133a5565b50600401805460ff191690555060015b919050565b60006115d33361233c565b6115ef5760405162461bcd60e51b8152600401610e4b9061394f565b61160182670de0b6b3a7640000613a75565b60008481526018602052604090205550600192915050565b6116223361233c565b61163e5760405162461bcd60e51b8152600401610e4b9061394f565b6001600160a01b031660009081526010602090815260408083208054600160ff1991821681179092556013909352922080549091169091179055565b6116833361233c565b61169f5760405162461bcd60e51b8152600401610e4b9061394f565b600b80546001600160a01b039384166001600160a01b031991821617909155600c8054929093169116179055565b6116d63361233c565b6116f25760405162461bcd60e51b8152600401610e4b9061394f565b6002805460ff60581b1916600160581b179055565b6117103361233c565b61172c5760405162461bcd60e51b8152600401610e4b9061394f565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6000610f49338484612450565b6117643361233c565b6117805760405162461bcd60e51b8152600401610e4b9061394f565b6001600160a01b03166000908152601060209081526040808320805460ff19908116909155601390925290912080549091169055565b6000806117c284612b13565b905060006117d38260000151611fb3565b336000908152600e60205260409020549091508111156118495760405162461bcd60e51b815260206004820152602b60248201527f446f676554562c20596f7520646f6e74206861766520656e6f75676820746f6b60448201526a656e20666f72207468697360a81b6064820152608401610e4b565b600454336000908152600e6020526040812054600192829182919061186f90600a613a75565b6118799190613a3f565b611884906064613a75565b600254909150600160401b900460ff1681108015906118af5750600254600160381b900460ff168111155b156118bd5760029350600191505b600254600160301b900460ff168111156118d657600192505b85608001511561196857826119685760405162461bcd60e51b815260206004820152604c60248201527f446f676554563a2074686973207061636b616765206973206e6f74206176616960448201527f6c61626c6520746f20616e796f6e65206e6f7420686f6c64696e67207468652060648201526b726571756972656d656e747360a01b608482015260a401610e4b565b6119728486613a3f565b94506119b16040518060c00160405280600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b83611bc557866080015115611a2e5760405162461bcd60e51b815260206004820152603760248201527f4454562c206f6e6c7920686967682070657263656e7461676520686f6c64657260448201527f732063616e20686176652074686973207061636b6167650000000000000000006064820152608401610e4b565b336000908152600e602052604081208054889290611a4d908490613a94565b90915550611a5e9050600287613a3f565b6009546001600160a01b03166000908152600e602052604081208054909190611a88908490613a02565b90915550506009546001600160a01b031633600080516020613ba0833981519152611ab460028a613a3f565b60405190815260200160405180910390a3611ad0600287613a3f565b6017546001600160a01b03166000908152600e602052604081208054909190611afa908490613a02565b90915550506017546001600160a01b0316634d6ce1e5611b1b600289613a3f565b6040518263ffffffff1660e01b8152600401611b3991815260200190565b602060405180830381600087803b158015611b5357600080fd5b505af1158015611b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8b91906136d4565b506017546001600160a01b031633600080516020613ba0833981519152611bb360028a613a3f565b60405190815260200160405180910390a35b60408088015190820152821515608082015283151560a0820152428152606081018990526020870151611bfb9062015180613a75565b611c059042613a02565b602082015260608701516040517f39dc1b34ded6b839d48dab8499d0500ef59a8747e57b4c3216747b22ede5a25191611c40913391906138f8565b60405180910390a133600081815260156020908152604080832085518155918501516001808401919091559085015160028301556060850151600383015560808501516004909201805460a09096015161ffff1990961692151561ff001916929092176101009515159590950294909417905560198054808501825591527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c96950180546001600160a01b03191690911790559998505050505050505050565b6000546001600160a01b03163314611d285760405162461bcd60e51b8152600401610e4b9061392f565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b611d583361233c565b611d745760405162461bcd60e51b8152600401610e4b9061394f565b611da86040518060a00160405280600081526020016000815260200160008152602001606081526020016000151581525090565b602080820186905260408083018990528051601f86018390048302810183019091528481529085908590819084018382808284376000920191909152505050506060820152611dff86670de0b6b3a7640000613a75565b815281151560808201526000878152601860209081526040918290208351815581840151600182015591830151600283015560608301518051849392611e4c9260038501929101906133e2565b50608091909101516004909101805460ff191691151591909117905550505050505050565b611e7a3361233c565b611e965760405162461bcd60e51b8152600401610e4b9061394f565b6002805468ffff000000000000001916600160381b60ff9384160268ff0000000000000000191617600160401b9390921692909202179055565b611ed93361233c565b611ef55760405162461bcd60e51b8152600401610e4b9061394f565b60178054921515600160a01b0260ff60a01b1990931692909217909155600755565b611f203361233c565b611f3c5760405162461bcd60e51b8152600401610e4b9061394f565b60005b81811015611fae57600160146000858585818110611f5f57611f5f613b50565b9050602002016020810190611f74919061348c565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611fa681613b09565b915050611f3f565b505050565b6040805160038082526080820190925260009182919060208201606080368337505060085482519293506001600160a01b031691839150600090611ff957611ff9613b50565b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561204d57600080fd5b505afa158015612061573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208591906134a9565b8160018151811061209857612098613b50565b60200260200101906001600160a01b031690816001600160a01b03168152505030816002815181106120cc576120cc613b50565b6001600160a01b03928316602091820292909201015260165460405163d06ca61f60e01b815291169063d06ca61f9061210b9086908590600401613974565b60006040518083038186803b15801561212357600080fd5b505afa158015612137573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261215f919081019061360f565b60028151811061217157612171613b50565b6020026020010151915050919050565b6000546001600160a01b031633146121ab5760405162461bcd60e51b8152600401610e4b9061392f565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6121d53361233c565b6121f15760405162461bcd60e51b8152600401610e4b9061394f565b60648110156122425760405162461bcd60e51b815260206004820152601e60248201527f446f676554563a206d61782073656c6c2070657263656e7420697320312500006044820152606401610e4b565b806004546122509190613a3f565b60075550565b6000546001600160a01b031633146122805760405162461bcd60e51b8152600401610e4b9061392f565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b6122f53361233c565b6123115760405162461bcd60e51b8152600401610e4b9061394f565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b60186020526000908152604090208054600182015460028301546003840180549394929391929161238a90613ace565b80601f01602080910402602001604051908101604052809291908181526020018280546123b690613ace565b80156124035780601f106123d857610100808354040283529160200191612403565b820191906000526020600020905b8154815290600101906020018083116123e657829003601f168201915b5050506004909301549192505060ff1685565b6000818484111561243a5760405162461bcd60e51b8152600401610e4b919061391c565b5060006124478486613a94565b95945050505050565b600254600090600160581b900460ff166124e7576000546001600160a01b038581169116146124e75760405162461bcd60e51b815260206004820152603860248201527f446f676554562c204f6e6c79206f776e6572206f722070726573616c6520436f60448201527f6e747261637420616c6c6f77656420746f20616464204c5000000000000000006064820152608401610e4b565b6000546001600160a01b0385811691161480159061251357506000546001600160a01b03848116911614155b156125f3576001600160a01b03831660009081526010602052604090205460ff1615801561255a57506001600160a01b03831660009081526013602052604090205460ff16155b156125f35760065482612582856001600160a01b03166000908152600e602052604090205490565b61258c9190613a02565b11156125f35760405162461bcd60e51b815260206004820152603060248201527f446f676554562c2063616e7420686f6c64206d6f7265207468616e206d61782060448201526f686f6c6420647564652c20736f72727960801b6064820152608401610e4b565b6125fe848484612c2c565b6001600160a01b03841660009081526014602052604090205460ff1615801561264057506001600160a01b03831660009081526014602052604090205460ff16155b6126985760405162461bcd60e51b8152602060048201526024808201527f446f676554562c20536f7272792062726f2c20796f75726520626c61636b6c696044820152631cdd195960e21b6064820152608401610e4b565b6003541580156126c057506001600160a01b03831660009081526010602052604090205460ff165b156126f0576001600160a01b0384166000908152600e60205260409020546126e757600080fd5b6126f042600355565b601754600160a81b900460ff16156127145761270d848484612cc6565b9050610f49565b604080518082018252601c81527f446f676554562c20496e73756666696369656e742042616c616e6365000000006020808301919091526001600160a01b0387166000908152600e909152919091205461276f918490612416565b6001600160a01b038086166000908152600e602090815260408083209490945591861681526010909152205460ff16156129c9576001600160a01b03841660009081526015602052604090206004015460ff80821691610100900416801561288a576002546001600160a01b0387166000908152600e6020526040902054600160301b90910460ff169060649061280790600a613a75565b6128119190613a3f565b101561288a576001600160a01b0386166000818152601560209081526040808320838155600181018490556002810184905560038101939093556004909201805461ffff1916905590519182527f4bb63b43e31da369bd81d81e679aa662904e90c88dee0dd4bed8876ab83a18bc910160405180910390a15b81156129c6576002546001600160a01b0387166000908152600e6020526040902054600160401b90910460ff16906064906128c690600a613a75565b6128d09190613a3f565b10156129c6576001600160a01b0386166000908152601560205260409020805460019091015460029161290291613a94565b61290c9190613a3f565b6001600160a01b03871660009081526015602052604090205461292f9190613a02565b6001600160a01b038716600090815260156020526040902060010181905542116129c6576001600160a01b0386166000818152601560209081526040808320838155600181018490556002810184905560038101939093556004909201805461ffff1916905590519182527f4bb63b43e31da369bd81d81e679aa662904e90c88dee0dd4bed8876ab83a18bc910160405180910390a15b50505b6001600160a01b03841660009081526011602052604081205460ff16151580612a0c57506001600160a01b03841660009081526011602052604090205460ff1615155b15612a18575081612a43565b6001600160a01b03851660009081526010602052604090205460ff16612a3f868286612d9a565b9150505b612a4c84612e76565b15612a5957612a59612ee2565b6001600160a01b0384166000908152600e6020526040902054612a7c908261325c565b6001600160a01b038086166000818152600e60205260409081902093909355915190871690600080516020613ba083398151915290612abe9085815260200190565b60405180910390a3506001949350505050565b6000610f4983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612416565b612b476040518060a00160405280600081526020016000815260200160008152602001606081526020016000151581525090565b601860008381526020019081526020016000206040518060a0016040529081600082015481526020016001820154815260200160028201548152602001600382018054612b9390613ace565b80601f0160208091040260200160405190810160405280929190818152602001828054612bbf90613ace565b8015612c0c5780601f10612be157610100808354040283529160200191612c0c565b820191906000526020600020905b815481529060010190602001808311612bef57829003601f168201915b50505091835250506004919091015460ff16151560209091015292915050565b6000546001600160a01b03848116911614801590612c5857506000546001600160a01b03838116911614155b15611fae5760055481111580612c8657506001600160a01b03831660009081526012602052604090205460ff165b611fae5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610e4b565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600e90915291822054612d17918490612416565b6001600160a01b038086166000908152600e60205260408082209390935590851681522054612d46908361325c565b6001600160a01b038085166000818152600e60205260409081902093909355915190861690600080516020613ba083398151915290612d889086815260200190565b60405180910390a35060019392505050565b600254601b5460009160ff620100009091048116911615612dd957506002546301000000900460ff168315612dd95750600254640100000000900460ff165b600254600090612dfe90600160481b900461ffff16612df886856132bb565b9061333a565b306000908152600e6020526040902054909150612e1b908261325c565b306000818152600e6020526040908190209290925590516001600160a01b03881690600080516020613ba083398151915290612e5a9085815260200190565b60405180910390a3612e6c8482612ad1565b9695505050505050565b601754600090600160a81b900460ff16158015612e9c5750601754600160a01b900460ff165b8015612ec057506001600160a01b03821660009081526010602052604090205460ff165b8015610df65750600754306000908152600e6020526040902054101592915050565b6017805460ff60a81b1916600160a81b17905560025460009060ff1615612f2a5760028054600754612f279291612df89160ff620100008304811692849291166132bb565b90505b600754600090612f3a9083612ad1565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110612f7457612f74613b50565b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612fc857600080fd5b505afa158015612fdc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300091906134a9565b8160018151811061301357613013613b50565b6001600160a01b03928316602091820292909201015260165447911663791ac9478460008530613044426064613a02565b6040518663ffffffff1660e01b815260040161306495949392919061398d565b600060405180830381600087803b15801561307e57600080fd5b505af1158015613092573d6000803e3d6000fd5b5050505060006130ab8247612ad190919063ffffffff16565b600280549192506000916130c2919060ff16613a53565b6002546130d8919062010000900460ff16613aab565b60ff169050801561324757600254600090610100900460ff161561314f57600254613112908390612df8908690610100900460ff166132bb565b600c546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561314d573d6000803e3d6000fd5b505b86156132455760006131618285613a94565b601654600b5460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a4820152929350169063f305d71990839060c4016060604051808303818588803b1580156131ce57600080fd5b505af11580156131e2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906132079190613763565b505060408051838152602081018b90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a1505b505b50506017805460ff60a81b1916905550505050565b6000806132698385613a02565b905083811015610f495760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610e4b565b6000826132ca57506000610df6565b60006132d68385613a75565b9050826132e38583613a3f565b14610f495760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610e4b565b6000610f4983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836133985760405162461bcd60e51b8152600401610e4b919061391c565b5060006124478486613a3f565b5080546133b190613ace565b6000825580601f106133c1575050565b601f0160209004906000526020600020908101906133df9190613466565b50565b8280546133ee90613ace565b90600052602060002090601f0160209004810192826134105760008555613456565b82601f1061342957805160ff1916838001178555613456565b82800160010185558215613456579182015b8281111561345657825182559160200191906001019061343b565b50613462929150613466565b5090565b5b808211156134625760008155600101613467565b803560ff811681146115c357600080fd5b60006020828403121561349e57600080fd5b8135610f4981613b7c565b6000602082840312156134bb57600080fd5b8151610f4981613b7c565b600080604083850312156134d957600080fd5b82356134e481613b7c565b915060208301356134f481613b7c565b809150509250929050565b60008060006060848603121561351457600080fd5b833561351f81613b7c565b9250602084013561352f81613b7c565b929592945050506040919091013590565b6000806040838503121561355357600080fd5b823561355e81613b7c565b915060208301356134f481613b91565b6000806040838503121561358157600080fd5b823561358c81613b7c565b946020939093013593505050565b600080602083850312156135ad57600080fd5b823567ffffffffffffffff808211156135c557600080fd5b818501915085601f8301126135d957600080fd5b8135818111156135e857600080fd5b8660208260051b85010111156135fd57600080fd5b60209290920196919550909350505050565b6000602080838503121561362257600080fd5b825167ffffffffffffffff8082111561363a57600080fd5b818501915085601f83011261364e57600080fd5b81518181111561366057613660613b66565b8060051b604051601f19603f8301168101818110858211171561368557613685613b66565b604052828152858101935084860182860187018a10156136a457600080fd5b600095505b838610156136c75780518552600195909501949386019386016136a9565b5098975050505050505050565b6000602082840312156136e657600080fd5b8151610f4981613b91565b6000806040838503121561370457600080fd5b823561358c81613b91565b60006020828403121561372157600080fd5b5035919050565b60006020828403121561373a57600080fd5b5051919050565b6000806040838503121561375457600080fd5b50508035926020909101359150565b60008060006060848603121561377857600080fd5b8351925060208401519150604084015190509250925092565b60008060008060008060a087890312156137aa57600080fd5b863595506020870135945060408701359350606087013567ffffffffffffffff808211156137d757600080fd5b818901915089601f8301126137eb57600080fd5b8135818111156137fa57600080fd5b8a602082850101111561380c57600080fd5b602083019550809450505050608087013561382681613b91565b809150509295509295509295565b6000806040838503121561384757600080fd5b6138508361347b565b915061385e6020840161347b565b90509250929050565b600081518084526020808501945080840160005b838110156138a05781516001600160a01b03168752958201959082019060010161387b565b509495945050505050565b6000815180845260005b818110156138d1576020818501810151868301820152016138b5565b818111156138e3576000602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0383168152604060208201819052600090610f46908301846138ab565b602081526000610f4960208301846138ab565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b828152604060208201526000610f466040830184613867565b85815284602082015260a0604082015260006139ac60a0830186613867565b6001600160a01b0394909416606083015250608001529392505050565b85815284602082015283604082015260a0606082015260006139ee60a08301856138ab565b905082151560808301529695505050505050565b60008219821115613a1557613a15613b24565b500190565b600060ff821660ff84168060ff03821115613a3757613a37613b24565b019392505050565b600082613a4e57613a4e613b3a565b500490565b600060ff831680613a6657613a66613b3a565b8060ff84160491505092915050565b6000816000190483118215151615613a8f57613a8f613b24565b500290565b600082821015613aa657613aa6613b24565b500390565b600060ff821660ff841680821015613ac557613ac5613b24565b90039392505050565b600181811c90821680613ae257607f821691505b60208210811415613b0357634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415613b1d57613b1d613b24565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146133df57600080fd5b80151581146133df57600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220308b5a7910be6eb522cf0fdea430079b289eab6b56c0ae2021716b529e5bd4b164736f6c63430008070033

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

0000000000000000000000000fdc977660c0603320ebcdcb63bff2123a97153d

-----Decoded View---------------
Arg [0] : tokenOwner (address): 0x0fDC977660c0603320ebCDCB63Bff2123A97153D

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000000fdc977660c0603320ebcdcb63bff2123a97153d


Deployed Bytecode Sourcemap

6233:20635:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7844:49;;;;;;;;;;;;;;;;;;;17920:25:1;;;17908:2;17893:18;7844:49:0;;;;;;;;10567:80;;;;;;;;;;-1:-1:-1;10639:5:0;;;;;;;;;;;;-1:-1:-1;;;10639:5:0;;;;10567:80;;;;;;;:::i;14787:216::-;;;;;;;;;;-1:-1:-1;14787:216:0;;;;;:::i;:::-;;:::i;:::-;;;10218:14:1;;10211:22;10193:41;;10181:2;10166:18;14787:216:0;10053:187:1;7204:35:0;;;;;;;;;;-1:-1:-1;7204:35:0;;;;-1:-1:-1;;;7204:35:0;;;;;;;;;20387:4:1;20375:17;;;20357:36;;20345:2;20330:18;7204:35:0;20215:184:1;10297:88:0;;;;;;;;;;-1:-1:-1;10370:12:0;;10297:88;;8999:28;;;;;;;;;;-1:-1:-1;8999:28:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;8580:32:1;;;8562:51;;8550:2;8535:18;8999:28:0;8416:203:1;6942:26:0;;;;;;;;;;-1:-1:-1;6942:26:0;;;;;;;;;;;7782:49;;;;;;;;;;;;;;;;23688:231;;;;;;;;;;-1:-1:-1;23688:231:0;;;;;:::i;:::-;;:::i;:::-;;17149:374;;;;;;;;;;-1:-1:-1;17149:374:0;;;;;:::i;:::-;;:::i;26554:142::-;;;;;;;;;;;;;:::i;6977:33::-;;;;;;;;;;-1:-1:-1;6977:33:0;;;;;;;;;;;7503:28;;;;;;;;;;-1:-1:-1;7503:28:0;;;;-1:-1:-1;;;7503:28:0;;;;;;3559:103;;;;;;;;;;-1:-1:-1;3559:103:0;;;;;:::i;:::-;3614:4;3649:5;-1:-1:-1;;;;;3638:16:0;;;3649:5;;3638:16;;3559:103;10391:80;;;;;;;;;;-1:-1:-1;9234:2:0;10391:80;;7017:32;;;;;;;;;;-1:-1:-1;7017:32:0;;;;;;;;;;;9245:38;;;;;;;;;;-1:-1:-1;9245:38:0;;;;;;;;7427;;;;;;;;;;-1:-1:-1;7427:38:0;;;;-1:-1:-1;;;7427:38:0;;;;;;;;;17755:6:1;17743:19;;;17725:38;;17713:2;17698:18;7427:38:0;17581:188:1;8796:37:0;;;;;;;;;;-1:-1:-1;8796:37:0;;;;-1:-1:-1;;;;;8796:37:0;;;21576:397;;;;;;;;;;-1:-1:-1;21576:397:0;;;;;:::i;:::-;;:::i;23206:474::-;;;;;;;;;;-1:-1:-1;23206:474:0;;;;;:::i;:::-;;:::i;15214:117::-;;;;;;;;;;-1:-1:-1;15214:117:0;;;;;:::i;:::-;;:::i;22612:268::-;;;;;;;;;;-1:-1:-1;22612:268:0;;;;;:::i;:::-;;:::i;22888:120::-;;;;;;;;;;-1:-1:-1;22888:120:0;;;;;:::i;:::-;;:::i;22041:239::-;;;;;;;;;;-1:-1:-1;22041:239:0;;;;;:::i;:::-;;:::i;7248:37::-;;;;;;;;;;-1:-1:-1;7248:37:0;;;;-1:-1:-1;;;7248:37:0;;;;;;6905:30;;;;;;;;;;-1:-1:-1;6905:30:0;;;;;;;;;;;14544:121;;;;;;;;;;-1:-1:-1;14639:11:0;:18;14544:121;;8844:30;;;;;;;;;;-1:-1:-1;8844:30:0;;;;-1:-1:-1;;;8844:30:0;;;;;;22468:136;;;;;;;;;;;;;:::i;10737:105::-;;;;;;;;;;-1:-1:-1;10737:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;10821:18:0;10803:7;10821:18;;;:9;:18;;;;;;;10737:105;15343:337;;;;;;;;;;-1:-1:-1;15343:337:0;;;;;:::i;:::-;;:::i;11328:170::-;;;;;;;;;;-1:-1:-1;11328:170:0;;;;;:::i;:::-;;:::i;16814:159::-;;;;;;;;;;-1:-1:-1;16814:159:0;;;;;:::i;:::-;;:::i;7721:48::-;;;;;;;;;;;;;;;;16603:203;;;;;;;;;;-1:-1:-1;16603:203:0;;;;;:::i;:::-;;:::i;10653:78::-;;;;;;;;;;-1:-1:-1;10705:7:0;10723:5;-1:-1:-1;;;;;10723:5:0;10653:78;;8704:52;;;;;;;;;;-1:-1:-1;8704:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19930:25:1;;;19986:2;19971:18;;19964:34;;;;20014:18;;;20007:34;;;;20072:2;20057:18;;20050:34;20128:14;20121:22;20115:3;20100:19;;20093:51;20188:14;20181:22;20175:3;20160:19;;20153:51;19917:3;19902:19;8704:52:0;19655:555:1;7161:36:0;;;;;;;;;;-1:-1:-1;7161:36:0;;;;;;;;;;;10477:84;;;;;;;;;;-1:-1:-1;10551:7:0;;;;;;;;;;;;-1:-1:-1;;;10551:7:0;;;;10477:84;;6868:30;;;;;;;;;;-1:-1:-1;6868:30:0;;;;;;;;15781:137;;;;;;;;;;-1:-1:-1;15781:137:0;;;;;:::i;:::-;;:::i;25926:228::-;;;;;;;;;;-1:-1:-1;25926:228:0;;;;;:::i;:::-;;:::i;15692:77::-;;;;;;;;;;;;;:::i;14673:106::-;;;;;;;;;;-1:-1:-1;14673:106:0;;;;;:::i;:::-;;:::i;8326:19::-;;;;;;;;;;-1:-1:-1;8326:19:0;;;;-1:-1:-1;;;;;8326:19:0;;;16985:156;;;;;;;;;;-1:-1:-1;16985:156:0;;;;;:::i;:::-;;:::i;15930:154::-;;;;;;;;;;-1:-1:-1;15930:154:0;;;;;:::i;:::-;;:::i;11893:2463::-;;;;;;;;;;-1:-1:-1;11893:2463:0;;;;;:::i;:::-;;:::i;3232:94::-;;;;;;;;;;-1:-1:-1;3232:94:0;;;;;:::i;:::-;;:::i;7538:25::-;;;;;;;;;;;;;;;;8239:36;;;;;;;;;;-1:-1:-1;8239:36:0;;;;-1:-1:-1;;;;;8239:36:0;;;16092:503;;;;;;;;;;-1:-1:-1;16092:503:0;;;;;:::i;:::-;;:::i;23927:234::-;;;;;;;;;;-1:-1:-1;23927:234:0;;;;;:::i;:::-;;:::i;7292:36::-;;;;;;;;;;-1:-1:-1;7292:36:0;;;;-1:-1:-1;;;7292:36:0;;;;;;10848:132;;;;;;;;;;-1:-1:-1;10848:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;10950:19:0;;;10932:7;10950:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10848:132;26162:156;;;;;;;;;;-1:-1:-1;26162:156:0;;;;;:::i;:::-;;:::i;11506:235::-;;;;;;;;;;-1:-1:-1;11506:235:0;;;;;:::i;:::-;;:::i;8282:35::-;;;;;;;;;;-1:-1:-1;8282:35:0;;;;-1:-1:-1;;;;;8282:35:0;;;10995:321;;;;;;;;;;-1:-1:-1;10995:321:0;;;;;:::i;:::-;;:::i;3402:97::-;;;;;;;;;;-1:-1:-1;3402:97:0;;;;;:::i;:::-;;:::i;15011:191::-;;;;;;;;;;-1:-1:-1;15011:191:0;;;;;:::i;:::-;;:::i;3959:173::-;;;;;;;;;;-1:-1:-1;3959:173:0;;;;;:::i;:::-;;:::i;9034:21::-;;;;;;;;;;;;;;;;23018:128;;;;;;;;;;-1:-1:-1;23018:128:0;;;;;:::i;:::-;;:::i;8765:24::-;;;;;;;;;;-1:-1:-1;8765:24:0;;;;-1:-1:-1;;;;;8765:24:0;;;8469:38;;;;;;;;;;-1:-1:-1;8469:38:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3733:107;;;;;;;;;;-1:-1:-1;3733:107:0;;;;;:::i;:::-;;:::i;8899:50::-;;;;;;;;;;-1:-1:-1;8899:50:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::i;14787:216::-;14891:10;14862:4;14879:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;14879:32:0;;;;;;;;;;:41;;;14936:37;14862:4;;14879:32;;14936:37;;;;14914:6;17920:25:1;;17908:2;17893:18;;17774:177;14936:37:0;;;;;;;;-1:-1:-1;14991:4:0;14787:216;;;;;:::o;8999:28::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8999:28:0;;-1:-1:-1;8999:28:0;:::o;23688:231::-;3117:24;3130:10;3117:12;:24::i;:::-;3109:48;;;;-1:-1:-1;;;3109:48:0;;;;;;;:::i;:::-;;;;;;;;;23815:18:::1;:39:::0;;-1:-1:-1;;23865:37:0;23815:39;::::1;::::0;;::::1;;-1:-1:-1::0;;23865:37:0;;-1:-1:-1;;;23865:37:0;;;::::1;::::0;;;::::1;;::::0;;23688:231::o;17149:374::-;17312:12;;-1:-1:-1;;;;;17269:19:0;;17249:4;17269:19;;;:11;:19;;;;;;;;17289:10;17269:31;;;;;;;;17249:4;;17269:56;17266:190;;17375:69;;;;;;;;;;;-1:-1:-1;;;17375:69:0;;;;;;;;-1:-1:-1;;;;;17375:19:0;;-1:-1:-1;17375:19:0;;;:11;:19;;;;;17395:10;17375:31;;;;;;;;;;:69;;17411:6;;17375:35;:69::i;:::-;-1:-1:-1;;;;;17341:19:0;;;;;;:11;:19;;;;;;;;17361:10;17341:31;;;;;;;:103;17266:190;17475:40;17489:6;17497:9;17508:6;17475:13;:40::i;:::-;17468:47;;17149:374;;;;;;:::o;26554:142::-;26682:4;;-1:-1:-1;;;;;26682:4:0;26607:7;10821:18;;;:9;:18;;;;;;26634:54;;26661:4;;-1:-1:-1;;;;;26661:4:0;10803:7;10821:18;;;:9;:18;;;;;;26634:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;26627:61;;26554:142;:::o;21576:397::-;3117:24;3130:10;3117:12;:24::i;:::-;3109:48;;;;-1:-1:-1;;;3109:48:0;;;;;;;:::i;:::-;21703:13:::1;::::0;:43:::1;::::0;;::::1;:13:::0;;;::::1;;:43;21700:126;;21748:13;:42:::0;;-1:-1:-1;;21748:42:0::1;::::0;::::1;::::0;::::1;;;::::0;;21700:126:::1;;;21797:19;:27:::0;;-1:-1:-1;;21797:27:0::1;::::0;;21700:126:::1;21839:14;::::0;:45:::1;::::0;;::::1;:14:::0;;;::::1;;:45;21836:130;;21886:14;:44:::0;;::::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;21886:44:0;;::::1;;::::0;;21576:397;;:::o;21836:130::-:1;21937:19;:27:::0;;-1:-1:-1;;21937:27:0::1;::::0;;21836:130:::1;21576:397:::0;;:::o;23206:474::-;3117:24;3130:10;3117:12;:24::i;:::-;3109:48;;;;-1:-1:-1;;;3109:48:0;;;;;;;:::i;:::-;23357:2:::1;23314:39;23335:18:::0;23314;:39:::1;:::i;:::-;:45;;;;23306:90;;;::::0;-1:-1:-1;;;23306:90:0;;13396:2:1;23306:90:0::1;::::0;::::1;13378:21:1::0;;;13415:18;;;13408:30;13474:34;13454:18;;;13447:62;13526:18;;23306:90:0::1;13194:356:1::0;23306:90:0::1;23458:8;::::0;;;::::1;;;23415:39;23436:18:::0;23415;:39:::1;:::i;:::-;:51;;;;23407:104;;;::::0;-1:-1:-1;;;23407:104:0;;16629:2:1;23407:104:0::1;::::0;::::1;16611:21:1::0;16668:2;16648:18;;;16641:30;16707:34;16687:18;;;16680:62;-1:-1:-1;;;16758:18:1;;;16751:38;16806:19;;23407:104:0::1;16427:404:1::0;23407:104:0::1;23522:12;:33:::0;;::::1;23566::::0;;::::1;23522;23566;-1:-1:-1::0;;23566:33:0;;;23522;;::::1;23566::::0;::::1;::::0;;23630:41:::1;23581:18:::0;23537;23630:41:::1;:::i;:::-;23619:8;::::0;:52:::1;;;;;;;;;;;;;;;;;;23206:474:::0;;:::o;15214:117::-;15269:4;15293:30;15301:7;15310:12;;15293:7;:30::i;22612:268::-;3117:24;3130:10;3117:12;:24::i;:::-;3109:48;;;;-1:-1:-1;;;3109:48:0;;;;;;;:::i;:::-;22712:3:::1;22697:12;;:18;;;;:::i;:::-;22687:6;:28;;22679:73;;;::::0;-1:-1:-1;;;22679:73:0;;13035:2:1;22679:73:0::1;::::0;::::1;13017:21:1::0;;;13054:18;;;13047:30;13113:34;13093:18;;;13086:62;13165:18;;22679:73:0::1;12833:356:1::0;22679:73:0::1;22780:12;;22771:6;:21;22763:77;;;::::0;-1:-1:-1;;;22763:77:0;;15471:2:1;22763:77:0::1;::::0;::::1;15453:21:1::0;15510:2;15490:18;;;15483:30;15549:34;15529:18;;;15522:62;-1:-1:-1;;;15600:18:1;;;15593:41;15651:19;;22763:77:0::1;15269:407:1::0;22763:77:0::1;22851:12;:21:::0;22612:268::o;22888:120::-;3117:24;3130:10;3117:12;:24::i;:::-;3109:48;;;;-1:-1:-1;;;3109:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22972:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;22972:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22888:120::o;22041:239::-;3117:24;3130:10;3117:12;:24::i;:::-;3109:48;;;;-1:-1:-1;;;3109:48:0;;;;;;;:::i;:::-;22126:20:::1;::::0;22118:61:::1;::::0;-1:-1:-1;;;;;22126:20:0;;::::1;::::0;22157:21:::1;22118:61:::0;::::1;;;::::0;22126:20:::1;22118:61:::0;22126:20;22118:61;22157:21;22126:20;22118:61;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;22212:20:0::1;::::0;22234:37:::1;::::0;-1:-1:-1;;;22234:37:0;;22265:4:::1;22234:37;::::0;::::1;8562:51:1::0;-1:-1:-1;;;;;22190:21:0;;::::1;::::0;::::1;::::0;22212:20;::::1;::::0;22190:21;;22234:22:::1;::::0;8535:18:1;;22234:37:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22190:82;::::0;-1:-1:-1;;;;;;22190:82:0::1;::::0;;;;;;-1:-1:-1;;;;;9354:32:1;;;22190:82:0::1;::::0;::::1;9336:51:1::0;9403:18;;;9396:34;9309:18;;22190:82:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;22468:136::-:0;3117:24;3130:10;3117:12;:24::i;:::-;3109:48;;;;-1:-1:-1;;;3109:48:0;;;;;;;:::i;:::-;22569:19:::1;:27:::0;;-1:-1:-1;;22569:27:0::1;::::0;;22468:136::o;15343:337::-;3117:24;3130:10;3117:12;:24::i;:::-;3109:48;;;;-1:-1:-1;;;3109:48:0;;;;;;;:::i;:::-;15456:1:::1;15437:15;:20;;15429:74;;;::::0;-1:-1:-1;;;15429:74:0;;13757:2:1;15429:74:0::1;::::0;::::1;13739:21:1::0;13796:2;13776:18;;;13769:30;13835:34;13815:18;;;13808:62;-1:-1:-1;;;13886:18:1;;;13879:39;13935:19;;15429:74:0::1;13555:405:1::0;15429:74:0::1;15638:4;15620:15;15605:12;;:30;;;;:::i;:::-;:37;;;;:::i;:::-;15588:14;:54:::0;-1:-1:-1;15343:337:0:o;11328:170::-;3117:24;3130:10;3117:12;:24::i;:::-;3109:48;;;;-1:-1:-1;;;3109:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11438:32:0;;;::::1;;::::0;;;:13:::1;:32;::::0;;;;:52;;-1:-1:-1;;11438:52:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11328:170::o;16814:159::-;16880:12;3117:24;3130:10;3117:12;:24::i;:::-;3109:48;;;;-1:-1:-1;;;3109:48:0;;;;;;;:::i;:::-;16919:16:::1;::::0;;;:11:::1;:16;::::0;;;;16912:23;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;16919:16;16912:23:::1;;::::0;::::1;16919:16:::0;16912:23:::1;:::i;:::-;-1:-1:-1::0;16912:23:0::1;;::::0;;-1:-1:-1;;16912:23:0::1;::::0;;-1:-1:-1;16912:23:0;3159:1:::1;16814:159:::0;;;:::o;16603:203::-;16692:12;3117:24;3130:10;3117:12;:24::i;:::-;3109:48;;;;-1:-1:-1;;;3109:48:0;;;;;;;:::i;:::-;16749:19:::1;:8:::0;16760::::1;16749:19;:::i;:::-;16724:16;::::0;;;:11:::1;:16;::::0;;;;:44;-1:-1:-1;16794:4:0::1;16603:203:::0;;;;:::o;15781:137::-;3117:24;3130:10;3117:12;:24::i;:::-;3109:48;;;;-1:-1:-1;;;3109:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15847:14:0::1;;::::0;;;:5:::1;:14;::::0;;;;;;;:21;;15864:4:::1;-1:-1:-1::0;;15847:21:0;;::::1;::::0;::::1;::::0;;;15879:15:::1;:24:::0;;;;;:31;;;;::::1;::::0;;::::1;::::0;;15781:137::o;25926:228::-;3117:24;3130:10;3117:12;:24::i;:::-;3109:48;;;;-1:-1:-1;;;3109:48:0;;;;;;;:::i;:::-;26045:21:::1;:46:::0;;-1:-1:-1;;;;;26045:46:0;;::::1;-1:-1:-1::0;;;;;;26045:46:0;;::::1;;::::0;;;26102:20:::1;:44:::0;;;;;::::1;::::0;::::1;;::::0;;25926:228::o;15692:77::-;3117:24;3130:10;3117:12;:24::i;:::-;3109:48;;;;-1:-1:-1;;;3109:48:0;;;;;;;:::i;:::-;15746:8:::1;:15:::0;;-1:-1:-1;;;;15746:15:0::1;-1:-1:-1::0;;;15746:15:0::1;::::0;;15692:77::o;14673:106::-;3117:24;3130:10;3117:12;:24::i;:::-;3109:48;;;;-1:-1:-1;;;3109:48:0;;;;;;;:::i;:::-;14745:18:::1;:26:::0;;-1:-1:-1;;;;;;14745:26:0::1;-1:-1:-1::0;;;;;14745:26:0;;;::::1;::::0;;;::::1;::::0;;14673:106::o;16985:156::-;17065:4;17089:44;17103:10;17115:9;17126:6;17089:13;:44::i;15930:154::-;3117:24;3130:10;3117:12;:24::i;:::-;3109:48;;;;-1:-1:-1;;;3109:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16001:19:0::1;16023:5;16001:19:::0;;;:5:::1;:19;::::0;;;;;;;:27;;-1:-1:-1;;16001:27:0;;::::1;::::0;;;16039:15:::1;:29:::0;;;;;;:37;;;;::::1;::::0;;15930:154::o;11893:2463::-;11970:12;12231:25;12259:28;12276:10;12259:16;:28::i;:::-;12231:56;;12341:18;12362:36;12387:4;:10;;;12362:24;:36::i;:::-;12445:10;12435:21;;;;:9;:21;;;;;;12341:57;;-1:-1:-1;12435:35:0;-1:-1:-1;12435:35:0;12427:91;;;;-1:-1:-1;;;12427:91:0;;16217:2:1;12427:91:0;;;16199:21:1;16256:2;16236:18;;;16229:30;16295:34;16275:18;;;16268:62;-1:-1:-1;;;16346:18:1;;;16339:41;16397:19;;12427:91:0;16015:407:1;12427:91:0;12693:12;;12675:10;12533:12;12665:21;;;:9;:21;;;;;;12548:1;;12533:12;;;;12693;12665:24;;12687:2;12665:24;:::i;:::-;12664:41;;;;:::i;:::-;12663:49;;12709:3;12663:49;:::i;:::-;12748:18;;12638:74;;-1:-1:-1;;;;12748:18:0;;;;12730:36;;;;;:77;;-1:-1:-1;12788:19:0;;-1:-1:-1;;;12788:19:0;;;;12770:37;;;12730:77;12727:165;;;12837:1;12827:11;;12872:4;12857:19;;12727:165;12926:17;;-1:-1:-1;;;12926:17:0;;;;12909:34;;12906:86;;;12972:4;12963:13;;12906:86;13009:4;:18;;;13006:152;;;13055:6;13047:95;;;;-1:-1:-1;;;13047:95:0;;14584:2:1;13047:95:0;;;14566:21:1;14623:2;14603:18;;;14596:30;14662:34;14642:18;;;14635:62;14733:34;14713:18;;;14706:62;-1:-1:-1;;;14784:19:1;;;14777:43;14837:19;;13047:95:0;14382:480:1;13047:95:0;13185:20;13198:7;13185:10;:20;:::i;:::-;13172:33;;13220:36;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13220:36:0;13275:6;13271:520;;13310:4;:18;;;13309:19;13301:87;;;;-1:-1:-1;;;13301:87:0;;11830:2:1;13301:87:0;;;11812:21:1;11869:2;11849:18;;;11842:30;11908:34;11888:18;;;11881:62;11979:25;11959:18;;;11952:53;12022:19;;13301:87:0;11628:419:1;13301:87:0;13417:10;13407:21;;;;:9;:21;;;;;:35;;13432:10;;13407:21;:35;;13432:10;;13407:35;:::i;:::-;;;;-1:-1:-1;13480:13:0;;-1:-1:-1;13492:1:0;13480:10;:13;:::i;:::-;13471:4;;-1:-1:-1;;;;;13471:4:0;13461:15;;;;:9;:15;;;;;:32;;:15;;;:32;;;;;:::i;:::-;;;;-1:-1:-1;;13538:4:0;;-1:-1:-1;;;;;13538:4:0;13526:10;-1:-1:-1;;;;;;;;;;;13544:12:0;13555:1;13544:10;:12;:::i;:::-;13517:40;;17920:25:1;;;17908:2;17893:18;13517:40:0;;;;;;;13617:12;13628:1;13617:10;:12;:::i;:::-;13594:18;;-1:-1:-1;;;;;13594:18:0;13576:38;;;;:9;:38;;;;;:53;;:38;;;:53;;;;;:::i;:::-;;;;-1:-1:-1;;13648:18:0;;-1:-1:-1;;;;;13648:18:0;:26;13675:12;13686:1;13675:10;:12;:::i;:::-;13648:40;;;;;;;;;;;;;17920:25:1;;17908:2;17893:18;;17774:177;13648:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;13741:18:0;;-1:-1:-1;;;;;13741:18:0;13721:10;-1:-1:-1;;;;;;;;;;;13762:12:0;13773:1;13762:10;:12;:::i;:::-;13712:63;;17920:25:1;;;17908:2;17893:18;13712:63:0;;;;;;;13271:520;13846:14;;;;;13819:23;;;:41;13875:42;;;:27;;;:42;13932:32;;;:23;;;:32;14006:15;13979:42;;14036:28;;;:46;;;-1:-1:-1;14147:17:0;;;:25;;14167:5;14147:25;:::i;:::-;14129:43;;:15;:43;:::i;:::-;14097:29;;;:75;14218:9;;;;14192:36;;;;;;14206:10;;14218:9;14192:36;:::i;:::-;;;;;;;;14252:10;14243:20;;;;:8;:20;;;;;;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14243:36:0;;;;;;-1:-1:-1;;14243:36:0;;;;;;;;;;;;;;;;;;;14294:11;:28;;;;;;;;;;;;;-1:-1:-1;;;;;;14294:28:0;;;;;;14243:36;11893:2463;-1:-1:-1;;;;;;;;;11893:2463:0:o;3232:94::-;3614:4;3649:5;-1:-1:-1;;;;;3649:5:0;2956:10;3638:16;2940:38;;;;-1:-1:-1;;;2940:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3292:19:0::1;;::::0;;;3314:4:::1;3292:19;::::0;;;;;;;:26;;-1:-1:-1;;3292:26:0::1;::::0;;::::1;::::0;;3232:94::o;16092:503::-;3117:24;3130:10;3117:12;:24::i;:::-;3109:48;;;;-1:-1:-1;;;3109:48:0;;;;;;;:::i;:::-;16261:33:::1;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16261:33:0::1;16305:25;::::0;;::::1;:41:::0;;;16357:22:::1;::::0;;::::1;:30:::0;;;16398:28;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;;;16418:8;;;;;;16398:28;::::1;16418:8:::0;;;;16398:28;::::1;;::::0;::::1;::::0;;;;-1:-1:-1;;;;16398:17:0::1;::::0;::::1;:28:::0;16458:31:::1;:20:::0;16481:8:::1;16458:31;:::i;:::-;16437:52:::0;;16500:43;::::1;;:26;::::0;::::1;:43:::0;16437:18:::1;16554::::0;;;:11:::1;:18;::::0;;;;;;;;:33;;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;;16437:12;;16554:18;:33:::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;16554:33:0::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;-1:-1:-1;;16554:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;;;;;;;16092:503:0:o;23927:234::-;3117:24;3130:10;3117:12;:24::i;:::-;3109:48;;;;-1:-1:-1;;;3109:48:0;;;;;;;:::i;:::-;24055:19:::1;:40:::0;;-1:-1:-1;;24106:38:0;-1:-1:-1;;;24055:40:0::1;::::0;;::::1;;-1:-1:-1::0;;24106:38:0;;-1:-1:-1;;;24106:38:0;;;::::1;::::0;;;::::1;;::::0;;23927:234::o;26162:156::-;3117:24;3130:10;3117:12;:24::i;:::-;3109:48;;;;-1:-1:-1;;;3109:48:0;;;;;;;:::i;:::-;26254:11:::1;:22:::0;;;::::1;;-1:-1:-1::0;;;26254:22:0::1;-1:-1:-1::0;;;;26254:22:0;;::::1;::::0;;;::::1;::::0;;;26287:13:::1;:23:::0;26162:156::o;11506:235::-;3117:24;3130:10;3117:12;:24::i;:::-;3109:48;;;;-1:-1:-1;;;3109:48:0;;;;;;;:::i;:::-;11609:6:::1;11605:129;11621:33:::0;;::::1;11605:129;;;11718:4;11675:13;:40;11689:22;;11712:1;11689:25;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11675:40:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;11675:40:0;:47;;-1:-1:-1;;11675:47:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11656:3;::::1;::::0;::::1;:::i;:::-;;;;11605:129;;;;11506:235:::0;;:::o;10995:321::-;11112:16;;;11126:1;11112:16;;;;;;;;;11067:4;;;;11112:16;;;;;;;;;-1:-1:-1;;11157:4:0;;11147:7;;;;-1:-1:-1;;;;;;11157:4:0;;11147:7;;-1:-1:-1;11157:4:0;;11147:7;;;;:::i;:::-;-1:-1:-1;;;;;11147:14:0;;;:7;;;;;;;;;;:14;;;;11190:6;;:13;;;-1:-1:-1;;;11190:13:0;;;;:6;;;;;:11;;:13;;;;;11147:7;;11190:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11180:4;11185:1;11180:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;11180:23:0;;;-1:-1:-1;;;;;11180:23:0;;;;;11240:4;11222;11227:1;11222:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11222:23:0;;;:7;;;;;;;;;:23;11267:6;;:38;;-1:-1:-1;;;11267:38:0;;:6;;;:20;;:38;;11288:10;;11300:4;;11267:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11267:38:0;;;;;;;;;;;;:::i;:::-;11306:1;11267:41;;;;;;;;:::i;:::-;;;;;;;11260:48;;;10995:321;;;:::o;3402:97::-;3614:4;3649:5;-1:-1:-1;;;;;3649:5:0;2956:10;3638:16;2940:38;;;;-1:-1:-1;;;2940:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3464:19:0::1;3486:5;3464:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;3464:27:0::1;::::0;;3402:97::o;15011:191::-;3117:24;3130:10;3117:12;:24::i;:::-;3109:48;;;;-1:-1:-1;;;3109:48:0;;;;;;;:::i;:::-;15107:3:::1;15096:7;:14;;15088:57;;;::::0;-1:-1:-1;;;15088:57:0;;11125:2:1;15088:57:0::1;::::0;::::1;11107:21:1::0;11164:2;11144:18;;;11137:30;11203:32;11183:18;;;11176:60;11253:18;;15088:57:0::1;10923:354:1::0;15088:57:0::1;15187:7;15172:12;;:22;;;;:::i;:::-;15156:13;:38:::0;-1:-1:-1;15011:191:0:o;3959:173::-;3614:4;3649:5;-1:-1:-1;;;;;3649:5:0;2956:10;3638:16;2940:38;;;;-1:-1:-1;;;2940:38:0;;;;;;;:::i;:::-;4035:5:::1;:11:::0;;-1:-1:-1;;;;;;4035:11:0::1;-1:-1:-1::0;;;;;4035:11:0;::::1;::::0;;::::1;::::0;;4057:19;;;-1:-1:-1;4057:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;4057:26:0::1;::::0;;::::1;::::0;;;4099:25;;8562:51:1;;;4099:25:0::1;::::0;8535:18:1;4099:25:0::1;;;;;;;3959:173:::0;:::o;23018:128::-;3117:24;3130:10;3117:12;:24::i;:::-;3109:48;;;;-1:-1:-1;;;3109:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23106:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;23106:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23018:128::o;3733:107::-;-1:-1:-1;;;;;3813:19:0;3789:4;3813:19;;;:14;:19;;;;;;;;;3733:107::o;8899:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8899:50:0;;;;;;;-1:-1:-1;;8899:50:0;;;:::o;640:192::-;726:7;762:12;754:6;;;;746:29;;;;-1:-1:-1;;;746:29:0;;;;;;;;:::i;:::-;-1:-1:-1;786:9:0;798:5;802:1;798;:5;:::i;:::-;786:17;640:192;-1:-1:-1;;;;;640:192:0:o;17531:2759::-;17646:8;;17623:4;;-1:-1:-1;;;17646:8:0;;;;17642:172;;17688:5;;-1:-1:-1;;;;;17678:15:0;;;17688:5;;17678:15;17670:84;;;;-1:-1:-1;;;17670:84:0;;12610:2:1;17670:84:0;;;12592:21:1;12649:2;12629:18;;;12622:30;12688:34;12668:18;;;12661:62;12759:26;12739:18;;;12732:54;12803:19;;17670:84:0;12408:420:1;17670:84:0;17837:5;;-1:-1:-1;;;;;17827:15:0;;;17837:5;;17827:15;;;;:37;;-1:-1:-1;17859:5:0;;-1:-1:-1;;;;;17846:18:0;;;17859:5;;17846:18;;17827:37;17824:263;;;-1:-1:-1;;;;;17884:16:0;;;;;;:5;:16;;;;;;;;17883:17;:48;;;;-1:-1:-1;;;;;;17905:26:0;;;;;;:15;:26;;;;;;;;17904:27;17883:48;17880:196;;;17993:14;;17983:6;17960:20;17970:9;-1:-1:-1;;;;;10821:18:0;10803:7;10821:18;;;:9;:18;;;;;;;10737:105;17960:20;:29;;;;:::i;:::-;:47;;17951:109;;;;-1:-1:-1;;;17951:109:0;;14167:2:1;17951:109:0;;;14149:21:1;14206:2;14186:18;;;14179:30;14245:34;14225:18;;;14218:62;-1:-1:-1;;;14296:18:1;;;14289:46;14352:19;;17951:109:0;13965:412:1;17951:109:0;18107:39;18120:6;18128:9;18139:6;18107:12;:39::i;:::-;-1:-1:-1;;;;;18166:21:0;;;;;;:13;:21;;;;;;;;18165:22;:51;;;;-1:-1:-1;;;;;;18192:24:0;;;;;;:13;:24;;;;;;;;18191:25;18165:51;18157:100;;;;-1:-1:-1;;;18157:100:0;;17378:2:1;18157:100:0;;;17360:21:1;17417:2;17397:18;;;17390:30;17456:34;17436:18;;;17429:62;-1:-1:-1;;;17507:18:1;;;17500:34;17551:19;;18157:100:0;17176:400:1;18157:100:0;22355:10;;:15;;;18271:31;;-1:-1:-1;;;;;;18286:16:0;;;;;;:5;:16;;;;;;;;18271:31;18268:80;;;-1:-1:-1;;;;;18313:17:0;;18333:1;18313:17;;;:9;:17;;;;;;18305:30;;;;;;18337:8;22437:15;22424:10;:28;22386:74;18337:8;18361:6;;-1:-1:-1;;;18361:6:0;;;;18358:63;;;18377:41;18392:6;18400:9;18411:6;18377:14;:41::i;:::-;18370:48;;;;18358:63;18461:61;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18461:17:0;;-1:-1:-1;18461:17:0;;;:9;:17;;;;;;;;:61;;18483:6;;18461:21;:61::i;:::-;-1:-1:-1;;;;;18441:17:0;;;;;;;:9;:17;;;;;;;;:81;;;;18538:16;;;;;:5;:16;;;;;;;18535:1258;;;-1:-1:-1;;;;;14473:14:0;;18940:15;14473:14;;;:8;:14;;;;;:28;;;;;;;;;14502:24;;;19005:244;;;;19070:17;;-1:-1:-1;;;;;19039:17:0;;;;;;:9;:17;;;;;;-1:-1:-1;;;19070:17:0;;;;;;19063:3;;19039:22;;19059:2;19039:22;:::i;:::-;:27;;;;:::i;:::-;19038:49;19035:199;;;-1:-1:-1;;;;;19150:16:0;;;;;;:8;:16;;;;;;;;19143:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19143:23:0;;;19194:20;;8562:51:1;;;19194:20:0;;8535:18:1;19194:20:0;;;;;;;19035:199;19266:10;19263:519;;;19332:18;;-1:-1:-1;;;;;19301:17:0;;;;;;:9;:17;;;;;;-1:-1:-1;;;19332:18:0;;;;;;19325:3;;19301:22;;19321:2;19301:22;:::i;:::-;:27;;;;:::i;:::-;19300:50;19297:470;;;-1:-1:-1;;;;;19509:16:0;;;;;;:8;:16;;;;;:27;;19474:32;;;;;19540:1;;19474:62;;;:::i;:::-;19473:68;;;;:::i;:::-;-1:-1:-1;;;;;19442:16:0;;;;;;:8;:16;;;;;:27;:100;;;;:::i;:::-;-1:-1:-1;;;;;19407:16:0;;;;;;:8;:16;;;;;:32;;:135;;;19605:15;-1:-1:-1;19566:182:0;;-1:-1:-1;;;;;19655:16:0;;;;;;:8;:16;;;;;;;;19648:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19648:23:0;;;19703:20;;8562:51:1;;;19703:20:0;;8535:18:1;19703:20:0;;;;;;;19566:182;18555:1238;;18535:1258;-1:-1:-1;;;;;20994:18:0;;19805:22;20994:18;;;:11;:18;;;;;;;;20993:19;19845:22;:51;;;-1:-1:-1;;;;;;20994:18:0;;20959:4;20994:18;;;:11;:18;;;;;;;;20993:19;19871:25;19845:51;19842:224;;;-1:-1:-1;19929:6:0;19842:224;;;-1:-1:-1;;;;;19979:13:0;;19966:10;19979:13;;;:5;:13;;;;;;;;20024:30;19985:6;19979:13;20047:6;20024:7;:30::i;:::-;20007:47;;19951:115;19842:224;20081:25;20096:9;20081:14;:25::i;:::-;20078:44;;;20109:10;:8;:10::i;:::-;-1:-1:-1;;;;;20157:20:0;;;;;;:9;:20;;;;;;:40;;20182:14;20157:24;:40::i;:::-;-1:-1:-1;;;;;20134:20:0;;;;;;;:9;:20;;;;;;;:63;;;;20215:43;;;;;;-1:-1:-1;;;;;;;;;;;20215:43:0;;;20243:14;17920:25:1;;17908:2;17893:18;;17774:177;20215:43:0;;;;;;;;-1:-1:-1;20276:4:0;;17531:2759;-1:-1:-1;;;;17531:2759:0:o;498:136::-;556:7;583:43;587:1;590;583:43;;;;;;;;;;;;;;;;;:3;:43::i;11749:136::-;11807:28;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11807:28:0;11862:11;:15;11874:2;11862:15;;;;;;;;;;;11855:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11855:22:0;;;-1:-1:-1;;11855:22:0;;;;;;;;;;;;;;;;11749:136;-1:-1:-1;;11749:136:0:o;20640:250::-;20750:5;;-1:-1:-1;;;;;20740:15:0;;;20750:5;;20740:15;;;;:36;;-1:-1:-1;20771:5:0;;-1:-1:-1;;;;;20759:17:0;;;20771:5;;20759:17;;20740:36;20737:146;;;20810:12;;20800:6;:22;;:49;;;-1:-1:-1;;;;;;20826:23:0;;;;;;:15;:23;;;;;;;;20800:49;20792:79;;;;-1:-1:-1;;;20792:79:0;;11484:2:1;20792:79:0;;;11466:21:1;11523:2;11503:18;;;11496:30;-1:-1:-1;;;11542:18:1;;;11535:47;11599:18;;20792:79:0;11282:341:1;20302:330:0;20432:53;;;;;;;;;;;-1:-1:-1;;;20432:53:0;;;;;;;;-1:-1:-1;;;;;20432:17:0;;20395:4;20432:17;;;:9;:17;;;;;;;:53;;20454:6;;20432:21;:53::i;:::-;-1:-1:-1;;;;;20412:17:0;;;;;;;:9;:17;;;;;;:73;;;;20519:20;;;;;;;:32;;20544:6;20519:24;:32::i;:::-;-1:-1:-1;;;;;20496:20:0;;;;;;;:9;:20;;;;;;;:55;;;;20567:35;;;;;;-1:-1:-1;;;;;;;;;;;20567:35:0;;;20595:6;17920:25:1;;17908:2;17893:18;;17774:177;20567:35:0;;;;;;;;-1:-1:-1;20620:4:0;20302:330;;;;;:::o;21028:540::-;21138:8;;21160:19;;21107:7;;21138:8;;;;;;;;21160:19;21157:147;;;-1:-1:-1;21201:14:0;;;;;;;21230:63;;;;-1:-1:-1;21264:13:0;;;;;;;21230:63;21356:17;;21316;;21336:38;;-1:-1:-1;;;21356:17:0;;;;21336:15;:6;21347:3;21336:10;:15::i;:::-;:19;;:38::i;:::-;21440:4;21422:24;;;;:9;:24;;;;;;21316:58;;-1:-1:-1;21422:39:0;;21316:58;21422:28;:39::i;:::-;21413:4;21395:24;;;;:9;:24;;;;;;;:66;;;;21477:42;;-1:-1:-1;;;;;21477:42:0;;;-1:-1:-1;;;;;;;;;;;21477:42:0;;;21509:9;17920:25:1;;17908:2;17893:18;;17774:177;21477:42:0;;;;;;;;21539:21;:6;21550:9;21539:10;:21::i;:::-;21532:28;21028:540;-1:-1:-1;;;;;;21028:540:0:o;26330:212::-;26421:6;;26396:4;;-1:-1:-1;;;26421:6:0;;;;26420:7;:31;;;;-1:-1:-1;26440:11:0;;-1:-1:-1;;;26440:11:0;;;;26420:31;:60;;;;-1:-1:-1;;;;;;26464:16:0;;;;;;:5;:16;;;;;;;;26420:60;:114;;;;-1:-1:-1;26521:13:0;;26511:4;26493:24;;;;:9;:24;;;;;;:41;;26413:121;26330:212;-1:-1:-1;;26330:212:0:o;24173:1745::-;9084:6;:13;;-1:-1:-1;;;;9084:13:0;-1:-1:-1;;;9084:13:0;;;24263:12:::1;::::0;9084:13;;;24263:12:::1;:16:::0;24260:161:::1;;24363:1;24349:8:::0;;24313:13:::1;::::0;:52:::1;::::0;24363:1;24313:45:::1;::::0;24349:8:::1;::::0;;::::1;::::0;::::1;::::0;24313:45;;:13;24331:12:::1;24313:17;:31::i;:52::-;24295:70;;24260:161;24464:13;::::0;24441:20:::1;::::0;24464:34:::1;::::0;24482:15;24464:17:::1;:34::i;:::-;24602:16;::::0;;24616:1:::1;24602:16:::0;;;;;::::1;::::0;;24441:57;;-1:-1:-1;24578:21:0::1;::::0;24602:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;24602:16:0::1;24578:40;;24647:4;24629;24634:1;24629:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24629:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;24673:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;24673:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;24629:7;;24673:13;;;;;:6;:13;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24663:4;24668:1;24663:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24663:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;24763:6:::1;::::0;24721:21:::1;::::0;24763:6:::1;:57;24835:12:::0;24697:21:::1;24878:4:::0;24905::::1;24925:21;:15;24943:3;24925:21;:::i;:::-;24763:194;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24970:17;24990:40;25016:13;24990:21;:25;;:40;;;;:::i;:::-;25099:1;25085:12:::0;;24970:60;;-1:-1:-1;25051:19:0::1;::::0;25085:15:::1;::::0;25099:1;25085:12:::1;;:15;:::i;:::-;25073:8;::::0;:28:::1;::::0;;:8;;::::1;;;:28;:::i;:::-;25051:50;;::::0;-1:-1:-1;25115:15:0;;25112:799:::1;;25194:12;::::0;25146:26:::1;::::0;25194:12:::1;::::0;::::1;;;:16:::0;25191:197:::1;;25265:12;::::0;25251:44:::1;::::0;25283:11;;25251:27:::1;::::0;:9;;25265:12:::1;::::0;::::1;;;25251:13;:27::i;:44::-;25322:20;::::0;25314:58:::1;::::0;25230:65;;-1:-1:-1;;;;;;25322:20:0::1;::::0;25314:58;::::1;;;::::0;25230:65;;25322:20:::1;25314:58:::0;25322:20;25314:58;25230:65;25322:20;25314:58;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;25191:197;25405:19:::0;;25402:498:::1;;25462:26;25491:30;25503:18:::0;25491:9;:30:::1;:::i;:::-;25540:6;::::0;25734:21:::1;::::0;25540:272:::1;::::0;-1:-1:-1;;;25540:272:0;;25620:4:::1;25540:272;::::0;::::1;9782:34:1::0;9832:18;;;9825:34;;;25540:6:0::1;9875:18:1::0;;;9868:34;;;9918:18;;;9911:34;-1:-1:-1;;;;;25734:21:0;;::::1;9961:19:1::0;;;9954:44;25778:15:0::1;10014:19:1::0;;;10007:35;25462:59:0;;-1:-1:-1;25540:6:0::1;::::0;:22:::1;::::0;25462:59;;9716:19:1;;25540:272:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;25836:48:0::1;::::0;;19054:25:1;;;19110:2;19095:18;;19088:34;;;25836:48:0::1;::::0;-1:-1:-1;19027:18:1;25836:48:0::1;;;;;;;25425:475;25402:498;25131:780;25112:799;-1:-1:-1::0;;9102:6:0;:14;;-1:-1:-1;;;;9102:14:0;;;-1:-1:-1;;;;24173:1745:0:o;311:181::-;369:7;;401:5;405:1;401;:5;:::i;:::-;389:17;;430:1;425;:6;;417:46;;;;-1:-1:-1;;;417:46:0;;12254:2:1;417:46:0;;;12236:21:1;12293:2;12273:18;;;12266:30;12332:29;12312:18;;;12305:57;12379:18;;417:46:0;12052:351:1;838:250:0;896:7;920:6;916:47;;-1:-1:-1;950:1:0;943:8;;916:47;975:9;987:5;991:1;987;:5;:::i;:::-;975:17;-1:-1:-1;1020:1:0;1011:5;1015:1;975:17;1011:5;:::i;:::-;:10;1003:56;;;;-1:-1:-1;;;1003:56:0;;15069:2:1;1003:56:0;;;15051:21:1;15108:2;15088:18;;;15081:30;15147:34;15127:18;;;15120:62;-1:-1:-1;;;15198:18:1;;;15191:31;15239:19;;1003:56:0;14867:397:1;1094:132:0;1152:7;1179:39;1183:1;1186;1179:39;;;;;;;;;;;;;;;;;1318:7;1420:12;1413:5;1405:28;;;;-1:-1:-1;;;1405:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1444:9:0;1456:5;1460:1;1456;:5;:::i;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:156:1;80:20;;140:4;129:16;;119:27;;109:55;;160:1;157;150:12;175:247;234:6;287:2;275:9;266:7;262:23;258:32;255:52;;;303:1;300;293:12;255:52;342:9;329:23;361:31;386:5;361:31;:::i;427:251::-;497:6;550:2;538:9;529:7;525:23;521:32;518:52;;;566:1;563;556:12;518:52;598:9;592:16;617:31;642:5;617:31;:::i;943:388::-;1011:6;1019;1072:2;1060:9;1051:7;1047:23;1043:32;1040:52;;;1088:1;1085;1078:12;1040:52;1127:9;1114:23;1146:31;1171:5;1146:31;:::i;:::-;1196:5;-1:-1:-1;1253:2:1;1238:18;;1225:32;1266:33;1225:32;1266:33;:::i;:::-;1318:7;1308:17;;;943:388;;;;;:::o;1336:456::-;1413:6;1421;1429;1482:2;1470:9;1461:7;1457:23;1453:32;1450:52;;;1498:1;1495;1488:12;1450:52;1537:9;1524:23;1556:31;1581:5;1556:31;:::i;:::-;1606:5;-1:-1:-1;1663:2:1;1648:18;;1635:32;1676:33;1635:32;1676:33;:::i;:::-;1336:456;;1728:7;;-1:-1:-1;;;1782:2:1;1767:18;;;;1754:32;;1336:456::o;1797:382::-;1862:6;1870;1923:2;1911:9;1902:7;1898:23;1894:32;1891:52;;;1939:1;1936;1929:12;1891:52;1978:9;1965:23;1997:31;2022:5;1997:31;:::i;:::-;2047:5;-1:-1:-1;2104:2:1;2089:18;;2076:32;2117:30;2076:32;2117:30;:::i;2184:315::-;2252:6;2260;2313:2;2301:9;2292:7;2288:23;2284:32;2281:52;;;2329:1;2326;2319:12;2281:52;2368:9;2355:23;2387:31;2412:5;2387:31;:::i;:::-;2437:5;2489:2;2474:18;;;;2461:32;;-1:-1:-1;;;2184:315:1:o;2504:615::-;2590:6;2598;2651:2;2639:9;2630:7;2626:23;2622:32;2619:52;;;2667:1;2664;2657:12;2619:52;2707:9;2694:23;2736:18;2777:2;2769:6;2766:14;2763:34;;;2793:1;2790;2783:12;2763:34;2831:6;2820:9;2816:22;2806:32;;2876:7;2869:4;2865:2;2861:13;2857:27;2847:55;;2898:1;2895;2888:12;2847:55;2938:2;2925:16;2964:2;2956:6;2953:14;2950:34;;;2980:1;2977;2970:12;2950:34;3033:7;3028:2;3018:6;3015:1;3011:14;3007:2;3003:23;2999:32;2996:45;2993:65;;;3054:1;3051;3044:12;2993:65;3085:2;3077:11;;;;;3107:6;;-1:-1:-1;2504:615:1;;-1:-1:-1;;;;2504:615:1:o;3124:1116::-;3219:6;3250:2;3293;3281:9;3272:7;3268:23;3264:32;3261:52;;;3309:1;3306;3299:12;3261:52;3342:9;3336:16;3371:18;3412:2;3404:6;3401:14;3398:34;;;3428:1;3425;3418:12;3398:34;3466:6;3455:9;3451:22;3441:32;;3511:7;3504:4;3500:2;3496:13;3492:27;3482:55;;3533:1;3530;3523:12;3482:55;3562:2;3556:9;3584:2;3580;3577:10;3574:36;;;3590:18;;:::i;:::-;3636:2;3633:1;3629:10;3668:2;3662:9;3731:2;3727:7;3722:2;3718;3714:11;3710:25;3702:6;3698:38;3786:6;3774:10;3771:22;3766:2;3754:10;3751:18;3748:46;3745:72;;;3797:18;;:::i;:::-;3833:2;3826:22;3883:18;;;3917:15;;;;-1:-1:-1;3952:11:1;;;3982;;;3978:20;;3975:33;-1:-1:-1;3972:53:1;;;4021:1;4018;4011:12;3972:53;4043:1;4034:10;;4053:156;4067:2;4064:1;4061:9;4053:156;;;4124:10;;4112:23;;4085:1;4078:9;;;;;4155:12;;;;4187;;4053:156;;;-1:-1:-1;4228:6:1;3124:1116;-1:-1:-1;;;;;;;;3124:1116:1:o;4245:245::-;4312:6;4365:2;4353:9;4344:7;4340:23;4336:32;4333:52;;;4381:1;4378;4371:12;4333:52;4413:9;4407:16;4432:28;4454:5;4432:28;:::i;4495:309::-;4560:6;4568;4621:2;4609:9;4600:7;4596:23;4592:32;4589:52;;;4637:1;4634;4627:12;4589:52;4676:9;4663:23;4695:28;4717:5;4695:28;:::i;5346:180::-;5405:6;5458:2;5446:9;5437:7;5433:23;5429:32;5426:52;;;5474:1;5471;5464:12;5426:52;-1:-1:-1;5497:23:1;;5346:180;-1:-1:-1;5346:180:1:o;5531:184::-;5601:6;5654:2;5642:9;5633:7;5629:23;5625:32;5622:52;;;5670:1;5667;5660:12;5622:52;-1:-1:-1;5693:16:1;;5531:184;-1:-1:-1;5531:184:1:o;5720:248::-;5788:6;5796;5849:2;5837:9;5828:7;5824:23;5820:32;5817:52;;;5865:1;5862;5855:12;5817:52;-1:-1:-1;;5888:23:1;;;5958:2;5943:18;;;5930:32;;-1:-1:-1;5720:248:1:o;5973:306::-;6061:6;6069;6077;6130:2;6118:9;6109:7;6105:23;6101:32;6098:52;;;6146:1;6143;6136:12;6098:52;6175:9;6169:16;6159:26;;6225:2;6214:9;6210:18;6204:25;6194:35;;6269:2;6258:9;6254:18;6248:25;6238:35;;5973:306;;;;;:::o;6284:927::-;6388:6;6396;6404;6412;6420;6428;6481:3;6469:9;6460:7;6456:23;6452:33;6449:53;;;6498:1;6495;6488:12;6449:53;6534:9;6521:23;6511:33;;6591:2;6580:9;6576:18;6563:32;6553:42;;6642:2;6631:9;6627:18;6614:32;6604:42;;6697:2;6686:9;6682:18;6669:32;6720:18;6761:2;6753:6;6750:14;6747:34;;;6777:1;6774;6767:12;6747:34;6815:6;6804:9;6800:22;6790:32;;6860:7;6853:4;6849:2;6845:13;6841:27;6831:55;;6882:1;6879;6872:12;6831:55;6922:2;6909:16;6948:2;6940:6;6937:14;6934:34;;;6964:1;6961;6954:12;6934:34;7009:7;7004:2;6995:6;6991:2;6987:15;6983:24;6980:37;6977:57;;;7030:1;7027;7020:12;6977:57;7061:2;7057;7053:11;7043:21;;7083:6;7073:16;;;;;7139:3;7128:9;7124:19;7111:33;7153:28;7175:5;7153:28;:::i;:::-;7200:5;7190:15;;;6284:927;;;;;;;;:::o;7216:252::-;7280:6;7288;7341:2;7329:9;7320:7;7316:23;7312:32;7309:52;;;7357:1;7354;7347:12;7309:52;7380:27;7397:9;7380:27;:::i;:::-;7370:37;;7426:36;7458:2;7447:9;7443:18;7426:36;:::i;:::-;7416:46;;7216:252;;;;;:::o;7473:461::-;7526:3;7564:5;7558:12;7591:6;7586:3;7579:19;7617:4;7646:2;7641:3;7637:12;7630:19;;7683:2;7676:5;7672:14;7704:1;7714:195;7728:6;7725:1;7722:13;7714:195;;;7793:13;;-1:-1:-1;;;;;7789:39:1;7777:52;;7849:12;;;;7884:15;;;;7825:1;7743:9;7714:195;;;-1:-1:-1;7925:3:1;;7473:461;-1:-1:-1;;;;;7473:461:1:o;7939:472::-;7981:3;8019:5;8013:12;8046:6;8041:3;8034:19;8071:1;8081:162;8095:6;8092:1;8089:13;8081:162;;;8157:4;8213:13;;;8209:22;;8203:29;8185:11;;;8181:20;;8174:59;8110:12;8081:162;;;8261:6;8258:1;8255:13;8252:87;;;8327:1;8320:4;8311:6;8306:3;8302:16;8298:27;8291:38;8252:87;-1:-1:-1;8393:2:1;8372:15;-1:-1:-1;;8368:29:1;8359:39;;;;8400:4;8355:50;;7939:472;-1:-1:-1;;7939:472:1:o;8840:317::-;-1:-1:-1;;;;;9017:32:1;;8999:51;;9086:2;9081;9066:18;;9059:30;;;-1:-1:-1;;9106:45:1;;9132:18;;9124:6;9106:45;:::i;10698:220::-;10847:2;10836:9;10829:21;10810:4;10867:45;10908:2;10897:9;10893:18;10885:6;10867:45;:::i;15681:329::-;15883:2;15865:21;;;15922:1;15902:18;;;15895:29;-1:-1:-1;;;15955:2:1;15940:18;;15933:36;16001:2;15986:18;;15681:329::o;16836:335::-;17038:2;17020:21;;;17077:2;17057:18;;;17050:30;-1:-1:-1;;;17111:2:1;17096:18;;17089:41;17162:2;17147:18;;16836:335::o;17956:332::-;18163:6;18152:9;18145:25;18206:2;18201;18190:9;18186:18;18179:30;18126:4;18226:56;18278:2;18267:9;18263:18;18255:6;18226:56;:::i;18293:582::-;18592:6;18581:9;18574:25;18635:6;18630:2;18619:9;18615:18;18608:34;18678:3;18673:2;18662:9;18658:18;18651:31;18555:4;18699:57;18751:3;18740:9;18736:19;18728:6;18699:57;:::i;:::-;-1:-1:-1;;;;;18792:32:1;;;;18787:2;18772:18;;18765:60;-1:-1:-1;18856:3:1;18841:19;18834:35;18691:65;18293:582;-1:-1:-1;;;18293:582:1:o;19133:517::-;19388:6;19377:9;19370:25;19431:6;19426:2;19415:9;19411:18;19404:34;19474:6;19469:2;19458:9;19454:18;19447:34;19517:3;19512:2;19501:9;19497:18;19490:31;19351:4;19538:46;19579:3;19568:9;19564:19;19556:6;19538:46;:::i;:::-;19530:54;;19635:6;19628:14;19621:22;19615:3;19604:9;19600:19;19593:51;19133:517;;;;;;;;:::o;20404:128::-;20444:3;20475:1;20471:6;20468:1;20465:13;20462:39;;;20481:18;;:::i;:::-;-1:-1:-1;20517:9:1;;20404:128::o;20537:204::-;20575:3;20611:4;20608:1;20604:12;20643:4;20640:1;20636:12;20678:3;20672:4;20668:14;20663:3;20660:23;20657:49;;;20686:18;;:::i;:::-;20722:13;;20537:204;-1:-1:-1;;;20537:204:1:o;20746:120::-;20786:1;20812;20802:35;;20817:18;;:::i;:::-;-1:-1:-1;20851:9:1;;20746:120::o;20871:165::-;20909:1;20943:4;20940:1;20936:12;20967:3;20957:37;;20974:18;;:::i;:::-;21026:3;21019:4;21016:1;21012:12;21008:22;21003:27;;;20871:165;;;;:::o;21041:168::-;21081:7;21147:1;21143;21139:6;21135:14;21132:1;21129:21;21124:1;21117:9;21110:17;21106:45;21103:71;;;21154:18;;:::i;:::-;-1:-1:-1;21194:9:1;;21041:168::o;21214:125::-;21254:4;21282:1;21279;21276:8;21273:34;;;21287:18;;:::i;:::-;-1:-1:-1;21324:9:1;;21214:125::o;21344:195::-;21382:4;21419;21416:1;21412:12;21451:4;21448:1;21444:12;21476:3;21471;21468:12;21465:38;;;21483:18;;:::i;:::-;21520:13;;;21344:195;-1:-1:-1;;;21344:195:1:o;21544:380::-;21623:1;21619:12;;;;21666;;;21687:61;;21741:4;21733:6;21729:17;21719:27;;21687:61;21794:2;21786:6;21783:14;21763:18;21760:38;21757:161;;;21840:10;21835:3;21831:20;21828:1;21821:31;21875:4;21872:1;21865:15;21903:4;21900:1;21893:15;21757:161;;21544:380;;;:::o;21929:135::-;21968:3;-1:-1:-1;;21989:17:1;;21986:43;;;22009:18;;:::i;:::-;-1:-1:-1;22056:1:1;22045:13;;21929:135::o;22069:127::-;22130:10;22125:3;22121:20;22118:1;22111:31;22161:4;22158:1;22151:15;22185:4;22182:1;22175:15;22201:127;22262:10;22257:3;22253:20;22250:1;22243:31;22293:4;22290:1;22283:15;22317:4;22314:1;22307:15;22333:127;22394:10;22389:3;22385:20;22382:1;22375:31;22425:4;22422:1;22415:15;22449:4;22446:1;22439:15;22465:127;22526:10;22521:3;22517:20;22514:1;22507:31;22557:4;22554:1;22547:15;22581:4;22578:1;22571:15;22597:131;-1:-1:-1;;;;;22672:31:1;;22662:42;;22652:70;;22718:1;22715;22708:12;22733:118;22819:5;22812:13;22805:21;22798:5;22795:32;22785:60;;22841:1;22838;22831:12

Swarm Source

ipfs://ed4f843aaa4999fbad0c59cb38d286e671c0ee0ce22b8b91de90e281d1d708e0

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

DogeTV is an innovative deflationary ecosystem born on the Ethereum blockchain (ERC20). By bringing TV and Web3 technology together in a revolutionary way.

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.