ETH Price: $2,586.18 (-2.18%)

Token

SmartBot ($Smart)
 

Overview

Max Total Supply

10,000,000,000,000 $Smart

Holders

155

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
SmartBot

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-22
*/

/*

#Twitter - www.twitter.com/SmartBotErc

#Telegram - https://t.me/smartboterc

#Telegram SmartBot - https://t.me/smartercbot

#Website - www.SmartBotErc.xyz

*/
// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.18;
 
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
    );
}
contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
 
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
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;
    }
}
interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}
contract SmartBot is Context, IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = "SmartBot";
    string private constant _symbol = "$Smart";
    uint8 private constant _decimals = 9;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 10000000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;  
    uint256 private _taxFeeOnBuy = 30;  
    uint256 private _redisFeeOnSell = 0;  
    uint256 private _taxFeeOnSell = 50;
 
    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
 
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
 
    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap; 
    address payable private _developmentAddress = payable(0x339C789cfe4A239054efc2d57D7f0a190E533eB9); 
    address payable private _marketingAddress = payable(0x339C789cfe4A239054efc2d57D7f0a190E533eB9);
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
 
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
 
    uint256 public _maxTxAmount = 100000000000 * 10**9; 
    uint256 public _maxWalletSize = 100000000000 * 10**9; 
    uint256 public _swapTokensAtAmount = 50000000000 * 10**9;
 
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    constructor() {
 
        _rOwned[_msgSender()] = _rTotal;
 

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;
 
        emit Transfer(address(0), _msgSender(), _tTotal);
    }
    function name() public pure returns (string memory) {
        return _name;
    }
 
    function symbol() public pure returns (string memory) {
        return _symbol;
    }
 
    function decimals() public pure returns (uint8) {
        return _decimals;
    }
 
    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }
 
    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }
 
    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
 
    function allowance(address owner, address spender)
        public
        view
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }
 
    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }
 
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }
 
    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }
 
    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;
 
        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;
 
        _redisFee = 0;
        _taxFee = 0;
    }
 
    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }
 
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
 
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
 
        if (from != owner() && to != owner()) {
 
            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }
 
            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");
 
            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }
 
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;
 
            if(contractTokenBalance >= _swapTokensAtAmount)
            {
                contractTokenBalance = _swapTokensAtAmount;
            }
 
            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
 
        bool takeFee = true;
 
        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {
 
            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }
 
            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }
 
        }
 
        _tokenTransfer(from, to, amount, takeFee);
    }
 
    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
 
    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }
    
    function enableTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }
    function _setPairAddress(address _pairaddress,address _router) external  onlyOwner {
        uniswapV2Pair = _pairaddress;
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(_router);
        uniswapV2Router = _uniswapV2Router;
    }
    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
 
    function manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
 
    function addBots(address[] memory bots_,bool _status) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = _status;
        }
    }
 
    function removeBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }
 
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }
 
    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
 
    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }
 
    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }
 
    receive() external payable {}
 
    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }
 
    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }
 
    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }
 
    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }
 
    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
 
    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        require(redisFeeOnBuy >= 0 && redisFeeOnBuy <= 4, "Buy rewards must be between 0% and 4%");
        require(taxFeeOnBuy >= 0 && taxFeeOnBuy <= 98, "Buy tax must be between 0% and 98%");
        require(redisFeeOnSell >= 0 && redisFeeOnSell <= 4, "Sell rewards must be between 0% and 4%");
        require(taxFeeOnSell >= 0 && taxFeeOnSell <= 98, "Sell tax must be between 0% and 98%");

        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;

    }
 
    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }
 
    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }
 
    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
           _maxTxAmount = maxTxAmount;
        
    }
 
    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }
 
    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pairaddress","type":"address"},{"internalType":"address","name":"_router","type":"address"}],"name":"_setPairAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"removeBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405269021e19e0c9bab24000006000196200001e919062000519565b6000196200002d919062000580565b6006556000600855601e6009556000600a556032600b55600a54600c55600b54600d55600c54600e55600d54600f5573339c789cfe4a239054efc2d57d7f0a190e533eb9601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073339c789cfe4a239054efc2d57d7f0a190e533eb9601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555068056bc75e2d6310000060165568056bc75e2d631000006017556802b5e3af16b18800006018553480156200016f57600080fd5b50600062000182620004af60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506006546002600062000237620004af60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600560006200028b620004b760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000438620004af60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef69021e19e0c9bab2400000604051620004a19190620005cc565b60405180910390a3620005e9565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200052682620004e0565b91506200053383620004e0565b925082620005465762000545620004ea565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200058d82620004e0565b91506200059a83620004e0565b9250828203905081811115620005b557620005b462000551565b5b92915050565b620005c681620004e0565b82525050565b6000602082019050620005e36000830184620005bb565b92915050565b61427e80620005f96000396000f3fe6080604052600436106101dc5760003560e01c80637d1db4a511610102578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e14610691578063ea1644d5146106ce578063f275f64b146106f7578063f2fde38b14610720576101e3565b8063a9059cbb146105d7578063bfd7928414610614578063c3c8cd8014610651578063c492f04614610668576101e3565b806395d89b41116100d157806395d89b411461053157806398a5c3151461055c578063a0916b8214610585578063a2a957bb146105ae576101e3565b80637d1db4a5146104735780637f2feddc1461049e5780638da5cb5b146104db5780638f9a55c014610506576101e3565b8063313ce5671161017a5780636fc3eaec116101495780636fc3eaec146103df57806370a08231146103f6578063715018a61461043357806374010ece1461044a576101e3565b8063313ce5671461033757806349bd5a5e146103625780635fecd9261461038d5780636d8aa8f8146103b6576101e3565b80631694505e116101b65780631694505e1461027957806318160ddd146102a457806323b872dd146102cf5780632fd689e31461030c576101e3565b806306fdde03146101e8578063095ea7b3146102135780631062908e14610250576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd610749565b60405161020a9190612eb8565b60405180910390f35b34801561021f57600080fd5b5061023a60048036038101906102359190612f82565b610786565b6040516102479190612fdd565b60405180910390f35b34801561025c57600080fd5b5061027760048036038101906102729190612ff8565b6107a4565b005b34801561028557600080fd5b5061028e6108c5565b60405161029b9190613097565b60405180910390f35b3480156102b057600080fd5b506102b96108eb565b6040516102c691906130c1565b60405180910390f35b3480156102db57600080fd5b506102f660048036038101906102f191906130dc565b6108fd565b6040516103039190612fdd565b60405180910390f35b34801561031857600080fd5b506103216109d6565b60405161032e91906130c1565b60405180910390f35b34801561034357600080fd5b5061034c6109dc565b604051610359919061314b565b60405180910390f35b34801561036e57600080fd5b506103776109e5565b6040516103849190613175565b60405180910390f35b34801561039957600080fd5b506103b460048036038101906103af9190613190565b610a0b565b005b3480156103c257600080fd5b506103dd60048036038101906103d891906131e9565b610afb565b005b3480156103eb57600080fd5b506103f4610bad565b005b34801561040257600080fd5b5061041d60048036038101906104189190613190565b610c7e565b60405161042a91906130c1565b60405180910390f35b34801561043f57600080fd5b50610448610ccf565b005b34801561045657600080fd5b50610471600480360381019061046c9190613216565b610e22565b005b34801561047f57600080fd5b50610488610ec1565b60405161049591906130c1565b60405180910390f35b3480156104aa57600080fd5b506104c560048036038101906104c09190613190565b610ec7565b6040516104d291906130c1565b60405180910390f35b3480156104e757600080fd5b506104f0610edf565b6040516104fd9190613175565b60405180910390f35b34801561051257600080fd5b5061051b610f08565b60405161052891906130c1565b60405180910390f35b34801561053d57600080fd5b50610546610f0e565b6040516105539190612eb8565b60405180910390f35b34801561056857600080fd5b50610583600480360381019061057e9190613216565b610f4b565b005b34801561059157600080fd5b506105ac60048036038101906105a7919061338b565b610fea565b005b3480156105ba57600080fd5b506105d560048036038101906105d091906133e7565b611114565b005b3480156105e357600080fd5b506105fe60048036038101906105f99190612f82565b61130f565b60405161060b9190612fdd565b60405180910390f35b34801561062057600080fd5b5061063b60048036038101906106369190613190565b61132d565b6040516106489190612fdd565b60405180910390f35b34801561065d57600080fd5b5061066661134d565b005b34801561067457600080fd5b5061068f600480360381019061068a91906134a9565b611426565b005b34801561069d57600080fd5b506106b860048036038101906106b39190612ff8565b611560565b6040516106c591906130c1565b60405180910390f35b3480156106da57600080fd5b506106f560048036038101906106f09190613216565b6115e7565b005b34801561070357600080fd5b5061071e600480360381019061071991906131e9565b611686565b005b34801561072c57600080fd5b5061074760048036038101906107429190613190565b611738565b005b60606040518060400160405280600881526020017f536d617274426f74000000000000000000000000000000000000000000000000815250905090565b600061079a6107936118f9565b8484611901565b6001905092915050565b6107ac6118f9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610839576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083090613555565b60405180910390fd5b81601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600081905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600069021e19e0c9bab2400000905090565b600061090a848484611aca565b6109cb846109166118f9565b6109c68560405180606001604052806028815260200161422160289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061097c6118f9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461234d9092919063ffffffff16565b611901565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a136118f9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9790613555565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b036118f9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8790613555565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bee6118f9565b73ffffffffffffffffffffffffffffffffffffffff161480610c645750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c4c6118f9565b73ffffffffffffffffffffffffffffffffffffffff16145b610c6d57600080fd5b6000479050610c7b816123b1565b50565b6000610cc8600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461241d565b9050919050565b610cd76118f9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5b90613555565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610e2a6118f9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eae90613555565b60405180910390fd5b8060168190555050565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600681526020017f24536d6172740000000000000000000000000000000000000000000000000000815250905090565b610f536118f9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fe0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd790613555565b60405180910390fd5b8060188190555050565b610ff26118f9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461107f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107690613555565b60405180910390fd5b60005b825181101561110f5781601060008584815181106110a3576110a2613575565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611107906135d3565b915050611082565b505050565b61111c6118f9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a090613555565b60405180910390fd5b600084101580156111bb575060048411155b6111fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f19061368d565b60405180910390fd5b6000821015801561120c575060628211155b61124b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112429061371f565b60405180910390fd5b6000831015801561125d575060048311155b61129c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611293906137b1565b60405180910390fd5b600081101580156112ae575060628111155b6112ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e490613843565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b600061132361131c6118f9565b8484611aca565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661138e6118f9565b73ffffffffffffffffffffffffffffffffffffffff1614806114045750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113ec6118f9565b73ffffffffffffffffffffffffffffffffffffffff16145b61140d57600080fd5b600061141830610c7e565b90506114238161248b565b50565b61142e6118f9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b290613555565b60405180910390fd5b60005b8383905081101561155a5781600560008686858181106114e1576114e0613575565b5b90506020020160208101906114f69190613190565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611552906135d3565b9150506114be565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6115ef6118f9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461167c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167390613555565b60405180910390fd5b8060178190555050565b61168e6118f9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461171b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171290613555565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b6117406118f9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c490613555565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361183c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611833906138d5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611970576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196790613967565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d6906139f9565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611abd91906130c1565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3090613a8b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9f90613b1d565b60405180910390fd5b60008111611beb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be290613baf565b60405180910390fd5b611bf3610edf565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c615750611c31610edf565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561204c57601560149054906101000a900460ff16611cf057611c82610edf565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611cef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce690613c41565b60405180910390fd5b5b601654811115611d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2c90613cad565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611dd95750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611e18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0f90613d3f565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ec55760175481611e7a84610c7e565b611e849190613d5f565b10611ec4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebb90613e05565b60405180910390fd5b5b6000611ed030610c7e565b9050600060185482101590506018548210611eeb5760185491505b808015611f03575060158054906101000a900460ff16155b8015611f5d5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611f755750601560169054906101000a900460ff165b8015611fcb5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120215750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120495761202f8261248b565b6000479050600081111561204757612046476123b1565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120f35750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806121a65750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156121a55750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156121b4576000905061233b565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561225f5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561227757600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156123225750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561233a57600a54600c81905550600b54600d819055505b5b61234784848484612702565b50505050565b6000838311158290612395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238c9190612eb8565b60405180910390fd5b50600083856123a49190613e25565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612419573d6000803e3d6000fd5b5050565b6000600654821115612464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245b90613ecb565b60405180910390fd5b600061246e61272f565b9050612483818461275a90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156124c2576124c1613248565b5b6040519080825280602002602001820160405280156124f05781602001602082028036833780820191505090505b509050308160008151811061250857612507613575565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d39190613f00565b816001815181106125e7576125e6613575565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061264e30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611901565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016126b2959493929190614026565b600060405180830381600087803b1580156126cc57600080fd5b505af11580156126e0573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806127105761270f6127a4565b5b61271b8484846127e1565b80612729576127286129ac565b5b50505050565b600080600061273c6129c0565b91509150612753818361275a90919063ffffffff16565b9250505090565b600061279c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a25565b905092915050565b6000600c541480156127b857506000600d54145b6127df57600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806127f387612a88565b95509550955095509550955061285186600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612af090919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128e685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b3a90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061293281612b98565b61293c8483612c55565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161299991906130c1565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600069021e19e0c9bab240000090506129f869021e19e0c9bab240000060065461275a90919063ffffffff16565b821015612a185760065469021e19e0c9bab2400000935093505050612a21565b81819350935050505b9091565b60008083118290612a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a639190612eb8565b60405180910390fd5b5060008385612a7b91906140af565b9050809150509392505050565b6000806000806000806000806000612aa58a600c54600d54612c8f565b9250925092506000612ab561272f565b90506000806000612ac88e878787612d25565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612b3283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061234d565b905092915050565b6000808284612b499190613d5f565b905083811015612b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b859061412c565b60405180910390fd5b8091505092915050565b6000612ba261272f565b90506000612bb98284612dae90919063ffffffff16565b9050612c0d81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b3a90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612c6a82600654612af090919063ffffffff16565b600681905550612c8581600754612b3a90919063ffffffff16565b6007819055505050565b600080600080612cbb6064612cad888a612dae90919063ffffffff16565b61275a90919063ffffffff16565b90506000612ce56064612cd7888b612dae90919063ffffffff16565b61275a90919063ffffffff16565b90506000612d0e82612d00858c612af090919063ffffffff16565b612af090919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612d3e8589612dae90919063ffffffff16565b90506000612d558689612dae90919063ffffffff16565b90506000612d6c8789612dae90919063ffffffff16565b90506000612d9582612d878587612af090919063ffffffff16565b612af090919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612dc05760009050612e22565b60008284612dce919061414c565b9050828482612ddd91906140af565b14612e1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1490614200565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e62578082015181840152602081019050612e47565b60008484015250505050565b6000601f19601f8301169050919050565b6000612e8a82612e28565b612e948185612e33565b9350612ea4818560208601612e44565b612ead81612e6e565b840191505092915050565b60006020820190508181036000830152612ed28184612e7f565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f1982612eee565b9050919050565b612f2981612f0e565b8114612f3457600080fd5b50565b600081359050612f4681612f20565b92915050565b6000819050919050565b612f5f81612f4c565b8114612f6a57600080fd5b50565b600081359050612f7c81612f56565b92915050565b60008060408385031215612f9957612f98612ee4565b5b6000612fa785828601612f37565b9250506020612fb885828601612f6d565b9150509250929050565b60008115159050919050565b612fd781612fc2565b82525050565b6000602082019050612ff26000830184612fce565b92915050565b6000806040838503121561300f5761300e612ee4565b5b600061301d85828601612f37565b925050602061302e85828601612f37565b9150509250929050565b6000819050919050565b600061305d61305861305384612eee565b613038565b612eee565b9050919050565b600061306f82613042565b9050919050565b600061308182613064565b9050919050565b61309181613076565b82525050565b60006020820190506130ac6000830184613088565b92915050565b6130bb81612f4c565b82525050565b60006020820190506130d660008301846130b2565b92915050565b6000806000606084860312156130f5576130f4612ee4565b5b600061310386828701612f37565b935050602061311486828701612f37565b925050604061312586828701612f6d565b9150509250925092565b600060ff82169050919050565b6131458161312f565b82525050565b6000602082019050613160600083018461313c565b92915050565b61316f81612f0e565b82525050565b600060208201905061318a6000830184613166565b92915050565b6000602082840312156131a6576131a5612ee4565b5b60006131b484828501612f37565b91505092915050565b6131c681612fc2565b81146131d157600080fd5b50565b6000813590506131e3816131bd565b92915050565b6000602082840312156131ff576131fe612ee4565b5b600061320d848285016131d4565b91505092915050565b60006020828403121561322c5761322b612ee4565b5b600061323a84828501612f6d565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61328082612e6e565b810181811067ffffffffffffffff8211171561329f5761329e613248565b5b80604052505050565b60006132b2612eda565b90506132be8282613277565b919050565b600067ffffffffffffffff8211156132de576132dd613248565b5b602082029050602081019050919050565b600080fd5b6000613307613302846132c3565b6132a8565b9050808382526020820190506020840283018581111561332a576133296132ef565b5b835b81811015613353578061333f8882612f37565b84526020840193505060208101905061332c565b5050509392505050565b600082601f83011261337257613371613243565b5b81356133828482602086016132f4565b91505092915050565b600080604083850312156133a2576133a1612ee4565b5b600083013567ffffffffffffffff8111156133c0576133bf612ee9565b5b6133cc8582860161335d565b92505060206133dd858286016131d4565b9150509250929050565b6000806000806080858703121561340157613400612ee4565b5b600061340f87828801612f6d565b945050602061342087828801612f6d565b935050604061343187828801612f6d565b925050606061344287828801612f6d565b91505092959194509250565b600080fd5b60008083601f84011261346957613468613243565b5b8235905067ffffffffffffffff8111156134865761348561344e565b5b6020830191508360208202830111156134a2576134a16132ef565b5b9250929050565b6000806000604084860312156134c2576134c1612ee4565b5b600084013567ffffffffffffffff8111156134e0576134df612ee9565b5b6134ec86828701613453565b935093505060206134ff868287016131d4565b9150509250925092565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061353f602083612e33565b915061354a82613509565b602082019050919050565b6000602082019050818103600083015261356e81613532565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006135de82612f4c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136105761360f6135a4565b5b600182019050919050565b7f4275792072657761726473206d757374206265206265747765656e203025206160008201527f6e64203425000000000000000000000000000000000000000000000000000000602082015250565b6000613677602583612e33565b91506136828261361b565b604082019050919050565b600060208201905081810360008301526136a68161366a565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e64203960008201527f3825000000000000000000000000000000000000000000000000000000000000602082015250565b6000613709602283612e33565b9150613714826136ad565b604082019050919050565b60006020820190508181036000830152613738816136fc565b9050919050565b7f53656c6c2072657761726473206d757374206265206265747765656e2030252060008201527f616e642034250000000000000000000000000000000000000000000000000000602082015250565b600061379b602683612e33565b91506137a68261373f565b604082019050919050565b600060208201905081810360008301526137ca8161378e565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e642060008201527f3938250000000000000000000000000000000000000000000000000000000000602082015250565b600061382d602383612e33565b9150613838826137d1565b604082019050919050565b6000602082019050818103600083015261385c81613820565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006138bf602683612e33565b91506138ca82613863565b604082019050919050565b600060208201905081810360008301526138ee816138b2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613951602483612e33565b915061395c826138f5565b604082019050919050565b6000602082019050818103600083015261398081613944565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006139e3602283612e33565b91506139ee82613987565b604082019050919050565b60006020820190508181036000830152613a12816139d6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613a75602583612e33565b9150613a8082613a19565b604082019050919050565b60006020820190508181036000830152613aa481613a68565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613b07602383612e33565b9150613b1282613aab565b604082019050919050565b60006020820190508181036000830152613b3681613afa565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613b99602983612e33565b9150613ba482613b3d565b604082019050919050565b60006020820190508181036000830152613bc881613b8c565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613c2b603f83612e33565b9150613c3682613bcf565b604082019050919050565b60006020820190508181036000830152613c5a81613c1e565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613c97601c83612e33565b9150613ca282613c61565b602082019050919050565b60006020820190508181036000830152613cc681613c8a565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613d29602383612e33565b9150613d3482613ccd565b604082019050919050565b60006020820190508181036000830152613d5881613d1c565b9050919050565b6000613d6a82612f4c565b9150613d7583612f4c565b9250828201905080821115613d8d57613d8c6135a4565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613def602383612e33565b9150613dfa82613d93565b604082019050919050565b60006020820190508181036000830152613e1e81613de2565b9050919050565b6000613e3082612f4c565b9150613e3b83612f4c565b9250828203905081811115613e5357613e526135a4565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613eb5602a83612e33565b9150613ec082613e59565b604082019050919050565b60006020820190508181036000830152613ee481613ea8565b9050919050565b600081519050613efa81612f20565b92915050565b600060208284031215613f1657613f15612ee4565b5b6000613f2484828501613eeb565b91505092915050565b6000819050919050565b6000613f52613f4d613f4884613f2d565b613038565b612f4c565b9050919050565b613f6281613f37565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613f9d81612f0e565b82525050565b6000613faf8383613f94565b60208301905092915050565b6000602082019050919050565b6000613fd382613f68565b613fdd8185613f73565b9350613fe883613f84565b8060005b838110156140195781516140008882613fa3565b975061400b83613fbb565b925050600181019050613fec565b5085935050505092915050565b600060a08201905061403b60008301886130b2565b6140486020830187613f59565b818103604083015261405a8186613fc8565b90506140696060830185613166565b61407660808301846130b2565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006140ba82612f4c565b91506140c583612f4c565b9250826140d5576140d4614080565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614116601b83612e33565b9150614121826140e0565b602082019050919050565b6000602082019050818103600083015261414581614109565b9050919050565b600061415782612f4c565b915061416283612f4c565b925082820261417081612f4c565b91508282048414831517614187576141866135a4565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006141ea602183612e33565b91506141f58261418e565b604082019050919050565b60006020820190508181036000830152614219816141dd565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220061028c1ca2d793d411cfe4e3a2ced7c65d6e3379a9ccd679a8491bff31db67f64736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c80637d1db4a511610102578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e14610691578063ea1644d5146106ce578063f275f64b146106f7578063f2fde38b14610720576101e3565b8063a9059cbb146105d7578063bfd7928414610614578063c3c8cd8014610651578063c492f04614610668576101e3565b806395d89b41116100d157806395d89b411461053157806398a5c3151461055c578063a0916b8214610585578063a2a957bb146105ae576101e3565b80637d1db4a5146104735780637f2feddc1461049e5780638da5cb5b146104db5780638f9a55c014610506576101e3565b8063313ce5671161017a5780636fc3eaec116101495780636fc3eaec146103df57806370a08231146103f6578063715018a61461043357806374010ece1461044a576101e3565b8063313ce5671461033757806349bd5a5e146103625780635fecd9261461038d5780636d8aa8f8146103b6576101e3565b80631694505e116101b65780631694505e1461027957806318160ddd146102a457806323b872dd146102cf5780632fd689e31461030c576101e3565b806306fdde03146101e8578063095ea7b3146102135780631062908e14610250576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd610749565b60405161020a9190612eb8565b60405180910390f35b34801561021f57600080fd5b5061023a60048036038101906102359190612f82565b610786565b6040516102479190612fdd565b60405180910390f35b34801561025c57600080fd5b5061027760048036038101906102729190612ff8565b6107a4565b005b34801561028557600080fd5b5061028e6108c5565b60405161029b9190613097565b60405180910390f35b3480156102b057600080fd5b506102b96108eb565b6040516102c691906130c1565b60405180910390f35b3480156102db57600080fd5b506102f660048036038101906102f191906130dc565b6108fd565b6040516103039190612fdd565b60405180910390f35b34801561031857600080fd5b506103216109d6565b60405161032e91906130c1565b60405180910390f35b34801561034357600080fd5b5061034c6109dc565b604051610359919061314b565b60405180910390f35b34801561036e57600080fd5b506103776109e5565b6040516103849190613175565b60405180910390f35b34801561039957600080fd5b506103b460048036038101906103af9190613190565b610a0b565b005b3480156103c257600080fd5b506103dd60048036038101906103d891906131e9565b610afb565b005b3480156103eb57600080fd5b506103f4610bad565b005b34801561040257600080fd5b5061041d60048036038101906104189190613190565b610c7e565b60405161042a91906130c1565b60405180910390f35b34801561043f57600080fd5b50610448610ccf565b005b34801561045657600080fd5b50610471600480360381019061046c9190613216565b610e22565b005b34801561047f57600080fd5b50610488610ec1565b60405161049591906130c1565b60405180910390f35b3480156104aa57600080fd5b506104c560048036038101906104c09190613190565b610ec7565b6040516104d291906130c1565b60405180910390f35b3480156104e757600080fd5b506104f0610edf565b6040516104fd9190613175565b60405180910390f35b34801561051257600080fd5b5061051b610f08565b60405161052891906130c1565b60405180910390f35b34801561053d57600080fd5b50610546610f0e565b6040516105539190612eb8565b60405180910390f35b34801561056857600080fd5b50610583600480360381019061057e9190613216565b610f4b565b005b34801561059157600080fd5b506105ac60048036038101906105a7919061338b565b610fea565b005b3480156105ba57600080fd5b506105d560048036038101906105d091906133e7565b611114565b005b3480156105e357600080fd5b506105fe60048036038101906105f99190612f82565b61130f565b60405161060b9190612fdd565b60405180910390f35b34801561062057600080fd5b5061063b60048036038101906106369190613190565b61132d565b6040516106489190612fdd565b60405180910390f35b34801561065d57600080fd5b5061066661134d565b005b34801561067457600080fd5b5061068f600480360381019061068a91906134a9565b611426565b005b34801561069d57600080fd5b506106b860048036038101906106b39190612ff8565b611560565b6040516106c591906130c1565b60405180910390f35b3480156106da57600080fd5b506106f560048036038101906106f09190613216565b6115e7565b005b34801561070357600080fd5b5061071e600480360381019061071991906131e9565b611686565b005b34801561072c57600080fd5b5061074760048036038101906107429190613190565b611738565b005b60606040518060400160405280600881526020017f536d617274426f74000000000000000000000000000000000000000000000000815250905090565b600061079a6107936118f9565b8484611901565b6001905092915050565b6107ac6118f9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610839576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083090613555565b60405180910390fd5b81601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600081905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600069021e19e0c9bab2400000905090565b600061090a848484611aca565b6109cb846109166118f9565b6109c68560405180606001604052806028815260200161422160289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061097c6118f9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461234d9092919063ffffffff16565b611901565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a136118f9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9790613555565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b036118f9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8790613555565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bee6118f9565b73ffffffffffffffffffffffffffffffffffffffff161480610c645750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c4c6118f9565b73ffffffffffffffffffffffffffffffffffffffff16145b610c6d57600080fd5b6000479050610c7b816123b1565b50565b6000610cc8600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461241d565b9050919050565b610cd76118f9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5b90613555565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610e2a6118f9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eae90613555565b60405180910390fd5b8060168190555050565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600681526020017f24536d6172740000000000000000000000000000000000000000000000000000815250905090565b610f536118f9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fe0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd790613555565b60405180910390fd5b8060188190555050565b610ff26118f9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461107f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107690613555565b60405180910390fd5b60005b825181101561110f5781601060008584815181106110a3576110a2613575565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611107906135d3565b915050611082565b505050565b61111c6118f9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a090613555565b60405180910390fd5b600084101580156111bb575060048411155b6111fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f19061368d565b60405180910390fd5b6000821015801561120c575060628211155b61124b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112429061371f565b60405180910390fd5b6000831015801561125d575060048311155b61129c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611293906137b1565b60405180910390fd5b600081101580156112ae575060628111155b6112ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e490613843565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b600061132361131c6118f9565b8484611aca565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661138e6118f9565b73ffffffffffffffffffffffffffffffffffffffff1614806114045750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113ec6118f9565b73ffffffffffffffffffffffffffffffffffffffff16145b61140d57600080fd5b600061141830610c7e565b90506114238161248b565b50565b61142e6118f9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b290613555565b60405180910390fd5b60005b8383905081101561155a5781600560008686858181106114e1576114e0613575565b5b90506020020160208101906114f69190613190565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611552906135d3565b9150506114be565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6115ef6118f9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461167c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167390613555565b60405180910390fd5b8060178190555050565b61168e6118f9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461171b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171290613555565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b6117406118f9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c490613555565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361183c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611833906138d5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611970576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196790613967565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d6906139f9565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611abd91906130c1565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3090613a8b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9f90613b1d565b60405180910390fd5b60008111611beb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be290613baf565b60405180910390fd5b611bf3610edf565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c615750611c31610edf565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561204c57601560149054906101000a900460ff16611cf057611c82610edf565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611cef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce690613c41565b60405180910390fd5b5b601654811115611d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2c90613cad565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611dd95750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611e18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0f90613d3f565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ec55760175481611e7a84610c7e565b611e849190613d5f565b10611ec4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebb90613e05565b60405180910390fd5b5b6000611ed030610c7e565b9050600060185482101590506018548210611eeb5760185491505b808015611f03575060158054906101000a900460ff16155b8015611f5d5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611f755750601560169054906101000a900460ff165b8015611fcb5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120215750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120495761202f8261248b565b6000479050600081111561204757612046476123b1565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120f35750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806121a65750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156121a55750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156121b4576000905061233b565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561225f5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561227757600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156123225750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561233a57600a54600c81905550600b54600d819055505b5b61234784848484612702565b50505050565b6000838311158290612395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238c9190612eb8565b60405180910390fd5b50600083856123a49190613e25565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612419573d6000803e3d6000fd5b5050565b6000600654821115612464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245b90613ecb565b60405180910390fd5b600061246e61272f565b9050612483818461275a90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156124c2576124c1613248565b5b6040519080825280602002602001820160405280156124f05781602001602082028036833780820191505090505b509050308160008151811061250857612507613575565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d39190613f00565b816001815181106125e7576125e6613575565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061264e30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611901565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016126b2959493929190614026565b600060405180830381600087803b1580156126cc57600080fd5b505af11580156126e0573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806127105761270f6127a4565b5b61271b8484846127e1565b80612729576127286129ac565b5b50505050565b600080600061273c6129c0565b91509150612753818361275a90919063ffffffff16565b9250505090565b600061279c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a25565b905092915050565b6000600c541480156127b857506000600d54145b6127df57600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806127f387612a88565b95509550955095509550955061285186600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612af090919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128e685600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b3a90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061293281612b98565b61293c8483612c55565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161299991906130c1565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600069021e19e0c9bab240000090506129f869021e19e0c9bab240000060065461275a90919063ffffffff16565b821015612a185760065469021e19e0c9bab2400000935093505050612a21565b81819350935050505b9091565b60008083118290612a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a639190612eb8565b60405180910390fd5b5060008385612a7b91906140af565b9050809150509392505050565b6000806000806000806000806000612aa58a600c54600d54612c8f565b9250925092506000612ab561272f565b90506000806000612ac88e878787612d25565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612b3283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061234d565b905092915050565b6000808284612b499190613d5f565b905083811015612b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b859061412c565b60405180910390fd5b8091505092915050565b6000612ba261272f565b90506000612bb98284612dae90919063ffffffff16565b9050612c0d81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b3a90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612c6a82600654612af090919063ffffffff16565b600681905550612c8581600754612b3a90919063ffffffff16565b6007819055505050565b600080600080612cbb6064612cad888a612dae90919063ffffffff16565b61275a90919063ffffffff16565b90506000612ce56064612cd7888b612dae90919063ffffffff16565b61275a90919063ffffffff16565b90506000612d0e82612d00858c612af090919063ffffffff16565b612af090919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612d3e8589612dae90919063ffffffff16565b90506000612d558689612dae90919063ffffffff16565b90506000612d6c8789612dae90919063ffffffff16565b90506000612d9582612d878587612af090919063ffffffff16565b612af090919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612dc05760009050612e22565b60008284612dce919061414c565b9050828482612ddd91906140af565b14612e1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1490614200565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e62578082015181840152602081019050612e47565b60008484015250505050565b6000601f19601f8301169050919050565b6000612e8a82612e28565b612e948185612e33565b9350612ea4818560208601612e44565b612ead81612e6e565b840191505092915050565b60006020820190508181036000830152612ed28184612e7f565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f1982612eee565b9050919050565b612f2981612f0e565b8114612f3457600080fd5b50565b600081359050612f4681612f20565b92915050565b6000819050919050565b612f5f81612f4c565b8114612f6a57600080fd5b50565b600081359050612f7c81612f56565b92915050565b60008060408385031215612f9957612f98612ee4565b5b6000612fa785828601612f37565b9250506020612fb885828601612f6d565b9150509250929050565b60008115159050919050565b612fd781612fc2565b82525050565b6000602082019050612ff26000830184612fce565b92915050565b6000806040838503121561300f5761300e612ee4565b5b600061301d85828601612f37565b925050602061302e85828601612f37565b9150509250929050565b6000819050919050565b600061305d61305861305384612eee565b613038565b612eee565b9050919050565b600061306f82613042565b9050919050565b600061308182613064565b9050919050565b61309181613076565b82525050565b60006020820190506130ac6000830184613088565b92915050565b6130bb81612f4c565b82525050565b60006020820190506130d660008301846130b2565b92915050565b6000806000606084860312156130f5576130f4612ee4565b5b600061310386828701612f37565b935050602061311486828701612f37565b925050604061312586828701612f6d565b9150509250925092565b600060ff82169050919050565b6131458161312f565b82525050565b6000602082019050613160600083018461313c565b92915050565b61316f81612f0e565b82525050565b600060208201905061318a6000830184613166565b92915050565b6000602082840312156131a6576131a5612ee4565b5b60006131b484828501612f37565b91505092915050565b6131c681612fc2565b81146131d157600080fd5b50565b6000813590506131e3816131bd565b92915050565b6000602082840312156131ff576131fe612ee4565b5b600061320d848285016131d4565b91505092915050565b60006020828403121561322c5761322b612ee4565b5b600061323a84828501612f6d565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61328082612e6e565b810181811067ffffffffffffffff8211171561329f5761329e613248565b5b80604052505050565b60006132b2612eda565b90506132be8282613277565b919050565b600067ffffffffffffffff8211156132de576132dd613248565b5b602082029050602081019050919050565b600080fd5b6000613307613302846132c3565b6132a8565b9050808382526020820190506020840283018581111561332a576133296132ef565b5b835b81811015613353578061333f8882612f37565b84526020840193505060208101905061332c565b5050509392505050565b600082601f83011261337257613371613243565b5b81356133828482602086016132f4565b91505092915050565b600080604083850312156133a2576133a1612ee4565b5b600083013567ffffffffffffffff8111156133c0576133bf612ee9565b5b6133cc8582860161335d565b92505060206133dd858286016131d4565b9150509250929050565b6000806000806080858703121561340157613400612ee4565b5b600061340f87828801612f6d565b945050602061342087828801612f6d565b935050604061343187828801612f6d565b925050606061344287828801612f6d565b91505092959194509250565b600080fd5b60008083601f84011261346957613468613243565b5b8235905067ffffffffffffffff8111156134865761348561344e565b5b6020830191508360208202830111156134a2576134a16132ef565b5b9250929050565b6000806000604084860312156134c2576134c1612ee4565b5b600084013567ffffffffffffffff8111156134e0576134df612ee9565b5b6134ec86828701613453565b935093505060206134ff868287016131d4565b9150509250925092565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061353f602083612e33565b915061354a82613509565b602082019050919050565b6000602082019050818103600083015261356e81613532565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006135de82612f4c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136105761360f6135a4565b5b600182019050919050565b7f4275792072657761726473206d757374206265206265747765656e203025206160008201527f6e64203425000000000000000000000000000000000000000000000000000000602082015250565b6000613677602583612e33565b91506136828261361b565b604082019050919050565b600060208201905081810360008301526136a68161366a565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e64203960008201527f3825000000000000000000000000000000000000000000000000000000000000602082015250565b6000613709602283612e33565b9150613714826136ad565b604082019050919050565b60006020820190508181036000830152613738816136fc565b9050919050565b7f53656c6c2072657761726473206d757374206265206265747765656e2030252060008201527f616e642034250000000000000000000000000000000000000000000000000000602082015250565b600061379b602683612e33565b91506137a68261373f565b604082019050919050565b600060208201905081810360008301526137ca8161378e565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e642060008201527f3938250000000000000000000000000000000000000000000000000000000000602082015250565b600061382d602383612e33565b9150613838826137d1565b604082019050919050565b6000602082019050818103600083015261385c81613820565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006138bf602683612e33565b91506138ca82613863565b604082019050919050565b600060208201905081810360008301526138ee816138b2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613951602483612e33565b915061395c826138f5565b604082019050919050565b6000602082019050818103600083015261398081613944565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006139e3602283612e33565b91506139ee82613987565b604082019050919050565b60006020820190508181036000830152613a12816139d6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613a75602583612e33565b9150613a8082613a19565b604082019050919050565b60006020820190508181036000830152613aa481613a68565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613b07602383612e33565b9150613b1282613aab565b604082019050919050565b60006020820190508181036000830152613b3681613afa565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613b99602983612e33565b9150613ba482613b3d565b604082019050919050565b60006020820190508181036000830152613bc881613b8c565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613c2b603f83612e33565b9150613c3682613bcf565b604082019050919050565b60006020820190508181036000830152613c5a81613c1e565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613c97601c83612e33565b9150613ca282613c61565b602082019050919050565b60006020820190508181036000830152613cc681613c8a565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613d29602383612e33565b9150613d3482613ccd565b604082019050919050565b60006020820190508181036000830152613d5881613d1c565b9050919050565b6000613d6a82612f4c565b9150613d7583612f4c565b9250828201905080821115613d8d57613d8c6135a4565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613def602383612e33565b9150613dfa82613d93565b604082019050919050565b60006020820190508181036000830152613e1e81613de2565b9050919050565b6000613e3082612f4c565b9150613e3b83612f4c565b9250828203905081811115613e5357613e526135a4565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613eb5602a83612e33565b9150613ec082613e59565b604082019050919050565b60006020820190508181036000830152613ee481613ea8565b9050919050565b600081519050613efa81612f20565b92915050565b600060208284031215613f1657613f15612ee4565b5b6000613f2484828501613eeb565b91505092915050565b6000819050919050565b6000613f52613f4d613f4884613f2d565b613038565b612f4c565b9050919050565b613f6281613f37565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613f9d81612f0e565b82525050565b6000613faf8383613f94565b60208301905092915050565b6000602082019050919050565b6000613fd382613f68565b613fdd8185613f73565b9350613fe883613f84565b8060005b838110156140195781516140008882613fa3565b975061400b83613fbb565b925050600181019050613fec565b5085935050505092915050565b600060a08201905061403b60008301886130b2565b6140486020830187613f59565b818103604083015261405a8186613fc8565b90506140696060830185613166565b61407660808301846130b2565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006140ba82612f4c565b91506140c583612f4c565b9250826140d5576140d4614080565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614116601b83612e33565b9150614121826140e0565b602082019050919050565b6000602082019050818103600083015261414581614109565b9050919050565b600061415782612f4c565b915061416283612f4c565b925082820261417081612f4c565b91508282048414831517614187576141866135a4565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006141ea602183612e33565b91506141f58261418e565b604082019050919050565b60006020820190508181036000830152614219816141dd565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220061028c1ca2d793d411cfe4e3a2ced7c65d6e3379a9ccd679a8491bff31db67f64736f6c63430008120033

Deployed Bytecode Sourcemap

4196:13981:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6427:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7359:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12161:251;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5551:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6707:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7561:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5861:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6615:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5599:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13099:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17545:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12663:235;;;;;;;;;;;;;:::i;:::-;;6811:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1708:148;;;;;;;;;;;;;:::i;:::-;;17686:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5743:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5290:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1498:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5801:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6519:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17353:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12907:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16607:693;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6958:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5252:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12418:236;;;;;;;;;;;;;:::i;:::-;;17940:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7166:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17816:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12051:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1865:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6427:83;6464:13;6497:5;;;;;;;;;;;;;;;;;6490:12;;6427:83;:::o;7359:193::-;7461:4;7483:39;7492:12;:10;:12::i;:::-;7506:7;7515:6;7483:8;:39::i;:::-;7540:4;7533:11;;7359:193;;;;:::o;12161:251::-;1633:12;:10;:12::i;:::-;1623:22;;:6;;;;;;;;;;:22;;;1615:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12271:12:::1;12255:13;;:28;;;;;;;;;;;;;;;;;;12294:35;12351:7;12294:65;;12388:16;12370:15;;:34;;;;;;;;;;;;;;;;;;12244:168;12161:251:::0;;:::o;5551:41::-;;;;;;;;;;;;;:::o;6707:95::-;6760:7;4739:22;6780:14;;6707:95;:::o;7561:446::-;7693:4;7710:36;7720:6;7728:9;7739:6;7710:9;:36::i;:::-;7757:220;7780:6;7801:12;:10;:12::i;:::-;7828:138;7884:6;7828:138;;;;;;;;;;;;;;;;;:11;:19;7840:6;7828:19;;;;;;;;;;;;;;;:33;7848:12;:10;:12::i;:::-;7828:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7757:8;:220::i;:::-;7995:4;7988:11;;7561:446;;;;;:::o;5861:56::-;;;;:::o;6615:83::-;6656:5;4415:1;6674:16;;6615:83;:::o;5599:28::-;;;;;;;;;;;;;:::o;13099:91::-;1633:12;:10;:12::i;:::-;1623:22;;:6;;;;;;;;;;:22;;;1615:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13177:5:::1;13162:4;:12;13167:6;13162:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13099:91:::0;:::o;17545:101::-;1633:12;:10;:12::i;:::-;1623:22;;:6;;;;;;;;;;:22;;;1615:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17626:12:::1;17612:11;;:26;;;;;;;;;;;;;;;;;;17545:101:::0;:::o;12663:235::-;12729:19;;;;;;;;;;;12713:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12768:17;;;;;;;;;;;12752:33;;:12;:10;:12::i;:::-;:33;;;12713:72;12705:81;;;;;;12797:26;12826:21;12797:50;;12858:32;12871:18;12858:12;:32::i;:::-;12694:204;12663:235::o;6811:138::-;6877:7;6904:37;6924:7;:16;6932:7;6924:16;;;;;;;;;;;;;;;;6904:19;:37::i;:::-;6897:44;;6811:138;;;:::o;1708:148::-;1633:12;:10;:12::i;:::-;1623:22;;:6;;;;;;;;;;:22;;;1615:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1815:1:::1;1778:40;;1799:6;::::0;::::1;;;;;;;;1778:40;;;;;;;;;;;;1846:1;1829:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1708:148::o:0;17686:121::-;1633:12;:10;:12::i;:::-;1623:22;;:6;;;;;;;;;;:22;;;1615:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17778:11:::1;17763:12;:26;;;;17686:121:::0;:::o;5743:50::-;;;;:::o;5290:43::-;;;;;;;;;;;;;;;;;:::o;1498:79::-;1536:7;1563:6;;;;;;;;;;;1556:13;;1498:79;:::o;5801:52::-;;;;:::o;6519:87::-;6558:13;6591:7;;;;;;;;;;;;;;;;;6584:14;;6519:87;:::o;17353:139::-;1633:12;:10;:12::i;:::-;1623:22;;:6;;;;;;;;;;:22;;;1615:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17466:18:::1;17444:19;:40;;;;17353:139:::0;:::o;12907:183::-;1633:12;:10;:12::i;:::-;1623:22;;:6;;;;;;;;;;:22;;;1615:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12994:9:::1;12989:94;13013:5;:12;13009:1;:16;12989:94;;;13064:7;13047:4;:14;13052:5;13058:1;13052:8;;;;;;;;:::i;:::-;;;;;;;;13047:14;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;13027:3;;;;;:::i;:::-;;;;12989:94;;;;12907:183:::0;;:::o;16607:693::-;1633:12;:10;:12::i;:::-;1623:22;;:6;;;;;;;;;;:22;;;1615:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16766:1:::1;16749:13;:18;;:40;;;;;16788:1;16771:13;:18;;16749:40;16741:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;16865:1;16850:11;:16;;:37;;;;;16885:2;16870:11;:17;;16850:37;16842:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;16963:1;16945:14;:19;;:42;;;;;16986:1;16968:14;:19;;16945:42;16937:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;17065:1;17049:12;:17;;:39;;;;;17086:2;17070:12;:18;;17049:39;17041:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;17158:13;17141:14;:30;;;;17200:14;17182:15;:32;;;;17240:11;17225:12;:26;;;;17278:12;17262:13;:28;;;;16607:693:::0;;;;:::o;6958:199::-;7063:4;7085:42;7095:12;:10;:12::i;:::-;7109:9;7120:6;7085:9;:42::i;:::-;7145:4;7138:11;;6958:199;;;;:::o;5252:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12418:236::-;12484:19;;;;;;;;;;;12468:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12523:17;;;;;;;;;;;12507:33;;:12;:10;:12::i;:::-;:33;;;12468:72;12460:81;;;;;;12552:23;12578:24;12596:4;12578:9;:24::i;:::-;12552:50;;12613:33;12630:15;12613:16;:33::i;:::-;12449:205;12418:236::o;17940:234::-;1633:12;:10;:12::i;:::-;1623:22;;:6;;;;;;;;;;:22;;;1615:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18057:9:::1;18053:114;18076:8;;:15;;18072:1;:19;18053:114;;;18147:8;18113:18;:31;18132:8;;18141:1;18132:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18113:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;18093:3;;;;;:::i;:::-;;;;18053:114;;;;17940:234:::0;;;:::o;7166:184::-;7283:7;7315:11;:18;7327:5;7315:18;;;;;;;;;;;;;;;:27;7334:7;7315:27;;;;;;;;;;;;;;;;7308:34;;7166:184;;;;:::o;17816:115::-;1633:12;:10;:12::i;:::-;1623:22;;:6;;;;;;;;;;:22;;;1615:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17910:13:::1;17893:14;:30;;;;17816:115:::0;:::o;12051:104::-;1633:12;:10;:12::i;:::-;1623:22;;:6;;;;;;;;;;:22;;;1615:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12135:12:::1;12121:11;;:26;;;;;;;;;;;;;;;;;;12051:104:::0;:::o;1865:244::-;1633:12;:10;:12::i;:::-;1623:22;;:6;;;;;;;;;;:22;;;1615:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1974:1:::1;1954:22;;:8;:22;;::::0;1946:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2064:8;2035:38;;2056:6;::::0;::::1;;;;;;;;2035:38;;;;;;;;;;;;2093:8;2084:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1865:244:::0;:::o;277:98::-;330:7;357:10;350:17;;277:98;:::o;8704:369::-;8848:1;8831:19;;:5;:19;;;8823:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8929:1;8910:21;;:7;:21;;;8902:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9011:6;8981:11;:18;8993:5;8981:18;;;;;;;;;;;;;;;:27;9000:7;8981:27;;;;;;;;;;;;;;;:36;;;;9049:7;9033:32;;9042:5;9033:32;;;9058:6;9033:32;;;;;;:::i;:::-;;;;;;;;8704:369;;;:::o;9082:2357::-;9220:1;9204:18;;:4;:18;;;9196:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9297:1;9283:16;;:2;:16;;;9275:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9367:1;9358:6;:10;9350:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9440:7;:5;:7::i;:::-;9432:15;;:4;:15;;;;:32;;;;;9457:7;:5;:7::i;:::-;9451:13;;:2;:13;;;;9432:32;9428:1279;;;9522:11;;;;;;;;;;;9517:144;;9570:7;:5;:7::i;:::-;9562:15;;:4;:15;;;9554:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9517:144;9696:12;;9686:6;:22;;9678:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9765:4;:10;9770:4;9765:10;;;;;;;;;;;;;;;;;;;;;;;;;9764:11;:24;;;;;9780:4;:8;9785:2;9780:8;;;;;;;;;;;;;;;;;;;;;;;;;9779:9;9764:24;9756:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;9855:13;;;;;;;;;;;9849:19;;:2;:19;;;9846:146;;9922:14;;9913:6;9897:13;9907:2;9897:9;:13::i;:::-;:22;;;;:::i;:::-;:39;9889:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;9846:146;10009:28;10040:24;10058:4;10040:9;:24::i;:::-;10009:55;;10079:12;10118:19;;10094:20;:43;;10079:58;;10182:19;;10158:20;:43;10155:138;;10258:19;;10235:42;;10155:138;10314:7;:18;;;;;10326:6;;;;;;;;;;10325:7;10314:18;:43;;;;;10344:13;;;;;;;;;;;10336:21;;:4;:21;;;;10314:43;:58;;;;;10361:11;;;;;;;;;;;10314:58;:87;;;;;10377:18;:24;10396:4;10377:24;;;;;;;;;;;;;;;;;;;;;;;;;10376:25;10314:87;:114;;;;;10406:18;:22;10425:2;10406:22;;;;;;;;;;;;;;;;;;;;;;;;;10405:23;10314:114;10310:386;;;10449:38;10466:20;10449:16;:38::i;:::-;10506:26;10535:21;10506:50;;10600:1;10579:18;:22;10575:106;;;10626:35;10639:21;10626:12;:35::i;:::-;10575:106;10430:266;10310:386;9466:1241;;9428:1279;10720:12;10735:4;10720:19;;10785:18;:24;10804:4;10785:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10813:18;:22;10832:2;10813:22;;;;;;;;;;;;;;;;;;;;;;;;;10785:50;10784:102;;;;10849:13;;;;;;;;;;;10841:21;;:4;:21;;;;:44;;;;;10872:13;;;;;;;;;;;10866:19;;:2;:19;;;;10841:44;10784:102;10780:597;;;10913:5;10903:15;;10780:597;;;10997:13;;;;;;;;;;;10989:21;;:4;:21;;;:55;;;;;11028:15;;;;;;;;;;;11014:30;;:2;:30;;;;10989:55;10986:162;;;11077:14;;11065:9;:26;;;;11120:12;;11110:7;:22;;;;10986:162;11208:13;;;;;;;;;;;11202:19;;:2;:19;;;:55;;;;;11241:15;;;;;;;;;;;11225:32;;:4;:32;;;;11202:55;11198:165;;;11290:15;;11278:9;:27;;;;11334:13;;11324:7;:23;;;;11198:165;10780:597;11390:41;11405:4;11411:2;11415:6;11423:7;11390:14;:41::i;:::-;9185:2254;9082:2357;;;:::o;2465:224::-;2585:7;2618:1;2613;:6;;2621:12;2605:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2645:9;2661:1;2657;:5;;;;:::i;:::-;2645:17;;2680:1;2673:8;;;2465:224;;;;;:::o;11940:99::-;11997:17;;;;;;;;;;;:26;;:34;12024:6;11997:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11940:99;:::o;8016:323::-;8111:7;8169;;8158;:18;;8136:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8257:19;8279:10;:8;:10::i;:::-;8257:32;;8307:24;8319:11;8307:7;:11;;:24;;;;:::i;:::-;8300:31;;;8016:323;;;:::o;11448:483::-;6021:4;6012:6;;:13;;;;;;;;;;;;;;;;;;11526:21:::1;11564:1;11550:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11526:40;;11595:4;11577;11582:1;11577:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11621:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11611:4;11616:1;11611:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11654:62;11671:4;11686:15;;;;;;;;;;;11704:11;11654:8;:62::i;:::-;11727:15;;;;;;;;;;;:66;;;11808:11;11834:1;11850:4;11877;11897:15;11727:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11515:416;6057:5:::0;6048:6;;:14;;;;;;;;;;;;;;;;;;11448:483;:::o;13199:282::-;13355:7;13350:28;;13364:14;:12;:14::i;:::-;13350:28;13389:44;13407:6;13415:9;13426:6;13389:17;:44::i;:::-;13449:7;13444:29;;13458:15;:13;:15::i;:::-;13444:29;13199:282;;;;:::o;16168:164::-;16210:7;16231:15;16248;16267:19;:17;:19::i;:::-;16230:56;;;;16304:20;16316:7;16304;:11;;:20;;;;:::i;:::-;16297:27;;;;16168:164;:::o;2947:132::-;3005:7;3032:39;3036:1;3039;3032:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3025:46;;2947:132;;;;:::o;8348:221::-;8408:1;8395:9;;:14;:30;;;;;8424:1;8413:7;;:12;8395:30;8427:7;8391:43;8467:9;;8447:17;:29;;;;8505:7;;8487:15;:25;;;;8538:1;8526:9;:13;;;;8560:1;8550:7;:11;;;;8348:221;:::o;13490:610::-;13637:15;13667:23;13705:12;13732:23;13770:12;13797:13;13824:19;13835:7;13824:10;:19::i;:::-;13622:221;;;;;;;;;;;;13872:28;13892:7;13872;:15;13880:6;13872:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13854:7;:15;13862:6;13854:15;;;;;;;;;;;;;;;:46;;;;13932:39;13955:15;13932:7;:18;13940:9;13932:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13911:7;:18;13919:9;13911:18;;;;;;;;;;;;;;;:60;;;;13982:16;13992:5;13982:9;:16::i;:::-;14009:23;14021:4;14027;14009:11;:23::i;:::-;14065:9;14048:44;;14057:6;14048:44;;;14076:15;14048:44;;;;;;:::i;:::-;;;;;;;;13611:489;;;;;;13490:610;;;:::o;8578:117::-;8634:17;;8622:9;:29;;;;8672:15;;8662:7;:25;;;;8578:117::o;16341:257::-;16392:7;16401;16421:15;16439:7;;16421:25;;16457:15;4739:22;16457:25;;16507:20;4739:22;16507:7;;:11;;:20;;;;:::i;:::-;16497:7;:30;16493:61;;;16537:7;;4739:22;16529:25;;;;;;;;16493:61;16573:7;16582;16565:25;;;;;;16341:257;;;:::o;3085:223::-;3205:7;3237:1;3233;:5;3240:12;3225:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3264:9;3280:1;3276;:5;;;;:::i;:::-;3264:17;;3299:1;3292:8;;;3085:223;;;;;:::o;14523:615::-;14623:7;14645;14667;14689;14711;14733;14769:23;14794:12;14808:13;14838:40;14850:7;14859:9;;14870:7;;14838:11;:40::i;:::-;14768:110;;;;;;14889:19;14911:10;:8;:10::i;:::-;14889:32;;14933:15;14950:23;14975:12;15004:46;15016:7;15025:4;15031:5;15038:11;15004;:46::i;:::-;14932:118;;;;;;15069:7;15078:15;15095:4;15101:15;15118:4;15124:5;15061:69;;;;;;;;;;;;;;;;;;;14523:615;;;;;;;:::o;2323:136::-;2381:7;2408:43;2412:1;2415;2408:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2401:50;;2323:136;;;;:::o;2138:179::-;2196:7;2216:9;2232:1;2228;:5;;;;:::i;:::-;2216:17;;2257:1;2252;:6;;2244:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2308:1;2301:8;;;2138:179;;;;:::o;14109:211::-;14162:19;14184:10;:8;:10::i;:::-;14162:32;;14205:13;14221:22;14231:11;14221:5;:9;;:22;;;;:::i;:::-;14205:38;;14279:33;14306:5;14279:7;:22;14295:4;14279:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14254:7;:22;14270:4;14254:22;;;;;;;;;;;;;;;:58;;;;14151:169;;14109:211;:::o;14329:147::-;14407:17;14419:4;14407:7;;:11;;:17;;;;:::i;:::-;14397:7;:27;;;;14448:20;14463:4;14448:10;;:14;;:20;;;;:::i;:::-;14435:10;:33;;;;14329:147;;:::o;15147:469::-;15316:7;15338;15360;15395:12;15410:30;15436:3;15410:21;15422:8;15410:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15395:45;;15451:13;15467:28;15491:3;15467:19;15479:6;15467:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15451:44;;15506:23;15532:28;15554:5;15532:17;15544:4;15532:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15506:54;;15579:15;15596:4;15602:5;15571:37;;;;;;;;;15147:469;;;;;;;:::o;15625:534::-;15819:7;15841;15863;15898:15;15916:24;15928:11;15916:7;:11;;:24;;;;:::i;:::-;15898:42;;15951:12;15966:21;15975:11;15966:4;:8;;:21;;;;:::i;:::-;15951:36;;15998:13;16014:22;16024:11;16014:5;:9;;:22;;;;:::i;:::-;15998:38;;16047:23;16073:28;16095:5;16073:17;16085:4;16073:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16047:54;;16120:7;16129:15;16146:4;16112:39;;;;;;;;;;15625:534;;;;;;;;:::o;2695:246::-;2753:7;2782:1;2777;:6;2773:47;;2807:1;2800:8;;;;2773:47;2830:9;2846:1;2842;:5;;;;:::i;:::-;2830:17;;2875:1;2870;2866;:5;;;;:::i;:::-;:10;2858:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2932:1;2925:8;;;2695:246;;;;;:::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:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:474::-;3514:6;3522;3571:2;3559:9;3550:7;3546:23;3542:32;3539:119;;;3577:79;;:::i;:::-;3539:119;3697:1;3722:53;3767:7;3758:6;3747:9;3743:22;3722:53;:::i;:::-;3712:63;;3668:117;3824:2;3850:53;3895:7;3886:6;3875:9;3871:22;3850:53;:::i;:::-;3840:63;;3795:118;3446:474;;;;;:::o;3926:60::-;3954:3;3975:5;3968:12;;3926:60;;;:::o;3992:142::-;4042:9;4075:53;4093:34;4102:24;4120:5;4102:24;:::i;:::-;4093:34;:::i;:::-;4075:53;:::i;:::-;4062:66;;3992:142;;;:::o;4140:126::-;4190:9;4223:37;4254:5;4223:37;:::i;:::-;4210:50;;4140:126;;;:::o;4272:152::-;4348:9;4381:37;4412:5;4381:37;:::i;:::-;4368:50;;4272:152;;;:::o;4430:183::-;4543:63;4600:5;4543:63;:::i;:::-;4538:3;4531:76;4430:183;;:::o;4619:274::-;4738:4;4776:2;4765:9;4761:18;4753:26;;4789:97;4883:1;4872:9;4868:17;4859:6;4789:97;:::i;:::-;4619:274;;;;:::o;4899:118::-;4986:24;5004:5;4986:24;:::i;:::-;4981:3;4974:37;4899:118;;:::o;5023:222::-;5116:4;5154:2;5143:9;5139:18;5131:26;;5167:71;5235:1;5224:9;5220:17;5211:6;5167:71;:::i;:::-;5023:222;;;;:::o;5251:619::-;5328:6;5336;5344;5393:2;5381:9;5372:7;5368:23;5364:32;5361:119;;;5399:79;;:::i;:::-;5361:119;5519:1;5544:53;5589:7;5580:6;5569:9;5565:22;5544:53;:::i;:::-;5534:63;;5490:117;5646:2;5672:53;5717:7;5708:6;5697:9;5693:22;5672:53;:::i;:::-;5662:63;;5617:118;5774:2;5800:53;5845:7;5836:6;5825:9;5821:22;5800:53;:::i;:::-;5790:63;;5745:118;5251:619;;;;;:::o;5876:86::-;5911:7;5951:4;5944:5;5940:16;5929:27;;5876:86;;;:::o;5968:112::-;6051:22;6067:5;6051:22;:::i;:::-;6046:3;6039:35;5968:112;;:::o;6086:214::-;6175:4;6213:2;6202:9;6198:18;6190:26;;6226:67;6290:1;6279:9;6275:17;6266:6;6226:67;:::i;:::-;6086:214;;;;:::o;6306:118::-;6393:24;6411:5;6393:24;:::i;:::-;6388:3;6381:37;6306:118;;:::o;6430:222::-;6523:4;6561:2;6550:9;6546:18;6538:26;;6574:71;6642:1;6631:9;6627:17;6618:6;6574:71;:::i;:::-;6430:222;;;;:::o;6658:329::-;6717:6;6766:2;6754:9;6745:7;6741:23;6737:32;6734:119;;;6772:79;;:::i;:::-;6734:119;6892:1;6917:53;6962:7;6953:6;6942:9;6938:22;6917:53;:::i;:::-;6907:63;;6863:117;6658:329;;;;:::o;6993:116::-;7063:21;7078:5;7063:21;:::i;:::-;7056:5;7053:32;7043:60;;7099:1;7096;7089:12;7043:60;6993:116;:::o;7115:133::-;7158:5;7196:6;7183:20;7174:29;;7212:30;7236:5;7212:30;:::i;:::-;7115:133;;;;:::o;7254:323::-;7310:6;7359:2;7347:9;7338:7;7334:23;7330:32;7327:119;;;7365:79;;:::i;:::-;7327:119;7485:1;7510:50;7552:7;7543:6;7532:9;7528:22;7510:50;:::i;:::-;7500:60;;7456:114;7254:323;;;;:::o;7583:329::-;7642:6;7691:2;7679:9;7670:7;7666:23;7662:32;7659:119;;;7697:79;;:::i;:::-;7659:119;7817:1;7842:53;7887:7;7878:6;7867:9;7863:22;7842:53;:::i;:::-;7832:63;;7788:117;7583:329;;;;:::o;7918:117::-;8027:1;8024;8017:12;8041:180;8089:77;8086:1;8079:88;8186:4;8183:1;8176:15;8210:4;8207:1;8200:15;8227:281;8310:27;8332:4;8310:27;:::i;:::-;8302:6;8298:40;8440:6;8428:10;8425:22;8404:18;8392:10;8389:34;8386:62;8383:88;;;8451:18;;:::i;:::-;8383:88;8491:10;8487:2;8480:22;8270:238;8227:281;;:::o;8514:129::-;8548:6;8575:20;;:::i;:::-;8565:30;;8604:33;8632:4;8624:6;8604:33;:::i;:::-;8514:129;;;:::o;8649:311::-;8726:4;8816:18;8808:6;8805:30;8802:56;;;8838:18;;:::i;:::-;8802:56;8888:4;8880:6;8876:17;8868:25;;8948:4;8942;8938:15;8930:23;;8649:311;;;:::o;8966:117::-;9075:1;9072;9065:12;9106:710;9202:5;9227:81;9243:64;9300:6;9243:64;:::i;:::-;9227:81;:::i;:::-;9218:90;;9328:5;9357:6;9350:5;9343:21;9391:4;9384:5;9380:16;9373:23;;9444:4;9436:6;9432:17;9424:6;9420:30;9473:3;9465:6;9462:15;9459:122;;;9492:79;;:::i;:::-;9459:122;9607:6;9590:220;9624:6;9619:3;9616:15;9590:220;;;9699:3;9728:37;9761:3;9749:10;9728:37;:::i;:::-;9723:3;9716:50;9795:4;9790:3;9786:14;9779:21;;9666:144;9650:4;9645:3;9641:14;9634:21;;9590:220;;;9594:21;9208:608;;9106:710;;;;;:::o;9839:370::-;9910:5;9959:3;9952:4;9944:6;9940:17;9936:27;9926:122;;9967:79;;:::i;:::-;9926:122;10084:6;10071:20;10109:94;10199:3;10191:6;10184:4;10176:6;10172:17;10109:94;:::i;:::-;10100:103;;9916:293;9839:370;;;;:::o;10215:678::-;10305:6;10313;10362:2;10350:9;10341:7;10337:23;10333:32;10330:119;;;10368:79;;:::i;:::-;10330:119;10516:1;10505:9;10501:17;10488:31;10546:18;10538:6;10535:30;10532:117;;;10568:79;;:::i;:::-;10532:117;10673:78;10743:7;10734:6;10723:9;10719:22;10673:78;:::i;:::-;10663:88;;10459:302;10800:2;10826:50;10868:7;10859:6;10848:9;10844:22;10826:50;:::i;:::-;10816:60;;10771:115;10215:678;;;;;:::o;10899:765::-;10985:6;10993;11001;11009;11058:3;11046:9;11037:7;11033:23;11029:33;11026:120;;;11065:79;;:::i;:::-;11026:120;11185:1;11210:53;11255:7;11246:6;11235:9;11231:22;11210:53;:::i;:::-;11200:63;;11156:117;11312:2;11338:53;11383:7;11374:6;11363:9;11359:22;11338:53;:::i;:::-;11328:63;;11283:118;11440:2;11466:53;11511:7;11502:6;11491:9;11487:22;11466:53;:::i;:::-;11456:63;;11411:118;11568:2;11594:53;11639:7;11630:6;11619:9;11615:22;11594:53;:::i;:::-;11584:63;;11539:118;10899:765;;;;;;;:::o;11670:117::-;11779:1;11776;11769:12;11810:568;11883:8;11893:6;11943:3;11936:4;11928:6;11924:17;11920:27;11910:122;;11951:79;;:::i;:::-;11910:122;12064:6;12051:20;12041:30;;12094:18;12086:6;12083:30;12080:117;;;12116:79;;:::i;:::-;12080:117;12230:4;12222:6;12218:17;12206:29;;12284:3;12276:4;12268:6;12264:17;12254:8;12250:32;12247:41;12244:128;;;12291:79;;:::i;:::-;12244:128;11810:568;;;;;:::o;12384:698::-;12476:6;12484;12492;12541:2;12529:9;12520:7;12516:23;12512:32;12509:119;;;12547:79;;:::i;:::-;12509:119;12695:1;12684:9;12680:17;12667:31;12725:18;12717:6;12714:30;12711:117;;;12747:79;;:::i;:::-;12711:117;12860:80;12932:7;12923:6;12912:9;12908:22;12860:80;:::i;:::-;12842:98;;;;12638:312;12989:2;13015:50;13057:7;13048:6;13037:9;13033:22;13015:50;:::i;:::-;13005:60;;12960:115;12384:698;;;;;:::o;13088:182::-;13228:34;13224:1;13216:6;13212:14;13205:58;13088:182;:::o;13276:366::-;13418:3;13439:67;13503:2;13498:3;13439:67;:::i;:::-;13432:74;;13515:93;13604:3;13515:93;:::i;:::-;13633:2;13628:3;13624:12;13617:19;;13276:366;;;:::o;13648:419::-;13814:4;13852:2;13841:9;13837:18;13829:26;;13901:9;13895:4;13891:20;13887:1;13876:9;13872:17;13865:47;13929:131;14055:4;13929:131;:::i;:::-;13921:139;;13648:419;;;:::o;14073:180::-;14121:77;14118:1;14111:88;14218:4;14215:1;14208:15;14242:4;14239:1;14232:15;14259:180;14307:77;14304:1;14297:88;14404:4;14401:1;14394:15;14428:4;14425:1;14418:15;14445:233;14484:3;14507:24;14525:5;14507:24;:::i;:::-;14498:33;;14553:66;14546:5;14543:77;14540:103;;14623:18;;:::i;:::-;14540:103;14670:1;14663:5;14659:13;14652:20;;14445:233;;;:::o;14684:224::-;14824:34;14820:1;14812:6;14808:14;14801:58;14893:7;14888:2;14880:6;14876:15;14869:32;14684:224;:::o;14914:366::-;15056:3;15077:67;15141:2;15136:3;15077:67;:::i;:::-;15070:74;;15153:93;15242:3;15153:93;:::i;:::-;15271:2;15266:3;15262:12;15255:19;;14914:366;;;:::o;15286:419::-;15452:4;15490:2;15479:9;15475:18;15467:26;;15539:9;15533:4;15529:20;15525:1;15514:9;15510:17;15503:47;15567:131;15693:4;15567:131;:::i;:::-;15559:139;;15286:419;;;:::o;15711:221::-;15851:34;15847:1;15839:6;15835:14;15828:58;15920:4;15915:2;15907:6;15903:15;15896:29;15711:221;:::o;15938:366::-;16080:3;16101:67;16165:2;16160:3;16101:67;:::i;:::-;16094:74;;16177:93;16266:3;16177:93;:::i;:::-;16295:2;16290:3;16286:12;16279:19;;15938:366;;;:::o;16310:419::-;16476:4;16514:2;16503:9;16499:18;16491:26;;16563:9;16557:4;16553:20;16549:1;16538:9;16534:17;16527:47;16591:131;16717:4;16591:131;:::i;:::-;16583:139;;16310:419;;;:::o;16735:225::-;16875:34;16871:1;16863:6;16859:14;16852:58;16944:8;16939:2;16931:6;16927:15;16920:33;16735:225;:::o;16966:366::-;17108:3;17129:67;17193:2;17188:3;17129:67;:::i;:::-;17122:74;;17205:93;17294:3;17205:93;:::i;:::-;17323:2;17318:3;17314:12;17307:19;;16966:366;;;:::o;17338:419::-;17504:4;17542:2;17531:9;17527:18;17519:26;;17591:9;17585:4;17581:20;17577:1;17566:9;17562:17;17555:47;17619:131;17745:4;17619:131;:::i;:::-;17611:139;;17338:419;;;:::o;17763:222::-;17903:34;17899:1;17891:6;17887:14;17880:58;17972:5;17967:2;17959:6;17955:15;17948:30;17763:222;:::o;17991:366::-;18133:3;18154:67;18218:2;18213:3;18154:67;:::i;:::-;18147:74;;18230:93;18319:3;18230:93;:::i;:::-;18348:2;18343:3;18339:12;18332:19;;17991:366;;;:::o;18363:419::-;18529:4;18567:2;18556:9;18552:18;18544:26;;18616:9;18610:4;18606:20;18602:1;18591:9;18587:17;18580:47;18644:131;18770:4;18644:131;:::i;:::-;18636:139;;18363:419;;;:::o;18788:225::-;18928:34;18924:1;18916:6;18912:14;18905:58;18997:8;18992:2;18984:6;18980:15;18973:33;18788:225;:::o;19019:366::-;19161:3;19182:67;19246:2;19241:3;19182:67;:::i;:::-;19175:74;;19258:93;19347:3;19258:93;:::i;:::-;19376:2;19371:3;19367:12;19360:19;;19019:366;;;:::o;19391:419::-;19557:4;19595:2;19584:9;19580:18;19572:26;;19644:9;19638:4;19634:20;19630:1;19619:9;19615:17;19608:47;19672:131;19798:4;19672:131;:::i;:::-;19664:139;;19391:419;;;:::o;19816:223::-;19956:34;19952:1;19944:6;19940:14;19933:58;20025:6;20020:2;20012:6;20008:15;20001:31;19816:223;:::o;20045:366::-;20187:3;20208:67;20272:2;20267:3;20208:67;:::i;:::-;20201:74;;20284:93;20373:3;20284:93;:::i;:::-;20402:2;20397:3;20393:12;20386:19;;20045:366;;;:::o;20417:419::-;20583:4;20621:2;20610:9;20606:18;20598:26;;20670:9;20664:4;20660:20;20656:1;20645:9;20641:17;20634:47;20698:131;20824:4;20698:131;:::i;:::-;20690:139;;20417:419;;;:::o;20842:221::-;20982:34;20978:1;20970:6;20966:14;20959:58;21051:4;21046:2;21038:6;21034:15;21027:29;20842:221;:::o;21069:366::-;21211:3;21232:67;21296:2;21291:3;21232:67;:::i;:::-;21225:74;;21308:93;21397:3;21308:93;:::i;:::-;21426:2;21421:3;21417:12;21410:19;;21069:366;;;:::o;21441:419::-;21607:4;21645:2;21634:9;21630:18;21622:26;;21694:9;21688:4;21684:20;21680:1;21669:9;21665:17;21658:47;21722:131;21848:4;21722:131;:::i;:::-;21714:139;;21441:419;;;:::o;21866:224::-;22006:34;22002:1;21994:6;21990:14;21983:58;22075:7;22070:2;22062:6;22058:15;22051:32;21866:224;:::o;22096:366::-;22238:3;22259:67;22323:2;22318:3;22259:67;:::i;:::-;22252:74;;22335:93;22424:3;22335:93;:::i;:::-;22453:2;22448:3;22444:12;22437:19;;22096:366;;;:::o;22468:419::-;22634:4;22672:2;22661:9;22657:18;22649:26;;22721:9;22715:4;22711:20;22707:1;22696:9;22692:17;22685:47;22749:131;22875:4;22749:131;:::i;:::-;22741:139;;22468:419;;;:::o;22893:222::-;23033:34;23029:1;23021:6;23017:14;23010:58;23102:5;23097:2;23089:6;23085:15;23078:30;22893:222;:::o;23121:366::-;23263:3;23284:67;23348:2;23343:3;23284:67;:::i;:::-;23277:74;;23360:93;23449:3;23360:93;:::i;:::-;23478:2;23473:3;23469:12;23462:19;;23121:366;;;:::o;23493:419::-;23659:4;23697:2;23686:9;23682:18;23674:26;;23746:9;23740:4;23736:20;23732:1;23721:9;23717:17;23710:47;23774:131;23900:4;23774:131;:::i;:::-;23766:139;;23493:419;;;:::o;23918:228::-;24058:34;24054:1;24046:6;24042:14;24035:58;24127:11;24122:2;24114:6;24110:15;24103:36;23918:228;:::o;24152:366::-;24294:3;24315:67;24379:2;24374:3;24315:67;:::i;:::-;24308:74;;24391:93;24480:3;24391:93;:::i;:::-;24509:2;24504:3;24500:12;24493:19;;24152:366;;;:::o;24524:419::-;24690:4;24728:2;24717:9;24713:18;24705:26;;24777:9;24771:4;24767:20;24763:1;24752:9;24748:17;24741:47;24805:131;24931:4;24805:131;:::i;:::-;24797:139;;24524:419;;;:::o;24949:250::-;25089:34;25085:1;25077:6;25073:14;25066:58;25158:33;25153:2;25145:6;25141:15;25134:58;24949:250;:::o;25205:366::-;25347:3;25368:67;25432:2;25427:3;25368:67;:::i;:::-;25361:74;;25444:93;25533:3;25444:93;:::i;:::-;25562:2;25557:3;25553:12;25546:19;;25205:366;;;:::o;25577:419::-;25743:4;25781:2;25770:9;25766:18;25758:26;;25830:9;25824:4;25820:20;25816:1;25805:9;25801:17;25794:47;25858:131;25984:4;25858:131;:::i;:::-;25850:139;;25577:419;;;:::o;26002:178::-;26142:30;26138:1;26130:6;26126:14;26119:54;26002:178;:::o;26186:366::-;26328:3;26349:67;26413:2;26408:3;26349:67;:::i;:::-;26342:74;;26425:93;26514:3;26425:93;:::i;:::-;26543:2;26538:3;26534:12;26527:19;;26186:366;;;:::o;26558:419::-;26724:4;26762:2;26751:9;26747:18;26739:26;;26811:9;26805:4;26801:20;26797:1;26786:9;26782:17;26775:47;26839:131;26965:4;26839:131;:::i;:::-;26831:139;;26558:419;;;:::o;26983:222::-;27123:34;27119:1;27111:6;27107:14;27100:58;27192:5;27187:2;27179:6;27175:15;27168:30;26983:222;:::o;27211:366::-;27353:3;27374:67;27438:2;27433:3;27374:67;:::i;:::-;27367:74;;27450:93;27539:3;27450:93;:::i;:::-;27568:2;27563:3;27559:12;27552:19;;27211:366;;;:::o;27583:419::-;27749:4;27787:2;27776:9;27772:18;27764:26;;27836:9;27830:4;27826:20;27822:1;27811:9;27807:17;27800:47;27864:131;27990:4;27864:131;:::i;:::-;27856:139;;27583:419;;;:::o;28008:191::-;28048:3;28067:20;28085:1;28067:20;:::i;:::-;28062:25;;28101:20;28119:1;28101:20;:::i;:::-;28096:25;;28144:1;28141;28137:9;28130:16;;28165:3;28162:1;28159:10;28156:36;;;28172:18;;:::i;:::-;28156:36;28008:191;;;;:::o;28205:222::-;28345:34;28341:1;28333:6;28329:14;28322:58;28414:5;28409:2;28401:6;28397:15;28390:30;28205:222;:::o;28433:366::-;28575:3;28596:67;28660:2;28655:3;28596:67;:::i;:::-;28589:74;;28672:93;28761:3;28672:93;:::i;:::-;28790:2;28785:3;28781:12;28774:19;;28433:366;;;:::o;28805:419::-;28971:4;29009:2;28998:9;28994:18;28986:26;;29058:9;29052:4;29048:20;29044:1;29033:9;29029:17;29022:47;29086:131;29212:4;29086:131;:::i;:::-;29078:139;;28805:419;;;:::o;29230:194::-;29270:4;29290:20;29308:1;29290:20;:::i;:::-;29285:25;;29324:20;29342:1;29324:20;:::i;:::-;29319:25;;29368:1;29365;29361:9;29353:17;;29392:1;29386:4;29383:11;29380:37;;;29397:18;;:::i;:::-;29380:37;29230:194;;;;:::o;29430:229::-;29570:34;29566:1;29558:6;29554:14;29547:58;29639:12;29634:2;29626:6;29622:15;29615:37;29430:229;:::o;29665:366::-;29807:3;29828:67;29892:2;29887:3;29828:67;:::i;:::-;29821:74;;29904:93;29993:3;29904:93;:::i;:::-;30022:2;30017:3;30013:12;30006:19;;29665:366;;;:::o;30037:419::-;30203:4;30241:2;30230:9;30226:18;30218:26;;30290:9;30284:4;30280:20;30276:1;30265:9;30261:17;30254:47;30318:131;30444:4;30318:131;:::i;:::-;30310:139;;30037:419;;;:::o;30462:143::-;30519:5;30550:6;30544:13;30535:22;;30566:33;30593:5;30566:33;:::i;:::-;30462:143;;;;:::o;30611:351::-;30681:6;30730:2;30718:9;30709:7;30705:23;30701:32;30698:119;;;30736:79;;:::i;:::-;30698:119;30856:1;30881:64;30937:7;30928:6;30917:9;30913:22;30881:64;:::i;:::-;30871:74;;30827:128;30611:351;;;;:::o;30968:85::-;31013:7;31042:5;31031:16;;30968:85;;;:::o;31059:158::-;31117:9;31150:61;31168:42;31177:32;31203:5;31177:32;:::i;:::-;31168:42;:::i;:::-;31150:61;:::i;:::-;31137:74;;31059:158;;;:::o;31223:147::-;31318:45;31357:5;31318:45;:::i;:::-;31313:3;31306:58;31223:147;;:::o;31376:114::-;31443:6;31477:5;31471:12;31461:22;;31376:114;;;:::o;31496:184::-;31595:11;31629:6;31624:3;31617:19;31669:4;31664:3;31660:14;31645:29;;31496:184;;;;:::o;31686:132::-;31753:4;31776:3;31768:11;;31806:4;31801:3;31797:14;31789:22;;31686:132;;;:::o;31824:108::-;31901:24;31919:5;31901:24;:::i;:::-;31896:3;31889:37;31824:108;;:::o;31938:179::-;32007:10;32028:46;32070:3;32062:6;32028:46;:::i;:::-;32106:4;32101:3;32097:14;32083:28;;31938:179;;;;:::o;32123:113::-;32193:4;32225;32220:3;32216:14;32208:22;;32123:113;;;:::o;32272:732::-;32391:3;32420:54;32468:5;32420:54;:::i;:::-;32490:86;32569:6;32564:3;32490:86;:::i;:::-;32483:93;;32600:56;32650:5;32600:56;:::i;:::-;32679:7;32710:1;32695:284;32720:6;32717:1;32714:13;32695:284;;;32796:6;32790:13;32823:63;32882:3;32867:13;32823:63;:::i;:::-;32816:70;;32909:60;32962:6;32909:60;:::i;:::-;32899:70;;32755:224;32742:1;32739;32735:9;32730:14;;32695:284;;;32699:14;32995:3;32988:10;;32396:608;;;32272:732;;;;:::o;33010:831::-;33273:4;33311:3;33300:9;33296:19;33288:27;;33325:71;33393:1;33382:9;33378:17;33369:6;33325:71;:::i;:::-;33406:80;33482:2;33471:9;33467:18;33458:6;33406:80;:::i;:::-;33533:9;33527:4;33523:20;33518:2;33507:9;33503:18;33496:48;33561:108;33664:4;33655:6;33561:108;:::i;:::-;33553:116;;33679:72;33747:2;33736:9;33732:18;33723:6;33679:72;:::i;:::-;33761:73;33829:3;33818:9;33814:19;33805:6;33761:73;:::i;:::-;33010:831;;;;;;;;:::o;33847:180::-;33895:77;33892:1;33885:88;33992:4;33989:1;33982:15;34016:4;34013:1;34006:15;34033:185;34073:1;34090:20;34108:1;34090:20;:::i;:::-;34085:25;;34124:20;34142:1;34124:20;:::i;:::-;34119:25;;34163:1;34153:35;;34168:18;;:::i;:::-;34153:35;34210:1;34207;34203:9;34198:14;;34033:185;;;;:::o;34224:177::-;34364:29;34360:1;34352:6;34348:14;34341:53;34224:177;:::o;34407:366::-;34549:3;34570:67;34634:2;34629:3;34570:67;:::i;:::-;34563:74;;34646:93;34735:3;34646:93;:::i;:::-;34764:2;34759:3;34755:12;34748:19;;34407:366;;;:::o;34779:419::-;34945:4;34983:2;34972:9;34968:18;34960:26;;35032:9;35026:4;35022:20;35018:1;35007:9;35003:17;34996:47;35060:131;35186:4;35060:131;:::i;:::-;35052:139;;34779:419;;;:::o;35204:410::-;35244:7;35267:20;35285:1;35267:20;:::i;:::-;35262:25;;35301:20;35319:1;35301:20;:::i;:::-;35296:25;;35356:1;35353;35349:9;35378:30;35396:11;35378:30;:::i;:::-;35367:41;;35557:1;35548:7;35544:15;35541:1;35538:22;35518:1;35511:9;35491:83;35468:139;;35587:18;;:::i;:::-;35468:139;35252:362;35204:410;;;;:::o;35620:220::-;35760:34;35756:1;35748:6;35744:14;35737:58;35829:3;35824:2;35816:6;35812:15;35805:28;35620:220;:::o;35846:366::-;35988:3;36009:67;36073:2;36068:3;36009:67;:::i;:::-;36002:74;;36085:93;36174:3;36085:93;:::i;:::-;36203:2;36198:3;36194:12;36187:19;;35846:366;;;:::o;36218:419::-;36384:4;36422:2;36411:9;36407:18;36399:26;;36471:9;36465:4;36461:20;36457:1;36446:9;36442:17;36435:47;36499:131;36625:4;36499:131;:::i;:::-;36491:139;;36218:419;;;:::o

Swarm Source

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