ETH Price: $2,441.96 (+1.53%)

Token

Captain Element (CptnElmt)
 

Overview

Max Total Supply

1,000,000,000,000,000 CptnElmt

Holders

106

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
872,255,608,385.708214869 CptnElmt

Value
$0.00
0xcd00ca999946df6a2181173dcc85f7685bfa96c5
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:
CaptainElement

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

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

// SPDX-License-Identifier: UNLICENSED 

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

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

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

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(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract CaptainElement is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => User) private cooldown;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1e15 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    string private constant _name = unicode"Captain Element";
    string private constant _symbol = unicode"CptnElmt";
    uint8 private constant _decimals = 9;
    uint256 private _taxFee = 2;
    uint256 private _teamFee = 7;
    uint256 private _feeRate = 9;
    uint256 private _feeMultiplier = 1000;
    uint256 private _launchTime;
    uint256 private _previousTaxFee = _taxFee;
    uint256 private _previousteamFee = _teamFee;
    uint256 private _maxBuyAmount;
    address payable private _FeeAddress;
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private _cooldownEnabled = true;
    bool private inSwap = false;
    uint256 private buyLimitEnd;
    struct User {
        uint256 buy;
        uint256 sell;
        bool exists;
    }

    event MaxBuyAmountUpdated(uint _maxBuyAmount);
    event CooldownEnabledUpdated(bool _cooldown);
    event FeeMultiplierUpdated(uint _multiplier);
    event FeeRateUpdated(uint _rate);

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor (address payable FeeAddress) {
        _FeeAddress = FeeAddress;
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[FeeAddress] = 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 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;
        _previousTaxFee = _taxFee;
        _previousteamFee = _teamFee;
        _taxFee = 0;
        _teamFee = 0;
    }
    
    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _teamFee = _previousteamFee;
    }

    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(!cooldown[msg.sender].exists) {
                    cooldown[msg.sender] = User(0,0,true);
                }
            }

            // buy
            if(from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
                require(tradingOpen, "Trading not yet enabled.");
                _teamFee = 7;
                if(_cooldownEnabled) {
                    if(buyLimitEnd > block.timestamp) {
                        require(amount <= _maxBuyAmount);
                        require(cooldown[to].buy < block.timestamp, "Your buy cooldown has not expired.");
                        cooldown[to].buy = block.timestamp + (45 seconds);
                    }
                }
                if(_cooldownEnabled) {
                    cooldown[to].sell = block.timestamp + (15 seconds);
                }
            }
            uint256 contractTokenBalance = balanceOf(address(this));

            // sell
            if(!inSwap && from != uniswapV2Pair && tradingOpen) {
                _teamFee = 18;
                if(_cooldownEnabled) {
                    require(cooldown[from].sell < block.timestamp, "Your sell cooldown has not expired.");
                }

                if(contractTokenBalance > 0) {
                    if(contractTokenBalance > balanceOf(uniswapV2Pair).mul(_feeRate).div(100)) {
                        contractTokenBalance = balanceOf(uniswapV2Pair).mul(_feeRate).div(100);
                    }
                    swapTokensForEth(contractTokenBalance);
                }
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
        bool takeFee = true;

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

    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 {
        _FeeAddress.transfer(amount);
    }
    
    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 _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 _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 _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 _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 addLiquidity() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        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);
        _maxBuyAmount = 3000000000000 * 10**9;
        _launchTime = block.timestamp;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }

    function openTrading() public onlyOwner {
        tradingOpen = true;
        buyLimitEnd = block.timestamp + (120 seconds);
    }

    function manualswap() external {
        require(_msgSender() == _FeeAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualsend() external {
        require(_msgSender() == _FeeAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    // fallback in case contract is not releasing tokens fast enough
    function setFeeRate(uint256 rate) external {
        require(_msgSender() == _FeeAddress);
        require(rate < 51, "Rate can't exceed 50%");
        _feeRate = rate;
        emit FeeRateUpdated(_feeRate);
    }

    function setCooldownEnabled(bool onoff) external onlyOwner() {
        _cooldownEnabled = onoff;
        emit CooldownEnabledUpdated(_cooldownEnabled);
    }

    function thisBalance() public view returns (uint) {
        return balanceOf(address(this));
    }

    function cooldownEnabled() public view returns (bool) {
        return _cooldownEnabled;
    }

    function timeToBuy(address buyer) public view returns (uint) {
        return block.timestamp - cooldown[buyer].buy;
    }

    function timeToSell(address buyer) public view returns (uint) {
        return block.timestamp - cooldown[buyer].sell;
    }

    function amountInPool() public view returns (uint) {
        return balanceOf(uniswapV2Pair);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"FeeAddress","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":"bool","name":"_cooldown","type":"bool"}],"name":"CooldownEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_multiplier","type":"uint256"}],"name":"FeeMultiplierUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_rate","type":"uint256"}],"name":"FeeRateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxBuyAmount","type":"uint256"}],"name":"MaxBuyAmountUpdated","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":[],"name":"amountInPool","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":"cooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"rate","type":"uint256"}],"name":"setFeeRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"thisBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"buyer","type":"address"}],"name":"timeToBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"buyer","type":"address"}],"name":"timeToSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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"}]

608060405269d3c21bcecceda10000006000196200001e9190620004ba565b6000196200002d919062000441565b60075560026009556007600a556009600b556103e8600c55600954600e55600a54600f556001601360156101000a81548160ff0219169083151502179055506000601360166101000a81548160ff0219169083151502179055503480156200009457600080fd5b5060405162003d0538038062003d058339818101604052810190620000ba9190620003e7565b6000620000cc6200039f60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060075460026000620001c26200039f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060016005600062000216620003a760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620003276200039f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef69d3c21bcecceda100000060405162000390919062000424565b60405180910390a3506200056a565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050620003e18162000550565b92915050565b600060208284031215620003fa57600080fd5b60006200040a84828501620003d0565b91505092915050565b6200041e81620004b0565b82525050565b60006020820190506200043b600083018462000413565b92915050565b60006200044e82620004b0565b91506200045b83620004b0565b925082821015620004715762000470620004f2565b5b828203905092915050565b6000620004898262000490565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000620004c782620004b0565b9150620004d483620004b0565b925082620004e757620004e662000521565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6200055b816200047c565b81146200056757600080fd5b50565b61378b806200057a6000396000f3fe6080604052600436106101395760003560e01c8063715018a6116100ab578063a9fc35a91161006f578063a9fc35a914610423578063c3c8cd8014610460578063c9567bf914610477578063db92dbb61461048e578063dd62ed3e146104b9578063e8078d94146104f657610140565b8063715018a61461034e5780638da5cb5b1461036557806395d89b4114610390578063a9059cbb146103bb578063a985ceef146103f857610140565b8063313ce567116100fd578063313ce5671461024057806345596e2e1461026b5780635932ead11461029457806368a3a6a5146102bd5780636fc3eaec146102fa57806370a082311461031157610140565b806306fdde0314610145578063095ea7b31461017057806318160ddd146101ad57806323b872dd146101d857806327f3a72a1461021557610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a61050d565b6040516101679190612e6f565b60405180910390f35b34801561017c57600080fd5b506101976004803603810190610192919061298d565b61054a565b6040516101a49190612e54565b60405180910390f35b3480156101b957600080fd5b506101c2610568565b6040516101cf9190613051565b60405180910390f35b3480156101e457600080fd5b506101ff60048036038101906101fa919061293e565b61057a565b60405161020c9190612e54565b60405180910390f35b34801561022157600080fd5b5061022a610653565b6040516102379190613051565b60405180910390f35b34801561024c57600080fd5b50610255610663565b60405161026291906130c6565b60405180910390f35b34801561027757600080fd5b50610292600480360381019061028d9190612a1b565b61066c565b005b3480156102a057600080fd5b506102bb60048036038101906102b691906129c9565b610753565b005b3480156102c957600080fd5b506102e460048036038101906102df91906128b0565b61084b565b6040516102f19190613051565b60405180910390f35b34801561030657600080fd5b5061030f6108a2565b005b34801561031d57600080fd5b50610338600480360381019061033391906128b0565b610914565b6040516103459190613051565b60405180910390f35b34801561035a57600080fd5b50610363610965565b005b34801561037157600080fd5b5061037a610ab8565b6040516103879190612d86565b60405180910390f35b34801561039c57600080fd5b506103a5610ae1565b6040516103b29190612e6f565b60405180910390f35b3480156103c757600080fd5b506103e260048036038101906103dd919061298d565b610b1e565b6040516103ef9190612e54565b60405180910390f35b34801561040457600080fd5b5061040d610b3c565b60405161041a9190612e54565b60405180910390f35b34801561042f57600080fd5b5061044a600480360381019061044591906128b0565b610b53565b6040516104579190613051565b60405180910390f35b34801561046c57600080fd5b50610475610baa565b005b34801561048357600080fd5b5061048c610c24565b005b34801561049a57600080fd5b506104a3610ce9565b6040516104b09190613051565b60405180910390f35b3480156104c557600080fd5b506104e060048036038101906104db9190612902565b610d1b565b6040516104ed9190613051565b60405180910390f35b34801561050257600080fd5b5061050b610da2565b005b60606040518060400160405280600f81526020017f4361707461696e20456c656d656e740000000000000000000000000000000000815250905090565b600061055e6105576112b6565b84846112be565b6001905092915050565b600069d3c21bcecceda1000000905090565b6000610587848484611489565b610648846105936112b6565b6106438560405180606001604052806028815260200161372e60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105f96112b6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ccd9092919063ffffffff16565b6112be565b600190509392505050565b600061065e30610914565b905090565b60006009905090565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106ad6112b6565b73ffffffffffffffffffffffffffffffffffffffff16146106cd57600080fd5b60338110610710576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070790612f31565b60405180910390fd5b80600b819055507f208f1b468d3d61f0f085e975bd9d04367c930d599642faad06695229f3eadcd8600b546040516107489190613051565b60405180910390a150565b61075b6112b6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107df90612f91565b60405180910390fd5b80601360156101000a81548160ff0219169083151502179055507f0d63187a8abb5b4d1bb562e1163897386b0a88ee72e0799dd105bd0fd6f28706601360159054906101000a900460ff166040516108409190612e54565b60405180910390a150565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001544261089b9190613217565b9050919050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108e36112b6565b73ffffffffffffffffffffffffffffffffffffffff161461090357600080fd5b600047905061091181611d31565b50565b600061095e600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d9d565b9050919050565b61096d6112b6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f190612f91565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600881526020017f4370746e456c6d74000000000000000000000000000000000000000000000000815250905090565b6000610b32610b2b6112b6565b8484611489565b6001905092915050565b6000601360159054906101000a900460ff16905090565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015442610ba39190613217565b9050919050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610beb6112b6565b73ffffffffffffffffffffffffffffffffffffffff1614610c0b57600080fd5b6000610c1630610914565b9050610c2181611e0b565b50565b610c2c6112b6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb090612f91565b60405180910390fd5b6001601360146101000a81548160ff021916908315150217905550607842610ce19190613136565b601481905550565b6000610d16601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610914565b905090565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610daa6112b6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2e90612f91565b60405180910390fd5b601360149054906101000a900460ff1615610e87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7e90613011565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610f1830601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669d3c21bcecceda10000006112be565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610f5e57600080fd5b505afa158015610f72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9691906128d9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610ff857600080fd5b505afa15801561100c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103091906128d9565b6040518363ffffffff1660e01b815260040161104d929190612da1565b602060405180830381600087803b15801561106757600080fd5b505af115801561107b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109f91906128d9565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061112830610914565b600080611133610ab8565b426040518863ffffffff1660e01b815260040161115596959493929190612df3565b6060604051808303818588803b15801561116e57600080fd5b505af1158015611182573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111a79190612a44565b50505068a2a15d09519be0000060108190555042600d81905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611260929190612dca565b602060405180830381600087803b15801561127a57600080fd5b505af115801561128e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b291906129f2565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561132e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132590612ff1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561139e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139590612ed1565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161147c9190613051565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f090612fd1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611569576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156090612e91565b60405180910390fd5b600081116115ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a390612fb1565b60405180910390fd5b6115b4610ab8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561162257506115f2610ab8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c0a57601360159054906101000a900460ff161561172857600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff16611727576040518060600160405280600081526020016000815260200160011515815250600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055509050505b5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156117d35750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118295750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119f657601360149054906101000a900460ff1661187d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187490613031565b60405180910390fd5b6007600a81905550601360159054906101000a900460ff161561198c5742601454111561198b576010548111156118b357600080fd5b42600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015410611937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192e90612ef1565b60405180910390fd5b602d426119449190613136565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505b5b601360159054906101000a900460ff16156119f557600f426119ae9190613136565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b5b6000611a0130610914565b9050601360169054906101000a900460ff16158015611a6e5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611a865750601360149054906101000a900460ff165b15611c08576012600a81905550601360159054906101000a900460ff1615611b2d5742600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015410611b2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2390612f51565b60405180910390fd5b5b6000811115611bee57611b886064611b7a600b54611b6c601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610914565b61210590919063ffffffff16565b61218090919063ffffffff16565b811115611be457611be16064611bd3600b54611bc5601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610914565b61210590919063ffffffff16565b61218090919063ffffffff16565b90505b611bed81611e0b565b5b60004790506000811115611c0657611c0547611d31565b5b505b505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611cb15750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611cbb57600090505b611cc7848484846121ca565b50505050565b6000838311158290611d15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0c9190612e6f565b60405180910390fd5b5060008385611d249190613217565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611d99573d6000803e3d6000fd5b5050565b6000600754821115611de4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddb90612eb1565b60405180910390fd5b6000611dee6121f7565b9050611e03818461218090919063ffffffff16565b915050919050565b6001601360166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611e69577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015611e975781602001602082028036833780820191505090505b5090503081600081518110611ed5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611f7757600080fd5b505afa158015611f8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611faf91906128d9565b81600181518110611fe9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061205030601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846112be565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016120b495949392919061306c565b600060405180830381600087803b1580156120ce57600080fd5b505af11580156120e2573d6000803e3d6000fd5b50505050506000601360166101000a81548160ff02191690831515021790555050565b600080831415612118576000905061217a565b6000828461212691906131bd565b9050828482612135919061318c565b14612175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216c90612f71565b60405180910390fd5b809150505b92915050565b60006121c283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612222565b905092915050565b806121d8576121d7612285565b5b6121e38484846122c8565b806121f1576121f0612493565b5b50505050565b60008060006122046124a7565b9150915061221b818361218090919063ffffffff16565b9250505090565b60008083118290612269576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122609190612e6f565b60405180910390fd5b5060008385612278919061318c565b9050809150509392505050565b600060095414801561229957506000600a54145b156122a3576122c6565b600954600e81905550600a54600f8190555060006009819055506000600a819055505b565b6000806000806000806122da8761250c565b95509550955095509550955061233886600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257490919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123cd85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125be90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124198161261c565b61242384836126d9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516124809190613051565b60405180910390a3505050505050505050565b600e54600981905550600f54600a81905550565b60008060006007549050600069d3c21bcecceda100000090506124df69d3c21bcecceda100000060075461218090919063ffffffff16565b8210156124ff5760075469d3c21bcecceda1000000935093505050612508565b81819350935050505b9091565b60008060008060008060008060006125298a600954600a54612713565b92509250925060006125396121f7565b9050600080600061254c8e8787876127a9565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006125b683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ccd565b905092915050565b60008082846125cd9190613136565b905083811015612612576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260990612f11565b60405180910390fd5b8091505092915050565b60006126266121f7565b9050600061263d828461210590919063ffffffff16565b905061269181600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125be90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6126ee8260075461257490919063ffffffff16565b600781905550612709816008546125be90919063ffffffff16565b6008819055505050565b60008060008061273f6064612731888a61210590919063ffffffff16565b61218090919063ffffffff16565b90506000612769606461275b888b61210590919063ffffffff16565b61218090919063ffffffff16565b9050600061279282612784858c61257490919063ffffffff16565b61257490919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806127c2858961210590919063ffffffff16565b905060006127d9868961210590919063ffffffff16565b905060006127f0878961210590919063ffffffff16565b905060006128198261280b858761257490919063ffffffff16565b61257490919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081359050612841816136e8565b92915050565b600081519050612856816136e8565b92915050565b60008135905061286b816136ff565b92915050565b600081519050612880816136ff565b92915050565b60008135905061289581613716565b92915050565b6000815190506128aa81613716565b92915050565b6000602082840312156128c257600080fd5b60006128d084828501612832565b91505092915050565b6000602082840312156128eb57600080fd5b60006128f984828501612847565b91505092915050565b6000806040838503121561291557600080fd5b600061292385828601612832565b925050602061293485828601612832565b9150509250929050565b60008060006060848603121561295357600080fd5b600061296186828701612832565b935050602061297286828701612832565b925050604061298386828701612886565b9150509250925092565b600080604083850312156129a057600080fd5b60006129ae85828601612832565b92505060206129bf85828601612886565b9150509250929050565b6000602082840312156129db57600080fd5b60006129e98482850161285c565b91505092915050565b600060208284031215612a0457600080fd5b6000612a1284828501612871565b91505092915050565b600060208284031215612a2d57600080fd5b6000612a3b84828501612886565b91505092915050565b600080600060608486031215612a5957600080fd5b6000612a678682870161289b565b9350506020612a788682870161289b565b9250506040612a898682870161289b565b9150509250925092565b6000612a9f8383612aab565b60208301905092915050565b612ab48161324b565b82525050565b612ac38161324b565b82525050565b6000612ad4826130f1565b612ade8185613114565b9350612ae9836130e1565b8060005b83811015612b1a578151612b018882612a93565b9750612b0c83613107565b925050600181019050612aed565b5085935050505092915050565b612b308161325d565b82525050565b612b3f816132a0565b82525050565b6000612b50826130fc565b612b5a8185613125565b9350612b6a8185602086016132b2565b612b7381613343565b840191505092915050565b6000612b8b602383613125565b9150612b9682613354565b604082019050919050565b6000612bae602a83613125565b9150612bb9826133a3565b604082019050919050565b6000612bd1602283613125565b9150612bdc826133f2565b604082019050919050565b6000612bf4602283613125565b9150612bff82613441565b604082019050919050565b6000612c17601b83613125565b9150612c2282613490565b602082019050919050565b6000612c3a601583613125565b9150612c45826134b9565b602082019050919050565b6000612c5d602383613125565b9150612c68826134e2565b604082019050919050565b6000612c80602183613125565b9150612c8b82613531565b604082019050919050565b6000612ca3602083613125565b9150612cae82613580565b602082019050919050565b6000612cc6602983613125565b9150612cd1826135a9565b604082019050919050565b6000612ce9602583613125565b9150612cf4826135f8565b604082019050919050565b6000612d0c602483613125565b9150612d1782613647565b604082019050919050565b6000612d2f601783613125565b9150612d3a82613696565b602082019050919050565b6000612d52601883613125565b9150612d5d826136bf565b602082019050919050565b612d7181613289565b82525050565b612d8081613293565b82525050565b6000602082019050612d9b6000830184612aba565b92915050565b6000604082019050612db66000830185612aba565b612dc36020830184612aba565b9392505050565b6000604082019050612ddf6000830185612aba565b612dec6020830184612d68565b9392505050565b600060c082019050612e086000830189612aba565b612e156020830188612d68565b612e226040830187612b36565b612e2f6060830186612b36565b612e3c6080830185612aba565b612e4960a0830184612d68565b979650505050505050565b6000602082019050612e696000830184612b27565b92915050565b60006020820190508181036000830152612e898184612b45565b905092915050565b60006020820190508181036000830152612eaa81612b7e565b9050919050565b60006020820190508181036000830152612eca81612ba1565b9050919050565b60006020820190508181036000830152612eea81612bc4565b9050919050565b60006020820190508181036000830152612f0a81612be7565b9050919050565b60006020820190508181036000830152612f2a81612c0a565b9050919050565b60006020820190508181036000830152612f4a81612c2d565b9050919050565b60006020820190508181036000830152612f6a81612c50565b9050919050565b60006020820190508181036000830152612f8a81612c73565b9050919050565b60006020820190508181036000830152612faa81612c96565b9050919050565b60006020820190508181036000830152612fca81612cb9565b9050919050565b60006020820190508181036000830152612fea81612cdc565b9050919050565b6000602082019050818103600083015261300a81612cff565b9050919050565b6000602082019050818103600083015261302a81612d22565b9050919050565b6000602082019050818103600083015261304a81612d45565b9050919050565b60006020820190506130666000830184612d68565b92915050565b600060a0820190506130816000830188612d68565b61308e6020830187612b36565b81810360408301526130a08186612ac9565b90506130af6060830185612aba565b6130bc6080830184612d68565b9695505050505050565b60006020820190506130db6000830184612d77565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061314182613289565b915061314c83613289565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613181576131806132e5565b5b828201905092915050565b600061319782613289565b91506131a283613289565b9250826131b2576131b1613314565b5b828204905092915050565b60006131c882613289565b91506131d383613289565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561320c5761320b6132e5565b5b828202905092915050565b600061322282613289565b915061322d83613289565b9250828210156132405761323f6132e5565b5b828203905092915050565b600061325682613269565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006132ab82613289565b9050919050565b60005b838110156132d05780820151818401526020810190506132b5565b838111156132df576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f596f75722062757920636f6f6c646f776e20686173206e6f742065787069726560008201527f642e000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f526174652063616e277420657863656564203530250000000000000000000000600082015250565b7f596f75722073656c6c20636f6f6c646f776e20686173206e6f7420657870697260008201527f65642e0000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b6136f18161324b565b81146136fc57600080fd5b50565b6137088161325d565b811461371357600080fd5b50565b61371f81613289565b811461372a57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209cddc5c347559d0c6c921780ee6b902ffa9760150bfef0c44ac582709d269caa64736f6c634300080400330000000000000000000000001a1cf09e78e81de0a67692f57f0d971c8dd0b0a9

Deployed Bytecode

0x6080604052600436106101395760003560e01c8063715018a6116100ab578063a9fc35a91161006f578063a9fc35a914610423578063c3c8cd8014610460578063c9567bf914610477578063db92dbb61461048e578063dd62ed3e146104b9578063e8078d94146104f657610140565b8063715018a61461034e5780638da5cb5b1461036557806395d89b4114610390578063a9059cbb146103bb578063a985ceef146103f857610140565b8063313ce567116100fd578063313ce5671461024057806345596e2e1461026b5780635932ead11461029457806368a3a6a5146102bd5780636fc3eaec146102fa57806370a082311461031157610140565b806306fdde0314610145578063095ea7b31461017057806318160ddd146101ad57806323b872dd146101d857806327f3a72a1461021557610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a61050d565b6040516101679190612e6f565b60405180910390f35b34801561017c57600080fd5b506101976004803603810190610192919061298d565b61054a565b6040516101a49190612e54565b60405180910390f35b3480156101b957600080fd5b506101c2610568565b6040516101cf9190613051565b60405180910390f35b3480156101e457600080fd5b506101ff60048036038101906101fa919061293e565b61057a565b60405161020c9190612e54565b60405180910390f35b34801561022157600080fd5b5061022a610653565b6040516102379190613051565b60405180910390f35b34801561024c57600080fd5b50610255610663565b60405161026291906130c6565b60405180910390f35b34801561027757600080fd5b50610292600480360381019061028d9190612a1b565b61066c565b005b3480156102a057600080fd5b506102bb60048036038101906102b691906129c9565b610753565b005b3480156102c957600080fd5b506102e460048036038101906102df91906128b0565b61084b565b6040516102f19190613051565b60405180910390f35b34801561030657600080fd5b5061030f6108a2565b005b34801561031d57600080fd5b50610338600480360381019061033391906128b0565b610914565b6040516103459190613051565b60405180910390f35b34801561035a57600080fd5b50610363610965565b005b34801561037157600080fd5b5061037a610ab8565b6040516103879190612d86565b60405180910390f35b34801561039c57600080fd5b506103a5610ae1565b6040516103b29190612e6f565b60405180910390f35b3480156103c757600080fd5b506103e260048036038101906103dd919061298d565b610b1e565b6040516103ef9190612e54565b60405180910390f35b34801561040457600080fd5b5061040d610b3c565b60405161041a9190612e54565b60405180910390f35b34801561042f57600080fd5b5061044a600480360381019061044591906128b0565b610b53565b6040516104579190613051565b60405180910390f35b34801561046c57600080fd5b50610475610baa565b005b34801561048357600080fd5b5061048c610c24565b005b34801561049a57600080fd5b506104a3610ce9565b6040516104b09190613051565b60405180910390f35b3480156104c557600080fd5b506104e060048036038101906104db9190612902565b610d1b565b6040516104ed9190613051565b60405180910390f35b34801561050257600080fd5b5061050b610da2565b005b60606040518060400160405280600f81526020017f4361707461696e20456c656d656e740000000000000000000000000000000000815250905090565b600061055e6105576112b6565b84846112be565b6001905092915050565b600069d3c21bcecceda1000000905090565b6000610587848484611489565b610648846105936112b6565b6106438560405180606001604052806028815260200161372e60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105f96112b6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ccd9092919063ffffffff16565b6112be565b600190509392505050565b600061065e30610914565b905090565b60006009905090565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106ad6112b6565b73ffffffffffffffffffffffffffffffffffffffff16146106cd57600080fd5b60338110610710576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070790612f31565b60405180910390fd5b80600b819055507f208f1b468d3d61f0f085e975bd9d04367c930d599642faad06695229f3eadcd8600b546040516107489190613051565b60405180910390a150565b61075b6112b6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107df90612f91565b60405180910390fd5b80601360156101000a81548160ff0219169083151502179055507f0d63187a8abb5b4d1bb562e1163897386b0a88ee72e0799dd105bd0fd6f28706601360159054906101000a900460ff166040516108409190612e54565b60405180910390a150565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001544261089b9190613217565b9050919050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108e36112b6565b73ffffffffffffffffffffffffffffffffffffffff161461090357600080fd5b600047905061091181611d31565b50565b600061095e600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d9d565b9050919050565b61096d6112b6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f190612f91565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600881526020017f4370746e456c6d74000000000000000000000000000000000000000000000000815250905090565b6000610b32610b2b6112b6565b8484611489565b6001905092915050565b6000601360159054906101000a900460ff16905090565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015442610ba39190613217565b9050919050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610beb6112b6565b73ffffffffffffffffffffffffffffffffffffffff1614610c0b57600080fd5b6000610c1630610914565b9050610c2181611e0b565b50565b610c2c6112b6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb090612f91565b60405180910390fd5b6001601360146101000a81548160ff021916908315150217905550607842610ce19190613136565b601481905550565b6000610d16601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610914565b905090565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610daa6112b6565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2e90612f91565b60405180910390fd5b601360149054906101000a900460ff1615610e87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7e90613011565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610f1830601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669d3c21bcecceda10000006112be565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610f5e57600080fd5b505afa158015610f72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9691906128d9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610ff857600080fd5b505afa15801561100c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103091906128d9565b6040518363ffffffff1660e01b815260040161104d929190612da1565b602060405180830381600087803b15801561106757600080fd5b505af115801561107b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109f91906128d9565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061112830610914565b600080611133610ab8565b426040518863ffffffff1660e01b815260040161115596959493929190612df3565b6060604051808303818588803b15801561116e57600080fd5b505af1158015611182573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111a79190612a44565b50505068a2a15d09519be0000060108190555042600d81905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611260929190612dca565b602060405180830381600087803b15801561127a57600080fd5b505af115801561128e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b291906129f2565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561132e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132590612ff1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561139e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139590612ed1565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161147c9190613051565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f090612fd1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611569576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156090612e91565b60405180910390fd5b600081116115ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a390612fb1565b60405180910390fd5b6115b4610ab8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561162257506115f2610ab8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c0a57601360159054906101000a900460ff161561172857600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff16611727576040518060600160405280600081526020016000815260200160011515815250600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055509050505b5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156117d35750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118295750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119f657601360149054906101000a900460ff1661187d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187490613031565b60405180910390fd5b6007600a81905550601360159054906101000a900460ff161561198c5742601454111561198b576010548111156118b357600080fd5b42600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015410611937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192e90612ef1565b60405180910390fd5b602d426119449190613136565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505b5b601360159054906101000a900460ff16156119f557600f426119ae9190613136565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b5b6000611a0130610914565b9050601360169054906101000a900460ff16158015611a6e5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611a865750601360149054906101000a900460ff165b15611c08576012600a81905550601360159054906101000a900460ff1615611b2d5742600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015410611b2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2390612f51565b60405180910390fd5b5b6000811115611bee57611b886064611b7a600b54611b6c601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610914565b61210590919063ffffffff16565b61218090919063ffffffff16565b811115611be457611be16064611bd3600b54611bc5601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610914565b61210590919063ffffffff16565b61218090919063ffffffff16565b90505b611bed81611e0b565b5b60004790506000811115611c0657611c0547611d31565b5b505b505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611cb15750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611cbb57600090505b611cc7848484846121ca565b50505050565b6000838311158290611d15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0c9190612e6f565b60405180910390fd5b5060008385611d249190613217565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611d99573d6000803e3d6000fd5b5050565b6000600754821115611de4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddb90612eb1565b60405180910390fd5b6000611dee6121f7565b9050611e03818461218090919063ffffffff16565b915050919050565b6001601360166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611e69577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015611e975781602001602082028036833780820191505090505b5090503081600081518110611ed5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611f7757600080fd5b505afa158015611f8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611faf91906128d9565b81600181518110611fe9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061205030601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846112be565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016120b495949392919061306c565b600060405180830381600087803b1580156120ce57600080fd5b505af11580156120e2573d6000803e3d6000fd5b50505050506000601360166101000a81548160ff02191690831515021790555050565b600080831415612118576000905061217a565b6000828461212691906131bd565b9050828482612135919061318c565b14612175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216c90612f71565b60405180910390fd5b809150505b92915050565b60006121c283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612222565b905092915050565b806121d8576121d7612285565b5b6121e38484846122c8565b806121f1576121f0612493565b5b50505050565b60008060006122046124a7565b9150915061221b818361218090919063ffffffff16565b9250505090565b60008083118290612269576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122609190612e6f565b60405180910390fd5b5060008385612278919061318c565b9050809150509392505050565b600060095414801561229957506000600a54145b156122a3576122c6565b600954600e81905550600a54600f8190555060006009819055506000600a819055505b565b6000806000806000806122da8761250c565b95509550955095509550955061233886600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257490919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123cd85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125be90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124198161261c565b61242384836126d9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516124809190613051565b60405180910390a3505050505050505050565b600e54600981905550600f54600a81905550565b60008060006007549050600069d3c21bcecceda100000090506124df69d3c21bcecceda100000060075461218090919063ffffffff16565b8210156124ff5760075469d3c21bcecceda1000000935093505050612508565b81819350935050505b9091565b60008060008060008060008060006125298a600954600a54612713565b92509250925060006125396121f7565b9050600080600061254c8e8787876127a9565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006125b683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ccd565b905092915050565b60008082846125cd9190613136565b905083811015612612576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260990612f11565b60405180910390fd5b8091505092915050565b60006126266121f7565b9050600061263d828461210590919063ffffffff16565b905061269181600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125be90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6126ee8260075461257490919063ffffffff16565b600781905550612709816008546125be90919063ffffffff16565b6008819055505050565b60008060008061273f6064612731888a61210590919063ffffffff16565b61218090919063ffffffff16565b90506000612769606461275b888b61210590919063ffffffff16565b61218090919063ffffffff16565b9050600061279282612784858c61257490919063ffffffff16565b61257490919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806127c2858961210590919063ffffffff16565b905060006127d9868961210590919063ffffffff16565b905060006127f0878961210590919063ffffffff16565b905060006128198261280b858761257490919063ffffffff16565b61257490919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081359050612841816136e8565b92915050565b600081519050612856816136e8565b92915050565b60008135905061286b816136ff565b92915050565b600081519050612880816136ff565b92915050565b60008135905061289581613716565b92915050565b6000815190506128aa81613716565b92915050565b6000602082840312156128c257600080fd5b60006128d084828501612832565b91505092915050565b6000602082840312156128eb57600080fd5b60006128f984828501612847565b91505092915050565b6000806040838503121561291557600080fd5b600061292385828601612832565b925050602061293485828601612832565b9150509250929050565b60008060006060848603121561295357600080fd5b600061296186828701612832565b935050602061297286828701612832565b925050604061298386828701612886565b9150509250925092565b600080604083850312156129a057600080fd5b60006129ae85828601612832565b92505060206129bf85828601612886565b9150509250929050565b6000602082840312156129db57600080fd5b60006129e98482850161285c565b91505092915050565b600060208284031215612a0457600080fd5b6000612a1284828501612871565b91505092915050565b600060208284031215612a2d57600080fd5b6000612a3b84828501612886565b91505092915050565b600080600060608486031215612a5957600080fd5b6000612a678682870161289b565b9350506020612a788682870161289b565b9250506040612a898682870161289b565b9150509250925092565b6000612a9f8383612aab565b60208301905092915050565b612ab48161324b565b82525050565b612ac38161324b565b82525050565b6000612ad4826130f1565b612ade8185613114565b9350612ae9836130e1565b8060005b83811015612b1a578151612b018882612a93565b9750612b0c83613107565b925050600181019050612aed565b5085935050505092915050565b612b308161325d565b82525050565b612b3f816132a0565b82525050565b6000612b50826130fc565b612b5a8185613125565b9350612b6a8185602086016132b2565b612b7381613343565b840191505092915050565b6000612b8b602383613125565b9150612b9682613354565b604082019050919050565b6000612bae602a83613125565b9150612bb9826133a3565b604082019050919050565b6000612bd1602283613125565b9150612bdc826133f2565b604082019050919050565b6000612bf4602283613125565b9150612bff82613441565b604082019050919050565b6000612c17601b83613125565b9150612c2282613490565b602082019050919050565b6000612c3a601583613125565b9150612c45826134b9565b602082019050919050565b6000612c5d602383613125565b9150612c68826134e2565b604082019050919050565b6000612c80602183613125565b9150612c8b82613531565b604082019050919050565b6000612ca3602083613125565b9150612cae82613580565b602082019050919050565b6000612cc6602983613125565b9150612cd1826135a9565b604082019050919050565b6000612ce9602583613125565b9150612cf4826135f8565b604082019050919050565b6000612d0c602483613125565b9150612d1782613647565b604082019050919050565b6000612d2f601783613125565b9150612d3a82613696565b602082019050919050565b6000612d52601883613125565b9150612d5d826136bf565b602082019050919050565b612d7181613289565b82525050565b612d8081613293565b82525050565b6000602082019050612d9b6000830184612aba565b92915050565b6000604082019050612db66000830185612aba565b612dc36020830184612aba565b9392505050565b6000604082019050612ddf6000830185612aba565b612dec6020830184612d68565b9392505050565b600060c082019050612e086000830189612aba565b612e156020830188612d68565b612e226040830187612b36565b612e2f6060830186612b36565b612e3c6080830185612aba565b612e4960a0830184612d68565b979650505050505050565b6000602082019050612e696000830184612b27565b92915050565b60006020820190508181036000830152612e898184612b45565b905092915050565b60006020820190508181036000830152612eaa81612b7e565b9050919050565b60006020820190508181036000830152612eca81612ba1565b9050919050565b60006020820190508181036000830152612eea81612bc4565b9050919050565b60006020820190508181036000830152612f0a81612be7565b9050919050565b60006020820190508181036000830152612f2a81612c0a565b9050919050565b60006020820190508181036000830152612f4a81612c2d565b9050919050565b60006020820190508181036000830152612f6a81612c50565b9050919050565b60006020820190508181036000830152612f8a81612c73565b9050919050565b60006020820190508181036000830152612faa81612c96565b9050919050565b60006020820190508181036000830152612fca81612cb9565b9050919050565b60006020820190508181036000830152612fea81612cdc565b9050919050565b6000602082019050818103600083015261300a81612cff565b9050919050565b6000602082019050818103600083015261302a81612d22565b9050919050565b6000602082019050818103600083015261304a81612d45565b9050919050565b60006020820190506130666000830184612d68565b92915050565b600060a0820190506130816000830188612d68565b61308e6020830187612b36565b81810360408301526130a08186612ac9565b90506130af6060830185612aba565b6130bc6080830184612d68565b9695505050505050565b60006020820190506130db6000830184612d77565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061314182613289565b915061314c83613289565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613181576131806132e5565b5b828201905092915050565b600061319782613289565b91506131a283613289565b9250826131b2576131b1613314565b5b828204905092915050565b60006131c882613289565b91506131d383613289565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561320c5761320b6132e5565b5b828202905092915050565b600061322282613289565b915061322d83613289565b9250828210156132405761323f6132e5565b5b828203905092915050565b600061325682613269565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006132ab82613289565b9050919050565b60005b838110156132d05780820151818401526020810190506132b5565b838111156132df576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f596f75722062757920636f6f6c646f776e20686173206e6f742065787069726560008201527f642e000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f526174652063616e277420657863656564203530250000000000000000000000600082015250565b7f596f75722073656c6c20636f6f6c646f776e20686173206e6f7420657870697260008201527f65642e0000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b6136f18161324b565b81146136fc57600080fd5b50565b6137088161325d565b811461371357600080fd5b50565b61371f81613289565b811461372a57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209cddc5c347559d0c6c921780ee6b902ffa9760150bfef0c44ac582709d269caa64736f6c63430008040033

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

0000000000000000000000001a1cf09e78e81de0a67692f57f0d971c8dd0b0a9

-----Decoded View---------------
Arg [0] : FeeAddress (address): 0x1A1Cf09e78e81de0A67692f57F0d971c8Dd0b0a9

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000001a1cf09e78e81de0a67692f57f0d971c8dd0b0a9


Deployed Bytecode Sourcemap

3900:12595:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5942:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6794:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6219:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6963:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15913:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6128:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15519:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15745:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16125:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15251:190;;;;;;;;;;;;;:::i;:::-;;6322:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2979:148;;;;;;;;;;;;;:::i;:::-;;2765:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6033:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6468:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16021:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16257:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15048:191;;;;;;;;;;;;;:::i;:::-;;14907:133;;;;;;;;;;;;;:::i;:::-;;16391:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6643:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14130:769;;;;;;;;;;;;;:::i;:::-;;5942:83;5979:13;6012:5;;;;;;;;;;;;;;;;;6005:12;;5942:83;:::o;6794:161::-;6869:4;6886:39;6895:12;:10;:12::i;:::-;6909:7;6918:6;6886:8;:39::i;:::-;6943:4;6936:11;;6794:161;;;;:::o;6219:95::-;6272:7;4362:12;6292:14;;6219:95;:::o;6963:313::-;7061:4;7078:36;7088:6;7096:9;7107:6;7078:9;:36::i;:::-;7125:121;7134:6;7142:12;:10;:12::i;:::-;7156:89;7194:6;7156:89;;;;;;;;;;;;;;;;;:11;:19;7168:6;7156:19;;;;;;;;;;;;;;;:33;7176:12;:10;:12::i;:::-;7156:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7125:8;:121::i;:::-;7264:4;7257:11;;6963:313;;;;;:::o;15913:100::-;15957:4;15981:24;15999:4;15981:9;:24::i;:::-;15974:31;;15913:100;:::o;6128:83::-;6169:5;4626:1;6187:16;;6128:83;:::o;15519:218::-;15597:11;;;;;;;;;;;15581:27;;:12;:10;:12::i;:::-;:27;;;15573:36;;;;;;15635:2;15628:4;:9;15620:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;15685:4;15674:8;:15;;;;15705:24;15720:8;;15705:24;;;;;;:::i;:::-;;;;;;;;15519:218;:::o;15745:160::-;2902:12;:10;:12::i;:::-;2892:22;;:6;;;;;;;;;;:22;;;2884:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15836:5:::1;15817:16;;:24;;;;;;;;;;;;;;;;;;15857:40;15880:16;;;;;;;;;;;15857:40;;;;;;:::i;:::-;;;;;;;;15745:160:::0;:::o;16125:124::-;16180:4;16222:8;:15;16231:5;16222:15;;;;;;;;;;;;;;;:19;;;16204:15;:37;;;;:::i;:::-;16197:44;;16125:124;;;:::o;15251:190::-;15317:11;;;;;;;;;;;15301:27;;:12;:10;:12::i;:::-;:27;;;15293:36;;;;;;15340:26;15369:21;15340:50;;15401:32;15414:18;15401:12;:32::i;:::-;15251:190;:::o;6322:138::-;6388:7;6415:37;6435:7;:16;6443:7;6435:16;;;;;;;;;;;;;;;;6415:19;:37::i;:::-;6408:44;;6322:138;;;:::o;2979:148::-;2902:12;:10;:12::i;:::-;2892:22;;:6;;;;;;;;;;:22;;;2884:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3086:1:::1;3049:40;;3070:6;::::0;::::1;;;;;;;;3049:40;;;;;;;;;;;;3117:1;3100:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2979:148::o:0;2765:79::-;2803:7;2830:6;;;;;;;;;;;2823:13;;2765:79;:::o;6033:87::-;6072:13;6105:7;;;;;;;;;;;;;;;;;6098:14;;6033:87;:::o;6468:167::-;6546:4;6563:42;6573:12;:10;:12::i;:::-;6587:9;6598:6;6563:9;:42::i;:::-;6623:4;6616:11;;6468:167;;;;:::o;16021:96::-;16069:4;16093:16;;;;;;;;;;;16086:23;;16021:96;:::o;16257:126::-;16313:4;16355:8;:15;16364:5;16355:15;;;;;;;;;;;;;;;:20;;;16337:15;:38;;;;:::i;:::-;16330:45;;16257:126;;;:::o;15048:191::-;15114:11;;;;;;;;;;;15098:27;;:12;:10;:12::i;:::-;:27;;;15090:36;;;;;;15137:23;15163:24;15181:4;15163:9;:24::i;:::-;15137:50;;15198:33;15215:15;15198:16;:33::i;:::-;15048:191;:::o;14907:133::-;2902:12;:10;:12::i;:::-;2892:22;;:6;;;;;;;;;;:22;;;2884:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14972:4:::1;14958:11;;:18;;;;;;;;;;;;;;;;;;15020:11;15001:15;:31;;;;:::i;:::-;14987:11;:45;;;;14907:133::o:0;16391:101::-;16436:4;16460:24;16470:13;;;;;;;;;;;16460:9;:24::i;:::-;16453:31;;16391:101;:::o;6643:143::-;6724:7;6751:11;:18;6763:5;6751:18;;;;;;;;;;;;;;;:27;6770:7;6751:27;;;;;;;;;;;;;;;;6744:34;;6643:143;;;;:::o;14130:769::-;2902:12;:10;:12::i;:::-;2892:22;;:6;;;;;;;;;;:22;;;2884:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14195:11:::1;;;;;;;;;;;14194:12;14186:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;14244:35;14301:42;14244:100;;14373:16;14355:15;;:34;;;;;;;;;;;;;;;;;;14400:58;14417:4;14432:15;;;;;;;;;;;4362:12;14400:8;:58::i;:::-;14503:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14485:56;;;14550:4;14557:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14485:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14469:13;;:112;;;;;;;;;;;;;;;;;;14592:15;;;;;;;;;;;:31;;;14631:21;14662:4;14668:24;14686:4;14668:9;:24::i;:::-;14693:1;14695::::0;14697:7:::1;:5;:7::i;:::-;14705:15;14592:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14748:21;14732:13;:37;;;;14794:15;14780:11;:29;;;;14827:13;;;;;;;;;;;14820:29;;;14858:15;;;;;;;;;;;14876:14;14820:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2962:1;14130:769::o:0;174:98::-;227:7;254:10;247:17;;174:98;:::o;7891:335::-;8001:1;7984:19;;:5;:19;;;;7976:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8082:1;8063:21;;:7;:21;;;;8055:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8164:6;8134:11;:18;8146:5;8134:18;;;;;;;;;;;;;;;:27;8153:7;8134:27;;;;;;;;;;;;;;;:36;;;;8202:7;8186:32;;8195:5;8186:32;;;8211:6;8186:32;;;;;;:::i;:::-;;;;;;;;7891:335;;;:::o;8234:2411::-;8338:1;8322:18;;:4;:18;;;;8314:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8415:1;8401:16;;:2;:16;;;;8393:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8485:1;8476:6;:10;8468:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8556:7;:5;:7::i;:::-;8548:15;;:4;:15;;;;:32;;;;;8573:7;:5;:7::i;:::-;8567:13;;:2;:13;;;;8548:32;8545:1896;;;8600:16;;;;;;;;;;;8597:168;;;8641:8;:20;8650:10;8641:20;;;;;;;;;;;;;;;:27;;;;;;;;;;;;8637:113;;8716:14;;;;;;;;8721:1;8716:14;;;;8723:1;8716:14;;;;8725:4;8716:14;;;;;8693:8;:20;8702:10;8693:20;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8637:113;8597:168;8812:13;;;;;;;;;;;8804:21;;:4;:21;;;:55;;;;;8843:15;;;;;;;;;;;8829:30;;:2;:30;;;;8804:55;:82;;;;;8864:18;:22;8883:2;8864:22;;;;;;;;;;;;;;;;;;;;;;;;;8863:23;8804:82;8801:715;;;8915:11;;;;;;;;;;;8907:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;8985:1;8974:8;:12;;;;9008:16;;;;;;;;;;;9005:364;;;9066:15;9052:11;;:29;9049:301;;;9128:13;;9118:6;:23;;9110:32;;;;;;9196:15;9177:8;:12;9186:2;9177:12;;;;;;;;;;;;;;;:16;;;:34;9169:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;9315:10;9296:15;:30;;;;:::i;:::-;9277:8;:12;9286:2;9277:12;;;;;;;;;;;;;;;:16;;:49;;;;9049:301;9005:364;9390:16;;;;;;;;;;;9387:114;;;9470:10;9451:15;:30;;;;:::i;:::-;9431:8;:12;9440:2;9431:12;;;;;;;;;;;;;;;:17;;:50;;;;9387:114;8801:715;9530:28;9561:24;9579:4;9561:9;:24::i;:::-;9530:55;;9627:6;;;;;;;;;;;9626:7;:32;;;;;9645:13;;;;;;;;;;;9637:21;;:4;:21;;;;9626:32;:47;;;;;9662:11;;;;;;;;;;;9626:47;9623:807;;;9705:2;9694:8;:13;;;;9729:16;;;;;;;;;;;9726:149;;;9800:15;9778:8;:14;9787:4;9778:14;;;;;;;;;;;;;;;:19;;;:37;9770:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;9726:149;9921:1;9898:20;:24;9895:328;;;9973:47;10016:3;9973:38;10002:8;;9973:24;9983:13;;;;;;;;;;;9973:9;:24::i;:::-;:28;;:38;;;;:::i;:::-;:42;;:47;;;;:::i;:::-;9950:20;:70;9947:196;;;10072:47;10115:3;10072:38;10101:8;;10072:24;10082:13;;;;;;;;;;;10072:9;:24::i;:::-;:28;;:38;;;;:::i;:::-;:42;;:47;;;;:::i;:::-;10049:70;;9947:196;10165:38;10182:20;10165:16;:38::i;:::-;9895:328;10241:26;10270:21;10241:50;;10334:1;10313:18;:22;10310:105;;;10360:35;10373:21;10360:12;:35::i;:::-;10310:105;9623:807;;8545:1896;;10451:12;10466:4;10451:19;;10486:18;:24;10505:4;10486:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10514:18;:22;10533:2;10514:22;;;;;;;;;;;;;;;;;;;;;;;;;10486:50;10483:96;;;10562:5;10552:15;;10483:96;10599:38;10614:4;10619:2;10622:6;10629:7;10599:14;:38::i;:::-;8234:2411;;;;:::o;1311:190::-;1397:7;1430:1;1425;:6;;1433:12;1417:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1457:9;1473:1;1469;:5;;;;:::i;:::-;1457:17;;1492:1;1485:8;;;1311:190;;;;;:::o;11152:93::-;11209:11;;;;;;;;;;;:20;;:28;11230:6;11209:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11152:93;:::o;7284:254::-;7351:7;7390;;7379;:18;;7371:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7455:19;7478:10;:8;:10::i;:::-;7455:33;;7506:24;7518:11;7506:7;:11;;:24;;;;:::i;:::-;7499:31;;;7284:254;;;:::o;10653:483::-;5550:4;5541:6;;:13;;;;;;;;;;;;;;;;;;10731:21:::1;10769:1;10755:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10731:40;;10800:4;10782;10787:1;10782:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;10826:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10816:4;10821:1;10816:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;10859:62;10876:4;10891:15;;;;;;;;;;;10909:11;10859:8;:62::i;:::-;10932:15;;;;;;;;;;;:66;;;11013:11;11039:1;11055:4;11082;11102:15;10932:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5565:1;5586:5:::0;5577:6;;:14;;;;;;;;;;;;;;;;;;10653:483;:::o;1509:245::-;1567:7;1595:1;1590;:6;1587:46;;;1620:1;1613:8;;;;1587:46;1643:9;1659:1;1655;:5;;;;:::i;:::-;1643:17;;1688:1;1683;1679;:5;;;;:::i;:::-;:10;1671:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1745:1;1738:8;;;1509:245;;;;;:::o;1762:132::-;1820:7;1847:39;1851:1;1854;1847:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1840:46;;1762:132;;;;:::o;11257:263::-;11369:7;11365:40;;11391:14;:12;:14::i;:::-;11365:40;11416:44;11434:6;11442:9;11453:6;11416:17;:44::i;:::-;11475:7;11471:41;;11497:15;:13;:15::i;:::-;11471:41;11257:263;;;;:::o;12861:163::-;12902:7;12923:15;12940;12959:19;:17;:19::i;:::-;12922:56;;;;12996:20;13008:7;12996;:11;;:20;;;;:::i;:::-;12989:27;;;;12861:163;:::o;1902:189::-;1988:7;2020:1;2016;:5;2023:12;2008:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2047:9;2063:1;2059;:5;;;;:::i;:::-;2047:17;;2082:1;2075:8;;;1902:189;;;;;:::o;7546:210::-;7603:1;7592:7;;:12;:29;;;;;7620:1;7608:8;;:13;7592:29;7589:41;;;7623:7;;7589:41;7658:7;;7640:15;:25;;;;7695:8;;7676:16;:27;;;;7724:1;7714:7;:11;;;;7747:1;7736:8;:12;;;;7546:210;:::o;11528:490::-;11627:15;11644:23;11669:12;11683:23;11708:12;11722:13;11739:19;11750:7;11739:10;:19::i;:::-;11626:132;;;;;;;;;;;;11787:28;11807:7;11787;:15;11795:6;11787:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;11769:7;:15;11777:6;11769:15;;;;;;;;;;;;;;;:46;;;;11847:39;11870:15;11847:7;:18;11855:9;11847:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;11826:7;:18;11834:9;11826:18;;;;;;;;;;;;;;;:60;;;;11900:16;11910:5;11900:9;:16::i;:::-;11927:23;11939:4;11945;11927:11;:23::i;:::-;11983:9;11966:44;;11975:6;11966:44;;;11994:15;11966:44;;;;;;:::i;:::-;;;;;;;;11528:490;;;;;;;;;:::o;7768:115::-;7822:15;;7812:7;:25;;;;7859:16;;7848:8;:27;;;;7768:115::o;13032:255::-;13082:7;13091;13111:15;13129:7;;13111:25;;13147:15;4362:12;13147:25;;13196:20;4362:12;13196:7;;:11;;:20;;;;:::i;:::-;13186:7;:30;13183:60;;;13226:7;;4362:12;13218:25;;;;;;;;13183:60;13262:7;13271;13254:25;;;;;;13032:255;;;:::o;12026:468::-;12085:7;12094;12103;12112;12121;12130;12151:23;12176:12;12190:13;12207:39;12219:7;12228;;12237:8;;12207:11;:39::i;:::-;12150:96;;;;;;12257:19;12280:10;:8;:10::i;:::-;12257:33;;12302:15;12319:23;12344:12;12360:46;12372:7;12381:4;12387:5;12394:11;12360;:46::i;:::-;12301:105;;;;;;12425:7;12434:15;12451:4;12457:15;12474:4;12480:5;12417:69;;;;;;;;;;;;;;;;;;;12026:468;;;;;;;:::o;1167:136::-;1225:7;1252:43;1256:1;1259;1252:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1245:50;;1167:136;;;;:::o;980:179::-;1038:7;1058:9;1074:1;1070;:5;;;;:::i;:::-;1058:17;;1099:1;1094;:6;;1086:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1150:1;1143:8;;;980:179;;;;:::o;13712:214::-;13765:19;13788:10;:8;:10::i;:::-;13765:33;;13809:13;13825:22;13835:11;13825:5;:9;;:22;;;;:::i;:::-;13809:38;;13885:33;13912:5;13885:7;:22;13901:4;13885:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13860:7;:22;13876:4;13860:22;;;;;;;;;;;;;;;:58;;;;13712:214;;;:::o;13934:147::-;14012:17;14024:4;14012:7;;:11;;:17;;;;:::i;:::-;14002:7;:27;;;;14053:20;14068:4;14053:10;;:14;;:20;;;;:::i;:::-;14040:10;:33;;;;13934:147;;:::o;12502:351::-;12595:7;12604;12613;12633:12;12648:28;12672:3;12648:19;12660:6;12648:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;12633:43;;12687:13;12703:29;12728:3;12703:20;12715:7;12703;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;12687:45;;12743:23;12769:28;12791:5;12769:17;12781:4;12769:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;12743:54;;12816:15;12833:4;12839:5;12808:37;;;;;;;;;12502:351;;;;;;;:::o;13295:409::-;13405:7;13414;13423;13443:15;13461:24;13473:11;13461:7;:11;;:24;;;;:::i;:::-;13443:42;;13496:12;13511:21;13520:11;13511:4;:8;;:21;;;;:::i;:::-;13496:36;;13543:13;13559:22;13569:11;13559:5;:9;;:22;;;;:::i;:::-;13543:38;;13592:23;13618:28;13640:5;13618:17;13630:4;13618:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;13592:54;;13665:7;13674:15;13691:4;13657:39;;;;;;;;;;13295:409;;;;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;350:84;;;;:::o;440:137::-;494:5;525:6;519:13;510:22;;541:30;565:5;541:30;:::i;:::-;500:77;;;;:::o;583:139::-;629:5;667:6;654:20;645:29;;683:33;710:5;683:33;:::i;:::-;635:87;;;;:::o;728:143::-;785:5;816:6;810:13;801:22;;832:33;859:5;832:33;:::i;:::-;791:80;;;;:::o;877:262::-;936:6;985:2;973:9;964:7;960:23;956:32;953:2;;;1001:1;998;991:12;953:2;1044:1;1069:53;1114:7;1105:6;1094:9;1090:22;1069:53;:::i;:::-;1059:63;;1015:117;943:196;;;;:::o;1145:284::-;1215:6;1264:2;1252:9;1243:7;1239:23;1235:32;1232:2;;;1280:1;1277;1270:12;1232:2;1323:1;1348:64;1404:7;1395:6;1384:9;1380:22;1348:64;:::i;:::-;1338:74;;1294:128;1222:207;;;;:::o;1435:407::-;1503:6;1511;1560:2;1548:9;1539:7;1535:23;1531:32;1528:2;;;1576:1;1573;1566:12;1528:2;1619:1;1644:53;1689:7;1680:6;1669:9;1665:22;1644:53;:::i;:::-;1634:63;;1590:117;1746:2;1772:53;1817:7;1808:6;1797:9;1793:22;1772:53;:::i;:::-;1762:63;;1717:118;1518:324;;;;;:::o;1848:552::-;1925:6;1933;1941;1990:2;1978:9;1969:7;1965:23;1961:32;1958:2;;;2006:1;2003;1996:12;1958:2;2049:1;2074:53;2119:7;2110:6;2099:9;2095:22;2074:53;:::i;:::-;2064:63;;2020:117;2176:2;2202:53;2247:7;2238:6;2227:9;2223:22;2202:53;:::i;:::-;2192:63;;2147:118;2304:2;2330:53;2375:7;2366:6;2355:9;2351:22;2330:53;:::i;:::-;2320:63;;2275:118;1948:452;;;;;:::o;2406:407::-;2474:6;2482;2531:2;2519:9;2510:7;2506:23;2502:32;2499:2;;;2547:1;2544;2537:12;2499:2;2590:1;2615:53;2660:7;2651:6;2640:9;2636:22;2615:53;:::i;:::-;2605:63;;2561:117;2717:2;2743:53;2788:7;2779:6;2768:9;2764:22;2743:53;:::i;:::-;2733:63;;2688:118;2489:324;;;;;:::o;2819:256::-;2875:6;2924:2;2912:9;2903:7;2899:23;2895:32;2892:2;;;2940:1;2937;2930:12;2892:2;2983:1;3008:50;3050:7;3041:6;3030:9;3026:22;3008:50;:::i;:::-;2998:60;;2954:114;2882:193;;;;:::o;3081:278::-;3148:6;3197:2;3185:9;3176:7;3172:23;3168:32;3165:2;;;3213:1;3210;3203:12;3165:2;3256:1;3281:61;3334:7;3325:6;3314:9;3310:22;3281:61;:::i;:::-;3271:71;;3227:125;3155:204;;;;:::o;3365:262::-;3424:6;3473:2;3461:9;3452:7;3448:23;3444:32;3441:2;;;3489:1;3486;3479:12;3441:2;3532:1;3557:53;3602:7;3593:6;3582:9;3578:22;3557:53;:::i;:::-;3547:63;;3503:117;3431:196;;;;:::o;3633:596::-;3721:6;3729;3737;3786:2;3774:9;3765:7;3761:23;3757:32;3754:2;;;3802:1;3799;3792:12;3754:2;3845:1;3870:64;3926:7;3917:6;3906:9;3902:22;3870:64;:::i;:::-;3860:74;;3816:128;3983:2;4009:64;4065:7;4056:6;4045:9;4041:22;4009:64;:::i;:::-;3999:74;;3954:129;4122:2;4148:64;4204:7;4195:6;4184:9;4180:22;4148:64;:::i;:::-;4138:74;;4093:129;3744:485;;;;;:::o;4235:179::-;4304:10;4325:46;4367:3;4359:6;4325:46;:::i;:::-;4403:4;4398:3;4394:14;4380:28;;4315:99;;;;:::o;4420:108::-;4497:24;4515:5;4497:24;:::i;:::-;4492:3;4485:37;4475:53;;:::o;4534:118::-;4621:24;4639:5;4621:24;:::i;:::-;4616:3;4609:37;4599:53;;:::o;4688:732::-;4807:3;4836:54;4884:5;4836:54;:::i;:::-;4906:86;4985:6;4980:3;4906:86;:::i;:::-;4899:93;;5016:56;5066:5;5016:56;:::i;:::-;5095:7;5126:1;5111:284;5136:6;5133:1;5130:13;5111:284;;;5212:6;5206:13;5239:63;5298:3;5283:13;5239:63;:::i;:::-;5232:70;;5325:60;5378:6;5325:60;:::i;:::-;5315:70;;5171:224;5158:1;5155;5151:9;5146:14;;5111:284;;;5115:14;5411:3;5404:10;;4812:608;;;;;;;:::o;5426:109::-;5507:21;5522:5;5507:21;:::i;:::-;5502:3;5495:34;5485:50;;:::o;5541:147::-;5636:45;5675:5;5636:45;:::i;:::-;5631:3;5624:58;5614:74;;:::o;5694:364::-;5782:3;5810:39;5843:5;5810:39;:::i;:::-;5865:71;5929:6;5924:3;5865:71;:::i;:::-;5858:78;;5945:52;5990:6;5985:3;5978:4;5971:5;5967:16;5945:52;:::i;:::-;6022:29;6044:6;6022:29;:::i;:::-;6017:3;6013:39;6006:46;;5786:272;;;;;:::o;6064:366::-;6206:3;6227:67;6291:2;6286:3;6227:67;:::i;:::-;6220:74;;6303:93;6392:3;6303:93;:::i;:::-;6421:2;6416:3;6412:12;6405:19;;6210:220;;;:::o;6436:366::-;6578:3;6599:67;6663:2;6658:3;6599:67;:::i;:::-;6592:74;;6675:93;6764:3;6675:93;:::i;:::-;6793:2;6788:3;6784:12;6777:19;;6582:220;;;:::o;6808:366::-;6950:3;6971:67;7035:2;7030:3;6971:67;:::i;:::-;6964:74;;7047:93;7136:3;7047:93;:::i;:::-;7165:2;7160:3;7156:12;7149:19;;6954:220;;;:::o;7180:366::-;7322:3;7343:67;7407:2;7402:3;7343:67;:::i;:::-;7336:74;;7419:93;7508:3;7419:93;:::i;:::-;7537:2;7532:3;7528:12;7521:19;;7326:220;;;:::o;7552:366::-;7694:3;7715:67;7779:2;7774:3;7715:67;:::i;:::-;7708:74;;7791:93;7880:3;7791:93;:::i;:::-;7909:2;7904:3;7900:12;7893:19;;7698:220;;;:::o;7924:366::-;8066:3;8087:67;8151:2;8146:3;8087:67;:::i;:::-;8080:74;;8163:93;8252:3;8163:93;:::i;:::-;8281:2;8276:3;8272:12;8265:19;;8070:220;;;:::o;8296:366::-;8438:3;8459:67;8523:2;8518:3;8459:67;:::i;:::-;8452:74;;8535:93;8624:3;8535:93;:::i;:::-;8653:2;8648:3;8644:12;8637:19;;8442:220;;;:::o;8668:366::-;8810:3;8831:67;8895:2;8890:3;8831:67;:::i;:::-;8824:74;;8907:93;8996:3;8907:93;:::i;:::-;9025:2;9020:3;9016:12;9009:19;;8814:220;;;:::o;9040:366::-;9182:3;9203:67;9267:2;9262:3;9203:67;:::i;:::-;9196:74;;9279:93;9368:3;9279:93;:::i;:::-;9397:2;9392:3;9388:12;9381:19;;9186:220;;;:::o;9412:366::-;9554:3;9575:67;9639:2;9634:3;9575:67;:::i;:::-;9568:74;;9651:93;9740:3;9651:93;:::i;:::-;9769:2;9764:3;9760:12;9753:19;;9558:220;;;:::o;9784:366::-;9926:3;9947:67;10011:2;10006:3;9947:67;:::i;:::-;9940:74;;10023:93;10112:3;10023:93;:::i;:::-;10141:2;10136:3;10132:12;10125:19;;9930:220;;;:::o;10156:366::-;10298:3;10319:67;10383:2;10378:3;10319:67;:::i;:::-;10312:74;;10395:93;10484:3;10395:93;:::i;:::-;10513:2;10508:3;10504:12;10497:19;;10302:220;;;:::o;10528:366::-;10670:3;10691:67;10755:2;10750:3;10691:67;:::i;:::-;10684:74;;10767:93;10856:3;10767:93;:::i;:::-;10885:2;10880:3;10876:12;10869:19;;10674:220;;;:::o;10900:366::-;11042:3;11063:67;11127:2;11122:3;11063:67;:::i;:::-;11056:74;;11139:93;11228:3;11139:93;:::i;:::-;11257:2;11252:3;11248:12;11241:19;;11046:220;;;:::o;11272:118::-;11359:24;11377:5;11359:24;:::i;:::-;11354:3;11347:37;11337:53;;:::o;11396:112::-;11479:22;11495:5;11479:22;:::i;:::-;11474:3;11467:35;11457:51;;:::o;11514:222::-;11607:4;11645:2;11634:9;11630:18;11622:26;;11658:71;11726:1;11715:9;11711:17;11702:6;11658:71;:::i;:::-;11612:124;;;;:::o;11742:332::-;11863:4;11901:2;11890:9;11886:18;11878:26;;11914:71;11982:1;11971:9;11967:17;11958:6;11914:71;:::i;:::-;11995:72;12063:2;12052:9;12048:18;12039:6;11995:72;:::i;:::-;11868:206;;;;;:::o;12080:332::-;12201:4;12239:2;12228:9;12224:18;12216:26;;12252:71;12320:1;12309:9;12305:17;12296:6;12252:71;:::i;:::-;12333:72;12401:2;12390:9;12386:18;12377:6;12333:72;:::i;:::-;12206:206;;;;;:::o;12418:807::-;12667:4;12705:3;12694:9;12690:19;12682:27;;12719:71;12787:1;12776:9;12772:17;12763:6;12719:71;:::i;:::-;12800:72;12868:2;12857:9;12853:18;12844:6;12800:72;:::i;:::-;12882:80;12958:2;12947:9;12943:18;12934:6;12882:80;:::i;:::-;12972;13048:2;13037:9;13033:18;13024:6;12972:80;:::i;:::-;13062:73;13130:3;13119:9;13115:19;13106:6;13062:73;:::i;:::-;13145;13213:3;13202:9;13198:19;13189:6;13145:73;:::i;:::-;12672:553;;;;;;;;;:::o;13231:210::-;13318:4;13356:2;13345:9;13341:18;13333:26;;13369:65;13431:1;13420:9;13416:17;13407:6;13369:65;:::i;:::-;13323:118;;;;:::o;13447:313::-;13560:4;13598:2;13587:9;13583:18;13575:26;;13647:9;13641:4;13637:20;13633:1;13622:9;13618:17;13611:47;13675:78;13748:4;13739:6;13675:78;:::i;:::-;13667:86;;13565:195;;;;:::o;13766:419::-;13932:4;13970:2;13959:9;13955:18;13947:26;;14019:9;14013:4;14009:20;14005:1;13994:9;13990:17;13983:47;14047:131;14173:4;14047:131;:::i;:::-;14039:139;;13937:248;;;:::o;14191:419::-;14357:4;14395:2;14384:9;14380:18;14372:26;;14444:9;14438:4;14434:20;14430:1;14419:9;14415:17;14408:47;14472:131;14598:4;14472:131;:::i;:::-;14464:139;;14362:248;;;:::o;14616:419::-;14782:4;14820:2;14809:9;14805:18;14797:26;;14869:9;14863:4;14859:20;14855:1;14844:9;14840:17;14833:47;14897:131;15023:4;14897:131;:::i;:::-;14889:139;;14787:248;;;:::o;15041:419::-;15207:4;15245:2;15234:9;15230:18;15222:26;;15294:9;15288:4;15284:20;15280:1;15269:9;15265:17;15258:47;15322:131;15448:4;15322:131;:::i;:::-;15314:139;;15212:248;;;:::o;15466:419::-;15632:4;15670:2;15659:9;15655:18;15647:26;;15719:9;15713:4;15709:20;15705:1;15694:9;15690:17;15683:47;15747:131;15873:4;15747:131;:::i;:::-;15739:139;;15637:248;;;:::o;15891:419::-;16057:4;16095:2;16084:9;16080:18;16072:26;;16144:9;16138:4;16134:20;16130:1;16119:9;16115:17;16108:47;16172:131;16298:4;16172:131;:::i;:::-;16164:139;;16062:248;;;:::o;16316:419::-;16482:4;16520:2;16509:9;16505:18;16497:26;;16569:9;16563:4;16559:20;16555:1;16544:9;16540:17;16533:47;16597:131;16723:4;16597:131;:::i;:::-;16589:139;;16487:248;;;:::o;16741:419::-;16907:4;16945:2;16934:9;16930:18;16922:26;;16994:9;16988:4;16984:20;16980:1;16969:9;16965:17;16958:47;17022:131;17148:4;17022:131;:::i;:::-;17014:139;;16912:248;;;:::o;17166:419::-;17332:4;17370:2;17359:9;17355:18;17347:26;;17419:9;17413:4;17409:20;17405:1;17394:9;17390:17;17383:47;17447:131;17573:4;17447:131;:::i;:::-;17439:139;;17337:248;;;:::o;17591:419::-;17757:4;17795:2;17784:9;17780:18;17772:26;;17844:9;17838:4;17834:20;17830:1;17819:9;17815:17;17808:47;17872:131;17998:4;17872:131;:::i;:::-;17864:139;;17762:248;;;:::o;18016:419::-;18182:4;18220:2;18209:9;18205:18;18197:26;;18269:9;18263:4;18259:20;18255:1;18244:9;18240:17;18233:47;18297:131;18423:4;18297:131;:::i;:::-;18289:139;;18187:248;;;:::o;18441:419::-;18607:4;18645:2;18634:9;18630:18;18622:26;;18694:9;18688:4;18684:20;18680:1;18669:9;18665:17;18658:47;18722:131;18848:4;18722:131;:::i;:::-;18714:139;;18612:248;;;:::o;18866:419::-;19032:4;19070:2;19059:9;19055:18;19047:26;;19119:9;19113:4;19109:20;19105:1;19094:9;19090:17;19083:47;19147:131;19273:4;19147:131;:::i;:::-;19139:139;;19037:248;;;:::o;19291:419::-;19457:4;19495:2;19484:9;19480:18;19472:26;;19544:9;19538:4;19534:20;19530:1;19519:9;19515:17;19508:47;19572:131;19698:4;19572:131;:::i;:::-;19564:139;;19462:248;;;:::o;19716:222::-;19809:4;19847:2;19836:9;19832:18;19824:26;;19860:71;19928:1;19917:9;19913:17;19904:6;19860:71;:::i;:::-;19814:124;;;;:::o;19944:831::-;20207:4;20245:3;20234:9;20230:19;20222:27;;20259:71;20327:1;20316:9;20312:17;20303:6;20259:71;:::i;:::-;20340:80;20416:2;20405:9;20401:18;20392:6;20340:80;:::i;:::-;20467:9;20461:4;20457:20;20452:2;20441:9;20437:18;20430:48;20495:108;20598:4;20589:6;20495:108;:::i;:::-;20487:116;;20613:72;20681:2;20670:9;20666:18;20657:6;20613:72;:::i;:::-;20695:73;20763:3;20752:9;20748:19;20739:6;20695:73;:::i;:::-;20212:563;;;;;;;;:::o;20781:214::-;20870:4;20908:2;20897:9;20893:18;20885:26;;20921:67;20985:1;20974:9;20970:17;20961:6;20921:67;:::i;:::-;20875:120;;;;:::o;21001:132::-;21068:4;21091:3;21083:11;;21121:4;21116:3;21112:14;21104:22;;21073:60;;;:::o;21139:114::-;21206:6;21240:5;21234:12;21224:22;;21213:40;;;:::o;21259:99::-;21311:6;21345:5;21339:12;21329:22;;21318:40;;;:::o;21364:113::-;21434:4;21466;21461:3;21457:14;21449:22;;21439:38;;;:::o;21483:184::-;21582:11;21616:6;21611:3;21604:19;21656:4;21651:3;21647:14;21632:29;;21594:73;;;;:::o;21673:169::-;21757:11;21791:6;21786:3;21779:19;21831:4;21826:3;21822:14;21807:29;;21769:73;;;;:::o;21848:305::-;21888:3;21907:20;21925:1;21907:20;:::i;:::-;21902:25;;21941:20;21959:1;21941:20;:::i;:::-;21936:25;;22095:1;22027:66;22023:74;22020:1;22017:81;22014:2;;;22101:18;;:::i;:::-;22014:2;22145:1;22142;22138:9;22131:16;;21892:261;;;;:::o;22159:185::-;22199:1;22216:20;22234:1;22216:20;:::i;:::-;22211:25;;22250:20;22268:1;22250:20;:::i;:::-;22245:25;;22289:1;22279:2;;22294:18;;:::i;:::-;22279:2;22336:1;22333;22329:9;22324:14;;22201:143;;;;:::o;22350:348::-;22390:7;22413:20;22431:1;22413:20;:::i;:::-;22408:25;;22447:20;22465:1;22447:20;:::i;:::-;22442:25;;22635:1;22567:66;22563:74;22560:1;22557:81;22552:1;22545:9;22538:17;22534:105;22531:2;;;22642:18;;:::i;:::-;22531:2;22690:1;22687;22683:9;22672:20;;22398:300;;;;:::o;22704:191::-;22744:4;22764:20;22782:1;22764:20;:::i;:::-;22759:25;;22798:20;22816:1;22798:20;:::i;:::-;22793:25;;22837:1;22834;22831:8;22828:2;;;22842:18;;:::i;:::-;22828:2;22887:1;22884;22880:9;22872:17;;22749:146;;;;:::o;22901:96::-;22938:7;22967:24;22985:5;22967:24;:::i;:::-;22956:35;;22946:51;;;:::o;23003:90::-;23037:7;23080:5;23073:13;23066:21;23055:32;;23045:48;;;:::o;23099:126::-;23136:7;23176:42;23169:5;23165:54;23154:65;;23144:81;;;:::o;23231:77::-;23268:7;23297:5;23286:16;;23276:32;;;:::o;23314:86::-;23349:7;23389:4;23382:5;23378:16;23367:27;;23357:43;;;:::o;23406:121::-;23464:9;23497:24;23515:5;23497:24;:::i;:::-;23484:37;;23474:53;;;:::o;23533:307::-;23601:1;23611:113;23625:6;23622:1;23619:13;23611:113;;;23710:1;23705:3;23701:11;23695:18;23691:1;23686:3;23682:11;23675:39;23647:2;23644:1;23640:10;23635:15;;23611:113;;;23742:6;23739:1;23736:13;23733:2;;;23822:1;23813:6;23808:3;23804:16;23797:27;23733:2;23582:258;;;;:::o;23846:180::-;23894:77;23891:1;23884:88;23991:4;23988:1;23981:15;24015:4;24012:1;24005:15;24032:180;24080:77;24077:1;24070:88;24177:4;24174:1;24167:15;24201:4;24198:1;24191:15;24218:102;24259:6;24310:2;24306:7;24301:2;24294:5;24290:14;24286:28;24276:38;;24266:54;;;:::o;24326:222::-;24466:34;24462:1;24454:6;24450:14;24443:58;24535:5;24530:2;24522:6;24518:15;24511:30;24432:116;:::o;24554:229::-;24694:34;24690:1;24682:6;24678:14;24671:58;24763:12;24758:2;24750:6;24746:15;24739:37;24660:123;:::o;24789:221::-;24929:34;24925:1;24917:6;24913:14;24906:58;24998:4;24993:2;24985:6;24981:15;24974:29;24895:115;:::o;25016:221::-;25156:34;25152:1;25144:6;25140:14;25133:58;25225:4;25220:2;25212:6;25208:15;25201:29;25122:115;:::o;25243:177::-;25383:29;25379:1;25371:6;25367:14;25360:53;25349:71;:::o;25426:171::-;25566:23;25562:1;25554:6;25550:14;25543:47;25532:65;:::o;25603:222::-;25743:34;25739:1;25731:6;25727:14;25720:58;25812:5;25807:2;25799:6;25795:15;25788:30;25709:116;:::o;25831:220::-;25971:34;25967:1;25959:6;25955:14;25948:58;26040:3;26035:2;26027:6;26023:15;26016:28;25937:114;:::o;26057:182::-;26197:34;26193:1;26185:6;26181:14;26174:58;26163:76;:::o;26245:228::-;26385:34;26381:1;26373:6;26369:14;26362:58;26454:11;26449:2;26441:6;26437:15;26430:36;26351:122;:::o;26479:224::-;26619:34;26615:1;26607:6;26603:14;26596:58;26688:7;26683:2;26675:6;26671:15;26664:32;26585:118;:::o;26709:223::-;26849:34;26845:1;26837:6;26833:14;26826:58;26918:6;26913:2;26905:6;26901:15;26894:31;26815:117;:::o;26938:173::-;27078:25;27074:1;27066:6;27062:14;27055:49;27044:67;:::o;27117:174::-;27257:26;27253:1;27245:6;27241:14;27234:50;27223:68;:::o;27297:122::-;27370:24;27388:5;27370:24;:::i;:::-;27363:5;27360:35;27350:2;;27409:1;27406;27399:12;27350:2;27340:79;:::o;27425:116::-;27495:21;27510:5;27495:21;:::i;:::-;27488:5;27485:32;27475:2;;27531:1;27528;27521:12;27475:2;27465:76;:::o;27547:122::-;27620:24;27638:5;27620:24;:::i;:::-;27613:5;27610:35;27600:2;;27659:1;27656;27649:12;27600:2;27590:79;:::o

Swarm Source

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