ETH Price: $3,061.60 (-6.27%)
 

Overview

Max Total Supply

100,000,000,000 SAI

Holders

30

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
815,000,000 SAI

Value
$0.00
0xb5d1c2d972ba48f76dcffa733fe23e7f5e8a445f
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:
SiegeAIProtocol

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-04-23
*/

/**
Website: https://siegeprotocol.xyz/menu

Telegram: https://t.me/siegeprotocol

X Twitter: https://twitter.com/siegeprotocol

Gitbook: https://siege-protocol.gitbook.io/siegeprotocol/
*/

// SPDX-License-Identifier: NOLICENSE

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 SiegeAIProtocol 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 = true;
    bool public swapEnabled = true;
    bool private swapping;
    
    //Anti Dump
    mapping(address => uint256) private _lastSell;
    bool public coolDownEnabled = false;
    uint256 public coolDownTime = 0 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 = 100000000000 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    uint256 public swapTokensAtAmount = 500000000 * 10**9;
    uint256 public maxBuyLimit = 1500000000 * 10**9;
    uint256 public maxSellLimit = 1500000000 * 10**9;
    uint256 public maxWalletLimit = 1500000000 * 10**9;
    
    uint256 public genesis_block;
    
    address public marketingWallet = 0x14ce7951B145A528e0125a8E56698bd5caA94E72;
    address public RewardWallet = 0xDf64C2d49E837725574DDd74f7834517ccC4A011;
    address public TeamWallet = 0x14ce7951B145A528e0125a8E56698bd5caA94E72;

    string private constant _name = "Siege AI Protocol";
    string private constant _symbol = "SAI";

    struct Taxes {
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity; 
        uint256 Reward;
        uint256 team;
    }

    Taxes public taxes = Taxes(0, 32, 0, 3, 0);
    Taxes public sellTaxes = Taxes(0, 32, 0, 3, 0);

    struct TotFeesPaidStruct{
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity; 
        uint256 Reward;
        uint256 team;
    }
    
    TotFeesPaidStruct public totFeesPaid;

    struct valuesFromGetValues{
      uint256 rAmount;
      uint256 rTransferAmount;
      uint256 rRfi;
      uint256 rMarketing;
      uint256 rLiquidity;
      uint256 rReward;
      uint256 rTeam;
      uint256 tTransferAmount;
      uint256 tRfi;
      uint256 tMarketing;
      uint256 tLiquidity;
      uint256 tReward;
      uint256 tTeam;
    }

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

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

    constructor () {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        router = _router;
        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[RewardWallet] = true;
        _isExcludedFromFee[TeamWallet] = true;
        
        allowedTransfer[address(this)] = true;
        allowedTransfer[owner()] = true;
        allowedTransfer[pair] = true;
        allowedTransfer[marketingWallet] = true;
        allowedTransfer[RewardWallet] = true;
        allowedTransfer[TeamWallet] = 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 _Reward, uint256 _team) public onlyOwner {
       taxes = Taxes(_rfi,_marketing,_liquidity,_Reward,_team);
        emit FeesChanged();
    }
    
    function setSellTaxes(uint256 _rfi, uint256 _marketing, uint256 _liquidity, uint256 _Reward, uint256 _team) public onlyOwner {
       sellTaxes = Taxes(_rfi,_marketing,_liquidity,_Reward,_team);
        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 _takeReward(uint256 rReward, uint256 tReward) private {
        totFeesPaid.Reward +=tReward;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tReward;
        }
        _rOwned[address(this)] +=rReward;
    }

    function _takeTeam(uint256 rTeam, uint256 tTeam) private {
        totFeesPaid.team +=tTeam;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tTeam;
        }
        _rOwned[address(this)] +=rTeam;
    }

    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.rTeam) = _getRValues1(to_return, tAmount, takeFee, _getRate());
    (to_return.rReward) = _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.tReward = tAmount*temp.Reward/100;
        s.tTeam = tAmount*temp.team/100;
        s.tTransferAmount = tAmount-s.tRfi-s.tMarketing-s.tLiquidity-s.tReward-s.tTeam;
        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 rTeam) {
        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 rReward = s.tReward * currentRate;
        rTeam = s.tTeam * currentRate;
        rTransferAmount = rAmount - rRfi - rMarketing - rLiquidity - rReward - rTeam;
        return (rAmount, rTransferAmount, rRfi, rMarketing, rLiquidity, rTeam);
    }
    
    function _getRValues2(valuesFromGetValues memory s, bool takeFee, uint256 currentRate) private pure returns (uint256 rReward) {
        if (!takeFee) {
            return (0);
        }

        rReward = s.tReward * currentRate;
        return (rReward);
    }

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

        bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount;
        if (!swapping && swapEnabled && canSwap && from != pair && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
        swapAndLiquify(swapTokensAtAmount, to == pair ? sellTaxes : 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.tReward + s.tTeam);
        }
        if (s.rMarketing > 0 || s.tMarketing > 0) _takeMarketing(s.rMarketing, s.tMarketing);
        if (s.rReward > 0 || s.tReward > 0) _takeReward(s.rReward, s.tReward);
        if (s.tTeam > 0) _transfer(sender, TeamWallet, s.tTeam); // Transfer tokens to the team wallet
        
        emit Transfer(sender, recipient, s.tTransferAmount);
    }

    function swapAndLiquify(uint256 contractBalance, Taxes memory temp) private lockTheSwap {
        uint256 denominator = (temp.liquidity + temp.marketing + temp.Reward + temp.team) * 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) {
         addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
        }

        uint256 marketingAmt = unitBalance * 2 * temp.marketing;
        if (marketingAmt > 0) {
           payable(marketingWallet).sendValue(marketingAmt);
        }
        uint256 RewardAmt = unitBalance * 2 * temp.Reward;
        if (RewardAmt > 0) {
            payable(RewardWallet).sendValue(RewardAmt);
        }
        uint256 teamAmt = unitBalance * 2 * temp.team;
     if (teamAmt > 0) {
            payable(TeamWallet).sendValue(teamAmt);  // Transfer ETH to the team wallet
        }
    }

    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 updateRewardWallet(address newWallet) external onlyOwner{
        RewardWallet = newWallet;
    }

    function updateTeamWallet(address newWallet) external onlyOwner{
        TeamWallet = 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 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 manualSell(uint256 tokenAmount) external onlyOwner {
      require(tokenAmount <= balanceOf(address(this)), "Not enough tokens in contract to sell");
      swapTokensForETH(tokenAmount);
    }
    
    //Use this in case ETH are sent to the contract by mistake
    function rescueETH(uint256 weiAmount) external onlyOwner{
        require(address(this).balance >= weiAmount, "insufficient ETH balance");
        payable(msg.sender).transfer(weiAmount);
    }
    

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

    receive() external payable{
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"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":[],"name":"RewardWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TeamWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"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":[],"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":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"manualSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"rescueAnyERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"Reward","type":"uint256"},{"internalType":"uint256","name":"team","type":"uint256"}],"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":"_Reward","type":"uint256"},{"internalType":"uint256","name":"_team","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":"_Reward","type":"uint256"},{"internalType":"uint256","name":"_team","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":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"Reward","type":"uint256"},{"internalType":"uint256","name":"team","type":"uint256"}],"stateMutability":"view","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":"Reward","type":"uint256"},{"internalType":"uint256","name":"team","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":"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":"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":"newWallet","type":"address"}],"name":"updateRewardWallet","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":"address","name":"newWallet","type":"address"}],"name":"updateTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526009805461ffff1916610101178155600b805460ff191690556000600c556200002f90600a620009f8565b620000409064174876e80062000ab9565b600f819055620000539060001962000b13565b620000619060001962000adb565b6010556706f05b59d3b200006011556714d1120d7b16000060128190556013819055601455601680546001600160a01b03199081167314ce7951b145a528e0125a8e56698bd5caa94e7290811790925560178054821673df64c2d49e837725574ddd74f7834517ccc4a0111790556018805490911690911790556040805160a08082018352600080835260208084018190528385018290526003606080860182905260809586018490526019849055601a839055601b849055601c829055601d8490558651948501875283855284830183905295840183905294830185905291909201829052601e829055601f8190558190556021919091556022553480156200016a57600080fd5b50620001763362000543565b600d80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051600091839163c45a015591600480820192602092909190829003018186803b158015620001db57600080fd5b505afa158015620001f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021691906200096d565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200025f57600080fd5b505afa15801562000274573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029a91906200096d565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002e357600080fd5b505af1158015620002f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031e91906200096d565b600d80546001600160a01b038086166001600160a01b031992831617909255600e805492841692909116821790559091506200035a9062000593565b60105460016000620003746000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120939093553083526004918290528220805460ff1916600190811790915591620003c36000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560165482168152600484528281208054861660019081179091556017548316825283822080548716821790556018549092168152828120805486168317905530815260069384905291822080549094168117909355620004596000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600e54821681526006909352818320805485166001908117909155601654821684528284208054861682179055601754821684528284208054861682179055601854909116835291208054909216179055620004eb6000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600f546040516200053391815260200190565b60405180910390a3505062000b6c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b03163314620005f35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b03811660009081526005602052604090205460ff16156200065e5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401620005ea565b6001600160a01b03811660009081526001602052604090205415620006bb576001600160a01b038116600090815260016020526040902054620006a19062000721565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b60006010548211156200078a5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401620005ea565b600062000796620007ab565b9050620007a4818462000998565b9392505050565b60008080620007b9620007d1565b9092509050620007ca818362000998565b9250505090565b601054600f546000918291825b600854811015620009395782600160006008848154811062000804576200080462000b56565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806200087357508160026000600884815481106200084c576200084c62000b56565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156200088a57601054600f54945094505050509091565b6001600060088381548110620008a457620008a462000b56565b60009182526020808320909101546001600160a01b03168352820192909252604001902054620008d5908462000adb565b92506002600060088381548110620008f157620008f162000b56565b60009182526020808320909101546001600160a01b0316835282019290925260400190205462000922908362000adb565b915080620009308162000af5565b915050620007de565b50600f546010546200094c919062000998565b8210156200096457601054600f549350935050509091565b90939092509050565b6000602082840312156200098057600080fd5b81516001600160a01b0381168114620007a457600080fd5b600082620009aa57620009aa62000b40565b500490565b600181815b80851115620009f0578160001904821115620009d457620009d462000b2a565b80851615620009e257918102915b93841c9390800290620009b4565b509250929050565b6000620007a460ff84168360008262000a145750600162000ab3565b8162000a235750600062000ab3565b816001811462000a3c576002811462000a475762000a67565b600191505062000ab3565b60ff84111562000a5b5762000a5b62000b2a565b50506001821b62000ab3565b5060208310610133831016604e8410600b841016171562000a8c575081810a62000ab3565b62000a988383620009af565b806000190482111562000aaf5762000aaf62000b2a565b0290505b92915050565b600081600019048311821515161562000ad65762000ad662000b2a565b500290565b60008282101562000af05762000af062000b2a565b500390565b600060001982141562000b0c5762000b0c62000b2a565b5060010190565b60008262000b255762000b2562000b40565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b613acf8062000b7c6000396000f3fe60806040526004361061037a5760003560e01c8063715018a6116101d1578063aacebbe311610102578063dd62ed3e116100a0578063ee36e3591161006f578063ee36e35914610ad1578063f2fde38b14610aeb578063f66895a314610b0b578063f887ea4014610b3257600080fd5b8063dd62ed3e14610a35578063e2f4560514610a7b578063e517f2b914610a91578063ea2f0b3714610ab157600080fd5b8063cc600f91116100dc578063cc600f91146109bf578063d257b34f146109df578063d2ce0db2146109ff578063d8672e5114610a1557600080fd5b8063aacebbe31461095f578063b5c571451461097f578063c791fc541461099f57600080fd5b8063924de9b71161016f5780639e252f00116101495780639e252f00146108df578063a457c2d7146108ff578063a8aa1b311461091f578063a9059cbb1461093f57600080fd5b8063924de9b71461086c57806395d89b411461088c5780639ba5e4d5146108b857600080fd5b80637cb332bb116101ab5780637cb332bb146107d557806388f82020146107f55780638da5cb5b1461082e5780638e2839ff1461084c57600080fd5b8063715018a614610751578063728f8eea1461076657806375f0a874146107b557600080fd5b80634549b039116102ab578063652e2f04116102495780636aa5b37f116102235780636aa5b37f146106dc5780636ddd1713146106f2578063706f69371461071157806370a082311461073157600080fd5b8063652e2f041461069057806366a88d96146106a6578063677a8870146106bc57600080fd5b80635342acb4116102855780635342acb4146105e757806359759f61146106205780635fcefa421461064057806362695eae1461066057600080fd5b80634549b0391461058d5780634ada218b146105ad57806352390c02146105c757600080fd5b80632d838119116103185780633685d419116102f25780633685d4191461050d578063379ba1d91461052d578063395093511461054d578063437823ec1461056d57600080fd5b80632d83811914610499578063313ce567146104b9578063361ca077146104d557600080fd5b806318160ddd1161035457806318160ddd1461042457806323b872dd14610443578063274a533c146104635780632d4efa471461047957600080fd5b806306fdde0314610386578063095ea7b3146103d25780630d65df9b1461040257600080fd5b3661038157005b600080fd5b34801561039257600080fd5b5060408051808201909152601181527014da5959d948105248141c9bdd1bd8dbdb607a1b60208201525b6040516103c9919061371e565b60405180910390f35b3480156103de57600080fd5b506103f26103ed3660046134c8565b610b52565b60405190151581526020016103c9565b34801561040e57600080fd5b5061042261041d366004613459565b610bba565b005b34801561043057600080fd5b50600f545b6040519081526020016103c9565b34801561044f57600080fd5b506103f261045e366004613459565b610c6c565b34801561046f57600080fd5b5061043560155481565b34801561048557600080fd5b50610422610494366004613655565b610d66565b3480156104a557600080fd5b506104356104b4366004613655565b610e02565b3480156104c557600080fd5b50604051600981526020016103c9565b3480156104e157600080fd5b506017546104f5906001600160a01b031681565b6040516001600160a01b0390911681526020016103c9565b34801561051957600080fd5b506104226105283660046133e6565b610e86565b34801561053957600080fd5b506104226105483660046135fd565b61103d565b34801561055957600080fd5b506103f26105683660046134c8565b6110a2565b34801561057957600080fd5b506104226105883660046133e6565b611122565b34801561059957600080fd5b506104356105a836600461366e565b611170565b3480156105b957600080fd5b506009546103f29060ff1681565b3480156105d357600080fd5b506104226105e23660046133e6565b611204565b3480156105f357600080fd5b506103f26106023660046133e6565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561062c57600080fd5b5061042261063b366004613693565b611357565b34801561064c57600080fd5b5061042261065b3660046136e3565b6113b7565b34801561066c57600080fd5b506103f261067b3660046133e6565b60066020526000908152604090205460ff1681565b34801561069c57600080fd5b5061043560135481565b3480156106b257600080fd5b5061043560145481565b3480156106c857600080fd5b506018546104f5906001600160a01b031681565b3480156106e857600080fd5b5061043560125481565b3480156106fe57600080fd5b506009546103f290610100900460ff1681565b34801561071d57600080fd5b5061042261072c3660046134f4565b61144f565b34801561073d57600080fd5b5061043561074c3660046133e6565b61152d565b34801561075d57600080fd5b5061042261158c565b34801561077257600080fd5b50601954601a54601b54601c54601d5461078d949392919085565b604080519586526020860194909452928401919091526060830152608082015260a0016103c9565b3480156107c157600080fd5b506016546104f5906001600160a01b031681565b3480156107e157600080fd5b506104226107f03660046133e6565b6115c2565b34801561080157600080fd5b506103f26108103660046133e6565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561083a57600080fd5b506000546001600160a01b03166104f5565b34801561085857600080fd5b506104226108673660046135b6565b61160e565b34801561087857600080fd5b506104226108873660046135fd565b61169f565b34801561089857600080fd5b5060408051808201909152600381526253414960e81b60208201526103bc565b3480156108c457600080fd5b5060235460245460255460265460275461078d949392919085565b3480156108eb57600080fd5b506104226108fa366004613655565b6116e3565b34801561090b57600080fd5b506103f261091a3660046134c8565b61178a565b34801561092b57600080fd5b50600e546104f5906001600160a01b031681565b34801561094b57600080fd5b506103f261095a3660046134c8565b611870565b34801561096b57600080fd5b5061042261097a3660046133e6565b6118c5565b34801561098b57600080fd5b5061042261099a36600461349a565b611911565b3480156109ab57600080fd5b506104226109ba3660046136e3565b611966565b3480156109cb57600080fd5b506104226109da3660046133e6565b6119ff565b3480156109eb57600080fd5b506104226109fa366004613655565b611a4b565b348015610a0b57600080fd5b50610435600c5481565b348015610a2157600080fd5b50610422610a30366004613655565b611a91565b348015610a4157600080fd5b50610435610a50366004613420565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610a8757600080fd5b5061043560115481565b348015610a9d57600080fd5b50610422610aac366004613637565b611ad7565b348015610abd57600080fd5b50610422610acc3660046133e6565b611b23565b348015610add57600080fd5b50600b546103f29060ff1681565b348015610af757600080fd5b50610422610b063660046133e6565b611b6e565b348015610b1757600080fd5b50601e54601f5460205460215460225461078d949392919085565b348015610b3e57600080fd5b50600d546104f5906001600160a01b031681565b600954600090339060ff1680610b8057506001600160a01b03811660009081526006602052604090205460ff165b610ba55760405162461bcd60e51b8152600401610b9c906137a8565b60405180910390fd5b610bb0338585611c06565b5060019392505050565b6000546001600160a01b03163314610be45760405162461bcd60e51b8152600401610b9c90613773565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb90604401602060405180830381600087803b158015610c2e57600080fd5b505af1158015610c42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c66919061361a565b50505050565b600954600090849060ff1680610c9a57506001600160a01b03811660009081526006602052604090205460ff165b610cb65760405162461bcd60e51b8152600401610b9c906137a8565b610cc1858585611d2a565b6001600160a01b038516600090815260036020908152604080832033845290915290205483811015610d465760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610b9c565b610d5a8633610d5587856139ec565b611c06565b50600195945050505050565b6000546001600160a01b03163314610d905760405162461bcd60e51b8152600401610b9c90613773565b610d993061152d565b811115610df65760405162461bcd60e51b815260206004820152602560248201527f4e6f7420656e6f75676820746f6b656e7320696e20636f6e747261637420746f604482015264081cd95b1b60da1b6064820152608401610b9c565b610dff81612510565b50565b6000601054821115610e695760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b9c565b6000610e73612671565b9050610e7f81846138bd565b9392505050565b6000546001600160a01b03163314610eb05760405162461bcd60e51b8152600401610b9c90613773565b6001600160a01b03811660009081526005602052604090205460ff16610f185760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610b9c565b60005b60085481101561103957816001600160a01b031660088281548110610f4257610f42613a4a565b6000918252602090912001546001600160a01b031614156110275760088054610f6d906001906139ec565b81548110610f7d57610f7d613a4a565b600091825260209091200154600880546001600160a01b039092169183908110610fa957610fa9613a4a565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff19169055600880548061100157611001613a34565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b8061103181613a03565b915050610f1b565b5050565b6000546001600160a01b031633146110675760405162461bcd60e51b8152600401610b9c90613773565b6009805461ffff191661ff00198315159081169190911761010082021790915560011480156110965750601554155b15610dff574360155550565b600954600090339060ff16806110d057506001600160a01b03811660009081526006602052604090205460ff165b6110ec5760405162461bcd60e51b8152600401610b9c906137a8565b3360008181526003602090815260408083206001600160a01b0389168452909152902054610bb091908690610d559087906138a5565b6000546001600160a01b0316331461114c5760405162461bcd60e51b8152600401610b9c90613773565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000600f548311156111c45760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610b9c565b816111e25760006111d88460016000612694565b5191506111fe9050565b60006111f18460016000612694565b6020015191506111fe9050565b92915050565b6000546001600160a01b0316331461122e5760405162461bcd60e51b8152600401610b9c90613773565b6001600160a01b03811660009081526005602052604090205460ff16156112975760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b9c565b6001600160a01b038116600090815260016020526040902054156112f1576001600160a01b0381166000908152600160205260409020546112d790610e02565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6000546001600160a01b031633146113815760405162461bcd60e51b8152600401610b9c90613773565b61138d6009600a613922565b61139790836139cd565b6012556113a66009600a613922565b6113b090826139cd565b6013555050565b6000546001600160a01b031633146113e15760405162461bcd60e51b8152600401610b9c90613773565b6040805160a08101825286815260208101869052808201859052606081018490526080018290526019869055601a859055601b849055601c839055601d829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6000546001600160a01b031633146114795760405162461bcd60e51b8152600401610b9c90613773565b80518251146114ca5760405162461bcd60e51b815260206004820152601a60248201527f417272617973206d75737420686176652073616d652073697a650000000000006044820152606401610b9c565b60005b825181101561152857611516338483815181106114ec576114ec613a4a565b602002602001015184848151811061150657611506613a4a565b60200260200101516000806126f5565b8061152081613a03565b9150506114cd565b505050565b6001600160a01b03811660009081526005602052604081205460ff161561156a57506001600160a01b031660009081526002602052604090205490565b6001600160a01b0382166000908152600160205260409020546111fe90610e02565b6000546001600160a01b031633146115b65760405162461bcd60e51b8152600401610b9c90613773565b6115c060006129ff565b565b6000546001600160a01b031633146115ec5760405162461bcd60e51b8152600401610b9c90613773565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146116385760405162461bcd60e51b8152600401610b9c90613773565b60005b825181101561152857816004600085848151811061165b5761165b613a4a565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061169781613a03565b91505061163b565b6000546001600160a01b031633146116c95760405162461bcd60e51b8152600401610b9c90613773565b600980549115156101000261ff0019909216919091179055565b6000546001600160a01b0316331461170d5760405162461bcd60e51b8152600401610b9c90613773565b8047101561175d5760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e74204554482062616c616e636500000000000000006044820152606401610b9c565b604051339082156108fc029083906000818181858888f19350505050158015611039573d6000803e3d6000fd5b600954600090339060ff16806117b857506001600160a01b03811660009081526006602052604090205460ff165b6117d45760405162461bcd60e51b8152600401610b9c906137a8565b3360009081526003602090815260408083206001600160a01b0388168452909152902054838110156118565760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b9c565b6118653386610d5587856139ec565b506001949350505050565b600954600090339060ff168061189e57506001600160a01b03811660009081526006602052604090205460ff165b6118ba5760405162461bcd60e51b8152600401610b9c906137a8565b610bb0338585611d2a565b6000546001600160a01b031633146118ef5760405162461bcd60e51b8152600401610b9c90613773565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461193b5760405162461bcd60e51b8152600401610b9c90613773565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146119905760405162461bcd60e51b8152600401610b9c90613773565b6040805160a0810182528681526020808201879052818301869052606082018590526080909101839052601e879055601f86905584905560218390556022829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6000546001600160a01b03163314611a295760405162461bcd60e51b8152600401610b9c90613773565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611a755760405162461bcd60e51b8152600401610b9c90613773565b611a816009600a613922565b611a8b90826139cd565b60115550565b6000546001600160a01b03163314611abb5760405162461bcd60e51b8152600401610b9c90613773565b611ac76009600a613922565b611ad190826139cd565b60145550565b6000546001600160a01b03163314611b015760405162461bcd60e51b8152600401610b9c90613773565b611b0c8160016139cd565b600c5550600b805460ff1916911515919091179055565b6000546001600160a01b03163314611b4d5760405162461bcd60e51b8152600401610b9c90613773565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b03163314611b985760405162461bcd60e51b8152600401610b9c90613773565b6001600160a01b038116611bfd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b9c565b610dff816129ff565b6001600160a01b038316611c685760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b9c565b6001600160a01b038216611cc95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b9c565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d8e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b9c565b6001600160a01b038216611df05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b9c565b60008111611e525760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b9c565b611e5b8361152d565b811115611ec45760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610b9c565b6001600160a01b03831660009081526007602052604090205460ff16158015611f0657506001600160a01b03821660009081526007602052604090205460ff16155b611f425760405162461bcd60e51b815260206004820152600d60248201526c165bdd48185c99481848189bdd609a1b6044820152606401610b9c565b6001600160a01b03831660009081526004602052604090205460ff16158015611f8457506001600160a01b03821660009081526004602052604090205460ff16155b15611fd05760095460ff16611fd05760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b6044820152606401610b9c565b6001600160a01b03831660009081526004602052604090205460ff1615801561201257506001600160a01b03821660009081526004602052604090205460ff16155b801561202b57506015546120279060036138a5565b4311155b1561209a57600e546001600160a01b038381169116141561209a5760405162461bcd60e51b8152602060048201526024808201527f53656c6c73206e6f7420616c6c6f77656420666f72206669727374203320626c6044820152636f636b7360e01b6064820152608401610b9c565b600e546001600160a01b0384811691161480156120d057506001600160a01b03821660009081526004602052604090205460ff16155b80156120e5575060095462010000900460ff16155b156121a15760125481111561213c5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d69740000006044820152606401610b9c565b601454816121498461152d565b61215391906138a5565b11156121a15760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610b9c565b600e546001600160a01b038481169116148015906121d857506001600160a01b03821660009081526004602052604090205460ff16155b80156121fd57506001600160a01b03831660009081526004602052604090205460ff16155b8015612212575060095462010000900460ff16155b15612375576013548111156122695760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d697400006044820152606401610b9c565b600e546001600160a01b038381169116146122e3576014548161228b8461152d565b61229591906138a5565b11156122e35760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610b9c565b600b5460ff1615612375576001600160a01b0383166000908152600a602052604081205461231190426139ec565b9050600c548110156123585760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b6044820152606401610b9c565b506001600160a01b0383166000908152600a602052604090204290555b60006011546123833061152d565b600954911115915062010000900460ff161580156123a85750600954610100900460ff165b80156123b15750805b80156123cb5750600e546001600160a01b03858116911614155b80156123f057506001600160a01b03841660009081526004602052604090205460ff16155b801561241557506001600160a01b03831660009081526004602052604090205460ff16155b1561247f57601154600e5461247f91906001600160a01b0386811691161461243e576019612441565b601e5b6040805160a0810182528254815260018301546020820152600283015491810191909152600382015460608201526004909101546080820152612a4f565b60095460019060009062010000900460ff16806124b457506001600160a01b03861660009081526004602052604090205460ff165b806124d757506001600160a01b03851660009081526004602052604090205460ff165b156124e157600091505b600e546001600160a01b03868116911614156124fb575060015b61250886868685856126f5565b505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061254557612545613a4a565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561259957600080fd5b505afa1580156125ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d19190613403565b816001815181106125e4576125e4613a4a565b6001600160a01b039283166020918202929092010152600d5461260a9130911684611c06565b600d5460405163791ac94760e01b81526001600160a01b039091169063791ac947906126439085906000908690309042906004016137df565b600060405180830381600087803b15801561265d57600080fd5b505af1158015612508573d6000803e3d6000fd5b600080600061267e612bf5565b909250905061268d81836138bd565b9250505090565b61269c613303565b6126a7848484612d78565b90506126bc8185856126b7612671565b612f35565b60c0870152608086015260608501526040840152602083015281526126e981846126e4612671565b613009565b60a08201529392505050565b6000612702848484612694565b6001600160a01b03871660009081526005602052604090205490915060ff1615612764576001600160a01b03861660009081526002602052604090205461274a9085906139ec565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526005602052604090205460ff16156127c75760e08101516001600160a01b0386166000908152600260205260409020546127ad91906138a5565b6001600160a01b0386166000908152600260205260409020555b80516001600160a01b0387166000908152600160205260409020546127ec91906139ec565b6001600160a01b038088166000908152600160209081526040808320949094558401519188168152919091205461282391906138a5565b6001600160a01b038616600090815260016020526040908190209190915581015115158061285657506000816101000151115b1561286e5761286e8160400151826101000151613031565b60008160800151118061288657506000816101400151115b1561291b5761289e8160800151826101400151613066565b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8361018001518461016001518561012001518661014001516128f591906138a5565b6128ff91906138a5565b61290991906138a5565b60405190815260200160405180910390a35b60008160600151118061293357506000816101200151115b1561294b5761294b81606001518261012001516130dc565b60008160a00151118061296357506000816101600151115b1561297b5761297b8160a001518261016001516130f1565b610180810151156129a6576018546101808201516129a69188916001600160a01b0390911690611d2a565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360e001516040516129ef91815260200190565b60405180910390a3505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6009805462ff000019166201000017905560808101516060820151602083015160408401516000939291612a82916138a5565b612a8c91906138a5565b612a9691906138a5565b612aa19060026139cd565b9050600081836040015185612ab691906139cd565b612ac091906138bd565b90506000612ace82866139ec565b905047612ada82612510565b6000612ae682476139ec565b90506000866040015186612afa91906139ec565b612b0490836138bd565b90506000876040015182612b1891906139cd565b90508015612b2a57612b2a8682613106565b6020880151600090612b3d8460026139cd565b612b4791906139cd565b90508015612b6557601654612b65906001600160a01b0316826131ea565b6060890151600090612b788560026139cd565b612b8291906139cd565b90508015612ba057601754612ba0906001600160a01b0316826131ea565b60808a0151600090612bb38660026139cd565b612bbd91906139cd565b90508015612bdb57601854612bdb906001600160a01b0316826131ea565b50506009805462ff00001916905550505050505050505050565b601054600f546000918291825b600854811015612d4757826001600060088481548110612c2457612c24613a4a565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612c8f5750816002600060088481548110612c6857612c68613a4a565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612ca557601054600f54945094505050509091565b6001600060088381548110612cbc57612cbc613a4a565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612ceb90846139ec565b92506002600060088381548110612d0457612d04613a4a565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612d3390836139ec565b915080612d3f81613a03565b915050612c02565b50600f54601054612d5891906138bd565b821015612d6f57601054600f549350935050509091565b90939092509050565b612d80613303565b82612d915760e08101849052610e7f565b612dc36040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b8215612e0257506040805160a081018252601e548152601f54602080830191909152549181019190915260215460608201526022546080820152612e35565b506040805160a0810182526019548152601a546020820152601b5491810191909152601c546060820152601d5460808201525b8051606490612e4490876139cd565b612e4e91906138bd565b6101008301526020810151606490612e6690876139cd565b612e7091906138bd565b6101208301526040810151606490612e8890876139cd565b612e9291906138bd565b6101408301526060810151606490612eaa90876139cd565b612eb491906138bd565b6101608301526080810151606490612ecc90876139cd565b612ed691906138bd565b6101808301819052610160830151610140840151610120850151610100860151612f00908a6139ec565b612f0a91906139ec565b612f1491906139ec565b612f1e91906139ec565b612f2891906139ec565b60e0830152509392505050565b60008080808080612f46878a6139cd565b955087612f6157508493506000925082915081905080612ffc565b868a6101000151612f7291906139cd565b9350868a6101200151612f8591906139cd565b9250868a6101400151612f9891906139cd565b91506000878b6101600151612fad91906139cd565b9050878b6101800151612fc091906139cd565b915081818486612fd0898c6139ec565b612fda91906139ec565b612fe491906139ec565b612fee91906139ec565b612ff891906139ec565b9550505b9499939850945094509450565b60008261301857506000610e7f565b8184610160015161302991906139cd565b949350505050565b816010600082825461304391906139ec565b90915550506023805482919060009061305d9084906138a5565b90915550505050565b806023600201600082825461307b91906138a5565b90915550503060009081526005602052604090205460ff16156130bd5730600090815260026020526040812080548392906130b79084906138a5565b90915550505b306000908152600160205260408120805484929061305d9084906138a5565b806023600101600082825461307b91906138a5565b806023600301600082825461307b91906138a5565b600d5461311e9030906001600160a01b031684611c06565b600d546001600160a01b031663f305d7198230856000806131476000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b1580156131aa57600080fd5b505af11580156131be573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131e391906136b5565b5050505050565b8047101561323a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610b9c565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613287576040519150601f19603f3d011682016040523d82523d6000602084013e61328c565b606091505b50509050806115285760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610b9c565b604051806101a00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600082601f83011261337c57600080fd5b8135602061339161338c83613881565b613850565b80838252828201915082860187848660051b89010111156133b157600080fd5b60005b858110156133d95781356133c781613a76565b845292840192908401906001016133b4565b5090979650505050505050565b6000602082840312156133f857600080fd5b8135610e7f81613a76565b60006020828403121561341557600080fd5b8151610e7f81613a76565b6000806040838503121561343357600080fd5b823561343e81613a76565b9150602083013561344e81613a76565b809150509250929050565b60008060006060848603121561346e57600080fd5b833561347981613a76565b9250602084013561348981613a76565b929592945050506040919091013590565b600080604083850312156134ad57600080fd5b82356134b881613a76565b9150602083013561344e81613a8b565b600080604083850312156134db57600080fd5b82356134e681613a76565b946020939093013593505050565b6000806040838503121561350757600080fd5b823567ffffffffffffffff8082111561351f57600080fd5b61352b8683870161336b565b935060209150818501358181111561354257600080fd5b85019050601f8101861361355557600080fd5b803561356361338c82613881565b80828252848201915084840189868560051b870101111561358357600080fd5b600094505b838510156135a6578035835260019490940193918501918501613588565b5080955050505050509250929050565b600080604083850312156135c957600080fd5b823567ffffffffffffffff8111156135e057600080fd5b6135ec8582860161336b565b925050602083013561344e81613a8b565b60006020828403121561360f57600080fd5b8135610e7f81613a8b565b60006020828403121561362c57600080fd5b8151610e7f81613a8b565b6000806040838503121561364a57600080fd5b82356134e681613a8b565b60006020828403121561366757600080fd5b5035919050565b6000806040838503121561368157600080fd5b82359150602083013561344e81613a8b565b600080604083850312156136a657600080fd5b50508035926020909101359150565b6000806000606084860312156136ca57600080fd5b8351925060208401519150604084015190509250925092565b600080600080600060a086880312156136fb57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600060208083528351808285015260005b8181101561374b5785810183015185820160400152820161372f565b8181111561375d576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526017908201527f54726164696e67206e6f7420656e61626c656420796574000000000000000000604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561382f5784516001600160a01b03168352938301939183019160010161380a565b50506001600160a01b03969096166060850152505050608001529392505050565b604051601f8201601f1916810167ffffffffffffffff8111828210171561387957613879613a60565b604052919050565b600067ffffffffffffffff82111561389b5761389b613a60565b5060051b60200190565b600082198211156138b8576138b8613a1e565b500190565b6000826138da57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561391a57816000190482111561390057613900613a1e565b8085161561390d57918102915b93841c93908002906138e4565b509250929050565b6000610e7f60ff84168360008261393b575060016111fe565b81613948575060006111fe565b816001811461395e576002811461396857613984565b60019150506111fe565b60ff84111561397957613979613a1e565b50506001821b6111fe565b5060208310610133831016604e8410600b84101617156139a7575081810a6111fe565b6139b183836138df565b80600019048211156139c5576139c5613a1e565b029392505050565b60008160001904831182151516156139e7576139e7613a1e565b500290565b6000828210156139fe576139fe613a1e565b500390565b6000600019821415613a1757613a17613a1e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610dff57600080fd5b8015158114610dff57600080fdfea264697066735822122089c81bd06308019cf5ae74f03c3874ee2078dda14bd533e0ac106e40f8ac108e64736f6c63430008070033

Deployed Bytecode

0x60806040526004361061037a5760003560e01c8063715018a6116101d1578063aacebbe311610102578063dd62ed3e116100a0578063ee36e3591161006f578063ee36e35914610ad1578063f2fde38b14610aeb578063f66895a314610b0b578063f887ea4014610b3257600080fd5b8063dd62ed3e14610a35578063e2f4560514610a7b578063e517f2b914610a91578063ea2f0b3714610ab157600080fd5b8063cc600f91116100dc578063cc600f91146109bf578063d257b34f146109df578063d2ce0db2146109ff578063d8672e5114610a1557600080fd5b8063aacebbe31461095f578063b5c571451461097f578063c791fc541461099f57600080fd5b8063924de9b71161016f5780639e252f00116101495780639e252f00146108df578063a457c2d7146108ff578063a8aa1b311461091f578063a9059cbb1461093f57600080fd5b8063924de9b71461086c57806395d89b411461088c5780639ba5e4d5146108b857600080fd5b80637cb332bb116101ab5780637cb332bb146107d557806388f82020146107f55780638da5cb5b1461082e5780638e2839ff1461084c57600080fd5b8063715018a614610751578063728f8eea1461076657806375f0a874146107b557600080fd5b80634549b039116102ab578063652e2f04116102495780636aa5b37f116102235780636aa5b37f146106dc5780636ddd1713146106f2578063706f69371461071157806370a082311461073157600080fd5b8063652e2f041461069057806366a88d96146106a6578063677a8870146106bc57600080fd5b80635342acb4116102855780635342acb4146105e757806359759f61146106205780635fcefa421461064057806362695eae1461066057600080fd5b80634549b0391461058d5780634ada218b146105ad57806352390c02146105c757600080fd5b80632d838119116103185780633685d419116102f25780633685d4191461050d578063379ba1d91461052d578063395093511461054d578063437823ec1461056d57600080fd5b80632d83811914610499578063313ce567146104b9578063361ca077146104d557600080fd5b806318160ddd1161035457806318160ddd1461042457806323b872dd14610443578063274a533c146104635780632d4efa471461047957600080fd5b806306fdde0314610386578063095ea7b3146103d25780630d65df9b1461040257600080fd5b3661038157005b600080fd5b34801561039257600080fd5b5060408051808201909152601181527014da5959d948105248141c9bdd1bd8dbdb607a1b60208201525b6040516103c9919061371e565b60405180910390f35b3480156103de57600080fd5b506103f26103ed3660046134c8565b610b52565b60405190151581526020016103c9565b34801561040e57600080fd5b5061042261041d366004613459565b610bba565b005b34801561043057600080fd5b50600f545b6040519081526020016103c9565b34801561044f57600080fd5b506103f261045e366004613459565b610c6c565b34801561046f57600080fd5b5061043560155481565b34801561048557600080fd5b50610422610494366004613655565b610d66565b3480156104a557600080fd5b506104356104b4366004613655565b610e02565b3480156104c557600080fd5b50604051600981526020016103c9565b3480156104e157600080fd5b506017546104f5906001600160a01b031681565b6040516001600160a01b0390911681526020016103c9565b34801561051957600080fd5b506104226105283660046133e6565b610e86565b34801561053957600080fd5b506104226105483660046135fd565b61103d565b34801561055957600080fd5b506103f26105683660046134c8565b6110a2565b34801561057957600080fd5b506104226105883660046133e6565b611122565b34801561059957600080fd5b506104356105a836600461366e565b611170565b3480156105b957600080fd5b506009546103f29060ff1681565b3480156105d357600080fd5b506104226105e23660046133e6565b611204565b3480156105f357600080fd5b506103f26106023660046133e6565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561062c57600080fd5b5061042261063b366004613693565b611357565b34801561064c57600080fd5b5061042261065b3660046136e3565b6113b7565b34801561066c57600080fd5b506103f261067b3660046133e6565b60066020526000908152604090205460ff1681565b34801561069c57600080fd5b5061043560135481565b3480156106b257600080fd5b5061043560145481565b3480156106c857600080fd5b506018546104f5906001600160a01b031681565b3480156106e857600080fd5b5061043560125481565b3480156106fe57600080fd5b506009546103f290610100900460ff1681565b34801561071d57600080fd5b5061042261072c3660046134f4565b61144f565b34801561073d57600080fd5b5061043561074c3660046133e6565b61152d565b34801561075d57600080fd5b5061042261158c565b34801561077257600080fd5b50601954601a54601b54601c54601d5461078d949392919085565b604080519586526020860194909452928401919091526060830152608082015260a0016103c9565b3480156107c157600080fd5b506016546104f5906001600160a01b031681565b3480156107e157600080fd5b506104226107f03660046133e6565b6115c2565b34801561080157600080fd5b506103f26108103660046133e6565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561083a57600080fd5b506000546001600160a01b03166104f5565b34801561085857600080fd5b506104226108673660046135b6565b61160e565b34801561087857600080fd5b506104226108873660046135fd565b61169f565b34801561089857600080fd5b5060408051808201909152600381526253414960e81b60208201526103bc565b3480156108c457600080fd5b5060235460245460255460265460275461078d949392919085565b3480156108eb57600080fd5b506104226108fa366004613655565b6116e3565b34801561090b57600080fd5b506103f261091a3660046134c8565b61178a565b34801561092b57600080fd5b50600e546104f5906001600160a01b031681565b34801561094b57600080fd5b506103f261095a3660046134c8565b611870565b34801561096b57600080fd5b5061042261097a3660046133e6565b6118c5565b34801561098b57600080fd5b5061042261099a36600461349a565b611911565b3480156109ab57600080fd5b506104226109ba3660046136e3565b611966565b3480156109cb57600080fd5b506104226109da3660046133e6565b6119ff565b3480156109eb57600080fd5b506104226109fa366004613655565b611a4b565b348015610a0b57600080fd5b50610435600c5481565b348015610a2157600080fd5b50610422610a30366004613655565b611a91565b348015610a4157600080fd5b50610435610a50366004613420565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610a8757600080fd5b5061043560115481565b348015610a9d57600080fd5b50610422610aac366004613637565b611ad7565b348015610abd57600080fd5b50610422610acc3660046133e6565b611b23565b348015610add57600080fd5b50600b546103f29060ff1681565b348015610af757600080fd5b50610422610b063660046133e6565b611b6e565b348015610b1757600080fd5b50601e54601f5460205460215460225461078d949392919085565b348015610b3e57600080fd5b50600d546104f5906001600160a01b031681565b600954600090339060ff1680610b8057506001600160a01b03811660009081526006602052604090205460ff165b610ba55760405162461bcd60e51b8152600401610b9c906137a8565b60405180910390fd5b610bb0338585611c06565b5060019392505050565b6000546001600160a01b03163314610be45760405162461bcd60e51b8152600401610b9c90613773565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb90604401602060405180830381600087803b158015610c2e57600080fd5b505af1158015610c42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c66919061361a565b50505050565b600954600090849060ff1680610c9a57506001600160a01b03811660009081526006602052604090205460ff165b610cb65760405162461bcd60e51b8152600401610b9c906137a8565b610cc1858585611d2a565b6001600160a01b038516600090815260036020908152604080832033845290915290205483811015610d465760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610b9c565b610d5a8633610d5587856139ec565b611c06565b50600195945050505050565b6000546001600160a01b03163314610d905760405162461bcd60e51b8152600401610b9c90613773565b610d993061152d565b811115610df65760405162461bcd60e51b815260206004820152602560248201527f4e6f7420656e6f75676820746f6b656e7320696e20636f6e747261637420746f604482015264081cd95b1b60da1b6064820152608401610b9c565b610dff81612510565b50565b6000601054821115610e695760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b9c565b6000610e73612671565b9050610e7f81846138bd565b9392505050565b6000546001600160a01b03163314610eb05760405162461bcd60e51b8152600401610b9c90613773565b6001600160a01b03811660009081526005602052604090205460ff16610f185760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610b9c565b60005b60085481101561103957816001600160a01b031660088281548110610f4257610f42613a4a565b6000918252602090912001546001600160a01b031614156110275760088054610f6d906001906139ec565b81548110610f7d57610f7d613a4a565b600091825260209091200154600880546001600160a01b039092169183908110610fa957610fa9613a4a565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff19169055600880548061100157611001613a34565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b8061103181613a03565b915050610f1b565b5050565b6000546001600160a01b031633146110675760405162461bcd60e51b8152600401610b9c90613773565b6009805461ffff191661ff00198315159081169190911761010082021790915560011480156110965750601554155b15610dff574360155550565b600954600090339060ff16806110d057506001600160a01b03811660009081526006602052604090205460ff165b6110ec5760405162461bcd60e51b8152600401610b9c906137a8565b3360008181526003602090815260408083206001600160a01b0389168452909152902054610bb091908690610d559087906138a5565b6000546001600160a01b0316331461114c5760405162461bcd60e51b8152600401610b9c90613773565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000600f548311156111c45760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610b9c565b816111e25760006111d88460016000612694565b5191506111fe9050565b60006111f18460016000612694565b6020015191506111fe9050565b92915050565b6000546001600160a01b0316331461122e5760405162461bcd60e51b8152600401610b9c90613773565b6001600160a01b03811660009081526005602052604090205460ff16156112975760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b9c565b6001600160a01b038116600090815260016020526040902054156112f1576001600160a01b0381166000908152600160205260409020546112d790610e02565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6000546001600160a01b031633146113815760405162461bcd60e51b8152600401610b9c90613773565b61138d6009600a613922565b61139790836139cd565b6012556113a66009600a613922565b6113b090826139cd565b6013555050565b6000546001600160a01b031633146113e15760405162461bcd60e51b8152600401610b9c90613773565b6040805160a08101825286815260208101869052808201859052606081018490526080018290526019869055601a859055601b849055601c839055601d829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6000546001600160a01b031633146114795760405162461bcd60e51b8152600401610b9c90613773565b80518251146114ca5760405162461bcd60e51b815260206004820152601a60248201527f417272617973206d75737420686176652073616d652073697a650000000000006044820152606401610b9c565b60005b825181101561152857611516338483815181106114ec576114ec613a4a565b602002602001015184848151811061150657611506613a4a565b60200260200101516000806126f5565b8061152081613a03565b9150506114cd565b505050565b6001600160a01b03811660009081526005602052604081205460ff161561156a57506001600160a01b031660009081526002602052604090205490565b6001600160a01b0382166000908152600160205260409020546111fe90610e02565b6000546001600160a01b031633146115b65760405162461bcd60e51b8152600401610b9c90613773565b6115c060006129ff565b565b6000546001600160a01b031633146115ec5760405162461bcd60e51b8152600401610b9c90613773565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146116385760405162461bcd60e51b8152600401610b9c90613773565b60005b825181101561152857816004600085848151811061165b5761165b613a4a565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061169781613a03565b91505061163b565b6000546001600160a01b031633146116c95760405162461bcd60e51b8152600401610b9c90613773565b600980549115156101000261ff0019909216919091179055565b6000546001600160a01b0316331461170d5760405162461bcd60e51b8152600401610b9c90613773565b8047101561175d5760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e74204554482062616c616e636500000000000000006044820152606401610b9c565b604051339082156108fc029083906000818181858888f19350505050158015611039573d6000803e3d6000fd5b600954600090339060ff16806117b857506001600160a01b03811660009081526006602052604090205460ff165b6117d45760405162461bcd60e51b8152600401610b9c906137a8565b3360009081526003602090815260408083206001600160a01b0388168452909152902054838110156118565760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b9c565b6118653386610d5587856139ec565b506001949350505050565b600954600090339060ff168061189e57506001600160a01b03811660009081526006602052604090205460ff165b6118ba5760405162461bcd60e51b8152600401610b9c906137a8565b610bb0338585611d2a565b6000546001600160a01b031633146118ef5760405162461bcd60e51b8152600401610b9c90613773565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461193b5760405162461bcd60e51b8152600401610b9c90613773565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146119905760405162461bcd60e51b8152600401610b9c90613773565b6040805160a0810182528681526020808201879052818301869052606082018590526080909101839052601e879055601f86905584905560218390556022829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6000546001600160a01b03163314611a295760405162461bcd60e51b8152600401610b9c90613773565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611a755760405162461bcd60e51b8152600401610b9c90613773565b611a816009600a613922565b611a8b90826139cd565b60115550565b6000546001600160a01b03163314611abb5760405162461bcd60e51b8152600401610b9c90613773565b611ac76009600a613922565b611ad190826139cd565b60145550565b6000546001600160a01b03163314611b015760405162461bcd60e51b8152600401610b9c90613773565b611b0c8160016139cd565b600c5550600b805460ff1916911515919091179055565b6000546001600160a01b03163314611b4d5760405162461bcd60e51b8152600401610b9c90613773565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b03163314611b985760405162461bcd60e51b8152600401610b9c90613773565b6001600160a01b038116611bfd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b9c565b610dff816129ff565b6001600160a01b038316611c685760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b9c565b6001600160a01b038216611cc95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b9c565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d8e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b9c565b6001600160a01b038216611df05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b9c565b60008111611e525760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b9c565b611e5b8361152d565b811115611ec45760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610b9c565b6001600160a01b03831660009081526007602052604090205460ff16158015611f0657506001600160a01b03821660009081526007602052604090205460ff16155b611f425760405162461bcd60e51b815260206004820152600d60248201526c165bdd48185c99481848189bdd609a1b6044820152606401610b9c565b6001600160a01b03831660009081526004602052604090205460ff16158015611f8457506001600160a01b03821660009081526004602052604090205460ff16155b15611fd05760095460ff16611fd05760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b6044820152606401610b9c565b6001600160a01b03831660009081526004602052604090205460ff1615801561201257506001600160a01b03821660009081526004602052604090205460ff16155b801561202b57506015546120279060036138a5565b4311155b1561209a57600e546001600160a01b038381169116141561209a5760405162461bcd60e51b8152602060048201526024808201527f53656c6c73206e6f7420616c6c6f77656420666f72206669727374203320626c6044820152636f636b7360e01b6064820152608401610b9c565b600e546001600160a01b0384811691161480156120d057506001600160a01b03821660009081526004602052604090205460ff16155b80156120e5575060095462010000900460ff16155b156121a15760125481111561213c5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d69740000006044820152606401610b9c565b601454816121498461152d565b61215391906138a5565b11156121a15760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610b9c565b600e546001600160a01b038481169116148015906121d857506001600160a01b03821660009081526004602052604090205460ff16155b80156121fd57506001600160a01b03831660009081526004602052604090205460ff16155b8015612212575060095462010000900460ff16155b15612375576013548111156122695760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d697400006044820152606401610b9c565b600e546001600160a01b038381169116146122e3576014548161228b8461152d565b61229591906138a5565b11156122e35760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610b9c565b600b5460ff1615612375576001600160a01b0383166000908152600a602052604081205461231190426139ec565b9050600c548110156123585760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b6044820152606401610b9c565b506001600160a01b0383166000908152600a602052604090204290555b60006011546123833061152d565b600954911115915062010000900460ff161580156123a85750600954610100900460ff165b80156123b15750805b80156123cb5750600e546001600160a01b03858116911614155b80156123f057506001600160a01b03841660009081526004602052604090205460ff16155b801561241557506001600160a01b03831660009081526004602052604090205460ff16155b1561247f57601154600e5461247f91906001600160a01b0386811691161461243e576019612441565b601e5b6040805160a0810182528254815260018301546020820152600283015491810191909152600382015460608201526004909101546080820152612a4f565b60095460019060009062010000900460ff16806124b457506001600160a01b03861660009081526004602052604090205460ff165b806124d757506001600160a01b03851660009081526004602052604090205460ff165b156124e157600091505b600e546001600160a01b03868116911614156124fb575060015b61250886868685856126f5565b505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061254557612545613a4a565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561259957600080fd5b505afa1580156125ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d19190613403565b816001815181106125e4576125e4613a4a565b6001600160a01b039283166020918202929092010152600d5461260a9130911684611c06565b600d5460405163791ac94760e01b81526001600160a01b039091169063791ac947906126439085906000908690309042906004016137df565b600060405180830381600087803b15801561265d57600080fd5b505af1158015612508573d6000803e3d6000fd5b600080600061267e612bf5565b909250905061268d81836138bd565b9250505090565b61269c613303565b6126a7848484612d78565b90506126bc8185856126b7612671565b612f35565b60c0870152608086015260608501526040840152602083015281526126e981846126e4612671565b613009565b60a08201529392505050565b6000612702848484612694565b6001600160a01b03871660009081526005602052604090205490915060ff1615612764576001600160a01b03861660009081526002602052604090205461274a9085906139ec565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526005602052604090205460ff16156127c75760e08101516001600160a01b0386166000908152600260205260409020546127ad91906138a5565b6001600160a01b0386166000908152600260205260409020555b80516001600160a01b0387166000908152600160205260409020546127ec91906139ec565b6001600160a01b038088166000908152600160209081526040808320949094558401519188168152919091205461282391906138a5565b6001600160a01b038616600090815260016020526040908190209190915581015115158061285657506000816101000151115b1561286e5761286e8160400151826101000151613031565b60008160800151118061288657506000816101400151115b1561291b5761289e8160800151826101400151613066565b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8361018001518461016001518561012001518661014001516128f591906138a5565b6128ff91906138a5565b61290991906138a5565b60405190815260200160405180910390a35b60008160600151118061293357506000816101200151115b1561294b5761294b81606001518261012001516130dc565b60008160a00151118061296357506000816101600151115b1561297b5761297b8160a001518261016001516130f1565b610180810151156129a6576018546101808201516129a69188916001600160a01b0390911690611d2a565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360e001516040516129ef91815260200190565b60405180910390a3505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6009805462ff000019166201000017905560808101516060820151602083015160408401516000939291612a82916138a5565b612a8c91906138a5565b612a9691906138a5565b612aa19060026139cd565b9050600081836040015185612ab691906139cd565b612ac091906138bd565b90506000612ace82866139ec565b905047612ada82612510565b6000612ae682476139ec565b90506000866040015186612afa91906139ec565b612b0490836138bd565b90506000876040015182612b1891906139cd565b90508015612b2a57612b2a8682613106565b6020880151600090612b3d8460026139cd565b612b4791906139cd565b90508015612b6557601654612b65906001600160a01b0316826131ea565b6060890151600090612b788560026139cd565b612b8291906139cd565b90508015612ba057601754612ba0906001600160a01b0316826131ea565b60808a0151600090612bb38660026139cd565b612bbd91906139cd565b90508015612bdb57601854612bdb906001600160a01b0316826131ea565b50506009805462ff00001916905550505050505050505050565b601054600f546000918291825b600854811015612d4757826001600060088481548110612c2457612c24613a4a565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612c8f5750816002600060088481548110612c6857612c68613a4a565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612ca557601054600f54945094505050509091565b6001600060088381548110612cbc57612cbc613a4a565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612ceb90846139ec565b92506002600060088381548110612d0457612d04613a4a565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612d3390836139ec565b915080612d3f81613a03565b915050612c02565b50600f54601054612d5891906138bd565b821015612d6f57601054600f549350935050509091565b90939092509050565b612d80613303565b82612d915760e08101849052610e7f565b612dc36040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b8215612e0257506040805160a081018252601e548152601f54602080830191909152549181019190915260215460608201526022546080820152612e35565b506040805160a0810182526019548152601a546020820152601b5491810191909152601c546060820152601d5460808201525b8051606490612e4490876139cd565b612e4e91906138bd565b6101008301526020810151606490612e6690876139cd565b612e7091906138bd565b6101208301526040810151606490612e8890876139cd565b612e9291906138bd565b6101408301526060810151606490612eaa90876139cd565b612eb491906138bd565b6101608301526080810151606490612ecc90876139cd565b612ed691906138bd565b6101808301819052610160830151610140840151610120850151610100860151612f00908a6139ec565b612f0a91906139ec565b612f1491906139ec565b612f1e91906139ec565b612f2891906139ec565b60e0830152509392505050565b60008080808080612f46878a6139cd565b955087612f6157508493506000925082915081905080612ffc565b868a6101000151612f7291906139cd565b9350868a6101200151612f8591906139cd565b9250868a6101400151612f9891906139cd565b91506000878b6101600151612fad91906139cd565b9050878b6101800151612fc091906139cd565b915081818486612fd0898c6139ec565b612fda91906139ec565b612fe491906139ec565b612fee91906139ec565b612ff891906139ec565b9550505b9499939850945094509450565b60008261301857506000610e7f565b8184610160015161302991906139cd565b949350505050565b816010600082825461304391906139ec565b90915550506023805482919060009061305d9084906138a5565b90915550505050565b806023600201600082825461307b91906138a5565b90915550503060009081526005602052604090205460ff16156130bd5730600090815260026020526040812080548392906130b79084906138a5565b90915550505b306000908152600160205260408120805484929061305d9084906138a5565b806023600101600082825461307b91906138a5565b806023600301600082825461307b91906138a5565b600d5461311e9030906001600160a01b031684611c06565b600d546001600160a01b031663f305d7198230856000806131476000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b1580156131aa57600080fd5b505af11580156131be573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131e391906136b5565b5050505050565b8047101561323a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610b9c565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613287576040519150601f19603f3d011682016040523d82523d6000602084013e61328c565b606091505b50509050806115285760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610b9c565b604051806101a00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600082601f83011261337c57600080fd5b8135602061339161338c83613881565b613850565b80838252828201915082860187848660051b89010111156133b157600080fd5b60005b858110156133d95781356133c781613a76565b845292840192908401906001016133b4565b5090979650505050505050565b6000602082840312156133f857600080fd5b8135610e7f81613a76565b60006020828403121561341557600080fd5b8151610e7f81613a76565b6000806040838503121561343357600080fd5b823561343e81613a76565b9150602083013561344e81613a76565b809150509250929050565b60008060006060848603121561346e57600080fd5b833561347981613a76565b9250602084013561348981613a76565b929592945050506040919091013590565b600080604083850312156134ad57600080fd5b82356134b881613a76565b9150602083013561344e81613a8b565b600080604083850312156134db57600080fd5b82356134e681613a76565b946020939093013593505050565b6000806040838503121561350757600080fd5b823567ffffffffffffffff8082111561351f57600080fd5b61352b8683870161336b565b935060209150818501358181111561354257600080fd5b85019050601f8101861361355557600080fd5b803561356361338c82613881565b80828252848201915084840189868560051b870101111561358357600080fd5b600094505b838510156135a6578035835260019490940193918501918501613588565b5080955050505050509250929050565b600080604083850312156135c957600080fd5b823567ffffffffffffffff8111156135e057600080fd5b6135ec8582860161336b565b925050602083013561344e81613a8b565b60006020828403121561360f57600080fd5b8135610e7f81613a8b565b60006020828403121561362c57600080fd5b8151610e7f81613a8b565b6000806040838503121561364a57600080fd5b82356134e681613a8b565b60006020828403121561366757600080fd5b5035919050565b6000806040838503121561368157600080fd5b82359150602083013561344e81613a8b565b600080604083850312156136a657600080fd5b50508035926020909101359150565b6000806000606084860312156136ca57600080fd5b8351925060208401519150604084015190509250925092565b600080600080600060a086880312156136fb57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600060208083528351808285015260005b8181101561374b5785810183015185820160400152820161372f565b8181111561375d576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526017908201527f54726164696e67206e6f7420656e61626c656420796574000000000000000000604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561382f5784516001600160a01b03168352938301939183019160010161380a565b50506001600160a01b03969096166060850152505050608001529392505050565b604051601f8201601f1916810167ffffffffffffffff8111828210171561387957613879613a60565b604052919050565b600067ffffffffffffffff82111561389b5761389b613a60565b5060051b60200190565b600082198211156138b8576138b8613a1e565b500190565b6000826138da57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561391a57816000190482111561390057613900613a1e565b8085161561390d57918102915b93841c93908002906138e4565b509250929050565b6000610e7f60ff84168360008261393b575060016111fe565b81613948575060006111fe565b816001811461395e576002811461396857613984565b60019150506111fe565b60ff84111561397957613979613a1e565b50506001821b6111fe565b5060208310610133831016604e8410600b84101617156139a7575081810a6111fe565b6139b183836138df565b80600019048211156139c5576139c5613a1e565b029392505050565b60008160001904831182151516156139e7576139e7613a1e565b500290565b6000828210156139fe576139fe613a1e565b500390565b6000600019821415613a1757613a17613a1e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610dff57600080fd5b8015158114610dff57600080fdfea264697066735822122089c81bd06308019cf5ae74f03c3874ee2078dda14bd533e0ac106e40f8ac108e64736f6c63430008070033

Deployed Bytecode Sourcemap

3403:21867:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7284:83;;;;;;;;;;-1:-1:-1;7354:5:0;;;;;;;;;;;;-1:-1:-1;;;7354:5:0;;;;7284:83;;;;;;;:::i;:::-;;;;;;;;8044:181;;;;;;;;;;-1:-1:-1;8044:181:0;;;;;:::i;:::-;;:::i;:::-;;;8278:14:1;;8271:22;8253:41;;8241:2;8226:18;8044:181:0;8113:187:1;25071:154:0;;;;;;;;;;-1:-1:-1;25071:154:0;;;;;:::i;:::-;;:::i;:::-;;7580:95;;;;;;;;;;-1:-1:-1;7660:7:0;;7580:95;;;19552:25:1;;;19540:2;19525:18;7580:95:0;19406:177:1;8233:430:0;;;;;;;;;;-1:-1:-1;8233:430:0;;;;;:::i;:::-;;:::i;4871:28::-;;;;;;;;;;;;;;;;24581:204;;;;;;;;;;-1:-1:-1;24581:204:0;;;;;:::i;:::-;;:::i;10324:248::-;;;;;;;;;;-1:-1:-1;10324:248:0;;;;;:::i;:::-;;:::i;7466:83::-;;;;;;;;;;-1:-1:-1;7466:83:0;;4461:1;21183:36:1;;21171:2;21156:18;7466:83:0;21041:184:1;4994:72:0;;;;;;;;;;-1:-1:-1;4994:72:0;;;;-1:-1:-1;;;;;4994:72:0;;;;;;-1:-1:-1;;;;;7178:32:1;;;7160:51;;7148:2;7133:18;4994:72:0;7014:203:1;10921:475:0;;;;;;;;;;-1:-1:-1;10921:475:0;;;;;:::i;:::-;;:::i;10110:206::-;;;;;;;;;;-1:-1:-1;10110:206:0;;;;;:::i;:::-;;:::i;8671:228::-;;;;;;;;;;-1:-1:-1;8671:228:0;;;;;:::i;:::-;;:::i;11404:111::-;;;;;;;;;;-1:-1:-1;11404:111:0;;;;;:::i;:::-;;:::i;9632:470::-;;;;;;;;;;-1:-1:-1;9632:470:0;;;;;:::i;:::-;;:::i;3946:33::-;;;;;;;;;;-1:-1:-1;3946:33:0;;;;;;;;10580:333;;;;;;;;;;-1:-1:-1;10580:333:0;;;;;:::i;:::-;;:::i;11641:123::-;;;;;;;;;;-1:-1:-1;11641:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;11729:27:0;11705:4;11729:27;;;:18;:27;;;;;;;;;11641:123;24255:183;;;;;;;;;;-1:-1:-1;24255:183:0;;;;;:::i;:::-;;:::i;11772:223::-;;;;;;;;;;-1:-1:-1;11772:223:0;;;;;:::i;:::-;;:::i;3798:48::-;;;;;;;;;;-1:-1:-1;3798:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4753;;;;;;;;;;;;;;;;4808:50;;;;;;;;;;;;;;;;5073:70;;;;;;;;;;-1:-1:-1;5073:70:0;;;;-1:-1:-1;;;;;5073:70:0;;;4699:47;;;;;;;;;;;;;;;;3986:30;;;;;;;;;;-1:-1:-1;3986:30:0;;;;;;;;;;;22777:331;;;;;;;;;;-1:-1:-1;22777:331:0;;;;;:::i;:::-;;:::i;7683:198::-;;;;;;;;;;-1:-1:-1;7683:198:0;;;;;:::i;:::-;;:::i;1829:94::-;;;;;;;;;;;;;:::i;5414:42::-;;;;;;;;;;-1:-1:-1;5414:42:0;;;;;;;;;;;;;;;;;;;;;;20832:25:1;;;20888:2;20873:18;;20866:34;;;;20916:18;;;20909:34;;;;20974:2;20959:18;;20952:34;21017:3;21002:19;;20995:35;20819:3;20804:19;5414:42:0;20573:463:1;4912:75:0;;;;;;;;;;-1:-1:-1;4912:75:0;;;;-1:-1:-1;;;;;4912:75:0;;;23579:104;;;;;;;;;;-1:-1:-1;23579:104:0;;;;;:::i;:::-;;:::i;9504:120::-;;;;;;;;;;-1:-1:-1;9504:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;9596:20:0;9572:4;9596:20;;;:11;:20;;;;;;;;;9504:120;1606:87;;;;;;;;;;-1:-1:-1;1652:7:0;1679:6;-1:-1:-1;;;;;1679:6:0;1606:87;;23120:209;;;;;;;;;;-1:-1:-1;23120:209:0;;;;;:::i;:::-;;:::i;23995:101::-;;;;;;;;;;-1:-1:-1;23995:101:0;;;;;:::i;:::-;;:::i;7373:87::-;;;;;;;;;;-1:-1:-1;7445:7:0;;;;;;;;;;;;-1:-1:-1;;;7445:7:0;;;;7373:87;;5689:36;;;;;;;;;;-1:-1:-1;5689:36:0;;;;;;;;;;;;;;;;;;24861:196;;;;;;;;;;-1:-1:-1;24861:196:0;;;;;:::i;:::-;;:::i;8907:390::-;;;;;;;;;;-1:-1:-1;8907:390:0;;;;;:::i;:::-;;:::i;4398:19::-;;;;;;;;;;-1:-1:-1;4398:19:0;;;;-1:-1:-1;;;;;4398:19:0;;;9309:187;;;;;;;;;;-1:-1:-1;9309:187:0;;;;;:::i;:::-;;:::i;23337:114::-;;;;;;;;;;-1:-1:-1;23337:114:0;;;;;:::i;:::-;;:::i;24114:129::-;;;;;;;;;;-1:-1:-1;24114:129:0;;;;;:::i;:::-;;:::i;12007:231::-;;;;;;;;;;-1:-1:-1;12007:231:0;;;;;:::i;:::-;;:::i;23463:108::-;;;;;;;;;;-1:-1:-1;23463:108:0;;;;;:::i;:::-;;:::i;23857:130::-;;;;;;;;;;-1:-1:-1;23857:130:0;;;;;:::i;:::-;;:::i;4168:39::-;;;;;;;;;;;;;;;;24450:123;;;;;;;;;;-1:-1:-1;24450:123:0;;;;;:::i;:::-;;:::i;7893:143::-;;;;;;;;;;-1:-1:-1;7893:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;8001:18:0;;;7974:7;8001:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7893:143;4639:53;;;;;;;;;;;;;;;;23697:152;;;;;;;;;;-1:-1:-1;23697:152:0;;;;;:::i;:::-;;:::i;11523:110::-;;;;;;;;;;-1:-1:-1;11523:110:0;;;;;:::i;:::-;;:::i;4126:35::-;;;;;;;;;;-1:-1:-1;4126:35:0;;;;;;;;1931:192;;;;;;;;;;-1:-1:-1;1931:192:0;;;;;:::i;:::-;;:::i;5463:46::-;;;;;;;;;;-1:-1:-1;5463:46:0;;;;;;;;;;;;;;;;;;4370:21;;;;;;;;;;-1:-1:-1;4370:21:0;;;;-1:-1:-1;;;;;4370:21:0;;;8044:181;4272:14;;8139:4;;8119:10;;4272:14;;;:42;;-1:-1:-1;;;;;;4290:24:0;;;;;;:15;:24;;;;;;;;4272:42;4264:78;;;;-1:-1:-1;;;4264:78:0;;;;;;;:::i;:::-;;;;;;;;;8156:39:::1;1107:10:::0;8179:7:::1;8188:6;8156:8;:39::i;:::-;-1:-1:-1::0;8213:4:0::1;::::0;8044:181;-1:-1:-1;;;8044:181:0:o;25071:154::-;1652:7;1679:6;-1:-1:-1;;;;;1679:6:0;1107:10;1741:23;1733:68;;;;-1:-1:-1;;;1733:68:0;;;;;;;:::i;:::-;25176:41:::1;::::0;-1:-1:-1;;;25176:41:0;;-1:-1:-1;;;;;7414:32:1;;;25176:41:0::1;::::0;::::1;7396:51:1::0;7463:18;;;7456:34;;;25176:27:0;::::1;::::0;::::1;::::0;7369:18:1;;25176:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25071:154:::0;;;:::o;8233:430::-;4272:14;;8347:4;;8330:6;;4272:14;;;:42;;-1:-1:-1;;;;;;4290:24:0;;;;;;:15;:24;;;;;;;;4272:42;4264:78;;;;-1:-1:-1;;;4264:78:0;;;;;;;:::i;:::-;8364:36:::1;8374:6;8382:9;8393:6;8364:9;:36::i;:::-;-1:-1:-1::0;;;;;8440:19:0;::::1;8413:24;8440:19:::0;;;:11:::1;:19;::::0;;;;;;;1107:10;8440:33;;;;;;;;8492:26;;::::1;;8484:79;;;::::0;-1:-1:-1;;;8484:79:0;;15105:2:1;8484:79:0::1;::::0;::::1;15087:21:1::0;15144:2;15124:18;;;15117:30;15183:34;15163:18;;;15156:62;-1:-1:-1;;;15234:18:1;;;15227:38;15282:19;;8484:79:0::1;14903:404:1::0;8484:79:0::1;8574:57;8583:6:::0;1107:10;8605:25:::1;8624:6:::0;8605:16;:25:::1;:::i;:::-;8574:8;:57::i;:::-;-1:-1:-1::0;8651:4:0::1;::::0;8233:430;-1:-1:-1;;;;;8233:430:0:o;24581:204::-;1652:7;1679:6;-1:-1:-1;;;;;1679:6:0;1107:10;1741:23;1733:68;;;;-1:-1:-1;;;1733:68:0;;;;;;;:::i;:::-;24673:24:::1;24691:4;24673:9;:24::i;:::-;24658:11;:39;;24650:89;;;::::0;-1:-1:-1;;;24650:89:0;;10094:2:1;24650:89:0::1;::::0;::::1;10076:21:1::0;10133:2;10113:18;;;10106:30;10172:34;10152:18;;;10145:62;-1:-1:-1;;;10223:18:1;;;10216:35;10268:19;;24650:89:0::1;9892:401:1::0;24650:89:0::1;24748:29;24765:11;24748:16;:29::i;:::-;24581:204:::0;:::o;10324:248::-;10390:7;10429;;10418;:18;;10410:73;;;;-1:-1:-1;;;10410:73:0;;11265:2:1;10410:73:0;;;11247:21:1;11304:2;11284:18;;;11277:30;11343:34;11323:18;;;11316:62;-1:-1:-1;;;11394:18:1;;;11387:40;11444:19;;10410:73:0;11063:406:1;10410:73:0;10494:19;10517:10;:8;:10::i;:::-;10494:33;-1:-1:-1;10545:19:0;10494:33;10545:7;:19;:::i;:::-;10538:26;10324:248;-1:-1:-1;;;10324:248:0:o;10921:475::-;1652:7;1679:6;-1:-1:-1;;;;;1679:6:0;1107:10;1741:23;1733:68;;;;-1:-1:-1;;;1733:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11003:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;10995:56;;;::::0;-1:-1:-1;;;10995:56:0;;14035:2:1;10995:56:0::1;::::0;::::1;14017:21:1::0;14074:2;14054:18;;;14047:30;14113:25;14093:18;;;14086:53;14156:18;;10995:56:0::1;13833:347:1::0;10995:56:0::1;11067:9;11062:327;11086:9;:16:::0;11082:20;::::1;11062:327;;;11144:7;-1:-1:-1::0;;;;;11128:23:0::1;:9;11138:1;11128:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;11128:12:0::1;:23;11124:254;;;11187:9;11197:16:::0;;:20:::1;::::0;11216:1:::1;::::0;11197:20:::1;:::i;:::-;11187:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;11172:9:::1;:12:::0;;-1:-1:-1;;;;;11187:31:0;;::::1;::::0;11182:1;;11172:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;11172:46:0::1;-1:-1:-1::0;;;;;11172:46:0;;::::1;;::::0;;11237:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;11276:11:::1;:20:::0;;;;:28;;-1:-1:-1;;11276:28:0::1;::::0;;11323:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;11323:15:0;;;;;-1:-1:-1;;;;;;11323:15:0::1;::::0;;;;;11062:327:::1;10921:475:::0;:::o;11124:254::-:1;11104:3:::0;::::1;::::0;::::1;:::i;:::-;;;;11062:327;;;;10921:475:::0;:::o;10110:206::-;1652:7;1679:6;-1:-1:-1;;;;;1679:6:0;1107:10;1741:23;1733:68;;;;-1:-1:-1;;;1733:68:0;;;;;;;:::i;:::-;10177:14:::1;:22:::0;;-1:-1:-1;;10210:19:0;-1:-1:-1;;10177:22:0;::::1;;10210:19:::0;;;;;;;10177:22:::1;10210:19:::0;::::1;;::::0;;;-1:-1:-1;10243:13:0::1;:35:::0;::::1;;;-1:-1:-1::0;10260:13:0::1;::::0;:18;10243:35:::1;10240:68;;;10296:12;10280:13;:28:::0;10110:206;:::o;8671:228::-;4272:14;;8772:4;;8751:10;;4272:14;;;:42;;-1:-1:-1;;;;;;4290:24:0;;;;;;:15;:24;;;;;;;;4272:42;4264:78;;;;-1:-1:-1;;;4264:78:0;;;;;;;:::i;:::-;1107:10;8821:25:::1;::::0;;;:11:::1;:25;::::0;;;;;;;-1:-1:-1;;;;;8821:34:0;::::1;::::0;;;;;;;;8789:80:::1;::::0;1107:10;8812:7;;8821:47:::1;::::0;8858:10;;8821:47:::1;:::i;11404:111::-:0;1652:7;1679:6;-1:-1:-1;;;;;1679:6:0;1107:10;1741:23;1733:68;;;;-1:-1:-1;;;1733:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11473:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;11473:34:0::1;11503:4;11473:34;::::0;;11404:111::o;9632:470::-;9722:7;9761;;9750;:18;;9742:62;;;;-1:-1:-1;;;9742:62:0;;14745:2:1;9742:62:0;;;14727:21:1;14784:2;14764:18;;;14757:30;14823:33;14803:18;;;14796:61;14874:18;;9742:62:0;14543:355:1;9742:62:0;9820:17;9815:280;;9854:28;9885:32;9896:7;9905:4;9911:5;9885:10;:32::i;:::-;9939:9;;-1:-1:-1;9932:16:0;;-1:-1:-1;9932:16:0;9815:280;9981:28;10012:32;10023:7;10032:4;10038:5;10012:10;:32::i;:::-;10066:17;;;;-1:-1:-1;10059:24:0;;-1:-1:-1;10059:24:0;9815:280;9632:470;;;;:::o;10580:333::-;1652:7;1679:6;-1:-1:-1;;;;;1679:6:0;1107:10;1741:23;1733:68;;;;-1:-1:-1;;;1733:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10663:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;10662:21;10654:61;;;::::0;-1:-1:-1;;;10654:61:0;;12486:2:1;10654:61:0::1;::::0;::::1;12468:21:1::0;12525:2;12505:18;;;12498:30;12564:29;12544:18;;;12537:57;12611:18;;10654:61:0::1;12284:351:1::0;10654:61:0::1;-1:-1:-1::0;;;;;10729:16:0;::::1;10748:1;10729:16:::0;;;:7:::1;:16;::::0;;;;;:20;10726:108:::1;;-1:-1:-1::0;;;;;10805:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;10785:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;10766:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;10726:108:::1;-1:-1:-1::0;;;;;10844:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;10844:27:0::1;10867:4;10844:27:::0;;::::1;::::0;;;10882:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;10882:23:0::1;::::0;;::::1;::::0;;10580:333::o;24255:183::-;1652:7;1679:6;-1:-1:-1;;;;;1679:6:0;1107:10;1741:23;1733:68;;;;-1:-1:-1;;;1733:68:0;;;;;;;:::i;:::-;24366:14:::1;4461:1:::0;24366:2:::1;:14;:::i;:::-;24357:23;::::0;:6;:23:::1;:::i;:::-;24343:11;:37:::0;24416:14:::1;4461:1:::0;24416:2:::1;:14;:::i;:::-;24406:24;::::0;:7;:24:::1;:::i;:::-;24391:12;:39:::0;-1:-1:-1;;24255:183:0:o;11772:223::-;1652:7;1679:6;-1:-1:-1;;;;;1679:6:0;1107:10;1741:23;1733:68;;;;-1:-1:-1;;;1733:68:0;;;;;;;:::i;:::-;11911:47:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;11903:5:::1;:55:::0;;;;;;;;;;;;;;;;;;;11974:13;::::1;::::0;-1:-1:-1;;11974:13:0::1;11772:223:::0;;;;;:::o;22777:331::-;1652:7;1679:6;-1:-1:-1;;;;;1679:6:0;1107:10;1741:23;1733:68;;;;-1:-1:-1;;;1733:68:0;;;;;;;:::i;:::-;22909:7:::1;:14;22890:8;:15;:33;22882:72;;;::::0;-1:-1:-1;;;22882:72:0;;17794:2:1;22882:72:0::1;::::0;::::1;17776:21:1::0;17833:2;17813:18;;;17806:30;17872:28;17852:18;;;17845:56;17918:18;;22882:72:0::1;17592:350:1::0;22882:72:0::1;22969:9;22965:136;22988:8;:15;22984:1;:19;22965:136;;;23024:65;23039:10;23051:8;23060:1;23051:11;;;;;;;;:::i;:::-;;;;;;;23064:7;23072:1;23064:10;;;;;;;;:::i;:::-;;;;;;;23076:5;23083::::0;23024:14:::1;:65::i;:::-;23005:3:::0;::::1;::::0;::::1;:::i;:::-;;;;22965:136;;;;22777:331:::0;;:::o;7683:198::-;-1:-1:-1;;;;;7773:20:0;;7749:7;7773:20;;;:11;:20;;;;;;;;7769:49;;;-1:-1:-1;;;;;;7802:16:0;;;;;:7;:16;;;;;;;7683:198::o;7769:49::-;-1:-1:-1;;;;;7856:16:0;;;;;;:7;:16;;;;;;7836:37;;:19;:37::i;1829:94::-;1652:7;1679:6;-1:-1:-1;;;;;1679:6:0;1107:10;1741:23;1733:68;;;;-1:-1:-1;;;1733:68:0;;;;;;;:::i;:::-;1894:21:::1;1912:1;1894:9;:21::i;:::-;1829:94::o:0;23579:104::-;1652:7;1679:6;-1:-1:-1;;;;;1679:6:0;1107:10;1741:23;1733:68;;;;-1:-1:-1;;;1733:68:0;;;;;;;:::i;:::-;23653:10:::1;:22:::0;;-1:-1:-1;;;;;;23653:22:0::1;-1:-1:-1::0;;;;;23653:22:0;;;::::1;::::0;;;::::1;::::0;;23579:104::o;23120:209::-;1652:7;1679:6;-1:-1:-1;;;;;1679:6:0;1107:10;1741:23;1733:68;;;;-1:-1:-1;;;1733:68:0;;;;;;;:::i;:::-;23216:9:::1;23212:110;23235:8;:15;23231:1;:19;23212:110;;;23305:5;23271:18;:31;23290:8;23299:1;23290:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;23271:31:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;23271:31:0;:39;;-1:-1:-1;;23271:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23252:3;::::1;::::0;::::1;:::i;:::-;;;;23212:110;;23995:101:::0;1652:7;1679:6;-1:-1:-1;;;;;1679:6:0;1107:10;1741:23;1733:68;;;;-1:-1:-1;;;1733:68:0;;;;;;;:::i;:::-;24066:11:::1;:22:::0;;;::::1;;;;-1:-1:-1::0;;24066:22:0;;::::1;::::0;;;::::1;::::0;;23995:101::o;24861:196::-;1652:7;1679:6;-1:-1:-1;;;;;1679:6:0;1107:10;1741:23;1733:68;;;;-1:-1:-1;;;1733:68:0;;;;;;;:::i;:::-;24961:9:::1;24936:21;:34;;24928:71;;;::::0;-1:-1:-1;;;24928:71:0;;15875:2:1;24928:71:0::1;::::0;::::1;15857:21:1::0;15914:2;15894:18;;;15887:30;15953:26;15933:18;;;15926:54;15997:18;;24928:71:0::1;15673:348:1::0;24928:71:0::1;25010:39;::::0;25018:10:::1;::::0;25010:39;::::1;;;::::0;25039:9;;25010:39:::1;::::0;;;25039:9;25018:10;25010:39;::::1;;;;;;;;;;;;;::::0;::::1;;;;8907:390:::0;4272:14;;9013:4;;8992:10;;4272:14;;;:42;;-1:-1:-1;;;;;;4290:24:0;;;;;;:15;:24;;;;;;;;4272:42;4264:78;;;;-1:-1:-1;;;4264:78:0;;;;;;;:::i;:::-;1107:10;9030:24:::1;9057:25:::0;;;:11:::1;:25;::::0;;;;;;;-1:-1:-1;;;;;9057:34:0;::::1;::::0;;;;;;;;9110:35;;::::1;;9102:85;;;::::0;-1:-1:-1;;;9102:85:0;;19202:2:1;9102:85:0::1;::::0;::::1;19184:21:1::0;19241:2;19221:18;;;19214:30;19280:34;19260:18;;;19253:62;-1:-1:-1;;;19331:18:1;;;19324:35;19376:19;;9102:85:0::1;19000:401:1::0;9102:85:0::1;9198:67;1107:10:::0;9221:7;9230:34:::1;9249:15:::0;9230:16;:34:::1;:::i;9198:67::-;-1:-1:-1::0;9285:4:0::1;::::0;8907:390;-1:-1:-1;;;;8907:390:0:o;9309:187::-;4272:14;;9407:4;;9386:10;;4272:14;;;:42;;-1:-1:-1;;;;;;4290:24:0;;;;;;:15;:24;;;;;;;;4272:42;4264:78;;;;-1:-1:-1;;;4264:78:0;;;;;;;:::i;:::-;9428:40:::1;9438:10;9450:9;9461:6;9428:9;:40::i;23337:114::-:0;1652:7;1679:6;-1:-1:-1;;;;;1679:6:0;1107:10;1741:23;1733:68;;;;-1:-1:-1;;;1733:68:0;;;;;;;:::i;:::-;23416:15:::1;:27:::0;;-1:-1:-1;;;;;;23416:27:0::1;-1:-1:-1::0;;;;;23416:27:0;;;::::1;::::0;;;::::1;::::0;;23337:114::o;24114:129::-;1652:7;1679:6;-1:-1:-1;;;;;1679:6:0;1107:10;1741:23;1733:68;;;;-1:-1:-1;;;1733:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24203:24:0;;;::::1;;::::0;;;:15:::1;:24;::::0;;;;:32;;-1:-1:-1;;24203:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24114:129::o;12007:231::-;1652:7;1679:6;-1:-1:-1;;;;;1679:6:0;1107:10;1741:23;1733:68;;;;-1:-1:-1;;;1733:68:0;;;;;;;:::i;:::-;12154:47:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;12142:9:::1;:59:::0;;;;;;;;;;;;;;;;;;12217:13;::::1;::::0;-1:-1:-1;;12217:13:0::1;12007:231:::0;;;;;:::o;23463:108::-;1652:7;1679:6;-1:-1:-1;;;;;1679:6:0;1107:10;1741:23;1733:68;;;;-1:-1:-1;;;1733:68:0;;;;;;;:::i;:::-;23539:12:::1;:24:::0;;-1:-1:-1;;;;;;23539:24:0::1;-1:-1:-1::0;;;;;23539:24:0;;;::::1;::::0;;;::::1;::::0;;23463:108::o;23857:130::-;1652:7;1679:6;-1:-1:-1;;;;;1679:6:0;1107:10;1741:23;1733:68;;;;-1:-1:-1;;;1733:68:0;;;;;;;:::i;:::-;23966:13:::1;4461:1;23966:2;:13;:::i;:::-;23957:22;::::0;:6;:22:::1;:::i;:::-;23936:18;:43:::0;-1:-1:-1;23857:130:0:o;24450:123::-;1652:7;1679:6;-1:-1:-1;;;;;1679:6:0;1107:10;1741:23;1733:68;;;;-1:-1:-1;;;1733:68:0;;;;;;;:::i;:::-;24551:14:::1;4461:1:::0;24551:2:::1;:14;:::i;:::-;24542:23;::::0;:6;:23:::1;:::i;:::-;24525:14;:40:::0;-1:-1:-1;24450:123:0:o;23697:152::-;1652:7;1679:6;-1:-1:-1;;;;;1679:6:0;1107:10;1741:23;1733:68;;;;-1:-1:-1;;;1733:68:0;;;;;;;:::i;:::-;23791:16:::1;:4:::0;23798:9:::1;23791:16;:::i;:::-;23776:12;:31:::0;-1:-1:-1;23818:15:0::1;:23:::0;;-1:-1:-1;;23818:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23697:152::o;11523:110::-;1652:7;1679:6;-1:-1:-1;;;;;1679:6:0;1107:10;1741:23;1733:68;;;;-1:-1:-1;;;1733:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11590:27:0::1;11620:5;11590:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;11590:35:0::1;::::0;;11523:110::o;1931:192::-;1652:7;1679:6;-1:-1:-1;;;;;1679:6:0;1107:10;1741:23;1733:68;;;;-1:-1:-1;;;1733:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2020:22:0;::::1;2012:73;;;::::0;-1:-1:-1;;;2012:73:0;;11676:2:1;2012:73:0::1;::::0;::::1;11658:21:1::0;11715:2;11695:18;;;11688:30;11754:34;11734:18;;;11727:62;-1:-1:-1;;;11805:18:1;;;11798:36;11851:19;;2012:73:0::1;11474:402:1::0;2012:73:0::1;2096:19;2106:8;2096:9;:19::i;16421:335::-:0;-1:-1:-1;;;;;16514:19:0;;16506:68;;;;-1:-1:-1;;;16506:68:0;;17389:2:1;16506:68:0;;;17371:21:1;17428:2;17408:18;;;17401:30;17467:34;17447:18;;;17440:62;-1:-1:-1;;;17518:18:1;;;17511:34;17562:19;;16506:68:0;17187:400:1;16506:68:0;-1:-1:-1;;;;;16593:21:0;;16585:68;;;;-1:-1:-1;;;16585:68:0;;12083:2:1;16585:68:0;;;12065:21:1;12122:2;12102:18;;;12095:30;12161:34;12141:18;;;12134:62;-1:-1:-1;;;12212:18:1;;;12205:32;12254:19;;16585:68:0;11881:398:1;16585:68:0;-1:-1:-1;;;;;16664:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16716:32;;19552:25:1;;;16716:32:0;;19525:18:1;16716:32:0;;;;;;;16421:335;;;:::o;16764:2291::-;-1:-1:-1;;;;;16852:18:0;;16844:68;;;;-1:-1:-1;;;16844:68:0;;16983:2:1;16844:68:0;;;16965:21:1;17022:2;17002:18;;;16995:30;17061:34;17041:18;;;17034:62;-1:-1:-1;;;17112:18:1;;;17105:35;17157:19;;16844:68:0;16781:401:1;16844:68:0;-1:-1:-1;;;;;16931:16:0;;16923:64;;;;-1:-1:-1;;;16923:64:0;;9332:2:1;16923:64:0;;;9314:21:1;9371:2;9351:18;;;9344:30;9410:34;9390:18;;;9383:62;-1:-1:-1;;;9461:18:1;;;9454:33;9504:19;;16923:64:0;9130:399:1;16923:64:0;17015:1;17006:6;:10;16998:64;;;;-1:-1:-1;;;16998:64:0;;16228:2:1;16998:64:0;;;16210:21:1;16267:2;16247:18;;;16240:30;16306:34;16286:18;;;16279:62;-1:-1:-1;;;16357:18:1;;;16350:39;16406:19;;16998:64:0;16026:405:1;16998:64:0;17091:15;17101:4;17091:9;:15::i;:::-;17081:6;:25;;17073:86;;;;-1:-1:-1;;;17073:86:0;;10847:2:1;17073:86:0;;;10829:21:1;10886:2;10866:18;;;10859:30;10925:34;10905:18;;;10898:62;-1:-1:-1;;;10976:18:1;;;10969:47;11033:19;;17073:86:0;10645:413:1;17073:86:0;-1:-1:-1;;;;;17179:20:0;;;;;;:14;:20;;;;;;;;17178:21;:44;;;;-1:-1:-1;;;;;;17204:18:0;;;;;;:14;:18;;;;;;;;17203:19;17178:44;17170:70;;;;-1:-1:-1;;;17170:70:0;;18501:2:1;17170:70:0;;;18483:21:1;18540:2;18520:18;;;18513:30;-1:-1:-1;;;18559:18:1;;;18552:43;18612:18;;17170:70:0;18299:337:1;17170:70:0;-1:-1:-1;;;;;17265:24:0;;;;;;:18;:24;;;;;;;;17264:25;:52;;;;-1:-1:-1;;;;;;17294:22:0;;;;;;:18;:22;;;;;;;;17293:23;17264:52;17261:128;;;17340:14;;;;17332:45;;;;-1:-1:-1;;;17332:45:0;;10500:2:1;17332:45:0;;;10482:21:1;10539:2;10519:18;;;10512:30;-1:-1:-1;;;10558:18:1;;;10551:48;10616:18;;17332:45:0;10298:342:1;17332:45:0;-1:-1:-1;;;;;17413:24:0;;;;;;:18;:24;;;;;;;;17412:25;:52;;;;-1:-1:-1;;;;;;17442:22:0;;;;;;:18;:22;;;;;;;;17441:23;17412:52;:89;;;;-1:-1:-1;17484:13:0;;:17;;17500:1;17484:17;:::i;:::-;17468:12;:33;;17412:89;17409:180;;;17532:4;;-1:-1:-1;;;;;17526:10:0;;;17532:4;;17526:10;;17518:59;;;;-1:-1:-1;;;17518:59:0;;13203:2:1;17518:59:0;;;13185:21:1;13242:2;13222:18;;;13215:30;13281:34;13261:18;;;13254:62;-1:-1:-1;;;13332:18:1;;;13325:34;13376:19;;17518:59:0;13001:400:1;17518:59:0;17620:4;;-1:-1:-1;;;;;17612:12:0;;;17620:4;;17612:12;:39;;;;-1:-1:-1;;;;;;17629:22:0;;;;;;:18;:22;;;;;;;;17628:23;17612:39;:52;;;;-1:-1:-1;17656:8:0;;;;;;;17655:9;17612:52;17609:246;;;17698:11;;17688:6;:21;;17680:63;;;;-1:-1:-1;;;17680:63:0;;9736:2:1;17680:63:0;;;9718:21:1;9775:2;9755:18;;;9748:30;9814:31;9794:18;;;9787:59;9863:18;;17680:63:0;9534:353:1;17680:63:0;17792:14;;17782:6;17766:13;17776:2;17766:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;17758:85;;;;-1:-1:-1;;;17758:85:0;;12842:2:1;17758:85:0;;;12824:21:1;;;12861:18;;;12854:30;12920:34;12900:18;;;12893:62;12972:18;;17758:85:0;12640:356:1;17758:85:0;17886:4;;-1:-1:-1;;;;;17878:12:0;;;17886:4;;17878:12;;;;:39;;-1:-1:-1;;;;;;17895:22:0;;;;;;:18;:22;;;;;;;;17894:23;17878:39;:68;;;;-1:-1:-1;;;;;;17922:24:0;;;;;;:18;:24;;;;;;;;17921:25;17878:68;:81;;;;-1:-1:-1;17951:8:0;;;;;;;17950:9;17878:81;17875:573;;;17993:12;;17983:6;:22;;17975:65;;;;-1:-1:-1;;;17975:65:0;;18843:2:1;17975:65:0;;;18825:21:1;18882:2;18862:18;;;18855:30;18921:32;18901:18;;;18894:60;18971:18;;17975:65:0;18641:354:1;17975:65:0;18064:4;;-1:-1:-1;;;;;18058:10:0;;;18064:4;;18058:10;18055:134;;18122:14;;18112:6;18096:13;18106:2;18096:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;18088:85;;;;-1:-1:-1;;;18088:85:0;;12842:2:1;18088:85:0;;;12824:21:1;;;12861:18;;;12854:30;12920:34;12900:18;;;12893:62;12972:18;;18088:85:0;12640:356:1;18088:85:0;18206:15;;;;18203:234;;;-1:-1:-1;;;;;18280:15:0;;18241:18;18280:15;;;:9;:15;;;;;;18262:33;;:15;:33;:::i;:::-;18241:54;;18336:12;;18322:10;:26;;18314:55;;;;-1:-1:-1;;;18314:55:0;;16638:2:1;18314:55:0;;;16620:21:1;16677:2;16657:18;;;16650:30;-1:-1:-1;;;16696:18:1;;;16689:46;16752:18;;18314:55:0;16436:340:1;18314:55:0;-1:-1:-1;;;;;;18388:15:0;;;;;;:9;:15;;;;;18406;18388:33;;18203:234;18468:12;18511:18;;18483:24;18501:4;18483:9;:24::i;:::-;18545:8;;-1:-1:-1;;18483:46:0;;-1:-1:-1;18545:8:0;;;;;18544:9;:24;;;;-1:-1:-1;18557:11:0;;;;;;;18544:24;:35;;;;;18572:7;18544:35;:51;;;;-1:-1:-1;18591:4:0;;-1:-1:-1;;;;;18583:12:0;;;18591:4;;18583:12;;18544:51;:80;;;;-1:-1:-1;;;;;;18600:24:0;;;;;;:18;:24;;;;;;;;18599:25;18544:80;:107;;;;-1:-1:-1;;;;;;18629:22:0;;;;;;:18;:22;;;;;;;;18628:23;18544:107;18540:202;;;18679:18;;18705:4;;18664:66;;18679:18;-1:-1:-1;;;;;18699:10:0;;;18705:4;;18699:10;:30;;18724:5;18699:30;;;18712:9;18699:30;18664:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:14;:66::i;:::-;18818:8;;18769:4;;18754:12;;18818:8;;;;;;:36;;-1:-1:-1;;;;;;18830:24:0;;;;;;:18;:24;;;;;;;;18818:36;:62;;;-1:-1:-1;;;;;;18858:22:0;;;;;;:18;:22;;;;;;;;18818:62;18814:106;;;18903:5;18893:15;;18814:106;18940:4;;-1:-1:-1;;;;;18934:10:0;;;18940:4;;18934:10;18930:56;;;-1:-1:-1;18970:4:0;18930:56;18998:49;19013:4;19019:2;19023:6;19031:7;19040:6;18998:14;:49::i;:::-;16833:2222;;;16764:2291;;;:::o;22203:562::-;22353:16;;;22367:1;22353:16;;;;;;;;22329:21;;22353:16;;;;;;;;;;-1:-1:-1;22353:16:0;22329:40;;22398:4;22380;22385:1;22380:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22380:23:0;;;:7;;;;;;;;;;:23;;;;22424:6;;:13;;;-1:-1:-1;;;22424:13:0;;;;:6;;;;;:11;;:13;;;;;22380:7;;22424:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22414:4;22419:1;22414:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22414:23:0;;;:7;;;;;;;;;:23;22482:6;;22450:53;;22467:4;;22482:6;22491:11;22450:8;:53::i;:::-;22542:6;;:215;;-1:-1:-1;;;22542:215:0;;-1:-1:-1;;;;;22542:6:0;;;;:57;;:215;;22614:11;;22542:6;;22684:4;;22711;;22731:15;;22542:215;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15707:158;15748:7;15769:15;15786;15805:19;:17;:19::i;:::-;15768:56;;-1:-1:-1;15768:56:0;-1:-1:-1;15842:15:0;15768:56;;15842:15;:::i;:::-;15835:22;;;;15707:158;:::o;13493:466::-;13579:36;;:::i;:::-;13636:37;13648:7;13657;13666:6;13636:11;:37::i;:::-;13624:49;;13806:53;13819:9;13830:7;13839;13848:10;:8;:10::i;:::-;13806:12;:53::i;:::-;13787:15;;;13680:179;13765:20;;;13680:179;13743:20;;;13680:179;13727:14;;;13680:179;13700:25;;;13680:179;;;13888:44;13681:9;13912:7;13921:10;:8;:10::i;:::-;13888:12;:44::i;:::-;13867:17;;;13866:66;13493:466;;;;;:::o;19139:1231::-;19261:28;19292:36;19303:7;19312;19321:6;19292:10;:36::i;:::-;-1:-1:-1;;;;;19345:19:0;;;;;;:11;:19;;;;;;19261:67;;-1:-1:-1;19345:19:0;;19341:112;;;-1:-1:-1;;;;;19416:15:0;;;;;;:7;:15;;;;;;:25;;19434:7;;19416:25;:::i;:::-;-1:-1:-1;;;;;19398:15:0;;;;;;:7;:15;;;;;:43;19341:112;-1:-1:-1;;;;;19467:22:0;;;;;;:11;:22;;;;;;;;19463:129;;;19563:17;;;;-1:-1:-1;;;;;19542:18:0;;;;;;:7;:18;;;;;;:38;;19563:17;19542:38;:::i;:::-;-1:-1:-1;;;;;19521:18:0;;;;;;:7;:18;;;;;:59;19463:129;19640:9;;-1:-1:-1;;;;;19622:15:0;;19640:9;19622:15;;;:7;:15;;;;;;:27;;19640:9;19622:27;:::i;:::-;-1:-1:-1;;;;;19604:15:0;;;;;;;:7;:15;;;;;;;;:45;;;;19702:17;;;19681:18;;;;;;;;;;:38;;19702:17;19681:38;:::i;:::-;-1:-1:-1;;;;;19660:18:0;;;;;;:7;:18;;;;;;;:59;;;;19736:6;;;:10;;;:24;;;19759:1;19750;:6;;;:10;19736:24;19732:57;;;19762:27;19774:1;:6;;;19782:1;:6;;;19762:11;:27::i;:::-;19819:1;19804;:12;;;:16;:36;;;;19839:1;19824;:12;;;:16;19804:36;19800:212;;;19857:42;19872:1;:12;;;19886:1;:12;;;19857:14;:42::i;:::-;19943:4;-1:-1:-1;;;;;19918:82:0;19927:6;-1:-1:-1;;;;;19918:82:0;;19992:1;:7;;;19980:1;:9;;;19965:1;:12;;;19950:1;:12;;;:27;;;;:::i;:::-;:39;;;;:::i;:::-;:49;;;;:::i;:::-;19918:82;;19552:25:1;;;19540:2;19525:18;19918:82:0;;;;;;;19800:212;20041:1;20026;:12;;;:16;:36;;;;20061:1;20046;:12;;;:16;20026:36;20022:84;;;20064:42;20079:1;:12;;;20093:1;:12;;;20064:14;:42::i;:::-;20133:1;20121;:9;;;:13;:30;;;;20150:1;20138;:9;;;:13;20121:30;20117:69;;;20153:33;20165:1;:9;;;20176:1;:9;;;20153:11;:33::i;:::-;20201:7;;;;:11;20197:55;;20232:10;;20244:7;;;;20214:38;;20224:6;;-1:-1:-1;;;;;20232:10:0;;;;20214:9;:38::i;:::-;20333:9;-1:-1:-1;;;;;20316:46:0;20325:6;-1:-1:-1;;;;;20316:46:0;;20344:1;:17;;;20316:46;;;;19552:25:1;;19540:2;19525:18;;19406:177;20316:46:0;;;;;;;;19250:1120;19139:1231;;;;;:::o;2131:173::-;2187:16;2206:6;;-1:-1:-1;;;;;2223:17:0;;;-1:-1:-1;;;;;;2223:17:0;;;;;;2256:40;;2206:6;;;;;;;2256:40;;2187:16;2256:40;2176:128;2131:173;:::o;20378:1314::-;6230:8;:15;;-1:-1:-1;;6230:15:0;;;;;20548:9:::1;::::0;::::1;::::0;20534:11:::1;::::0;::::1;::::0;20517:14:::1;::::0;::::1;::::0;20500::::1;::::0;::::1;::::0;6230:15;;20548:9;20534:11;20500:31:::1;::::0;::::1;:::i;:::-;:45;;;;:::i;:::-;:57;;;;:::i;:::-;20499:63;::::0;20561:1:::1;20499:63;:::i;:::-;20477:85;;20573:32;20643:11;20626:4;:14;;;20608:15;:32;;;;:::i;:::-;:46;;;;:::i;:::-;20573:81:::0;-1:-1:-1;20665:14:0::1;20682:42;20573:81:::0;20682:15;:42:::1;:::i;:::-;20665:59:::0;-1:-1:-1;20762:21:0::1;20796:24;20665:59:::0;20796:16:::1;:24::i;:::-;20833:20;20856:38;20880:14:::0;20856:21:::1;:38;:::i;:::-;20833:61;;20905:19;20957:4;:14;;;20943:11;:28;;;;:::i;:::-;20927:45;::::0;:12;:45:::1;:::i;:::-;20905:67;;20983:29;21029:4;:14;;;21015:11;:28;;;;:::i;:::-;20983:60:::0;-1:-1:-1;21060:25:0;;21056:116:::1;;21099:61;21112:24;21138:21;21099:12;:61::i;:::-;21225:14;::::0;::::1;::::0;21184:20:::1;::::0;21207:15:::1;:11:::0;21221:1:::1;21207:15;:::i;:::-;:32;;;;:::i;:::-;21184:55:::0;-1:-1:-1;21254:16:0;;21250:96:::1;;21294:15;::::0;21286:48:::1;::::0;-1:-1:-1;;;;;21294:15:0::1;21321:12:::0;21286:34:::1;:48::i;:::-;21394:11;::::0;::::1;::::0;21356:17:::1;::::0;21376:15:::1;:11:::0;21390:1:::1;21376:15;:::i;:::-;:29;;;;:::i;:::-;21356:49:::0;-1:-1:-1;21420:13:0;;21416:88:::1;;21458:12;::::0;21450:42:::1;::::0;-1:-1:-1;;;;;21458:12:0::1;21482:9:::0;21450:31:::1;:42::i;:::-;21550:9;::::0;::::1;::::0;21514:15:::1;::::0;21532::::1;:11:::0;21546:1:::1;21532:15;:::i;:::-;:27;;;;:::i;:::-;21514:45:::0;-1:-1:-1;21571:11:0;;21567:118:::1;;21607:10;::::0;21599:38:::1;::::0;-1:-1:-1;;;;;21607:10:0::1;21629:7:::0;21599:29:::1;:38::i;:::-;-1:-1:-1::0;;6268:8:0;:16;;-1:-1:-1;;6268:16:0;;;-1:-1:-1;;;;;;;;;;20378:1314:0:o;15873:540::-;15970:7;;16006;;15923;;;;;16024:279;16048:9;:16;16044:20;;16024:279;;;16114:7;16090;:21;16098:9;16108:1;16098:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16098:12:0;16090:21;;;;;;;;;;;;;:31;;:66;;;16149:7;16125;:21;16133:9;16143:1;16133:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16133:12:0;16125:21;;;;;;;;;;;;;:31;16090:66;16086:97;;;16166:7;;16175;;16158:25;;;;;;;15873:540;;:::o;16086:97::-;16216:7;:21;16224:9;16234:1;16224:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16224:12:0;16216:21;;;;;;;;;;;;;16208:29;;:7;:29;:::i;:::-;16198:39;;16270:7;:21;16278:9;16288:1;16278:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16278:12:0;16270:21;;;;;;;;;;;;;16262:29;;:7;:29;:::i;:::-;16252:39;-1:-1:-1;16066:3:0;;;;:::i;:::-;;;;16024:279;;;;16335:7;;16327;;:15;;;;:::i;:::-;16317:7;:25;16313:56;;;16352:7;;16361;;16344:25;;;;;;15873:540;;:::o;16313:56::-;16388:7;;16397;;-1:-1:-1;15873:540:0;-1:-1:-1;15873:540:0:o;13967:667::-;14054:28;;:::i;:::-;14101:7;14097:86;;14123:17;;;:27;;;14163:8;;14097:86;14193:17;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14193:17:0;14224:6;14221:55;;;-1:-1:-1;14232:16:0;;;;;;;;14239:9;14232:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14221:55;;;-1:-1:-1;14264:12:0;;;;;;;;14271:5;14264:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14221:55;14314:8;;14323:3;;14306:16;;:7;:16;:::i;:::-;:20;;;;:::i;:::-;14297:6;;;:29;14360:14;;;;14375:3;;14352:22;;:7;:22;:::i;:::-;:26;;;;:::i;:::-;14337:12;;;:41;14412:14;;;;14427:3;;14404:22;;:7;:22;:::i;:::-;:26;;;;:::i;:::-;14389:12;;;:41;14461:11;;;;14473:3;;14453:19;;:7;:19;:::i;:::-;:23;;;;:::i;:::-;14441:9;;;:35;14505:9;;;;14515:3;;14497:17;;:7;:17;:::i;:::-;:21;;;;:::i;:::-;14487:7;;;:31;;;14590:9;;;;14577:12;;;;14564;;;;14557:6;;;;14549:14;;:7;:14;:::i;:::-;:27;;;;:::i;:::-;:40;;;;:::i;:::-;:50;;;;:::i;:::-;:58;;;;:::i;:::-;14529:17;;;:78;-1:-1:-1;13967:667:0;;;;;:::o;14642:777::-;14768:15;;;;;;14900:21;14910:11;14900:7;:21;:::i;:::-;14890:31;;14939:7;14934:78;;-1:-1:-1;14971:7:0;;-1:-1:-1;14989:1:0;;-1:-1:-1;14989:1:0;;-1:-1:-1;14989:1:0;;-1:-1:-1;14989:1:0;14963:37;;14934:78;15040:11;15031:1;:6;;;:20;;;;:::i;:::-;15024:27;;15090:11;15075:1;:12;;;:26;;;;:::i;:::-;15062:39;;15140:11;15125:1;:12;;;:26;;;;:::i;:::-;15112:39;;15162:15;15192:11;15180:1;:9;;;:23;;;;:::i;:::-;15162:41;;15232:11;15222:1;:7;;;:21;;;;:::i;:::-;15214:29;-1:-1:-1;15214:29:0;15315:7;15302:10;15289;15272:14;15282:4;15272:7;:14;:::i;:::-;:27;;;;:::i;:::-;:40;;;;:::i;:::-;:50;;;;:::i;:::-;:58;;;;:::i;:::-;15254:76;;15341:70;14642:777;;;;;;;;;;;;:::o;15431:268::-;15540:15;15573:7;15568:51;;-1:-1:-1;15605:1:0;15597:10;;15568:51;15653:11;15641:1;:9;;;:23;;;;:::i;:::-;15631:33;15431:268;-1:-1:-1;;;;15431:268:0:o;12246:123::-;12324:4;12314:7;;:14;;;;;;;:::i;:::-;;;;-1:-1:-1;;12339:11:0;:22;;12357:4;;12339:11;:15;;:22;;12357:4;;12339:22;:::i;:::-;;;;-1:-1:-1;;;;12246:123:0:o;12377:284::-;12484:10;12460:11;:21;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;12530:4:0;12510:26;;;;:11;:26;;;;;;;;12507:101;;;12578:4;12562:22;;;;:7;:22;;;;;:34;;12586:10;;12562:22;:34;;12586:10;;12562:34;:::i;:::-;;;;-1:-1:-1;;12507:101:0;12634:4;12618:22;;;;:7;:22;;;;;:35;;12643:10;;12618:22;:35;;12643:10;;12618:35;:::i;12669:284::-;12776:10;12752:11;:21;;;:34;;;;;;;:::i;12965:263::-;13060:7;13039:11;:18;;;:28;;;;;;;:::i;21700:495::-;21880:6;;21848:53;;21865:4;;-1:-1:-1;;;;;21880:6:0;21889:11;21848:8;:53::i;:::-;21944:6;;-1:-1:-1;;;;;21944:6:0;:22;21974:9;22007:4;22027:11;21944:6;;22139:7;1652;1679:6;-1:-1:-1;;;;;1679:6:0;;1606:87;22139:7;21944:243;;;;;;-1:-1:-1;;;;;;21944:243:0;;;-1:-1:-1;;;;;7860:15:1;;;21944:243:0;;;7842:34:1;7892:18;;;7885:34;;;;7935:18;;;7928:34;;;;7978:18;;;7971:34;8042:15;;;8021:19;;;8014:44;22161:15:0;8074:19:1;;;8067:35;7776:19;;21944:243:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21700:495;;:::o;3076:317::-;3191:6;3166:21;:31;;3158:73;;;;-1:-1:-1;;;3158:73:0;;14387:2:1;3158:73:0;;;14369:21:1;14426:2;14406:18;;;14399:30;14465:31;14445:18;;;14438:59;14514:18;;3158:73:0;14185:353:1;3158:73:0;3245:12;3263:9;-1:-1:-1;;;;;3263:14:0;3285:6;3263:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3244:52;;;3315:7;3307:78;;;;-1:-1:-1;;;3307:78:0;;13608:2:1;3307:78:0;;;13590:21:1;13647:2;13627:18;;;13620:30;13686:34;13666:18;;;13659:62;13757:28;13737:18;;;13730:56;13803:19;;3307:78:0;13406:422:1;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:748:1:-;68:5;121:3;114:4;106:6;102:17;98:27;88:55;;139:1;136;129:12;88:55;175:6;162:20;201:4;225:60;241:43;281:2;241:43;:::i;:::-;225:60;:::i;:::-;307:3;331:2;326:3;319:15;359:2;354:3;350:12;343:19;;394:2;386:6;382:15;446:3;441:2;435;432:1;428:10;420:6;416:23;412:32;409:41;406:61;;;463:1;460;453:12;406:61;485:1;495:238;509:2;506:1;503:9;495:238;;;580:3;567:17;597:31;622:5;597:31;:::i;:::-;641:18;;679:12;;;;711;;;;527:1;520:9;495:238;;;-1:-1:-1;751:5:1;;14:748;-1:-1:-1;;;;;;;14:748:1:o;767:247::-;826:6;879:2;867:9;858:7;854:23;850:32;847:52;;;895:1;892;885:12;847:52;934:9;921:23;953:31;978:5;953:31;:::i;1019:251::-;1089:6;1142:2;1130:9;1121:7;1117:23;1113:32;1110:52;;;1158:1;1155;1148:12;1110:52;1190:9;1184:16;1209:31;1234:5;1209:31;:::i;1275:388::-;1343:6;1351;1404:2;1392:9;1383:7;1379:23;1375:32;1372:52;;;1420:1;1417;1410:12;1372:52;1459:9;1446:23;1478:31;1503:5;1478:31;:::i;:::-;1528:5;-1:-1:-1;1585:2:1;1570:18;;1557:32;1598:33;1557:32;1598:33;:::i;:::-;1650:7;1640:17;;;1275:388;;;;;:::o;1668:456::-;1745:6;1753;1761;1814:2;1802:9;1793:7;1789:23;1785:32;1782:52;;;1830:1;1827;1820:12;1782:52;1869:9;1856:23;1888:31;1913:5;1888:31;:::i;:::-;1938:5;-1:-1:-1;1995:2:1;1980:18;;1967:32;2008:33;1967:32;2008:33;:::i;:::-;1668:456;;2060:7;;-1:-1:-1;;;2114:2:1;2099:18;;;;2086:32;;1668:456::o;2129:382::-;2194:6;2202;2255:2;2243:9;2234:7;2230:23;2226:32;2223:52;;;2271:1;2268;2261:12;2223:52;2310:9;2297:23;2329:31;2354:5;2329:31;:::i;:::-;2379:5;-1:-1:-1;2436:2:1;2421:18;;2408:32;2449:30;2408:32;2449:30;:::i;2516:315::-;2584:6;2592;2645:2;2633:9;2624:7;2620:23;2616:32;2613:52;;;2661:1;2658;2651:12;2613:52;2700:9;2687:23;2719:31;2744:5;2719:31;:::i;:::-;2769:5;2821:2;2806:18;;;;2793:32;;-1:-1:-1;;;2516:315:1:o;2836:1149::-;2954:6;2962;3015:2;3003:9;2994:7;2990:23;2986:32;2983:52;;;3031:1;3028;3021:12;2983:52;3071:9;3058:23;3100:18;3141:2;3133:6;3130:14;3127:34;;;3157:1;3154;3147:12;3127:34;3180:61;3233:7;3224:6;3213:9;3209:22;3180:61;:::i;:::-;3170:71;;3260:2;3250:12;;3315:2;3304:9;3300:18;3287:32;3344:2;3334:8;3331:16;3328:36;;;3360:1;3357;3350:12;3328:36;3383:24;;;-1:-1:-1;3438:4:1;3430:13;;3426:27;-1:-1:-1;3416:55:1;;3467:1;3464;3457:12;3416:55;3503:2;3490:16;3526:60;3542:43;3582:2;3542:43;:::i;3526:60::-;3608:3;3632:2;3627:3;3620:15;3660:2;3655:3;3651:12;3644:19;;3691:2;3687;3683:11;3739:7;3734:2;3728;3725:1;3721:10;3717:2;3713:19;3709:28;3706:41;3703:61;;;3760:1;3757;3750:12;3703:61;3782:1;3773:10;;3792:163;3806:2;3803:1;3800:9;3792:163;;;3863:17;;3851:30;;3824:1;3817:9;;;;;3901:12;;;;3933;;3792:163;;;3796:3;3974:5;3964:15;;;;;;;2836:1149;;;;;:::o;3990:477::-;4080:6;4088;4141:2;4129:9;4120:7;4116:23;4112:32;4109:52;;;4157:1;4154;4147:12;4109:52;4197:9;4184:23;4230:18;4222:6;4219:30;4216:50;;;4262:1;4259;4252:12;4216:50;4285:61;4338:7;4329:6;4318:9;4314:22;4285:61;:::i;:::-;4275:71;;;4396:2;4385:9;4381:18;4368:32;4409:28;4431:5;4409:28;:::i;4472:241::-;4528:6;4581:2;4569:9;4560:7;4556:23;4552:32;4549:52;;;4597:1;4594;4587:12;4549:52;4636:9;4623:23;4655:28;4677:5;4655:28;:::i;4718:245::-;4785:6;4838:2;4826:9;4817:7;4813:23;4809:32;4806:52;;;4854:1;4851;4844:12;4806:52;4886:9;4880:16;4905:28;4927:5;4905:28;:::i;4968:309::-;5033:6;5041;5094:2;5082:9;5073:7;5069:23;5065:32;5062:52;;;5110:1;5107;5100:12;5062:52;5149:9;5136:23;5168:28;5190:5;5168:28;:::i;5282:180::-;5341:6;5394:2;5382:9;5373:7;5369:23;5365:32;5362:52;;;5410:1;5407;5400:12;5362:52;-1:-1:-1;5433:23:1;;5282:180;-1:-1:-1;5282:180:1:o;5467:309::-;5532:6;5540;5593:2;5581:9;5572:7;5568:23;5564:32;5561:52;;;5609:1;5606;5599:12;5561:52;5645:9;5632:23;5622:33;;5705:2;5694:9;5690:18;5677:32;5718:28;5740:5;5718:28;:::i;5781:248::-;5849:6;5857;5910:2;5898:9;5889:7;5885:23;5881:32;5878:52;;;5926:1;5923;5916:12;5878:52;-1:-1:-1;;5949:23:1;;;6019:2;6004:18;;;5991:32;;-1:-1:-1;5781:248:1:o;6034:306::-;6122:6;6130;6138;6191:2;6179:9;6170:7;6166:23;6162:32;6159:52;;;6207:1;6204;6197:12;6159:52;6236:9;6230:16;6220:26;;6286:2;6275:9;6271:18;6265:25;6255:35;;6330:2;6319:9;6315:18;6309:25;6299:35;;6034:306;;;;;:::o;6345:454::-;6440:6;6448;6456;6464;6472;6525:3;6513:9;6504:7;6500:23;6496:33;6493:53;;;6542:1;6539;6532:12;6493:53;-1:-1:-1;;6565:23:1;;;6635:2;6620:18;;6607:32;;-1:-1:-1;6686:2:1;6671:18;;6658:32;;6737:2;6722:18;;6709:32;;-1:-1:-1;6788:3:1;6773:19;6760:33;;-1:-1:-1;6345:454:1;-1:-1:-1;6345:454:1:o;8528:597::-;8640:4;8669:2;8698;8687:9;8680:21;8730:6;8724:13;8773:6;8768:2;8757:9;8753:18;8746:34;8798:1;8808:140;8822:6;8819:1;8816:13;8808:140;;;8917:14;;;8913:23;;8907:30;8883:17;;;8902:2;8879:26;8872:66;8837:10;;8808:140;;;8966:6;8963:1;8960:13;8957:91;;;9036:1;9031:2;9022:6;9011:9;9007:22;9003:31;8996:42;8957:91;-1:-1:-1;9109:2:1;9088:15;-1:-1:-1;;9084:29:1;9069:45;;;;9116:2;9065:54;;8528:597;-1:-1:-1;;;8528:597:1:o;15312:356::-;15514:2;15496:21;;;15533:18;;;15526:30;15592:34;15587:2;15572:18;;15565:62;15659:2;15644:18;;15312:356::o;17947:347::-;18149:2;18131:21;;;18188:2;18168:18;;;18161:30;18227:25;18222:2;18207:18;;18200:53;18285:2;18270:18;;17947:347::o;19588:980::-;19850:4;19898:3;19887:9;19883:19;19929:6;19918:9;19911:25;19955:2;19993:6;19988:2;19977:9;19973:18;19966:34;20036:3;20031:2;20020:9;20016:18;20009:31;20060:6;20095;20089:13;20126:6;20118;20111:22;20164:3;20153:9;20149:19;20142:26;;20203:2;20195:6;20191:15;20177:29;;20224:1;20234:195;20248:6;20245:1;20242:13;20234:195;;;20313:13;;-1:-1:-1;;;;;20309:39:1;20297:52;;20404:15;;;;20369:12;;;;20345:1;20263:9;20234:195;;;-1:-1:-1;;;;;;;20485:32:1;;;;20480:2;20465:18;;20458:60;-1:-1:-1;;;20549:3:1;20534:19;20527:35;20446:3;19588:980;-1:-1:-1;;;19588:980:1:o;21230:275::-;21301:2;21295:9;21366:2;21347:13;;-1:-1:-1;;21343:27:1;21331:40;;21401:18;21386:34;;21422:22;;;21383:62;21380:88;;;21448:18;;:::i;:::-;21484:2;21477:22;21230:275;;-1:-1:-1;21230:275:1:o;21510:183::-;21570:4;21603:18;21595:6;21592:30;21589:56;;;21625:18;;:::i;:::-;-1:-1:-1;21670:1:1;21666:14;21682:4;21662:25;;21510:183::o;21698:128::-;21738:3;21769:1;21765:6;21762:1;21759:13;21756:39;;;21775:18;;:::i;:::-;-1:-1:-1;21811:9:1;;21698:128::o;21831:217::-;21871:1;21897;21887:132;;21941:10;21936:3;21932:20;21929:1;21922:31;21976:4;21973:1;21966:15;22004:4;22001:1;21994:15;21887:132;-1:-1:-1;22033:9:1;;21831:217::o;22053:422::-;22142:1;22185:5;22142:1;22199:270;22220:7;22210:8;22207:21;22199:270;;;22279:4;22275:1;22271:6;22267:17;22261:4;22258:27;22255:53;;;22288:18;;:::i;:::-;22338:7;22328:8;22324:22;22321:55;;;22358:16;;;;22321:55;22437:22;;;;22397:15;;;;22199:270;;;22203:3;22053:422;;;;;:::o;22480:140::-;22538:5;22567:47;22608:4;22598:8;22594:19;22588:4;22674:5;22704:8;22694:80;;-1:-1:-1;22745:1:1;22759:5;;22694:80;22793:4;22783:76;;-1:-1:-1;22830:1:1;22844:5;;22783:76;22875:4;22893:1;22888:59;;;;22961:1;22956:130;;;;22868:218;;22888:59;22918:1;22909:10;;22932:5;;;22956:130;22993:3;22983:8;22980:17;22977:43;;;23000:18;;:::i;:::-;-1:-1:-1;;23056:1:1;23042:16;;23071:5;;22868:218;;23170:2;23160:8;23157:16;23151:3;23145:4;23142:13;23138:36;23132:2;23122:8;23119:16;23114:2;23108:4;23105:12;23101:35;23098:77;23095:159;;;-1:-1:-1;23207:19:1;;;23239:5;;23095:159;23286:34;23311:8;23305:4;23286:34;:::i;:::-;23356:6;23352:1;23348:6;23344:19;23335:7;23332:32;23329:58;;;23367:18;;:::i;:::-;23405:20;;22625:806;-1:-1:-1;;;22625:806:1:o;23436:168::-;23476:7;23542:1;23538;23534:6;23530:14;23527:1;23524:21;23519:1;23512:9;23505:17;23501:45;23498:71;;;23549:18;;:::i;:::-;-1:-1:-1;23589:9:1;;23436:168::o;23609:125::-;23649:4;23677:1;23674;23671:8;23668:34;;;23682:18;;:::i;:::-;-1:-1:-1;23719:9:1;;23609:125::o;23739:135::-;23778:3;-1:-1:-1;;23799:17:1;;23796:43;;;23819:18;;:::i;:::-;-1:-1:-1;23866:1:1;23855:13;;23739:135::o;23879:127::-;23940:10;23935:3;23931:20;23928:1;23921:31;23971:4;23968:1;23961:15;23995:4;23992:1;23985:15;24011:127;24072:10;24067:3;24063:20;24060:1;24053:31;24103:4;24100:1;24093:15;24127:4;24124:1;24117:15;24143:127;24204:10;24199:3;24195:20;24192:1;24185:31;24235:4;24232:1;24225:15;24259:4;24256:1;24249:15;24275:127;24336:10;24331:3;24327:20;24324:1;24317:31;24367:4;24364:1;24357:15;24391:4;24388:1;24381:15;24407:131;-1:-1:-1;;;;;24482:31:1;;24472:42;;24462:70;;24528:1;24525;24518:12;24543:118;24629:5;24622:13;24615:21;24608:5;24605:32;24595:60;;24651:1;24648;24641:12

Swarm Source

ipfs://89c81bd06308019cf5ae74f03c3874ee2078dda14bd533e0ac106e40f8ac108e
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.