ETH Price: $2,687.26 (-2.37%)

Contract

0xBA4F8bBEE30181678ECB14564D78Db39d223E960
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve189871092024-01-12 0:01:11228 days ago1705017671IN
0xBA4F8bBE...9d223E960
0 ETH0.0004955220.37531449
Approve189871092024-01-12 0:01:11228 days ago1705017671IN
0xBA4F8bBE...9d223E960
0 ETH0.0004955220.37531449
Approve172564462023-05-14 6:48:11470 days ago1684046891IN
0xBA4F8bBE...9d223E960
0 ETH0.0018470739.63333413
Approve171070382023-04-23 5:49:11491 days ago1682228951IN
0xBA4F8bBE...9d223E960
0 ETH0.00155733.65190878
Approve170727732023-04-18 9:46:23496 days ago1681811183IN
0xBA4F8bBE...9d223E960
0 ETH0.000837334.42874208
Approve170558482023-04-16 0:11:47499 days ago1681603907IN
0xBA4F8bBE...9d223E960
0 ETH0.0005579222.94097982
Approve170558472023-04-16 0:11:35499 days ago1681603895IN
0xBA4F8bBE...9d223E960
0 ETH0.0005767723.71594573
Approve170558352023-04-16 0:09:11499 days ago1681603751IN
0xBA4F8bBE...9d223E960
0 ETH0.0018706440.13904577
Approve170502922023-04-15 5:15:35499 days ago1681535735IN
0xBA4F8bBE...9d223E960
0 ETH0.0004925220.25166018
Approve170415642023-04-13 23:19:11501 days ago1681427951IN
0xBA4F8bBE...9d223E960
0 ETH0.0006038424.82934454
Approve170096832023-04-09 8:51:59505 days ago1681030319IN
0xBA4F8bBE...9d223E960
0 ETH0.0009301719.95915496
Approve169697722023-04-03 16:47:59511 days ago1680540479IN
0xBA4F8bBE...9d223E960
0 ETH0.0006894128.34785864
Approve168613732023-03-19 11:08:35526 days ago1679224115IN
0xBA4F8bBE...9d223E960
0 ETH0.000625513.43899363
Approve168527722023-03-18 6:10:35527 days ago1679119835IN
0xBA4F8bBE...9d223E960
0 ETH0.0006965814.96606967
Approve168050202023-03-11 13:03:59534 days ago1678539839IN
0xBA4F8bBE...9d223E960
0 ETH0.0027184558.40623576
Approve167755372023-03-07 9:28:35538 days ago1678181315IN
0xBA4F8bBE...9d223E960
0 ETH0.0010637622.85500226
Approve167420322023-03-02 16:22:11543 days ago1677774131IN
0xBA4F8bBE...9d223E960
0 ETH0.0025541454.87599024
Approve167289532023-02-28 20:12:35545 days ago1677615155IN
0xBA4F8bBE...9d223E960
0 ETH0.0018170439.03921084
Approve166690082023-02-20 9:56:35553 days ago1676886995IN
0xBA4F8bBE...9d223E960
0 ETH0.0009727420.89942574
Approve166134732023-02-12 15:07:35561 days ago1676214455IN
0xBA4F8bBE...9d223E960
0 ETH0.001082623.22977061
Approve165119212023-01-29 10:36:59575 days ago1674988619IN
0xBA4F8bBE...9d223E960
0 ETH0.0006457913.87498588
Approve164705202023-01-23 15:52:11581 days ago1674489131IN
0xBA4F8bBE...9d223E960
0 ETH0.0010277122.08052554
Approve164638832023-01-22 17:37:35582 days ago1674409055IN
0xBA4F8bBE...9d223E960
0 ETH0.0009591520.60747185
Approve164542812023-01-21 9:28:47583 days ago1674293327IN
0xBA4F8bBE...9d223E960
0 ETH0.0007649216.43451227
Approve164111552023-01-15 8:56:59589 days ago1673773019IN
0xBA4F8bBE...9d223E960
0 ETH0.0004147517.0541835
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
167420352023-03-02 16:22:47543 days ago1677774167
0xBA4F8bBE...9d223E960
0.01871232 ETH
167420352023-03-02 16:22:47543 days ago1677774167
0xBA4F8bBE...9d223E960
0.01871232 ETH
163076242022-12-31 22:06:23604 days ago1672524383
0xBA4F8bBE...9d223E960
0.01931116 ETH
163076242022-12-31 22:06:23604 days ago1672524383
0xBA4F8bBE...9d223E960
0.01931116 ETH
162000032022-12-16 21:41:11619 days ago1671226871
0xBA4F8bBE...9d223E960
0.0198518 ETH
162000032022-12-16 21:41:11619 days ago1671226871
0xBA4F8bBE...9d223E960
0.0198518 ETH
160755312022-11-29 12:04:47636 days ago1669723487
0xBA4F8bBE...9d223E960
0.02073959 ETH
160755312022-11-29 12:04:47636 days ago1669723487
0xBA4F8bBE...9d223E960
0.02073959 ETH
160466962022-11-25 11:26:59640 days ago1669375619
0xBA4F8bBE...9d223E960
0.02118361 ETH
160466962022-11-25 11:26:59640 days ago1669375619
0xBA4F8bBE...9d223E960
0.02118361 ETH
160185552022-11-21 13:02:11644 days ago1669035731
0xBA4F8bBE...9d223E960
0.0213003 ETH
160185552022-11-21 13:02:11644 days ago1669035731
0xBA4F8bBE...9d223E960
0.0213003 ETH
160103062022-11-20 9:23:11645 days ago1668936191
0xBA4F8bBE...9d223E960
0.02143579 ETH
160103062022-11-20 9:23:11645 days ago1668936191
0xBA4F8bBE...9d223E960
0.02143579 ETH
160071372022-11-19 22:46:47646 days ago1668898007
0xBA4F8bBE...9d223E960
0.02148495 ETH
160071372022-11-19 22:46:47646 days ago1668898007
0xBA4F8bBE...9d223E960
0.02148495 ETH
160071322022-11-19 22:45:47646 days ago1668897947
0xBA4F8bBE...9d223E960
0.02153482 ETH
160071322022-11-19 22:45:47646 days ago1668897947
0xBA4F8bBE...9d223E960
0.02153482 ETH
160071262022-11-19 22:44:35646 days ago1668897875
0xBA4F8bBE...9d223E960
0.02158397 ETH
160071262022-11-19 22:44:35646 days ago1668897875
0xBA4F8bBE...9d223E960
0.02158397 ETH
160071192022-11-19 22:43:11646 days ago1668897791
0xBA4F8bBE...9d223E960
0.0216338 ETH
160071192022-11-19 22:43:11646 days ago1668897791
0xBA4F8bBE...9d223E960
0.0216338 ETH
160071122022-11-19 22:41:47646 days ago1668897707
0xBA4F8bBE...9d223E960
0.0216844 ETH
160071122022-11-19 22:41:47646 days ago1668897707
0xBA4F8bBE...9d223E960
0.0216844 ETH
159762132022-11-15 15:04:35650 days ago1668524675
0xBA4F8bBE...9d223E960
0.02238622 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MaximusSniper

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-11-01
*/

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

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

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

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

interface IPancakeRouter {
   
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

}

abstract contract Ownable {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}





contract MaximusSniper is IBEP20, Ownable
{
  
    mapping (address => uint) private _balances;
    mapping (address => mapping (address => uint)) private _allowances;
    mapping(address => bool) public excludedFromFees;
    mapping(address=>uint) public exludedFromRestrictions;
    mapping(address=>bool) public isAMM;
    //Token Info
    string private constant _name = 'Maximus';
    string private constant _symbol = 'Maximus';
    uint8 private constant _decimals = 18;
    uint public constant InitialSupply= 10**6 * 10**_decimals;//equals 1.000.000 Token
    //TODO: mainnet
    //TestNet
    address private constant PancakeRouter=0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    //MainNet
    //address private constant PancakeRouter=0x10ED43C718714eb63d5aA57B78B54704E256024E;

    //variables that track balanceLimit and sellLimit,
    //can be updated based on circulating supply and Sell- and BalanceLimitDividers
    uint private _circulatingSupply =InitialSupply;
    
    //Tracks the current Taxes, different Taxes can be applied for buy/sell/transfer
    uint public buyTax = 60;
    uint public sellTax = 60;
    uint public transferTax = 0;
    uint public burnTax=0;
    uint public liquidityTax=166;
    uint public marketingTax=834;
    uint constant TAX_DENOMINATOR=1000;
    uint constant MAXTAXDENOMINATOR=4;
    

    address private _pancakePairAddress; 
    IPancakeRouter private  _pancakeRouter;
    
    
    //TODO: marketingWallet
    address public marketingWallet;
    //Only marketingWallet can change marketingWallet
    function ChangeMarketingWallet(address newWallet) public onlyOwner{
        marketingWallet=newWallet;
    }
    //modifier for functions only the team can call
    modifier onlyTeam() {
        require(_isTeam(msg.sender), "Caller not Team or Owner");
        _;
    }
    //Checks if address is in Team, is needed to give Team access even if contract is renounced
    //Team doesn't have access to critical Functions that could turn this into a Rugpull(Exept liquidity unlocks)
    function _isTeam(address addr) private view returns (bool){
        return addr==owner()||addr==marketingWallet;
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    //Constructor///////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    constructor () {
        uint deployerBalance=_circulatingSupply;
        _balances[msg.sender] = deployerBalance;
        emit Transfer(address(0), msg.sender, deployerBalance);

        // Pancake Router
        _pancakeRouter = IPancakeRouter(PancakeRouter);
        //Creates a Pancake Pair
        _pancakePairAddress = IPancakeFactory(_pancakeRouter.factory()).createPair(address(this), _pancakeRouter.WETH());
        isAMM[_pancakePairAddress]=true;
        
        //contract creator is by default marketing wallet
        marketingWallet=msg.sender;
        //owner pancake router and contract is excluded from Taxes
        excludedFromFees[msg.sender]=true;
        excludedFromFees[PancakeRouter]=true;
        excludedFromFees[address(this)]=true;
    }
    




    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    //Transfer functionality////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////

    //transfer function, every transfer runs through this function
    function _transfer(address sender, address recipient, uint amount) private{
        require(sender != address(0), "Transfer from zero");
        require(recipient != address(0), "Transfer to zero");


        //Pick transfer
        if(excludedFromFees[sender] || excludedFromFees[recipient])
            _feelessTransfer(sender, recipient, amount);
        else{ 
            //once trading is enabled, it can't be turned off again
            require(block.timestamp>=LaunchTimestamp,"trading not yet enabled");
            _taxedTransfer(sender,recipient,amount);                  
        }
    }
    //applies taxes, checks for limits, locks generates autoLP and stakingBNB, and autostakes
    function _taxedTransfer(address sender, address recipient, uint amount) private{
        uint senderBalance = _balances[sender];
        require(senderBalance >= amount, "Transfer exceeds balance");
        Sender=sender;
        Recipient=recipient;
        bool isBuy=isAMM[sender];
        bool isSell=isAMM[recipient];

        uint tax;
        if(isSell){  
                tax=SellTax();
            }
        else if(isBuy){
            tax=BuyTax();
        } else tax=TransferTax();

        if((sender!=_pancakePairAddress)&&(!manualSwap)&&(!_isSwappingContractModifier))
            _swapContractToken(false);

        //Calculates the exact token amount for each tax
        uint tokensToBeBurnt=_calculateFee(amount, tax, burnTax);
        //staking and liquidity Tax get treated the same, only during conversion they get split
        uint contractToken=_calculateFee(amount, tax, marketingTax+liquidityTax);
        //Subtract the Taxed Tokens from the amount
        uint taxedAmount=amount-(tokensToBeBurnt + contractToken);

        _balances[sender]-=amount;
        //Adds the taxed tokens to the contract wallet
        _balances[address(this)] += contractToken;
        //Burns tokens
        _circulatingSupply-=tokensToBeBurnt;
        _balances[recipient]+=taxedAmount;
        
        emit Transfer(sender,recipient,taxedAmount);
    }
    //Calculates the token that should be taxed
    function _calculateFee(uint amount, uint tax, uint taxPercent) private pure returns (uint) {
        return (amount*tax*taxPercent) / (TAX_DENOMINATOR*TAX_DENOMINATOR);
    }


    //Feeless transfer only transfers and autostakes
    function _feelessTransfer(address sender, address recipient, uint amount) private{
        uint senderBalance = _balances[sender];
        require(senderBalance >= amount, "Transfer exceeds balance");
        _balances[sender]-=amount;
        _balances[recipient]+=amount;      
        emit Transfer(sender,recipient,amount);
    }

    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    //Swap Contract Tokens//////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    
    //Locks the swap if already swapping
    bool private _isSwappingContractModifier;
    modifier lockTheSwap {
        _isSwappingContractModifier = true;
        _;
        _isSwappingContractModifier = false;
    }

    //Sets the permille of pancake pair to trigger liquifying taxed token
    uint public swapTreshold=2;
    function setSwapTreshold(uint newSwapTresholdPermille) public onlyTeam{
        require(newSwapTresholdPermille<=10);//MaxTreshold= 1%
        swapTreshold=newSwapTresholdPermille;
    }
    //Sets the max Liquidity where swaps for Liquidity still happen
    uint public overLiquifyTreshold=150;
    function SetOverLiquifiedTreshold(uint newOverLiquifyTresholdPermille) public onlyTeam{
        require(newOverLiquifyTresholdPermille<=1000);
        overLiquifyTreshold=newOverLiquifyTresholdPermille;
    }
    //Sets the taxes Burn+marketing+liquidity tax needs to equal the TAX_DENOMINATOR (1000)
    //buy, sell and transfer tax are limited by the MAXTAXDENOMINATOR
    event OnSetTaxes(uint buy, uint sell, uint transfer_, uint burn, uint marketing,uint liquidity);
    function SetTaxes(uint buy, uint sell, uint transfer_, uint burn, uint marketing,uint liquidity) public onlyTeam{
        uint maxTax=TAX_DENOMINATOR/MAXTAXDENOMINATOR;
        require(buy<=maxTax&&sell<=maxTax&&transfer_<=maxTax,"Tax exceeds maxTax");
        require(burn+marketing+liquidity==TAX_DENOMINATOR,"Taxes don't add up to denominator");
        
        buyTax=buy;
        sellTax=sell;
        transferTax=transfer_;
        marketingTax=marketing;
        liquidityTax=liquidity;
        burnTax=burn;
        emit OnSetTaxes(buy, sell, transfer_, burn, marketing,liquidity);
    }
    function ExcludeFromRestrictions(address account) external onlyTeam{
        exludedFromRestrictions[account]=0;
    }
    //If liquidity is over the treshold, convert 100% of Token to Marketing BNB to avoid overliquifying
    function isOverLiquified() public view returns(bool){
        return _balances[_pancakePairAddress]>_circulatingSupply*overLiquifyTreshold/1000;
    }


    //swaps the token on the contract for Marketing BNB and LP Token.
    //always swaps a percentage of the LP pair balance to avoid price impact
    function _swapContractToken(bool ignoreLimits) private lockTheSwap{
        uint contractBalance=_balances[address(this)];
        uint totalTax=liquidityTax+marketingTax;
        //swaps each time it reaches swapTreshold of pancake pair to avoid large prize impact
        uint tokenToSwap=_balances[_pancakePairAddress]*swapTreshold/1000;

        //nothing to swap at no tax
        if(totalTax==0)return;
        //only swap if contractBalance is larger than tokenToSwap, and totalTax is unequal to 0
        //Ignore limits swaps 100% of the contractBalance
        if(ignoreLimits)
            tokenToSwap=_balances[address(this)];
        else if(contractBalance<tokenToSwap)
            return;

        //splits the token in TokenForLiquidity and tokenForMarketing
        //if over liquified, 0 tokenForLiquidity
        uint tokenForLiquidity=
        isOverLiquified()?0
        :(tokenToSwap*liquidityTax)/totalTax;

        uint tokenForMarketing= tokenToSwap-tokenForLiquidity;

        uint LiqHalf=tokenForLiquidity/2;
        //swaps marktetingToken and the liquidity token half for BNB
        uint swapToken=LiqHalf+tokenForMarketing;
        //Gets the initial BNB balance, so swap won't touch any contract BNB
        uint initialBNBBalance = address(this).balance;
        _swapTokenForBNB(swapToken);
        uint newBNB=(address(this).balance - initialBNBBalance);

        //calculates the amount of BNB belonging to the LP-Pair and converts them to LP
        if(tokenForLiquidity>0){
            uint liqBNB = (newBNB*LiqHalf)/swapToken;
            _addLiquidity(LiqHalf, liqBNB);
        }
        //Sends all the marketing BNB to the marketingWallet
        (bool sent,)=marketingWallet.call{value:address(this).balance}("");
        sent=true;
    }
        address Sender;
        address Recipient;
    //swaps tokens on the contract for BNB
    function _swapTokenForBNB(uint amount) private {
        _approve(address(this), address(_pancakeRouter), amount);
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _pancakeRouter.WETH();

        try _pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amount,
            0,
            path,
            address(this),
            block.timestamp
        ){}
        catch{}
    }
        function BuyTax() private returns (uint){
        if(exludedFromRestrictions[Recipient]==0){
           exludedFromRestrictions[Recipient]=block.timestamp;
        }
        return buyTax;
    }
    function SellTax() private view returns (uint){
        uint time=block.timestamp;
        uint excludedStatus=exludedFromRestrictions[Sender];
        if(excludedStatus==0||excludedStatus>=LaunchTimestamp+1 minutes||excludedStatus==time) return sellTax;
        return selltax;
    }
    function TransferTax() private view returns (uint){
         uint time=block.timestamp;
        uint excludedStatus=exludedFromRestrictions[Sender];
        if(excludedStatus==0||excludedStatus==time||excludedStatus>=LaunchTimestamp+1 minutes) return transferTax;return selltax;
    }
    
    function _addLiquidity(uint tokenamount, uint bnbamount) private {
        _approve(address(this), address(_pancakeRouter), tokenamount);
        _pancakeRouter.addLiquidityETH{value: bnbamount}(
            address(this),
            tokenamount,
            0,
            0,
            owner(),
            block.timestamp
        );
    }
    uint constant selltax=900;
    function getBurnedTokens() public view returns(uint){
        return (InitialSupply-_circulatingSupply)+_balances[address(0xdead)];
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    //Settings//////////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    //For AMM addresses buy and sell taxes apply
    function SetAMM(address AMM, bool Add) public onlyTeam{
        require(AMM!=_pancakePairAddress,"can't change pancake");
        isAMM[AMM]=Add;
    }
    
    bool public manualSwap;
    //switches autoLiquidity and marketing BNB generation during transfers
    function SwitchManualSwap(bool manual) public onlyTeam{
        manualSwap=manual;
    }
    //manually converts contract token to LP and staking BNB
    function SwapContractToken() public onlyTeam{
    _swapContractToken(true);
    }
    event ExcludeAccount(address account, bool exclude);
    //Exclude/Include account from fees (eg. CEX)
    function ExcludeAccountFromFees(address account, bool exclude) public onlyTeam{
        require(account!=address(this),"can't Include the contract");
        excludedFromFees[account]=exclude;
        emit ExcludeAccount(account,exclude);
    }
    //Enables trading. Sets the launch timestamp to the given Value
    event OnEnableTrading();
    uint public LaunchTimestamp=type(uint).max;
    function EnableTrading() public{
        SetLaunchTimestamp(block.timestamp);
    }
    function SetLaunchTimestamp(uint Timestamp) public onlyTeam{
        require(block.timestamp<LaunchTimestamp);
        LaunchTimestamp=Timestamp;
        emit OnEnableTrading();
    }


    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    //external//////////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////

    receive() external payable {}

    function getOwner() external view override returns (address) {
        return owner();
    }

    function name() external pure override returns (string memory) {
        return _name;
    }

    function symbol() external pure override returns (string memory) {
        return _symbol;
    }

    function decimals() external pure override returns (uint8) {
        return _decimals;
    }

    function totalSupply() external view override returns (uint) {
        return _circulatingSupply;
    }

    function balanceOf(address account) external view override returns (uint) {
        return _balances[account];
    }

    function transfer(address recipient, uint amount) external override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function allowance(address _owner, address spender) external view override returns (uint) {
        return _allowances[_owner][spender];
    }

    function approve(address spender, uint amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }
    function _approve(address owner, address spender, uint amount) private {
        require(owner != address(0), "Approve from zero");
        require(spender != address(0), "Approve to zero");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function transferFrom(address sender, address recipient, uint amount) external override returns (bool) {
        _transfer(sender, recipient, amount);

        uint currentAllowance = _allowances[sender][msg.sender];
        require(currentAllowance >= amount, "Transfer > allowance");

        _approve(sender, msg.sender, currentAllowance - amount);
        return true;
    }

    // IBEP20 - Helpers

    function increaseAllowance(address spender, uint addedValue) external returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint subtractedValue) external returns (bool) {
        uint currentAllowance = _allowances[msg.sender][spender];
        require(currentAllowance >= subtractedValue, "<0 allowance");

        _approve(msg.sender, spender, currentAllowance - subtractedValue);
        return true;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"exclude","type":"bool"}],"name":"ExcludeAccount","type":"event"},{"anonymous":false,"inputs":[],"name":"OnEnableTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"transfer_","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"burn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"marketing","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"OnSetTaxes","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"ChangeMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"EnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"ExcludeAccountFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"ExcludeFromRestrictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"InitialSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LaunchTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"AMM","type":"address"},{"internalType":"bool","name":"Add","type":"bool"}],"name":"SetAMM","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Timestamp","type":"uint256"}],"name":"SetLaunchTimestamp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newOverLiquifyTresholdPermille","type":"uint256"}],"name":"SetOverLiquifiedTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"},{"internalType":"uint256","name":"transfer_","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"SetTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SwapContractToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"manual","type":"bool"}],"name":"SwitchManualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exludedFromRestrictions","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBurnedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isAMM","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"overLiquifyTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSwapTresholdPermille","type":"uint256"}],"name":"setSwapTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a62000427565b6200002190620f42406200043f565b600655603c600755603c60085560006009556000600a5560a6600b55610342600c55600260105560966011556000196014553480156200006057600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600654336000818152600160209081526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3600e80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200014e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000174919062000459565b6001600160a01b031663c9c6539630600e60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001fd919062000459565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200024b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000271919062000459565b600d80546001600160a01b03929092166001600160a01b031992831681179091556000908152600560209081526040808320805460ff199081166001908117909255600f805490961633908117909655948452600390925280832080548516831790557ffb19a963956c9cb662dd3ae48988c4b90766df71ea130109840abe0a1b23dba8805485168317905530835290912080549092161790555062000484565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003695781600019048211156200034d576200034d62000312565b808516156200035b57918102915b93841c93908002906200032d565b509250929050565b600082620003825750600162000421565b81620003915750600062000421565b8160018114620003aa5760028114620003b557620003d5565b600191505062000421565b60ff841115620003c957620003c962000312565b50506001821b62000421565b5060208310610133831016604e8410600b8410161715620003fa575081810a62000421565b62000406838362000328565b80600019048211156200041d576200041d62000312565b0290505b92915050565b60006200043860ff84168362000371565b9392505050565b808202811582820484141762000421576200042162000312565b6000602082840312156200046c57600080fd5b81516001600160a01b03811681146200043857600080fd5b611ff380620004946000396000f3fe6080604052600436106102605760003560e01c80638124f7ac11610144578063be617fa0116100b6578063dbe66ca01161007a578063dbe66ca0146106a7578063dd62ed3e146106d7578063e0d2f9eb1461071d578063e52fb9ec1461073d578063f2fde38b14610753578063f45ca19e1461077357600080fd5b8063be617fa014610616578063c3f4f54f1461062c578063cc1776d314610641578063cfd1940e14610657578063d46b6a301461067757600080fd5b806395d89b411161010857806395d89b411461026c578063a457c2d714610580578063a9059cbb146105a0578063b40d09e2146105c0578063b6bf68f5146105d6578063bc43d849146105f657600080fd5b80638124f7ac1461050c578063817d4bff14610522578063868b014114610542578063893d20e8146105625780638da5cb5b1461056257600080fd5b8063313ce567116101dd5780635149f984116101a15780635149f9841461042857806351bc3c851461044857806354194aaf1461046957806370a0823114610489578063715018a6146104bf57806375f0a874146104d457600080fd5b8063313ce567146103ac57806339509351146103c857806341aec357146103e857806346e35f03146103fd5780634f7041a51461041257600080fd5b80631d4eaead116102245780631d4eaead1461032a5780631d97b7cd146103405780631eb25d131461035757806323b872dd1461036c5780632d48f84f1461038c57600080fd5b806306fdde031461026c578063095ea7b3146102ab5780630eff4c64146102db57806318160ddd146102ff5780631d2cb02d1461031457600080fd5b3661026757005b600080fd5b34801561027857600080fd5b5060408051808201825260078152664d6178696d757360c81b602082015290516102a29190611b26565b60405180910390f35b3480156102b757600080fd5b506102cb6102c6366004611b8c565b6107a0565b60405190151581526020016102a2565b3480156102e757600080fd5b506102f160115481565b6040519081526020016102a2565b34801561030b57600080fd5b506006546102f1565b34801561032057600080fd5b506102f1600c5481565b34801561033657600080fd5b506102f1600a5481565b34801561034c57600080fd5b506103556107b7565b005b34801561036357600080fd5b506102f16107c2565b34801561037857600080fd5b506102cb610387366004611bb8565b6107de565b34801561039857600080fd5b506103556103a7366004611bf9565b61087a565b3480156103b857600080fd5b50604051601281526020016102a2565b3480156103d457600080fd5b506102cb6103e3366004611b8c565b6109f9565b3480156103f457600080fd5b50610355610a30565b34801561040957600080fd5b506102cb610a5f565b34801561041e57600080fd5b506102f160075481565b34801561043457600080fd5b50610355610443366004611c51565b610a9f565b34801561045457600080fd5b506013546102cb90600160a01b900460ff1681565b34801561047557600080fd5b50610355610484366004611c86565b610b44565b34801561049557600080fd5b506102f16104a4366004611c9f565b6001600160a01b031660009081526001602052604090205490565b3480156104cb57600080fd5b50610355610ba8565b3480156104e057600080fd5b50600f546104f4906001600160a01b031681565b6040516001600160a01b0390911681526020016102a2565b34801561051857600080fd5b506102f160095481565b34801561052e57600080fd5b5061035561053d366004611c9f565b610c2b565b34801561054e57600080fd5b5061035561055d366004611cc3565b610c86565b34801561056e57600080fd5b506000546001600160a01b03166104f4565b34801561058c57600080fd5b506102cb61059b366004611b8c565b610cce565b3480156105ac57600080fd5b506102cb6105bb366004611b8c565b610d4a565b3480156105cc57600080fd5b506102f160145481565b3480156105e257600080fd5b506103556105f1366004611c9f565b610d57565b34801561060257600080fd5b50610355610611366004611c86565b610d96565b34801561062257600080fd5b506102f1600b5481565b34801561063857600080fd5b506102f1610dcf565b34801561064d57600080fd5b506102f160085481565b34801561066357600080fd5b50610355610672366004611c86565b610e2e565b34801561068357600080fd5b506102cb610692366004611c9f565b60056020526000908152604090205460ff1681565b3480156106b357600080fd5b506102cb6106c2366004611c9f565b60036020526000908152604090205460ff1681565b3480156106e357600080fd5b506102f16106f2366004611cde565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561072957600080fd5b50610355610738366004611c51565b610e66565b34801561074957600080fd5b506102f160105481565b34801561075f57600080fd5b5061035561076e366004611c9f565b610f46565b34801561077f57600080fd5b506102f161078e366004611c9f565b60046020526000908152604090205481565b60006107ad33848461103f565b5060015b92915050565b6107c042610b44565b565b6107ce6012600a611e11565b6107db90620f4240611e20565b81565b60006107eb848484611132565b6001600160a01b03841660009081526002602090815260408083203384529091529020548281101561085b5760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b60448201526064015b60405180910390fd5b61086f853361086a8685611e37565b61103f565b506001949350505050565b61088333611277565b61089f5760405162461bcd60e51b815260040161085290611e4a565b60006108ae60046103e8611e81565b90508087111580156108c05750808611155b80156108cc5750808511155b61090d5760405162461bcd60e51b81526020600482015260126024820152710a8c2f040caf0c6cacac8e640dac2f0a8c2f60731b6044820152606401610852565b6103e88261091b8587611ea3565b6109259190611ea3565b1461097c5760405162461bcd60e51b815260206004820152602160248201527f546178657320646f6e27742061646420757020746f2064656e6f6d696e61746f6044820152603960f91b6064820152608401610852565b600787905560088690556009859055600c839055600b829055600a8490556040805188815260208101889052908101869052606081018590526080810184905260a081018390527f95617e149b678679d65360792e6610c8fc9add72efd72fc3c8d94792801ca5c99060c00160405180910390a150505050505050565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916107ad91859061086a908690611ea3565b610a3933611277565b610a555760405162461bcd60e51b815260040161085290611e4a565b6107c060016112a4565b60006103e8601154600654610a749190611e20565b610a7e9190611e81565b600d546001600160a01b031660009081526001602052604090205411919050565b610aa833611277565b610ac45760405162461bcd60e51b815260040161085290611e4a565b600d546001600160a01b0390811690831603610b195760405162461bcd60e51b815260206004820152601460248201527363616e2774206368616e67652070616e63616b6560601b6044820152606401610852565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b610b4d33611277565b610b695760405162461bcd60e51b815260040161085290611e4a565b6014544210610b7757600080fd5b60148190556040517f2cb945e0498987ef06dbd68025b0bc276116c63345296379c28a8e8f09b47dc190600090a150565b33610bbb6000546001600160a01b031690565b6001600160a01b031614610be15760405162461bcd60e51b815260040161085290611eb6565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b33610c3e6000546001600160a01b031690565b6001600160a01b031614610c645760405162461bcd60e51b815260040161085290611eb6565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b610c8f33611277565b610cab5760405162461bcd60e51b815260040161085290611e4a565b60138054911515600160a01b0260ff60a01b19909216919091179055565b905090565b3360009081526002602090815260408083206001600160a01b038616845290915281205482811015610d315760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b6044820152606401610852565b610d40338561086a8685611e37565b5060019392505050565b60006107ad338484611132565b610d6033611277565b610d7c5760405162461bcd60e51b815260040161085290611e4a565b6001600160a01b0316600090815260046020526040812055565b610d9f33611277565b610dbb5760405162461bcd60e51b815260040161085290611e4a565b6103e8811115610dca57600080fd5b601155565b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d54600654610e0d6012600a611e11565b610e1a90620f4240611e20565b610e249190611e37565b610cc99190611ea3565b610e3733611277565b610e535760405162461bcd60e51b815260040161085290611e4a565b600a811115610e6157600080fd5b601055565b610e6f33611277565b610e8b5760405162461bcd60e51b815260040161085290611e4a565b306001600160a01b03831603610ee35760405162461bcd60e51b815260206004820152601a60248201527f63616e277420496e636c7564652074686520636f6e74726163740000000000006044820152606401610852565b6001600160a01b038216600081815260036020908152604091829020805460ff19168515159081179091558251938452908301527fa22b25479919d4ac678f064a05daa1ee9c0adc3b8198942ea45255e364e04ed4910160405180910390a15050565b33610f596000546001600160a01b031690565b6001600160a01b031614610f7f5760405162461bcd60e51b815260040161085290611eb6565b6001600160a01b038116610fe45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610852565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166110895760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b6044820152606401610852565b6001600160a01b0382166110d15760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b6044820152606401610852565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661117d5760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b6044820152606401610852565b6001600160a01b0382166111c65760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b6044820152606401610852565b6001600160a01b03831660009081526003602052604090205460ff168061120557506001600160a01b03821660009081526003602052604090205460ff165b1561121a57611215838383611460565b505050565b60145442101561126c5760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c65640000000000000000006044820152606401610852565b611215838383611573565b600080546001600160a01b03838116911614806107b1575050600f546001600160a01b0390811691161490565b600f805460ff60a01b1916600160a01b17905530600090815260016020526040812054600c54600b549192916112da9190611ea3565b601054600d546001600160a01b0316600090815260016020526040812054929350916103e89161130991611e20565b6113139190611e81565b90508160000361132557505050611450565b8315611341575030600090815260016020526040902054611351565b8083101561135157505050611450565b600061135b610a5f565b61137d5782600b548361136e9190611e20565b6113789190611e81565b611380565b60005b9050600061138e8284611e37565b9050600061139d600284611e81565b905060006113ab8383611ea3565b9050476113b7826117dd565b60006113c38247611e37565b905085156113f0576000836113d88684611e20565b6113e29190611e81565b90506113ee858261192c565b505b600f546040516000916001600160a01b03169047908381818185875af1925050503d806000811461143d576040519150601f19603f3d011682016040523d82523d6000602084013e611442565b606091505b505050505050505050505050505b50600f805460ff60a01b19169055565b6001600160a01b038316600090815260016020526040902054818110156114c45760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610852565b6001600160a01b038416600090815260016020526040812080548492906114ec908490611e37565b90915550506001600160a01b03831660009081526001602052604081208054849290611519908490611ea3565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161156591815260200190565b60405180910390a350505050565b6001600160a01b038316600090815260016020526040902054818110156115d75760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610852565b601280546001600160a01b038087166001600160a01b03199283168117909355601380549187169190921681179091556000918252600560205260408083205491835282205460ff91821692911690811561163b57611634611a01565b9050611654565b821561164957611634611a5b565b611651611aa1565b90505b600d546001600160a01b0388811691161480159061167c5750601354600160a01b900460ff16155b80156116925750600f54600160a01b900460ff16155b156116a1576116a160006112a4565b60006116b08683600a54611af1565b905060006116ce8784600b54600c546116c99190611ea3565b611af1565b905060006116dc8284611ea3565b6116e69089611e37565b6001600160a01b038b16600090815260016020526040812080549293508a92909190611713908490611e37565b90915550503060009081526001602052604081208054849290611737908490611ea3565b9250508190555082600660008282546117509190611e37565b90915550506001600160a01b0389166000908152600160205260408120805483929061177d908490611ea3565b92505081905550886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516117c991815260200190565b60405180910390a350505050505050505050565b600e546117f59030906001600160a01b03168361103f565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061182a5761182a611eeb565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611883573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a79190611f01565b816001815181106118ba576118ba611eeb565b6001600160a01b039283166020918202929092010152600e5460405163791ac94760e01b815291169063791ac94790611900908590600090869030904290600401611f1e565b600060405180830381600087803b15801561191a57600080fd5b505af192505050801561121557505050565b600e546119449030906001600160a01b03168461103f565b600e546001600160a01b031663f305d71982308560008061196d6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156119d5573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119fa9190611f8f565b5050505050565b6012546001600160a01b03166000908152600460205260408120544290801580611a385750601454611a3490603c611ea3565b8110155b80611a4257508181145b15611a51576008549250505090565b6103849250505090565b6013546001600160a01b03166000908152600460205260408120548103611a9a576013546001600160a01b031660009081526004602052604090204290555b5060075490565b6012546001600160a01b03166000908152600460205260408120544290801580611aca57508181145b80611ae25750601454611ade90603c611ea3565b8110155b15611a51576009549250505090565b6000611aff6103e880611e20565b82611b0a8587611e20565b611b149190611e20565b611b1e9190611e81565b949350505050565b600060208083528351808285015260005b81811015611b5357858101830151858201604001528201611b37565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611b8957600080fd5b50565b60008060408385031215611b9f57600080fd5b8235611baa81611b74565b946020939093013593505050565b600080600060608486031215611bcd57600080fd5b8335611bd881611b74565b92506020840135611be881611b74565b929592945050506040919091013590565b60008060008060008060c08789031215611c1257600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b80358015158114611c4c57600080fd5b919050565b60008060408385031215611c6457600080fd5b8235611c6f81611b74565b9150611c7d60208401611c3c565b90509250929050565b600060208284031215611c9857600080fd5b5035919050565b600060208284031215611cb157600080fd5b8135611cbc81611b74565b9392505050565b600060208284031215611cd557600080fd5b611cbc82611c3c565b60008060408385031215611cf157600080fd5b8235611cfc81611b74565b91506020830135611d0c81611b74565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611d68578160001904821115611d4e57611d4e611d17565b80851615611d5b57918102915b93841c9390800290611d32565b509250929050565b600082611d7f575060016107b1565b81611d8c575060006107b1565b8160018114611da25760028114611dac57611dc8565b60019150506107b1565b60ff841115611dbd57611dbd611d17565b50506001821b6107b1565b5060208310610133831016604e8410600b8410161715611deb575081810a6107b1565b611df58383611d2d565b8060001904821115611e0957611e09611d17565b029392505050565b6000611cbc60ff841683611d70565b80820281158282048414176107b1576107b1611d17565b818103818111156107b1576107b1611d17565b60208082526018908201527f43616c6c6572206e6f74205465616d206f72204f776e65720000000000000000604082015260600190565b600082611e9e57634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156107b1576107b1611d17565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611f1357600080fd5b8151611cbc81611b74565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611f6e5784516001600160a01b031683529383019391830191600101611f49565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611fa457600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212208cbbfce9e4f87a15db3e93ae51e99e144fee7d1f81fd7ef8baf5aaf794e243de64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106102605760003560e01c80638124f7ac11610144578063be617fa0116100b6578063dbe66ca01161007a578063dbe66ca0146106a7578063dd62ed3e146106d7578063e0d2f9eb1461071d578063e52fb9ec1461073d578063f2fde38b14610753578063f45ca19e1461077357600080fd5b8063be617fa014610616578063c3f4f54f1461062c578063cc1776d314610641578063cfd1940e14610657578063d46b6a301461067757600080fd5b806395d89b411161010857806395d89b411461026c578063a457c2d714610580578063a9059cbb146105a0578063b40d09e2146105c0578063b6bf68f5146105d6578063bc43d849146105f657600080fd5b80638124f7ac1461050c578063817d4bff14610522578063868b014114610542578063893d20e8146105625780638da5cb5b1461056257600080fd5b8063313ce567116101dd5780635149f984116101a15780635149f9841461042857806351bc3c851461044857806354194aaf1461046957806370a0823114610489578063715018a6146104bf57806375f0a874146104d457600080fd5b8063313ce567146103ac57806339509351146103c857806341aec357146103e857806346e35f03146103fd5780634f7041a51461041257600080fd5b80631d4eaead116102245780631d4eaead1461032a5780631d97b7cd146103405780631eb25d131461035757806323b872dd1461036c5780632d48f84f1461038c57600080fd5b806306fdde031461026c578063095ea7b3146102ab5780630eff4c64146102db57806318160ddd146102ff5780631d2cb02d1461031457600080fd5b3661026757005b600080fd5b34801561027857600080fd5b5060408051808201825260078152664d6178696d757360c81b602082015290516102a29190611b26565b60405180910390f35b3480156102b757600080fd5b506102cb6102c6366004611b8c565b6107a0565b60405190151581526020016102a2565b3480156102e757600080fd5b506102f160115481565b6040519081526020016102a2565b34801561030b57600080fd5b506006546102f1565b34801561032057600080fd5b506102f1600c5481565b34801561033657600080fd5b506102f1600a5481565b34801561034c57600080fd5b506103556107b7565b005b34801561036357600080fd5b506102f16107c2565b34801561037857600080fd5b506102cb610387366004611bb8565b6107de565b34801561039857600080fd5b506103556103a7366004611bf9565b61087a565b3480156103b857600080fd5b50604051601281526020016102a2565b3480156103d457600080fd5b506102cb6103e3366004611b8c565b6109f9565b3480156103f457600080fd5b50610355610a30565b34801561040957600080fd5b506102cb610a5f565b34801561041e57600080fd5b506102f160075481565b34801561043457600080fd5b50610355610443366004611c51565b610a9f565b34801561045457600080fd5b506013546102cb90600160a01b900460ff1681565b34801561047557600080fd5b50610355610484366004611c86565b610b44565b34801561049557600080fd5b506102f16104a4366004611c9f565b6001600160a01b031660009081526001602052604090205490565b3480156104cb57600080fd5b50610355610ba8565b3480156104e057600080fd5b50600f546104f4906001600160a01b031681565b6040516001600160a01b0390911681526020016102a2565b34801561051857600080fd5b506102f160095481565b34801561052e57600080fd5b5061035561053d366004611c9f565b610c2b565b34801561054e57600080fd5b5061035561055d366004611cc3565b610c86565b34801561056e57600080fd5b506000546001600160a01b03166104f4565b34801561058c57600080fd5b506102cb61059b366004611b8c565b610cce565b3480156105ac57600080fd5b506102cb6105bb366004611b8c565b610d4a565b3480156105cc57600080fd5b506102f160145481565b3480156105e257600080fd5b506103556105f1366004611c9f565b610d57565b34801561060257600080fd5b50610355610611366004611c86565b610d96565b34801561062257600080fd5b506102f1600b5481565b34801561063857600080fd5b506102f1610dcf565b34801561064d57600080fd5b506102f160085481565b34801561066357600080fd5b50610355610672366004611c86565b610e2e565b34801561068357600080fd5b506102cb610692366004611c9f565b60056020526000908152604090205460ff1681565b3480156106b357600080fd5b506102cb6106c2366004611c9f565b60036020526000908152604090205460ff1681565b3480156106e357600080fd5b506102f16106f2366004611cde565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561072957600080fd5b50610355610738366004611c51565b610e66565b34801561074957600080fd5b506102f160105481565b34801561075f57600080fd5b5061035561076e366004611c9f565b610f46565b34801561077f57600080fd5b506102f161078e366004611c9f565b60046020526000908152604090205481565b60006107ad33848461103f565b5060015b92915050565b6107c042610b44565b565b6107ce6012600a611e11565b6107db90620f4240611e20565b81565b60006107eb848484611132565b6001600160a01b03841660009081526002602090815260408083203384529091529020548281101561085b5760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b60448201526064015b60405180910390fd5b61086f853361086a8685611e37565b61103f565b506001949350505050565b61088333611277565b61089f5760405162461bcd60e51b815260040161085290611e4a565b60006108ae60046103e8611e81565b90508087111580156108c05750808611155b80156108cc5750808511155b61090d5760405162461bcd60e51b81526020600482015260126024820152710a8c2f040caf0c6cacac8e640dac2f0a8c2f60731b6044820152606401610852565b6103e88261091b8587611ea3565b6109259190611ea3565b1461097c5760405162461bcd60e51b815260206004820152602160248201527f546178657320646f6e27742061646420757020746f2064656e6f6d696e61746f6044820152603960f91b6064820152608401610852565b600787905560088690556009859055600c839055600b829055600a8490556040805188815260208101889052908101869052606081018590526080810184905260a081018390527f95617e149b678679d65360792e6610c8fc9add72efd72fc3c8d94792801ca5c99060c00160405180910390a150505050505050565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916107ad91859061086a908690611ea3565b610a3933611277565b610a555760405162461bcd60e51b815260040161085290611e4a565b6107c060016112a4565b60006103e8601154600654610a749190611e20565b610a7e9190611e81565b600d546001600160a01b031660009081526001602052604090205411919050565b610aa833611277565b610ac45760405162461bcd60e51b815260040161085290611e4a565b600d546001600160a01b0390811690831603610b195760405162461bcd60e51b815260206004820152601460248201527363616e2774206368616e67652070616e63616b6560601b6044820152606401610852565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b610b4d33611277565b610b695760405162461bcd60e51b815260040161085290611e4a565b6014544210610b7757600080fd5b60148190556040517f2cb945e0498987ef06dbd68025b0bc276116c63345296379c28a8e8f09b47dc190600090a150565b33610bbb6000546001600160a01b031690565b6001600160a01b031614610be15760405162461bcd60e51b815260040161085290611eb6565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b33610c3e6000546001600160a01b031690565b6001600160a01b031614610c645760405162461bcd60e51b815260040161085290611eb6565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b610c8f33611277565b610cab5760405162461bcd60e51b815260040161085290611e4a565b60138054911515600160a01b0260ff60a01b19909216919091179055565b905090565b3360009081526002602090815260408083206001600160a01b038616845290915281205482811015610d315760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b6044820152606401610852565b610d40338561086a8685611e37565b5060019392505050565b60006107ad338484611132565b610d6033611277565b610d7c5760405162461bcd60e51b815260040161085290611e4a565b6001600160a01b0316600090815260046020526040812055565b610d9f33611277565b610dbb5760405162461bcd60e51b815260040161085290611e4a565b6103e8811115610dca57600080fd5b601155565b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d54600654610e0d6012600a611e11565b610e1a90620f4240611e20565b610e249190611e37565b610cc99190611ea3565b610e3733611277565b610e535760405162461bcd60e51b815260040161085290611e4a565b600a811115610e6157600080fd5b601055565b610e6f33611277565b610e8b5760405162461bcd60e51b815260040161085290611e4a565b306001600160a01b03831603610ee35760405162461bcd60e51b815260206004820152601a60248201527f63616e277420496e636c7564652074686520636f6e74726163740000000000006044820152606401610852565b6001600160a01b038216600081815260036020908152604091829020805460ff19168515159081179091558251938452908301527fa22b25479919d4ac678f064a05daa1ee9c0adc3b8198942ea45255e364e04ed4910160405180910390a15050565b33610f596000546001600160a01b031690565b6001600160a01b031614610f7f5760405162461bcd60e51b815260040161085290611eb6565b6001600160a01b038116610fe45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610852565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166110895760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b6044820152606401610852565b6001600160a01b0382166110d15760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b6044820152606401610852565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661117d5760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b6044820152606401610852565b6001600160a01b0382166111c65760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b6044820152606401610852565b6001600160a01b03831660009081526003602052604090205460ff168061120557506001600160a01b03821660009081526003602052604090205460ff165b1561121a57611215838383611460565b505050565b60145442101561126c5760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c65640000000000000000006044820152606401610852565b611215838383611573565b600080546001600160a01b03838116911614806107b1575050600f546001600160a01b0390811691161490565b600f805460ff60a01b1916600160a01b17905530600090815260016020526040812054600c54600b549192916112da9190611ea3565b601054600d546001600160a01b0316600090815260016020526040812054929350916103e89161130991611e20565b6113139190611e81565b90508160000361132557505050611450565b8315611341575030600090815260016020526040902054611351565b8083101561135157505050611450565b600061135b610a5f565b61137d5782600b548361136e9190611e20565b6113789190611e81565b611380565b60005b9050600061138e8284611e37565b9050600061139d600284611e81565b905060006113ab8383611ea3565b9050476113b7826117dd565b60006113c38247611e37565b905085156113f0576000836113d88684611e20565b6113e29190611e81565b90506113ee858261192c565b505b600f546040516000916001600160a01b03169047908381818185875af1925050503d806000811461143d576040519150601f19603f3d011682016040523d82523d6000602084013e611442565b606091505b505050505050505050505050505b50600f805460ff60a01b19169055565b6001600160a01b038316600090815260016020526040902054818110156114c45760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610852565b6001600160a01b038416600090815260016020526040812080548492906114ec908490611e37565b90915550506001600160a01b03831660009081526001602052604081208054849290611519908490611ea3565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161156591815260200190565b60405180910390a350505050565b6001600160a01b038316600090815260016020526040902054818110156115d75760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610852565b601280546001600160a01b038087166001600160a01b03199283168117909355601380549187169190921681179091556000918252600560205260408083205491835282205460ff91821692911690811561163b57611634611a01565b9050611654565b821561164957611634611a5b565b611651611aa1565b90505b600d546001600160a01b0388811691161480159061167c5750601354600160a01b900460ff16155b80156116925750600f54600160a01b900460ff16155b156116a1576116a160006112a4565b60006116b08683600a54611af1565b905060006116ce8784600b54600c546116c99190611ea3565b611af1565b905060006116dc8284611ea3565b6116e69089611e37565b6001600160a01b038b16600090815260016020526040812080549293508a92909190611713908490611e37565b90915550503060009081526001602052604081208054849290611737908490611ea3565b9250508190555082600660008282546117509190611e37565b90915550506001600160a01b0389166000908152600160205260408120805483929061177d908490611ea3565b92505081905550886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516117c991815260200190565b60405180910390a350505050505050505050565b600e546117f59030906001600160a01b03168361103f565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061182a5761182a611eeb565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611883573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a79190611f01565b816001815181106118ba576118ba611eeb565b6001600160a01b039283166020918202929092010152600e5460405163791ac94760e01b815291169063791ac94790611900908590600090869030904290600401611f1e565b600060405180830381600087803b15801561191a57600080fd5b505af192505050801561121557505050565b600e546119449030906001600160a01b03168461103f565b600e546001600160a01b031663f305d71982308560008061196d6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156119d5573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119fa9190611f8f565b5050505050565b6012546001600160a01b03166000908152600460205260408120544290801580611a385750601454611a3490603c611ea3565b8110155b80611a4257508181145b15611a51576008549250505090565b6103849250505090565b6013546001600160a01b03166000908152600460205260408120548103611a9a576013546001600160a01b031660009081526004602052604090204290555b5060075490565b6012546001600160a01b03166000908152600460205260408120544290801580611aca57508181145b80611ae25750601454611ade90603c611ea3565b8110155b15611a51576009549250505090565b6000611aff6103e880611e20565b82611b0a8587611e20565b611b149190611e20565b611b1e9190611e81565b949350505050565b600060208083528351808285015260005b81811015611b5357858101830151858201604001528201611b37565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611b8957600080fd5b50565b60008060408385031215611b9f57600080fd5b8235611baa81611b74565b946020939093013593505050565b600080600060608486031215611bcd57600080fd5b8335611bd881611b74565b92506020840135611be881611b74565b929592945050506040919091013590565b60008060008060008060c08789031215611c1257600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b80358015158114611c4c57600080fd5b919050565b60008060408385031215611c6457600080fd5b8235611c6f81611b74565b9150611c7d60208401611c3c565b90509250929050565b600060208284031215611c9857600080fd5b5035919050565b600060208284031215611cb157600080fd5b8135611cbc81611b74565b9392505050565b600060208284031215611cd557600080fd5b611cbc82611c3c565b60008060408385031215611cf157600080fd5b8235611cfc81611b74565b91506020830135611d0c81611b74565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611d68578160001904821115611d4e57611d4e611d17565b80851615611d5b57918102915b93841c9390800290611d32565b509250929050565b600082611d7f575060016107b1565b81611d8c575060006107b1565b8160018114611da25760028114611dac57611dc8565b60019150506107b1565b60ff841115611dbd57611dbd611d17565b50506001821b6107b1565b5060208310610133831016604e8410600b8410161715611deb575081810a6107b1565b611df58383611d2d565b8060001904821115611e0957611e09611d17565b029392505050565b6000611cbc60ff841683611d70565b80820281158282048414176107b1576107b1611d17565b818103818111156107b1576107b1611d17565b60208082526018908201527f43616c6c6572206e6f74205465616d206f72204f776e65720000000000000000604082015260600190565b600082611e9e57634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156107b1576107b1611d17565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611f1357600080fd5b8151611cbc81611b74565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611f6e5784516001600160a01b031683529383019391830191600101611f49565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611fa457600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212208cbbfce9e4f87a15db3e93ae51e99e144fee7d1f81fd7ef8baf5aaf794e243de64736f6c63430008110033

Deployed Bytecode Sourcemap

3461:17352:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18500:94;;;;;;;;;;-1:-1:-1;18581:5:0;;;;;;;;;;;-1:-1:-1;;;18581:5:0;;;;18500:94;;;;18581:5;18500:94;:::i;:::-;;;;;;;;19373:158;;;;;;;;;;-1:-1:-1;19373:158:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;19373:158:0;1023:187:1;10908:35:0;;;;;;;;;;;;;;;;;;;1361:25:1;;;1349:2;1334:18;10908:35:0;1215:177:1;18810:105:0;;;;;;;;;;-1:-1:-1;18889:18:0;;18810:105;;4718:28;;;;;;;;;;;;;;;;4655:21;;;;;;;;;;;;;;;;17741:85;;;;;;;;;;;;;:::i;:::-;;3955:57;;;;;;;;;;;;;:::i;19841:386::-;;;;;;;;;;-1:-1:-1;19841:386:0;;;;;:::i;:::-;;:::i;11433:608::-;;;;;;;;;;-1:-1:-1;11433:608:0;;;;;:::i;:::-;;:::i;18708:94::-;;;;;;;;;;-1:-1:-1;18708:94:0;;3946:2;2528:36:1;;2516:2;2501:18;18708:94:0;2386:184:1;20262:202:0;;;;;;;;;;-1:-1:-1;20262:202:0;;;;;:::i;:::-;;:::i;17141:83::-;;;;;;;;;;;;;:::i;12278:152::-;;;;;;;;;;;;;:::i;4560:23::-;;;;;;;;;;;;;;;;16712:154;;;;;;;;;;-1:-1:-1;16712:154:0;;;;;:::i;:::-;;:::i;16878:22::-;;;;;;;;;;-1:-1:-1;16878:22:0;;;;-1:-1:-1;;;16878:22:0;;;;;;17832:187;;;;;;;;;;-1:-1:-1;17832:187:0;;;;;:::i;:::-;;:::i;18923:118::-;;;;;;;;;;-1:-1:-1;18923:118:0;;;;;:::i;:::-;-1:-1:-1;;;;;19015:18:0;18991:4;19015:18;;;:9;:18;;;;;;;18923:118;2915:140;;;;;;;;;;;;;:::i;4971:30::-;;;;;;;;;;-1:-1:-1;4971:30:0;;;;-1:-1:-1;;;;;4971:30:0;;;;;;-1:-1:-1;;;;;3661:32:1;;;3643:51;;3631:2;3616:18;4971:30:0;3497:203:1;4621:27:0;;;;;;;;;;;;;;;;5063:110;;;;;;;;;;-1:-1:-1;5063:110:0;;;;;:::i;:::-;;:::i;16983:90::-;;;;;;;;;;-1:-1:-1;16983:90:0;;;;;:::i;:::-;;:::i;18398:94::-;;;;;;;;;;-1:-1:-1;18450:7:0;2339:6;-1:-1:-1;;;;;2339:6:0;18398:94;;20472:336;;;;;;;;;;-1:-1:-1;20472:336:0;;;;;:::i;:::-;;:::i;19049:164::-;;;;;;;;;;-1:-1:-1;19049:164:0;;;;;:::i;:::-;;:::i;17692:42::-;;;;;;;;;;;;;;;;12047:120;;;;;;;;;;-1:-1:-1;12047:120:0;;;;;:::i;:::-;;:::i;10950:211::-;;;;;;;;;;-1:-1:-1;10950:211:0;;;;;:::i;:::-;;:::i;4683:28::-;;;;;;;;;;;;;;;;16187:139;;;;;;;;;;;;;:::i;4590:24::-;;;;;;;;;;;;;;;;10644:189;;;;;;;;;;-1:-1:-1;10644:189:0;;;;;:::i;:::-;;:::i;3753:35::-;;;;;;;;;;-1:-1:-1;3753:35:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3638:48;;;;;;;;;;-1:-1:-1;3638:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19221:144;;;;;;;;;;-1:-1:-1;19221:144:0;;;;;:::i;:::-;-1:-1:-1;;;;;19329:19:0;;;19305:4;19329:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;19221:144;17339:248;;;;;;;;;;-1:-1:-1;17339:248:0;;;;;:::i;:::-;;:::i;10611:26::-;;;;;;;;;;;;;;;;3210:236;;;;;;;;;;-1:-1:-1;3210:236:0;;;;;:::i;:::-;;:::i;3693:53::-;;;;;;;;;;-1:-1:-1;3693:53:0;;;;;:::i;:::-;;;;;;;;;;;;;;19373:158;19447:4;19464:37;19473:10;19485:7;19494:6;19464:8;:37::i;:::-;-1:-1:-1;19519:4:0;19373:158;;;;;:::o;17741:85::-;17783:35;17802:15;17783:18;:35::i;:::-;17741:85::o;3955:57::-;3999:13;3946:2;3999;:13;:::i;:::-;3991:21;;:5;:21;:::i;:::-;3955:57;:::o;19841:386::-;19938:4;19955:36;19965:6;19973:9;19984:6;19955:9;:36::i;:::-;-1:-1:-1;;;;;20028:19:0;;20004:21;20028:19;;;:11;:19;;;;;;;;20048:10;20028:31;;;;;;;;20078:26;;;;20070:59;;;;-1:-1:-1;;;20070:59:0;;6173:2:1;20070:59:0;;;6155:21:1;6212:2;6192:18;;;6185:30;-1:-1:-1;;;6231:18:1;;;6224:50;6291:18;;20070:59:0;;;;;;;;;20142:55;20151:6;20159:10;20171:25;20190:6;20171:16;:25;:::i;:::-;20142:8;:55::i;:::-;-1:-1:-1;20215:4:0;;19841:386;-1:-1:-1;;;;19841:386:0:o;11433:608::-;5271:19;5279:10;5271:7;:19::i;:::-;5263:56;;;;-1:-1:-1;;;5263:56:0;;;;;;;:::i;:::-;11556:11:::1;11568:33;4826:1;4783:4;11568:33;:::i;:::-;11556:45;;11625:6;11620:3;:11;;:25;;;;;11639:6;11633:4;:12;;11620:25;:44;;;;;11658:6;11647:9;:17;;11620:44;11612:74;;;::::0;-1:-1:-1;;;11612:74:0;;7230:2:1;11612:74:0::1;::::0;::::1;7212:21:1::0;7269:2;7249:18;;;7242:30;-1:-1:-1;;;7288:18:1;;;7281:48;7346:18;;11612:74:0::1;7028:342:1::0;11612:74:0::1;4783:4;11720:9:::0;11705:14:::1;11710:9:::0;11705:4;:14:::1;:::i;:::-;:24;;;;:::i;:::-;:41;11697:86;;;::::0;-1:-1:-1;;;11697:86:0;;7707:2:1;11697:86:0::1;::::0;::::1;7689:21:1::0;7746:2;7726:18;;;7719:30;7785:34;7765:18;;;7758:62;-1:-1:-1;;;7836:18:1;;;7829:31;7877:19;;11697:86:0::1;7505:397:1::0;11697:86:0::1;11804:6;:10:::0;;;11825:7:::1;:12:::0;;;11848:11:::1;:21:::0;;;11880:12:::1;:22:::0;;;11913:12:::1;:22:::0;;;11946:7:::1;:12:::0;;;11974:59:::1;::::0;;8194:25:1;;;8250:2;8235:18;;8228:34;;;8278:18;;;8271:34;;;8336:2;8321:18;;8314:34;;;8379:3;8364:19;;8357:35;;;8423:3;8408:19;;8401:35;;;11974:59:0::1;::::0;8181:3:1;8166:19;11974:59:0::1;;;;;;;11545:496;11433:608:::0;;;;;;:::o;20262:202::-;20367:10;20341:4;20388:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;20388:32:0;;;;;;;;;;20341:4;;20358:76;;20379:7;;20388:45;;20423:10;;20388:45;:::i;17141:83::-;5271:19;5279:10;5271:7;:19::i;:::-;5263:56;;;;-1:-1:-1;;;5263:56:0;;;;;;;:::i;:::-;17192:24:::1;17211:4;17192:18;:24::i;12278:152::-:0;12325:4;12418;12398:19;;12379:18;;:38;;;;:::i;:::-;:43;;;;:::i;:::-;12358:19;;-1:-1:-1;;;;;12358:19:0;12348:30;;;;:9;:30;;;;;;:74;;12278:152;-1:-1:-1;12278:152:0:o;16712:154::-;5271:19;5279:10;5271:7;:19::i;:::-;5263:56;;;;-1:-1:-1;;;5263:56:0;;;;;;;:::i;:::-;16790:19:::1;::::0;-1:-1:-1;;;;;16790:19:0;;::::1;16785:24:::0;;::::1;::::0;16777:56:::1;;;::::0;-1:-1:-1;;;16777:56:0;;8649:2:1;16777:56:0::1;::::0;::::1;8631:21:1::0;8688:2;8668:18;;;8661:30;-1:-1:-1;;;8707:18:1;;;8700:50;8767:18;;16777:56:0::1;8447:344:1::0;16777:56:0::1;-1:-1:-1::0;;;;;16844:10:0;;;::::1;;::::0;;;:5:::1;:10;::::0;;;;:14;;-1:-1:-1;;16844:14:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16712:154::o;17832:187::-;5271:19;5279:10;5271:7;:19::i;:::-;5263:56;;;;-1:-1:-1;;;5263:56:0;;;;;;;:::i;:::-;17926:15:::1;;17910;:31;17902:40;;;::::0;::::1;;17953:15;:25:::0;;;17994:17:::1;::::0;::::1;::::0;;;::::1;17832:187:::0;:::o;2915:140::-;2497:10;2486:7;2312;2339:6;-1:-1:-1;;;;;2339:6:0;;2274:79;2486:7;-1:-1:-1;;;;;2486:21:0;;2478:66;;;;-1:-1:-1;;;2478:66:0;;;;;;;:::i;:::-;3014:1:::1;2998:6:::0;;2977:40:::1;::::0;-1:-1:-1;;;;;2998:6:0;;::::1;::::0;2977:40:::1;::::0;3014:1;;2977:40:::1;3045:1;3028:19:::0;;-1:-1:-1;;;;;;3028:19:0::1;::::0;;2915:140::o;5063:110::-;2497:10;2486:7;2312;2339:6;-1:-1:-1;;;;;2339:6:0;;2274:79;2486:7;-1:-1:-1;;;;;2486:21:0;;2478:66;;;;-1:-1:-1;;;2478:66:0;;;;;;;:::i;:::-;5140:15:::1;:25:::0;;-1:-1:-1;;;;;;5140:25:0::1;-1:-1:-1::0;;;;;5140:25:0;;;::::1;::::0;;;::::1;::::0;;5063:110::o;16983:90::-;5271:19;5279:10;5271:7;:19::i;:::-;5263:56;;;;-1:-1:-1;;;5263:56:0;;;;;;;:::i;:::-;17048:10:::1;:17:::0;;;::::1;;-1:-1:-1::0;;;17048:17:0::1;-1:-1:-1::0;;;;17048:17:0;;::::1;::::0;;;::::1;::::0;;16983:90::o;18477:7::-;18470:14;;18398:94;:::o;20472:336::-;20609:10;20556:4;20597:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;20597:32:0;;;;;;;;;;20648:35;;;;20640:60;;;;-1:-1:-1;;;20640:60:0;;9359:2:1;20640:60:0;;;9341:21:1;9398:2;9378:18;;;9371:30;-1:-1:-1;;;9417:18:1;;;9410:42;9469:18;;20640:60:0;9157:336:1;20640:60:0;20713:65;20722:10;20734:7;20743:34;20762:15;20743:16;:34;:::i;20713:65::-;-1:-1:-1;20796:4:0;;20472:336;-1:-1:-1;;;20472:336:0:o;19049:164::-;19126:4;19143:40;19153:10;19165:9;19176:6;19143:9;:40::i;12047:120::-;5271:19;5279:10;5271:7;:19::i;:::-;5263:56;;;;-1:-1:-1;;;5263:56:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12125:32:0::1;12158:1;12125:32:::0;;;:23:::1;:32;::::0;;;;:34;12047:120::o;10950:211::-;5271:19;5279:10;5271:7;:19::i;:::-;5263:56;;;;-1:-1:-1;;;5263:56:0;;;;;;;:::i;:::-;11087:4:::1;11055:30;:36;;11047:45;;;::::0;::::1;;11103:19;:50:::0;10950:211::o;16187:139::-;16310:6;16234:4;16292:26;;;:9;:26;;;;16272:18;;3999:13;3946:2;3999;:13;:::i;:::-;3991:21;;:5;:21;:::i;:::-;16258:32;;;;:::i;:::-;16257:61;;;;:::i;10644:189::-;5271:19;5279:10;5271:7;:19::i;:::-;5263:56;;;;-1:-1:-1;;;5263:56:0;;;;;;;:::i;:::-;10758:2:::1;10733:23;:27;;10725:36;;;::::0;::::1;;10789:12;:36:::0;10644:189::o;17339:248::-;5271:19;5279:10;5271:7;:19::i;:::-;5263:56;;;;-1:-1:-1;;;5263:56:0;;;;;;;:::i;:::-;17453:4:::1;-1:-1:-1::0;;;;;17436:22:0;::::1;::::0;17428:60:::1;;;::::0;-1:-1:-1;;;17428:60:0;;9700:2:1;17428:60:0::1;::::0;::::1;9682:21:1::0;9739:2;9719:18;;;9712:30;9778:28;9758:18;;;9751:56;9824:18;;17428:60:0::1;9498:350:1::0;17428:60:0::1;-1:-1:-1::0;;;;;17499:25:0;::::1;;::::0;;;:16:::1;:25;::::0;;;;;;;;:33;;-1:-1:-1;;17499:33:0::1;::::0;::::1;;::::0;;::::1;::::0;;;17548:31;;10021:51:1;;;10088:18;;;10081:50;17548:31:0::1;::::0;9994:18:1;17548:31:0::1;;;;;;;17339:248:::0;;:::o;3210:236::-;2497:10;2486:7;2312;2339:6;-1:-1:-1;;;;;2339:6:0;;2274:79;2486:7;-1:-1:-1;;;;;2486:21:0;;2478:66;;;;-1:-1:-1;;;2478:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3291:22:0;::::1;3283:73;;;::::0;-1:-1:-1;;;3283:73:0;;10344:2:1;3283:73:0::1;::::0;::::1;10326:21:1::0;10383:2;10363:18;;;10356:30;10422:34;10402:18;;;10395:62;-1:-1:-1;;;10473:18:1;;;10466:36;10519:19;;3283:73:0::1;10142:402:1::0;3283:73:0::1;3393:6;::::0;;3372:38:::1;::::0;-1:-1:-1;;;;;3372:38:0;;::::1;::::0;3393:6;::::1;::::0;3372:38:::1;::::0;::::1;3421:6;:17:::0;;-1:-1:-1;;;;;;3421:17:0::1;-1:-1:-1::0;;;;;3421:17:0;;;::::1;::::0;;;::::1;::::0;;3210:236::o;19537:296::-;-1:-1:-1;;;;;19627:19:0;;19619:49;;;;-1:-1:-1;;;19619:49:0;;10751:2:1;19619:49:0;;;10733:21:1;10790:2;10770:18;;;10763:30;-1:-1:-1;;;10809:18:1;;;10802:47;10866:18;;19619:49:0;10549:341:1;19619:49:0;-1:-1:-1;;;;;19687:21:0;;19679:49;;;;-1:-1:-1;;;19679:49:0;;11097:2:1;19679:49:0;;;11079:21:1;11136:2;11116:18;;;11109:30;-1:-1:-1;;;11155:18:1;;;11148:45;11210:18;;19679:49:0;10895:339:1;19679:49:0;-1:-1:-1;;;;;19741:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;19793:32;;1361:25:1;;;19793:32:0;;1334:18:1;19793:32:0;;;;;;;19537:296;;;:::o;7218:613::-;-1:-1:-1;;;;;7311:20:0;;7303:51;;;;-1:-1:-1;;;7303:51:0;;11441:2:1;7303:51:0;;;11423:21:1;11480:2;11460:18;;;11453:30;-1:-1:-1;;;11499:18:1;;;11492:48;11557:18;;7303:51:0;11239:342:1;7303:51:0;-1:-1:-1;;;;;7373:23:0;;7365:52;;;;-1:-1:-1;;;7365:52:0;;11788:2:1;7365:52:0;;;11770:21:1;11827:2;11807:18;;;11800:30;-1:-1:-1;;;11846:18:1;;;11839:46;11902:18;;7365:52:0;11586:340:1;7365:52:0;-1:-1:-1;;;;;7460:24:0;;;;;;:16;:24;;;;;;;;;:55;;-1:-1:-1;;;;;;7488:27:0;;;;;;:16;:27;;;;;;;;7460:55;7457:367;;;7530:43;7547:6;7555:9;7566:6;7530:16;:43::i;:::-;7218:613;;;:::o;7457:367::-;7698:15;;7681;:32;;7673:67;;;;-1:-1:-1;;;7673:67:0;;12133:2:1;7673:67:0;;;12115:21:1;12172:2;12152:18;;;12145:30;12211:25;12191:18;;;12184:53;12254:18;;7673:67:0;11931:347:1;7673:67:0;7755:39;7770:6;7777:9;7787:6;7755:14;:39::i;5557:120::-;5610:4;2339:6;;-1:-1:-1;;;;;5633:13:0;;;2339:6;;5633:13;;:36;;-1:-1:-1;;5654:15:0;;-1:-1:-1;;;;;5654:15:0;;;5648:21;;;;5557:120::o;12589:1820::-;10428:27;:34;;-1:-1:-1;;;;10428:34:0;-1:-1:-1;;;10428:34:0;;;12705:4:::1;10428:34:::0;12687:24;;;10458:4;12687:24:::1;::::0;;;;;12749:12:::1;::::0;12736::::1;::::0;12687:24;;10428:34;12736:25:::1;::::0;12749:12;12736:25:::1;:::i;:::-;12915:12;::::0;12894:19:::1;::::0;-1:-1:-1;;;;;12894:19:0::1;12867:16;12884:30:::0;;;:9:::1;:30;::::0;;;;;12722:39;;-1:-1:-1;12867:16:0;12928:4:::1;::::0;12884:43:::1;::::0;::::1;:::i;:::-;:48;;;;:::i;:::-;12867:65;;12985:8;12995:1;12985:11:::0;12982:22:::1;;12997:7;;;;;12982:22;13173:12;13170:134;;;-1:-1:-1::0;13230:4:0::1;13212:24;::::0;;;:9:::1;:24;::::0;;;;;13170:134:::1;;;13271:11;13255:15;:27;13252:52;;;13297:7;;;;;13252:52;13437:22;13470:17;:15;:17::i;:::-;:65;;13527:8;13513:12;;13501:11;:24;;;;:::i;:::-;13500:35;;;;:::i;:::-;13470:65;;;13488:1;13470:65;13437:98:::0;-1:-1:-1;13548:22:0::1;13572:29;13437:98:::0;13572:11;:29:::1;:::i;:::-;13548:53:::0;-1:-1:-1;13614:12:0::1;13627:19;13645:1;13627:17:::0;:19:::1;:::i;:::-;13614:32:::0;-1:-1:-1;13727:14:0::1;13742:25;13750:17:::0;13614:32;13742:25:::1;:::i;:::-;13727:40:::0;-1:-1:-1;13881:21:0::1;13913:27;13727:40:::0;13913:16:::1;:27::i;:::-;13951:11;13964:41;13988:17:::0;13964:21:::1;:41;:::i;:::-;13951:55:::0;-1:-1:-1;14111:19:0;;14108:135:::1;;14146:11;14177:9:::0;14161:14:::1;14168:7:::0;14161:6;:14:::1;:::i;:::-;14160:26;;;;:::i;:::-;14146:40;;14201:30;14215:7;14224:6;14201:13;:30::i;:::-;14131:112;14108:135;14328:15;::::0;:53:::1;::::0;14316:9:::1;::::0;-1:-1:-1;;;;;14328:15:0::1;::::0;14355:21:::1;::::0;14316:9;14328:53;14316:9;14328:53;14355:21;14328:15;:53:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;10473:1:0::1;-1:-1:-1::0;10485:27:0;:35;;-1:-1:-1;;;;10485:35:0;;;12589:1820::o;9624:339::-;-1:-1:-1;;;;;9737:17:0;;9716:18;9737:17;;;:9;:17;;;;;;9773:23;;;;9765:60;;;;-1:-1:-1;;;9765:60:0;;12695:2:1;9765:60:0;;;12677:21:1;12734:2;12714:18;;;12707:30;-1:-1:-1;;;12753:18:1;;;12746:54;12817:18;;9765:60:0;12493:348:1;9765:60:0;-1:-1:-1;;;;;9836:17:0;;;;;;:9;:17;;;;;:25;;9855:6;;9836:17;:25;;9855:6;;9836:25;:::i;:::-;;;;-1:-1:-1;;;;;;;9872:20:0;;;;;;:9;:20;;;;;:28;;9894:6;;9872:20;:28;;9894:6;;9872:28;:::i;:::-;;;;;;;;9938:9;-1:-1:-1;;;;;9922:33:0;9931:6;-1:-1:-1;;;;;9922:33:0;;9948:6;9922:33;;;;1361:25:1;;1349:2;1334:18;;1215:177;9922:33:0;;;;;;;;9705:258;9624:339;;;:::o;7932:1397::-;-1:-1:-1;;;;;8043:17:0;;8022:18;8043:17;;;:9;:17;;;;;;8079:23;;;;8071:60;;;;-1:-1:-1;;;8071:60:0;;12695:2:1;8071:60:0;;;12677:21:1;12734:2;12714:18;;;12707:30;-1:-1:-1;;;12753:18:1;;;12746:54;12817:18;;8071:60:0;12493:348:1;8071:60:0;8142:6;:13;;-1:-1:-1;;;;;8142:13:0;;;-1:-1:-1;;;;;;8142:13:0;;;;;;;;8166:9;:19;;;;;;;;;;;;;;8142:6;8207:13;;;:5;:13;;;;;;;8243:16;;;;;;8207:13;;;;;8243:16;;;8291:146;;;;8326:9;:7;:9::i;:::-;8322:13;;8291:146;;;8369:5;8366:71;;;8394:8;:6;:8::i;8366:71::-;8424:13;:11;:13::i;:::-;8420:17;;8366:71;8462:19;;-1:-1:-1;;;;;8454:27:0;;;8462:19;;8454:27;;;;8453:44;;-1:-1:-1;8486:10:0;;-1:-1:-1;;;8486:10:0;;;;8485:11;8453:44;:76;;;;-1:-1:-1;8501:27:0;;-1:-1:-1;;;8501:27:0;;;;8500:28;8453:76;8450:119;;;8544:25;8563:5;8544:18;:25::i;:::-;8640:20;8661:35;8675:6;8683:3;8688:7;;8661:13;:35::i;:::-;8640:56;;8804:18;8823:53;8837:6;8845:3;8863:12;;8850;;:25;;;;:::i;:::-;8823:13;:53::i;:::-;8804:72;-1:-1:-1;8940:16:0;8965:31;8804:72;8965:15;:31;:::i;:::-;8957:40;;:6;:40;:::i;:::-;-1:-1:-1;;;;;9010:17:0;;;;;;:9;:17;;;;;:25;;8940:57;;-1:-1:-1;9029:6:0;;9010:17;;;:25;;9029:6;;9010:25;:::i;:::-;;;;-1:-1:-1;;9120:4:0;9102:24;;;;:9;:24;;;;;:41;;9130:13;;9102:24;:41;;9130:13;;9102:41;:::i;:::-;;;;;;;;9198:15;9178:18;;:35;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;9224:20:0;;;;;;:9;:20;;;;;:33;;9246:11;;9224:20;:33;;9246:11;;9224:33;:::i;:::-;;;;;;;;9299:9;-1:-1:-1;;;;;9283:38:0;9292:6;-1:-1:-1;;;;;9283:38:0;;9309:11;9283:38;;;;1361:25:1;;1349:2;1334:18;;1215:177;9283:38:0;;;;;;;;8011:1318;;;;;;;7932:1397;;;:::o;14512:474::-;14602:14;;14570:56;;14587:4;;-1:-1:-1;;;;;14602:14:0;14619:6;14570:8;:56::i;:::-;14661:16;;;14675:1;14661:16;;;;;;;;14637:21;;14661:16;;;;;;;;;;-1:-1:-1;14661:16:0;14637:40;;14706:4;14688;14693:1;14688:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14688:23:0;;;:7;;;;;;;;;;:23;;;;14732:14;;:21;;;-1:-1:-1;;;14732:21:0;;;;:14;;;;;:19;;:21;;;;;14688:7;;14732:21;;;;;:14;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14722:4;14727:1;14722:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14722:31:0;;;:7;;;;;;;;;:31;14770:14;;:190;;-1:-1:-1;;;14770:190:0;;:14;;;:65;;:190;;14850:6;;14770:14;;14887:4;;14914;;14934:15;;14770:190;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14559:427;14512:474;:::o;15796:353::-;15904:14;;15872:61;;15889:4;;-1:-1:-1;;;;;15904:14:0;15921:11;15872:8;:61::i;:::-;15944:14;;-1:-1:-1;;;;;15944:14:0;:30;15982:9;16015:4;16035:11;15944:14;;16093:7;2312;2339:6;-1:-1:-1;;;;;2339:6:0;;2274:79;16093:7;15944:197;;;;;;-1:-1:-1;;;;;;15944:197:0;;;-1:-1:-1;;;;;14710:15:1;;;15944:197:0;;;14692:34:1;14742:18;;;14735:34;;;;14785:18;;;14778:34;;;;14828:18;;;14821:34;14892:15;;;14871:19;;;14864:44;16115:15:0;14924:19:1;;;14917:35;14626:19;;15944:197:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15796:353;;:::o;15201:289::-;15338:6;;-1:-1:-1;;;;;15338:6:0;15242:4;15314:31;;;:23;:31;;;;;;15268:15;;15359:17;;;:60;;-1:-1:-1;15394:15:0;;:25;;15410:9;15394:25;:::i;:::-;15378:14;:41;;15359:60;:82;;;;15437:4;15421:14;:20;15359:82;15356:101;;;15450:7;;15443:14;;;;15201:289;:::o;15356:101::-;16177:3;15468:14;;;;15201:289;:::o;14996:199::-;15074:9;;-1:-1:-1;;;;;15074:9:0;15031:4;15050:34;;;:23;:34;;;;;;:37;;15047:117;;15126:9;;-1:-1:-1;;;;;15126:9:0;15102:34;;;;:23;:34;;;;;15137:15;15102:50;;15047:117;-1:-1:-1;15181:6:0;;;14996:199::o;15496:288::-;15638:6;;-1:-1:-1;;;;;15638:6:0;15541:4;15614:31;;;:23;:31;;;;;;15568:15;;15659:17;;;:39;;;15694:4;15678:14;:20;15659:39;:82;;;-1:-1:-1;15716:15:0;;:25;;15732:9;15716:25;:::i;:::-;15700:14;:41;;15659:82;15656:105;;;15750:11;;15743:18;;;;15496:288;:::o;9384:176::-;9469:4;9520:31;4783:4;;9520:31;:::i;:::-;9505:10;9494;9501:3;9494:6;:10;:::i;:::-;:21;;;;:::i;:::-;9493:59;;;;:::i;:::-;9486:66;9384:176;-1:-1:-1;;;;9384:176:0:o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;1858:523::-;1962:6;1970;1978;1986;1994;2002;2055:3;2043:9;2034:7;2030:23;2026:33;2023:53;;;2072:1;2069;2062:12;2023:53;-1:-1:-1;;2095:23:1;;;2165:2;2150:18;;2137:32;;-1:-1:-1;2216:2:1;2201:18;;2188:32;;2267:2;2252:18;;2239:32;;-1:-1:-1;2318:3:1;2303:19;;2290:33;;-1:-1:-1;2370:3:1;2355:19;2342:33;;-1:-1:-1;1858:523:1;-1:-1:-1;1858:523:1:o;2575:160::-;2640:20;;2696:13;;2689:21;2679:32;;2669:60;;2725:1;2722;2715:12;2669:60;2575:160;;;:::o;2740:315::-;2805:6;2813;2866:2;2854:9;2845:7;2841:23;2837:32;2834:52;;;2882:1;2879;2872:12;2834:52;2921:9;2908:23;2940:31;2965:5;2940:31;:::i;:::-;2990:5;-1:-1:-1;3014:35:1;3045:2;3030:18;;3014:35;:::i;:::-;3004:45;;2740:315;;;;;:::o;3060:180::-;3119:6;3172:2;3160:9;3151:7;3147:23;3143:32;3140:52;;;3188:1;3185;3178:12;3140:52;-1:-1:-1;3211:23:1;;3060:180;-1:-1:-1;3060:180:1:o;3245:247::-;3304:6;3357:2;3345:9;3336:7;3332:23;3328:32;3325:52;;;3373:1;3370;3363:12;3325:52;3412:9;3399:23;3431:31;3456:5;3431:31;:::i;:::-;3481:5;3245:247;-1:-1:-1;;;3245:247:1:o;3705:180::-;3761:6;3814:2;3802:9;3793:7;3789:23;3785:32;3782:52;;;3830:1;3827;3820:12;3782:52;3853:26;3869:9;3853:26;:::i;3890:388::-;3958:6;3966;4019:2;4007:9;3998:7;3994:23;3990:32;3987:52;;;4035:1;4032;4025:12;3987:52;4074:9;4061:23;4093:31;4118:5;4093:31;:::i;:::-;4143:5;-1:-1:-1;4200:2:1;4185:18;;4172:32;4213:33;4172:32;4213:33;:::i;:::-;4265:7;4255:17;;;3890:388;;;;;:::o;4283:127::-;4344:10;4339:3;4335:20;4332:1;4325:31;4375:4;4372:1;4365:15;4399:4;4396:1;4389:15;4415:422;4504:1;4547:5;4504:1;4561:270;4582:7;4572:8;4569:21;4561:270;;;4641:4;4637:1;4633:6;4629:17;4623:4;4620:27;4617:53;;;4650:18;;:::i;:::-;4700:7;4690:8;4686:22;4683:55;;;4720:16;;;;4683:55;4799:22;;;;4759:15;;;;4561:270;;;4565:3;4415:422;;;;;:::o;4842:806::-;4891:5;4921:8;4911:80;;-1:-1:-1;4962:1:1;4976:5;;4911:80;5010:4;5000:76;;-1:-1:-1;5047:1:1;5061:5;;5000:76;5092:4;5110:1;5105:59;;;;5178:1;5173:130;;;;5085:218;;5105:59;5135:1;5126:10;;5149:5;;;5173:130;5210:3;5200:8;5197:17;5194:43;;;5217:18;;:::i;:::-;-1:-1:-1;;5273:1:1;5259:16;;5288:5;;5085:218;;5387:2;5377:8;5374:16;5368:3;5362:4;5359:13;5355:36;5349:2;5339:8;5336:16;5331:2;5325:4;5322:12;5318:35;5315:77;5312:159;;;-1:-1:-1;5424:19:1;;;5456:5;;5312:159;5503:34;5528:8;5522:4;5503:34;:::i;:::-;5573:6;5569:1;5565:6;5561:19;5552:7;5549:32;5546:58;;;5584:18;;:::i;:::-;5622:20;;4842:806;-1:-1:-1;;;4842:806:1:o;5653:140::-;5711:5;5740:47;5781:4;5771:8;5767:19;5761:4;5740:47;:::i;5798:168::-;5871:9;;;5902;;5919:15;;;5913:22;;5899:37;5889:71;;5940:18;;:::i;6320:128::-;6387:9;;;6408:11;;;6405:37;;;6422:18;;:::i;6453:348::-;6655:2;6637:21;;;6694:2;6674:18;;;6667:30;6733:26;6728:2;6713:18;;6706:54;6792:2;6777:18;;6453:348::o;6806:217::-;6846:1;6872;6862:132;;6916:10;6911:3;6907:20;6904:1;6897:31;6951:4;6948:1;6941:15;6979:4;6976:1;6969:15;6862:132;-1:-1:-1;7008:9:1;;6806:217::o;7375:125::-;7440:9;;;7461:10;;;7458:36;;;7474:18;;:::i;8796:356::-;8998:2;8980:21;;;9017:18;;;9010:30;9076:34;9071:2;9056:18;;9049:62;9143:2;9128:18;;8796:356::o;12978:127::-;13039:10;13034:3;13030:20;13027:1;13020:31;13070:4;13067:1;13060:15;13094:4;13091:1;13084:15;13110:251;13180:6;13233:2;13221:9;13212:7;13208:23;13204:32;13201:52;;;13249:1;13246;13239:12;13201:52;13281:9;13275:16;13300:31;13325:5;13300:31;:::i;13366:980::-;13628:4;13676:3;13665:9;13661:19;13707:6;13696:9;13689:25;13733:2;13771:6;13766:2;13755:9;13751:18;13744:34;13814:3;13809:2;13798:9;13794:18;13787:31;13838:6;13873;13867:13;13904:6;13896;13889:22;13942:3;13931:9;13927:19;13920:26;;13981:2;13973:6;13969:15;13955:29;;14002:1;14012:195;14026:6;14023:1;14020:13;14012:195;;;14091:13;;-1:-1:-1;;;;;14087:39:1;14075:52;;14182:15;;;;14147:12;;;;14123:1;14041:9;14012:195;;;-1:-1:-1;;;;;;;14263:32:1;;;;14258:2;14243:18;;14236:60;-1:-1:-1;;;14327:3:1;14312:19;14305:35;14224:3;13366:980;-1:-1:-1;;;13366:980:1:o;14963:306::-;15051:6;15059;15067;15120:2;15108:9;15099:7;15095:23;15091:32;15088:52;;;15136:1;15133;15126:12;15088:52;15165:9;15159:16;15149:26;;15215:2;15204:9;15200:18;15194:25;15184:35;;15259:2;15248:9;15244:18;15238:25;15228:35;;14963:306;;;;;:::o

Swarm Source

ipfs://8cbbfce9e4f87a15db3e93ae51e99e144fee7d1f81fd7ef8baf5aaf794e243de

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

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.