ETH Price: $2,524.82 (+0.02%)

Token

Voltama ($VOLT)
 

Overview

Max Total Supply

1,000,000 $VOLT

Holders

127

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
10 $VOLT

Value
$0.00
0x87bf73e6dc0716de32c7ceb6d1a31ed183f56d59
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Voltama

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**
 * Telegram: t.me/Voltama
 * Website: wwww.voltamaeth.com
 */

pragma solidity ^0.8.7;

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    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;
}

library Address{
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}


 contract Voltama is Context, IERC20, Ownable {
    using Address for address payable;
    
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcluded;
    mapping (address => bool) public allowedTransfer;
    mapping (address => bool) private _isBlacklisted;

    address[] private _excluded;

    bool public tradingEnabled;
    bool public swapEnabled;
    bool private swapping;
    
    
    
    //Anti Dump
    mapping(address => uint256) private _lastSell;
    bool public coolDownEnabled = true;
    uint256 public coolDownTime = 60 seconds;
    
    modifier antiBot(address account){
        require(tradingEnabled || allowedTransfer[account], "Trading not enabled yet");
        _;
    }

    IRouter public router;
    address public pair;

    uint8 private constant _decimals = 9;
    uint256 private constant MAX = ~uint256(0);

    uint256 private _tTotal = 1e6 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    uint256 public swapTokensAtAmount = 3_000_000 * 10**6;
    uint256 public maxBuyLimit = 10_000_000 * 10**6;
    uint256 public maxSellLimit = 5_000_000 * 10**6;
    uint256 public maxWalletLimit = 10_000_000 * 10**6;
    
    uint256 public genesis_block;
    
    address private marketingWallet = 0x7Ed589E2E58Ce93998935BfaCd6D90b9DA5F0D40;
    address private donationWallet = 0x7Ed589E2E58Ce93998935BfaCd6D90b9DA5F0D40;
    address private buybackWallet = 0x7Ed589E2E58Ce93998935BfaCd6D90b9DA5F0D40;

    string private constant _name = "Voltama";
    string private constant _symbol = "$VOLT";

    struct Taxes {
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity; 
        uint256 donation;
        uint256 buyback;
    }

    Taxes private taxes = Taxes(0, 0, 0, 0, 0);
    Taxes private sellTaxes = Taxes(0, 0, 0, 0, 0);

    struct TotFeesPaidStruct{
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity; 
        uint256 donation;
        uint256 buyback;
    }
    
    TotFeesPaidStruct public totFeesPaid;

    struct valuesFromGetValues{
      uint256 rAmount;
      uint256 rTransferAmount;
      uint256 rRfi;
      uint256 rMarketing;
      uint256 rLiquidity;
      uint256 rDonation;
      uint256 rBuyback;
      uint256 tTransferAmount;
      uint256 tRfi;
      uint256 tMarketing;
      uint256 tLiquidity;
      uint256 tDonation;
      uint256 tBuyback;
    }

    event FeesChanged();
    event UpdatedRouter(address oldRouter, address newRouter);

    modifier lockTheSwap {
        swapping = true;
        _;
        swapping = false;
    }

    constructor (address routerAddress) {
        IRouter _router = IRouter(routerAddress);
        address _pair = IFactory(_router.factory())
            .createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        
        excludeFromReward(pair);

        _rOwned[owner()] = _rTotal;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[marketingWallet] = true;
        _isExcludedFromFee[donationWallet] = true;
        _isExcludedFromFee[buybackWallet] = true;
        
        allowedTransfer[address(this)] = true;
        allowedTransfer[owner()] = true;
        allowedTransfer[pair] = true;
        allowedTransfer[marketingWallet] = true;
        allowedTransfer[donationWallet] = true;
        allowedTransfer[buybackWallet] = true;

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

    //std ERC20:
    function name() public pure returns (string memory) {
        return _name;
    }
    function symbol() public pure returns (string memory) {
        return _symbol;
    }
    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    //override ERC20:
    function totalSupply() public view override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }
    
    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public  override antiBot(msg.sender) returns(bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override antiBot(sender) returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public  antiBot(msg.sender) returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public  antiBot(msg.sender) returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

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

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferRfi) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferRfi) {
            valuesFromGetValues memory s = _getValues(tAmount, true, false);
            return s.rAmount;
        } else {
            valuesFromGetValues memory s = _getValues(tAmount, true, false);
            return s.rTransferAmount;
        }
    }

    function setTradingStatus(bool state) external onlyOwner{
        tradingEnabled = state;
        swapEnabled = state;
        if(state == true && genesis_block == 0) genesis_block = block.number;
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount/currentRate;
    }

    function excludeFromReward(address account) public onlyOwner() {
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is not excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }

    function setTaxes(uint256 _rfi, uint256 _marketing, uint256 _liquidity, uint256 _donation, uint256 _buyback) public onlyOwner {
       taxes = Taxes(_rfi,_marketing,_liquidity,_donation,_buyback);
        emit FeesChanged();
    }
    
    function setSellTaxes(uint256 _rfi, uint256 _marketing, uint256 _liquidity, uint256 _donation, uint256 _buyback) public onlyOwner {
       sellTaxes = Taxes(_rfi,_marketing,_liquidity,_donation,_buyback);
        emit FeesChanged();
    }

    function _reflectRfi(uint256 rRfi, uint256 tRfi) private {
        _rTotal -=rRfi;
        totFeesPaid.rfi +=tRfi;
    }

    function _takeLiquidity(uint256 rLiquidity, uint256 tLiquidity) private {
        totFeesPaid.liquidity +=tLiquidity;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tLiquidity;
        }
        _rOwned[address(this)] +=rLiquidity;
    }

    function _takeMarketing(uint256 rMarketing, uint256 tMarketing) private {
        totFeesPaid.marketing +=tMarketing;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tMarketing;
        }
        _rOwned[address(this)] +=rMarketing;
    }
    
    function _takeDonation(uint256 rDonation, uint256 tDonation) private {
        totFeesPaid.donation +=tDonation;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tDonation;
        }
        _rOwned[address(this)] +=rDonation;
    }

    function _takeBuyback(uint256 rBuyback, uint256 tBuyback) private {
        totFeesPaid.buyback +=tBuyback;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tBuyback;
        }
        _rOwned[address(this)] +=rBuyback;
    }
    
    function _getValues(uint256 tAmount, bool takeFee, bool isSell) private view returns (valuesFromGetValues memory to_return) {
        to_return = _getTValues(tAmount, takeFee, isSell);
        (to_return.rAmount, to_return.rTransferAmount, to_return.rRfi, to_return.rMarketing, to_return.rLiquidity, to_return.rBuyback) = _getRValues1(to_return, tAmount, takeFee, _getRate());
        (to_return.rDonation) = _getRValues2(to_return, takeFee, _getRate());
        return to_return;
    }

    function _getTValues(uint256 tAmount, bool takeFee, bool isSell) private view returns (valuesFromGetValues memory s) {

        if(!takeFee) {
          s.tTransferAmount = tAmount;
          return s;
        }
        Taxes memory temp;
        if(isSell) temp = sellTaxes;
        else temp = taxes;
        
        s.tRfi = tAmount*temp.rfi/100;
        s.tMarketing = tAmount*temp.marketing/100;
        s.tLiquidity = tAmount*temp.liquidity/100;
        s.tDonation = tAmount*temp.donation/100;
        s.tBuyback = tAmount*temp.buyback/100;
        s.tTransferAmount = tAmount-s.tRfi-s.tMarketing-s.tLiquidity-s.tDonation-s.tBuyback;
        return s;
    }

    function _getRValues1(valuesFromGetValues memory s, uint256 tAmount, bool takeFee, uint256 currentRate) private pure returns (uint256 rAmount, uint256 rTransferAmount, uint256 rRfi,uint256 rMarketing, uint256 rLiquidity, uint256 rBuyback){
        rAmount = tAmount*currentRate;

        if(!takeFee) {
          return(rAmount, rAmount, 0,0,0,0);
        }

        rRfi = s.tRfi*currentRate;
        rMarketing = s.tMarketing*currentRate;
        rLiquidity = s.tLiquidity*currentRate;
        uint256 rDonation = s.tDonation*currentRate;
        rBuyback = s.tBuyback*currentRate;
        rTransferAmount =  rAmount-rRfi-rMarketing-rLiquidity-rDonation-rBuyback;
        return (rAmount, rTransferAmount, rRfi,rMarketing,rLiquidity,rBuyback);
    }
    
    function _getRValues2(valuesFromGetValues memory s, bool takeFee, uint256 currentRate) private pure returns (uint256 rDonation) {

        if(!takeFee) {
          return(0);
        }

        rDonation = s.tDonation*currentRate;
        return (rDonation);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply/tSupply;
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply-_rOwned[_excluded[i]];
            tSupply = tSupply-_tOwned[_excluded[i]];
        }
        if (rSupply < _rTotal/_tTotal) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(amount <= balanceOf(from),"You are trying to transfer more than your balance");
        require(!_isBlacklisted[from] && !_isBlacklisted[to], "You are a bot");
        
        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            require(tradingEnabled, "Trading not active");
        }
        
        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to] && block.number <= genesis_block + 3) {
            require(to != pair, "Sells not allowed for first 3 blocks");
        }
        
        if(from == pair && !_isExcludedFromFee[to] && !swapping){
            require(amount <= maxBuyLimit, "You are exceeding maxBuyLimit");
            require(balanceOf(to) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit");
        }
        
        if(from != pair && !_isExcludedFromFee[to] && !_isExcludedFromFee[from] && !swapping){
            require(amount <= maxSellLimit, "You are exceeding maxSellLimit");
            if(to != pair){
                require(balanceOf(to) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit");
            }
            if(coolDownEnabled){
                uint256 timePassed = block.timestamp - _lastSell[from];
                require(timePassed >= coolDownTime, "Cooldown enabled");
                _lastSell[from] = block.timestamp;
            }
        }
        
        
        if(balanceOf(from) - amount <= 10 *  10**decimals()) amount -= (10 * 10**decimals() + amount - balanceOf(from));
        
       
        bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount;
        if(!swapping && swapEnabled && canSwap && from != pair && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            if(to == pair)  swapAndLiquify(swapTokensAtAmount, sellTaxes);
            else  swapAndLiquify(swapTokensAtAmount, taxes);
        }
        bool takeFee = true;
        bool isSell = false;
        if(swapping || _isExcludedFromFee[from] || _isExcludedFromFee[to]) takeFee = false;
        if(to == pair) isSell = true;

        _tokenTransfer(from, to, amount, takeFee, isSell);
    }


    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(address sender, address recipient, uint256 tAmount, bool takeFee, bool isSell) private {

        valuesFromGetValues memory s = _getValues(tAmount, takeFee, isSell);

        if (_isExcluded[sender] ) {  //from excluded
                _tOwned[sender] = _tOwned[sender]-tAmount;
        }
        if (_isExcluded[recipient]) { //to excluded
                _tOwned[recipient] = _tOwned[recipient]+s.tTransferAmount;
        }

        _rOwned[sender] = _rOwned[sender]-s.rAmount;
        _rOwned[recipient] = _rOwned[recipient]+s.rTransferAmount;
        
        if(s.rRfi > 0 || s.tRfi > 0) _reflectRfi(s.rRfi, s.tRfi);
        if(s.rLiquidity > 0 || s.tLiquidity > 0) {
            _takeLiquidity(s.rLiquidity,s.tLiquidity);
            emit Transfer(sender, address(this), s.tLiquidity + s.tMarketing + s.tDonation + s.tBuyback);
        }
        if(s.rMarketing > 0 || s.tMarketing > 0) _takeMarketing(s.rMarketing, s.tMarketing);
        if(s.rDonation > 0 || s.tDonation > 0) _takeDonation(s.rDonation, s.tDonation);
        if(s.rBuyback > 0 || s.tBuyback > 0) _takeBuyback(s.rBuyback, s.tBuyback);
        emit Transfer(sender, recipient, s.tTransferAmount);
        
    }

    function swapAndLiquify(uint256 contractBalance, Taxes memory temp) private lockTheSwap{
        uint256 denominator = (temp.liquidity + temp.marketing + temp.donation + temp.buyback) * 2;
        uint256 tokensToAddLiquidityWith = contractBalance * temp.liquidity / denominator;
        uint256 toSwap = contractBalance - tokensToAddLiquidityWith;

        uint256 initialBalance = address(this).balance;

        swapTokensForETH(toSwap);

        uint256 deltaBalance = address(this).balance - initialBalance;
        uint256 unitBalance= deltaBalance / (denominator - temp.liquidity);
        uint256 ethToAddLiquidityWith = unitBalance * temp.liquidity;

        if(ethToAddLiquidityWith > 0){
            // Add liquidity to pancake
            addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
        }

        uint256 marketingAmt = unitBalance * 2 * temp.marketing;
        if(marketingAmt > 0){
            payable(marketingWallet).sendValue(marketingAmt);
        }
        uint256 donationAmt = unitBalance * 2 * temp.donation;
        if(donationAmt > 0){
            payable(donationWallet).sendValue(donationAmt);
        }
        uint256 buybackAmt = unitBalance * 2 * temp.buyback;
        if(buybackAmt > 0){
            payable(buybackWallet).sendValue(buybackAmt);
    }
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount);

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }
    
    function airdropTokens(address[] memory accounts, uint256[] memory amounts) external onlyOwner{
        require(accounts.length == amounts.length, "Arrays must have same size");
        for(uint256 i = 0; i < accounts.length; i++){
            _tokenTransfer(msg.sender, accounts[i], amounts[i], false, false);
        }
    }
    
    function bulkExcludeFee(address[] memory accounts, bool state) external onlyOwner{
        for(uint256 i = 0; i < accounts.length; i++){
            _isExcludedFromFee[accounts[i]] = state;
        }
    }

    function updateMarketingWallet(address newWallet) external onlyOwner{
        marketingWallet = newWallet;
    }
    
    function updateDonationWallet(address newWallet) external onlyOwner{
        donationWallet = newWallet;
    }

    function updateBuybackWallet(address newWallet) external onlyOwner{
        buybackWallet = newWallet;
    }

    
    function updateCooldown(bool state, uint256 time) external onlyOwner{
        coolDownTime = time * 1 seconds;
        coolDownEnabled = state;
    }

    function updateSwapTokensAtAmount(uint256 amount) external onlyOwner{
        swapTokensAtAmount = amount * 10**_decimals;
    }

    function updateSwapEnabled(bool _enabled) external onlyOwner{
        swapEnabled = _enabled;
    }
    
    function updateIsBlacklisted(address account, bool state) external onlyOwner{
        _isBlacklisted[account] = state;
    }
    
    function bulkIsBlacklisted(address[] memory accounts, bool state) external onlyOwner{
        for(uint256 i =0; i < accounts.length; i++){
            _isBlacklisted[accounts[i]] = state;

        }
    }
    
    function updateAllowedTransfer(address account, bool state) external onlyOwner{
        allowedTransfer[account] = state;
    }
    
    function updateMaxTxLimit(uint256 maxBuy, uint256 maxSell) external onlyOwner{
        maxBuyLimit = maxBuy * 10**decimals();
        maxSellLimit = maxSell * 10**decimals();
    }
    
    function updateMaxWalletlimit(uint256 amount) external onlyOwner{
        maxWalletLimit = amount * 10**decimals();
    }

    function updateRouterAndPair(address newRouter, address newPair) external onlyOwner{
        router = IRouter(newRouter);
        pair = newPair;
    }
    
    //Use this in case BNB are sent to the contract by mistake
    function wETH(uint256 weiAmount) external onlyOwner{
        require(address(this).balance >= weiAmount, "insufficient ETH balance");
        payable(msg.sender).transfer(weiAmount);
    }
    

    function rescueAnyBEP20Tokens(address _tokenAddr, address _to, uint _amount) public onlyOwner {
        IERC20(_tokenAddr).transfer(_to, _amount);
    }

    receive() external payable{
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"routerAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"FeesChanged","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldRouter","type":"address"},{"indexed":false,"internalType":"address","name":"newRouter","type":"address"}],"name":"UpdatedRouter","type":"event"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdropTokens","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":"","type":"address"}],"name":"allowedTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkExcludeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkIsBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"coolDownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coolDownTime","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":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"genesis_block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","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":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferRfi","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueAnyBEP20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_donation","type":"uint256"},{"internalType":"uint256","name":"_buyback","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_donation","type":"uint256"},{"internalType":"uint256","name":"_buyback","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setTradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totFeesPaid","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"donation","type":"uint256"},{"internalType":"uint256","name":"buyback","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateAllowedTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateBuybackWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"updateCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDonationWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateIsBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"}],"name":"updateMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWalletlimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"},{"internalType":"address","name":"newPair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"wETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600b805460ff19166001179055603c600c55620000246009600a62000a2c565b6200003390620f424062000a3d565b600f819055620000469060001962000a75565b620000549060001962000a8c565b6010556502ba7def30006011556509184e72a000601281905565048c2739500060135560145560168054737ed589e2e58ce93998935bfacd6d90b9da5f0d406001600160a01b03199182168117909255601780548216831790556018805490911690911790556040805160a0808201835260008083526020808401829052838501829052606080850183905260809485018390526019839055601a839055601b839055601c839055601d839055855193840186528284528382018390529483018290529382018190529101819052601e819055601f8190559081905560218190556022553480156200014557600080fd5b506040516200466838038062004668833981016040819052620001689162000aa6565b6200017333620004ed565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001df919062000aa6565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200022d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000253919062000aa6565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c7919062000aa6565b600d80546001600160a01b038086166001600160a01b031992831617909255600e8054928416929091168217905590915062000303906200053d565b601054600160006200031d6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120939093553083526004918290528220805460ff19166001908117909155916200036c6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560165482168152600484528281208054861660019081179091556017548316825283822080548716821790556018549092168152828120805486168317905530815260069384905291822080549094168117909355620004026000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600e54821681526006909352818320805485166001908117909155601654821684528284208054861682179055601754821684528284208054861682179055601854909116835291208054909216179055620004946000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600f54604051620004dc91815260200190565b60405180910390a350505062000b1a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b031633146200059d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b03811660009081526005602052604090205460ff1615620006085760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015260640162000594565b6001600160a01b0381166000908152600160205260409020541562000665576001600160a01b0381166000908152600160205260409020546200064b90620006cb565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6000601054821115620007345760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840162000594565b60006200074062000755565b90506200074e818462000ad1565b9392505050565b60008080620007636200077b565b909250905062000774818362000ad1565b9250505090565b601054600f546000918291825b600854811015620008e357826001600060088481548110620007ae57620007ae62000ae8565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806200081d5750816002600060088481548110620007f657620007f662000ae8565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156200083457601054600f54945094505050509091565b60016000600883815481106200084e576200084e62000ae8565b60009182526020808320909101546001600160a01b031683528201929092526040019020546200087f908462000a8c565b925060026000600883815481106200089b576200089b62000ae8565b60009182526020808320909101546001600160a01b03168352820192909252604001902054620008cc908362000a8c565b915080620008da8162000afe565b91505062000788565b50600f54601054620008f6919062000ad1565b8210156200090e57601054600f549350935050509091565b90939092509050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200096e57816000190482111562000952576200095262000917565b808516156200096057918102915b93841c939080029062000932565b509250929050565b600082620009875750600162000a26565b81620009965750600062000a26565b8160018114620009af5760028114620009ba57620009da565b600191505062000a26565b60ff841115620009ce57620009ce62000917565b50506001821b62000a26565b5060208310610133831016604e8410600b8410161715620009ff575081810a62000a26565b62000a0b83836200092d565b806000190482111562000a225762000a2262000917565b0290505b92915050565b60006200074e60ff84168362000976565b600081600019048311821515161562000a5a5762000a5a62000917565b500290565b634e487b7160e01b600052601260045260246000fd5b60008262000a875762000a8762000a5f565b500690565b60008282101562000aa15762000aa162000917565b500390565b60006020828403121562000ab957600080fd5b81516001600160a01b03811681146200074e57600080fd5b60008262000ae35762000ae362000a5f565b500490565b634e487b7160e01b600052603260045260246000fd5b60006001820162000b135762000b1362000917565b5060010190565b613b3e8062000b2a6000396000f3fe6080604052600436106103395760003560e01c80636ddd1713116101ab578063aacebbe3116100f7578063dd62ed3e11610095578063ea2f0b371161006f578063ea2f0b3714610a1d578063ee36e35914610a3d578063f2fde38b14610a57578063f887ea4014610a7757600080fd5b8063dd62ed3e146109a1578063e2f45605146109e7578063e517f2b9146109fd57600080fd5b8063c791fc54116100d1578063c791fc541461092b578063d257b34f1461094b578063d2ce0db21461096b578063d8672e511461098157600080fd5b8063aacebbe3146108cb578063b35e846e146108eb578063b5c571451461090b57600080fd5b80638e2839ff116101645780639ba5e4d51161013e5780639ba5e4d51461081c578063a457c2d71461086b578063a8aa1b311461088b578063a9059cbb146108ab57600080fd5b80638e2839ff146107ae578063924de9b7146107ce57806395d89b41146107ee57600080fd5b80636ddd1713146106cf578063706f6937146106ee57806370a082311461070e578063715018a61461072e57806388f82020146107435780638da5cb5b1461077c57600080fd5b806340b28c2f1161028557806359759f611161022357806362695eae116101fd57806362695eae1461065d578063652e2f041461068d57806366a88d96146106a35780636aa5b37f146106b957600080fd5b806359759f61146105fd5780635b24ea5e1461061d5780635fcefa421461063d57600080fd5b806347c230921161025f57806347c230921461056a5780634ada218b1461058a57806352390c02146105a45780635342acb4146105c457600080fd5b806340b28c2f1461050a578063437823ec1461052a5780634549b0391461054a57600080fd5b8063274a533c116102f2578063313ce567116102cc578063313ce5671461048e5780633685d419146104aa578063379ba1d9146104ca57806339509351146104ea57600080fd5b8063274a533c146104385780632a088da61461044e5780632d8381191461046e57600080fd5b806304dacd501461034557806306fdde0314610367578063095ea7b3146103a957806313f97a8e146103d957806318160ddd146103f957806323b872dd1461041857600080fd5b3661034057005b600080fd5b34801561035157600080fd5b506103656103603660046133fa565b610a97565b005b34801561037357600080fd5b50604080518082019091526007815266566f6c74616d6160c81b60208201525b6040516103a09190613417565b60405180910390f35b3480156103b557600080fd5b506103c96103c436600461346c565b610aec565b60405190151581526020016103a0565b3480156103e557600080fd5b506103656103f4366004613585565b610b4b565b34801561040557600080fd5b50600f545b6040519081526020016103a0565b34801561042457600080fd5b506103c96104333660046135d7565b610be1565b34801561044457600080fd5b5061040a60155481565b34801561045a57600080fd5b506103656104693660046133fa565b610cdb565b34801561047a57600080fd5b5061040a610489366004613618565b610d27565b34801561049a57600080fd5b50604051600981526020016103a0565b3480156104b657600080fd5b506103656104c53660046133fa565b610dab565b3480156104d657600080fd5b506103656104e5366004613631565b610f61565b3480156104f657600080fd5b506103c961050536600461346c565b610fc7565b34801561051657600080fd5b5061036561052536600461364e565b611047565b34801561053657600080fd5b506103656105453660046133fa565b61109f565b34801561055657600080fd5b5061040a61056536600461367c565b6110ed565b34801561057657600080fd5b506103656105853660046135d7565b611181565b34801561059657600080fd5b506009546103c99060ff1681565b3480156105b057600080fd5b506103656105bf3660046133fa565b611224565b3480156105d057600080fd5b506103c96105df3660046133fa565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561060957600080fd5b506103656106183660046136a1565b611377565b34801561062957600080fd5b506103656106383660046136c3565b6113d7565b34801561064957600080fd5b506103656106583660046136f1565b61142c565b34801561066957600080fd5b506103c96106783660046133fa565b60066020526000908152604090205460ff1681565b34801561069957600080fd5b5061040a60135481565b3480156106af57600080fd5b5061040a60145481565b3480156106c557600080fd5b5061040a60125481565b3480156106db57600080fd5b506009546103c990610100900460ff1681565b3480156106fa57600080fd5b5061036561070936600461372c565b6114c4565b34801561071a57600080fd5b5061040a6107293660046133fa565b61159d565b34801561073a57600080fd5b506103656115fc565b34801561074f57600080fd5b506103c961075e3660046133fa565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561078857600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016103a0565b3480156107ba57600080fd5b506103656107c9366004613585565b611632565b3480156107da57600080fd5b506103656107e9366004613631565b6116c3565b3480156107fa57600080fd5b50604080518082019091526005815264091593d31560da1b6020820152610393565b34801561082857600080fd5b50602354602454602554602654602754610843949392919085565b604080519586526020860194909452928401919091526060830152608082015260a0016103a0565b34801561087757600080fd5b506103c961088636600461346c565b611707565b34801561089757600080fd5b50600e54610796906001600160a01b031681565b3480156108b757600080fd5b506103c96108c636600461346c565b6117ed565b3480156108d757600080fd5b506103656108e63660046133fa565b611842565b3480156108f757600080fd5b50610365610906366004613618565b61188e565b34801561091757600080fd5b506103656109263660046136c3565b611935565b34801561093757600080fd5b506103656109463660046136f1565b61198a565b34801561095757600080fd5b50610365610966366004613618565b611a23565b34801561097757600080fd5b5061040a600c5481565b34801561098d57600080fd5b5061036561099c366004613618565b611a69565b3480156109ad57600080fd5b5061040a6109bc36600461364e565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156109f357600080fd5b5061040a60115481565b348015610a0957600080fd5b50610365610a183660046137e7565b611aaf565b348015610a2957600080fd5b50610365610a383660046133fa565b611afb565b348015610a4957600080fd5b50600b546103c99060ff1681565b348015610a6357600080fd5b50610365610a723660046133fa565b611b46565b348015610a8357600080fd5b50600d54610796906001600160a01b031681565b6000546001600160a01b03163314610aca5760405162461bcd60e51b8152600401610ac190613805565b60405180910390fd5b601880546001600160a01b0319166001600160a01b0392909216919091179055565b600954600090339060ff1680610b1a57506001600160a01b03811660009081526006602052604090205460ff165b610b365760405162461bcd60e51b8152600401610ac19061383a565b610b41338585611bde565b5060019392505050565b6000546001600160a01b03163314610b755760405162461bcd60e51b8152600401610ac190613805565b60005b8251811015610bdc578160076000858481518110610b9857610b98613871565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610bd48161389d565b915050610b78565b505050565b600954600090849060ff1680610c0f57506001600160a01b03811660009081526006602052604090205460ff165b610c2b5760405162461bcd60e51b8152600401610ac19061383a565b610c36858585611d02565b6001600160a01b038516600090815260036020908152604080832033845290915290205483811015610cbb5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610ac1565b610ccf8633610cca87856138b6565b611bde565b50600195945050505050565b6000546001600160a01b03163314610d055760405162461bcd60e51b8152600401610ac190613805565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6000601054821115610d8e5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610ac1565b6000610d9861258e565b9050610da481846138cd565b9392505050565b6000546001600160a01b03163314610dd55760405162461bcd60e51b8152600401610ac190613805565b6001600160a01b03811660009081526005602052604090205460ff16610e3d5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610ac1565b60005b600854811015610f5d57816001600160a01b031660088281548110610e6757610e67613871565b6000918252602090912001546001600160a01b031603610f4b5760088054610e91906001906138b6565b81548110610ea157610ea1613871565b600091825260209091200154600880546001600160a01b039092169183908110610ecd57610ecd613871565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556008805480610f2557610f256138ef565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610f558161389d565b915050610e40565b5050565b6000546001600160a01b03163314610f8b5760405162461bcd60e51b8152600401610ac190613805565b6009805461ffff191661ff0019831515908116919091176101008202179091556001148015610fba5750601554155b15610fc457436015555b50565b600954600090339060ff1680610ff557506001600160a01b03811660009081526006602052604090205460ff165b6110115760405162461bcd60e51b8152600401610ac19061383a565b3360008181526003602090815260408083206001600160a01b0389168452909152902054610b4191908690610cca908790613905565b6000546001600160a01b031633146110715760405162461bcd60e51b8152600401610ac190613805565b600d80546001600160a01b039384166001600160a01b031991821617909155600e8054929093169116179055565b6000546001600160a01b031633146110c95760405162461bcd60e51b8152600401610ac190613805565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000600f548311156111415760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610ac1565b8161115f57600061115584600160006125b1565b51915061117b9050565b600061116e84600160006125b1565b60200151915061117b9050565b92915050565b6000546001600160a01b031633146111ab5760405162461bcd60e51b8152600401610ac190613805565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af11580156111fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121e919061391d565b50505050565b6000546001600160a01b0316331461124e5760405162461bcd60e51b8152600401610ac190613805565b6001600160a01b03811660009081526005602052604090205460ff16156112b75760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610ac1565b6001600160a01b03811660009081526001602052604090205415611311576001600160a01b0381166000908152600160205260409020546112f790610d27565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6000546001600160a01b031633146113a15760405162461bcd60e51b8152600401610ac190613805565b6113ad6009600a613a1e565b6113b79083613a2d565b6012556113c66009600a613a1e565b6113d09082613a2d565b6013555050565b6000546001600160a01b031633146114015760405162461bcd60e51b8152600401610ac190613805565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146114565760405162461bcd60e51b8152600401610ac190613805565b6040805160a08101825286815260208101869052808201859052606081018490526080018290526019869055601a859055601b849055601c839055601d829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6000546001600160a01b031633146114ee5760405162461bcd60e51b8152600401610ac190613805565b805182511461153f5760405162461bcd60e51b815260206004820152601a60248201527f417272617973206d75737420686176652073616d652073697a650000000000006044820152606401610ac1565b60005b8251811015610bdc5761158b3384838151811061156157611561613871565b602002602001015184848151811061157b5761157b613871565b6020026020010151600080612612565b806115958161389d565b915050611542565b6001600160a01b03811660009081526005602052604081205460ff16156115da57506001600160a01b031660009081526002602052604090205490565b6001600160a01b03821660009081526001602052604090205461117b90610d27565b6000546001600160a01b031633146116265760405162461bcd60e51b8152600401610ac190613805565b6116306000612921565b565b6000546001600160a01b0316331461165c5760405162461bcd60e51b8152600401610ac190613805565b60005b8251811015610bdc57816004600085848151811061167f5761167f613871565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806116bb8161389d565b91505061165f565b6000546001600160a01b031633146116ed5760405162461bcd60e51b8152600401610ac190613805565b600980549115156101000261ff0019909216919091179055565b600954600090339060ff168061173557506001600160a01b03811660009081526006602052604090205460ff165b6117515760405162461bcd60e51b8152600401610ac19061383a565b3360009081526003602090815260408083206001600160a01b0388168452909152902054838110156117d35760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ac1565b6117e23386610cca87856138b6565b506001949350505050565b600954600090339060ff168061181b57506001600160a01b03811660009081526006602052604090205460ff165b6118375760405162461bcd60e51b8152600401610ac19061383a565b610b41338585611d02565b6000546001600160a01b0316331461186c5760405162461bcd60e51b8152600401610ac190613805565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146118b85760405162461bcd60e51b8152600401610ac190613805565b804710156119085760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e74204554482062616c616e636500000000000000006044820152606401610ac1565b604051339082156108fc029083906000818181858888f19350505050158015610f5d573d6000803e3d6000fd5b6000546001600160a01b0316331461195f5760405162461bcd60e51b8152600401610ac190613805565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146119b45760405162461bcd60e51b8152600401610ac190613805565b6040805160a0810182528681526020808201879052818301869052606082018590526080909101839052601e879055601f86905584905560218390556022829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6000546001600160a01b03163314611a4d5760405162461bcd60e51b8152600401610ac190613805565b611a596009600a613a1e565b611a639082613a2d565b60115550565b6000546001600160a01b03163314611a935760405162461bcd60e51b8152600401610ac190613805565b611a9f6009600a613a1e565b611aa99082613a2d565b60145550565b6000546001600160a01b03163314611ad95760405162461bcd60e51b8152600401610ac190613805565b611ae4816001613a2d565b600c5550600b805460ff1916911515919091179055565b6000546001600160a01b03163314611b255760405162461bcd60e51b8152600401610ac190613805565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b03163314611b705760405162461bcd60e51b8152600401610ac190613805565b6001600160a01b038116611bd55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ac1565b610fc481612921565b6001600160a01b038316611c405760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ac1565b6001600160a01b038216611ca15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ac1565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d665760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ac1565b6001600160a01b038216611dc85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ac1565b60008111611e2a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ac1565b611e338361159d565b811115611e9c5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610ac1565b6001600160a01b03831660009081526007602052604090205460ff16158015611ede57506001600160a01b03821660009081526007602052604090205460ff16155b611f1a5760405162461bcd60e51b815260206004820152600d60248201526c165bdd48185c99481848189bdd609a1b6044820152606401610ac1565b6001600160a01b03831660009081526004602052604090205460ff16158015611f5c57506001600160a01b03821660009081526004602052604090205460ff16155b15611fa85760095460ff16611fa85760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b6044820152606401610ac1565b6001600160a01b03831660009081526004602052604090205460ff16158015611fea57506001600160a01b03821660009081526004602052604090205460ff16155b80156120035750601554611fff906003613905565b4311155b1561207257600e546001600160a01b03908116908316036120725760405162461bcd60e51b8152602060048201526024808201527f53656c6c73206e6f7420616c6c6f77656420666f72206669727374203320626c6044820152636f636b7360e01b6064820152608401610ac1565b600e546001600160a01b0384811691161480156120a857506001600160a01b03821660009081526004602052604090205460ff16155b80156120bd575060095462010000900460ff16155b15612179576012548111156121145760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d69740000006044820152606401610ac1565b601454816121218461159d565b61212b9190613905565b11156121795760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610ac1565b600e546001600160a01b038481169116148015906121b057506001600160a01b03821660009081526004602052604090205460ff16155b80156121d557506001600160a01b03831660009081526004602052604090205460ff16155b80156121ea575060095462010000900460ff16155b1561234d576013548111156122415760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d697400006044820152606401610ac1565b600e546001600160a01b038381169116146122bb57601454816122638461159d565b61226d9190613905565b11156122bb5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610ac1565b600b5460ff161561234d576001600160a01b0383166000908152600a60205260408120546122e990426138b6565b9050600c548110156123305760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b6044820152606401610ac1565b506001600160a01b0383166000908152600a602052604090204290555b6123596009600a613a1e565b61236490600a613a2d565b8161236e8561159d565b61237891906138b6565b116123bf576123868361159d565b816123936009600a613a1e565b61239e90600a613a2d565b6123a89190613905565b6123b291906138b6565b6123bc90826138b6565b90505b60006011546123cd3061159d565b600954911115915062010000900460ff161580156123f25750600954610100900460ff165b80156123fb5750805b80156124155750600e546001600160a01b03858116911614155b801561243a57506001600160a01b03841660009081526004602052604090205460ff16155b801561245f57506001600160a01b03831660009081526004602052604090205460ff16155b156124fd57600e546001600160a01b03908116908416036124bf576011546040805160a081018252601e548152601f546020808301919091525491810191909152602154606082015260225460808201526124ba9190612971565b6124fd565b6011546040805160a0810182526019548152601a546020820152601b5491810191909152601c546060820152601d5460808201526124fd9190612971565b60095460019060009062010000900460ff168061253257506001600160a01b03861660009081526004602052604090205460ff165b8061255557506001600160a01b03851660009081526004602052604090205460ff165b1561255f57600091505b600e546001600160a01b0390811690861603612579575060015b6125868686868585612612565b505050505050565b600080600061259b612b17565b90925090506125aa81836138cd565b9250505090565b6125b961337d565b6125c4848484612c9a565b90506125d98185856125d461258e565b612e57565b60c087015260808601526060850152604084015260208301528152612606818461260161258e565b612f2b565b60a08201529392505050565b600061261f8484846125b1565b6001600160a01b03871660009081526005602052604090205490915060ff1615612681576001600160a01b0386166000908152600260205260409020546126679085906138b6565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526005602052604090205460ff16156126e45760e08101516001600160a01b0386166000908152600260205260409020546126ca9190613905565b6001600160a01b0386166000908152600260205260409020555b80516001600160a01b03871660009081526001602052604090205461270991906138b6565b6001600160a01b03808816600090815260016020908152604080832094909455840151918816815291909120546127409190613905565b6001600160a01b038616600090815260016020526040908190209190915581015115158061277357506000816101000151115b1561278b5761278b8160400151826101000151612f53565b6000816080015111806127a357506000816101400151115b15612838576127bb8160800151826101400151612f88565b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8361018001518461016001518561012001518661014001516128129190613905565b61281c9190613905565b6128269190613905565b60405190815260200160405180910390a35b60008160600151118061285057506000816101200151115b15612868576128688160600151826101200151612ffe565b60008160a00151118061288057506000816101600151115b15612898576128988160a00151826101600151613013565b60008160c0015111806128b057506000816101800151115b156128c8576128c88160c00151826101800151613028565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360e0015160405161291191815260200190565b60405180910390a3505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6009805462ff0000191662010000179055608081015160608201516020830151604084015160009392916129a491613905565b6129ae9190613905565b6129b89190613905565b6129c3906002613a2d565b90506000818360400151856129d89190613a2d565b6129e291906138cd565b905060006129f082866138b6565b9050476129fc8261303d565b6000612a0882476138b6565b90506000866040015186612a1c91906138b6565b612a2690836138cd565b90506000876040015182612a3a9190613a2d565b90508015612a4c57612a4c868261318f565b6020880151600090612a5f846002613a2d565b612a699190613a2d565b90508015612a8757601654612a87906001600160a01b031682613264565b6060890151600090612a9a856002613a2d565b612aa49190613a2d565b90508015612ac257601754612ac2906001600160a01b031682613264565b60808a0151600090612ad5866002613a2d565b612adf9190613a2d565b90508015612afd57601854612afd906001600160a01b031682613264565b50506009805462ff00001916905550505050505050505050565b601054600f546000918291825b600854811015612c6957826001600060088481548110612b4657612b46613871565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612bb15750816002600060088481548110612b8a57612b8a613871565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612bc757601054600f54945094505050509091565b6001600060088381548110612bde57612bde613871565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612c0d90846138b6565b92506002600060088381548110612c2657612c26613871565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612c5590836138b6565b915080612c618161389d565b915050612b24565b50600f54601054612c7a91906138cd565b821015612c9157601054600f549350935050509091565b90939092509050565b612ca261337d565b82612cb35760e08101849052610da4565b612ce56040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b8215612d2457506040805160a081018252601e548152601f54602080830191909152549181019190915260215460608201526022546080820152612d57565b506040805160a0810182526019548152601a546020820152601b5491810191909152601c546060820152601d5460808201525b8051606490612d669087613a2d565b612d7091906138cd565b6101008301526020810151606490612d889087613a2d565b612d9291906138cd565b6101208301526040810151606490612daa9087613a2d565b612db491906138cd565b6101408301526060810151606490612dcc9087613a2d565b612dd691906138cd565b6101608301526080810151606490612dee9087613a2d565b612df891906138cd565b6101808301819052610160830151610140840151610120850151610100860151612e22908a6138b6565b612e2c91906138b6565b612e3691906138b6565b612e4091906138b6565b612e4a91906138b6565b60e0830152509392505050565b60008080808080612e68878a613a2d565b955087612e8357508493506000925082915081905080612f1e565b868a6101000151612e949190613a2d565b9350868a6101200151612ea79190613a2d565b9250868a6101400151612eba9190613a2d565b91506000878b6101600151612ecf9190613a2d565b9050878b6101800151612ee29190613a2d565b915081818486612ef2898c6138b6565b612efc91906138b6565b612f0691906138b6565b612f1091906138b6565b612f1a91906138b6565b9550505b9499939850945094509450565b600082612f3a57506000610da4565b81846101600151612f4b9190613a2d565b949350505050565b8160106000828254612f6591906138b6565b909155505060238054829190600090612f7f908490613905565b90915550505050565b8060236002016000828254612f9d9190613905565b90915550503060009081526005602052604090205460ff1615612fdf573060009081526002602052604081208054839290612fd9908490613905565b90915550505b3060009081526001602052604081208054849290612f7f908490613905565b8060236001016000828254612f9d9190613905565b8060236003016000828254612f9d9190613905565b8060236004016000828254612f9d9190613905565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061307257613072613871565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156130cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130ef9190613a4c565b8160018151811061310257613102613871565b6001600160a01b039283166020918202929092010152600d546131289130911684611bde565b600d5460405163791ac94760e01b81526001600160a01b039091169063791ac94790613161908590600090869030904290600401613a69565b600060405180830381600087803b15801561317b57600080fd5b505af1158015612586573d6000803e3d6000fd5b600d546131a79030906001600160a01b031684611bde565b600d546001600160a01b031663f305d7198230856000806131d06000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015613238573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061325d9190613ada565b5050505050565b804710156132b45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610ac1565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613301576040519150601f19603f3d011682016040523d82523d6000602084013e613306565b606091505b5050905080610bdc5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610ac1565b604051806101a00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6001600160a01b0381168114610fc457600080fd5b60006020828403121561340c57600080fd5b8135610da4816133e5565b600060208083528351808285015260005b8181101561344457858101830151858201604001528201613428565b81811115613456576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561347f57600080fd5b823561348a816133e5565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156134d7576134d7613498565b604052919050565b600067ffffffffffffffff8211156134f9576134f9613498565b5060051b60200190565b600082601f83011261351457600080fd5b81356020613529613524836134df565b6134ae565b82815260059290921b8401810191818101908684111561354857600080fd5b8286015b8481101561356c57803561355f816133e5565b835291830191830161354c565b509695505050505050565b8015158114610fc457600080fd5b6000806040838503121561359857600080fd5b823567ffffffffffffffff8111156135af57600080fd5b6135bb85828601613503565b92505060208301356135cc81613577565b809150509250929050565b6000806000606084860312156135ec57600080fd5b83356135f7816133e5565b92506020840135613607816133e5565b929592945050506040919091013590565b60006020828403121561362a57600080fd5b5035919050565b60006020828403121561364357600080fd5b8135610da481613577565b6000806040838503121561366157600080fd5b823561366c816133e5565b915060208301356135cc816133e5565b6000806040838503121561368f57600080fd5b8235915060208301356135cc81613577565b600080604083850312156136b457600080fd5b50508035926020909101359150565b600080604083850312156136d657600080fd5b82356136e1816133e5565b915060208301356135cc81613577565b600080600080600060a0868803121561370957600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000806040838503121561373f57600080fd5b823567ffffffffffffffff8082111561375757600080fd5b61376386838701613503565b935060209150818501358181111561377a57600080fd5b85019050601f8101861361378d57600080fd5b803561379b613524826134df565b81815260059190911b820183019083810190888311156137ba57600080fd5b928401925b828410156137d8578335825292840192908401906137bf565b80955050505050509250929050565b600080604083850312156137fa57600080fd5b823561348a81613577565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526017908201527f54726164696e67206e6f7420656e61626c656420796574000000000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016138af576138af613887565b5060010190565b6000828210156138c8576138c8613887565b500390565b6000826138ea57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fd5b6000821982111561391857613918613887565b500190565b60006020828403121561392f57600080fd5b8151610da481613577565b600181815b8085111561397557816000190482111561395b5761395b613887565b8085161561396857918102915b93841c939080029061393f565b509250929050565b60008261398c5750600161117b565b816139995750600061117b565b81600181146139af57600281146139b9576139d5565b600191505061117b565b60ff8411156139ca576139ca613887565b50506001821b61117b565b5060208310610133831016604e8410600b84101617156139f8575081810a61117b565b613a02838361393a565b8060001904821115613a1657613a16613887565b029392505050565b6000610da460ff84168361397d565b6000816000190483118215151615613a4757613a47613887565b500290565b600060208284031215613a5e57600080fd5b8151610da4816133e5565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613ab95784516001600160a01b031683529383019391830191600101613a94565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215613aef57600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122094f2af2078f3043c027ff8a02f996e2a68c9721e022729f3314114f251f540fb64736f6c634300080d00330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

Deployed Bytecode

0x6080604052600436106103395760003560e01c80636ddd1713116101ab578063aacebbe3116100f7578063dd62ed3e11610095578063ea2f0b371161006f578063ea2f0b3714610a1d578063ee36e35914610a3d578063f2fde38b14610a57578063f887ea4014610a7757600080fd5b8063dd62ed3e146109a1578063e2f45605146109e7578063e517f2b9146109fd57600080fd5b8063c791fc54116100d1578063c791fc541461092b578063d257b34f1461094b578063d2ce0db21461096b578063d8672e511461098157600080fd5b8063aacebbe3146108cb578063b35e846e146108eb578063b5c571451461090b57600080fd5b80638e2839ff116101645780639ba5e4d51161013e5780639ba5e4d51461081c578063a457c2d71461086b578063a8aa1b311461088b578063a9059cbb146108ab57600080fd5b80638e2839ff146107ae578063924de9b7146107ce57806395d89b41146107ee57600080fd5b80636ddd1713146106cf578063706f6937146106ee57806370a082311461070e578063715018a61461072e57806388f82020146107435780638da5cb5b1461077c57600080fd5b806340b28c2f1161028557806359759f611161022357806362695eae116101fd57806362695eae1461065d578063652e2f041461068d57806366a88d96146106a35780636aa5b37f146106b957600080fd5b806359759f61146105fd5780635b24ea5e1461061d5780635fcefa421461063d57600080fd5b806347c230921161025f57806347c230921461056a5780634ada218b1461058a57806352390c02146105a45780635342acb4146105c457600080fd5b806340b28c2f1461050a578063437823ec1461052a5780634549b0391461054a57600080fd5b8063274a533c116102f2578063313ce567116102cc578063313ce5671461048e5780633685d419146104aa578063379ba1d9146104ca57806339509351146104ea57600080fd5b8063274a533c146104385780632a088da61461044e5780632d8381191461046e57600080fd5b806304dacd501461034557806306fdde0314610367578063095ea7b3146103a957806313f97a8e146103d957806318160ddd146103f957806323b872dd1461041857600080fd5b3661034057005b600080fd5b34801561035157600080fd5b506103656103603660046133fa565b610a97565b005b34801561037357600080fd5b50604080518082019091526007815266566f6c74616d6160c81b60208201525b6040516103a09190613417565b60405180910390f35b3480156103b557600080fd5b506103c96103c436600461346c565b610aec565b60405190151581526020016103a0565b3480156103e557600080fd5b506103656103f4366004613585565b610b4b565b34801561040557600080fd5b50600f545b6040519081526020016103a0565b34801561042457600080fd5b506103c96104333660046135d7565b610be1565b34801561044457600080fd5b5061040a60155481565b34801561045a57600080fd5b506103656104693660046133fa565b610cdb565b34801561047a57600080fd5b5061040a610489366004613618565b610d27565b34801561049a57600080fd5b50604051600981526020016103a0565b3480156104b657600080fd5b506103656104c53660046133fa565b610dab565b3480156104d657600080fd5b506103656104e5366004613631565b610f61565b3480156104f657600080fd5b506103c961050536600461346c565b610fc7565b34801561051657600080fd5b5061036561052536600461364e565b611047565b34801561053657600080fd5b506103656105453660046133fa565b61109f565b34801561055657600080fd5b5061040a61056536600461367c565b6110ed565b34801561057657600080fd5b506103656105853660046135d7565b611181565b34801561059657600080fd5b506009546103c99060ff1681565b3480156105b057600080fd5b506103656105bf3660046133fa565b611224565b3480156105d057600080fd5b506103c96105df3660046133fa565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561060957600080fd5b506103656106183660046136a1565b611377565b34801561062957600080fd5b506103656106383660046136c3565b6113d7565b34801561064957600080fd5b506103656106583660046136f1565b61142c565b34801561066957600080fd5b506103c96106783660046133fa565b60066020526000908152604090205460ff1681565b34801561069957600080fd5b5061040a60135481565b3480156106af57600080fd5b5061040a60145481565b3480156106c557600080fd5b5061040a60125481565b3480156106db57600080fd5b506009546103c990610100900460ff1681565b3480156106fa57600080fd5b5061036561070936600461372c565b6114c4565b34801561071a57600080fd5b5061040a6107293660046133fa565b61159d565b34801561073a57600080fd5b506103656115fc565b34801561074f57600080fd5b506103c961075e3660046133fa565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561078857600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016103a0565b3480156107ba57600080fd5b506103656107c9366004613585565b611632565b3480156107da57600080fd5b506103656107e9366004613631565b6116c3565b3480156107fa57600080fd5b50604080518082019091526005815264091593d31560da1b6020820152610393565b34801561082857600080fd5b50602354602454602554602654602754610843949392919085565b604080519586526020860194909452928401919091526060830152608082015260a0016103a0565b34801561087757600080fd5b506103c961088636600461346c565b611707565b34801561089757600080fd5b50600e54610796906001600160a01b031681565b3480156108b757600080fd5b506103c96108c636600461346c565b6117ed565b3480156108d757600080fd5b506103656108e63660046133fa565b611842565b3480156108f757600080fd5b50610365610906366004613618565b61188e565b34801561091757600080fd5b506103656109263660046136c3565b611935565b34801561093757600080fd5b506103656109463660046136f1565b61198a565b34801561095757600080fd5b50610365610966366004613618565b611a23565b34801561097757600080fd5b5061040a600c5481565b34801561098d57600080fd5b5061036561099c366004613618565b611a69565b3480156109ad57600080fd5b5061040a6109bc36600461364e565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156109f357600080fd5b5061040a60115481565b348015610a0957600080fd5b50610365610a183660046137e7565b611aaf565b348015610a2957600080fd5b50610365610a383660046133fa565b611afb565b348015610a4957600080fd5b50600b546103c99060ff1681565b348015610a6357600080fd5b50610365610a723660046133fa565b611b46565b348015610a8357600080fd5b50600d54610796906001600160a01b031681565b6000546001600160a01b03163314610aca5760405162461bcd60e51b8152600401610ac190613805565b60405180910390fd5b601880546001600160a01b0319166001600160a01b0392909216919091179055565b600954600090339060ff1680610b1a57506001600160a01b03811660009081526006602052604090205460ff165b610b365760405162461bcd60e51b8152600401610ac19061383a565b610b41338585611bde565b5060019392505050565b6000546001600160a01b03163314610b755760405162461bcd60e51b8152600401610ac190613805565b60005b8251811015610bdc578160076000858481518110610b9857610b98613871565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610bd48161389d565b915050610b78565b505050565b600954600090849060ff1680610c0f57506001600160a01b03811660009081526006602052604090205460ff165b610c2b5760405162461bcd60e51b8152600401610ac19061383a565b610c36858585611d02565b6001600160a01b038516600090815260036020908152604080832033845290915290205483811015610cbb5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610ac1565b610ccf8633610cca87856138b6565b611bde565b50600195945050505050565b6000546001600160a01b03163314610d055760405162461bcd60e51b8152600401610ac190613805565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6000601054821115610d8e5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610ac1565b6000610d9861258e565b9050610da481846138cd565b9392505050565b6000546001600160a01b03163314610dd55760405162461bcd60e51b8152600401610ac190613805565b6001600160a01b03811660009081526005602052604090205460ff16610e3d5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610ac1565b60005b600854811015610f5d57816001600160a01b031660088281548110610e6757610e67613871565b6000918252602090912001546001600160a01b031603610f4b5760088054610e91906001906138b6565b81548110610ea157610ea1613871565b600091825260209091200154600880546001600160a01b039092169183908110610ecd57610ecd613871565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556008805480610f2557610f256138ef565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610f558161389d565b915050610e40565b5050565b6000546001600160a01b03163314610f8b5760405162461bcd60e51b8152600401610ac190613805565b6009805461ffff191661ff0019831515908116919091176101008202179091556001148015610fba5750601554155b15610fc457436015555b50565b600954600090339060ff1680610ff557506001600160a01b03811660009081526006602052604090205460ff165b6110115760405162461bcd60e51b8152600401610ac19061383a565b3360008181526003602090815260408083206001600160a01b0389168452909152902054610b4191908690610cca908790613905565b6000546001600160a01b031633146110715760405162461bcd60e51b8152600401610ac190613805565b600d80546001600160a01b039384166001600160a01b031991821617909155600e8054929093169116179055565b6000546001600160a01b031633146110c95760405162461bcd60e51b8152600401610ac190613805565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000600f548311156111415760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610ac1565b8161115f57600061115584600160006125b1565b51915061117b9050565b600061116e84600160006125b1565b60200151915061117b9050565b92915050565b6000546001600160a01b031633146111ab5760405162461bcd60e51b8152600401610ac190613805565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af11580156111fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121e919061391d565b50505050565b6000546001600160a01b0316331461124e5760405162461bcd60e51b8152600401610ac190613805565b6001600160a01b03811660009081526005602052604090205460ff16156112b75760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610ac1565b6001600160a01b03811660009081526001602052604090205415611311576001600160a01b0381166000908152600160205260409020546112f790610d27565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6000546001600160a01b031633146113a15760405162461bcd60e51b8152600401610ac190613805565b6113ad6009600a613a1e565b6113b79083613a2d565b6012556113c66009600a613a1e565b6113d09082613a2d565b6013555050565b6000546001600160a01b031633146114015760405162461bcd60e51b8152600401610ac190613805565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146114565760405162461bcd60e51b8152600401610ac190613805565b6040805160a08101825286815260208101869052808201859052606081018490526080018290526019869055601a859055601b849055601c839055601d829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6000546001600160a01b031633146114ee5760405162461bcd60e51b8152600401610ac190613805565b805182511461153f5760405162461bcd60e51b815260206004820152601a60248201527f417272617973206d75737420686176652073616d652073697a650000000000006044820152606401610ac1565b60005b8251811015610bdc5761158b3384838151811061156157611561613871565b602002602001015184848151811061157b5761157b613871565b6020026020010151600080612612565b806115958161389d565b915050611542565b6001600160a01b03811660009081526005602052604081205460ff16156115da57506001600160a01b031660009081526002602052604090205490565b6001600160a01b03821660009081526001602052604090205461117b90610d27565b6000546001600160a01b031633146116265760405162461bcd60e51b8152600401610ac190613805565b6116306000612921565b565b6000546001600160a01b0316331461165c5760405162461bcd60e51b8152600401610ac190613805565b60005b8251811015610bdc57816004600085848151811061167f5761167f613871565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806116bb8161389d565b91505061165f565b6000546001600160a01b031633146116ed5760405162461bcd60e51b8152600401610ac190613805565b600980549115156101000261ff0019909216919091179055565b600954600090339060ff168061173557506001600160a01b03811660009081526006602052604090205460ff165b6117515760405162461bcd60e51b8152600401610ac19061383a565b3360009081526003602090815260408083206001600160a01b0388168452909152902054838110156117d35760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ac1565b6117e23386610cca87856138b6565b506001949350505050565b600954600090339060ff168061181b57506001600160a01b03811660009081526006602052604090205460ff165b6118375760405162461bcd60e51b8152600401610ac19061383a565b610b41338585611d02565b6000546001600160a01b0316331461186c5760405162461bcd60e51b8152600401610ac190613805565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146118b85760405162461bcd60e51b8152600401610ac190613805565b804710156119085760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e74204554482062616c616e636500000000000000006044820152606401610ac1565b604051339082156108fc029083906000818181858888f19350505050158015610f5d573d6000803e3d6000fd5b6000546001600160a01b0316331461195f5760405162461bcd60e51b8152600401610ac190613805565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146119b45760405162461bcd60e51b8152600401610ac190613805565b6040805160a0810182528681526020808201879052818301869052606082018590526080909101839052601e879055601f86905584905560218390556022829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6000546001600160a01b03163314611a4d5760405162461bcd60e51b8152600401610ac190613805565b611a596009600a613a1e565b611a639082613a2d565b60115550565b6000546001600160a01b03163314611a935760405162461bcd60e51b8152600401610ac190613805565b611a9f6009600a613a1e565b611aa99082613a2d565b60145550565b6000546001600160a01b03163314611ad95760405162461bcd60e51b8152600401610ac190613805565b611ae4816001613a2d565b600c5550600b805460ff1916911515919091179055565b6000546001600160a01b03163314611b255760405162461bcd60e51b8152600401610ac190613805565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b03163314611b705760405162461bcd60e51b8152600401610ac190613805565b6001600160a01b038116611bd55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ac1565b610fc481612921565b6001600160a01b038316611c405760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ac1565b6001600160a01b038216611ca15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ac1565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d665760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ac1565b6001600160a01b038216611dc85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ac1565b60008111611e2a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ac1565b611e338361159d565b811115611e9c5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610ac1565b6001600160a01b03831660009081526007602052604090205460ff16158015611ede57506001600160a01b03821660009081526007602052604090205460ff16155b611f1a5760405162461bcd60e51b815260206004820152600d60248201526c165bdd48185c99481848189bdd609a1b6044820152606401610ac1565b6001600160a01b03831660009081526004602052604090205460ff16158015611f5c57506001600160a01b03821660009081526004602052604090205460ff16155b15611fa85760095460ff16611fa85760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b6044820152606401610ac1565b6001600160a01b03831660009081526004602052604090205460ff16158015611fea57506001600160a01b03821660009081526004602052604090205460ff16155b80156120035750601554611fff906003613905565b4311155b1561207257600e546001600160a01b03908116908316036120725760405162461bcd60e51b8152602060048201526024808201527f53656c6c73206e6f7420616c6c6f77656420666f72206669727374203320626c6044820152636f636b7360e01b6064820152608401610ac1565b600e546001600160a01b0384811691161480156120a857506001600160a01b03821660009081526004602052604090205460ff16155b80156120bd575060095462010000900460ff16155b15612179576012548111156121145760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d69740000006044820152606401610ac1565b601454816121218461159d565b61212b9190613905565b11156121795760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610ac1565b600e546001600160a01b038481169116148015906121b057506001600160a01b03821660009081526004602052604090205460ff16155b80156121d557506001600160a01b03831660009081526004602052604090205460ff16155b80156121ea575060095462010000900460ff16155b1561234d576013548111156122415760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d697400006044820152606401610ac1565b600e546001600160a01b038381169116146122bb57601454816122638461159d565b61226d9190613905565b11156122bb5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610ac1565b600b5460ff161561234d576001600160a01b0383166000908152600a60205260408120546122e990426138b6565b9050600c548110156123305760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b6044820152606401610ac1565b506001600160a01b0383166000908152600a602052604090204290555b6123596009600a613a1e565b61236490600a613a2d565b8161236e8561159d565b61237891906138b6565b116123bf576123868361159d565b816123936009600a613a1e565b61239e90600a613a2d565b6123a89190613905565b6123b291906138b6565b6123bc90826138b6565b90505b60006011546123cd3061159d565b600954911115915062010000900460ff161580156123f25750600954610100900460ff165b80156123fb5750805b80156124155750600e546001600160a01b03858116911614155b801561243a57506001600160a01b03841660009081526004602052604090205460ff16155b801561245f57506001600160a01b03831660009081526004602052604090205460ff16155b156124fd57600e546001600160a01b03908116908416036124bf576011546040805160a081018252601e548152601f546020808301919091525491810191909152602154606082015260225460808201526124ba9190612971565b6124fd565b6011546040805160a0810182526019548152601a546020820152601b5491810191909152601c546060820152601d5460808201526124fd9190612971565b60095460019060009062010000900460ff168061253257506001600160a01b03861660009081526004602052604090205460ff165b8061255557506001600160a01b03851660009081526004602052604090205460ff165b1561255f57600091505b600e546001600160a01b0390811690861603612579575060015b6125868686868585612612565b505050505050565b600080600061259b612b17565b90925090506125aa81836138cd565b9250505090565b6125b961337d565b6125c4848484612c9a565b90506125d98185856125d461258e565b612e57565b60c087015260808601526060850152604084015260208301528152612606818461260161258e565b612f2b565b60a08201529392505050565b600061261f8484846125b1565b6001600160a01b03871660009081526005602052604090205490915060ff1615612681576001600160a01b0386166000908152600260205260409020546126679085906138b6565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526005602052604090205460ff16156126e45760e08101516001600160a01b0386166000908152600260205260409020546126ca9190613905565b6001600160a01b0386166000908152600260205260409020555b80516001600160a01b03871660009081526001602052604090205461270991906138b6565b6001600160a01b03808816600090815260016020908152604080832094909455840151918816815291909120546127409190613905565b6001600160a01b038616600090815260016020526040908190209190915581015115158061277357506000816101000151115b1561278b5761278b8160400151826101000151612f53565b6000816080015111806127a357506000816101400151115b15612838576127bb8160800151826101400151612f88565b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8361018001518461016001518561012001518661014001516128129190613905565b61281c9190613905565b6128269190613905565b60405190815260200160405180910390a35b60008160600151118061285057506000816101200151115b15612868576128688160600151826101200151612ffe565b60008160a00151118061288057506000816101600151115b15612898576128988160a00151826101600151613013565b60008160c0015111806128b057506000816101800151115b156128c8576128c88160c00151826101800151613028565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360e0015160405161291191815260200190565b60405180910390a3505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6009805462ff0000191662010000179055608081015160608201516020830151604084015160009392916129a491613905565b6129ae9190613905565b6129b89190613905565b6129c3906002613a2d565b90506000818360400151856129d89190613a2d565b6129e291906138cd565b905060006129f082866138b6565b9050476129fc8261303d565b6000612a0882476138b6565b90506000866040015186612a1c91906138b6565b612a2690836138cd565b90506000876040015182612a3a9190613a2d565b90508015612a4c57612a4c868261318f565b6020880151600090612a5f846002613a2d565b612a699190613a2d565b90508015612a8757601654612a87906001600160a01b031682613264565b6060890151600090612a9a856002613a2d565b612aa49190613a2d565b90508015612ac257601754612ac2906001600160a01b031682613264565b60808a0151600090612ad5866002613a2d565b612adf9190613a2d565b90508015612afd57601854612afd906001600160a01b031682613264565b50506009805462ff00001916905550505050505050505050565b601054600f546000918291825b600854811015612c6957826001600060088481548110612b4657612b46613871565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612bb15750816002600060088481548110612b8a57612b8a613871565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612bc757601054600f54945094505050509091565b6001600060088381548110612bde57612bde613871565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612c0d90846138b6565b92506002600060088381548110612c2657612c26613871565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612c5590836138b6565b915080612c618161389d565b915050612b24565b50600f54601054612c7a91906138cd565b821015612c9157601054600f549350935050509091565b90939092509050565b612ca261337d565b82612cb35760e08101849052610da4565b612ce56040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b8215612d2457506040805160a081018252601e548152601f54602080830191909152549181019190915260215460608201526022546080820152612d57565b506040805160a0810182526019548152601a546020820152601b5491810191909152601c546060820152601d5460808201525b8051606490612d669087613a2d565b612d7091906138cd565b6101008301526020810151606490612d889087613a2d565b612d9291906138cd565b6101208301526040810151606490612daa9087613a2d565b612db491906138cd565b6101408301526060810151606490612dcc9087613a2d565b612dd691906138cd565b6101608301526080810151606490612dee9087613a2d565b612df891906138cd565b6101808301819052610160830151610140840151610120850151610100860151612e22908a6138b6565b612e2c91906138b6565b612e3691906138b6565b612e4091906138b6565b612e4a91906138b6565b60e0830152509392505050565b60008080808080612e68878a613a2d565b955087612e8357508493506000925082915081905080612f1e565b868a6101000151612e949190613a2d565b9350868a6101200151612ea79190613a2d565b9250868a6101400151612eba9190613a2d565b91506000878b6101600151612ecf9190613a2d565b9050878b6101800151612ee29190613a2d565b915081818486612ef2898c6138b6565b612efc91906138b6565b612f0691906138b6565b612f1091906138b6565b612f1a91906138b6565b9550505b9499939850945094509450565b600082612f3a57506000610da4565b81846101600151612f4b9190613a2d565b949350505050565b8160106000828254612f6591906138b6565b909155505060238054829190600090612f7f908490613905565b90915550505050565b8060236002016000828254612f9d9190613905565b90915550503060009081526005602052604090205460ff1615612fdf573060009081526002602052604081208054839290612fd9908490613905565b90915550505b3060009081526001602052604081208054849290612f7f908490613905565b8060236001016000828254612f9d9190613905565b8060236003016000828254612f9d9190613905565b8060236004016000828254612f9d9190613905565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061307257613072613871565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156130cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130ef9190613a4c565b8160018151811061310257613102613871565b6001600160a01b039283166020918202929092010152600d546131289130911684611bde565b600d5460405163791ac94760e01b81526001600160a01b039091169063791ac94790613161908590600090869030904290600401613a69565b600060405180830381600087803b15801561317b57600080fd5b505af1158015612586573d6000803e3d6000fd5b600d546131a79030906001600160a01b031684611bde565b600d546001600160a01b031663f305d7198230856000806131d06000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015613238573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061325d9190613ada565b5050505050565b804710156132b45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610ac1565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613301576040519150601f19603f3d011682016040523d82523d6000602084013e613306565b606091505b5050905080610bdc5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610ac1565b604051806101a00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6001600160a01b0381168114610fc457600080fd5b60006020828403121561340c57600080fd5b8135610da4816133e5565b600060208083528351808285015260005b8181101561344457858101830151858201604001528201613428565b81811115613456576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561347f57600080fd5b823561348a816133e5565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156134d7576134d7613498565b604052919050565b600067ffffffffffffffff8211156134f9576134f9613498565b5060051b60200190565b600082601f83011261351457600080fd5b81356020613529613524836134df565b6134ae565b82815260059290921b8401810191818101908684111561354857600080fd5b8286015b8481101561356c57803561355f816133e5565b835291830191830161354c565b509695505050505050565b8015158114610fc457600080fd5b6000806040838503121561359857600080fd5b823567ffffffffffffffff8111156135af57600080fd5b6135bb85828601613503565b92505060208301356135cc81613577565b809150509250929050565b6000806000606084860312156135ec57600080fd5b83356135f7816133e5565b92506020840135613607816133e5565b929592945050506040919091013590565b60006020828403121561362a57600080fd5b5035919050565b60006020828403121561364357600080fd5b8135610da481613577565b6000806040838503121561366157600080fd5b823561366c816133e5565b915060208301356135cc816133e5565b6000806040838503121561368f57600080fd5b8235915060208301356135cc81613577565b600080604083850312156136b457600080fd5b50508035926020909101359150565b600080604083850312156136d657600080fd5b82356136e1816133e5565b915060208301356135cc81613577565b600080600080600060a0868803121561370957600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000806040838503121561373f57600080fd5b823567ffffffffffffffff8082111561375757600080fd5b61376386838701613503565b935060209150818501358181111561377a57600080fd5b85019050601f8101861361378d57600080fd5b803561379b613524826134df565b81815260059190911b820183019083810190888311156137ba57600080fd5b928401925b828410156137d8578335825292840192908401906137bf565b80955050505050509250929050565b600080604083850312156137fa57600080fd5b823561348a81613577565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526017908201527f54726164696e67206e6f7420656e61626c656420796574000000000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016138af576138af613887565b5060010190565b6000828210156138c8576138c8613887565b500390565b6000826138ea57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603160045260246000fd5b6000821982111561391857613918613887565b500190565b60006020828403121561392f57600080fd5b8151610da481613577565b600181815b8085111561397557816000190482111561395b5761395b613887565b8085161561396857918102915b93841c939080029061393f565b509250929050565b60008261398c5750600161117b565b816139995750600061117b565b81600181146139af57600281146139b9576139d5565b600191505061117b565b60ff8411156139ca576139ca613887565b50506001821b61117b565b5060208310610133831016604e8410600b84101617156139f8575081810a61117b565b613a02838361393a565b8060001904821115613a1657613a16613887565b029392505050565b6000610da460ff84168361397d565b6000816000190483118215151615613a4757613a47613887565b500290565b600060208284031215613a5e57600080fd5b8151610da4816133e5565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613ab95784516001600160a01b031683529383019391830191600101613a94565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215613aef57600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122094f2af2078f3043c027ff8a02f996e2a68c9721e022729f3314114f251f540fb64736f6c634300080d0033

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

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

-----Decoded View---------------
Arg [0] : routerAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d


Deployed Bytecode Sourcemap

3231:22428:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23664:110;;;;;;;;;;-1:-1:-1;23664:110:0;;;;;:::i;:::-;;:::i;:::-;;7088:83;;;;;;;;;;-1:-1:-1;7158:5:0;;;;;;;;;;;;-1:-1:-1;;;7158:5:0;;;;7088:83;;;;;;;:::i;:::-;;;;;;;;7848:181;;;;;;;;;;-1:-1:-1;7848:181:0;;;;;:::i;:::-;;:::i;:::-;;;1489:14:1;;1482:22;1464:41;;1452:2;1437:18;7848:181:0;1324:187:1;24337:209:0;;;;;;;;;;-1:-1:-1;24337:209:0;;;;;:::i;:::-;;:::i;7384:95::-;;;;;;;;;;-1:-1:-1;7464:7:0;;7384:95;;;3609:25:1;;;3597:2;3582:18;7384:95:0;3463:177:1;8037:430:0;;;;;;;;;;-1:-1:-1;8037:430:0;;;;;:::i;:::-;;:::i;4679:28::-;;;;;;;;;;;;;;;;23544:112;;;;;;;;;;-1:-1:-1;23544:112:0;;;;;:::i;:::-;;:::i;10128:248::-;;;;;;;;;;-1:-1:-1;10128:248:0;;;;;:::i;:::-;;:::i;7270:83::-;;;;;;;;;;-1:-1:-1;7270:83:0;;4279:1;4433:36:1;;4421:2;4406:18;7270:83:0;4291:184:1;10725:475:0;;;;;;;;;;-1:-1:-1;10725:475:0;;;;;:::i;:::-;;:::i;9914:206::-;;;;;;;;;;-1:-1:-1;9914:206:0;;;;;:::i;:::-;;:::i;8475:228::-;;;;;;;;;;-1:-1:-1;8475:228:0;;;;;:::i;:::-;;:::i;25025:154::-;;;;;;;;;;-1:-1:-1;25025:154:0;;;;;:::i;:::-;;:::i;11208:111::-;;;;;;;;;;-1:-1:-1;11208:111:0;;;;;:::i;:::-;;:::i;9436:470::-;;;;;;;;;;-1:-1:-1;9436:470:0;;;;;:::i;:::-;;:::i;25460:154::-;;;;;;;;;;-1:-1:-1;25460:154:0;;;;;:::i;:::-;;:::i;3766:26::-;;;;;;;;;;-1:-1:-1;3766:26:0;;;;;;;;10384:333;;;;;;;;;;-1:-1:-1;10384:333:0;;;;;:::i;:::-;;:::i;11445:123::-;;;;;;;;;;-1:-1:-1;11445:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;11533:27:0;11509:4;11533:27;;;:18;:27;;;;;;;;;11445:123;24699:183;;;;;;;;;;-1:-1:-1;24699:183:0;;;;;:::i;:::-;;:::i;24199:126::-;;;;;;;;;;-1:-1:-1;24199:126:0;;;;;:::i;:::-;;:::i;11576:233::-;;;;;;;;;;-1:-1:-1;11576:233:0;;;;;:::i;:::-;;:::i;3618:48::-;;;;;;;;;;-1:-1:-1;3618:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4562:47;;;;;;;;;;;;;;;;4616:50;;;;;;;;;;;;;;;;4508:47;;;;;;;;;;;;;;;;3799:23;;;;;;;;;;-1:-1:-1;3799:23:0;;;;;;;;;;;22858:331;;;;;;;;;;-1:-1:-1;22858:331:0;;;;;:::i;:::-;;:::i;7487:198::-;;;;;;;;;;-1:-1:-1;7487:198:0;;;;;:::i;:::-;;:::i;1659:94::-;;;;;;;;;;;;;:::i;9308:120::-;;;;;;;;;;-1:-1:-1;9308:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;9400:20:0;9376:4;9400:20;;;:11;:20;;;;;;;;;9308:120;1436:87;;;;;;;;;;-1:-1:-1;1482:7:0;1509:6;-1:-1:-1;;;;;1509:6:0;1436:87;;;-1:-1:-1;;;;;7839:32:1;;;7821:51;;7809:2;7794:18;1436:87:0;7675:203:1;23201:209:0;;;;;;;;;;-1:-1:-1;23201:209:0;;;;;:::i;:::-;;:::i;24086:101::-;;;;;;;;;;-1:-1:-1;24086:101:0;;;;;:::i;:::-;;:::i;7177:87::-;;;;;;;;;;-1:-1:-1;7249:7:0;;;;;;;;;;;;-1:-1:-1;;;7249:7:0;;;;7177:87;;5507:36;;;;;;;;;;-1:-1:-1;5507:36:0;;;;;;;;;;;;;;;;;;;;;;8142:25:1;;;8198:2;8183:18;;8176:34;;;;8226:18;;;8219:34;;;;8284:2;8269:18;;8262:34;8327:3;8312:19;;8305:35;8129:3;8114:19;5507:36:0;7883:463:1;8711:390:0;;;;;;;;;;-1:-1:-1;8711:390:0;;;;;:::i;:::-;;:::i;4216:19::-;;;;;;;;;;-1:-1:-1;4216:19:0;;;;-1:-1:-1;;;;;4216:19:0;;;9113:187;;;;;;;;;;-1:-1:-1;9113:187:0;;;;;:::i;:::-;;:::i;23418:114::-;;;;;;;;;;-1:-1:-1;23418:114:0;;;;;:::i;:::-;;:::i;25255:191::-;;;;;;;;;;-1:-1:-1;25255:191:0;;;;;:::i;:::-;;:::i;24558:129::-;;;;;;;;;;-1:-1:-1;24558:129:0;;;;;:::i;:::-;;:::i;11821:241::-;;;;;;;;;;-1:-1:-1;11821:241:0;;;;;:::i;:::-;;:::i;23948:130::-;;;;;;;;;;-1:-1:-1;23948:130:0;;;;;:::i;:::-;;:::i;3985:40::-;;;;;;;;;;;;;;;;24894:123;;;;;;;;;;-1:-1:-1;24894:123:0;;;;;:::i;:::-;;:::i;7697:143::-;;;;;;;;;;-1:-1:-1;7697:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7805:18:0;;;7778:7;7805:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7697:143;4448:53;;;;;;;;;;;;;;;;23788:152;;;;;;;;;;-1:-1:-1;23788:152:0;;;;;:::i;:::-;;:::i;11327:110::-;;;;;;;;;;-1:-1:-1;11327:110:0;;;;;:::i;:::-;;:::i;3944:34::-;;;;;;;;;;-1:-1:-1;3944:34:0;;;;;;;;1761:192;;;;;;;;;;-1:-1:-1;1761:192:0;;;;;:::i;:::-;;:::i;4188:21::-;;;;;;;;;;-1:-1:-1;4188:21:0;;;;-1:-1:-1;;;;;4188:21:0;;;23664:110;1482:7;1509:6;-1:-1:-1;;;;;1509:6:0;937:10;1571:23;1563:68;;;;-1:-1:-1;;;1563:68:0;;;;;;;:::i;:::-;;;;;;;;;23741:13:::1;:25:::0;;-1:-1:-1;;;;;;23741:25:0::1;-1:-1:-1::0;;;;;23741:25:0;;;::::1;::::0;;;::::1;::::0;;23664:110::o;7848:181::-;4090:14;;7943:4;;7923:10;;4090:14;;;:42;;-1:-1:-1;;;;;;4108:24:0;;;;;;:15;:24;;;;;;;;4090:42;4082:78;;;;-1:-1:-1;;;4082:78:0;;;;;;;:::i;:::-;7960:39:::1;937:10:::0;7983:7:::1;7992:6;7960:8;:39::i;:::-;-1:-1:-1::0;8017:4:0::1;::::0;7848:181;-1:-1:-1;;;7848:181:0:o;24337:209::-;1482:7;1509:6;-1:-1:-1;;;;;1509:6:0;937:10;1571:23;1563:68;;;;-1:-1:-1;;;1563:68:0;;;;;;;:::i;:::-;24436:9:::1;24432:107;24454:8;:15;24450:1;:19;24432:107;;;24520:5;24490:14;:27;24505:8;24514:1;24505:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;24490:27:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;24490:27:0;:35;;-1:-1:-1;;24490:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24471:3;::::1;::::0;::::1;:::i;:::-;;;;24432:107;;;;24337:209:::0;;:::o;8037:430::-;4090:14;;8151:4;;8134:6;;4090:14;;;:42;;-1:-1:-1;;;;;;4108:24:0;;;;;;:15;:24;;;;;;;;4090:42;4082:78;;;;-1:-1:-1;;;4082:78:0;;;;;;;:::i;:::-;8168:36:::1;8178:6;8186:9;8197:6;8168:9;:36::i;:::-;-1:-1:-1::0;;;;;8244:19:0;::::1;8217:24;8244:19:::0;;;:11:::1;:19;::::0;;;;;;;937:10;8244:33;;;;;;;;8296:26;;::::1;;8288:79;;;::::0;-1:-1:-1;;;8288:79:0;;10207:2:1;8288:79:0::1;::::0;::::1;10189:21:1::0;10246:2;10226:18;;;10219:30;10285:34;10265:18;;;10258:62;-1:-1:-1;;;10336:18:1;;;10329:38;10384:19;;8288:79:0::1;10005:404:1::0;8288:79:0::1;8378:57;8387:6:::0;937:10;8409:25:::1;8428:6:::0;8409:16;:25:::1;:::i;:::-;8378:8;:57::i;:::-;-1:-1:-1::0;8455:4:0::1;::::0;8037:430;-1:-1:-1;;;;;8037:430:0:o;23544:112::-;1482:7;1509:6;-1:-1:-1;;;;;1509:6:0;937:10;1571:23;1563:68;;;;-1:-1:-1;;;1563:68:0;;;;;;;:::i;:::-;23622:14:::1;:26:::0;;-1:-1:-1;;;;;;23622:26:0::1;-1:-1:-1::0;;;;;23622:26:0;;;::::1;::::0;;;::::1;::::0;;23544:112::o;10128:248::-;10194:7;10233;;10222;:18;;10214:73;;;;-1:-1:-1;;;10214:73:0;;10746:2:1;10214:73:0;;;10728:21:1;10785:2;10765:18;;;10758:30;10824:34;10804:18;;;10797:62;-1:-1:-1;;;10875:18:1;;;10868:40;10925:19;;10214:73:0;10544:406:1;10214:73:0;10298:19;10321:10;:8;:10::i;:::-;10298:33;-1:-1:-1;10349:19:0;10298:33;10349:7;:19;:::i;:::-;10342:26;10128:248;-1:-1:-1;;;10128:248:0:o;10725:475::-;1482:7;1509:6;-1:-1:-1;;;;;1509:6:0;937:10;1571:23;1563:68;;;;-1:-1:-1;;;1563:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10807:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;10799:56;;;::::0;-1:-1:-1;;;10799:56:0;;11379:2:1;10799:56:0::1;::::0;::::1;11361:21:1::0;11418:2;11398:18;;;11391:30;11457:25;11437:18;;;11430:53;11500:18;;10799:56:0::1;11177:347:1::0;10799:56:0::1;10871:9;10866:327;10890:9;:16:::0;10886:20;::::1;10866:327;;;10948:7;-1:-1:-1::0;;;;;10932:23:0::1;:9;10942:1;10932:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;10932:12:0::1;:23:::0;10928:254:::1;;10991:9;11001:16:::0;;:20:::1;::::0;11020:1:::1;::::0;11001:20:::1;:::i;:::-;10991:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;10976:9:::1;:12:::0;;-1:-1:-1;;;;;10991:31:0;;::::1;::::0;10986:1;;10976:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;10976:46:0::1;-1:-1:-1::0;;;;;10976:46:0;;::::1;;::::0;;11041:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;11080:11:::1;:20:::0;;;;:28;;-1:-1:-1;;11080:28:0::1;::::0;;11127:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;11127:15:0;;;;;-1:-1:-1;;;;;;11127:15:0::1;::::0;;;;;10866:327:::1;10725:475:::0;:::o;10928:254::-:1;10908:3:::0;::::1;::::0;::::1;:::i;:::-;;;;10866:327;;;;10725:475:::0;:::o;9914:206::-;1482:7;1509:6;-1:-1:-1;;;;;1509:6:0;937:10;1571:23;1563:68;;;;-1:-1:-1;;;1563:68:0;;;;;;;:::i;:::-;9981:14:::1;:22:::0;;-1:-1:-1;;10014:19:0;-1:-1:-1;;9981:22:0;::::1;;10014:19:::0;;;;;;;9981:22:::1;10014:19:::0;::::1;;::::0;;;-1:-1:-1;10047:13:0::1;:35:::0;::::1;;;-1:-1:-1::0;10064:13:0::1;::::0;:18;10047:35:::1;10044:68;;;10100:12;10084:13;:28:::0;10044:68:::1;9914:206:::0;:::o;8475:228::-;4090:14;;8576:4;;8555:10;;4090:14;;;:42;;-1:-1:-1;;;;;;4108:24:0;;;;;;:15;:24;;;;;;;;4090:42;4082:78;;;;-1:-1:-1;;;4082:78:0;;;;;;;:::i;:::-;937:10;8625:25:::1;::::0;;;:11:::1;:25;::::0;;;;;;;-1:-1:-1;;;;;8625:34:0;::::1;::::0;;;;;;;;8593:80:::1;::::0;937:10;8616:7;;8625:47:::1;::::0;8662:10;;8625:47:::1;:::i;25025:154::-:0;1482:7;1509:6;-1:-1:-1;;;;;1509:6:0;937:10;1571:23;1563:68;;;;-1:-1:-1;;;1563:68:0;;;;;;;:::i;:::-;25119:6:::1;:27:::0;;-1:-1:-1;;;;;25119:27:0;;::::1;-1:-1:-1::0;;;;;;25119:27:0;;::::1;;::::0;;;25157:4:::1;:14:::0;;;;;::::1;::::0;::::1;;::::0;;25025:154::o;11208:111::-;1482:7;1509:6;-1:-1:-1;;;;;1509:6:0;937:10;1571:23;1563:68;;;;-1:-1:-1;;;1563:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11277:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;11277:34:0::1;11307:4;11277:34;::::0;;11208:111::o;9436:470::-;9526:7;9565;;9554;:18;;9546:62;;;;-1:-1:-1;;;9546:62:0;;11996:2:1;9546:62:0;;;11978:21:1;12035:2;12015:18;;;12008:30;12074:33;12054:18;;;12047:61;12125:18;;9546:62:0;11794:355:1;9546:62:0;9624:17;9619:280;;9658:28;9689:32;9700:7;9709:4;9715:5;9689:10;:32::i;:::-;9743:9;;-1:-1:-1;9736:16:0;;-1:-1:-1;9736:16:0;9619:280;9785:28;9816:32;9827:7;9836:4;9842:5;9816:10;:32::i;:::-;9870:17;;;;-1:-1:-1;9863:24:0;;-1:-1:-1;9863:24:0;9619:280;9436:470;;;;:::o;25460:154::-;1482:7;1509:6;-1:-1:-1;;;;;1509:6:0;937:10;1571:23;1563:68;;;;-1:-1:-1;;;1563:68:0;;;;;;;:::i;:::-;25565:41:::1;::::0;-1:-1:-1;;;25565:41:0;;-1:-1:-1;;;;;12346:32:1;;;25565:41:0::1;::::0;::::1;12328:51:1::0;12395:18;;;12388:34;;;25565:27:0;::::1;::::0;::::1;::::0;12301:18:1;;25565:41:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25460:154:::0;;;:::o;10384:333::-;1482:7;1509:6;-1:-1:-1;;;;;1509:6:0;937:10;1571:23;1563:68;;;;-1:-1:-1;;;1563:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10467:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;10466:21;10458:61;;;::::0;-1:-1:-1;;;10458:61:0;;12885:2:1;10458:61:0::1;::::0;::::1;12867:21:1::0;12924:2;12904:18;;;12897:30;12963:29;12943:18;;;12936:57;13010:18;;10458:61:0::1;12683:351:1::0;10458:61:0::1;-1:-1:-1::0;;;;;10533:16:0;::::1;10552:1;10533:16:::0;;;:7:::1;:16;::::0;;;;;:20;10530:108:::1;;-1:-1:-1::0;;;;;10609:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;10589:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;10570:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;10530:108:::1;-1:-1:-1::0;;;;;10648:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;10648:27:0::1;10671:4;10648:27:::0;;::::1;::::0;;;10686:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;10686:23:0::1;::::0;;::::1;::::0;;10384:333::o;24699:183::-;1482:7;1509:6;-1:-1:-1;;;;;1509:6:0;937:10;1571:23;1563:68;;;;-1:-1:-1;;;1563:68:0;;;;;;;:::i;:::-;24810:14:::1;4279:1:::0;24810:2:::1;:14;:::i;:::-;24801:23;::::0;:6;:23:::1;:::i;:::-;24787:11;:37:::0;24860:14:::1;4279:1:::0;24860:2:::1;:14;:::i;:::-;24850:24;::::0;:7;:24:::1;:::i;:::-;24835:12;:39:::0;-1:-1:-1;;24699:183:0:o;24199:126::-;1482:7;1509:6;-1:-1:-1;;;;;1509:6:0;937:10;1571:23;1563:68;;;;-1:-1:-1;;;1563:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24286:23:0;;;::::1;;::::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;24286:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24199:126::o;11576:233::-;1482:7;1509:6;-1:-1:-1;;;;;1509:6:0;937:10;1571:23;1563:68;;;;-1:-1:-1;;;1563:68:0;;;;;;;:::i;:::-;11720:52:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;11712:5:::1;:60:::0;;;;;;;;;;;;;;;;;;;11788:13;::::1;::::0;-1:-1:-1;;11788:13:0::1;11576:233:::0;;;;;:::o;22858:331::-;1482:7;1509:6;-1:-1:-1;;;;;1509:6:0;937:10;1571:23;1563:68;;;;-1:-1:-1;;;1563:68:0;;;;;;;:::i;:::-;22990:7:::1;:14;22971:8;:15;:33;22963:72;;;::::0;-1:-1:-1;;;22963:72:0;;14797:2:1;22963:72:0::1;::::0;::::1;14779:21:1::0;14836:2;14816:18;;;14809:30;14875:28;14855:18;;;14848:56;14921:18;;22963:72:0::1;14595:350:1::0;22963:72:0::1;23050:9;23046:136;23069:8;:15;23065:1;:19;23046:136;;;23105:65;23120:10;23132:8;23141:1;23132:11;;;;;;;;:::i;:::-;;;;;;;23145:7;23153:1;23145:10;;;;;;;;:::i;:::-;;;;;;;23157:5;23164::::0;23105:14:::1;:65::i;:::-;23086:3:::0;::::1;::::0;::::1;:::i;:::-;;;;23046:136;;7487:198:::0;-1:-1:-1;;;;;7577:20:0;;7553:7;7577:20;;;:11;:20;;;;;;;;7573:49;;;-1:-1:-1;;;;;;7606:16:0;;;;;:7;:16;;;;;;;7487:198::o;7573:49::-;-1:-1:-1;;;;;7660:16:0;;;;;;:7;:16;;;;;;7640:37;;:19;:37::i;1659:94::-;1482:7;1509:6;-1:-1:-1;;;;;1509:6:0;937:10;1571:23;1563:68;;;;-1:-1:-1;;;1563:68:0;;;;;;;:::i;:::-;1724:21:::1;1742:1;1724:9;:21::i;:::-;1659:94::o:0;23201:209::-;1482:7;1509:6;-1:-1:-1;;;;;1509:6:0;937:10;1571:23;1563:68;;;;-1:-1:-1;;;1563:68:0;;;;;;;:::i;:::-;23297:9:::1;23293:110;23316:8;:15;23312:1;:19;23293:110;;;23386:5;23352:18;:31;23371:8;23380:1;23371:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;23352:31:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;23352:31:0;:39;;-1:-1:-1;;23352:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23333:3;::::1;::::0;::::1;:::i;:::-;;;;23293:110;;24086:101:::0;1482:7;1509:6;-1:-1:-1;;;;;1509:6:0;937:10;1571:23;1563:68;;;;-1:-1:-1;;;1563:68:0;;;;;;;:::i;:::-;24157:11:::1;:22:::0;;;::::1;;;;-1:-1:-1::0;;24157:22:0;;::::1;::::0;;;::::1;::::0;;24086:101::o;8711:390::-;4090:14;;8817:4;;8796:10;;4090:14;;;:42;;-1:-1:-1;;;;;;4108:24:0;;;;;;:15;:24;;;;;;;;4090:42;4082:78;;;;-1:-1:-1;;;4082:78:0;;;;;;;:::i;:::-;937:10;8834:24:::1;8861:25:::0;;;:11:::1;:25;::::0;;;;;;;-1:-1:-1;;;;;8861:34:0;::::1;::::0;;;;;;;;8914:35;;::::1;;8906:85;;;::::0;-1:-1:-1;;;8906:85:0;;15152:2:1;8906:85:0::1;::::0;::::1;15134:21:1::0;15191:2;15171:18;;;15164:30;15230:34;15210:18;;;15203:62;-1:-1:-1;;;15281:18:1;;;15274:35;15326:19;;8906:85:0::1;14950:401:1::0;8906:85:0::1;9002:67;937:10:::0;9025:7;9034:34:::1;9053:15:::0;9034:16;:34:::1;:::i;9002:67::-;-1:-1:-1::0;9089:4:0::1;::::0;8711:390;-1:-1:-1;;;;8711:390:0:o;9113:187::-;4090:14;;9211:4;;9190:10;;4090:14;;;:42;;-1:-1:-1;;;;;;4108:24:0;;;;;;:15;:24;;;;;;;;4090:42;4082:78;;;;-1:-1:-1;;;4082:78:0;;;;;;;:::i;:::-;9232:40:::1;9242:10;9254:9;9265:6;9232:9;:40::i;23418:114::-:0;1482:7;1509:6;-1:-1:-1;;;;;1509:6:0;937:10;1571:23;1563:68;;;;-1:-1:-1;;;1563:68:0;;;;;;;:::i;:::-;23497:15:::1;:27:::0;;-1:-1:-1;;;;;;23497:27:0::1;-1:-1:-1::0;;;;;23497:27:0;;;::::1;::::0;;;::::1;::::0;;23418:114::o;25255:191::-;1482:7;1509:6;-1:-1:-1;;;;;1509:6:0;937:10;1571:23;1563:68;;;;-1:-1:-1;;;1563:68:0;;;;;;;:::i;:::-;25350:9:::1;25325:21;:34;;25317:71;;;::::0;-1:-1:-1;;;25317:71:0;;15558:2:1;25317:71:0::1;::::0;::::1;15540:21:1::0;15597:2;15577:18;;;15570:30;15636:26;15616:18;;;15609:54;15680:18;;25317:71:0::1;15356:348:1::0;25317:71:0::1;25399:39;::::0;25407:10:::1;::::0;25399:39;::::1;;;::::0;25428:9;;25399:39:::1;::::0;;;25428:9;25407:10;25399:39;::::1;;;;;;;;;;;;;::::0;::::1;;;;24558:129:::0;1482:7;1509:6;-1:-1:-1;;;;;1509:6:0;937:10;1571:23;1563:68;;;;-1:-1:-1;;;1563:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24647:24:0;;;::::1;;::::0;;;:15:::1;:24;::::0;;;;:32;;-1:-1:-1;;24647:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24558:129::o;11821:241::-;1482:7;1509:6;-1:-1:-1;;;;;1509:6:0;937:10;1571:23;1563:68;;;;-1:-1:-1;;;1563:68:0;;;;;;;:::i;:::-;11973:52:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;11961:9:::1;:64:::0;;;;;;;;;;;;;;;;;;12041:13;::::1;::::0;-1:-1:-1;;12041:13:0::1;11821:241:::0;;;;;:::o;23948:130::-;1482:7;1509:6;-1:-1:-1;;;;;1509:6:0;937:10;1571:23;1563:68;;;;-1:-1:-1;;;1563:68:0;;;;;;;:::i;:::-;24057:13:::1;4279:1;24057:2;:13;:::i;:::-;24048:22;::::0;:6;:22:::1;:::i;:::-;24027:18;:43:::0;-1:-1:-1;23948:130:0:o;24894:123::-;1482:7;1509:6;-1:-1:-1;;;;;1509:6:0;937:10;1571:23;1563:68;;;;-1:-1:-1;;;1563:68:0;;;;;;;:::i;:::-;24995:14:::1;4279:1:::0;24995:2:::1;:14;:::i;:::-;24986:23;::::0;:6;:23:::1;:::i;:::-;24969:14;:40:::0;-1:-1:-1;24894:123:0:o;23788:152::-;1482:7;1509:6;-1:-1:-1;;;;;1509:6:0;937:10;1571:23;1563:68;;;;-1:-1:-1;;;1563:68:0;;;;;;;:::i;:::-;23882:16:::1;:4:::0;23889:9:::1;23882:16;:::i;:::-;23867:12;:31:::0;-1:-1:-1;23909:15:0::1;:23:::0;;-1:-1:-1;;23909:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23788:152::o;11327:110::-;1482:7;1509:6;-1:-1:-1;;;;;1509:6:0;937:10;1571:23;1563:68;;;;-1:-1:-1;;;1563:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11394:27:0::1;11424:5;11394:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;11394:35:0::1;::::0;;11327:110::o;1761:192::-;1482:7;1509:6;-1:-1:-1;;;;;1509:6:0;937:10;1571:23;1563:68;;;;-1:-1:-1;;;1563:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1850:22:0;::::1;1842:73;;;::::0;-1:-1:-1;;;1842:73:0;;15911:2:1;1842:73:0::1;::::0;::::1;15893:21:1::0;15950:2;15930:18;;;15923:30;15989:34;15969:18;;;15962:62;-1:-1:-1;;;16040:18:1;;;16033:36;16086:19;;1842:73:0::1;15709:402:1::0;1842:73:0::1;1926:19;1936:8;1926:9;:19::i;16316:335::-:0;-1:-1:-1;;;;;16409:19:0;;16401:68;;;;-1:-1:-1;;;16401:68:0;;16318:2:1;16401:68:0;;;16300:21:1;16357:2;16337:18;;;16330:30;16396:34;16376:18;;;16369:62;-1:-1:-1;;;16447:18:1;;;16440:34;16491:19;;16401:68:0;16116:400:1;16401:68:0;-1:-1:-1;;;;;16488:21:0;;16480:68;;;;-1:-1:-1;;;16480:68:0;;16723:2:1;16480:68:0;;;16705:21:1;16762:2;16742:18;;;16735:30;16801:34;16781:18;;;16774:62;-1:-1:-1;;;16852:18:1;;;16845:32;16894:19;;16480:68:0;16521:398:1;16480:68:0;-1:-1:-1;;;;;16559:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16611:32;;3609:25:1;;;16611:32:0;;3582:18:1;16611:32:0;;;;;;;16316:335;;;:::o;16659:2449::-;-1:-1:-1;;;;;16747:18:0;;16739:68;;;;-1:-1:-1;;;16739:68:0;;17126:2:1;16739:68:0;;;17108:21:1;17165:2;17145:18;;;17138:30;17204:34;17184:18;;;17177:62;-1:-1:-1;;;17255:18:1;;;17248:35;17300:19;;16739:68:0;16924:401:1;16739:68:0;-1:-1:-1;;;;;16826:16:0;;16818:64;;;;-1:-1:-1;;;16818:64:0;;17532:2:1;16818:64:0;;;17514:21:1;17571:2;17551:18;;;17544:30;17610:34;17590:18;;;17583:62;-1:-1:-1;;;17661:18:1;;;17654:33;17704:19;;16818:64:0;17330:399:1;16818:64:0;16910:1;16901:6;:10;16893:64;;;;-1:-1:-1;;;16893:64:0;;17936:2:1;16893:64:0;;;17918:21:1;17975:2;17955:18;;;17948:30;18014:34;17994:18;;;17987:62;-1:-1:-1;;;18065:18:1;;;18058:39;18114:19;;16893:64:0;17734:405:1;16893:64:0;16986:15;16996:4;16986:9;:15::i;:::-;16976:6;:25;;16968:86;;;;-1:-1:-1;;;16968:86:0;;18346:2:1;16968:86:0;;;18328:21:1;18385:2;18365:18;;;18358:30;18424:34;18404:18;;;18397:62;-1:-1:-1;;;18475:18:1;;;18468:47;18532:19;;16968:86:0;18144:413:1;16968:86:0;-1:-1:-1;;;;;17074:20:0;;;;;;:14;:20;;;;;;;;17073:21;:44;;;;-1:-1:-1;;;;;;17099:18:0;;;;;;:14;:18;;;;;;;;17098:19;17073:44;17065:70;;;;-1:-1:-1;;;17065:70:0;;18764:2:1;17065:70:0;;;18746:21:1;18803:2;18783:18;;;18776:30;-1:-1:-1;;;18822:18:1;;;18815:43;18875:18;;17065:70:0;18562:337:1;17065:70:0;-1:-1:-1;;;;;17160:24:0;;;;;;:18;:24;;;;;;;;17159:25;:52;;;;-1:-1:-1;;;;;;17189:22:0;;;;;;:18;:22;;;;;;;;17188:23;17159:52;17156:128;;;17235:14;;;;17227:45;;;;-1:-1:-1;;;17227:45:0;;19106:2:1;17227:45:0;;;19088:21:1;19145:2;19125:18;;;19118:30;-1:-1:-1;;;19164:18:1;;;19157:48;19222:18;;17227:45:0;18904:342:1;17227:45:0;-1:-1:-1;;;;;17308:24:0;;;;;;:18;:24;;;;;;;;17307:25;:52;;;;-1:-1:-1;;;;;;17337:22:0;;;;;;:18;:22;;;;;;;;17336:23;17307:52;:89;;;;-1:-1:-1;17379:13:0;;:17;;17395:1;17379:17;:::i;:::-;17363:12;:33;;17307:89;17304:180;;;17427:4;;-1:-1:-1;;;;;17427:4:0;;;17421:10;;;;17413:59;;;;-1:-1:-1;;;17413:59:0;;19453:2:1;17413:59:0;;;19435:21:1;19492:2;19472:18;;;19465:30;19531:34;19511:18;;;19504:62;-1:-1:-1;;;19582:18:1;;;19575:34;19626:19;;17413:59:0;19251:400:1;17413:59:0;17515:4;;-1:-1:-1;;;;;17507:12:0;;;17515:4;;17507:12;:39;;;;-1:-1:-1;;;;;;17524:22:0;;;;;;:18;:22;;;;;;;;17523:23;17507:39;:52;;;;-1:-1:-1;17551:8:0;;;;;;;17550:9;17507:52;17504:246;;;17593:11;;17583:6;:21;;17575:63;;;;-1:-1:-1;;;17575:63:0;;19858:2:1;17575:63:0;;;19840:21:1;19897:2;19877:18;;;19870:30;19936:31;19916:18;;;19909:59;19985:18;;17575:63:0;19656:353:1;17575:63:0;17687:14;;17677:6;17661:13;17671:2;17661:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;17653:85;;;;-1:-1:-1;;;17653:85:0;;20216:2:1;17653:85:0;;;20198:21:1;;;20235:18;;;20228:30;20294:34;20274:18;;;20267:62;20346:18;;17653:85:0;20014:356:1;17653:85:0;17781:4;;-1:-1:-1;;;;;17773:12:0;;;17781:4;;17773:12;;;;:39;;-1:-1:-1;;;;;;17790:22:0;;;;;;:18;:22;;;;;;;;17789:23;17773:39;:68;;;;-1:-1:-1;;;;;;17817:24:0;;;;;;:18;:24;;;;;;;;17816:25;17773:68;:81;;;;-1:-1:-1;17846:8:0;;;;;;;17845:9;17773:81;17770:573;;;17888:12;;17878:6;:22;;17870:65;;;;-1:-1:-1;;;17870:65:0;;20577:2:1;17870:65:0;;;20559:21:1;20616:2;20596:18;;;20589:30;20655:32;20635:18;;;20628:60;20705:18;;17870:65:0;20375:354:1;17870:65:0;17959:4;;-1:-1:-1;;;;;17953:10:0;;;17959:4;;17953:10;17950:134;;18017:14;;18007:6;17991:13;18001:2;17991:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;17983:85;;;;-1:-1:-1;;;17983:85:0;;20216:2:1;17983:85:0;;;20198:21:1;;;20235:18;;;20228:30;20294:34;20274:18;;;20267:62;20346:18;;17983:85:0;20014:356:1;17983:85:0;18101:15;;;;18098:234;;;-1:-1:-1;;;;;18175:15:0;;18136:18;18175:15;;;:9;:15;;;;;;18157:33;;:15;:33;:::i;:::-;18136:54;;18231:12;;18217:10;:26;;18209:55;;;;-1:-1:-1;;;18209:55:0;;20936:2:1;18209:55:0;;;20918:21:1;20975:2;20955:18;;;20948:30;-1:-1:-1;;;20994:18:1;;;20987:46;21050:18;;18209:55:0;20734:340:1;18209:55:0;-1:-1:-1;;;;;;18283:15:0;;;;;;:9;:15;;;;;18301;18283:33;;18098:234;18410:14;4279:1;18410:2;:14;:::i;:::-;18404:20;;:2;:20;:::i;:::-;18394:6;18376:15;18386:4;18376:9;:15::i;:::-;:24;;;;:::i;:::-;:48;18373:111;;18468:15;18478:4;18468:9;:15::i;:::-;18459:6;18442:14;4279:1;18442:2;:14;:::i;:::-;18437:19;;:2;:19;:::i;:::-;:28;;;;:::i;:::-;:46;;;;:::i;:::-;18426:58;;;;:::i;:::-;;;18373:111;18514:12;18557:18;;18529:24;18547:4;18529:9;:24::i;:::-;18590:8;;-1:-1:-1;;18529:46:0;;-1:-1:-1;18590:8:0;;;;;18589:9;:24;;;;-1:-1:-1;18602:11:0;;;;;;;18589:24;:35;;;;;18617:7;18589:35;:51;;;;-1:-1:-1;18636:4:0;;-1:-1:-1;;;;;18628:12:0;;;18636:4;;18628:12;;18589:51;:80;;;;-1:-1:-1;;;;;;18645:24:0;;;;;;:18;:24;;;;;;;;18644:25;18589:80;:107;;;;-1:-1:-1;;;;;;18674:22:0;;;;;;:18;:22;;;;;;;;18673:23;18589:107;18586:261;;;18721:4;;-1:-1:-1;;;;;18721:4:0;;;18715:10;;;;18712:123;;18743:18;;18728:45;;;;;;;;18763:9;18728:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18743:18;18728:14;:45::i;:::-;18712:123;;;18809:18;;18794:41;;;;;;;;18829:5;18794:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18809:18;18794:14;:41::i;:::-;18920:8;;18872:4;;18857:12;;18920:8;;;;;;:36;;-1:-1:-1;;;;;;18932:24:0;;;;;;:18;:24;;;;;;;;18920:36;:62;;;-1:-1:-1;;;;;;18960:22:0;;;;;;:18;:22;;;;;;;;18920:62;18917:82;;;18994:5;18984:15;;18917:82;19019:4;;-1:-1:-1;;;;;19019:4:0;;;19013:10;;;;19010:28;;-1:-1:-1;19034:4:0;19010:28;19051:49;19066:4;19072:2;19076:6;19084:7;19093:6;19051:14;:49::i;:::-;16728:2380;;;16659:2449;;;:::o;15602:158::-;15643:7;15664:15;15681;15700:19;:17;:19::i;:::-;15663:56;;-1:-1:-1;15663:56:0;-1:-1:-1;15737:15:0;15663:56;;15737:15;:::i;:::-;15730:22;;;;15602:158;:::o;13356:491::-;13442:36;;:::i;:::-;13503:37;13515:7;13524;13533:6;13503:11;:37::i;:::-;13491:49;;13680:53;13693:9;13704:7;13713;13722:10;:8;:10::i;:::-;13680:12;:53::i;:::-;13658:18;;;13551:182;13636:20;;;13551:182;13614:20;;;13551:182;13598:14;;;13551:182;13571:25;;;13551:182;;;13768:44;13552:9;13792:7;13801:10;:8;:10::i;:::-;13768:12;:44::i;:::-;13745:19;;;13744:68;13356:491;;;;;:::o;19191:1232::-;19315:28;19346:36;19357:7;19366;19375:6;19346:10;:36::i;:::-;-1:-1:-1;;;;;19399:19:0;;;;;;:11;:19;;;;;;19315:67;;-1:-1:-1;19399:19:0;;19395:115;;;-1:-1:-1;;;;;19475:15:0;;;;;;:7;:15;;;;;;:23;;19491:7;;19475:23;:::i;:::-;-1:-1:-1;;;;;19457:15:0;;;;;;:7;:15;;;;;:41;19395:115;-1:-1:-1;;;;;19524:22:0;;;;;;:11;:22;;;;;;;;19520:130;;;19621:17;;;;-1:-1:-1;;;;;19602:18:0;;;;;;:7;:18;;;;;;:36;;19621:17;19602:36;:::i;:::-;-1:-1:-1;;;;;19581:18:0;;;;;;:7;:18;;;;;:57;19520:130;19696:9;;-1:-1:-1;;;;;19680:15:0;;19696:9;19680:15;;;:7;:15;;;;;;:25;;19696:9;19680:25;:::i;:::-;-1:-1:-1;;;;;19662:15:0;;;;;;;:7;:15;;;;;;;;:43;;;;19756:17;;;19737:18;;;;;;;;;;:36;;19756:17;19737:36;:::i;:::-;-1:-1:-1;;;;;19716:18:0;;;;;;:7;:18;;;;;;;:57;;;;19797:6;;;:10;;;:24;;;19820:1;19811;:6;;;:10;19797:24;19794:56;;;19823:27;19835:1;:6;;;19843:1;:6;;;19823:11;:27::i;:::-;19879:1;19864;:12;;;:16;:36;;;;19899:1;19884;:12;;;:16;19864:36;19861:216;;;19917:41;19932:1;:12;;;19945:1;:12;;;19917:14;:41::i;:::-;20003:4;-1:-1:-1;;;;;19978:87:0;19987:6;-1:-1:-1;;;;;19978:87:0;;20054:1;:10;;;20040:1;:11;;;20025:1;:12;;;20010:1;:12;;;:27;;;;:::i;:::-;:41;;;;:::i;:::-;:54;;;;:::i;:::-;19978:87;;3609:25:1;;;3597:2;3582:18;19978:87:0;;;;;;;19861:216;20105:1;20090;:12;;;:16;:36;;;;20125:1;20110;:12;;;:16;20090:36;20087:83;;;20128:42;20143:1;:12;;;20157:1;:12;;;20128:14;:42::i;:::-;20198:1;20184;:11;;;:15;:34;;;;20217:1;20203;:11;;;:15;20184:34;20181:78;;;20220:39;20234:1;:11;;;20247:1;:11;;;20220:13;:39::i;:::-;20286:1;20273;:10;;;:14;:32;;;;20304:1;20291;:10;;;:14;20273:32;20270:73;;;20307:36;20320:1;:10;;;20332:1;:10;;;20307:12;:36::i;:::-;20376:9;-1:-1:-1;;;;;20359:46:0;20368:6;-1:-1:-1;;;;;20359:46:0;;20387:1;:17;;;20359:46;;;;3609:25:1;;3597:2;3582:18;;3463:177;20359:46:0;;;;;;;;19302:1121;19191:1232;;;;;:::o;1961:173::-;2017:16;2036:6;;-1:-1:-1;;;;;2053:17:0;;;-1:-1:-1;;;;;;2053:17:0;;;;;;2086:40;;2036:6;;;;;;;2086:40;;2017:16;2086:40;2006:128;1961:173;:::o;20431:1342::-;6058:8;:15;;-1:-1:-1;;6058:15:0;;;;;20602:12:::1;::::0;::::1;::::0;20586:13:::1;::::0;::::1;::::0;20569:14:::1;::::0;::::1;::::0;20552::::1;::::0;::::1;::::0;6058:15;;20602:12;20586:13;20552:31:::1;::::0;::::1;:::i;:::-;:47;;;;:::i;:::-;:62;;;;:::i;:::-;20551:68;::::0;20618:1:::1;20551:68;:::i;:::-;20529:90;;20630:32;20700:11;20683:4;:14;;;20665:15;:32;;;;:::i;:::-;:46;;;;:::i;:::-;20630:81:::0;-1:-1:-1;20722:14:0::1;20739:42;20630:81:::0;20739:15;:42:::1;:::i;:::-;20722:59:::0;-1:-1:-1;20819:21:0::1;20853:24;20722:59:::0;20853:16:::1;:24::i;:::-;20890:20;20913:38;20937:14:::0;20913:21:::1;:38;:::i;:::-;20890:61;;20962:19;21013:4;:14;;;20999:11;:28;;;;:::i;:::-;20983:45;::::0;:12;:45:::1;:::i;:::-;20962:66;;21039:29;21085:4;:14;;;21071:11;:28;;;;:::i;:::-;21039:60:::0;-1:-1:-1;21115:25:0;;21112:158:::1;;21197:61;21210:24;21236:21;21197:12;:61::i;:::-;21323:14;::::0;::::1;::::0;21282:20:::1;::::0;21305:15:::1;:11:::0;21319:1:::1;21305:15;:::i;:::-;:32;;;;:::i;:::-;21282:55:::0;-1:-1:-1;21351:16:0;;21348:95:::1;;21391:15;::::0;21383:48:::1;::::0;-1:-1:-1;;;;;21391:15:0::1;21418:12:::0;21383:34:::1;:48::i;:::-;21493:13;::::0;::::1;::::0;21453:19:::1;::::0;21475:15:::1;:11:::0;21489:1:::1;21475:15;:::i;:::-;:31;;;;:::i;:::-;21453:53:::0;-1:-1:-1;21520:15:0;;21517:92:::1;;21559:14;::::0;21551:46:::1;::::0;-1:-1:-1;;;;;21559:14:0::1;21585:11:::0;21551:33:::1;:46::i;:::-;21658:12;::::0;::::1;::::0;21619:18:::1;::::0;21640:15:::1;:11:::0;21654:1:::1;21640:15;:::i;:::-;:30;;;;:::i;:::-;21619:51:::0;-1:-1:-1;21684:14:0;;21681:85:::1;;21722:13;::::0;21714:44:::1;::::0;-1:-1:-1;;;;;21722:13:0::1;21747:10:::0;21714:32:::1;:44::i;:::-;-1:-1:-1::0;;6096:8:0;:16;;-1:-1:-1;;6096:16:0;;;-1:-1:-1;;;;;;;;;;20431:1342:0:o;15768:540::-;15865:7;;15901;;15818;;;;;15919:279;15943:9;:16;15939:20;;15919:279;;;16009:7;15985;:21;15993:9;16003:1;15993:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;15993:12:0;15985:21;;;;;;;;;;;;;:31;;:66;;;16044:7;16020;:21;16028:9;16038:1;16028:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16028:12:0;16020:21;;;;;;;;;;;;;:31;15985:66;15981:97;;;16061:7;;16070;;16053:25;;;;;;;15768:540;;:::o;15981:97::-;16111:7;:21;16119:9;16129:1;16119:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16119:12:0;16111:21;;;;;;;;;;;;;16103:29;;:7;:29;:::i;:::-;16093:39;;16165:7;:21;16173:9;16183:1;16173:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16173:12:0;16165:21;;;;;;;;;;;;;16157:29;;:7;:29;:::i;:::-;16147:39;-1:-1:-1;15961:3:0;;;;:::i;:::-;;;;15919:279;;;;16230:7;;16222;;:15;;;;:::i;:::-;16212:7;:25;16208:56;;;16247:7;;16256;;16239:25;;;;;;15768:540;;:::o;16208:56::-;16283:7;;16292;;-1:-1:-1;15768:540:0;-1:-1:-1;15768:540:0:o;13855:682::-;13942:28;;:::i;:::-;13989:7;13985:86;;14011:17;;;:27;;;14051:8;;13985:86;14081:17;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14081:17:0;14112:6;14109:55;;;-1:-1:-1;14120:16:0;;;;;;;;14127:9;14120:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14109:55;;;-1:-1:-1;14152:12:0;;;;;;;;14159:5;14152:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14109:55;14202:8;;14211:3;;14194:16;;:7;:16;:::i;:::-;:20;;;;:::i;:::-;14185:6;;;:29;14248:14;;;;14263:3;;14240:22;;:7;:22;:::i;:::-;:26;;;;:::i;:::-;14225:12;;;:41;14300:14;;;;14315:3;;14292:22;;:7;:22;:::i;:::-;:26;;;;:::i;:::-;14277:12;;;:41;14351:13;;;;14365:3;;14343:21;;:7;:21;:::i;:::-;:25;;;;:::i;:::-;14329:11;;;:39;14400:12;;;;14413:3;;14392:20;;:7;:20;:::i;:::-;:24;;;;:::i;:::-;14379:10;;;:37;;;14488:11;;;;14475:12;;;;14462;;;;14455:6;;;;14447:14;;:7;:14;:::i;:::-;:27;;;;:::i;:::-;:40;;;;:::i;:::-;:52;;;;:::i;:::-;:63;;;;:::i;:::-;14427:17;;;:83;-1:-1:-1;13855:682:0;;;;;:::o;14545:765::-;14671:15;;;;;;14804:19;14812:11;14804:7;:19;:::i;:::-;14794:29;;14840:7;14836:71;;-1:-1:-1;14869:7:0;;-1:-1:-1;14887:1:0;;-1:-1:-1;14887:1:0;;-1:-1:-1;14887:1:0;;-1:-1:-1;14887:1:0;14862:33;;14836:71;14933:11;14926:1;:6;;;:18;;;;:::i;:::-;14919:25;;14981:11;14968:1;:12;;;:24;;;;:::i;:::-;14955:37;;15029:11;15016:1;:12;;;:24;;;;:::i;:::-;15003:37;;15051:17;15083:11;15071:1;:11;;;:23;;;;:::i;:::-;15051:43;;15127:11;15116:1;:10;;;:22;;;;:::i;:::-;15105:33;-1:-1:-1;15105:33:0;15203:9;15192:10;15181;15168:12;15176:4;15168:7;:12;:::i;:::-;:23;;;;:::i;:::-;:34;;;;:::i;:::-;:44;;;;:::i;:::-;:53;;;;:::i;:::-;15149:72;;15232:70;14545:765;;;;;;;;;;;;:::o;15322:272::-;15431:17;15467:7;15463:47;;-1:-1:-1;15496:1:0;15489:9;;15463:47;15546:11;15534:1;:11;;;:23;;;;:::i;:::-;15522:35;15322:272;-1:-1:-1;;;;15322:272:0:o;12070:123::-;12148:4;12138:7;;:14;;;;;;;:::i;:::-;;;;-1:-1:-1;;12163:11:0;:22;;12181:4;;12163:11;:15;;:22;;12181:4;;12163:22;:::i;:::-;;;;-1:-1:-1;;;;12070:123:0:o;12201:284::-;12308:10;12284:11;:21;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;12354:4:0;12334:26;;;;:11;:26;;;;;;;;12331:101;;;12402:4;12386:22;;;;:7;:22;;;;;:34;;12410:10;;12386:22;:34;;12410:10;;12386:34;:::i;:::-;;;;-1:-1:-1;;12331:101:0;12458:4;12442:22;;;;:7;:22;;;;;:35;;12467:10;;12442:22;:35;;12467:10;;12442:35;:::i;12493:284::-;12600:10;12576:11;:21;;;:34;;;;;;;:::i;12789:277::-;12892:9;12869:11;:20;;;:32;;;;;;;:::i;13074:270::-;13173:8;13151:11;:19;;;:30;;;;;;;:::i;22284:562::-;22434:16;;;22448:1;22434:16;;;;;;;;22410:21;;22434:16;;;;;;;;;;-1:-1:-1;22434:16:0;22410:40;;22479:4;22461;22466:1;22461:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22461:23:0;;;:7;;;;;;;;;;:23;;;;22505:6;;:13;;;-1:-1:-1;;;22505:13:0;;;;:6;;;;;:11;;:13;;;;;22461:7;;22505:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22495:4;22500:1;22495:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22495:23:0;;;:7;;;;;;;;;:23;22563:6;;22531:53;;22548:4;;22563:6;22572:11;22531:8;:53::i;:::-;22623:6;;:215;;-1:-1:-1;;;22623:215:0;;-1:-1:-1;;;;;22623:6:0;;;;:57;;:215;;22695:11;;22623:6;;22765:4;;22792;;22812:15;;22623:215;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21781:495;21961:6;;21929:53;;21946:4;;-1:-1:-1;;;;;21961:6:0;21970:11;21929:8;:53::i;:::-;22025:6;;-1:-1:-1;;;;;22025:6:0;:22;22055:9;22088:4;22108:11;22025:6;;22220:7;1482;1509:6;-1:-1:-1;;;;;1509:6:0;;1436:87;22220:7;22025:243;;;;;;-1:-1:-1;;;;;;22025:243:0;;;-1:-1:-1;;;;;22679:15:1;;;22025:243:0;;;22661:34:1;22711:18;;;22704:34;;;;22754:18;;;22747:34;;;;22797:18;;;22790:34;22861:15;;;22840:19;;;22833:44;22242:15:0;22893:19:1;;;22886:35;22595:19;;22025:243:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21781:495;;:::o;2904:317::-;3019:6;2994:21;:31;;2986:73;;;;-1:-1:-1;;;2986:73:0;;23445:2:1;2986:73:0;;;23427:21:1;23484:2;23464:18;;;23457:30;23523:31;23503:18;;;23496:59;23572:18;;2986:73:0;23243:353:1;2986:73:0;3073:12;3091:9;-1:-1:-1;;;;;3091:14:0;3113:6;3091:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3072:52;;;3143:7;3135:78;;;;-1:-1:-1;;;3135:78:0;;24013:2:1;3135:78:0;;;23995:21:1;24052:2;24032:18;;;24025:30;24091:34;24071:18;;;24064:62;24162:28;24142:18;;;24135:56;24208:19;;3135:78:0;23811:422:1;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;150:247;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;402:597::-;514:4;543:2;572;561:9;554:21;604:6;598:13;647:6;642:2;631:9;627:18;620:34;672:1;682:140;696:6;693:1;690:13;682:140;;;791:14;;;787:23;;781:30;757:17;;;776:2;753:26;746:66;711:10;;682:140;;;840:6;837:1;834:13;831:91;;;910:1;905:2;896:6;885:9;881:22;877:31;870:42;831:91;-1:-1:-1;983:2:1;962:15;-1:-1:-1;;958:29:1;943:45;;;;990:2;939:54;;402:597;-1:-1:-1;;;402:597:1:o;1004:315::-;1072:6;1080;1133:2;1121:9;1112:7;1108:23;1104:32;1101:52;;;1149:1;1146;1139:12;1101:52;1188:9;1175:23;1207:31;1232:5;1207:31;:::i;:::-;1257:5;1309:2;1294:18;;;;1281:32;;-1:-1:-1;;;1004:315:1:o;1516:127::-;1577:10;1572:3;1568:20;1565:1;1558:31;1608:4;1605:1;1598:15;1632:4;1629:1;1622:15;1648:275;1719:2;1713:9;1784:2;1765:13;;-1:-1:-1;;1761:27:1;1749:40;;1819:18;1804:34;;1840:22;;;1801:62;1798:88;;;1866:18;;:::i;:::-;1902:2;1895:22;1648:275;;-1:-1:-1;1648:275:1:o;1928:183::-;1988:4;2021:18;2013:6;2010:30;2007:56;;;2043:18;;:::i;:::-;-1:-1:-1;2088:1:1;2084:14;2100:4;2080:25;;1928:183::o;2116:737::-;2170:5;2223:3;2216:4;2208:6;2204:17;2200:27;2190:55;;2241:1;2238;2231:12;2190:55;2277:6;2264:20;2303:4;2327:60;2343:43;2383:2;2343:43;:::i;:::-;2327:60;:::i;:::-;2421:15;;;2507:1;2503:10;;;;2491:23;;2487:32;;;2452:12;;;;2531:15;;;2528:35;;;2559:1;2556;2549:12;2528:35;2595:2;2587:6;2583:15;2607:217;2623:6;2618:3;2615:15;2607:217;;;2703:3;2690:17;2720:31;2745:5;2720:31;:::i;:::-;2764:18;;2802:12;;;;2640;;2607:217;;;-1:-1:-1;2842:5:1;2116:737;-1:-1:-1;;;;;;2116:737:1:o;2858:118::-;2944:5;2937:13;2930:21;2923:5;2920:32;2910:60;;2966:1;2963;2956:12;2981:477;3071:6;3079;3132:2;3120:9;3111:7;3107:23;3103:32;3100:52;;;3148:1;3145;3138:12;3100:52;3188:9;3175:23;3221:18;3213:6;3210:30;3207:50;;;3253:1;3250;3243:12;3207:50;3276:61;3329:7;3320:6;3309:9;3305:22;3276:61;:::i;:::-;3266:71;;;3387:2;3376:9;3372:18;3359:32;3400:28;3422:5;3400:28;:::i;:::-;3447:5;3437:15;;;2981:477;;;;;:::o;3645:456::-;3722:6;3730;3738;3791:2;3779:9;3770:7;3766:23;3762:32;3759:52;;;3807:1;3804;3797:12;3759:52;3846:9;3833:23;3865:31;3890:5;3865:31;:::i;:::-;3915:5;-1:-1:-1;3972:2:1;3957:18;;3944:32;3985:33;3944:32;3985:33;:::i;:::-;3645:456;;4037:7;;-1:-1:-1;;;4091:2:1;4076:18;;;;4063:32;;3645:456::o;4106:180::-;4165:6;4218:2;4206:9;4197:7;4193:23;4189:32;4186:52;;;4234:1;4231;4224:12;4186:52;-1:-1:-1;4257:23:1;;4106:180;-1:-1:-1;4106:180:1:o;4480:241::-;4536:6;4589:2;4577:9;4568:7;4564:23;4560:32;4557:52;;;4605:1;4602;4595:12;4557:52;4644:9;4631:23;4663:28;4685:5;4663:28;:::i;4726:388::-;4794:6;4802;4855:2;4843:9;4834:7;4830:23;4826:32;4823:52;;;4871:1;4868;4861:12;4823:52;4910:9;4897:23;4929:31;4954:5;4929:31;:::i;:::-;4979:5;-1:-1:-1;5036:2:1;5021:18;;5008:32;5049:33;5008:32;5049:33;:::i;5119:309::-;5184:6;5192;5245:2;5233:9;5224:7;5220:23;5216:32;5213:52;;;5261:1;5258;5251:12;5213:52;5297:9;5284:23;5274:33;;5357:2;5346:9;5342:18;5329:32;5370:28;5392:5;5370:28;:::i;5433:248::-;5501:6;5509;5562:2;5550:9;5541:7;5537:23;5533:32;5530:52;;;5578:1;5575;5568:12;5530:52;-1:-1:-1;;5601:23:1;;;5671:2;5656:18;;;5643:32;;-1:-1:-1;5433:248:1:o;5686:382::-;5751:6;5759;5812:2;5800:9;5791:7;5787:23;5783:32;5780:52;;;5828:1;5825;5818:12;5780:52;5867:9;5854:23;5886:31;5911:5;5886:31;:::i;:::-;5936:5;-1:-1:-1;5993:2:1;5978:18;;5965:32;6006:30;5965:32;6006:30;:::i;6073:454::-;6168:6;6176;6184;6192;6200;6253:3;6241:9;6232:7;6228:23;6224:33;6221:53;;;6270:1;6267;6260:12;6221:53;-1:-1:-1;;6293:23:1;;;6363:2;6348:18;;6335:32;;-1:-1:-1;6414:2:1;6399:18;;6386:32;;6465:2;6450:18;;6437:32;;-1:-1:-1;6516:3:1;6501:19;6488:33;;-1:-1:-1;6073:454:1;-1:-1:-1;6073:454:1:o;6532:1138::-;6650:6;6658;6711:2;6699:9;6690:7;6686:23;6682:32;6679:52;;;6727:1;6724;6717:12;6679:52;6767:9;6754:23;6796:18;6837:2;6829:6;6826:14;6823:34;;;6853:1;6850;6843:12;6823:34;6876:61;6929:7;6920:6;6909:9;6905:22;6876:61;:::i;:::-;6866:71;;6956:2;6946:12;;7011:2;7000:9;6996:18;6983:32;7040:2;7030:8;7027:16;7024:36;;;7056:1;7053;7046:12;7024:36;7079:24;;;-1:-1:-1;7134:4:1;7126:13;;7122:27;-1:-1:-1;7112:55:1;;7163:1;7160;7153:12;7112:55;7199:2;7186:16;7222:60;7238:43;7278:2;7238:43;:::i;7222:60::-;7316:15;;;7398:1;7394:10;;;;7386:19;;7382:28;;;7347:12;;;;7422:19;;;7419:39;;;7454:1;7451;7444:12;7419:39;7478:11;;;;7498:142;7514:6;7509:3;7506:15;7498:142;;;7580:17;;7568:30;;7531:12;;;;7618;;;;7498:142;;;7659:5;7649:15;;;;;;;6532:1138;;;;;:::o;8351:309::-;8416:6;8424;8477:2;8465:9;8456:7;8452:23;8448:32;8445:52;;;8493:1;8490;8483:12;8445:52;8532:9;8519:23;8551:28;8573:5;8551:28;:::i;8888:356::-;9090:2;9072:21;;;9109:18;;;9102:30;9168:34;9163:2;9148:18;;9141:62;9235:2;9220:18;;8888:356::o;9249:347::-;9451:2;9433:21;;;9490:2;9470:18;;;9463:30;9529:25;9524:2;9509:18;;9502:53;9587:2;9572:18;;9249:347::o;9601:127::-;9662:10;9657:3;9653:20;9650:1;9643:31;9693:4;9690:1;9683:15;9717:4;9714:1;9707:15;9733:127;9794:10;9789:3;9785:20;9782:1;9775:31;9825:4;9822:1;9815:15;9849:4;9846:1;9839:15;9865:135;9904:3;9925:17;;;9922:43;;9945:18;;:::i;:::-;-1:-1:-1;9992:1:1;9981:13;;9865:135::o;10414:125::-;10454:4;10482:1;10479;10476:8;10473:34;;;10487:18;;:::i;:::-;-1:-1:-1;10524:9:1;;10414:125::o;10955:217::-;10995:1;11021;11011:132;;11065:10;11060:3;11056:20;11053:1;11046:31;11100:4;11097:1;11090:15;11128:4;11125:1;11118:15;11011:132;-1:-1:-1;11157:9:1;;10955:217::o;11529:127::-;11590:10;11585:3;11581:20;11578:1;11571:31;11621:4;11618:1;11611:15;11645:4;11642:1;11635:15;11661:128;11701:3;11732:1;11728:6;11725:1;11722:13;11719:39;;;11738:18;;:::i;:::-;-1:-1:-1;11774:9:1;;11661:128::o;12433:245::-;12500:6;12553:2;12541:9;12532:7;12528:23;12524:32;12521:52;;;12569:1;12566;12559:12;12521:52;12601:9;12595:16;12620:28;12642:5;12620:28;:::i;13039:422::-;13128:1;13171:5;13128:1;13185:270;13206:7;13196:8;13193:21;13185:270;;;13265:4;13261:1;13257:6;13253:17;13247:4;13244:27;13241:53;;;13274:18;;:::i;:::-;13324:7;13314:8;13310:22;13307:55;;;13344:16;;;;13307:55;13423:22;;;;13383:15;;;;13185:270;;;13189:3;13039:422;;;;;:::o;13466:806::-;13515:5;13545:8;13535:80;;-1:-1:-1;13586:1:1;13600:5;;13535:80;13634:4;13624:76;;-1:-1:-1;13671:1:1;13685:5;;13624:76;13716:4;13734:1;13729:59;;;;13802:1;13797:130;;;;13709:218;;13729:59;13759:1;13750:10;;13773:5;;;13797:130;13834:3;13824:8;13821:17;13818:43;;;13841:18;;:::i;:::-;-1:-1:-1;;13897:1:1;13883:16;;13912:5;;13709:218;;14011:2;14001:8;13998:16;13992:3;13986:4;13983:13;13979:36;13973:2;13963:8;13960:16;13955:2;13949:4;13946:12;13942:35;13939:77;13936:159;;;-1:-1:-1;14048:19:1;;;14080:5;;13936:159;14127:34;14152:8;14146:4;14127:34;:::i;:::-;14197:6;14193:1;14189:6;14185:19;14176:7;14173:32;14170:58;;;14208:18;;:::i;:::-;14246:20;;13466:806;-1:-1:-1;;;13466:806:1:o;14277:140::-;14335:5;14364:47;14405:4;14395:8;14391:19;14385:4;14364:47;:::i;14422:168::-;14462:7;14528:1;14524;14520:6;14516:14;14513:1;14510:21;14505:1;14498:9;14491:17;14487:45;14484:71;;;14535:18;;:::i;:::-;-1:-1:-1;14575:9:1;;14422:168::o;21079:251::-;21149:6;21202:2;21190:9;21181:7;21177:23;21173:32;21170:52;;;21218:1;21215;21208:12;21170:52;21250:9;21244:16;21269:31;21294:5;21269:31;:::i;21335:980::-;21597:4;21645:3;21634:9;21630:19;21676:6;21665:9;21658:25;21702:2;21740:6;21735:2;21724:9;21720:18;21713:34;21783:3;21778:2;21767:9;21763:18;21756:31;21807:6;21842;21836:13;21873:6;21865;21858:22;21911:3;21900:9;21896:19;21889:26;;21950:2;21942:6;21938:15;21924:29;;21971:1;21981:195;21995:6;21992:1;21989:13;21981:195;;;22060:13;;-1:-1:-1;;;;;22056:39:1;22044:52;;22151:15;;;;22116:12;;;;22092:1;22010:9;21981:195;;;-1:-1:-1;;;;;;;22232:32:1;;;;22227:2;22212:18;;22205:60;-1:-1:-1;;;22296:3:1;22281:19;22274:35;22193:3;21335:980;-1:-1:-1;;;21335:980:1:o;22932:306::-;23020:6;23028;23036;23089:2;23077:9;23068:7;23064:23;23060:32;23057:52;;;23105:1;23102;23095:12;23057:52;23134:9;23128:16;23118:26;;23184:2;23173:9;23169:18;23163:25;23153:35;;23228:2;23217:9;23213:18;23207:25;23197:35;;22932:306;;;;;:::o

Swarm Source

ipfs://94f2af2078f3043c027ff8a02f996e2a68c9721e022729f3314114f251f540fb
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.