ETH Price: $2,369.21 (-3.81%)

Token

TesterAI (TAI)
 

Overview

Max Total Supply

1,000,000,000 TAI

Holders

54

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
2,968,798.763408233 TAI

Value
$0.00
0x606bcabe7acf4c9c5c1a7f4a059cfcd3f15fdbed
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:
TAI

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

/*
TESTERAI utility token for detecting errors and vulnerabilities in the program code and their optimization and correction using TesterAI

Website: https://www.aitester.tech
Telegram: https://t.me/erc_testerai
Twitter: https://twitter.com/ethai_test
App: https://app.aitester.tech
*/

pragma solidity 0.8.19;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

interface IERC20 {
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    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);
}

interface IDFactory {
    function createPair(address tokenA, address tokenB) external returns (address dPair);
}

interface IDRouter {
    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;
}

abstract contract Ownable {
    address internal owner;
    constructor(address _owner) {owner = _owner;}
    modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}
    function getOwner() external view returns (address) {return owner;}
    function isOwner(address account) public view returns (bool) {return account == owner;}
    function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
    function renounceOwnership() public onlyOwner {owner = address(0); emit OwnershipTransferred(address(0));}
    event OwnershipTransferred(address owner);
}

contract TAI is IERC20, Ownable {
    using SafeMath for uint256;

    string private constant _name = "TesterAI";
    string private constant _symbol = "TAI";
    uint8 private constant _decimals = 9;
    uint256 private _totalsupply = 10 ** 9 * 10 ** _decimals;
    IDRouter dRouter;
    address public dPair;
    bool private inswap;
    modifier lockTheSwap {inswap = true; _; inswap = false;}
    uint256 private sellFeeMax = ( _totalsupply * 1000 ) / 100000;
    uint256 private sellFeeMin = ( _totalsupply * 10 ) / 100000;
    bool private tradeEnabled = false;
    bool private swapEnabled = true;
    uint256 private sellFeeTimes;
    uint256 private sellFeeAfter;
    uint256 private buyFee = 1600;
    uint256 private sellFee = 1600;
    uint256 private transferFee = 1600;
    uint256 private denominator = 10000;
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 0;
    uint256 private devFee = 100;
    uint256 private burnFee = 0;
    address internal devAddy = 0xF2105488e73eCa4857Bb310D373128CD27613241; 
    address internal marketingAddy = 0xF2105488e73eCa4857Bb310D373128CD27613241;
    address internal lpAddy = 0xF2105488e73eCa4857Bb310D373128CD27613241;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    
    uint256 public mTransaction = ( _totalsupply * 200 ) / 10000;
    uint256 public mTransfer = ( _totalsupply * 200 ) / 10000;
    uint256 public mWallet = ( _totalsupply * 200 ) / 10000;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isSpecial;

    constructor() Ownable(msg.sender) {
        IDRouter _router = IDRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IDFactory(_router.factory()).createPair(address(this), _router.WETH());
        dRouter = _router; dPair = _pair;
        isSpecial[lpAddy] = true;
        isSpecial[marketingAddy] = true;
        isSpecial[devAddy] = true;
        isSpecial[msg.sender] = true;
        _balances[msg.sender] = _totalsupply;
        emit Transfer(address(0), msg.sender, _totalsupply);
    }

    receive() external payable {}
    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function totalSupply() public view override returns (uint256) {return _totalsupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function startTrading() external onlyOwner {tradeEnabled = true;}
    function decimals() public pure returns (uint8) {return _decimals;}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    
    function setContractSwapSettings(uint256 _swapAmount, uint256 _swapThreshold, uint256 _minTokenAmount) external onlyOwner {
        sellFeeAfter = _swapAmount; sellFeeMax = _totalsupply.mul(_swapThreshold).div(uint256(100000)); 
        sellFeeMin = _totalsupply.mul(_minTokenAmount).div(uint256(100000));
    }
    
    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }
    
    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
        if(!isSpecial[sender] && !isSpecial[recipient]){require(tradeEnabled, "tradeEnabled");}
        if(!isSpecial[sender] && !isSpecial[recipient] && recipient != address(dPair) && recipient != address(DEAD)){
        require((_balances[recipient].add(amount)) <= mWallet, "Exceeds maximum wallet amount.");}
        if(sender != dPair){require(amount <= mTransfer || isSpecial[sender] || isSpecial[recipient], "TX Limit Exceeded");}
        require(amount <= mTransaction || isSpecial[sender] || isSpecial[recipient], "TX Limit Exceeded"); 
        if(recipient == dPair && !isSpecial[sender]){sellFeeTimes += uint256(1);}
        if(shouldContractSwap(sender, recipient, amount)){swapAndLiquidify(sellFeeMax); sellFeeTimes = uint256(0);}
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = !isSpecial[sender] ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

    function setTransactionLimits(uint256 _buy, uint256 _sell, uint256 _wallet) external onlyOwner {
        uint256 newTx = _totalsupply.mul(_buy).div(10000); uint256 newTransfer = _totalsupply.mul(_sell).div(10000); uint256 newWallet = _totalsupply.mul(_wallet).div(10000);
        mTransaction = newTx; mTransfer = newTransfer; mWallet = newWallet;
        uint256 limit = totalSupply().mul(5).div(1000);
        require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%");
    }
    
    function swapAndLiquidify(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(devFee)).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator);
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee);
        if(marketingAmt > 0){payable(marketingAddy).transfer(marketingAmt);}
        uint256 contractBalance = address(this).balance;
        if(contractBalance > uint256(0)){payable(devAddy).transfer(contractBalance);}
    }

    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(recipient == dPair){return sellFee;}
        if(sender == dPair){return buyFee;}
        return transferFee;
    }
    function shouldContractSwap(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= sellFeeMin;
        bool aboveThreshold = balanceOf(address(this)) >= sellFeeMax;
        return !inswap && swapEnabled && tradeEnabled && aboveMin && !isSpecial[sender] && recipient == dPair && sellFeeTimes >= sellFeeAfter && aboveThreshold;
    }

    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 addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(dRouter), tokenAmount);
        dRouter.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            lpAddy,
            block.timestamp);
    }

    function setTransactionRequirements(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity; marketingFee = _marketing; burnFee = _burn; devFee = _development; buyFee = _total; sellFee = _sell; transferFee = _trans;
        require(buyFee <= denominator.div(1) && sellFee <= denominator.div(1) && transferFee <= denominator.div(1), "buyFee and sellFee cannot be more than 20%");
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if (isSpecial[recipient]) {return mTransaction;}
        if(getTotalFee(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        if(burnFee > uint256(0) && getTotalFee(sender, recipient) > burnFee){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));}
        return amount.sub(feeAmount);} return amount;
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dRouter.WETH();
        _approve(address(this), address(dRouter), tokenAmount);
        dRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp);
    }
    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isSpecial","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mTransfer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mWallet","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_minTokenAmount","type":"uint256"}],"name":"setContractSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setTransactionLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setTransactionRequirements","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a620004bb565b6200002290633b9aca00620004d3565b600155620186a06001546103e86200003b9190620004d3565b620000479190620004ed565b600455620186a0600154600a6200005f9190620004d3565b6200006b9190620004ed565b6005556006805461ffff19166101001790556106406009819055600a819055600b55612710600c8190556000600d819055600e8190556064600f55601055601180546001600160a01b031990811673f2105488e73eca4857bb310d373128cd2761324190811790925560128054821683179055601380549091169091179055600154620000fa9060c8620004d3565b620001069190620004ed565b60145561271060015460c86200011d9190620004d3565b620001299190620004ed565b60155561271060015460c8620001409190620004d3565b6200014c9190620004ed565b6016553480156200015c57600080fd5b50600080546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa158015620001c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ea919062000510565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000238573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025e919062000510565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d2919062000510565b600280546001600160a01b038581166001600160a01b03199283161790925560038054848416921691909117905560135481166000908152601960209081526040808320805460ff19908116600190811790925560125486168552828520805482168317905560115490951684528184208054861682179055338085528285208054909616821790955554601783528184208190559051908152939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350506200053b565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003fd578160001904821115620003e157620003e1620003a6565b80851615620003ef57918102915b93841c9390800290620003c1565b509250929050565b6000826200041657506001620004b5565b816200042557506000620004b5565b81600181146200043e5760028114620004495762000469565b6001915050620004b5565b60ff8411156200045d576200045d620003a6565b50506001821b620004b5565b5060208310610133831016604e8410600b84101617156200048e575081810a620004b5565b6200049a8383620003bc565b8060001904821115620004b157620004b1620003a6565b0290505b92915050565b6000620004cc60ff84168362000405565b9392505050565b8082028115828204841417620004b557620004b5620003a6565b6000826200050b57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200052357600080fd5b81516001600160a01b0381168114620004cc57600080fd5b611940806200054b6000396000f3fe6080604052600436106101395760003560e01c8063893d20e8116100ab5780639d8740cb1161006f5780639d8740cb146103a6578063a9059cbb146103c6578063cb7f97d7146103e6578063dd62ed3e14610406578063df9fa4d21461044c578063f2fde38b1461046257600080fd5b8063893d20e8146102f6578063953635141461031457806395d89b411461032a5780639c6fe5fb146103565780639cc353511461038657600080fd5b80632f54bf6e116100fd5780632f54bf6e14610212578063313ce567146102415780634f3ff0991461025d57806370a0823114610273578063715018a6146102a957806383134643146102be57600080fd5b806306fdde0314610145578063095ea7b31461018857806318160ddd146101b857806323b872dd146101db578063293230b8146101fb57600080fd5b3661014057005b600080fd5b34801561015157600080fd5b50604080518082019091526008815267546573746572414960c01b60208201525b60405161017f91906115da565b60405180910390f35b34801561019457600080fd5b506101a86101a3366004611640565b610482565b604051901515815260200161017f565b3480156101c457600080fd5b506101cd610499565b60405190815260200161017f565b3480156101e757600080fd5b506101a86101f636600461166c565b61050a565b34801561020757600080fd5b50610210610574565b005b34801561021e57600080fd5b506101a861022d3660046116ad565b6000546001600160a01b0391821691161490565b34801561024d57600080fd5b506040516009815260200161017f565b34801561026957600080fd5b506101cd60145481565b34801561027f57600080fd5b506101cd61028e3660046116ad565b6001600160a01b031660009081526017602052604090205490565b3480156102b557600080fd5b506102106105b6565b3480156102ca57600080fd5b506003546102de906001600160a01b031681565b6040516001600160a01b03909116815260200161017f565b34801561030257600080fd5b506000546001600160a01b03166102de565b34801561032057600080fd5b506101cd60165481565b34801561033657600080fd5b5060408051808201909152600381526254414960e81b6020820152610172565b34801561036257600080fd5b506101a86103713660046116ad565b60196020526000908152604090205460ff1681565b34801561039257600080fd5b506102106103a13660046116ca565b610625565b3480156103b257600080fd5b506102106103c13660046116ca565b610766565b3480156103d257600080fd5b506101a86103e1366004611640565b6107cc565b3480156103f257600080fd5b506102106104013660046116f6565b6107d9565b34801561041257600080fd5b506101cd610421366004611742565b6001600160a01b03918216600090815260186020908152604080832093909416825291909152205490565b34801561045857600080fd5b506101cd60155481565b34801561046e57600080fd5b5061021061047d3660046116ad565b6108ce565b600061048f33848461094c565b5060015b92915050565b60176020527fd840e16649f6b9a295d95876f4633d3a6b10b55e8162971cf78afd886d5ec89b5461dead60009081527f43fedf50e12e5c047fbe3576d03ab50250348e9a6030f531ab6d4ce10f5b03035460015491926105059290916104ff9190610a70565b90610a70565b905090565b6000610517848484610a7c565b6105698433610564856040518060600160405280602881526020016118e3602891396001600160a01b038a1660009081526018602090815260408083203384529091529020549190610fc5565b61094c565b5060015b9392505050565b6000546001600160a01b031633146105a75760405162461bcd60e51b815260040161059e9061177b565b60405180910390fd5b6006805460ff19166001179055565b6000546001600160a01b031633146105e05760405162461bcd60e51b815260040161059e9061177b565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b0316331461064f5760405162461bcd60e51b815260040161059e9061177b565b600061067261271061066c86600154610ff190919063ffffffff16565b90610ffd565b9050600061069161271061066c86600154610ff190919063ffffffff16565b905060006106b061271061066c86600154610ff190919063ffffffff16565b601484905560158390556016819055905060006106dc6103e861066c60056106d6610499565b90610ff1565b90508084101580156106ee5750808310155b80156106fa5750808210155b61075d5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b606482015260840161059e565b50505050505050565b6000546001600160a01b031633146107905760405162461bcd60e51b815260040161059e9061177b565b60088390556001546107ab90620186a09061066c9085610ff1565b6004556001546107c490620186a09061066c9084610ff1565b600555505050565b600061048f338484610a7c565b6000546001600160a01b031633146108035760405162461bcd60e51b815260040161059e9061177b565b600d879055600e8690556010859055600f8490556009839055600a829055600b819055600c54610834906001610ffd565b600954111580156108545750600c5461084e906001610ffd565b600a5411155b801561086f5750600c54610869906001610ffd565b600b5411155b61075d5760405162461bcd60e51b815260206004820152602a60248201527f62757946656520616e642073656c6c4665652063616e6e6f74206265206d6f7260448201526965207468616e2032302560b01b606482015260840161059e565b6000546001600160a01b031633146108f85760405162461bcd60e51b815260040161059e9061177b565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166109ae5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161059e565b6001600160a01b038216610a0f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161059e565b6001600160a01b0383811660008181526018602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061056d82846117b1565b6001600160a01b038316610ae05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161059e565b6001600160a01b038216610b425760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161059e565b6001600160a01b038316600090815260176020526040902054811115610bc45760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b606482015260840161059e565b6001600160a01b03831660009081526019602052604090205460ff16158015610c0657506001600160a01b03821660009081526019602052604090205460ff16155b15610c4c5760065460ff16610c4c5760405162461bcd60e51b815260206004820152600c60248201526b1d1c985919515b98589b195960a21b604482015260640161059e565b6001600160a01b03831660009081526019602052604090205460ff16158015610c8e57506001600160a01b03821660009081526019602052604090205460ff16155b8015610ca857506003546001600160a01b03838116911614155b8015610cbf57506001600160a01b03821661dead14155b15610d38576016546001600160a01b038316600090815260176020526040902054610cea9083611009565b1115610d385760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000604482015260640161059e565b6003546001600160a01b03848116911614610dd95760155481111580610d7657506001600160a01b03831660009081526019602052604090205460ff165b80610d9957506001600160a01b03821660009081526019602052604090205460ff165b610dd95760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161059e565b60145481111580610e0257506001600160a01b03831660009081526019602052604090205460ff165b80610e2557506001600160a01b03821660009081526019602052604090205460ff165b610e655760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161059e565b6003546001600160a01b038381169116148015610e9b57506001600160a01b03831660009081526019602052604090205460ff16155b15610eb957600160076000828254610eb391906117c4565b90915550505b610ec4838383611015565b15610eda57610ed46004546110cd565b60006007555b6001600160a01b038316600090815260176020526040902054610efd9082610a70565b6001600160a01b038416600090815260176020908152604080832093909355601990529081205460ff1615610f325781610f3d565b610f3d848484611251565b6001600160a01b038416600090815260176020526040902054909150610f639082611009565b6001600160a01b0380851660008181526017602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610fb79085815260200190565b60405180910390a350505050565b60008184841115610fe95760405162461bcd60e51b815260040161059e91906115da565b505050900390565b600061056d82846117d7565b600061056d82846117ee565b600061056d82846117c4565b60055460045430600090815260176020526040812054600354919385101592111590600160a01b900460ff161580156110555750600654610100900460ff165b8015611063575060065460ff165b801561106c5750815b801561109157506001600160a01b03861660009081526019602052604090205460ff16155b80156110aa57506003546001600160a01b038681169116145b80156110ba575060085460075410155b80156110c35750805b9695505050505050565b6003805460ff60a01b1916600160a01b179055600f54600e54600d5460009261110b926002926106d692916111059182906001611009565b90611009565b905060006111288261066c600d5486610ff190919063ffffffff16565b905060006111368483610a70565b90504761114282611381565b600061114e4783610a70565b9050600061117161116a600d5488610a7090919063ffffffff16565b8390610ffd565b9050600061118a600d5483610ff190919063ffffffff16565b9050801561119c5761119c86826114db565b600e546000906111b1906106d6856002610ff1565b905080156111f5576012546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156111f3573d6000803e3d6000fd5b505b478015611238576011546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611236573d6000803e3d6000fd5b505b50506003805460ff60a01b191690555050505050505050565b6001600160a01b03821660009081526019602052604081205460ff161561127b575060145461056d565b6000611287858561158f565b111561137a5760006112aa61129c868661158f565b600c546106d6908690610ffd565b306000908152601760205260409020549091506112c79082611009565b30600081815260176020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113189085815260200190565b60405180910390a3600060105411801561133c575060105461133a868661158f565b115b15611368576113683061dead6113636010546106d6600c5489610ffd90919063ffffffff16565b610a7c565b6113728382610a70565b91505061056d565b5092915050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106113b6576113b6611810565b6001600160a01b03928316602091820292909201810191909152600254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561140f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114339190611826565b8160018151811061144657611446611810565b6001600160a01b03928316602091820292909201015260025461146c913091168461094c565b60025460405163791ac94760e01b81526001600160a01b039091169063791ac947906114a5908590600090869030904290600401611843565b600060405180830381600087803b1580156114bf57600080fd5b505af11580156114d3573d6000803e3d6000fd5b505050505050565b6002546114f39030906001600160a01b03168461094c565b60025460135460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611563573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061158891906118b4565b5050505050565b6003546000906001600160a01b03908116908316036115b15750600a54610493565b6003546001600160a01b03908116908416036115d05750600954610493565b50600b5492915050565b600060208083528351808285015260005b81811015611607578581018301518582016040015282016115eb565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461163d57600080fd5b50565b6000806040838503121561165357600080fd5b823561165e81611628565b946020939093013593505050565b60008060006060848603121561168157600080fd5b833561168c81611628565b9250602084013561169c81611628565b929592945050506040919091013590565b6000602082840312156116bf57600080fd5b813561056d81611628565b6000806000606084860312156116df57600080fd5b505081359360208301359350604090920135919050565b600080600080600080600060e0888a03121561171157600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000806040838503121561175557600080fd5b823561176081611628565b9150602083013561177081611628565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156104935761049361179b565b808201808211156104935761049361179b565b80820281158282048414176104935761049361179b565b60008261180b57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561183857600080fd5b815161056d81611628565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156118935784516001600160a01b03168352938301939183019160010161186e565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156118c957600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b401e404b62b6ea6cdc16610aaa49ff736f82c761128d9c394e5d091ec2ca5ec64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101395760003560e01c8063893d20e8116100ab5780639d8740cb1161006f5780639d8740cb146103a6578063a9059cbb146103c6578063cb7f97d7146103e6578063dd62ed3e14610406578063df9fa4d21461044c578063f2fde38b1461046257600080fd5b8063893d20e8146102f6578063953635141461031457806395d89b411461032a5780639c6fe5fb146103565780639cc353511461038657600080fd5b80632f54bf6e116100fd5780632f54bf6e14610212578063313ce567146102415780634f3ff0991461025d57806370a0823114610273578063715018a6146102a957806383134643146102be57600080fd5b806306fdde0314610145578063095ea7b31461018857806318160ddd146101b857806323b872dd146101db578063293230b8146101fb57600080fd5b3661014057005b600080fd5b34801561015157600080fd5b50604080518082019091526008815267546573746572414960c01b60208201525b60405161017f91906115da565b60405180910390f35b34801561019457600080fd5b506101a86101a3366004611640565b610482565b604051901515815260200161017f565b3480156101c457600080fd5b506101cd610499565b60405190815260200161017f565b3480156101e757600080fd5b506101a86101f636600461166c565b61050a565b34801561020757600080fd5b50610210610574565b005b34801561021e57600080fd5b506101a861022d3660046116ad565b6000546001600160a01b0391821691161490565b34801561024d57600080fd5b506040516009815260200161017f565b34801561026957600080fd5b506101cd60145481565b34801561027f57600080fd5b506101cd61028e3660046116ad565b6001600160a01b031660009081526017602052604090205490565b3480156102b557600080fd5b506102106105b6565b3480156102ca57600080fd5b506003546102de906001600160a01b031681565b6040516001600160a01b03909116815260200161017f565b34801561030257600080fd5b506000546001600160a01b03166102de565b34801561032057600080fd5b506101cd60165481565b34801561033657600080fd5b5060408051808201909152600381526254414960e81b6020820152610172565b34801561036257600080fd5b506101a86103713660046116ad565b60196020526000908152604090205460ff1681565b34801561039257600080fd5b506102106103a13660046116ca565b610625565b3480156103b257600080fd5b506102106103c13660046116ca565b610766565b3480156103d257600080fd5b506101a86103e1366004611640565b6107cc565b3480156103f257600080fd5b506102106104013660046116f6565b6107d9565b34801561041257600080fd5b506101cd610421366004611742565b6001600160a01b03918216600090815260186020908152604080832093909416825291909152205490565b34801561045857600080fd5b506101cd60155481565b34801561046e57600080fd5b5061021061047d3660046116ad565b6108ce565b600061048f33848461094c565b5060015b92915050565b60176020527fd840e16649f6b9a295d95876f4633d3a6b10b55e8162971cf78afd886d5ec89b5461dead60009081527f43fedf50e12e5c047fbe3576d03ab50250348e9a6030f531ab6d4ce10f5b03035460015491926105059290916104ff9190610a70565b90610a70565b905090565b6000610517848484610a7c565b6105698433610564856040518060600160405280602881526020016118e3602891396001600160a01b038a1660009081526018602090815260408083203384529091529020549190610fc5565b61094c565b5060015b9392505050565b6000546001600160a01b031633146105a75760405162461bcd60e51b815260040161059e9061177b565b60405180910390fd5b6006805460ff19166001179055565b6000546001600160a01b031633146105e05760405162461bcd60e51b815260040161059e9061177b565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b0316331461064f5760405162461bcd60e51b815260040161059e9061177b565b600061067261271061066c86600154610ff190919063ffffffff16565b90610ffd565b9050600061069161271061066c86600154610ff190919063ffffffff16565b905060006106b061271061066c86600154610ff190919063ffffffff16565b601484905560158390556016819055905060006106dc6103e861066c60056106d6610499565b90610ff1565b90508084101580156106ee5750808310155b80156106fa5750808210155b61075d5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b606482015260840161059e565b50505050505050565b6000546001600160a01b031633146107905760405162461bcd60e51b815260040161059e9061177b565b60088390556001546107ab90620186a09061066c9085610ff1565b6004556001546107c490620186a09061066c9084610ff1565b600555505050565b600061048f338484610a7c565b6000546001600160a01b031633146108035760405162461bcd60e51b815260040161059e9061177b565b600d879055600e8690556010859055600f8490556009839055600a829055600b819055600c54610834906001610ffd565b600954111580156108545750600c5461084e906001610ffd565b600a5411155b801561086f5750600c54610869906001610ffd565b600b5411155b61075d5760405162461bcd60e51b815260206004820152602a60248201527f62757946656520616e642073656c6c4665652063616e6e6f74206265206d6f7260448201526965207468616e2032302560b01b606482015260840161059e565b6000546001600160a01b031633146108f85760405162461bcd60e51b815260040161059e9061177b565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166109ae5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161059e565b6001600160a01b038216610a0f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161059e565b6001600160a01b0383811660008181526018602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061056d82846117b1565b6001600160a01b038316610ae05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161059e565b6001600160a01b038216610b425760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161059e565b6001600160a01b038316600090815260176020526040902054811115610bc45760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b606482015260840161059e565b6001600160a01b03831660009081526019602052604090205460ff16158015610c0657506001600160a01b03821660009081526019602052604090205460ff16155b15610c4c5760065460ff16610c4c5760405162461bcd60e51b815260206004820152600c60248201526b1d1c985919515b98589b195960a21b604482015260640161059e565b6001600160a01b03831660009081526019602052604090205460ff16158015610c8e57506001600160a01b03821660009081526019602052604090205460ff16155b8015610ca857506003546001600160a01b03838116911614155b8015610cbf57506001600160a01b03821661dead14155b15610d38576016546001600160a01b038316600090815260176020526040902054610cea9083611009565b1115610d385760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000604482015260640161059e565b6003546001600160a01b03848116911614610dd95760155481111580610d7657506001600160a01b03831660009081526019602052604090205460ff165b80610d9957506001600160a01b03821660009081526019602052604090205460ff165b610dd95760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161059e565b60145481111580610e0257506001600160a01b03831660009081526019602052604090205460ff165b80610e2557506001600160a01b03821660009081526019602052604090205460ff165b610e655760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161059e565b6003546001600160a01b038381169116148015610e9b57506001600160a01b03831660009081526019602052604090205460ff16155b15610eb957600160076000828254610eb391906117c4565b90915550505b610ec4838383611015565b15610eda57610ed46004546110cd565b60006007555b6001600160a01b038316600090815260176020526040902054610efd9082610a70565b6001600160a01b038416600090815260176020908152604080832093909355601990529081205460ff1615610f325781610f3d565b610f3d848484611251565b6001600160a01b038416600090815260176020526040902054909150610f639082611009565b6001600160a01b0380851660008181526017602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610fb79085815260200190565b60405180910390a350505050565b60008184841115610fe95760405162461bcd60e51b815260040161059e91906115da565b505050900390565b600061056d82846117d7565b600061056d82846117ee565b600061056d82846117c4565b60055460045430600090815260176020526040812054600354919385101592111590600160a01b900460ff161580156110555750600654610100900460ff165b8015611063575060065460ff165b801561106c5750815b801561109157506001600160a01b03861660009081526019602052604090205460ff16155b80156110aa57506003546001600160a01b038681169116145b80156110ba575060085460075410155b80156110c35750805b9695505050505050565b6003805460ff60a01b1916600160a01b179055600f54600e54600d5460009261110b926002926106d692916111059182906001611009565b90611009565b905060006111288261066c600d5486610ff190919063ffffffff16565b905060006111368483610a70565b90504761114282611381565b600061114e4783610a70565b9050600061117161116a600d5488610a7090919063ffffffff16565b8390610ffd565b9050600061118a600d5483610ff190919063ffffffff16565b9050801561119c5761119c86826114db565b600e546000906111b1906106d6856002610ff1565b905080156111f5576012546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156111f3573d6000803e3d6000fd5b505b478015611238576011546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611236573d6000803e3d6000fd5b505b50506003805460ff60a01b191690555050505050505050565b6001600160a01b03821660009081526019602052604081205460ff161561127b575060145461056d565b6000611287858561158f565b111561137a5760006112aa61129c868661158f565b600c546106d6908690610ffd565b306000908152601760205260409020549091506112c79082611009565b30600081815260176020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113189085815260200190565b60405180910390a3600060105411801561133c575060105461133a868661158f565b115b15611368576113683061dead6113636010546106d6600c5489610ffd90919063ffffffff16565b610a7c565b6113728382610a70565b91505061056d565b5092915050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106113b6576113b6611810565b6001600160a01b03928316602091820292909201810191909152600254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561140f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114339190611826565b8160018151811061144657611446611810565b6001600160a01b03928316602091820292909201015260025461146c913091168461094c565b60025460405163791ac94760e01b81526001600160a01b039091169063791ac947906114a5908590600090869030904290600401611843565b600060405180830381600087803b1580156114bf57600080fd5b505af11580156114d3573d6000803e3d6000fd5b505050505050565b6002546114f39030906001600160a01b03168461094c565b60025460135460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611563573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061158891906118b4565b5050505050565b6003546000906001600160a01b03908116908316036115b15750600a54610493565b6003546001600160a01b03908116908416036115d05750600954610493565b50600b5492915050565b600060208083528351808285015260005b81811015611607578581018301518582016040015282016115eb565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461163d57600080fd5b50565b6000806040838503121561165357600080fd5b823561165e81611628565b946020939093013593505050565b60008060006060848603121561168157600080fd5b833561168c81611628565b9250602084013561169c81611628565b929592945050506040919091013590565b6000602082840312156116bf57600080fd5b813561056d81611628565b6000806000606084860312156116df57600080fd5b505081359360208301359350604090920135919050565b600080600080600080600060e0888a03121561171157600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6000806040838503121561175557600080fd5b823561176081611628565b9150602083013561177081611628565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156104935761049361179b565b808201808211156104935761049361179b565b80820281158282048414176104935761049361179b565b60008261180b57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561183857600080fd5b815161056d81611628565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156118935784516001600160a01b03168352938301939183019160010161186e565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156118c957600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b401e404b62b6ea6cdc16610aaa49ff736f82c761128d9c394e5d091ec2ca5ec64736f6c63430008130033

Deployed Bytecode Sourcemap

3878:9801:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6133:67;;;;;;;;;;-1:-1:-1;6193:5:0;;;;;;;;;;;;-1:-1:-1;;;6193:5:0;;;;6133:67;;;;;;;:::i;:::-;;;;;;;;6952:133;;;;;;;;;;-1:-1:-1;6952:133:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6952:133:0;1023:187:1;6525:132:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;6525:132:0;1215:177:1;7423:309:0;;;;;;;;;;-1:-1:-1;7423:309:0;;;;;:::i;:::-;;:::i;6808:65::-;;;;;;;;;;;;;:::i;:::-;;3507:87;;;;;;;;;;-1:-1:-1;3507:87:0;;;;;:::i;:::-;3562:4;3587:5;-1:-1:-1;;;;;3576:16:0;;;3587:5;;3576:16;;3507:87;6879:67;;;;;;;;;;-1:-1:-1;6879:67:0;;4082:1;2252:36:1;;2240:2;2225:18;6879:67:0;2110:184:1;5198:60:0;;;;;;;;;;;;;;;;6416:103;;;;;;;;;;-1:-1:-1;6416:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;6499:18:0;6482:7;6499:18;;;:9;:18;;;;;;;6416:103;3717:106;;;;;;;;;;;;;:::i;4176:20::-;;;;;;;;;;-1:-1:-1;4176:20:0;;;;-1:-1:-1;;;;;4176:20:0;;;;;;-1:-1:-1;;;;;2463:32:1;;;2445:51;;2433:2;2418:18;4176:20:0;2299:203:1;3434:67:0;;;;;;;;;;-1:-1:-1;3477:7:0;3494:5;-1:-1:-1;;;;;3494:5:0;3434:67;;5329:55;;;;;;;;;;;;;;;;6206:71;;;;;;;;;;-1:-1:-1;6268:7:0;;;;;;;;;;;;-1:-1:-1;;;6268:7:0;;;;6206:71;;5514:42;;;;;;;;;;-1:-1:-1;5514:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9144:543;;;;;;;;;;-1:-1:-1;9144:543:0;;;;;:::i;:::-;;:::i;7097:314::-;;;;;;;;;;-1:-1:-1;7097:314:0;;;;;:::i;:::-;;:::i;6663:139::-;;;;;;;;;;-1:-1:-1;6663:139:0;;;;;:::i;:::-;;:::i;12059:510::-;;;;;;;;;;-1:-1:-1;12059:510:0;;;;;:::i;:::-;;:::i;6283:127::-;;;;;;;;;;-1:-1:-1;6283:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;6381:18:0;;;6364:7;6381:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6283:127;5265:57;;;;;;;;;;;;;;;;3600:111;;;;;;;;;;-1:-1:-1;3600:111:0;;;;;:::i;:::-;;:::i;6952:133::-;7027:4;7034:37;7043:10;7055:7;7064:6;7034:8;:37::i;:::-;-1:-1:-1;7079:4:0;6952:133;;;;;:::o;6525:132::-;6499:9;:18;;;;5143:42;6578:7;6499:18;;;;;6595:12;;6578:7;;6595:60;;6499:18;;6595:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;6588:67;;6525:132;:::o;7423:309::-;7521:4;7538:36;7548:6;7556:9;7567:6;7538:9;:36::i;:::-;7585:117;7594:6;7602:10;7614:87;7650:6;7614:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7614:19:0;;;;;;:11;:19;;;;;;;;7634:10;7614:31;;;;;;;;;:87;:35;:87::i;:::-;7585:8;:117::i;:::-;-1:-1:-1;7720:4:0;7423:309;;;;;;:::o;6808:65::-;3562:4;3587:5;-1:-1:-1;;;;;3587:5:0;3401:10;3576:16;3385:38;;;;-1:-1:-1;;;3385:38:0;;;;;;;:::i;:::-;;;;;;;;;6852:12:::1;:19:::0;;-1:-1:-1;;6852:19:0::1;6867:4;6852:19;::::0;;6808:65::o;3717:106::-;3562:4;3587:5;-1:-1:-1;;;;;3587:5:0;3401:10;3576:16;3385:38;;;;-1:-1:-1;;;3385:38:0;;;;;;;:::i;:::-;3780:1:::1;3764:18:::0;;-1:-1:-1;;;;;;3764:18:0::1;::::0;;3789:32:::1;::::0;2445:51:1;;;3789:32:0::1;::::0;2433:2:1;2418:18;3789:32:0::1;;;;;;;3717:106::o:0;9144:543::-;3562:4;3587:5;-1:-1:-1;;;;;3587:5:0;3401:10;3576:16;3385:38;;;;-1:-1:-1;;;3385:38:0;;;;;;;:::i;:::-;9250:13:::1;9266:33;9293:5;9266:22;9283:4;9266:12;;:16;;:22;;;;:::i;:::-;:26:::0;::::1;:33::i;:::-;9250:49;;9301:19;9323:34;9351:5;9323:23;9340:5;9323:12;;:16;;:23;;;;:::i;:34::-;9301:56;;9359:17;9379:36;9409:5;9379:25;9396:7;9379:12;;:16;;:25;;;;:::i;:36::-;9426:12;:20:::0;;;9448:9:::1;:23:::0;;;9473:7:::1;:19:::0;;;9359:56;-1:-1:-1;;9519:30:0::1;9544:4;9519:20;9537:1;9519:13;:11;:13::i;:::-;:17:::0;::::1;:20::i;:30::-;9503:46;;9577:5;9568;:14;;:38;;;;;9601:5;9586:11;:20;;9568:38;:60;;;;;9623:5;9610:9;:18;;9568:60;9560:119;;;::::0;-1:-1:-1;;;9560:119:0;;4614:2:1;9560:119:0::1;::::0;::::1;4596:21:1::0;4653:2;4633:18;;;4626:30;4692:34;4672:18;;;4665:62;-1:-1:-1;;;4743:18:1;;;4736:44;4797:19;;9560:119:0::1;4412:410:1::0;9560:119:0::1;9239:448;;;;9144:543:::0;;;:::o;7097:314::-;3562:4;3587:5;-1:-1:-1;;;;;3587:5:0;3401:10;3576:16;3385:38;;;;-1:-1:-1;;;3385:38:0;;;;;;;:::i;:::-;7230:12:::1;:26:::0;;;7271:12:::1;::::0;:53:::1;::::0;7316:6:::1;::::0;7271:32:::1;::::0;7288:14;7271:16:::1;:32::i;:53::-;7258:10;:66:::0;7349:12:::1;::::0;:54:::1;::::0;7395:6:::1;::::0;7349:33:::1;::::0;7366:15;7349:16:::1;:33::i;:54::-;7336:10;:67:::0;-1:-1:-1;;;7097:314:0:o;6663:139::-;6741:4;6748:40;6758:10;6770:9;6781:6;6748:9;:40::i;12059:510::-;3562:4;3587:5;-1:-1:-1;;;;;3587:5:0;3401:10;3576:16;3385:38;;;;-1:-1:-1;;;3385:38:0;;;;;;;:::i;:::-;12249:12:::1;:25:::0;;;12276:12:::1;:25:::0;;;12303:7:::1;:15:::0;;;12320:6:::1;:21:::0;;;12343:6:::1;:15:::0;;;12360:7:::1;:15:::0;;;12377:11:::1;:20:::0;;;12426:11:::1;::::0;:18:::1;::::0;-1:-1:-1;12426:15:0::1;:18::i;:::-;12416:6;;:28;;:61;;;;-1:-1:-1::0;12459:11:0::1;::::0;:18:::1;::::0;12475:1:::1;12459:15;:18::i;:::-;12448:7;;:29;;12416:61;:98;;;;-1:-1:-1::0;12496:11:0::1;::::0;:18:::1;::::0;12512:1:::1;12496:15;:18::i;:::-;12481:11;;:33;;12416:98;12408:153;;;::::0;-1:-1:-1;;;12408:153:0;;5029:2:1;12408:153:0::1;::::0;::::1;5011:21:1::0;5068:2;5048:18;;;5041:30;5107:34;5087:18;;;5080:62;-1:-1:-1;;;5158:18:1;;;5151:40;5208:19;;12408:153:0::1;4827:406:1::0;3600:111:0;3562:4;3587:5;-1:-1:-1;;;;;3587:5:0;3401:10;3576:16;3385:38;;;;-1:-1:-1;;;3385:38:0;;;;;;;:::i;:::-;3666:5:::1;:11:::0;;-1:-1:-1;;;;;;3666:11:0::1;-1:-1:-1::0;;;;;3666:11:0;::::1;::::0;;::::1;::::0;;;3684:25:::1;::::0;2445:51:1;;;3684:25:0::1;::::0;2433:2:1;2418:18;3684:25:0::1;;;;;;;3600:111:::0;:::o;11375:335::-;-1:-1:-1;;;;;11468:19:0;;11460:68;;;;-1:-1:-1;;;11460:68:0;;5656:2:1;11460:68:0;;;5638:21:1;5695:2;5675:18;;;5668:30;5734:34;5714:18;;;5707:62;-1:-1:-1;;;5785:18:1;;;5778:34;5829:19;;11460:68:0;5454:400:1;11460:68:0;-1:-1:-1;;;;;11547:21:0;;11539:68;;;;-1:-1:-1;;;11539:68:0;;6061:2:1;11539:68:0;;;6043:21:1;6100:2;6080:18;;;6073:30;6139:34;6119:18;;;6112:62;-1:-1:-1;;;6190:18:1;;;6183:32;6232:19;;11539:68:0;5859:398:1;11539:68:0;-1:-1:-1;;;;;11618:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;11670:32;;1361:25:1;;;11670:32:0;;1334:18:1;11670:32:0;;;;;;;11375:335;;;:::o;488:98::-;546:7;573:5;577:1;573;:5;:::i;7744:1392::-;-1:-1:-1;;;;;7841:20:0;;7833:70;;;;-1:-1:-1;;;7833:70:0;;6729:2:1;7833:70:0;;;6711:21:1;6768:2;6748:18;;;6741:30;6807:34;6787:18;;;6780:62;-1:-1:-1;;;6858:18:1;;;6851:35;6903:19;;7833:70:0;6527:401:1;7833:70:0;-1:-1:-1;;;;;7922:23:0;;7914:71;;;;-1:-1:-1;;;7914:71:0;;7135:2:1;7914:71:0;;;7117:21:1;7174:2;7154:18;;;7147:30;7213:34;7193:18;;;7186:62;-1:-1:-1;;;7264:18:1;;;7257:33;7307:19;;7914:71:0;6933:399:1;7914:71:0;-1:-1:-1;;;;;6499:18:0;;6482:7;6499:18;;;:9;:18;;;;;;8004:6;:27;;7996:88;;;;-1:-1:-1;;;7996:88:0;;7539:2:1;7996:88:0;;;7521:21:1;7578:2;7558:18;;;7551:30;7617:34;7597:18;;;7590:62;-1:-1:-1;;;7668:18:1;;;7661:47;7725:19;;7996:88:0;7337:413:1;7996:88:0;-1:-1:-1;;;;;8099:17:0;;;;;;:9;:17;;;;;;;;8098:18;:43;;;;-1:-1:-1;;;;;;8121:20:0;;;;;;:9;:20;;;;;;;;8120:21;8098:43;8095:87;;;8151:12;;;;8143:37;;;;-1:-1:-1;;;8143:37:0;;7957:2:1;8143:37:0;;;7939:21:1;7996:2;7976:18;;;7969:30;-1:-1:-1;;;8015:18:1;;;8008:42;8067:18;;8143:37:0;7755:336:1;8143:37:0;-1:-1:-1;;;;;8196:17:0;;;;;;:9;:17;;;;;;;;8195:18;:43;;;;-1:-1:-1;;;;;;8218:20:0;;;;;;:9;:20;;;;;;;;8217:21;8195:43;:74;;;;-1:-1:-1;8263:5:0;;-1:-1:-1;;;;;8242:27:0;;;8263:5;;8242:27;;8195:74;:104;;;;-1:-1:-1;;;;;;8273:26:0;;5143:42;8273:26;;8195:104;8192:209;;;8357:7;;-1:-1:-1;;;;;8320:20:0;;;;;;:9;:20;;;;;;:32;;8345:6;8320:24;:32::i;:::-;8319:45;;8311:88;;;;-1:-1:-1;;;8311:88:0;;8298:2:1;8311:88:0;;;8280:21:1;8337:2;8317:18;;;8310:30;8376:32;8356:18;;;8349:60;8426:18;;8311:88:0;8096:354:1;8311:88:0;8424:5;;-1:-1:-1;;;;;8414:15:0;;;8424:5;;8414:15;8411:116;;8449:9;;8439:6;:19;;:40;;;-1:-1:-1;;;;;;8462:17:0;;;;;;:9;:17;;;;;;;;8439:40;:64;;;-1:-1:-1;;;;;;8483:20:0;;;;;;:9;:20;;;;;;;;8439:64;8431:94;;;;-1:-1:-1;;;8431:94:0;;8657:2:1;8431:94:0;;;8639:21:1;8696:2;8676:18;;;8669:30;-1:-1:-1;;;8715:18:1;;;8708:47;8772:18;;8431:94:0;8455:341:1;8431:94:0;8555:12;;8545:6;:22;;:43;;;-1:-1:-1;;;;;;8571:17:0;;;;;;:9;:17;;;;;;;;8545:43;:67;;;-1:-1:-1;;;;;;8592:20:0;;;;;;:9;:20;;;;;;;;8545:67;8537:97;;;;-1:-1:-1;;;8537:97:0;;8657:2:1;8537:97:0;;;8639:21:1;8696:2;8676:18;;;8669:30;-1:-1:-1;;;8715:18:1;;;8708:47;8772:18;;8537:97:0;8455:341:1;8537:97:0;8662:5;;-1:-1:-1;;;;;8649:18:0;;;8662:5;;8649:18;:40;;;;-1:-1:-1;;;;;;8672:17:0;;;;;;:9;:17;;;;;;;;8671:18;8649:40;8646:73;;;8715:1;8691:12;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;8646:73:0;8732:45;8751:6;8759:9;8770:6;8732:18;:45::i;:::-;8729:107;;;8779:28;8796:10;;8779:16;:28::i;:::-;8832:1;8809:12;:25;8729:107;-1:-1:-1;;;;;8866:17:0;;;;;;:9;:17;;;;;;:29;;8888:6;8866:21;:29::i;:::-;-1:-1:-1;;;;;8846:17:0;;;;;;:9;:17;;;;;;;;:49;;;;8932:9;:17;;;;;;;;8931:18;:64;;8989:6;8931:64;;;8952:34;8960:6;8968:9;8979:6;8952:7;:34::i;:::-;-1:-1:-1;;;;;9029:20:0;;;;;;:9;:20;;;;;;8906:89;;-1:-1:-1;9029:40:0;;8906:89;9029:24;:40::i;:::-;-1:-1:-1;;;;;9006:20:0;;;;;;;:9;:20;;;;;;;:63;;;;9085:43;;;;;;;;;;9113:14;1361:25:1;;1349:2;1334:18;;1215:177;9085:43:0;;;;;;;;7822:1314;7744:1392;;;:::o;912:240::-;1032:7;1093:12;1085:6;;;;1077:29;;;;-1:-1:-1;;;1077:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1128:5:0;;;912:240::o;594:98::-;652:7;679:5;683:1;679;:5;:::i;700:98::-;758:7;785:5;789:1;785;:5;:::i;382:98::-;440:7;467:5;471:1;467;:5;:::i;10971:396::-;11116:10;;11187;;11177:4;11073;6499:18;;;:9;:18;;;;;;11216:6;;11073:4;;11106:20;;;;-1:-1:-1;11159:38:0;;-1:-1:-1;;;11216:6:0;;;;11215:7;:22;;;;-1:-1:-1;11226:11:0;;;;;;;11215:22;:38;;;;-1:-1:-1;11241:12:0;;;;11215:38;:50;;;;;11257:8;11215:50;:72;;;;-1:-1:-1;;;;;;11270:17:0;;;;;;:9;:17;;;;;;;;11269:18;11215:72;:94;;;;-1:-1:-1;11304:5:0;;-1:-1:-1;;;;;11291:18:0;;;11304:5;;11291:18;11215:94;:126;;;;;11329:12;;11313;;:28;;11215:126;:144;;;;;11345:14;11215:144;11208:151;10971:396;-1:-1:-1;;;;;;10971:396:0:o;9699:1039::-;4251:6;:13;;-1:-1:-1;;;;4251:13:0;-1:-1:-1;;;4251:13:0;;;9838:6:::1;::::0;9820:12:::1;::::0;9796::::1;::::0;4251:13;;9795:58:::1;::::0;9851:1:::1;::::0;9796:49:::1;::::0;9838:6;9796:37:::1;::::0;;;4260:4;9796:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;9795:58::-;9772:81;;9864:32;9899:42;9928:12;9899:24;9910:12;;9899:6;:10;;:24;;;;:::i;:42::-;9864:77:::0;-1:-1:-1;9952:14:0::1;9969:36;:6:::0;9864:77;9969:10:::1;:36::i;:::-;9952:53:::0;-1:-1:-1;10041:21:0::1;10073:24;9952:53:::0;10073:16:::1;:24::i;:::-;10108:20;10131:41;:21;10157:14:::0;10131:25:::1;:41::i;:::-;10108:64;;10183:19;10204:48;10221:30;10238:12;;10221;:16;;:30;;;;:::i;:::-;10204:12:::0;;:16:::1;:48::i;:::-;10183:69;;10263:29;10295;10311:12;;10295:11;:15;;:29;;;;:::i;:::-;10263:61:::0;-1:-1:-1;10338:34:0;;10335:103:::1;;10374:61;10387:24;10413:21;10374:12;:61::i;:::-;10494:12;::::0;10448:20:::1;::::0;10471:36:::1;::::0;:18:::1;:11:::0;10487:1:::1;10471:15;:18::i;:36::-;10448:59:::0;-1:-1:-1;10521:16:0;;10518:68:::1;;10547:13;::::0;10539:45:::1;::::0;-1:-1:-1;;;;;10547:13:0;;::::1;::::0;10539:45;::::1;;;::::0;10571:12;;10547:13:::1;10539:45:::0;10547:13;10539:45;10571:12;10547:13;10539:45;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;10518:68;10622:21;10657:28:::0;;10654:77:::1;;10695:7;::::0;10687:42:::1;::::0;-1:-1:-1;;;;;10695:7:0;;::::1;::::0;10687:42;::::1;;;::::0;10713:15;;10695:7:::1;10687:42:::0;10695:7;10687:42;10713:15;10695:7;10687:42;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;10654:77;-1:-1:-1::0;;4269:6:0;:14;;-1:-1:-1;;;;4269:14:0;;;-1:-1:-1;;;;;;;;9699:1039:0:o;12577:648::-;-1:-1:-1;;;;;12687:20:0;;12663:7;12687:20;;;:9;:20;;;;;;;;12683:48;;;-1:-1:-1;12717:12:0;;12710:19;;12683:48;12777:1;12744:30;12756:6;12764:9;12744:11;:30::i;:::-;:34;12741:462;;;12790:17;12810:59;12838:30;12850:6;12858:9;12838:11;:30::i;:::-;12821:11;;12810:23;;:6;;:10;:23::i;:59::-;12925:4;12907:24;;;;:9;:24;;;;;;12790:79;;-1:-1:-1;12907:39:0;;12790:79;12907:28;:39::i;:::-;12898:4;12880:24;;;;:9;:24;;;;;;;:66;;;;12962:42;;-1:-1:-1;;;;;12962:42:0;;;;;;;12994:9;1361:25:1;;1349:2;1334:18;;1215:177;12962:42:0;;;;;;;;13036:1;13018:7;;:20;:64;;;;;13075:7;;13042:30;13054:6;13062:9;13042:11;:30::i;:::-;:40;13018:64;13015:148;;;13084:77;13102:4;5143:42;13124:36;13152:7;;13124:23;13135:11;;13124:6;:10;;:23;;;;:::i;:36::-;13084:9;:77::i;:::-;13180:21;:6;13191:9;13180:10;:21::i;:::-;13173:28;;;;;12741:462;-1:-1:-1;13211:6:0;12577:648;-1:-1:-1;;12577:648:0:o;13233:437::-;13323:16;;;13337:1;13323:16;;;;;;;;13299:21;;13323:16;;;;;;;;;;-1:-1:-1;13323:16:0;13299:40;;13368:4;13350;13355:1;13350:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13350:23:0;;;:7;;;;;;;;;;:23;;;;13394:7;;:14;;;-1:-1:-1;;;13394:14:0;;;;:7;;;;;:12;;:14;;;;;13350:7;;13394:14;;;;;:7;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13384:4;13389:1;13384:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13384:24:0;;;:7;;;;;;;;;:24;13451:7;;13419:54;;13436:4;;13451:7;13461:11;13419:8;:54::i;:::-;13484:7;;:178;;-1:-1:-1;;;13484:178:0;;-1:-1:-1;;;;;13484:7:0;;;;:58;;:178;;13557:11;;13484:7;;13599:4;;13626;;13646:15;;13484:178;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13288:382;13233:437;:::o;11718:333::-;11831:7;;11799:54;;11816:4;;-1:-1:-1;;;;;11831:7:0;11841:11;11799:8;:54::i;:::-;11864:7;;12006:6;;11864:179;;-1:-1:-1;;;11864:179:0;;11928:4;11864:179;;;11172:34:1;11222:18;;;11215:34;;;11864:7:0;11265:18:1;;;11258:34;;;11308:18;;;11301:34;-1:-1:-1;;;;;12006:6:0;;;11351:19:1;;;11344:44;12027:15:0;11404:19:1;;;11397:35;11864:7:0;;;:23;;11895:9;;11106:19:1;;11864:179:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11718:333;;:::o;10746:219::-;10861:5;;10825:7;;-1:-1:-1;;;;;10861:5:0;;;10848:18;;;;10845:39;;-1:-1:-1;10875:7:0;;10868:14;;10845:39;10907:5;;-1:-1:-1;;;;;10907:5:0;;;10897:15;;;;10894:35;;-1:-1:-1;10921:6:0;;10914:13;;10894:35;-1:-1:-1;10946:11:0;;10746:219;;;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;1858:247::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;2025:9;2012:23;2044:31;2069:5;2044:31;:::i;2507:316::-;2584:6;2592;2600;2653:2;2641:9;2632:7;2628:23;2624:32;2621:52;;;2669:1;2666;2659:12;2621:52;-1:-1:-1;;2692:23:1;;;2762:2;2747:18;;2734:32;;-1:-1:-1;2813:2:1;2798:18;;;2785:32;;2507:316;-1:-1:-1;2507:316:1:o;2828:592::-;2941:6;2949;2957;2965;2973;2981;2989;3042:3;3030:9;3021:7;3017:23;3013:33;3010:53;;;3059:1;3056;3049:12;3010:53;-1:-1:-1;;3082:23:1;;;3152:2;3137:18;;3124:32;;-1:-1:-1;3203:2:1;3188:18;;3175:32;;3254:2;3239:18;;3226:32;;-1:-1:-1;3305:3:1;3290:19;;3277:33;;-1:-1:-1;3357:3:1;3342:19;;3329:33;;-1:-1:-1;3409:3:1;3394:19;3381:33;;-1:-1:-1;2828:592:1;-1:-1:-1;2828:592:1:o;3425:388::-;3493:6;3501;3554:2;3542:9;3533:7;3529:23;3525:32;3522:52;;;3570:1;3567;3560:12;3522:52;3609:9;3596:23;3628:31;3653:5;3628:31;:::i;:::-;3678:5;-1:-1:-1;3735:2:1;3720:18;;3707:32;3748:33;3707:32;3748:33;:::i;:::-;3800:7;3790:17;;;3425:388;;;;;:::o;4078:329::-;4280:2;4262:21;;;4319:1;4299:18;;;4292:29;-1:-1:-1;;;4352:2:1;4337:18;;4330:36;4398:2;4383:18;;4078:329::o;6262:127::-;6323:10;6318:3;6314:20;6311:1;6304:31;6354:4;6351:1;6344:15;6378:4;6375:1;6368:15;6394:128;6461:9;;;6482:11;;;6479:37;;;6496:18;;:::i;8801:125::-;8866:9;;;8887:10;;;8884:36;;;8900:18;;:::i;8931:168::-;9004:9;;;9035;;9052:15;;;9046:22;;9032:37;9022:71;;9073:18;;:::i;9104:217::-;9144:1;9170;9160:132;;9214:10;9209:3;9205:20;9202:1;9195:31;9249:4;9246:1;9239:15;9277:4;9274:1;9267:15;9160:132;-1:-1:-1;9306:9:1;;9104:217::o;9458:127::-;9519:10;9514:3;9510:20;9507:1;9500:31;9550:4;9547:1;9540:15;9574:4;9571:1;9564:15;9590:251;9660:6;9713:2;9701:9;9692:7;9688:23;9684:32;9681:52;;;9729:1;9726;9719:12;9681:52;9761:9;9755:16;9780:31;9805:5;9780:31;:::i;9846:980::-;10108:4;10156:3;10145:9;10141:19;10187:6;10176:9;10169:25;10213:2;10251:6;10246:2;10235:9;10231:18;10224:34;10294:3;10289:2;10278:9;10274:18;10267:31;10318:6;10353;10347:13;10384:6;10376;10369:22;10422:3;10411:9;10407:19;10400:26;;10461:2;10453:6;10449:15;10435:29;;10482:1;10492:195;10506:6;10503:1;10500:13;10492:195;;;10571:13;;-1:-1:-1;;;;;10567:39:1;10555:52;;10662:15;;;;10627:12;;;;10603:1;10521:9;10492:195;;;-1:-1:-1;;;;;;;10743:32:1;;;;10738:2;10723:18;;10716:60;-1:-1:-1;;;10807:3:1;10792:19;10785:35;10704:3;9846:980;-1:-1:-1;;;9846:980:1:o;11443:306::-;11531:6;11539;11547;11600:2;11588:9;11579:7;11575:23;11571:32;11568:52;;;11616:1;11613;11606:12;11568:52;11645:9;11639:16;11629:26;;11695:2;11684:9;11680:18;11674:25;11664:35;;11739:2;11728:9;11724:18;11718:25;11708:35;;11443:306;;;;;:::o

Swarm Source

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