ETH Price: $3,385.73 (-2.13%)
Gas: 5 Gwei

Token

1 MILLION (MILLION)
 

Overview

Max Total Supply

1,000,000 MILLION

Holders

33

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
10,811.051934616 MILLION

Value
$0.00
0xaeed1358b98d9c9f87c4642880a8acca3570428c
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:
MILLION

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-07-19
*/

// SPDX-License-Identifier: MIT

/* Idea in general is damn simple. BUY AND FUCKING HOLD YOU TWAT! 
Literally everything is in our hands. 
We put the effort of building you put the effort of holding. 
DON'T JEET. LFG TO 1 MILLION MC

More info in TG

https://t.me/onemillionmc

*/



pragma solidity ^0.8.4;

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

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

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
}

contract MILLION is Context, IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = "1 MILLION";
    string private constant _symbol = "MILLION";
    uint8 private constant _decimals = 9;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _taxFee = 0;
    uint256 private _teamFee = 0;
    mapping(address => bool) private bots;
    mapping(address => uint256) private buycooldown;
    mapping(address => uint256) private sellcooldown;
    mapping(address => uint256) private firstsell;
    mapping(address => uint256) private sellnumber;
    address payable private _teamAddress;
    address payable private _marketingFunds;
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen = false;
    bool private liquidityAdded = false;
    bool private inSwap = true;
    bool private swapEnabled = true;
    bool private cooldownEnabled = false;
    uint256 private _maxTxAmount = _tTotal;
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor(address payable addr1, address payable addr2) {
        _teamAddress = addr1;
        _marketingFunds = addr2;
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_teamAddress] = true;
        _isExcludedFromFee[_marketingFunds] = 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 pure override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[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()].sub(amount,"ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function setCooldownEnabled(bool onoff) external onlyOwner() {
        cooldownEnabled = onoff;
    }

    function tokenFromReflection(uint256 rAmount) private view returns (uint256) {
        require(rAmount <= _rTotal,"Amount must be less than total reflections");
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }
    
    function removeAllFee() private {
        if (_taxFee == 0 && _teamFee == 0) return;
        _taxFee = 0;
        _teamFee = 0;
    }

    function restoreAllFee() private {
        _taxFee = 0;
        _teamFee = 0;
    }
    
    function setFee(uint256 multiplier) private {
        _taxFee = _taxFee * multiplier;
        if (multiplier > 1) {
            _teamFee = 0;
        }
        
    }

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (from != owner() && to != owner()) {
            if (cooldownEnabled) {
                if (from != address(this) && to != address(this) && from != address(uniswapV2Router) && to != address(uniswapV2Router)) {
                    require(_msgSender() == address(uniswapV2Router) || _msgSender() == uniswapV2Pair,"ERR: Uniswap only");
                }
            }
            require(!bots[from] && !bots[to]);
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to] && cooldownEnabled) {
                require(tradingOpen);
                require(amount <= _maxTxAmount);
                require(buycooldown[to] < block.timestamp);
                buycooldown[to] = block.timestamp + (30 seconds);
                _teamFee = 0;
                _taxFee = 0;
            }
            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != uniswapV2Pair && swapEnabled) {
                require(amount <= balanceOf(uniswapV2Pair).mul(3).div(100) && amount <= _maxTxAmount);
                require(sellcooldown[from] < block.timestamp);
                if(firstsell[from] + (1 days) < block.timestamp){
                    sellnumber[from] = 0;
                }
                if (sellnumber[from] == 0) {
                    sellnumber[from]++;
                    firstsell[from] = block.timestamp;
                    sellcooldown[from] = block.timestamp + (1 hours);
                }
                else if (sellnumber[from] == 1) {
                    sellnumber[from]++;
                    sellcooldown[from] = block.timestamp + (2 hours);
                }
                else if (sellnumber[from] == 2) {
                    sellnumber[from]++;
                    sellcooldown[from] = block.timestamp + (6 hours);
                }
                else if (sellnumber[from] == 3) {
                    sellnumber[from]++;
                    sellcooldown[from] = block.timestamp + (12 hours);
                }
                else if (sellnumber[from] == 4) {
                    sellnumber[from]++;
                    sellcooldown[from] = firstsell[from] + (1 days);
                }
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                setFee(sellnumber[from]);
            }
        }
        bool takeFee = true;

        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }

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

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

    function sendETHToFee(uint256 amount) private {
        _teamAddress.transfer(amount.div(2));
        _marketingFunds.transfer(amount.div(2));
    }
    
    function openTrading() public onlyOwner {
        require(liquidityAdded);
        tradingOpen = true;
    }

    function addLiquidity() external onlyOwner() {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        swapEnabled = true;
        cooldownEnabled = true;
        liquidityAdded = true;
        _maxTxAmount = 10000 * 10**9;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router),type(uint256).max);
    }

    function manualswap() external {
        require(_msgSender() == _teamAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == _teamAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _taxFee, _teamFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(uint256 tAmount, uint256 taxFee, uint256 teamFee) private pure returns (uint256, uint256, uint256) {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tTeam = tAmount.mul(teamFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

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

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner() {
        require(maxTxPercent > 0, "Amount must be greater than 0");
        _maxTxAmount = _tTotal.mul(maxTxPercent).div(10**2);
        emit MaxTxAmountUpdated(_maxTxAmount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"addr1","type":"address"},{"internalType":"address payable","name":"addr2","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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"},{"stateMutability":"payable","type":"receive"}]

608060405266038d7ea4c680006000196200001b919062000526565b6000196200002a91906200058d565b600655600060085560006009556000601260146101000a81548160ff0219169083151502179055506000601260156101000a81548160ff0219169083151502179055506001601260166101000a81548160ff0219169083151502179055506001601260176101000a81548160ff0219169083151502179055506000601260186101000a81548160ff02191690831515021790555066038d7ea4c68000601355348015620000d657600080fd5b50604051620041bc380380620041bc8339818101604052810190620000fc919062000632565b60006200010e620004bc60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35081600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506006546002600062000245620004bc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060016005600062000299620004c460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000446620004bc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef66038d7ea4c68000604051620004ac91906200068a565b60405180910390a35050620006a7565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200053382620004ed565b91506200054083620004ed565b925082620005535762000552620004f7565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200059a82620004ed565b9150620005a783620004ed565b925082821015620005bd57620005bc6200055e565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620005fa82620005cd565b9050919050565b6200060c81620005ed565b81146200061857600080fd5b50565b6000815190506200062c8162000601565b92915050565b600080604083850312156200064c576200064b620005c8565b5b60006200065c858286016200061b565b92505060206200066f858286016200061b565b9150509250929050565b6200068481620004ed565b82525050565b6000602082019050620006a1600083018462000679565b92915050565b613b0580620006b76000396000f3fe6080604052600436106101025760003560e01c8063715018a611610095578063c3c8cd8011610064578063c3c8cd8014610330578063c9567bf914610347578063d543dbeb1461035e578063dd62ed3e14610387578063e8078d94146103c457610109565b8063715018a6146102865780638da5cb5b1461029d57806395d89b41146102c8578063a9059cbb146102f357610109565b8063313ce567116100d1578063313ce567146101de5780635932ead1146102095780636fc3eaec1461023257806370a082311461024957610109565b806306fdde031461010e578063095ea7b31461013957806318160ddd1461017657806323b872dd146101a157610109565b3661010957005b600080fd5b34801561011a57600080fd5b506101236103db565b6040516101309190612ce2565b60405180910390f35b34801561014557600080fd5b50610160600480360381019061015b9190612d9d565b610418565b60405161016d9190612df8565b60405180910390f35b34801561018257600080fd5b5061018b610436565b6040516101989190612e22565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c39190612e3d565b610445565b6040516101d59190612df8565b60405180910390f35b3480156101ea57600080fd5b506101f361051e565b6040516102009190612eac565b60405180910390f35b34801561021557600080fd5b50610230600480360381019061022b9190612ef3565b610527565b005b34801561023e57600080fd5b506102476105d9565b005b34801561025557600080fd5b50610270600480360381019061026b9190612f20565b61064b565b60405161027d9190612e22565b60405180910390f35b34801561029257600080fd5b5061029b61069c565b005b3480156102a957600080fd5b506102b26107ef565b6040516102bf9190612f5c565b60405180910390f35b3480156102d457600080fd5b506102dd610818565b6040516102ea9190612ce2565b60405180910390f35b3480156102ff57600080fd5b5061031a60048036038101906103159190612d9d565b610855565b6040516103279190612df8565b60405180910390f35b34801561033c57600080fd5b50610345610873565b005b34801561035357600080fd5b5061035c6108ed565b005b34801561036a57600080fd5b5061038560048036038101906103809190612f77565b6109b8565b005b34801561039357600080fd5b506103ae60048036038101906103a99190612fa4565b610aff565b6040516103bb9190612e22565b60405180910390f35b3480156103d057600080fd5b506103d9610b86565b005b60606040518060400160405280600981526020017f31204d494c4c494f4e0000000000000000000000000000000000000000000000815250905090565b600061042c610425611043565b848461104b565b6001905092915050565b600066038d7ea4c68000905090565b6000610452848484611214565b6105138461045e611043565b61050e85604051806060016040528060288152602001613aa860289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104c4611043565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120d19092919063ffffffff16565b61104b565b600190509392505050565b60006009905090565b61052f611043565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b390613030565b60405180910390fd5b80601260186101000a81548160ff02191690831515021790555050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661061a611043565b73ffffffffffffffffffffffffffffffffffffffff161461063a57600080fd5b600047905061064881612135565b50565b6000610695600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612230565b9050919050565b6106a4611043565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610731576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072890613030565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f4d494c4c494f4e00000000000000000000000000000000000000000000000000815250905090565b6000610869610862611043565b8484611214565b6001905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108b4611043565b73ffffffffffffffffffffffffffffffffffffffff16146108d457600080fd5b60006108df3061064b565b90506108ea8161229e565b50565b6108f5611043565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610982576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097990613030565b60405180910390fd5b601260159054906101000a900460ff1661099b57600080fd5b6001601260146101000a81548160ff021916908315150217905550565b6109c0611043565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4490613030565b60405180910390fd5b60008111610a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a879061309c565b60405180910390fd5b610abd6064610aaf8366038d7ea4c6800061251790919063ffffffff16565b61259190919063ffffffff16565b6013819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf601354604051610af49190612e22565b60405180910390a150565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610b8e611043565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1290613030565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610ca930601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1666038d7ea4c6800061104b565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cf4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1891906130d1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da391906130d1565b6040518363ffffffff1660e01b8152600401610dc09291906130fe565b6020604051808303816000875af1158015610ddf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0391906130d1565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610e8c3061064b565b600080610e976107ef565b426040518863ffffffff1660e01b8152600401610eb99695949392919061316c565b60606040518083038185885af1158015610ed7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610efc91906131e2565b5050506001601260176101000a81548160ff0219169083151502179055506001601260186101000a81548160ff0219169083151502179055506001601260156101000a81548160ff0219169083151502179055506509184e72a000601381905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610ffc929190613235565b6020604051808303816000875af115801561101b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103f9190613273565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b190613312565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611129576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611120906133a4565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112079190612e22565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611283576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127a90613436565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e9906134c8565b60405180910390fd5b60008111611335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132c9061355a565b60405180910390fd5b61133d6107ef565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156113ab575061137b6107ef565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561200e57601260189054906101000a900460ff16156115de573073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561142d57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156114875750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156114e15750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156115dd57601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611527611043565b73ffffffffffffffffffffffffffffffffffffffff16148061159d5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611585611043565b73ffffffffffffffffffffffffffffffffffffffff16145b6115dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d3906135c6565b60405180910390fd5b5b5b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156116825750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61168b57600080fd5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156117365750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561178c5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156117a45750601260189054906101000a900460ff165b1561187d57601260149054906101000a900460ff166117c257600080fd5b6013548111156117d157600080fd5b42600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061181c57600080fd5b601e426118299190613615565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600060098190555060006008819055505b60006118883061064b565b9050601260169054906101000a900460ff161580156118f55750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561190d5750601260179054906101000a900460ff165b1561200c5761196360646119556003611947601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661064b565b61251790919063ffffffff16565b61259190919063ffffffff16565b821115801561197457506013548211155b61197d57600080fd5b42600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106119c857600080fd5b4262015180600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a179190613615565b1015611a63576000600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403611b9957600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190611afa9061366b565b919050555042600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e1042611b519190613615565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611fa1565b6001600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403611c8b57600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190611c309061366b565b9190505550611c2042611c439190613615565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611fa0565b6002600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403611d7d57600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190611d229061366b565b919050555061546042611d359190613615565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f9f565b6003600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403611e6f57600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190611e149061366b565b919050555061a8c042611e279190613615565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f9e565b6004600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403611f9d57600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190611f069061366b565b919050555062015180600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f599190613615565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b5b5b5b611faa8161229e565b60004790506000811115611fc257611fc147612135565b5b61200a600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125db565b505b505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120b55750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156120bf57600090505b6120cb84848484612604565b50505050565b6000838311158290612119576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121109190612ce2565b60405180910390fd5b506000838561212891906136b3565b9050809150509392505050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61218560028461259190919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156121b0573d6000803e3d6000fd5b50601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61220160028461259190919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561222c573d6000803e3d6000fd5b5050565b6000600654821115612277576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226e90613759565b60405180910390fd5b6000612281612643565b9050612296818461259190919063ffffffff16565b915050919050565b6001601260166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156122d6576122d5613779565b5b6040519080825280602002602001820160405280156123045781602001602082028036833780820191505090505b509050308160008151811061231c5761231b6137a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123e791906130d1565b816001815181106123fb576123fa6137a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061246230601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461104b565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016124c6959493929190613895565b600060405180830381600087803b1580156124e057600080fd5b505af11580156124f4573d6000803e3d6000fd5b50505050506000601260166101000a81548160ff02191690831515021790555050565b6000808303612529576000905061258b565b6000828461253791906138ef565b90508284826125469190613978565b14612586576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257d90613a1b565b60405180910390fd5b809150505b92915050565b60006125d383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061266e565b905092915050565b806008546125e991906138ef565b60088190555060018111156126015760006009819055505b50565b80612612576126116126d1565b5b61261d8484846126fc565b8061262b5761262a612631565b5b50505050565b60006008819055506000600981905550565b60008060006126506128c7565b91509150612667818361259190919063ffffffff16565b9250505090565b600080831182906126b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ac9190612ce2565b60405180910390fd5b50600083856126c49190613978565b9050809150509392505050565b60006008541480156126e557506000600954145b6126fa57600060088190555060006009819055505b565b60008060008060008061270e87612923565b95509550955095509550955061276c86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461298b90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061280185600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129d590919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061284d81612a33565b6128578483612af0565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516128b49190612e22565b60405180910390a3505050505050505050565b60008060006006549050600066038d7ea4c6800090506128f966038d7ea4c6800060065461259190919063ffffffff16565b8210156129165760065466038d7ea4c6800093509350505061291f565b81819350935050505b9091565b60008060008060008060008060006129408a600854600954612b2a565b9250925092506000612950612643565b905060008060006129638e878787612bc0565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006129cd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120d1565b905092915050565b60008082846129e49190613615565b905083811015612a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2090613a87565b60405180910390fd5b8091505092915050565b6000612a3d612643565b90506000612a54828461251790919063ffffffff16565b9050612aa881600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129d590919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612b058260065461298b90919063ffffffff16565b600681905550612b20816007546129d590919063ffffffff16565b6007819055505050565b600080600080612b566064612b48888a61251790919063ffffffff16565b61259190919063ffffffff16565b90506000612b806064612b72888b61251790919063ffffffff16565b61259190919063ffffffff16565b90506000612ba982612b9b858c61298b90919063ffffffff16565b61298b90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612bd9858961251790919063ffffffff16565b90506000612bf0868961251790919063ffffffff16565b90506000612c07878961251790919063ffffffff16565b90506000612c3082612c22858761298b90919063ffffffff16565b61298b90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c83578082015181840152602081019050612c68565b83811115612c92576000848401525b50505050565b6000601f19601f8301169050919050565b6000612cb482612c49565b612cbe8185612c54565b9350612cce818560208601612c65565b612cd781612c98565b840191505092915050565b60006020820190508181036000830152612cfc8184612ca9565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d3482612d09565b9050919050565b612d4481612d29565b8114612d4f57600080fd5b50565b600081359050612d6181612d3b565b92915050565b6000819050919050565b612d7a81612d67565b8114612d8557600080fd5b50565b600081359050612d9781612d71565b92915050565b60008060408385031215612db457612db3612d04565b5b6000612dc285828601612d52565b9250506020612dd385828601612d88565b9150509250929050565b60008115159050919050565b612df281612ddd565b82525050565b6000602082019050612e0d6000830184612de9565b92915050565b612e1c81612d67565b82525050565b6000602082019050612e376000830184612e13565b92915050565b600080600060608486031215612e5657612e55612d04565b5b6000612e6486828701612d52565b9350506020612e7586828701612d52565b9250506040612e8686828701612d88565b9150509250925092565b600060ff82169050919050565b612ea681612e90565b82525050565b6000602082019050612ec16000830184612e9d565b92915050565b612ed081612ddd565b8114612edb57600080fd5b50565b600081359050612eed81612ec7565b92915050565b600060208284031215612f0957612f08612d04565b5b6000612f1784828501612ede565b91505092915050565b600060208284031215612f3657612f35612d04565b5b6000612f4484828501612d52565b91505092915050565b612f5681612d29565b82525050565b6000602082019050612f716000830184612f4d565b92915050565b600060208284031215612f8d57612f8c612d04565b5b6000612f9b84828501612d88565b91505092915050565b60008060408385031215612fbb57612fba612d04565b5b6000612fc985828601612d52565b9250506020612fda85828601612d52565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061301a602083612c54565b915061302582612fe4565b602082019050919050565b600060208201905081810360008301526130498161300d565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b6000613086601d83612c54565b915061309182613050565b602082019050919050565b600060208201905081810360008301526130b581613079565b9050919050565b6000815190506130cb81612d3b565b92915050565b6000602082840312156130e7576130e6612d04565b5b60006130f5848285016130bc565b91505092915050565b60006040820190506131136000830185612f4d565b6131206020830184612f4d565b9392505050565b6000819050919050565b6000819050919050565b600061315661315161314c84613127565b613131565b612d67565b9050919050565b6131668161313b565b82525050565b600060c0820190506131816000830189612f4d565b61318e6020830188612e13565b61319b604083018761315d565b6131a8606083018661315d565b6131b56080830185612f4d565b6131c260a0830184612e13565b979650505050505050565b6000815190506131dc81612d71565b92915050565b6000806000606084860312156131fb576131fa612d04565b5b6000613209868287016131cd565b935050602061321a868287016131cd565b925050604061322b868287016131cd565b9150509250925092565b600060408201905061324a6000830185612f4d565b6132576020830184612e13565b9392505050565b60008151905061326d81612ec7565b92915050565b60006020828403121561328957613288612d04565b5b60006132978482850161325e565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006132fc602483612c54565b9150613307826132a0565b604082019050919050565b6000602082019050818103600083015261332b816132ef565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061338e602283612c54565b915061339982613332565b604082019050919050565b600060208201905081810360008301526133bd81613381565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613420602583612c54565b915061342b826133c4565b604082019050919050565b6000602082019050818103600083015261344f81613413565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006134b2602383612c54565b91506134bd82613456565b604082019050919050565b600060208201905081810360008301526134e1816134a5565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613544602983612c54565b915061354f826134e8565b604082019050919050565b6000602082019050818103600083015261357381613537565b9050919050565b7f4552523a20556e6973776170206f6e6c79000000000000000000000000000000600082015250565b60006135b0601183612c54565b91506135bb8261357a565b602082019050919050565b600060208201905081810360008301526135df816135a3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061362082612d67565b915061362b83612d67565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156136605761365f6135e6565b5b828201905092915050565b600061367682612d67565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136a8576136a76135e6565b5b600182019050919050565b60006136be82612d67565b91506136c983612d67565b9250828210156136dc576136db6135e6565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613743602a83612c54565b915061374e826136e7565b604082019050919050565b6000602082019050818103600083015261377281613736565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61380c81612d29565b82525050565b600061381e8383613803565b60208301905092915050565b6000602082019050919050565b6000613842826137d7565b61384c81856137e2565b9350613857836137f3565b8060005b8381101561388857815161386f8882613812565b975061387a8361382a565b92505060018101905061385b565b5085935050505092915050565b600060a0820190506138aa6000830188612e13565b6138b7602083018761315d565b81810360408301526138c98186613837565b90506138d86060830185612f4d565b6138e56080830184612e13565b9695505050505050565b60006138fa82612d67565b915061390583612d67565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561393e5761393d6135e6565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061398382612d67565b915061398e83612d67565b92508261399e5761399d613949565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a05602183612c54565b9150613a10826139a9565b604082019050919050565b60006020820190508181036000830152613a34816139f8565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613a71601b83612c54565b9150613a7c82613a3b565b602082019050919050565b60006020820190508181036000830152613aa081613a64565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f290a60fed97078c6f0fc4a2a9f4a4c71344605cad0335fd76800649981ee09264736f6c634300080f00330000000000000000000000003a831213abc5322be5bd5754208494ba45e5fb230000000000000000000000003a831213abc5322be5bd5754208494ba45e5fb23

Deployed Bytecode

0x6080604052600436106101025760003560e01c8063715018a611610095578063c3c8cd8011610064578063c3c8cd8014610330578063c9567bf914610347578063d543dbeb1461035e578063dd62ed3e14610387578063e8078d94146103c457610109565b8063715018a6146102865780638da5cb5b1461029d57806395d89b41146102c8578063a9059cbb146102f357610109565b8063313ce567116100d1578063313ce567146101de5780635932ead1146102095780636fc3eaec1461023257806370a082311461024957610109565b806306fdde031461010e578063095ea7b31461013957806318160ddd1461017657806323b872dd146101a157610109565b3661010957005b600080fd5b34801561011a57600080fd5b506101236103db565b6040516101309190612ce2565b60405180910390f35b34801561014557600080fd5b50610160600480360381019061015b9190612d9d565b610418565b60405161016d9190612df8565b60405180910390f35b34801561018257600080fd5b5061018b610436565b6040516101989190612e22565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c39190612e3d565b610445565b6040516101d59190612df8565b60405180910390f35b3480156101ea57600080fd5b506101f361051e565b6040516102009190612eac565b60405180910390f35b34801561021557600080fd5b50610230600480360381019061022b9190612ef3565b610527565b005b34801561023e57600080fd5b506102476105d9565b005b34801561025557600080fd5b50610270600480360381019061026b9190612f20565b61064b565b60405161027d9190612e22565b60405180910390f35b34801561029257600080fd5b5061029b61069c565b005b3480156102a957600080fd5b506102b26107ef565b6040516102bf9190612f5c565b60405180910390f35b3480156102d457600080fd5b506102dd610818565b6040516102ea9190612ce2565b60405180910390f35b3480156102ff57600080fd5b5061031a60048036038101906103159190612d9d565b610855565b6040516103279190612df8565b60405180910390f35b34801561033c57600080fd5b50610345610873565b005b34801561035357600080fd5b5061035c6108ed565b005b34801561036a57600080fd5b5061038560048036038101906103809190612f77565b6109b8565b005b34801561039357600080fd5b506103ae60048036038101906103a99190612fa4565b610aff565b6040516103bb9190612e22565b60405180910390f35b3480156103d057600080fd5b506103d9610b86565b005b60606040518060400160405280600981526020017f31204d494c4c494f4e0000000000000000000000000000000000000000000000815250905090565b600061042c610425611043565b848461104b565b6001905092915050565b600066038d7ea4c68000905090565b6000610452848484611214565b6105138461045e611043565b61050e85604051806060016040528060288152602001613aa860289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104c4611043565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120d19092919063ffffffff16565b61104b565b600190509392505050565b60006009905090565b61052f611043565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b390613030565b60405180910390fd5b80601260186101000a81548160ff02191690831515021790555050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661061a611043565b73ffffffffffffffffffffffffffffffffffffffff161461063a57600080fd5b600047905061064881612135565b50565b6000610695600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612230565b9050919050565b6106a4611043565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610731576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072890613030565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f4d494c4c494f4e00000000000000000000000000000000000000000000000000815250905090565b6000610869610862611043565b8484611214565b6001905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108b4611043565b73ffffffffffffffffffffffffffffffffffffffff16146108d457600080fd5b60006108df3061064b565b90506108ea8161229e565b50565b6108f5611043565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610982576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097990613030565b60405180910390fd5b601260159054906101000a900460ff1661099b57600080fd5b6001601260146101000a81548160ff021916908315150217905550565b6109c0611043565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4490613030565b60405180910390fd5b60008111610a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a879061309c565b60405180910390fd5b610abd6064610aaf8366038d7ea4c6800061251790919063ffffffff16565b61259190919063ffffffff16565b6013819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf601354604051610af49190612e22565b60405180910390a150565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610b8e611043565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1290613030565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610ca930601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1666038d7ea4c6800061104b565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cf4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1891906130d1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da391906130d1565b6040518363ffffffff1660e01b8152600401610dc09291906130fe565b6020604051808303816000875af1158015610ddf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0391906130d1565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610e8c3061064b565b600080610e976107ef565b426040518863ffffffff1660e01b8152600401610eb99695949392919061316c565b60606040518083038185885af1158015610ed7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610efc91906131e2565b5050506001601260176101000a81548160ff0219169083151502179055506001601260186101000a81548160ff0219169083151502179055506001601260156101000a81548160ff0219169083151502179055506509184e72a000601381905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610ffc929190613235565b6020604051808303816000875af115801561101b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103f9190613273565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b190613312565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611129576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611120906133a4565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112079190612e22565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611283576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127a90613436565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e9906134c8565b60405180910390fd5b60008111611335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132c9061355a565b60405180910390fd5b61133d6107ef565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156113ab575061137b6107ef565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561200e57601260189054906101000a900460ff16156115de573073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561142d57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156114875750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156114e15750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156115dd57601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611527611043565b73ffffffffffffffffffffffffffffffffffffffff16148061159d5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611585611043565b73ffffffffffffffffffffffffffffffffffffffff16145b6115dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d3906135c6565b60405180910390fd5b5b5b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156116825750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61168b57600080fd5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156117365750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561178c5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156117a45750601260189054906101000a900460ff165b1561187d57601260149054906101000a900460ff166117c257600080fd5b6013548111156117d157600080fd5b42600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061181c57600080fd5b601e426118299190613615565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600060098190555060006008819055505b60006118883061064b565b9050601260169054906101000a900460ff161580156118f55750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561190d5750601260179054906101000a900460ff165b1561200c5761196360646119556003611947601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661064b565b61251790919063ffffffff16565b61259190919063ffffffff16565b821115801561197457506013548211155b61197d57600080fd5b42600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106119c857600080fd5b4262015180600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a179190613615565b1015611a63576000600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6000600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403611b9957600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190611afa9061366b565b919050555042600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e1042611b519190613615565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611fa1565b6001600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403611c8b57600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190611c309061366b565b9190505550611c2042611c439190613615565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611fa0565b6002600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403611d7d57600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190611d229061366b565b919050555061546042611d359190613615565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f9f565b6003600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403611e6f57600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190611e149061366b565b919050555061a8c042611e279190613615565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f9e565b6004600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403611f9d57600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190611f069061366b565b919050555062015180600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f599190613615565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b5b5b5b611faa8161229e565b60004790506000811115611fc257611fc147612135565b5b61200a600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125db565b505b505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120b55750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156120bf57600090505b6120cb84848484612604565b50505050565b6000838311158290612119576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121109190612ce2565b60405180910390fd5b506000838561212891906136b3565b9050809150509392505050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61218560028461259190919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156121b0573d6000803e3d6000fd5b50601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61220160028461259190919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561222c573d6000803e3d6000fd5b5050565b6000600654821115612277576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226e90613759565b60405180910390fd5b6000612281612643565b9050612296818461259190919063ffffffff16565b915050919050565b6001601260166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156122d6576122d5613779565b5b6040519080825280602002602001820160405280156123045781602001602082028036833780820191505090505b509050308160008151811061231c5761231b6137a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123e791906130d1565b816001815181106123fb576123fa6137a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061246230601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461104b565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016124c6959493929190613895565b600060405180830381600087803b1580156124e057600080fd5b505af11580156124f4573d6000803e3d6000fd5b50505050506000601260166101000a81548160ff02191690831515021790555050565b6000808303612529576000905061258b565b6000828461253791906138ef565b90508284826125469190613978565b14612586576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257d90613a1b565b60405180910390fd5b809150505b92915050565b60006125d383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061266e565b905092915050565b806008546125e991906138ef565b60088190555060018111156126015760006009819055505b50565b80612612576126116126d1565b5b61261d8484846126fc565b8061262b5761262a612631565b5b50505050565b60006008819055506000600981905550565b60008060006126506128c7565b91509150612667818361259190919063ffffffff16565b9250505090565b600080831182906126b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ac9190612ce2565b60405180910390fd5b50600083856126c49190613978565b9050809150509392505050565b60006008541480156126e557506000600954145b6126fa57600060088190555060006009819055505b565b60008060008060008061270e87612923565b95509550955095509550955061276c86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461298b90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061280185600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129d590919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061284d81612a33565b6128578483612af0565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516128b49190612e22565b60405180910390a3505050505050505050565b60008060006006549050600066038d7ea4c6800090506128f966038d7ea4c6800060065461259190919063ffffffff16565b8210156129165760065466038d7ea4c6800093509350505061291f565b81819350935050505b9091565b60008060008060008060008060006129408a600854600954612b2a565b9250925092506000612950612643565b905060008060006129638e878787612bc0565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006129cd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120d1565b905092915050565b60008082846129e49190613615565b905083811015612a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2090613a87565b60405180910390fd5b8091505092915050565b6000612a3d612643565b90506000612a54828461251790919063ffffffff16565b9050612aa881600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129d590919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612b058260065461298b90919063ffffffff16565b600681905550612b20816007546129d590919063ffffffff16565b6007819055505050565b600080600080612b566064612b48888a61251790919063ffffffff16565b61259190919063ffffffff16565b90506000612b806064612b72888b61251790919063ffffffff16565b61259190919063ffffffff16565b90506000612ba982612b9b858c61298b90919063ffffffff16565b61298b90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612bd9858961251790919063ffffffff16565b90506000612bf0868961251790919063ffffffff16565b90506000612c07878961251790919063ffffffff16565b90506000612c3082612c22858761298b90919063ffffffff16565b61298b90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c83578082015181840152602081019050612c68565b83811115612c92576000848401525b50505050565b6000601f19601f8301169050919050565b6000612cb482612c49565b612cbe8185612c54565b9350612cce818560208601612c65565b612cd781612c98565b840191505092915050565b60006020820190508181036000830152612cfc8184612ca9565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d3482612d09565b9050919050565b612d4481612d29565b8114612d4f57600080fd5b50565b600081359050612d6181612d3b565b92915050565b6000819050919050565b612d7a81612d67565b8114612d8557600080fd5b50565b600081359050612d9781612d71565b92915050565b60008060408385031215612db457612db3612d04565b5b6000612dc285828601612d52565b9250506020612dd385828601612d88565b9150509250929050565b60008115159050919050565b612df281612ddd565b82525050565b6000602082019050612e0d6000830184612de9565b92915050565b612e1c81612d67565b82525050565b6000602082019050612e376000830184612e13565b92915050565b600080600060608486031215612e5657612e55612d04565b5b6000612e6486828701612d52565b9350506020612e7586828701612d52565b9250506040612e8686828701612d88565b9150509250925092565b600060ff82169050919050565b612ea681612e90565b82525050565b6000602082019050612ec16000830184612e9d565b92915050565b612ed081612ddd565b8114612edb57600080fd5b50565b600081359050612eed81612ec7565b92915050565b600060208284031215612f0957612f08612d04565b5b6000612f1784828501612ede565b91505092915050565b600060208284031215612f3657612f35612d04565b5b6000612f4484828501612d52565b91505092915050565b612f5681612d29565b82525050565b6000602082019050612f716000830184612f4d565b92915050565b600060208284031215612f8d57612f8c612d04565b5b6000612f9b84828501612d88565b91505092915050565b60008060408385031215612fbb57612fba612d04565b5b6000612fc985828601612d52565b9250506020612fda85828601612d52565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061301a602083612c54565b915061302582612fe4565b602082019050919050565b600060208201905081810360008301526130498161300d565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b6000613086601d83612c54565b915061309182613050565b602082019050919050565b600060208201905081810360008301526130b581613079565b9050919050565b6000815190506130cb81612d3b565b92915050565b6000602082840312156130e7576130e6612d04565b5b60006130f5848285016130bc565b91505092915050565b60006040820190506131136000830185612f4d565b6131206020830184612f4d565b9392505050565b6000819050919050565b6000819050919050565b600061315661315161314c84613127565b613131565b612d67565b9050919050565b6131668161313b565b82525050565b600060c0820190506131816000830189612f4d565b61318e6020830188612e13565b61319b604083018761315d565b6131a8606083018661315d565b6131b56080830185612f4d565b6131c260a0830184612e13565b979650505050505050565b6000815190506131dc81612d71565b92915050565b6000806000606084860312156131fb576131fa612d04565b5b6000613209868287016131cd565b935050602061321a868287016131cd565b925050604061322b868287016131cd565b9150509250925092565b600060408201905061324a6000830185612f4d565b6132576020830184612e13565b9392505050565b60008151905061326d81612ec7565b92915050565b60006020828403121561328957613288612d04565b5b60006132978482850161325e565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006132fc602483612c54565b9150613307826132a0565b604082019050919050565b6000602082019050818103600083015261332b816132ef565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061338e602283612c54565b915061339982613332565b604082019050919050565b600060208201905081810360008301526133bd81613381565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613420602583612c54565b915061342b826133c4565b604082019050919050565b6000602082019050818103600083015261344f81613413565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006134b2602383612c54565b91506134bd82613456565b604082019050919050565b600060208201905081810360008301526134e1816134a5565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613544602983612c54565b915061354f826134e8565b604082019050919050565b6000602082019050818103600083015261357381613537565b9050919050565b7f4552523a20556e6973776170206f6e6c79000000000000000000000000000000600082015250565b60006135b0601183612c54565b91506135bb8261357a565b602082019050919050565b600060208201905081810360008301526135df816135a3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061362082612d67565b915061362b83612d67565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156136605761365f6135e6565b5b828201905092915050565b600061367682612d67565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136a8576136a76135e6565b5b600182019050919050565b60006136be82612d67565b91506136c983612d67565b9250828210156136dc576136db6135e6565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613743602a83612c54565b915061374e826136e7565b604082019050919050565b6000602082019050818103600083015261377281613736565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61380c81612d29565b82525050565b600061381e8383613803565b60208301905092915050565b6000602082019050919050565b6000613842826137d7565b61384c81856137e2565b9350613857836137f3565b8060005b8381101561388857815161386f8882613812565b975061387a8361382a565b92505060018101905061385b565b5085935050505092915050565b600060a0820190506138aa6000830188612e13565b6138b7602083018761315d565b81810360408301526138c98186613837565b90506138d86060830185612f4d565b6138e56080830184612e13565b9695505050505050565b60006138fa82612d67565b915061390583612d67565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561393e5761393d6135e6565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061398382612d67565b915061398e83612d67565b92508261399e5761399d613949565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a05602183612c54565b9150613a10826139a9565b604082019050919050565b60006020820190508181036000830152613a34816139f8565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613a71601b83612c54565b9150613a7c82613a3b565b602082019050919050565b60006020820190508181036000830152613aa081613a64565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f290a60fed97078c6f0fc4a2a9f4a4c71344605cad0335fd76800649981ee09264736f6c634300080f0033

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

0000000000000000000000003a831213abc5322be5bd5754208494ba45e5fb230000000000000000000000003a831213abc5322be5bd5754208494ba45e5fb23

-----Decoded View---------------
Arg [0] : addr1 (address): 0x3a831213Abc5322bE5bD5754208494BA45E5Fb23
Arg [1] : addr2 (address): 0x3a831213Abc5322bE5bD5754208494BA45E5Fb23

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000003a831213abc5322be5bd5754208494ba45e5fb23
Arg [1] : 0000000000000000000000003a831213abc5322be5bd5754208494ba45e5fb23


Deployed Bytecode Sourcemap

3799:12521:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5783:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6635:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6060:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6804:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5969:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7122:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13022:191;;;;;;;;;;;;;:::i;:::-;;6163:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2852:148;;;;;;;;;;;;;:::i;:::-;;2638:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5874:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6309:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12822:192;;;;;;;;;;;;;:::i;:::-;;11937:111;;;;;;;;;;;;;:::i;:::-;;16062:255;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6484:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12056:758;;;;;;;;;;;;;:::i;:::-;;5783:83;5820:13;5853:5;;;;;;;;;;;;;;;;;5846:12;;5783:83;:::o;6635:161::-;6710:4;6727:39;6736:12;:10;:12::i;:::-;6750:7;6759:6;6727:8;:39::i;:::-;6784:4;6777:11;;6635:161;;;;:::o;6060:95::-;6113:7;4343:15;6133:14;;6060:95;:::o;6804:310::-;6902:4;6919:36;6929:6;6937:9;6948:6;6919:9;:36::i;:::-;6966:118;6975:6;6982:12;:10;:12::i;:::-;6995:88;7033:6;6995:88;;;;;;;;;;;;;;;;;:11;:19;7007:6;6995:19;;;;;;;;;;;;;;;:33;7015:12;:10;:12::i;:::-;6995:33;;;;;;;;;;;;;;;;:37;;:88;;;;;:::i;:::-;6966:8;:118::i;:::-;7102:4;7095:11;;6804:310;;;;;:::o;5969:83::-;6010:5;4019:1;6028:16;;5969:83;:::o;7122:103::-;2775:12;:10;:12::i;:::-;2765:22;;:6;;;;;;;;;;:22;;;2757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7212:5:::1;7194:15;;:23;;;;;;;;;;;;;;;;;;7122:103:::0;:::o;13022:191::-;13088:12;;;;;;;;;;;13072:28;;:12;:10;:12::i;:::-;:28;;;13064:37;;;;;;13112:26;13141:21;13112:50;;13173:32;13186:18;13173:12;:32::i;:::-;13053:160;13022:191::o;6163:138::-;6229:7;6256:37;6276:7;:16;6284:7;6276:16;;;;;;;;;;;;;;;;6256:19;:37::i;:::-;6249:44;;6163:138;;;:::o;2852:148::-;2775:12;:10;:12::i;:::-;2765:22;;:6;;;;;;;;;;:22;;;2757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2959:1:::1;2922:40;;2943:6;::::0;::::1;;;;;;;;2922:40;;;;;;;;;;;;2990:1;2973:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2852:148::o:0;2638:79::-;2676:7;2703:6;;;;;;;;;;;2696:13;;2638:79;:::o;5874:87::-;5913:13;5946:7;;;;;;;;;;;;;;;;;5939:14;;5874:87;:::o;6309:167::-;6387:4;6404:42;6414:12;:10;:12::i;:::-;6428:9;6439:6;6404:9;:42::i;:::-;6464:4;6457:11;;6309:167;;;;:::o;12822:192::-;12888:12;;;;;;;;;;;12872:28;;:12;:10;:12::i;:::-;:28;;;12864:37;;;;;;12912:23;12938:24;12956:4;12938:9;:24::i;:::-;12912:50;;12973:33;12990:15;12973:16;:33::i;:::-;12853:161;12822:192::o;11937:111::-;2775:12;:10;:12::i;:::-;2765:22;;:6;;;;;;;;;;:22;;;2757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11996:14:::1;;;;;;;;;;;11988:23;;;::::0;::::1;;12036:4;12022:11;;:18;;;;;;;;;;;;;;;;;;11937:111::o:0;16062:255::-;2775:12;:10;:12::i;:::-;2765:22;;:6;;;;;;;;;;:22;;;2757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16164:1:::1;16149:12;:16;16141:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;16225:36;16255:5;16225:25;16237:12;4343:15;16225:11;;:25;;;;:::i;:::-;:29;;:36;;;;:::i;:::-;16210:12;:51;;;;16277:32;16296:12;;16277:32;;;;;;:::i;:::-;;;;;;;;16062:255:::0;:::o;6484:143::-;6565:7;6592:11;:18;6604:5;6592:18;;;;;;;;;;;;;;;:27;6611:7;6592:27;;;;;;;;;;;;;;;;6585:34;;6484:143;;;;:::o;12056:758::-;2775:12;:10;:12::i;:::-;2765:22;;:6;;;;;;;;;;:22;;;2757:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12112:35:::1;12169:42;12112:100;;12241:16;12223:15;;:34;;;;;;;;;;;;;;;;;;12268:58;12285:4;12300:15;;;;;;;;;;;4343;12268:8;:58::i;:::-;12371:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12353:56;;;12418:4;12425:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12353:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12337:13;;:112;;;;;;;;;;;;;;;;;;12460:15;;;;;;;;;;;:31;;;12499:21;12530:4;12536:24;12554:4;12536:9;:24::i;:::-;12561:1;12563::::0;12565:7:::1;:5;:7::i;:::-;12573:15;12460:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12614:4;12600:11;;:18;;;;;;;;;;;;;;;;;;12647:4;12629:15;;:22;;;;;;;;;;;;;;;;;;12679:4;12662:14;;:21;;;;;;;;;;;;;;;;;;12709:13;12694:12;:28;;;;12740:13;;;;;;;;;;;12733:29;;;12771:15;;;;;;;;;;;12788:17;12733:73;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12101:713;12056:758::o:0;359:98::-;412:7;439:10;432:17;;359:98;:::o;7921:335::-;8031:1;8014:19;;:5;:19;;;8006:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8112:1;8093:21;;:7;:21;;;8085:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8194:6;8164:11;:18;8176:5;8164:18;;;;;;;;;;;;;;;:27;8183:7;8164:27;;;;;;;;;;;;;;;:36;;;;8232:7;8216:32;;8225:5;8216:32;;;8241:6;8216:32;;;;;;:::i;:::-;;;;;;;;7921:335;;;:::o;8264:3087::-;8368:1;8352:18;;:4;:18;;;8344:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8445:1;8431:16;;:2;:16;;;8423:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8515:1;8506:6;:10;8498:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8587:7;:5;:7::i;:::-;8579:15;;:4;:15;;;;:32;;;;;8604:7;:5;:7::i;:::-;8598:13;;:2;:13;;;;8579:32;8575:2551;;;8632:15;;;;;;;;;;;8628:320;;;8688:4;8672:21;;:4;:21;;;;:44;;;;;8711:4;8697:19;;:2;:19;;;;8672:44;:80;;;;;8736:15;;;;;;;;;;;8720:32;;:4;:32;;;;8672:80;:114;;;;;8770:15;;;;;;;;;;;8756:30;;:2;:30;;;;8672:114;8668:265;;;8843:15;;;;;;;;;;;8819:40;;:12;:10;:12::i;:::-;:40;;;:73;;;;8879:13;;;;;;;;;;;8863:29;;:12;:10;:12::i;:::-;:29;;;8819:73;8811:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;8668:265;8628:320;8971:4;:10;8976:4;8971:10;;;;;;;;;;;;;;;;;;;;;;;;;8970:11;:24;;;;;8986:4;:8;8991:2;8986:8;;;;;;;;;;;;;;;;;;;;;;;;;8985:9;8970:24;8962:33;;;;;;9022:13;;;;;;;;;;;9014:21;;:4;:21;;;:55;;;;;9053:15;;;;;;;;;;;9039:30;;:2;:30;;;;9014:55;:82;;;;;9074:18;:22;9093:2;9074:22;;;;;;;;;;;;;;;;;;;;;;;;;9073:23;9014:82;:101;;;;;9100:15;;;;;;;;;;;9014:101;9010:401;;;9144:11;;;;;;;;;;;9136:20;;;;;;9193:12;;9183:6;:22;;9175:31;;;;;;9251:15;9233:11;:15;9245:2;9233:15;;;;;;;;;;;;;;;;:33;9225:42;;;;;;9323:10;9304:15;:30;;;;:::i;:::-;9286:11;:15;9298:2;9286:15;;;;;;;;;;;;;;;:48;;;;9364:1;9353:8;:12;;;;9394:1;9384:7;:11;;;;9010:401;9425:28;9456:24;9474:4;9456:9;:24::i;:::-;9425:55;;9500:6;;;;;;;;;;;9499:7;:32;;;;;9518:13;;;;;;;;;;;9510:21;;:4;:21;;;;9499:32;:47;;;;;9535:11;;;;;;;;;;;9499:47;9495:1620;;;9585:40;9621:3;9585:31;9614:1;9585:24;9595:13;;;;;;;;;;;9585:9;:24::i;:::-;:28;;:31;;;;:::i;:::-;:35;;:40;;;;:::i;:::-;9575:6;:50;;:76;;;;;9639:12;;9629:6;:22;;9575:76;9567:85;;;;;;9700:15;9679:12;:18;9692:4;9679:18;;;;;;;;;;;;;;;;:36;9671:45;;;;;;9767:15;9757:6;9738:9;:15;9748:4;9738:15;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;:44;9735:111;;;9825:1;9806:10;:16;9817:4;9806:16;;;;;;;;;;;;;;;:20;;;;9735:111;9888:1;9868:10;:16;9879:4;9868:16;;;;;;;;;;;;;;;;:21;9864:943;;9914:10;:16;9925:4;9914:16;;;;;;;;;;;;;;;;:18;;;;;;;;;:::i;:::-;;;;;;9973:15;9955:9;:15;9965:4;9955:15;;;;;;;;;;;;;;;:33;;;;10051:7;10032:15;:27;;;;:::i;:::-;10011:12;:18;10024:4;10011:18;;;;;;;;;;;;;;;:48;;;;9864:943;;;10126:1;10106:10;:16;10117:4;10106:16;;;;;;;;;;;;;;;;:21;10102:705;;10152:10;:16;10163:4;10152:16;;;;;;;;;;;;;;;;:18;;;;;;;;;:::i;:::-;;;;;;10233:7;10214:15;:27;;;;:::i;:::-;10193:12;:18;10206:4;10193:18;;;;;;;;;;;;;;;:48;;;;10102:705;;;10308:1;10288:10;:16;10299:4;10288:16;;;;;;;;;;;;;;;;:21;10284:523;;10334:10;:16;10345:4;10334:16;;;;;;;;;;;;;;;;:18;;;;;;;;;:::i;:::-;;;;;;10415:7;10396:15;:27;;;;:::i;:::-;10375:12;:18;10388:4;10375:18;;;;;;;;;;;;;;;:48;;;;10284:523;;;10490:1;10470:10;:16;10481:4;10470:16;;;;;;;;;;;;;;;;:21;10466:341;;10516:10;:16;10527:4;10516:16;;;;;;;;;;;;;;;;:18;;;;;;;;;:::i;:::-;;;;;;10597:8;10578:15;:28;;;;:::i;:::-;10557:12;:18;10570:4;10557:18;;;;;;;;;;;;;;;:49;;;;10466:341;;;10673:1;10653:10;:16;10664:4;10653:16;;;;;;;;;;;;;;;;:21;10649:158;;10699:10;:16;10710:4;10699:16;;;;;;;;;;;;;;;;:18;;;;;;;;;:::i;:::-;;;;;;10780:6;10761:9;:15;10771:4;10761:15;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;10740:12;:18;10753:4;10740:18;;;;;;;;;;;;;;;:47;;;;10649:158;10466:341;10284:523;10102:705;9864:943;10825:38;10842:20;10825:16;:38::i;:::-;10882:26;10911:21;10882:50;;10976:1;10955:18;:22;10951:106;;;11002:35;11015:21;11002:12;:35::i;:::-;10951:106;11075:24;11082:10;:16;11093:4;11082:16;;;;;;;;;;;;;;;;11075:6;:24::i;:::-;9548:1567;9495:1620;8613:2513;8575:2551;11136:12;11151:4;11136:19;;11172:18;:24;11191:4;11172:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11200:18;:22;11219:2;11200:22;;;;;;;;;;;;;;;;;;;;;;;;;11172:50;11168:98;;;11249:5;11239:15;;11168:98;11278:41;11293:4;11299:2;11303:6;11311:7;11278:14;:41::i;:::-;8333:3018;8264:3087;;;:::o;1496:190::-;1582:7;1615:1;1610;:6;;1618:12;1602:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1642:9;1658:1;1654;:5;;;;:::i;:::-;1642:17;;1677:1;1670:8;;;1496:190;;;;;:::o;11774:151::-;11831:12;;;;;;;;;;;:21;;:36;11853:13;11864:1;11853:6;:10;;:13;;;;:::i;:::-;11831:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11878:15;;;;;;;;;;;:24;;:39;11903:13;11914:1;11903:6;:10;;:13;;;;:::i;:::-;11878:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11774:151;:::o;7233:253::-;7301:7;7340;;7329;:18;;7321:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;7404:19;7426:10;:8;:10::i;:::-;7404:32;;7454:24;7466:11;7454:7;:11;;:24;;;;:::i;:::-;7447:31;;;7233:253;;;:::o;11359:407::-;5289:4;5280:6;;:13;;;;;;;;;;;;;;;;;;11437:21:::1;11475:1;11461:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11437:40;;11506:4;11488;11493:1;11488:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11532:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11522:4;11527:1;11522:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11565:62;11582:4;11597:15;;;;;;;;;;;11615:11;11565:8;:62::i;:::-;11638:15;;;;;;;;;;;:66;;;11705:11;11718:1;11721:4;11735;11742:15;11638:120;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11426:340;5325:5:::0;5316:6;;:14;;;;;;;;;;;;;;;;;;11359:407;:::o;1694:246::-;1752:7;1781:1;1776;:6;1772:47;;1806:1;1799:8;;;;1772:47;1829:9;1845:1;1841;:5;;;;:::i;:::-;1829:17;;1874:1;1869;1865;:5;;;;:::i;:::-;:10;1857:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1931:1;1924:8;;;1694:246;;;;;:::o;1948:132::-;2006:7;2033:39;2037:1;2040;2033:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2026:46;;1948:132;;;;:::o;7741:172::-;7816:10;7806:7;;:20;;;;:::i;:::-;7796:7;:30;;;;7854:1;7841:10;:14;7837:59;;;7883:1;7872:8;:12;;;;7837:59;7741:172;:::o;13221:239::-;13334:7;13329:28;;13343:14;:12;:14::i;:::-;13329:28;13368:44;13386:6;13394:9;13405:6;13368:17;:44::i;:::-;13428:7;13423:29;;13437:15;:13;:15::i;:::-;13423:29;13221:239;;;;:::o;7643:86::-;7697:1;7687:7;:11;;;;7720:1;7709:8;:12;;;;7643:86::o;15625:164::-;15667:7;15688:15;15705;15724:19;:17;:19::i;:::-;15687:56;;;;15761:20;15773:7;15761;:11;;:20;;;;:::i;:::-;15754:27;;;;15625:164;:::o;2088:189::-;2174:7;2206:1;2202;:5;2209:12;2194:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2233:9;2249:1;2245;:5;;;;:::i;:::-;2233:17;;2268:1;2261:8;;;2088:189;;;;;:::o;7498:137::-;7556:1;7545:7;;:12;:29;;;;;7573:1;7561:8;;:13;7545:29;7576:7;7541:42;7603:1;7593:7;:11;;;;7626:1;7615:8;:12;;;;7498:137;:::o;13468:487::-;13567:15;13584:23;13609:12;13623:23;13648:12;13662:13;13679:19;13690:7;13679:10;:19::i;:::-;13566:132;;;;;;;;;;;;13727:28;13747:7;13727;:15;13735:6;13727:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13709:7;:15;13717:6;13709:15;;;;;;;;;;;;;;;:46;;;;13787:39;13810:15;13787:7;:18;13795:9;13787:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13766:7;:18;13774:9;13766:18;;;;;;;;;;;;;;;:60;;;;13837:16;13847:5;13837:9;:16::i;:::-;13864:23;13876:4;13882;13864:11;:23::i;:::-;13920:9;13903:44;;13912:6;13903:44;;;13931:15;13903:44;;;;;;:::i;:::-;;;;;;;;13555:400;;;;;;13468:487;;;:::o;15797:257::-;15848:7;15857;15877:15;15895:7;;15877:25;;15913:15;4343;15913:25;;15963:20;4343:15;15963:7;;:11;;:20;;;;:::i;:::-;15953:7;:30;15949:61;;;15993:7;;4343:15;15985:25;;;;;;;;15949:61;16029:7;16038;16021:25;;;;;;15797:257;;;:::o;14374:467::-;14433:7;14442;14451;14460;14469;14478;14499:23;14524:12;14538:13;14555:39;14567:7;14576;;14585:8;;14555:11;:39::i;:::-;14498:96;;;;;;14605:19;14627:10;:8;:10::i;:::-;14605:32;;14649:15;14666:23;14691:12;14707:46;14719:7;14728:4;14734:5;14741:11;14707;:46::i;:::-;14648:105;;;;;;14772:7;14781:15;14798:4;14804:15;14821:4;14827:5;14764:69;;;;;;;;;;;;;;;;;;;14374:467;;;;;;;:::o;1352:136::-;1410:7;1437:43;1441:1;1444;1437:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1430:50;;1352:136;;;;:::o;1165:179::-;1223:7;1243:9;1259:1;1255;:5;;;;:::i;:::-;1243:17;;1284:1;1279;:6;;1271:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1335:1;1328:8;;;1165:179;;;;:::o;13963:211::-;14016:19;14038:10;:8;:10::i;:::-;14016:32;;14059:13;14075:22;14085:11;14075:5;:9;;:22;;;;:::i;:::-;14059:38;;14133:33;14160:5;14133:7;:22;14149:4;14133:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14108:7;:22;14124:4;14108:22;;;;;;;;;;;;;;;:58;;;;14005:169;;13963:211;:::o;14182:147::-;14260:17;14272:4;14260:7;;:11;;:17;;;;:::i;:::-;14250:7;:27;;;;14301:20;14316:4;14301:10;;:14;;:20;;;;:::i;:::-;14288:10;:33;;;;14182:147;;:::o;14849:351::-;14942:7;14951;14960;14980:12;14995:28;15019:3;14995:19;15007:6;14995:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;14980:43;;15034:13;15050:29;15075:3;15050:20;15062:7;15050;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;15034:45;;15090:23;15116:28;15138:5;15116:17;15128:4;15116:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15090:54;;15163:15;15180:4;15186:5;15155:37;;;;;;;;;14849:351;;;;;;;:::o;15208:409::-;15318:7;15327;15336;15356:15;15374:24;15386:11;15374:7;:11;;:24;;;;:::i;:::-;15356:42;;15409:12;15424:21;15433:11;15424:4;:8;;:21;;;;:::i;:::-;15409:36;;15456:13;15472:22;15482:11;15472:5;:9;;:22;;;;:::i;:::-;15456:38;;15505:23;15531:28;15553:5;15531:17;15543:4;15531:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15505:54;;15578:7;15587:15;15604:4;15570:39;;;;;;;;;;15208:409;;;;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:86::-;4506:7;4546:4;4539:5;4535:16;4524:27;;4471:86;;;:::o;4563:112::-;4646:22;4662:5;4646:22;:::i;:::-;4641:3;4634:35;4563:112;;:::o;4681:214::-;4770:4;4808:2;4797:9;4793:18;4785:26;;4821:67;4885:1;4874:9;4870:17;4861:6;4821:67;:::i;:::-;4681:214;;;;:::o;4901:116::-;4971:21;4986:5;4971:21;:::i;:::-;4964:5;4961:32;4951:60;;5007:1;5004;4997:12;4951:60;4901:116;:::o;5023:133::-;5066:5;5104:6;5091:20;5082:29;;5120:30;5144:5;5120:30;:::i;:::-;5023:133;;;;:::o;5162:323::-;5218:6;5267:2;5255:9;5246:7;5242:23;5238:32;5235:119;;;5273:79;;:::i;:::-;5235:119;5393:1;5418:50;5460:7;5451:6;5440:9;5436:22;5418:50;:::i;:::-;5408:60;;5364:114;5162:323;;;;:::o;5491:329::-;5550:6;5599:2;5587:9;5578:7;5574:23;5570:32;5567:119;;;5605:79;;:::i;:::-;5567:119;5725:1;5750:53;5795:7;5786:6;5775:9;5771:22;5750:53;:::i;:::-;5740:63;;5696:117;5491:329;;;;:::o;5826:118::-;5913:24;5931:5;5913:24;:::i;:::-;5908:3;5901:37;5826:118;;:::o;5950:222::-;6043:4;6081:2;6070:9;6066:18;6058:26;;6094:71;6162:1;6151:9;6147:17;6138:6;6094:71;:::i;:::-;5950:222;;;;:::o;6178:329::-;6237:6;6286:2;6274:9;6265:7;6261:23;6257:32;6254:119;;;6292:79;;:::i;:::-;6254:119;6412:1;6437:53;6482:7;6473:6;6462:9;6458:22;6437:53;:::i;:::-;6427:63;;6383:117;6178:329;;;;:::o;6513:474::-;6581:6;6589;6638:2;6626:9;6617:7;6613:23;6609:32;6606:119;;;6644:79;;:::i;:::-;6606:119;6764:1;6789:53;6834:7;6825:6;6814:9;6810:22;6789:53;:::i;:::-;6779:63;;6735:117;6891:2;6917:53;6962:7;6953:6;6942:9;6938:22;6917:53;:::i;:::-;6907:63;;6862:118;6513:474;;;;;:::o;6993:182::-;7133:34;7129:1;7121:6;7117:14;7110:58;6993:182;:::o;7181:366::-;7323:3;7344:67;7408:2;7403:3;7344:67;:::i;:::-;7337:74;;7420:93;7509:3;7420:93;:::i;:::-;7538:2;7533:3;7529:12;7522:19;;7181:366;;;:::o;7553:419::-;7719:4;7757:2;7746:9;7742:18;7734:26;;7806:9;7800:4;7796:20;7792:1;7781:9;7777:17;7770:47;7834:131;7960:4;7834:131;:::i;:::-;7826:139;;7553:419;;;:::o;7978:179::-;8118:31;8114:1;8106:6;8102:14;8095:55;7978:179;:::o;8163:366::-;8305:3;8326:67;8390:2;8385:3;8326:67;:::i;:::-;8319:74;;8402:93;8491:3;8402:93;:::i;:::-;8520:2;8515:3;8511:12;8504:19;;8163:366;;;:::o;8535:419::-;8701:4;8739:2;8728:9;8724:18;8716:26;;8788:9;8782:4;8778:20;8774:1;8763:9;8759:17;8752:47;8816:131;8942:4;8816:131;:::i;:::-;8808:139;;8535:419;;;:::o;8960:143::-;9017:5;9048:6;9042:13;9033:22;;9064:33;9091:5;9064:33;:::i;:::-;8960:143;;;;:::o;9109:351::-;9179:6;9228:2;9216:9;9207:7;9203:23;9199:32;9196:119;;;9234:79;;:::i;:::-;9196:119;9354:1;9379:64;9435:7;9426:6;9415:9;9411:22;9379:64;:::i;:::-;9369:74;;9325:128;9109:351;;;;:::o;9466:332::-;9587:4;9625:2;9614:9;9610:18;9602:26;;9638:71;9706:1;9695:9;9691:17;9682:6;9638:71;:::i;:::-;9719:72;9787:2;9776:9;9772:18;9763:6;9719:72;:::i;:::-;9466:332;;;;;:::o;9804:85::-;9849:7;9878:5;9867:16;;9804:85;;;:::o;9895:60::-;9923:3;9944:5;9937:12;;9895:60;;;:::o;9961:158::-;10019:9;10052:61;10070:42;10079:32;10105:5;10079:32;:::i;:::-;10070:42;:::i;:::-;10052:61;:::i;:::-;10039:74;;9961:158;;;:::o;10125:147::-;10220:45;10259:5;10220:45;:::i;:::-;10215:3;10208:58;10125:147;;:::o;10278:807::-;10527:4;10565:3;10554:9;10550:19;10542:27;;10579:71;10647:1;10636:9;10632:17;10623:6;10579:71;:::i;:::-;10660:72;10728:2;10717:9;10713:18;10704:6;10660:72;:::i;:::-;10742:80;10818:2;10807:9;10803:18;10794:6;10742:80;:::i;:::-;10832;10908:2;10897:9;10893:18;10884:6;10832:80;:::i;:::-;10922:73;10990:3;10979:9;10975:19;10966:6;10922:73;:::i;:::-;11005;11073:3;11062:9;11058:19;11049:6;11005:73;:::i;:::-;10278:807;;;;;;;;;:::o;11091:143::-;11148:5;11179:6;11173:13;11164:22;;11195:33;11222:5;11195:33;:::i;:::-;11091:143;;;;:::o;11240:663::-;11328:6;11336;11344;11393:2;11381:9;11372:7;11368:23;11364:32;11361:119;;;11399:79;;:::i;:::-;11361:119;11519:1;11544:64;11600:7;11591:6;11580:9;11576:22;11544:64;:::i;:::-;11534:74;;11490:128;11657:2;11683:64;11739:7;11730:6;11719:9;11715:22;11683:64;:::i;:::-;11673:74;;11628:129;11796:2;11822:64;11878:7;11869:6;11858:9;11854:22;11822:64;:::i;:::-;11812:74;;11767:129;11240:663;;;;;:::o;11909:332::-;12030:4;12068:2;12057:9;12053:18;12045:26;;12081:71;12149:1;12138:9;12134:17;12125:6;12081:71;:::i;:::-;12162:72;12230:2;12219:9;12215:18;12206:6;12162:72;:::i;:::-;11909:332;;;;;:::o;12247:137::-;12301:5;12332:6;12326:13;12317:22;;12348:30;12372:5;12348:30;:::i;:::-;12247:137;;;;:::o;12390:345::-;12457:6;12506:2;12494:9;12485:7;12481:23;12477:32;12474:119;;;12512:79;;:::i;:::-;12474:119;12632:1;12657:61;12710:7;12701:6;12690:9;12686:22;12657:61;:::i;:::-;12647:71;;12603:125;12390:345;;;;:::o;12741:223::-;12881:34;12877:1;12869:6;12865:14;12858:58;12950:6;12945:2;12937:6;12933:15;12926:31;12741:223;:::o;12970:366::-;13112:3;13133:67;13197:2;13192:3;13133:67;:::i;:::-;13126:74;;13209:93;13298:3;13209:93;:::i;:::-;13327:2;13322:3;13318:12;13311:19;;12970:366;;;:::o;13342:419::-;13508:4;13546:2;13535:9;13531:18;13523:26;;13595:9;13589:4;13585:20;13581:1;13570:9;13566:17;13559:47;13623:131;13749:4;13623:131;:::i;:::-;13615:139;;13342:419;;;:::o;13767:221::-;13907:34;13903:1;13895:6;13891:14;13884:58;13976:4;13971:2;13963:6;13959:15;13952:29;13767:221;:::o;13994:366::-;14136:3;14157:67;14221:2;14216:3;14157:67;:::i;:::-;14150:74;;14233:93;14322:3;14233:93;:::i;:::-;14351:2;14346:3;14342:12;14335:19;;13994:366;;;:::o;14366:419::-;14532:4;14570:2;14559:9;14555:18;14547:26;;14619:9;14613:4;14609:20;14605:1;14594:9;14590:17;14583:47;14647:131;14773:4;14647:131;:::i;:::-;14639:139;;14366:419;;;:::o;14791:224::-;14931:34;14927:1;14919:6;14915:14;14908:58;15000:7;14995:2;14987:6;14983:15;14976:32;14791:224;:::o;15021:366::-;15163:3;15184:67;15248:2;15243:3;15184:67;:::i;:::-;15177:74;;15260:93;15349:3;15260:93;:::i;:::-;15378:2;15373:3;15369:12;15362:19;;15021:366;;;:::o;15393:419::-;15559:4;15597:2;15586:9;15582:18;15574:26;;15646:9;15640:4;15636:20;15632:1;15621:9;15617:17;15610:47;15674:131;15800:4;15674:131;:::i;:::-;15666:139;;15393:419;;;:::o;15818:222::-;15958:34;15954:1;15946:6;15942:14;15935:58;16027:5;16022:2;16014:6;16010:15;16003:30;15818:222;:::o;16046:366::-;16188:3;16209:67;16273:2;16268:3;16209:67;:::i;:::-;16202:74;;16285:93;16374:3;16285:93;:::i;:::-;16403:2;16398:3;16394:12;16387:19;;16046:366;;;:::o;16418:419::-;16584:4;16622:2;16611:9;16607:18;16599:26;;16671:9;16665:4;16661:20;16657:1;16646:9;16642:17;16635:47;16699:131;16825:4;16699:131;:::i;:::-;16691:139;;16418:419;;;:::o;16843:228::-;16983:34;16979:1;16971:6;16967:14;16960:58;17052:11;17047:2;17039:6;17035:15;17028:36;16843:228;:::o;17077:366::-;17219:3;17240:67;17304:2;17299:3;17240:67;:::i;:::-;17233:74;;17316:93;17405:3;17316:93;:::i;:::-;17434:2;17429:3;17425:12;17418:19;;17077:366;;;:::o;17449:419::-;17615:4;17653:2;17642:9;17638:18;17630:26;;17702:9;17696:4;17692:20;17688:1;17677:9;17673:17;17666:47;17730:131;17856:4;17730:131;:::i;:::-;17722:139;;17449:419;;;:::o;17874:167::-;18014:19;18010:1;18002:6;17998:14;17991:43;17874:167;:::o;18047:366::-;18189:3;18210:67;18274:2;18269:3;18210:67;:::i;:::-;18203:74;;18286:93;18375:3;18286:93;:::i;:::-;18404:2;18399:3;18395:12;18388:19;;18047:366;;;:::o;18419:419::-;18585:4;18623:2;18612:9;18608:18;18600:26;;18672:9;18666:4;18662:20;18658:1;18647:9;18643:17;18636:47;18700:131;18826:4;18700:131;:::i;:::-;18692:139;;18419:419;;;:::o;18844:180::-;18892:77;18889:1;18882:88;18989:4;18986:1;18979:15;19013:4;19010:1;19003:15;19030:305;19070:3;19089:20;19107:1;19089:20;:::i;:::-;19084:25;;19123:20;19141:1;19123:20;:::i;:::-;19118:25;;19277:1;19209:66;19205:74;19202:1;19199:81;19196:107;;;19283:18;;:::i;:::-;19196:107;19327:1;19324;19320:9;19313:16;;19030:305;;;;:::o;19341:233::-;19380:3;19403:24;19421:5;19403:24;:::i;:::-;19394:33;;19449:66;19442:5;19439:77;19436:103;;19519:18;;:::i;:::-;19436:103;19566:1;19559:5;19555:13;19548:20;;19341:233;;;:::o;19580:191::-;19620:4;19640:20;19658:1;19640:20;:::i;:::-;19635:25;;19674:20;19692:1;19674:20;:::i;:::-;19669:25;;19713:1;19710;19707:8;19704:34;;;19718:18;;:::i;:::-;19704:34;19763:1;19760;19756:9;19748:17;;19580:191;;;;:::o;19777:229::-;19917:34;19913:1;19905:6;19901:14;19894:58;19986:12;19981:2;19973:6;19969:15;19962:37;19777:229;:::o;20012:366::-;20154:3;20175:67;20239:2;20234:3;20175:67;:::i;:::-;20168:74;;20251:93;20340:3;20251:93;:::i;:::-;20369:2;20364:3;20360:12;20353:19;;20012:366;;;:::o;20384:419::-;20550:4;20588:2;20577:9;20573:18;20565:26;;20637:9;20631:4;20627:20;20623:1;20612:9;20608:17;20601:47;20665:131;20791:4;20665:131;:::i;:::-;20657:139;;20384:419;;;:::o;20809:180::-;20857:77;20854:1;20847:88;20954:4;20951:1;20944:15;20978:4;20975:1;20968:15;20995:180;21043:77;21040:1;21033:88;21140:4;21137:1;21130:15;21164:4;21161:1;21154:15;21181:114;21248:6;21282:5;21276:12;21266:22;;21181:114;;;:::o;21301:184::-;21400:11;21434:6;21429:3;21422:19;21474:4;21469:3;21465:14;21450:29;;21301:184;;;;:::o;21491:132::-;21558:4;21581:3;21573:11;;21611:4;21606:3;21602:14;21594:22;;21491:132;;;:::o;21629:108::-;21706:24;21724:5;21706:24;:::i;:::-;21701:3;21694:37;21629:108;;:::o;21743:179::-;21812:10;21833:46;21875:3;21867:6;21833:46;:::i;:::-;21911:4;21906:3;21902:14;21888:28;;21743:179;;;;:::o;21928:113::-;21998:4;22030;22025:3;22021:14;22013:22;;21928:113;;;:::o;22077:732::-;22196:3;22225:54;22273:5;22225:54;:::i;:::-;22295:86;22374:6;22369:3;22295:86;:::i;:::-;22288:93;;22405:56;22455:5;22405:56;:::i;:::-;22484:7;22515:1;22500:284;22525:6;22522:1;22519:13;22500:284;;;22601:6;22595:13;22628:63;22687:3;22672:13;22628:63;:::i;:::-;22621:70;;22714:60;22767:6;22714:60;:::i;:::-;22704:70;;22560:224;22547:1;22544;22540:9;22535:14;;22500:284;;;22504:14;22800:3;22793:10;;22201:608;;;22077:732;;;;:::o;22815:831::-;23078:4;23116:3;23105:9;23101:19;23093:27;;23130:71;23198:1;23187:9;23183:17;23174:6;23130:71;:::i;:::-;23211:80;23287:2;23276:9;23272:18;23263:6;23211:80;:::i;:::-;23338:9;23332:4;23328:20;23323:2;23312:9;23308:18;23301:48;23366:108;23469:4;23460:6;23366:108;:::i;:::-;23358:116;;23484:72;23552:2;23541:9;23537:18;23528:6;23484:72;:::i;:::-;23566:73;23634:3;23623:9;23619:19;23610:6;23566:73;:::i;:::-;22815:831;;;;;;;;:::o;23652:348::-;23692:7;23715:20;23733:1;23715:20;:::i;:::-;23710:25;;23749:20;23767:1;23749:20;:::i;:::-;23744:25;;23937:1;23869:66;23865:74;23862:1;23859:81;23854:1;23847:9;23840:17;23836:105;23833:131;;;23944:18;;:::i;:::-;23833:131;23992:1;23989;23985:9;23974:20;;23652:348;;;;:::o;24006:180::-;24054:77;24051:1;24044:88;24151:4;24148:1;24141:15;24175:4;24172:1;24165:15;24192:185;24232:1;24249:20;24267:1;24249:20;:::i;:::-;24244:25;;24283:20;24301:1;24283:20;:::i;:::-;24278:25;;24322:1;24312:35;;24327:18;;:::i;:::-;24312:35;24369:1;24366;24362:9;24357:14;;24192:185;;;;:::o;24383:220::-;24523:34;24519:1;24511:6;24507:14;24500:58;24592:3;24587:2;24579:6;24575:15;24568:28;24383:220;:::o;24609:366::-;24751:3;24772:67;24836:2;24831:3;24772:67;:::i;:::-;24765:74;;24848:93;24937:3;24848:93;:::i;:::-;24966:2;24961:3;24957:12;24950:19;;24609:366;;;:::o;24981:419::-;25147:4;25185:2;25174:9;25170:18;25162:26;;25234:9;25228:4;25224:20;25220:1;25209:9;25205:17;25198:47;25262:131;25388:4;25262:131;:::i;:::-;25254:139;;24981:419;;;:::o;25406:177::-;25546:29;25542:1;25534:6;25530:14;25523:53;25406:177;:::o;25589:366::-;25731:3;25752:67;25816:2;25811:3;25752:67;:::i;:::-;25745:74;;25828:93;25917:3;25828:93;:::i;:::-;25946:2;25941:3;25937:12;25930:19;;25589:366;;;:::o;25961:419::-;26127:4;26165:2;26154:9;26150:18;26142:26;;26214:9;26208:4;26204:20;26200:1;26189:9;26185:17;26178:47;26242:131;26368:4;26242:131;:::i;:::-;26234:139;;25961:419;;;:::o

Swarm Source

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