ETH Price: $3,313.64 (+1.97%)
Gas: 3 Gwei

Token

Witcher Inu (WINU)
 

Overview

Max Total Supply

100,000,000,000 WINU

Holders

479

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
2,268,803.173615644 WINU

Value
$0.00
0x56d2f4469c86f57b7c732e24544e3e08ed67b30f
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:
WITCHERINU

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-12-17
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.10;

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

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

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

contract WITCHERINU 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 => bool) private _isBot;

    uint256 private constant _MAX = ~uint256(0);
    uint256 private constant _tTotal = 1e11 * 10**9;
    uint256 private _rTotal = (_MAX - (_MAX % _tTotal));
    uint256 private _tFeeTotal;
    
    string private constant _name = "Witcher Inu";
    string private constant _symbol = "WINU";
    
    uint private constant _decimals = 9;
    uint256 private _teamFee = 5;
    uint256 private _previousteamFee = _teamFee;

    address payable private _feeAddress;

    // Uniswap Pair
    IUniswapV2Router02 private _uniswapV2Router;
    address private _uniswapV2Pair;

    bool private _initialized = false;
    bool private _noTaxMode = false;
    bool private _inSwap = false;
    bool private _tradingOpen = false;
    uint256 private _launchTime;
    uint256 private _initialLimitDuration;

    modifier lockTheSwap() {
        _inSwap = true;
        _;
        _inSwap = false;
    }

    modifier handleFees(bool takeFee) {
        if (!takeFee) _removeAllFees();
        _;
        if (!takeFee) _restoreAllFees();
    }
    
    constructor () {
        _rOwned[_msgSender()] = _rTotal;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[payable(0x000000000000000000000000000000000000dEaD)] = 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 (uint) {
        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 _removeAllFees() private {
        require(_teamFee > 0);

        _previousteamFee = _teamFee;
        _teamFee = 0;
    }
    
    function _restoreAllFees() private {
        _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");
        require(!_isBot[from], "Your address has been marked as a bot, please contact staff to appeal your case.");
        
        bool takeFee = false;
        if (
            !_isExcludedFromFee[from] 
            && !_isExcludedFromFee[to] 
            && !_noTaxMode 
            && (from == _uniswapV2Pair || to == _uniswapV2Pair)
        ) {
            require(_tradingOpen, 'Trading has not yet been opened.');
            takeFee = true;

            if (from == _uniswapV2Pair && to != address(_uniswapV2Router) && _initialLimitDuration > block.timestamp) {
                uint walletBalance = balanceOf(address(to));
                require(amount.add(walletBalance) <= _tTotal.mul(5).div(100));
            }

            if (block.timestamp == _launchTime) _isBot[to] = true;

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!_inSwap && from != _uniswapV2Pair) {
                if (contractTokenBalance > 0) {
                    if (contractTokenBalance > balanceOf(_uniswapV2Pair).mul(5).div(100))
                        contractTokenBalance = balanceOf(_uniswapV2Pair).mul(5).div(100);
                    
                    _swapTokensForEth(contractTokenBalance);
                }
            }
        }
                
        _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 _tokenTransfer(address sender, address recipient, uint256 tAmount, bool takeFee) private handleFees(takeFee) {
        (uint256 rAmount, uint256 rTransferAmount, uint256 tTransferAmount, uint256 tTeam) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 

        _takeTeam(tTeam);
        emit Transfer(sender, recipient, tTransferAmount);
    }

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

    function _getTValues(uint256 tAmount, uint256 TeamFee) private pure returns (uint256, uint256) {
        uint256 tTeam = tAmount.mul(TeamFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tTeam);
        return (tTransferAmount, 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 tTeam, uint256 currentRate) private pure returns (uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rTeam);
        return (rAmount, rTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate =  _getRate();
        uint256 rTeam = tTeam.mul(currentRate);

        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }
    
    function initContract(address payable feeAddress) external onlyOwner() {
        require(!_initialized,"Contract has already been initialized");
        IUniswapV2Router02 uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());

        _uniswapV2Router = uniswapV2Router;

        _feeAddress = feeAddress;
        _isExcludedFromFee[_feeAddress] = true;

        _initialized = true;
    }

    function openTrading() external onlyOwner() {
        require(_initialized, "Contract must be initialized first");
        _tradingOpen = true;
        _launchTime = block.timestamp;
        _initialLimitDuration = _launchTime + (60 minutes);
    }

    function setFeeWallet(address payable feeWalletAddress) external onlyOwner() {
        _isExcludedFromFee[_feeAddress] = false;

        _feeAddress = feeWalletAddress;
        _isExcludedFromFee[_feeAddress] = true;
    }

    function excludeFromFee(address payable ad) external onlyOwner() {
        _isExcludedFromFee[ad] = true;
    }
    
    function includeToFee(address payable ad) external onlyOwner() {
        _isExcludedFromFee[ad] = false;
    }
    
    function setNoTaxMode(bool onoff) external onlyOwner() {
        _noTaxMode = onoff;
    }
    
    function setTeamFee(uint256 fee) external onlyOwner() {
        require(fee <= 10, "Team fee cannot be larger than 10%");
        _teamFee = fee;
    }
    
    function setBots(address[] memory bots_) public onlyOwner() {
        for (uint i = 0; i < bots_.length; i++) {
            if (bots_[i] != _uniswapV2Pair && bots_[i] != address(_uniswapV2Router)) {
                _isBot[bots_[i]] = true;
            }
        }
    }
    
    function delBots(address[] memory bots_) public onlyOwner() {
        for (uint i = 0; i < bots_.length; i++) {
            _isBot[bots_[i]] = false;
        }
    }
    
    function isBot(address ad) public view returns (bool) {
        return _isBot[ad];
    }

    function isExcludedFromFee(address ad) public view returns (bool) {
        return _isExcludedFromFee[ad];
    }
    
    function swapFeesManual() external onlyOwner() {
        uint256 contractBalance = balanceOf(address(this));
        _swapTokensForEth(contractBalance);
    }
    
    function withdrawFees() external {
        uint256 contractETHBalance = address(this).balance;
        _feeAddress.transfer(contractETHBalance);
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"ad","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"ad","type":"address"}],"name":"includeToFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"feeAddress","type":"address"}],"name":"initContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"ad","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"ad","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"feeWalletAddress","type":"address"}],"name":"setFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setNoTaxMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setTeamFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapFeesManual","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405268056bc75e2d631000006000196200001d91906200039e565b6000196200002c919062000405565b60065560056008556008546009556000600c60146101000a81548160ff0219169083151502179055506000600c60156101000a81548160ff0219169083151502179055506000600c60166101000a81548160ff0219169083151502179055506000600c60176101000a81548160ff021916908315150217905550348015620000b357600080fd5b50620000d4620000c86200027060201b60201c565b6200027860201b60201c565b60065460016000620000eb6200027060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600460006200013f6200033c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016004600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620001fa6200027060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef68056bc75e2d6310000060405162000262919062000451565b60405180910390a36200046e565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620003ab8262000365565b9150620003b88362000365565b925082620003cb57620003ca6200036f565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620004128262000365565b91506200041f8362000365565b925082821015620004355762000434620003d6565b5b828203905092915050565b6200044b8162000365565b82525050565b600060208201905062000468600083018462000440565b92915050565b613c10806200047e6000396000f3fe60806040526004361061016a5760003560e01c806370a08231116100d1578063b515566a1161008a578063cf9d4afa11610064578063cf9d4afa1461050d578063dd62ed3e14610536578063e6ec64ec14610573578063f2fde38b1461059c57610171565b8063b515566a146104a4578063c9567bf9146104cd578063cf0848f7146104e457610171565b806370a0823114610394578063715018a6146103d15780638da5cb5b146103e857806390d49b9d1461041357806395d89b411461043c578063a9059cbb1461046757610171565b806331c2d8471161012357806331c2d847146102885780633bbac579146102b1578063437823ec146102ee578063476343ee146103175780634b740b161461032e5780635342acb41461035757610171565b806306d8ea6b1461017657806306fdde031461018d578063095ea7b3146101b857806318160ddd146101f557806323b872dd14610220578063313ce5671461025d57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105c5565b005b34801561019957600080fd5b506101a261065a565b6040516101af9190612ae7565b60405180910390f35b3480156101c457600080fd5b506101df60048036038101906101da9190612bb1565b610697565b6040516101ec9190612c0c565b60405180910390f35b34801561020157600080fd5b5061020a6106b5565b6040516102179190612c36565b60405180910390f35b34801561022c57600080fd5b5061024760048036038101906102429190612c51565b6106c6565b6040516102549190612c0c565b60405180910390f35b34801561026957600080fd5b5061027261079f565b60405161027f9190612c36565b60405180910390f35b34801561029457600080fd5b506102af60048036038101906102aa9190612dec565b6107a8565b005b3480156102bd57600080fd5b506102d860048036038101906102d39190612e35565b6108b9565b6040516102e59190612c0c565b60405180910390f35b3480156102fa57600080fd5b5061031560048036038101906103109190612ea0565b61090f565b005b34801561032357600080fd5b5061032c6109e6565b005b34801561033a57600080fd5b5061035560048036038101906103509190612ef9565b610a57565b005b34801561036357600080fd5b5061037e60048036038101906103799190612e35565b610af0565b60405161038b9190612c0c565b60405180910390f35b3480156103a057600080fd5b506103bb60048036038101906103b69190612e35565b610b46565b6040516103c89190612c36565b60405180910390f35b3480156103dd57600080fd5b506103e6610b97565b005b3480156103f457600080fd5b506103fd610c1f565b60405161040a9190612f35565b60405180910390f35b34801561041f57600080fd5b5061043a60048036038101906104359190612ea0565b610c48565b005b34801561044857600080fd5b50610451610dfc565b60405161045e9190612ae7565b60405180910390f35b34801561047357600080fd5b5061048e60048036038101906104899190612bb1565b610e39565b60405161049b9190612c0c565b60405180910390f35b3480156104b057600080fd5b506104cb60048036038101906104c69190612dec565b610e57565b005b3480156104d957600080fd5b506104e261104e565b005b3480156104f057600080fd5b5061050b60048036038101906105069190612ea0565b611153565b005b34801561051957600080fd5b50610534600480360381019061052f9190612ea0565b61122a565b005b34801561054257600080fd5b5061055d60048036038101906105589190612f50565b6115c4565b60405161056a9190612c36565b60405180910390f35b34801561057f57600080fd5b5061059a60048036038101906105959190612f90565b61164b565b005b3480156105a857600080fd5b506105c360048036038101906105be9190612e35565b611715565b005b6105cd61180d565b73ffffffffffffffffffffffffffffffffffffffff166105eb610c1f565b73ffffffffffffffffffffffffffffffffffffffff1614610641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063890613009565b60405180910390fd5b600061064c30610b46565b905061065781611815565b50565b60606040518060400160405280600b81526020017f5769746368657220496e75000000000000000000000000000000000000000000815250905090565b60006106ab6106a461180d565b8484611a8e565b6001905092915050565b600068056bc75e2d63100000905090565b60006106d3848484611c59565b610794846106df61180d565b61078f85604051806060016040528060288152602001613bb360289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061074561180d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461229f9092919063ffffffff16565b611a8e565b600190509392505050565b60006009905090565b6107b061180d565b73ffffffffffffffffffffffffffffffffffffffff166107ce610c1f565b73ffffffffffffffffffffffffffffffffffffffff1614610824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081b90613009565b60405180910390fd5b60005b81518110156108b55760006005600084848151811061084957610848613029565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108ad90613087565b915050610827565b5050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61091761180d565b73ffffffffffffffffffffffffffffffffffffffff16610935610c1f565b73ffffffffffffffffffffffffffffffffffffffff161461098b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098290613009565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000479050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610a53573d6000803e3d6000fd5b5050565b610a5f61180d565b73ffffffffffffffffffffffffffffffffffffffff16610a7d610c1f565b73ffffffffffffffffffffffffffffffffffffffff1614610ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aca90613009565b60405180910390fd5b80600c60156101000a81548160ff02191690831515021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000610b90600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612303565b9050919050565b610b9f61180d565b73ffffffffffffffffffffffffffffffffffffffff16610bbd610c1f565b73ffffffffffffffffffffffffffffffffffffffff1614610c13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0a90613009565b60405180910390fd5b610c1d6000612371565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610c5061180d565b73ffffffffffffffffffffffffffffffffffffffff16610c6e610c1f565b73ffffffffffffffffffffffffffffffffffffffff1614610cc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbb90613009565b60405180910390fd5b600060046000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60606040518060400160405280600481526020017f57494e5500000000000000000000000000000000000000000000000000000000815250905090565b6000610e4d610e4661180d565b8484611c59565b6001905092915050565b610e5f61180d565b73ffffffffffffffffffffffffffffffffffffffff16610e7d610c1f565b73ffffffffffffffffffffffffffffffffffffffff1614610ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eca90613009565b60405180910390fd5b60005b815181101561104a57600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16828281518110610f2b57610f2a613029565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614158015610fbf5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16828281518110610f9e57610f9d613029565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b1561103757600160056000848481518110610fdd57610fdc613029565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b808061104290613087565b915050610ed6565b5050565b61105661180d565b73ffffffffffffffffffffffffffffffffffffffff16611074610c1f565b73ffffffffffffffffffffffffffffffffffffffff16146110ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c190613009565b60405180910390fd5b600c60149054906101000a900460ff16611119576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111090613142565b60405180910390fd5b6001600c60176101000a81548160ff02191690831515021790555042600d81905550610e10600d5461114b9190613162565b600e81905550565b61115b61180d565b73ffffffffffffffffffffffffffffffffffffffff16611179610c1f565b73ffffffffffffffffffffffffffffffffffffffff16146111cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c690613009565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61123261180d565b73ffffffffffffffffffffffffffffffffffffffff16611250610c1f565b73ffffffffffffffffffffffffffffffffffffffff16146112a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129d90613009565b60405180910390fd5b600c60149054906101000a900460ff16156112f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ed9061322a565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561135a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137e919061325f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611409919061325f565b6040518363ffffffff1660e01b815260040161142692919061328c565b6020604051808303816000875af1158015611445573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611469919061325f565b600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60146101000a81548160ff0219169083151502179055505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61165361180d565b73ffffffffffffffffffffffffffffffffffffffff16611671610c1f565b73ffffffffffffffffffffffffffffffffffffffff16146116c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116be90613009565b60405180910390fd5b600a81111561170b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170290613327565b60405180910390fd5b8060088190555050565b61171d61180d565b73ffffffffffffffffffffffffffffffffffffffff1661173b610c1f565b73ffffffffffffffffffffffffffffffffffffffff1614611791576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178890613009565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611801576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f8906133b9565b60405180910390fd5b61180a81612371565b50565b600033905090565b6001600c60166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561184d5761184c612ca9565b5b60405190808252806020026020018201604052801561187b5781602001602082028036833780820191505090505b509050308160008151811061189357611892613029565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561193a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195e919061325f565b8160018151811061197257611971613029565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506119d930600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a8e565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611a3d9594939291906134dc565b600060405180830381600087803b158015611a5757600080fd5b505af1158015611a6b573d6000803e3d6000fd5b50505050506000600c60166101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af5906135a8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b659061363a565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c4c9190612c36565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611cc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc0906136cc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d309061375e565b60405180910390fd5b60008111611d7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d73906137f0565b60405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e00906138a8565b60405180910390fd5b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611eaf5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ec85750600c60159054906101000a900460ff16155b8015611f795750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611f785750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b5b1561228d57600c60179054906101000a900460ff16611fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc490613914565b60405180910390fd5b60019050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561207c5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612089575042600e54115b156120eb57600061209984610b46565b90506120cb60646120bd600568056bc75e2d6310000061243590919063ffffffff16565b6124b090919063ffffffff16565b6120de82856124fa90919063ffffffff16565b11156120e957600080fd5b505b600d5442141561214e576001600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600061215930610b46565b9050600c60169054906101000a900460ff161580156121c65750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561228b57600081111561228a5761222560646122176005612209600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610b46565b61243590919063ffffffff16565b6124b090919063ffffffff16565b8111156122805761227d606461226f6005612261600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610b46565b61243590919063ffffffff16565b6124b090919063ffffffff16565b90505b61228981611815565b5b5b505b61229984848484612558565b50505050565b60008383111582906122e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122de9190612ae7565b60405180910390fd5b50600083856122f69190613934565b9050809150509392505050565b600060065482111561234a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612341906139da565b60405180910390fd5b600061235461272f565b905061236981846124b090919063ffffffff16565b915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008083141561244857600090506124aa565b6000828461245691906139fa565b90508284826124659190613a83565b146124a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249c90613b26565b60405180910390fd5b809150505b92915050565b60006124f283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061275a565b905092915050565b60008082846125099190613162565b90508381101561254e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254590613b92565b60405180910390fd5b8091505092915050565b8080612567576125666127bd565b5b600080600080612576876127df565b93509350935093506125d084600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282e90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061266583600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124fa90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126b181612878565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161270e9190612c36565b60405180910390a3505050508061272857612727612935565b5b5050505050565b600080600061273c612940565b9150915061275381836124b090919063ffffffff16565b9250505090565b600080831182906127a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127989190612ae7565b60405180910390fd5b50600083856127b09190613a83565b9050809150509392505050565b6000600854116127cc57600080fd5b6008546009819055506000600881905550565b6000806000806000806127f4876008546129a2565b91509150600061280261272f565b90506000806128128a85856129f5565b9150915081818686985098509850985050505050509193509193565b600061287083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061229f565b905092915050565b600061288261272f565b90506000612899828461243590919063ffffffff16565b90506128ed81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124fa90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b600954600881905550565b60008060006006549050600068056bc75e2d63100000905061297668056bc75e2d631000006006546124b090919063ffffffff16565b8210156129955760065468056bc75e2d6310000093509350505061299e565b81819350935050505b9091565b60008060006129cd60646129bf868861243590919063ffffffff16565b6124b090919063ffffffff16565b905060006129e4828761282e90919063ffffffff16565b905080829350935050509250929050565b6000806000612a0d848761243590919063ffffffff16565b90506000612a24858761243590919063ffffffff16565b90506000612a3b828461282e90919063ffffffff16565b9050828194509450505050935093915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a88578082015181840152602081019050612a6d565b83811115612a97576000848401525b50505050565b6000601f19601f8301169050919050565b6000612ab982612a4e565b612ac38185612a59565b9350612ad3818560208601612a6a565b612adc81612a9d565b840191505092915050565b60006020820190508181036000830152612b018184612aae565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b4882612b1d565b9050919050565b612b5881612b3d565b8114612b6357600080fd5b50565b600081359050612b7581612b4f565b92915050565b6000819050919050565b612b8e81612b7b565b8114612b9957600080fd5b50565b600081359050612bab81612b85565b92915050565b60008060408385031215612bc857612bc7612b13565b5b6000612bd685828601612b66565b9250506020612be785828601612b9c565b9150509250929050565b60008115159050919050565b612c0681612bf1565b82525050565b6000602082019050612c216000830184612bfd565b92915050565b612c3081612b7b565b82525050565b6000602082019050612c4b6000830184612c27565b92915050565b600080600060608486031215612c6a57612c69612b13565b5b6000612c7886828701612b66565b9350506020612c8986828701612b66565b9250506040612c9a86828701612b9c565b9150509250925092565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612ce182612a9d565b810181811067ffffffffffffffff82111715612d0057612cff612ca9565b5b80604052505050565b6000612d13612b09565b9050612d1f8282612cd8565b919050565b600067ffffffffffffffff821115612d3f57612d3e612ca9565b5b602082029050602081019050919050565b600080fd5b6000612d68612d6384612d24565b612d09565b90508083825260208201905060208402830185811115612d8b57612d8a612d50565b5b835b81811015612db45780612da08882612b66565b845260208401935050602081019050612d8d565b5050509392505050565b600082601f830112612dd357612dd2612ca4565b5b8135612de3848260208601612d55565b91505092915050565b600060208284031215612e0257612e01612b13565b5b600082013567ffffffffffffffff811115612e2057612e1f612b18565b5b612e2c84828501612dbe565b91505092915050565b600060208284031215612e4b57612e4a612b13565b5b6000612e5984828501612b66565b91505092915050565b6000612e6d82612b1d565b9050919050565b612e7d81612e62565b8114612e8857600080fd5b50565b600081359050612e9a81612e74565b92915050565b600060208284031215612eb657612eb5612b13565b5b6000612ec484828501612e8b565b91505092915050565b612ed681612bf1565b8114612ee157600080fd5b50565b600081359050612ef381612ecd565b92915050565b600060208284031215612f0f57612f0e612b13565b5b6000612f1d84828501612ee4565b91505092915050565b612f2f81612b3d565b82525050565b6000602082019050612f4a6000830184612f26565b92915050565b60008060408385031215612f6757612f66612b13565b5b6000612f7585828601612b66565b9250506020612f8685828601612b66565b9150509250929050565b600060208284031215612fa657612fa5612b13565b5b6000612fb484828501612b9c565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612ff3602083612a59565b9150612ffe82612fbd565b602082019050919050565b6000602082019050818103600083015261302281612fe6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061309282612b7b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156130c5576130c4613058565b5b600182019050919050565b7f436f6e7472616374206d75737420626520696e697469616c697a65642066697260008201527f7374000000000000000000000000000000000000000000000000000000000000602082015250565b600061312c602283612a59565b9150613137826130d0565b604082019050919050565b6000602082019050818103600083015261315b8161311f565b9050919050565b600061316d82612b7b565b915061317883612b7b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156131ad576131ac613058565b5b828201905092915050565b7f436f6e74726163742068617320616c7265616479206265656e20696e6974696160008201527f6c697a6564000000000000000000000000000000000000000000000000000000602082015250565b6000613214602583612a59565b915061321f826131b8565b604082019050919050565b6000602082019050818103600083015261324381613207565b9050919050565b60008151905061325981612b4f565b92915050565b60006020828403121561327557613274612b13565b5b60006132838482850161324a565b91505092915050565b60006040820190506132a16000830185612f26565b6132ae6020830184612f26565b9392505050565b7f5465616d206665652063616e6e6f74206265206c6172676572207468616e203160008201527f3025000000000000000000000000000000000000000000000000000000000000602082015250565b6000613311602283612a59565b915061331c826132b5565b604082019050919050565b6000602082019050818103600083015261334081613304565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006133a3602683612a59565b91506133ae82613347565b604082019050919050565b600060208201905081810360008301526133d281613396565b9050919050565b6000819050919050565b6000819050919050565b60006134086134036133fe846133d9565b6133e3565b612b7b565b9050919050565b613418816133ed565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61345381612b3d565b82525050565b6000613465838361344a565b60208301905092915050565b6000602082019050919050565b60006134898261341e565b6134938185613429565b935061349e8361343a565b8060005b838110156134cf5781516134b68882613459565b97506134c183613471565b9250506001810190506134a2565b5085935050505092915050565b600060a0820190506134f16000830188612c27565b6134fe602083018761340f565b8181036040830152613510818661347e565b905061351f6060830185612f26565b61352c6080830184612c27565b9695505050505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613592602483612a59565b915061359d82613536565b604082019050919050565b600060208201905081810360008301526135c181613585565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613624602283612a59565b915061362f826135c8565b604082019050919050565b6000602082019050818103600083015261365381613617565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006136b6602583612a59565b91506136c18261365a565b604082019050919050565b600060208201905081810360008301526136e5816136a9565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613748602383612a59565b9150613753826136ec565b604082019050919050565b600060208201905081810360008301526137778161373b565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006137da602983612a59565b91506137e58261377e565b604082019050919050565b60006020820190508181036000830152613809816137cd565b9050919050565b7f596f7572206164647265737320686173206265656e206d61726b65642061732060008201527f6120626f742c20706c6561736520636f6e7461637420737461666620746f206160208201527f707065616c20796f757220636173652e00000000000000000000000000000000604082015250565b6000613892605083612a59565b915061389d82613810565b606082019050919050565b600060208201905081810360008301526138c181613885565b9050919050565b7f54726164696e6720686173206e6f7420796574206265656e206f70656e65642e600082015250565b60006138fe602083612a59565b9150613909826138c8565b602082019050919050565b6000602082019050818103600083015261392d816138f1565b9050919050565b600061393f82612b7b565b915061394a83612b7b565b92508282101561395d5761395c613058565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006139c4602a83612a59565b91506139cf82613968565b604082019050919050565b600060208201905081810360008301526139f3816139b7565b9050919050565b6000613a0582612b7b565b9150613a1083612b7b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a4957613a48613058565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a8e82612b7b565b9150613a9983612b7b565b925082613aa957613aa8613a54565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b10602183612a59565b9150613b1b82613ab4565b604082019050919050565b60006020820190508181036000830152613b3f81613b03565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613b7c601b83612a59565b9150613b8782613b46565b602082019050919050565b60006020820190508181036000830152613bab81613b6f565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208efdf3c6ad1a01cb2fffcae7b71928fbfb42c15cca6d5e15056be4de657f79d564736f6c634300080a0033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c806370a08231116100d1578063b515566a1161008a578063cf9d4afa11610064578063cf9d4afa1461050d578063dd62ed3e14610536578063e6ec64ec14610573578063f2fde38b1461059c57610171565b8063b515566a146104a4578063c9567bf9146104cd578063cf0848f7146104e457610171565b806370a0823114610394578063715018a6146103d15780638da5cb5b146103e857806390d49b9d1461041357806395d89b411461043c578063a9059cbb1461046757610171565b806331c2d8471161012357806331c2d847146102885780633bbac579146102b1578063437823ec146102ee578063476343ee146103175780634b740b161461032e5780635342acb41461035757610171565b806306d8ea6b1461017657806306fdde031461018d578063095ea7b3146101b857806318160ddd146101f557806323b872dd14610220578063313ce5671461025d57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105c5565b005b34801561019957600080fd5b506101a261065a565b6040516101af9190612ae7565b60405180910390f35b3480156101c457600080fd5b506101df60048036038101906101da9190612bb1565b610697565b6040516101ec9190612c0c565b60405180910390f35b34801561020157600080fd5b5061020a6106b5565b6040516102179190612c36565b60405180910390f35b34801561022c57600080fd5b5061024760048036038101906102429190612c51565b6106c6565b6040516102549190612c0c565b60405180910390f35b34801561026957600080fd5b5061027261079f565b60405161027f9190612c36565b60405180910390f35b34801561029457600080fd5b506102af60048036038101906102aa9190612dec565b6107a8565b005b3480156102bd57600080fd5b506102d860048036038101906102d39190612e35565b6108b9565b6040516102e59190612c0c565b60405180910390f35b3480156102fa57600080fd5b5061031560048036038101906103109190612ea0565b61090f565b005b34801561032357600080fd5b5061032c6109e6565b005b34801561033a57600080fd5b5061035560048036038101906103509190612ef9565b610a57565b005b34801561036357600080fd5b5061037e60048036038101906103799190612e35565b610af0565b60405161038b9190612c0c565b60405180910390f35b3480156103a057600080fd5b506103bb60048036038101906103b69190612e35565b610b46565b6040516103c89190612c36565b60405180910390f35b3480156103dd57600080fd5b506103e6610b97565b005b3480156103f457600080fd5b506103fd610c1f565b60405161040a9190612f35565b60405180910390f35b34801561041f57600080fd5b5061043a60048036038101906104359190612ea0565b610c48565b005b34801561044857600080fd5b50610451610dfc565b60405161045e9190612ae7565b60405180910390f35b34801561047357600080fd5b5061048e60048036038101906104899190612bb1565b610e39565b60405161049b9190612c0c565b60405180910390f35b3480156104b057600080fd5b506104cb60048036038101906104c69190612dec565b610e57565b005b3480156104d957600080fd5b506104e261104e565b005b3480156104f057600080fd5b5061050b60048036038101906105069190612ea0565b611153565b005b34801561051957600080fd5b50610534600480360381019061052f9190612ea0565b61122a565b005b34801561054257600080fd5b5061055d60048036038101906105589190612f50565b6115c4565b60405161056a9190612c36565b60405180910390f35b34801561057f57600080fd5b5061059a60048036038101906105959190612f90565b61164b565b005b3480156105a857600080fd5b506105c360048036038101906105be9190612e35565b611715565b005b6105cd61180d565b73ffffffffffffffffffffffffffffffffffffffff166105eb610c1f565b73ffffffffffffffffffffffffffffffffffffffff1614610641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063890613009565b60405180910390fd5b600061064c30610b46565b905061065781611815565b50565b60606040518060400160405280600b81526020017f5769746368657220496e75000000000000000000000000000000000000000000815250905090565b60006106ab6106a461180d565b8484611a8e565b6001905092915050565b600068056bc75e2d63100000905090565b60006106d3848484611c59565b610794846106df61180d565b61078f85604051806060016040528060288152602001613bb360289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061074561180d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461229f9092919063ffffffff16565b611a8e565b600190509392505050565b60006009905090565b6107b061180d565b73ffffffffffffffffffffffffffffffffffffffff166107ce610c1f565b73ffffffffffffffffffffffffffffffffffffffff1614610824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081b90613009565b60405180910390fd5b60005b81518110156108b55760006005600084848151811061084957610848613029565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108ad90613087565b915050610827565b5050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61091761180d565b73ffffffffffffffffffffffffffffffffffffffff16610935610c1f565b73ffffffffffffffffffffffffffffffffffffffff161461098b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098290613009565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000479050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610a53573d6000803e3d6000fd5b5050565b610a5f61180d565b73ffffffffffffffffffffffffffffffffffffffff16610a7d610c1f565b73ffffffffffffffffffffffffffffffffffffffff1614610ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aca90613009565b60405180910390fd5b80600c60156101000a81548160ff02191690831515021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000610b90600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612303565b9050919050565b610b9f61180d565b73ffffffffffffffffffffffffffffffffffffffff16610bbd610c1f565b73ffffffffffffffffffffffffffffffffffffffff1614610c13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0a90613009565b60405180910390fd5b610c1d6000612371565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610c5061180d565b73ffffffffffffffffffffffffffffffffffffffff16610c6e610c1f565b73ffffffffffffffffffffffffffffffffffffffff1614610cc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbb90613009565b60405180910390fd5b600060046000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60606040518060400160405280600481526020017f57494e5500000000000000000000000000000000000000000000000000000000815250905090565b6000610e4d610e4661180d565b8484611c59565b6001905092915050565b610e5f61180d565b73ffffffffffffffffffffffffffffffffffffffff16610e7d610c1f565b73ffffffffffffffffffffffffffffffffffffffff1614610ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eca90613009565b60405180910390fd5b60005b815181101561104a57600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16828281518110610f2b57610f2a613029565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614158015610fbf5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16828281518110610f9e57610f9d613029565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b1561103757600160056000848481518110610fdd57610fdc613029565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b808061104290613087565b915050610ed6565b5050565b61105661180d565b73ffffffffffffffffffffffffffffffffffffffff16611074610c1f565b73ffffffffffffffffffffffffffffffffffffffff16146110ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c190613009565b60405180910390fd5b600c60149054906101000a900460ff16611119576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111090613142565b60405180910390fd5b6001600c60176101000a81548160ff02191690831515021790555042600d81905550610e10600d5461114b9190613162565b600e81905550565b61115b61180d565b73ffffffffffffffffffffffffffffffffffffffff16611179610c1f565b73ffffffffffffffffffffffffffffffffffffffff16146111cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c690613009565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61123261180d565b73ffffffffffffffffffffffffffffffffffffffff16611250610c1f565b73ffffffffffffffffffffffffffffffffffffffff16146112a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129d90613009565b60405180910390fd5b600c60149054906101000a900460ff16156112f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ed9061322a565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561135a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137e919061325f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611409919061325f565b6040518363ffffffff1660e01b815260040161142692919061328c565b6020604051808303816000875af1158015611445573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611469919061325f565b600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60146101000a81548160ff0219169083151502179055505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61165361180d565b73ffffffffffffffffffffffffffffffffffffffff16611671610c1f565b73ffffffffffffffffffffffffffffffffffffffff16146116c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116be90613009565b60405180910390fd5b600a81111561170b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170290613327565b60405180910390fd5b8060088190555050565b61171d61180d565b73ffffffffffffffffffffffffffffffffffffffff1661173b610c1f565b73ffffffffffffffffffffffffffffffffffffffff1614611791576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178890613009565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611801576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f8906133b9565b60405180910390fd5b61180a81612371565b50565b600033905090565b6001600c60166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561184d5761184c612ca9565b5b60405190808252806020026020018201604052801561187b5781602001602082028036833780820191505090505b509050308160008151811061189357611892613029565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561193a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195e919061325f565b8160018151811061197257611971613029565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506119d930600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a8e565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611a3d9594939291906134dc565b600060405180830381600087803b158015611a5757600080fd5b505af1158015611a6b573d6000803e3d6000fd5b50505050506000600c60166101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af5906135a8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b659061363a565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c4c9190612c36565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611cc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc0906136cc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d309061375e565b60405180910390fd5b60008111611d7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d73906137f0565b60405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e00906138a8565b60405180910390fd5b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611eaf5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ec85750600c60159054906101000a900460ff16155b8015611f795750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611f785750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b5b1561228d57600c60179054906101000a900460ff16611fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc490613914565b60405180910390fd5b60019050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561207c5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612089575042600e54115b156120eb57600061209984610b46565b90506120cb60646120bd600568056bc75e2d6310000061243590919063ffffffff16565b6124b090919063ffffffff16565b6120de82856124fa90919063ffffffff16565b11156120e957600080fd5b505b600d5442141561214e576001600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600061215930610b46565b9050600c60169054906101000a900460ff161580156121c65750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561228b57600081111561228a5761222560646122176005612209600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610b46565b61243590919063ffffffff16565b6124b090919063ffffffff16565b8111156122805761227d606461226f6005612261600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610b46565b61243590919063ffffffff16565b6124b090919063ffffffff16565b90505b61228981611815565b5b5b505b61229984848484612558565b50505050565b60008383111582906122e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122de9190612ae7565b60405180910390fd5b50600083856122f69190613934565b9050809150509392505050565b600060065482111561234a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612341906139da565b60405180910390fd5b600061235461272f565b905061236981846124b090919063ffffffff16565b915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008083141561244857600090506124aa565b6000828461245691906139fa565b90508284826124659190613a83565b146124a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249c90613b26565b60405180910390fd5b809150505b92915050565b60006124f283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061275a565b905092915050565b60008082846125099190613162565b90508381101561254e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254590613b92565b60405180910390fd5b8091505092915050565b8080612567576125666127bd565b5b600080600080612576876127df565b93509350935093506125d084600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282e90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061266583600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124fa90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126b181612878565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161270e9190612c36565b60405180910390a3505050508061272857612727612935565b5b5050505050565b600080600061273c612940565b9150915061275381836124b090919063ffffffff16565b9250505090565b600080831182906127a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127989190612ae7565b60405180910390fd5b50600083856127b09190613a83565b9050809150509392505050565b6000600854116127cc57600080fd5b6008546009819055506000600881905550565b6000806000806000806127f4876008546129a2565b91509150600061280261272f565b90506000806128128a85856129f5565b9150915081818686985098509850985050505050509193509193565b600061287083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061229f565b905092915050565b600061288261272f565b90506000612899828461243590919063ffffffff16565b90506128ed81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124fa90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b600954600881905550565b60008060006006549050600068056bc75e2d63100000905061297668056bc75e2d631000006006546124b090919063ffffffff16565b8210156129955760065468056bc75e2d6310000093509350505061299e565b81819350935050505b9091565b60008060006129cd60646129bf868861243590919063ffffffff16565b6124b090919063ffffffff16565b905060006129e4828761282e90919063ffffffff16565b905080829350935050509250929050565b6000806000612a0d848761243590919063ffffffff16565b90506000612a24858761243590919063ffffffff16565b90506000612a3b828461282e90919063ffffffff16565b9050828194509450505050935093915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a88578082015181840152602081019050612a6d565b83811115612a97576000848401525b50505050565b6000601f19601f8301169050919050565b6000612ab982612a4e565b612ac38185612a59565b9350612ad3818560208601612a6a565b612adc81612a9d565b840191505092915050565b60006020820190508181036000830152612b018184612aae565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b4882612b1d565b9050919050565b612b5881612b3d565b8114612b6357600080fd5b50565b600081359050612b7581612b4f565b92915050565b6000819050919050565b612b8e81612b7b565b8114612b9957600080fd5b50565b600081359050612bab81612b85565b92915050565b60008060408385031215612bc857612bc7612b13565b5b6000612bd685828601612b66565b9250506020612be785828601612b9c565b9150509250929050565b60008115159050919050565b612c0681612bf1565b82525050565b6000602082019050612c216000830184612bfd565b92915050565b612c3081612b7b565b82525050565b6000602082019050612c4b6000830184612c27565b92915050565b600080600060608486031215612c6a57612c69612b13565b5b6000612c7886828701612b66565b9350506020612c8986828701612b66565b9250506040612c9a86828701612b9c565b9150509250925092565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612ce182612a9d565b810181811067ffffffffffffffff82111715612d0057612cff612ca9565b5b80604052505050565b6000612d13612b09565b9050612d1f8282612cd8565b919050565b600067ffffffffffffffff821115612d3f57612d3e612ca9565b5b602082029050602081019050919050565b600080fd5b6000612d68612d6384612d24565b612d09565b90508083825260208201905060208402830185811115612d8b57612d8a612d50565b5b835b81811015612db45780612da08882612b66565b845260208401935050602081019050612d8d565b5050509392505050565b600082601f830112612dd357612dd2612ca4565b5b8135612de3848260208601612d55565b91505092915050565b600060208284031215612e0257612e01612b13565b5b600082013567ffffffffffffffff811115612e2057612e1f612b18565b5b612e2c84828501612dbe565b91505092915050565b600060208284031215612e4b57612e4a612b13565b5b6000612e5984828501612b66565b91505092915050565b6000612e6d82612b1d565b9050919050565b612e7d81612e62565b8114612e8857600080fd5b50565b600081359050612e9a81612e74565b92915050565b600060208284031215612eb657612eb5612b13565b5b6000612ec484828501612e8b565b91505092915050565b612ed681612bf1565b8114612ee157600080fd5b50565b600081359050612ef381612ecd565b92915050565b600060208284031215612f0f57612f0e612b13565b5b6000612f1d84828501612ee4565b91505092915050565b612f2f81612b3d565b82525050565b6000602082019050612f4a6000830184612f26565b92915050565b60008060408385031215612f6757612f66612b13565b5b6000612f7585828601612b66565b9250506020612f8685828601612b66565b9150509250929050565b600060208284031215612fa657612fa5612b13565b5b6000612fb484828501612b9c565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612ff3602083612a59565b9150612ffe82612fbd565b602082019050919050565b6000602082019050818103600083015261302281612fe6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061309282612b7b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156130c5576130c4613058565b5b600182019050919050565b7f436f6e7472616374206d75737420626520696e697469616c697a65642066697260008201527f7374000000000000000000000000000000000000000000000000000000000000602082015250565b600061312c602283612a59565b9150613137826130d0565b604082019050919050565b6000602082019050818103600083015261315b8161311f565b9050919050565b600061316d82612b7b565b915061317883612b7b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156131ad576131ac613058565b5b828201905092915050565b7f436f6e74726163742068617320616c7265616479206265656e20696e6974696160008201527f6c697a6564000000000000000000000000000000000000000000000000000000602082015250565b6000613214602583612a59565b915061321f826131b8565b604082019050919050565b6000602082019050818103600083015261324381613207565b9050919050565b60008151905061325981612b4f565b92915050565b60006020828403121561327557613274612b13565b5b60006132838482850161324a565b91505092915050565b60006040820190506132a16000830185612f26565b6132ae6020830184612f26565b9392505050565b7f5465616d206665652063616e6e6f74206265206c6172676572207468616e203160008201527f3025000000000000000000000000000000000000000000000000000000000000602082015250565b6000613311602283612a59565b915061331c826132b5565b604082019050919050565b6000602082019050818103600083015261334081613304565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006133a3602683612a59565b91506133ae82613347565b604082019050919050565b600060208201905081810360008301526133d281613396565b9050919050565b6000819050919050565b6000819050919050565b60006134086134036133fe846133d9565b6133e3565b612b7b565b9050919050565b613418816133ed565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61345381612b3d565b82525050565b6000613465838361344a565b60208301905092915050565b6000602082019050919050565b60006134898261341e565b6134938185613429565b935061349e8361343a565b8060005b838110156134cf5781516134b68882613459565b97506134c183613471565b9250506001810190506134a2565b5085935050505092915050565b600060a0820190506134f16000830188612c27565b6134fe602083018761340f565b8181036040830152613510818661347e565b905061351f6060830185612f26565b61352c6080830184612c27565b9695505050505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613592602483612a59565b915061359d82613536565b604082019050919050565b600060208201905081810360008301526135c181613585565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613624602283612a59565b915061362f826135c8565b604082019050919050565b6000602082019050818103600083015261365381613617565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006136b6602583612a59565b91506136c18261365a565b604082019050919050565b600060208201905081810360008301526136e5816136a9565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613748602383612a59565b9150613753826136ec565b604082019050919050565b600060208201905081810360008301526137778161373b565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006137da602983612a59565b91506137e58261377e565b604082019050919050565b60006020820190508181036000830152613809816137cd565b9050919050565b7f596f7572206164647265737320686173206265656e206d61726b65642061732060008201527f6120626f742c20706c6561736520636f6e7461637420737461666620746f206160208201527f707065616c20796f757220636173652e00000000000000000000000000000000604082015250565b6000613892605083612a59565b915061389d82613810565b606082019050919050565b600060208201905081810360008301526138c181613885565b9050919050565b7f54726164696e6720686173206e6f7420796574206265656e206f70656e65642e600082015250565b60006138fe602083612a59565b9150613909826138c8565b602082019050919050565b6000602082019050818103600083015261392d816138f1565b9050919050565b600061393f82612b7b565b915061394a83612b7b565b92508282101561395d5761395c613058565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006139c4602a83612a59565b91506139cf82613968565b604082019050919050565b600060208201905081810360008301526139f3816139b7565b9050919050565b6000613a0582612b7b565b9150613a1083612b7b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a4957613a48613058565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613a8e82612b7b565b9150613a9983612b7b565b925082613aa957613aa8613a54565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b10602183612a59565b9150613b1b82613ab4565b604082019050919050565b60006020820190508181036000830152613b3f81613b03565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613b7c601b83612a59565b9150613b8782613b46565b602082019050919050565b60006020820190508181036000830152613bab81613b6f565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208efdf3c6ad1a01cb2fffcae7b71928fbfb42c15cca6d5e15056be4de657f79d564736f6c634300080a0033

Deployed Bytecode Sourcemap

3810:10852:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14296:161;;;;;;;;;;;;;:::i;:::-;;5533:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6385:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5809:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6554:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5719:82;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13891:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14072:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13085:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14469:153;;;;;;;;;;;;;:::i;:::-;;13334:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14170:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5912:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2801:105;;;;;;;;;;;;;:::i;:::-;;2578:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12850:227;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5624:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6059:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13604:275;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12589:253;;;;;;;;;;;;;:::i;:::-;;13210:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12032:549;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6234:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13438:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2914:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14296:161;2724:12;:10;:12::i;:::-;2713:23;;:7;:5;:7::i;:::-;:23;;;2705:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14354:23:::1;14380:24;14398:4;14380:9;:24::i;:::-;14354:50;;14415:34;14433:15;14415:17;:34::i;:::-;14343:114;14296:161::o:0;5533:83::-;5570:13;5603:5;;;;;;;;;;;;;;;;;5596:12;;5533:83;:::o;6385:161::-;6460:4;6477:39;6486:12;:10;:12::i;:::-;6500:7;6509:6;6477:8;:39::i;:::-;6534:4;6527:11;;6385:161;;;;:::o;5809:95::-;5862:7;4275:12;5882:14;;5809:95;:::o;6554:313::-;6652:4;6669:36;6679:6;6687:9;6698:6;6669:9;:36::i;:::-;6716:121;6725:6;6733:12;:10;:12::i;:::-;6747:89;6785:6;6747:89;;;;;;;;;;;;;;;;;:11;:19;6759:6;6747:19;;;;;;;;;;;;;;;:33;6767:12;:10;:12::i;:::-;6747:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6716:8;:121::i;:::-;6855:4;6848:11;;6554:313;;;;;:::o;5719:82::-;5760:4;4530:1;5777:16;;5719:82;:::o;13891:169::-;2724:12;:10;:12::i;:::-;2713:23;;:7;:5;:7::i;:::-;:23;;;2705:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13967:6:::1;13962:91;13983:5;:12;13979:1;:16;13962:91;;;14036:5;14017:6;:16;14024:5;14030:1;14024:8;;;;;;;;:::i;:::-;;;;;;;;14017:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;13997:3;;;;;:::i;:::-;;;;13962:91;;;;13891:169:::0;:::o;14072:90::-;14120:4;14144:6;:10;14151:2;14144:10;;;;;;;;;;;;;;;;;;;;;;;;;14137:17;;14072:90;;;:::o;13085:113::-;2724:12;:10;:12::i;:::-;2713:23;;:7;:5;:7::i;:::-;:23;;;2705:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13186:4:::1;13161:18;:22;13180:2;13161:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;13085:113:::0;:::o;14469:153::-;14513:26;14542:21;14513:50;;14574:11;;;;;;;;;;;:20;;:40;14595:18;14574:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14502:120;14469:153::o;13334:92::-;2724:12;:10;:12::i;:::-;2713:23;;:7;:5;:7::i;:::-;:23;;;2705:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13413:5:::1;13400:10;;:18;;;;;;;;;;;;;;;;;;13334:92:::0;:::o;14170:114::-;14230:4;14254:18;:22;14273:2;14254:22;;;;;;;;;;;;;;;;;;;;;;;;;14247:29;;14170:114;;;:::o;5912:139::-;5978:7;6005:38;6026:7;:16;6034:7;6026:16;;;;;;;;;;;;;;;;6005:20;:38::i;:::-;5998:45;;5912:139;;;:::o;2801:105::-;2724:12;:10;:12::i;:::-;2713:23;;:7;:5;:7::i;:::-;:23;;;2705:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2868:30:::1;2895:1;2868:18;:30::i;:::-;2801:105::o:0;2578:87::-;2624:7;2651:6;;;;;;;;;;;2644:13;;2578:87;:::o;12850:227::-;2724:12;:10;:12::i;:::-;2713:23;;:7;:5;:7::i;:::-;:23;;;2705:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12972:5:::1;12938:18;:31;12957:11;;;;;;;;;;;12938:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;13004:16;12990:11;;:30;;;;;;;;;;;;;;;;;;13065:4;13031:18;:31;13050:11;;;;;;;;;;;13031:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;12850:227:::0;:::o;5624:87::-;5663:13;5696:7;;;;;;;;;;;;;;;;;5689:14;;5624:87;:::o;6059:167::-;6137:4;6154:42;6164:12;:10;:12::i;:::-;6178:9;6189:6;6154:9;:42::i;:::-;6214:4;6207:11;;6059:167;;;;:::o;13604:275::-;2724:12;:10;:12::i;:::-;2713:23;;:7;:5;:7::i;:::-;:23;;;2705:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13680:6:::1;13675:197;13696:5;:12;13692:1;:16;13675:197;;;13746:14;;;;;;;;;;;13734:26;;:5;13740:1;13734:8;;;;;;;;:::i;:::-;;;;;;;;:26;;;;:67;;;;;13784:16;;;;;;;;;;;13764:37;;:5;13770:1;13764:8;;;;;;;;:::i;:::-;;;;;;;;:37;;;;13734:67;13730:131;;;13841:4;13822:6;:16;13829:5;13835:1;13829:8;;;;;;;;:::i;:::-;;;;;;;;13822:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;13730:131;13710:3;;;;;:::i;:::-;;;;13675:197;;;;13604:275:::0;:::o;12589:253::-;2724:12;:10;:12::i;:::-;2713:23;;:7;:5;:7::i;:::-;:23;;;2705:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12652:12:::1;;;;;;;;;;;12644:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;12729:4;12714:12;;:19;;;;;;;;;;;;;;;;;;12758:15;12744:11;:29;;;;12823:10;12808:11;;:26;;;;:::i;:::-;12784:21;:50;;;;12589:253::o:0;13210:112::-;2724:12;:10;:12::i;:::-;2713:23;;:7;:5;:7::i;:::-;:23;;;2705:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13309:5:::1;13284:18;:22;13303:2;13284:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;13210:112:::0;:::o;12032:549::-;2724:12;:10;:12::i;:::-;2713:23;;:7;:5;:7::i;:::-;:23;;;2705:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12123:12:::1;;;;;;;;;;;12122:13;12114:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;12187:34;12243:42;12187:99;;12332:15;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12314:55;;;12378:4;12385:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12314:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12297:14;;:111;;;;;;;;;;;;;;;;;;12440:15;12421:16;;:34;;;;;;;;;;;;;;;;;;12482:10;12468:11;;:24;;;;;;;;;;;;;;;;;;12537:4;12503:18;:31;12522:11;;;;;;;;;;;12503:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;12569:4;12554:12;;:19;;;;;;;;;;;;;;;;;;12103:478;12032:549:::0;:::o;6234:143::-;6315:7;6342:11;:18;6354:5;6342:18;;;;;;;;;;;;;;;:27;6361:7;6342:27;;;;;;;;;;;;;;;;6335:34;;6234:143;;;;:::o;13438:154::-;2724:12;:10;:12::i;:::-;2713:23;;:7;:5;:7::i;:::-;:23;;;2705:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13518:2:::1;13511:3;:9;;13503:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;13581:3;13570:8;:14;;;;13438:154:::0;:::o;2914:203::-;2724:12;:10;:12::i;:::-;2713:23;;:7;:5;:7::i;:::-;:23;;;2705:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3025:1:::1;3005:22;;:8;:22;;;;2997:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3081:28;3100:8;3081:18;:28::i;:::-;2914:203:::0;:::o;101:98::-;154:7;181:10;174:17;;101:98;:::o;9407:489::-;5056:4;5046:7;;:14;;;;;;;;;;;;;;;;;;9488:21:::1;9526:1;9512:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9488:40;;9557:4;9539;9544:1;9539:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;9583:16;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9573:4;9578:1;9573:7;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;::::0;::::1;9617:63;9634:4;9649:16;;;;;;;;;;;9668:11;9617:8;:63::i;:::-;9691:16;;;;;;;;;;;:67;;;9773:11;9799:1;9815:4;9842;9862:15;9691:197;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9477:419;5093:5:::0;5083:7;;:15;;;;;;;;;;;;;;;;;;9407:489;:::o;7376:337::-;7486:1;7469:19;;:5;:19;;;;7461:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7567:1;7548:21;;:7;:21;;;;7540:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7651:6;7621:11;:18;7633:5;7621:18;;;;;;;;;;;;;;;:27;7640:7;7621:27;;;;;;;;;;;;;;;:36;;;;7689:7;7673:32;;7682:5;7673:32;;;7698:6;7673:32;;;;;;:::i;:::-;;;;;;;;7376:337;;;:::o;7725:1674::-;7829:1;7813:18;;:4;:18;;;;7805:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7906:1;7892:16;;:2;:16;;;;7884:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7976:1;7967:6;:10;7959:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8043:6;:12;8050:4;8043:12;;;;;;;;;;;;;;;;;;;;;;;;;8042:13;8034:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;8161:12;8211:18;:24;8230:4;8211:24;;;;;;;;;;;;;;;;;;;;;;;;;8210:25;:66;;;;;8254:18;:22;8273:2;8254:22;;;;;;;;;;;;;;;;;;;;;;;;;8253:23;8210:66;:95;;;;;8295:10;;;;;;;;;;;8294:11;8210:95;:161;;;;;8332:14;;;;;;;;;;;8324:22;;:4;:22;;;:46;;;;8356:14;;;;;;;;;;;8350:20;;:2;:20;;;8324:46;8210:161;8192:1130;;;8406:12;;;;;;;;;;;8398:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;8480:4;8470:14;;8513;;;;;;;;;;;8505:22;;:4;:22;;;:57;;;;;8545:16;;;;;;;;;;;8531:31;;:2;:31;;;;8505:57;:100;;;;;8590:15;8566:21;;:39;8505:100;8501:264;;;8626:18;8647:22;8665:2;8647:9;:22::i;:::-;8626:43;;8725:23;8744:3;8725:14;8737:1;4275:12;8725:11;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;8696:25;8707:13;8696:6;:10;;:25;;;;:::i;:::-;:52;;8688:61;;;;;;8607:158;8501:264;8804:11;;8785:15;:30;8781:53;;;8830:4;8817:6;:10;8824:2;8817:10;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;8781:53;8851:28;8882:24;8900:4;8882:9;:24::i;:::-;8851:55;;8926:7;;;;;;;;;;;8925:8;:34;;;;;8945:14;;;;;;;;;;;8937:22;;:4;:22;;;;8925:34;8921:390;;;9007:1;8984:20;:24;8980:316;;;9060:41;9097:3;9060:32;9090:1;9060:25;9070:14;;;;;;;;;;;9060:9;:25::i;:::-;:29;;:32;;;;:::i;:::-;:36;;:41;;;;:::i;:::-;9037:20;:64;9033:159;;;9151:41;9188:3;9151:32;9181:1;9151:25;9161:14;;;;;;;;;;;9151:9;:25::i;:::-;:29;;:32;;;;:::i;:::-;:36;;:41;;;;:::i;:::-;9128:64;;9033:159;9237:39;9255:20;9237:17;:39::i;:::-;8980:316;8921:390;8383:939;8192:1130;9350:41;9365:4;9371:2;9375:6;9383:7;9350:14;:41::i;:::-;7794:1605;7725:1674;;;:::o;1238:190::-;1324:7;1357:1;1352;:6;;1360:12;1344:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1384:9;1400:1;1396;:5;;;;:::i;:::-;1384:17;;1419:1;1412:8;;;1238:190;;;;;:::o;6875:255::-;6943:7;6982;;6971;:18;;6963:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7047:19;7070:10;:8;:10::i;:::-;7047:33;;7098:24;7110:11;7098:7;:11;;:24;;;;:::i;:::-;7091:31;;;6875:255;;;:::o;3125:191::-;3199:16;3218:6;;;;;;;;;;;3199:25;;3244:8;3235:6;;:17;;;;;;;;;;;;;;;;;;3299:8;3268:40;;3289:8;3268:40;;;;;;;;;;;;3188:128;3125:191;:::o;1436:246::-;1494:7;1523:1;1518;:6;1514:47;;;1548:1;1541:8;;;;1514:47;1571:9;1587:1;1583;:5;;;;:::i;:::-;1571:17;;1616:1;1611;1607;:5;;;;:::i;:::-;:10;1599:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1673:1;1666:8;;;1436:246;;;;;:::o;1690:132::-;1748:7;1775:39;1779:1;1782;1775:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1768:46;;1690:132;;;;:::o;907:179::-;965:7;985:9;1001:1;997;:5;;;;:::i;:::-;985:17;;1026:1;1021;:6;;1013:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1077:1;1070:8;;;907:179;;;;:::o;9904:459::-;10013:7;5164;5159:30;;5173:16;:14;:16::i;:::-;5159:30;10034:15:::1;10051:23:::0;10076::::1;10101:13:::0;10118:19:::1;10129:7;10118:10;:19::i;:::-;10033:104;;;;;;;;10166:28;10186:7;10166;:15;10174:6;10166:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;10148:7;:15;10156:6;10148:15;;;;;;;;;;;;;;;:46;;;;10226:39;10249:15;10226:7;:18;10234:9;10226:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;10205:7;:18;10213:9;10205:18;;;;;;;;;;;;;;;:60;;;;10279:16;10289:5;10279:9;:16::i;:::-;10328:9;10311:44;;10320:6;10311:44;;;10339:15;10311:44;;;;;;:::i;:::-;;;;;;;;10022:341;;;;5217:7:::0;5212:31;;5226:17;:15;:17::i;:::-;5212:31;9904:459;;;;;:::o;11038:164::-;11080:7;11101:15;11118;11137:19;:17;:19::i;:::-;11100:56;;;;11174:20;11186:7;11174;:11;;:20;;;;:::i;:::-;11167:27;;;;11038:164;:::o;1830:189::-;1916:7;1948:1;1944;:5;1951:12;1936:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1975:9;1991:1;1987;:5;;;;:::i;:::-;1975:17;;2010:1;2003:8;;;1830:189;;;;;:::o;7138:137::-;7202:1;7191:8;;:12;7183:21;;;;;;7236:8;;7217:16;:27;;;;7266:1;7255:8;:12;;;;7138:137::o;10371:395::-;10430:7;10439;10448;10457;10478:23;10503:13;10520:30;10532:7;10541:8;;10520:11;:30::i;:::-;10477:73;;;;10561:19;10584:10;:8;:10::i;:::-;10561:33;;10606:15;10623:23;10650:40;10662:7;10671:5;10678:11;10650;:40::i;:::-;10605:85;;;;10709:7;10718:15;10735;10752:5;10701:57;;;;;;;;;;;;;10371:395;;;;;:::o;1094:136::-;1152:7;1179:43;1183:1;1186;1179:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1172:50;;1094:136;;;;:::o;11806:214::-;11859:19;11882:10;:8;:10::i;:::-;11859:33;;11903:13;11919:22;11929:11;11919:5;:9;;:22;;;;:::i;:::-;11903:38;;11979:33;12006:5;11979:7;:22;11995:4;11979:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;11954:7;:22;11970:4;11954:22;;;;;;;;;;;;;;;:58;;;;11848:172;;11806:214;:::o;7287:81::-;7344:16;;7333:8;:27;;;;7287:81::o;11210:257::-;11261:7;11270;11290:15;11308:7;;11290:25;;11326:15;4275:12;11326:25;;11376:20;4275:12;11376:7;;:11;;:20;;;;:::i;:::-;11366:7;:30;11362:61;;;11406:7;;4275:12;11398:25;;;;;;;;11362:61;11442:7;11451;11434:25;;;;;;11210:257;;;:::o;10774:256::-;10851:7;10860;10880:13;10896:29;10921:3;10896:20;10908:7;10896;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;10880:45;;10936:23;10962:18;10974:5;10962:7;:11;;:18;;;;:::i;:::-;10936:44;;10999:15;11016:5;10991:31;;;;;;10774:256;;;;;:::o;11475:323::-;11571:7;11580;11600:15;11618:24;11630:11;11618:7;:11;;:24;;;;:::i;:::-;11600:42;;11653:13;11669:22;11679:11;11669:5;:9;;:22;;;;:::i;:::-;11653:38;;11702:23;11728:18;11740:5;11728:7;:11;;:18;;;;:::i;:::-;11702:44;;11765:7;11774:15;11757:33;;;;;;;11475:323;;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:117::-;4580:1;4577;4570:12;4594:180;4642:77;4639:1;4632:88;4739:4;4736:1;4729:15;4763:4;4760:1;4753:15;4780:281;4863:27;4885:4;4863:27;:::i;:::-;4855:6;4851:40;4993:6;4981:10;4978:22;4957:18;4945:10;4942:34;4939:62;4936:88;;;5004:18;;:::i;:::-;4936:88;5044:10;5040:2;5033:22;4823:238;4780:281;;:::o;5067:129::-;5101:6;5128:20;;:::i;:::-;5118:30;;5157:33;5185:4;5177:6;5157:33;:::i;:::-;5067:129;;;:::o;5202:311::-;5279:4;5369:18;5361:6;5358:30;5355:56;;;5391:18;;:::i;:::-;5355:56;5441:4;5433:6;5429:17;5421:25;;5501:4;5495;5491:15;5483:23;;5202:311;;;:::o;5519:117::-;5628:1;5625;5618:12;5659:710;5755:5;5780:81;5796:64;5853:6;5796:64;:::i;:::-;5780:81;:::i;:::-;5771:90;;5881:5;5910:6;5903:5;5896:21;5944:4;5937:5;5933:16;5926:23;;5997:4;5989:6;5985:17;5977:6;5973:30;6026:3;6018:6;6015:15;6012:122;;;6045:79;;:::i;:::-;6012:122;6160:6;6143:220;6177:6;6172:3;6169:15;6143:220;;;6252:3;6281:37;6314:3;6302:10;6281:37;:::i;:::-;6276:3;6269:50;6348:4;6343:3;6339:14;6332:21;;6219:144;6203:4;6198:3;6194:14;6187:21;;6143:220;;;6147:21;5761:608;;5659:710;;;;;:::o;6392:370::-;6463:5;6512:3;6505:4;6497:6;6493:17;6489:27;6479:122;;6520:79;;:::i;:::-;6479:122;6637:6;6624:20;6662:94;6752:3;6744:6;6737:4;6729:6;6725:17;6662:94;:::i;:::-;6653:103;;6469:293;6392:370;;;;:::o;6768:539::-;6852:6;6901:2;6889:9;6880:7;6876:23;6872:32;6869:119;;;6907:79;;:::i;:::-;6869:119;7055:1;7044:9;7040:17;7027:31;7085:18;7077:6;7074:30;7071:117;;;7107:79;;:::i;:::-;7071:117;7212:78;7282:7;7273:6;7262:9;7258:22;7212:78;:::i;:::-;7202:88;;6998:302;6768:539;;;;:::o;7313:329::-;7372:6;7421:2;7409:9;7400:7;7396:23;7392:32;7389:119;;;7427:79;;:::i;:::-;7389:119;7547:1;7572:53;7617:7;7608:6;7597:9;7593:22;7572:53;:::i;:::-;7562:63;;7518:117;7313:329;;;;:::o;7648:104::-;7693:7;7722:24;7740:5;7722:24;:::i;:::-;7711:35;;7648:104;;;:::o;7758:138::-;7839:32;7865:5;7839:32;:::i;:::-;7832:5;7829:43;7819:71;;7886:1;7883;7876:12;7819:71;7758:138;:::o;7902:155::-;7956:5;7994:6;7981:20;7972:29;;8010:41;8045:5;8010:41;:::i;:::-;7902:155;;;;:::o;8063:345::-;8130:6;8179:2;8167:9;8158:7;8154:23;8150:32;8147:119;;;8185:79;;:::i;:::-;8147:119;8305:1;8330:61;8383:7;8374:6;8363:9;8359:22;8330:61;:::i;:::-;8320:71;;8276:125;8063:345;;;;:::o;8414:116::-;8484:21;8499:5;8484:21;:::i;:::-;8477:5;8474:32;8464:60;;8520:1;8517;8510:12;8464:60;8414:116;:::o;8536:133::-;8579:5;8617:6;8604:20;8595:29;;8633:30;8657:5;8633:30;:::i;:::-;8536:133;;;;:::o;8675:323::-;8731:6;8780:2;8768:9;8759:7;8755:23;8751:32;8748:119;;;8786:79;;:::i;:::-;8748:119;8906:1;8931:50;8973:7;8964:6;8953:9;8949:22;8931:50;:::i;:::-;8921:60;;8877:114;8675:323;;;;:::o;9004:118::-;9091:24;9109:5;9091:24;:::i;:::-;9086:3;9079:37;9004:118;;:::o;9128:222::-;9221:4;9259:2;9248:9;9244:18;9236:26;;9272:71;9340:1;9329:9;9325:17;9316:6;9272:71;:::i;:::-;9128:222;;;;:::o;9356:474::-;9424:6;9432;9481:2;9469:9;9460:7;9456:23;9452:32;9449:119;;;9487:79;;:::i;:::-;9449:119;9607:1;9632:53;9677:7;9668:6;9657:9;9653:22;9632:53;:::i;:::-;9622:63;;9578:117;9734:2;9760:53;9805:7;9796:6;9785:9;9781:22;9760:53;:::i;:::-;9750:63;;9705:118;9356:474;;;;;:::o;9836:329::-;9895:6;9944:2;9932:9;9923:7;9919:23;9915:32;9912:119;;;9950:79;;:::i;:::-;9912:119;10070:1;10095:53;10140:7;10131:6;10120:9;10116:22;10095:53;:::i;:::-;10085:63;;10041:117;9836:329;;;;:::o;10171:182::-;10311:34;10307:1;10299:6;10295:14;10288:58;10171:182;:::o;10359:366::-;10501:3;10522:67;10586:2;10581:3;10522:67;:::i;:::-;10515:74;;10598:93;10687:3;10598:93;:::i;:::-;10716:2;10711:3;10707:12;10700:19;;10359:366;;;:::o;10731:419::-;10897:4;10935:2;10924:9;10920:18;10912:26;;10984:9;10978:4;10974:20;10970:1;10959:9;10955:17;10948:47;11012:131;11138:4;11012:131;:::i;:::-;11004:139;;10731:419;;;:::o;11156:180::-;11204:77;11201:1;11194:88;11301:4;11298:1;11291:15;11325:4;11322:1;11315:15;11342:180;11390:77;11387:1;11380:88;11487:4;11484:1;11477:15;11511:4;11508:1;11501:15;11528:233;11567:3;11590:24;11608:5;11590:24;:::i;:::-;11581:33;;11636:66;11629:5;11626:77;11623:103;;;11706:18;;:::i;:::-;11623:103;11753:1;11746:5;11742:13;11735:20;;11528:233;;;:::o;11767:221::-;11907:34;11903:1;11895:6;11891:14;11884:58;11976:4;11971:2;11963:6;11959:15;11952:29;11767:221;:::o;11994:366::-;12136:3;12157:67;12221:2;12216:3;12157:67;:::i;:::-;12150:74;;12233:93;12322:3;12233:93;:::i;:::-;12351:2;12346:3;12342:12;12335:19;;11994:366;;;:::o;12366:419::-;12532:4;12570:2;12559:9;12555:18;12547:26;;12619:9;12613:4;12609:20;12605:1;12594:9;12590:17;12583:47;12647:131;12773:4;12647:131;:::i;:::-;12639:139;;12366:419;;;:::o;12791:305::-;12831:3;12850:20;12868:1;12850:20;:::i;:::-;12845:25;;12884:20;12902:1;12884:20;:::i;:::-;12879:25;;13038:1;12970:66;12966:74;12963:1;12960:81;12957:107;;;13044:18;;:::i;:::-;12957:107;13088:1;13085;13081:9;13074:16;;12791:305;;;;:::o;13102:224::-;13242:34;13238:1;13230:6;13226:14;13219:58;13311:7;13306:2;13298:6;13294:15;13287:32;13102:224;:::o;13332:366::-;13474:3;13495:67;13559:2;13554:3;13495:67;:::i;:::-;13488:74;;13571:93;13660:3;13571:93;:::i;:::-;13689:2;13684:3;13680:12;13673:19;;13332:366;;;:::o;13704:419::-;13870:4;13908:2;13897:9;13893:18;13885:26;;13957:9;13951:4;13947:20;13943:1;13932:9;13928:17;13921:47;13985:131;14111:4;13985:131;:::i;:::-;13977:139;;13704:419;;;:::o;14129:143::-;14186:5;14217:6;14211:13;14202:22;;14233:33;14260:5;14233:33;:::i;:::-;14129:143;;;;:::o;14278:351::-;14348:6;14397:2;14385:9;14376:7;14372:23;14368:32;14365:119;;;14403:79;;:::i;:::-;14365:119;14523:1;14548:64;14604:7;14595:6;14584:9;14580:22;14548:64;:::i;:::-;14538:74;;14494:128;14278:351;;;;:::o;14635:332::-;14756:4;14794:2;14783:9;14779:18;14771:26;;14807:71;14875:1;14864:9;14860:17;14851:6;14807:71;:::i;:::-;14888:72;14956:2;14945:9;14941:18;14932:6;14888:72;:::i;:::-;14635:332;;;;;:::o;14973:221::-;15113:34;15109:1;15101:6;15097:14;15090:58;15182:4;15177:2;15169:6;15165:15;15158:29;14973:221;:::o;15200:366::-;15342:3;15363:67;15427:2;15422:3;15363:67;:::i;:::-;15356:74;;15439:93;15528:3;15439:93;:::i;:::-;15557:2;15552:3;15548:12;15541:19;;15200:366;;;:::o;15572:419::-;15738:4;15776:2;15765:9;15761:18;15753:26;;15825:9;15819:4;15815:20;15811:1;15800:9;15796:17;15789:47;15853:131;15979:4;15853:131;:::i;:::-;15845:139;;15572:419;;;:::o;15997:225::-;16137:34;16133:1;16125:6;16121:14;16114:58;16206:8;16201:2;16193:6;16189:15;16182:33;15997:225;:::o;16228:366::-;16370:3;16391:67;16455:2;16450:3;16391:67;:::i;:::-;16384:74;;16467:93;16556:3;16467:93;:::i;:::-;16585:2;16580:3;16576:12;16569:19;;16228:366;;;:::o;16600:419::-;16766:4;16804:2;16793:9;16789:18;16781:26;;16853:9;16847:4;16843:20;16839:1;16828:9;16824:17;16817:47;16881:131;17007:4;16881:131;:::i;:::-;16873:139;;16600:419;;;:::o;17025:85::-;17070:7;17099:5;17088:16;;17025:85;;;:::o;17116:60::-;17144:3;17165:5;17158:12;;17116:60;;;:::o;17182:158::-;17240:9;17273:61;17291:42;17300:32;17326:5;17300:32;:::i;:::-;17291:42;:::i;:::-;17273:61;:::i;:::-;17260:74;;17182:158;;;:::o;17346:147::-;17441:45;17480:5;17441:45;:::i;:::-;17436:3;17429:58;17346:147;;:::o;17499:114::-;17566:6;17600:5;17594:12;17584:22;;17499:114;;;:::o;17619:184::-;17718:11;17752:6;17747:3;17740:19;17792:4;17787:3;17783:14;17768:29;;17619:184;;;;:::o;17809:132::-;17876:4;17899:3;17891:11;;17929:4;17924:3;17920:14;17912:22;;17809:132;;;:::o;17947:108::-;18024:24;18042:5;18024:24;:::i;:::-;18019:3;18012:37;17947:108;;:::o;18061:179::-;18130:10;18151:46;18193:3;18185:6;18151:46;:::i;:::-;18229:4;18224:3;18220:14;18206:28;;18061:179;;;;:::o;18246:113::-;18316:4;18348;18343:3;18339:14;18331:22;;18246:113;;;:::o;18395:732::-;18514:3;18543:54;18591:5;18543:54;:::i;:::-;18613:86;18692:6;18687:3;18613:86;:::i;:::-;18606:93;;18723:56;18773:5;18723:56;:::i;:::-;18802:7;18833:1;18818:284;18843:6;18840:1;18837:13;18818:284;;;18919:6;18913:13;18946:63;19005:3;18990:13;18946:63;:::i;:::-;18939:70;;19032:60;19085:6;19032:60;:::i;:::-;19022:70;;18878:224;18865:1;18862;18858:9;18853:14;;18818:284;;;18822:14;19118:3;19111:10;;18519:608;;;18395:732;;;;:::o;19133:831::-;19396:4;19434:3;19423:9;19419:19;19411:27;;19448:71;19516:1;19505:9;19501:17;19492:6;19448:71;:::i;:::-;19529:80;19605:2;19594:9;19590:18;19581:6;19529:80;:::i;:::-;19656:9;19650:4;19646:20;19641:2;19630:9;19626:18;19619:48;19684:108;19787:4;19778:6;19684:108;:::i;:::-;19676:116;;19802:72;19870:2;19859:9;19855:18;19846:6;19802:72;:::i;:::-;19884:73;19952:3;19941:9;19937:19;19928:6;19884:73;:::i;:::-;19133:831;;;;;;;;:::o;19970:223::-;20110:34;20106:1;20098:6;20094:14;20087:58;20179:6;20174:2;20166:6;20162:15;20155:31;19970:223;:::o;20199:366::-;20341:3;20362:67;20426:2;20421:3;20362:67;:::i;:::-;20355:74;;20438:93;20527:3;20438:93;:::i;:::-;20556:2;20551:3;20547:12;20540:19;;20199:366;;;:::o;20571:419::-;20737:4;20775:2;20764:9;20760:18;20752:26;;20824:9;20818:4;20814:20;20810:1;20799:9;20795:17;20788:47;20852:131;20978:4;20852:131;:::i;:::-;20844:139;;20571:419;;;:::o;20996:221::-;21136:34;21132:1;21124:6;21120:14;21113:58;21205:4;21200:2;21192:6;21188:15;21181:29;20996:221;:::o;21223:366::-;21365:3;21386:67;21450:2;21445:3;21386:67;:::i;:::-;21379:74;;21462:93;21551:3;21462:93;:::i;:::-;21580:2;21575:3;21571:12;21564:19;;21223:366;;;:::o;21595:419::-;21761:4;21799:2;21788:9;21784:18;21776:26;;21848:9;21842:4;21838:20;21834:1;21823:9;21819:17;21812:47;21876:131;22002:4;21876:131;:::i;:::-;21868:139;;21595:419;;;:::o;22020:224::-;22160:34;22156:1;22148:6;22144:14;22137:58;22229:7;22224:2;22216:6;22212:15;22205:32;22020:224;:::o;22250:366::-;22392:3;22413:67;22477:2;22472:3;22413:67;:::i;:::-;22406:74;;22489:93;22578:3;22489:93;:::i;:::-;22607:2;22602:3;22598:12;22591:19;;22250:366;;;:::o;22622:419::-;22788:4;22826:2;22815:9;22811:18;22803:26;;22875:9;22869:4;22865:20;22861:1;22850:9;22846:17;22839:47;22903:131;23029:4;22903:131;:::i;:::-;22895:139;;22622:419;;;:::o;23047:222::-;23187:34;23183:1;23175:6;23171:14;23164:58;23256:5;23251:2;23243:6;23239:15;23232:30;23047:222;:::o;23275:366::-;23417:3;23438:67;23502:2;23497:3;23438:67;:::i;:::-;23431:74;;23514:93;23603:3;23514:93;:::i;:::-;23632:2;23627:3;23623:12;23616:19;;23275:366;;;:::o;23647:419::-;23813:4;23851:2;23840:9;23836:18;23828:26;;23900:9;23894:4;23890:20;23886:1;23875:9;23871:17;23864:47;23928:131;24054:4;23928:131;:::i;:::-;23920:139;;23647:419;;;:::o;24072:228::-;24212:34;24208:1;24200:6;24196:14;24189:58;24281:11;24276:2;24268:6;24264:15;24257:36;24072:228;:::o;24306:366::-;24448:3;24469:67;24533:2;24528:3;24469:67;:::i;:::-;24462:74;;24545:93;24634:3;24545:93;:::i;:::-;24663:2;24658:3;24654:12;24647:19;;24306:366;;;:::o;24678:419::-;24844:4;24882:2;24871:9;24867:18;24859:26;;24931:9;24925:4;24921:20;24917:1;24906:9;24902:17;24895:47;24959:131;25085:4;24959:131;:::i;:::-;24951:139;;24678:419;;;:::o;25103:304::-;25243:34;25239:1;25231:6;25227:14;25220:58;25312:34;25307:2;25299:6;25295:15;25288:59;25381:18;25376:2;25368:6;25364:15;25357:43;25103:304;:::o;25413:366::-;25555:3;25576:67;25640:2;25635:3;25576:67;:::i;:::-;25569:74;;25652:93;25741:3;25652:93;:::i;:::-;25770:2;25765:3;25761:12;25754:19;;25413:366;;;:::o;25785:419::-;25951:4;25989:2;25978:9;25974:18;25966:26;;26038:9;26032:4;26028:20;26024:1;26013:9;26009:17;26002:47;26066:131;26192:4;26066:131;:::i;:::-;26058:139;;25785:419;;;:::o;26210:182::-;26350:34;26346:1;26338:6;26334:14;26327:58;26210:182;:::o;26398:366::-;26540:3;26561:67;26625:2;26620:3;26561:67;:::i;:::-;26554:74;;26637:93;26726:3;26637:93;:::i;:::-;26755:2;26750:3;26746:12;26739:19;;26398:366;;;:::o;26770:419::-;26936:4;26974:2;26963:9;26959:18;26951:26;;27023:9;27017:4;27013:20;27009:1;26998:9;26994:17;26987:47;27051:131;27177:4;27051:131;:::i;:::-;27043:139;;26770:419;;;:::o;27195:191::-;27235:4;27255:20;27273:1;27255:20;:::i;:::-;27250:25;;27289:20;27307:1;27289:20;:::i;:::-;27284:25;;27328:1;27325;27322:8;27319:34;;;27333:18;;:::i;:::-;27319:34;27378:1;27375;27371:9;27363:17;;27195:191;;;;:::o;27392:229::-;27532:34;27528:1;27520:6;27516:14;27509:58;27601:12;27596:2;27588:6;27584:15;27577:37;27392:229;:::o;27627:366::-;27769:3;27790:67;27854:2;27849:3;27790:67;:::i;:::-;27783:74;;27866:93;27955:3;27866:93;:::i;:::-;27984:2;27979:3;27975:12;27968:19;;27627:366;;;:::o;27999:419::-;28165:4;28203:2;28192:9;28188:18;28180:26;;28252:9;28246:4;28242:20;28238:1;28227:9;28223:17;28216:47;28280:131;28406:4;28280:131;:::i;:::-;28272:139;;27999:419;;;:::o;28424:348::-;28464:7;28487:20;28505:1;28487:20;:::i;:::-;28482:25;;28521:20;28539:1;28521:20;:::i;:::-;28516:25;;28709:1;28641:66;28637:74;28634:1;28631:81;28626:1;28619:9;28612:17;28608:105;28605:131;;;28716:18;;:::i;:::-;28605:131;28764:1;28761;28757:9;28746:20;;28424:348;;;;:::o;28778:180::-;28826:77;28823:1;28816:88;28923:4;28920:1;28913:15;28947:4;28944:1;28937:15;28964:185;29004:1;29021:20;29039:1;29021:20;:::i;:::-;29016:25;;29055:20;29073:1;29055:20;:::i;:::-;29050:25;;29094:1;29084:35;;29099:18;;:::i;:::-;29084:35;29141:1;29138;29134:9;29129:14;;28964:185;;;;:::o;29155:220::-;29295:34;29291:1;29283:6;29279:14;29272:58;29364:3;29359:2;29351:6;29347:15;29340:28;29155:220;:::o;29381:366::-;29523:3;29544:67;29608:2;29603:3;29544:67;:::i;:::-;29537:74;;29620:93;29709:3;29620:93;:::i;:::-;29738:2;29733:3;29729:12;29722:19;;29381:366;;;:::o;29753:419::-;29919:4;29957:2;29946:9;29942:18;29934:26;;30006:9;30000:4;29996:20;29992:1;29981:9;29977:17;29970:47;30034:131;30160:4;30034:131;:::i;:::-;30026:139;;29753:419;;;:::o;30178:177::-;30318:29;30314:1;30306:6;30302:14;30295:53;30178:177;:::o;30361:366::-;30503:3;30524:67;30588:2;30583:3;30524:67;:::i;:::-;30517:74;;30600:93;30689:3;30600:93;:::i;:::-;30718:2;30713:3;30709:12;30702:19;;30361:366;;;:::o;30733:419::-;30899:4;30937:2;30926:9;30922:18;30914:26;;30986:9;30980:4;30976:20;30972:1;30961:9;30957:17;30950:47;31014:131;31140:4;31014:131;:::i;:::-;31006:139;;30733:419;;;:::o

Swarm Source

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