ETH Price: $3,458.22 (+1.75%)

Token

Bitcoin 2024 (BTC24)
 

Overview

Max Total Supply

1,000,000 BTC24

Holders

119

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
167.985278852 BTC24

Value
$0.00
0xfde6abf41414a1b85214f61e31ce94502b9d1239
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:
BTC24

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-06
*/

/*
Bitcoin 2024 (BTC24)

Follow us:
Telegram:   t.me/bitcoin2024erc
Twitter:    twitter.com/bitcoin2024erc
*/

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

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 BTC24 is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "Bitcoin 2024";
    string private constant _symbol = "BTC24";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 10;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 40;

    //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(0x50a3dC197a1041F37f869C583019E93b4478185b);
    address payable private _marketingAddress = payable(0x50a3dC197a1041F37f869C583019E93b4478185b);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen = true;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = 20000 * 10**9;
    uint256 public _maxWalletSize = 20000 * 10**9;
    uint256 public _swapTokensAtAmount = 3000 * 10**9;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _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*2)
            {
                contractTokenBalance = _swapTokensAtAmount*2;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 100000000000000000) {
                    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 manualswap() external {
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

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

    function blockunblockBots(address[] memory bots_, bool state) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = state;
        }
    }

    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 {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
        require (_redisFeeOnBuy+_redisFeeOnSell+_taxFeeOnBuy+_taxFeeOnSell <= 20);
    }

    //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;
        require (_maxTxAmount >= 10000*10**9);
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
        require (_maxWalletSize >= 10000*10**9);
    }

    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":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"blockunblockBots","outputs":[],"stateMutability":"nonpayable","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":"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":[],"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"}]

608060405266038d7ea4c680006000196200001b919062000755565b6000196200002a9190620007bc565b6006556000600855600a6009556000600a556028600b55600a54600c55600b54600d55600c54600e55600d54600f557350a3dc197a1041f37f869c583019e93b4478185b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507350a3dc197a1041f37f869c583019e93b4478185b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560146101000a81548160ff02191690831515021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff0219169083151502179055506512309ce540006016556512309ce540006017556502ba7def30006018553480156200017e57600080fd5b50600062000191620006eb60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506006546002600062000246620006eb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032557600080fd5b505afa1580156200033a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000360919062000861565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003c357600080fd5b505afa158015620003d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003fe919062000861565b6040518363ffffffff1660e01b81526004016200041d929190620008a4565b602060405180830381600087803b1580156200043857600080fd5b505af11580156200044d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000473919062000861565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004c9620006f360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000676620006eb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef66038d7ea4c68000604051620006dc9190620008e2565b60405180910390a350620008ff565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000762826200071c565b91506200076f836200071c565b92508262000782576200078162000726565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007c9826200071c565b9150620007d6836200071c565b925082821015620007ec57620007eb6200078d565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200082982620007fc565b9050919050565b6200083b816200081c565b81146200084757600080fd5b50565b6000815190506200085b8162000830565b92915050565b6000602082840312156200087a5762000879620007f7565b5b60006200088a848285016200084a565b91505092915050565b6200089e816200081c565b82525050565b6000604082019050620008bb600083018562000893565b620008ca602083018462000893565b9392505050565b620008dc816200071c565b82525050565b6000602082019050620008f96000830184620008d1565b92915050565b613ae6806200090f6000396000f3fe6080604052600436106101bb5760003560e01c80637f2feddc116100ec578063bfd792841161008a578063dd62ed3e11610064578063dd62ed3e146105f5578063e38c946414610632578063ea1644d51461065b578063f2fde38b14610684576101c2565b8063bfd7928414610578578063c3c8cd80146105b5578063c492f046146105cc576101c2565b806395d89b41116100c657806395d89b41146104be57806398a5c315146104e9578063a2a957bb14610512578063a9059cbb1461053b576101c2565b80637f2feddc1461042b5780638da5cb5b146104685780638f9a55c014610493576101c2565b806349bd5a5e1161015957806370a082311161013357806370a0823114610383578063715018a6146103c057806374010ece146103d75780637d1db4a514610400576101c2565b806349bd5a5e146103185780636d8aa8f8146103435780636fc3eaec1461036c576101c2565b806318160ddd1161019557806318160ddd1461025a57806323b872dd146102855780632fd689e3146102c2578063313ce567146102ed576101c2565b806306fdde03146101c7578063095ea7b3146101f25780631694505e1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc6106ad565b6040516101e9919061292d565b60405180910390f35b3480156101fe57600080fd5b50610219600480360381019061021491906129f7565b6106ea565b6040516102269190612a52565b60405180910390f35b34801561023b57600080fd5b50610244610708565b6040516102519190612acc565b60405180910390f35b34801561026657600080fd5b5061026f61072e565b60405161027c9190612af6565b60405180910390f35b34801561029157600080fd5b506102ac60048036038101906102a79190612b11565b61073d565b6040516102b99190612a52565b60405180910390f35b3480156102ce57600080fd5b506102d7610816565b6040516102e49190612af6565b60405180910390f35b3480156102f957600080fd5b5061030261081c565b60405161030f9190612b80565b60405180910390f35b34801561032457600080fd5b5061032d610825565b60405161033a9190612baa565b60405180910390f35b34801561034f57600080fd5b5061036a60048036038101906103659190612bf1565b61084b565b005b34801561037857600080fd5b506103816108fd565b005b34801561038f57600080fd5b506103aa60048036038101906103a59190612c1e565b61090e565b6040516103b79190612af6565b60405180910390f35b3480156103cc57600080fd5b506103d561095f565b005b3480156103e357600080fd5b506103fe60048036038101906103f99190612c4b565b610ab2565b005b34801561040c57600080fd5b50610415610b66565b6040516104229190612af6565b60405180910390f35b34801561043757600080fd5b50610452600480360381019061044d9190612c1e565b610b6c565b60405161045f9190612af6565b60405180910390f35b34801561047457600080fd5b5061047d610b84565b60405161048a9190612baa565b60405180910390f35b34801561049f57600080fd5b506104a8610bad565b6040516104b59190612af6565b60405180910390f35b3480156104ca57600080fd5b506104d3610bb3565b6040516104e0919061292d565b60405180910390f35b3480156104f557600080fd5b50610510600480360381019061050b9190612c4b565b610bf0565b005b34801561051e57600080fd5b5061053960048036038101906105349190612c78565b610c8f565b005b34801561054757600080fd5b50610562600480360381019061055d91906129f7565b610d7d565b60405161056f9190612a52565b60405180910390f35b34801561058457600080fd5b5061059f600480360381019061059a9190612c1e565b610d9b565b6040516105ac9190612a52565b60405180910390f35b3480156105c157600080fd5b506105ca610dbb565b005b3480156105d857600080fd5b506105f360048036038101906105ee9190612d44565b610dd4565b005b34801561060157600080fd5b5061061c60048036038101906106179190612da4565b610f0e565b6040516106299190612af6565b60405180910390f35b34801561063e57600080fd5b5061065960048036038101906106549190612f22565b610f95565b005b34801561066757600080fd5b50610682600480360381019061067d9190612c4b565b6110bf565b005b34801561069057600080fd5b506106ab60048036038101906106a69190612c1e565b611173565b005b60606040518060400160405280600c81526020017f426974636f696e20323032340000000000000000000000000000000000000000815250905090565b60006106fe6106f7611335565b848461133d565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600066038d7ea4c68000905090565b600061074a848484611508565b61080b84610756611335565b61080685604051806060016040528060288152602001613a8960289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107bc611335565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dac9092919063ffffffff16565b61133d565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610853611335565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d790612fca565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b600047905061090b81611e10565b50565b6000610958600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e7c565b9050919050565b610967611335565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109eb90612fca565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610aba611335565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3e90612fca565b60405180910390fd5b806016819055506509184e72a0006016541015610b6357600080fd5b50565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600581526020017f4254433234000000000000000000000000000000000000000000000000000000815250905090565b610bf8611335565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7c90612fca565b60405180910390fd5b8060188190555050565b610c97611335565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1b90612fca565b60405180910390fd5b8360088190555082600a819055508160098190555080600b819055506014600b54600954600a54600854610d589190613019565b610d629190613019565b610d6c9190613019565b1115610d7757600080fd5b50505050565b6000610d91610d8a611335565b8484611508565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b6000610dc63061090e565b9050610dd181611eea565b50565b610ddc611335565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6090612fca565b60405180910390fd5b60005b83839050811015610f08578160056000868685818110610e8f57610e8e61306f565b5b9050602002016020810190610ea49190612c1e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610f009061309e565b915050610e6c565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610f9d611335565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461102a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102190612fca565b60405180910390fd5b60005b82518110156110ba57816010600085848151811061104e5761104d61306f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806110b29061309e565b91505061102d565b505050565b6110c7611335565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114b90612fca565b60405180910390fd5b806017819055506509184e72a000601754101561117057600080fd5b50565b61117b611335565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ff90612fca565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126f90613159565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156113ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a4906131eb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561141d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114149061327d565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114fb9190612af6565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611578576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156f9061330f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115df906133a1565b60405180910390fd5b6000811161162b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162290613433565b60405180910390fd5b611633610b84565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116a15750611671610b84565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611aab57601560149054906101000a900460ff16611730576116c2610b84565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461172f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611726906134c5565b60405180910390fd5b5b601654811115611775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176c90613531565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118195750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184f906135c3565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461190557601754816118ba8461090e565b6118c49190613019565b10611904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fb90613655565b60405180910390fd5b5b60006119103061090e565b905060006018548210159050600260185461192b9190613675565b82106119435760026018546119409190613675565b91505b80801561195b575060158054906101000a900460ff16155b80156119b55750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156119cd5750601560169054906101000a900460ff165b8015611a235750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611a795750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611aa857611a8782611eea565b600047905067016345785d8a0000811115611aa657611aa547611e10565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b525750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611c055750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611c045750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611c135760009050611d9a565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611cbe5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611cd657600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d815750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d9957600a54600c81905550600b54600d819055505b5b611da684848484612170565b50505050565b6000838311158290611df4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611deb919061292d565b60405180910390fd5b5060008385611e0391906136cf565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e78573d6000803e3d6000fd5b5050565b6000600654821115611ec3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eba90613775565b60405180910390fd5b6000611ecd61219d565b9050611ee281846121c890919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611f2157611f20612de4565b5b604051908082528060200260200182016040528015611f4f5781602001602082028036833780820191505090505b5090503081600081518110611f6757611f6661306f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561200957600080fd5b505afa15801561201d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204191906137aa565b816001815181106120555761205461306f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506120bc30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461133d565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016121209594939291906138d0565b600060405180830381600087803b15801561213a57600080fd5b505af115801561214e573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b8061217e5761217d612212565b5b612189848484612255565b8061219757612196612420565b5b50505050565b60008060006121aa612434565b915091506121c181836121c890919063ffffffff16565b9250505090565b600061220a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612490565b905092915050565b6000600c5414801561222657506000600d54145b1561223057612253565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612267876124f3565b9550955095509550955095506122c586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255b90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061235a85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125a590919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123a681612603565b6123b084836126c0565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161240d9190612af6565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600066038d7ea4c68000905061246666038d7ea4c680006006546121c890919063ffffffff16565b8210156124835760065466038d7ea4c6800093509350505061248c565b81819350935050505b9091565b600080831182906124d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ce919061292d565b60405180910390fd5b50600083856124e69190613959565b9050809150509392505050565b60008060008060008060008060006125108a600c54600d546126fa565b925092509250600061252061219d565b905060008060006125338e878787612790565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061259d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611dac565b905092915050565b60008082846125b49190613019565b9050838110156125f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f0906139d6565b60405180910390fd5b8091505092915050565b600061260d61219d565b90506000612624828461281990919063ffffffff16565b905061267881600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125a590919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6126d58260065461255b90919063ffffffff16565b6006819055506126f0816007546125a590919063ffffffff16565b6007819055505050565b6000806000806127266064612718888a61281990919063ffffffff16565b6121c890919063ffffffff16565b905060006127506064612742888b61281990919063ffffffff16565b6121c890919063ffffffff16565b905060006127798261276b858c61255b90919063ffffffff16565b61255b90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806127a9858961281990919063ffffffff16565b905060006127c0868961281990919063ffffffff16565b905060006127d7878961281990919063ffffffff16565b90506000612800826127f2858761255b90919063ffffffff16565b61255b90919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083141561282c576000905061288e565b6000828461283a9190613675565b90508284826128499190613959565b14612889576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288090613a68565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156128ce5780820151818401526020810190506128b3565b838111156128dd576000848401525b50505050565b6000601f19601f8301169050919050565b60006128ff82612894565b612909818561289f565b93506129198185602086016128b0565b612922816128e3565b840191505092915050565b6000602082019050818103600083015261294781846128f4565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061298e82612963565b9050919050565b61299e81612983565b81146129a957600080fd5b50565b6000813590506129bb81612995565b92915050565b6000819050919050565b6129d4816129c1565b81146129df57600080fd5b50565b6000813590506129f1816129cb565b92915050565b60008060408385031215612a0e57612a0d612959565b5b6000612a1c858286016129ac565b9250506020612a2d858286016129e2565b9150509250929050565b60008115159050919050565b612a4c81612a37565b82525050565b6000602082019050612a676000830184612a43565b92915050565b6000819050919050565b6000612a92612a8d612a8884612963565b612a6d565b612963565b9050919050565b6000612aa482612a77565b9050919050565b6000612ab682612a99565b9050919050565b612ac681612aab565b82525050565b6000602082019050612ae16000830184612abd565b92915050565b612af0816129c1565b82525050565b6000602082019050612b0b6000830184612ae7565b92915050565b600080600060608486031215612b2a57612b29612959565b5b6000612b38868287016129ac565b9350506020612b49868287016129ac565b9250506040612b5a868287016129e2565b9150509250925092565b600060ff82169050919050565b612b7a81612b64565b82525050565b6000602082019050612b956000830184612b71565b92915050565b612ba481612983565b82525050565b6000602082019050612bbf6000830184612b9b565b92915050565b612bce81612a37565b8114612bd957600080fd5b50565b600081359050612beb81612bc5565b92915050565b600060208284031215612c0757612c06612959565b5b6000612c1584828501612bdc565b91505092915050565b600060208284031215612c3457612c33612959565b5b6000612c42848285016129ac565b91505092915050565b600060208284031215612c6157612c60612959565b5b6000612c6f848285016129e2565b91505092915050565b60008060008060808587031215612c9257612c91612959565b5b6000612ca0878288016129e2565b9450506020612cb1878288016129e2565b9350506040612cc2878288016129e2565b9250506060612cd3878288016129e2565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112612d0457612d03612cdf565b5b8235905067ffffffffffffffff811115612d2157612d20612ce4565b5b602083019150836020820283011115612d3d57612d3c612ce9565b5b9250929050565b600080600060408486031215612d5d57612d5c612959565b5b600084013567ffffffffffffffff811115612d7b57612d7a61295e565b5b612d8786828701612cee565b93509350506020612d9a86828701612bdc565b9150509250925092565b60008060408385031215612dbb57612dba612959565b5b6000612dc9858286016129ac565b9250506020612dda858286016129ac565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612e1c826128e3565b810181811067ffffffffffffffff82111715612e3b57612e3a612de4565b5b80604052505050565b6000612e4e61294f565b9050612e5a8282612e13565b919050565b600067ffffffffffffffff821115612e7a57612e79612de4565b5b602082029050602081019050919050565b6000612e9e612e9984612e5f565b612e44565b90508083825260208201905060208402830185811115612ec157612ec0612ce9565b5b835b81811015612eea5780612ed688826129ac565b845260208401935050602081019050612ec3565b5050509392505050565b600082601f830112612f0957612f08612cdf565b5b8135612f19848260208601612e8b565b91505092915050565b60008060408385031215612f3957612f38612959565b5b600083013567ffffffffffffffff811115612f5757612f5661295e565b5b612f6385828601612ef4565b9250506020612f7485828601612bdc565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612fb460208361289f565b9150612fbf82612f7e565b602082019050919050565b60006020820190508181036000830152612fe381612fa7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613024826129c1565b915061302f836129c1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561306457613063612fea565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006130a9826129c1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156130dc576130db612fea565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061314360268361289f565b915061314e826130e7565b604082019050919050565b6000602082019050818103600083015261317281613136565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006131d560248361289f565b91506131e082613179565b604082019050919050565b60006020820190508181036000830152613204816131c8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061326760228361289f565b91506132728261320b565b604082019050919050565b600060208201905081810360008301526132968161325a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006132f960258361289f565b91506133048261329d565b604082019050919050565b60006020820190508181036000830152613328816132ec565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061338b60238361289f565b91506133968261332f565b604082019050919050565b600060208201905081810360008301526133ba8161337e565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061341d60298361289f565b9150613428826133c1565b604082019050919050565b6000602082019050818103600083015261344c81613410565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006134af603f8361289f565b91506134ba82613453565b604082019050919050565b600060208201905081810360008301526134de816134a2565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b600061351b601c8361289f565b9150613526826134e5565b602082019050919050565b6000602082019050818103600083015261354a8161350e565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b60006135ad60238361289f565b91506135b882613551565b604082019050919050565b600060208201905081810360008301526135dc816135a0565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061363f60238361289f565b915061364a826135e3565b604082019050919050565b6000602082019050818103600083015261366e81613632565b9050919050565b6000613680826129c1565b915061368b836129c1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156136c4576136c3612fea565b5b828202905092915050565b60006136da826129c1565b91506136e5836129c1565b9250828210156136f8576136f7612fea565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b600061375f602a8361289f565b915061376a82613703565b604082019050919050565b6000602082019050818103600083015261378e81613752565b9050919050565b6000815190506137a481612995565b92915050565b6000602082840312156137c0576137bf612959565b5b60006137ce84828501613795565b91505092915050565b6000819050919050565b60006137fc6137f76137f2846137d7565b612a6d565b6129c1565b9050919050565b61380c816137e1565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61384781612983565b82525050565b6000613859838361383e565b60208301905092915050565b6000602082019050919050565b600061387d82613812565b613887818561381d565b93506138928361382e565b8060005b838110156138c35781516138aa888261384d565b97506138b583613865565b925050600181019050613896565b5085935050505092915050565b600060a0820190506138e56000830188612ae7565b6138f26020830187613803565b81810360408301526139048186613872565b90506139136060830185612b9b565b6139206080830184612ae7565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613964826129c1565b915061396f836129c1565b92508261397f5761397e61392a565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006139c0601b8361289f565b91506139cb8261398a565b602082019050919050565b600060208201905081810360008301526139ef816139b3565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a5260218361289f565b9150613a5d826139f6565b604082019050919050565b60006020820190508181036000830152613a8181613a45565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220678365b24967633d3b8edfec57c0c60b47deb325586c8b31f808430ef1c2ebbd64736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c80637f2feddc116100ec578063bfd792841161008a578063dd62ed3e11610064578063dd62ed3e146105f5578063e38c946414610632578063ea1644d51461065b578063f2fde38b14610684576101c2565b8063bfd7928414610578578063c3c8cd80146105b5578063c492f046146105cc576101c2565b806395d89b41116100c657806395d89b41146104be57806398a5c315146104e9578063a2a957bb14610512578063a9059cbb1461053b576101c2565b80637f2feddc1461042b5780638da5cb5b146104685780638f9a55c014610493576101c2565b806349bd5a5e1161015957806370a082311161013357806370a0823114610383578063715018a6146103c057806374010ece146103d75780637d1db4a514610400576101c2565b806349bd5a5e146103185780636d8aa8f8146103435780636fc3eaec1461036c576101c2565b806318160ddd1161019557806318160ddd1461025a57806323b872dd146102855780632fd689e3146102c2578063313ce567146102ed576101c2565b806306fdde03146101c7578063095ea7b3146101f25780631694505e1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc6106ad565b6040516101e9919061292d565b60405180910390f35b3480156101fe57600080fd5b50610219600480360381019061021491906129f7565b6106ea565b6040516102269190612a52565b60405180910390f35b34801561023b57600080fd5b50610244610708565b6040516102519190612acc565b60405180910390f35b34801561026657600080fd5b5061026f61072e565b60405161027c9190612af6565b60405180910390f35b34801561029157600080fd5b506102ac60048036038101906102a79190612b11565b61073d565b6040516102b99190612a52565b60405180910390f35b3480156102ce57600080fd5b506102d7610816565b6040516102e49190612af6565b60405180910390f35b3480156102f957600080fd5b5061030261081c565b60405161030f9190612b80565b60405180910390f35b34801561032457600080fd5b5061032d610825565b60405161033a9190612baa565b60405180910390f35b34801561034f57600080fd5b5061036a60048036038101906103659190612bf1565b61084b565b005b34801561037857600080fd5b506103816108fd565b005b34801561038f57600080fd5b506103aa60048036038101906103a59190612c1e565b61090e565b6040516103b79190612af6565b60405180910390f35b3480156103cc57600080fd5b506103d561095f565b005b3480156103e357600080fd5b506103fe60048036038101906103f99190612c4b565b610ab2565b005b34801561040c57600080fd5b50610415610b66565b6040516104229190612af6565b60405180910390f35b34801561043757600080fd5b50610452600480360381019061044d9190612c1e565b610b6c565b60405161045f9190612af6565b60405180910390f35b34801561047457600080fd5b5061047d610b84565b60405161048a9190612baa565b60405180910390f35b34801561049f57600080fd5b506104a8610bad565b6040516104b59190612af6565b60405180910390f35b3480156104ca57600080fd5b506104d3610bb3565b6040516104e0919061292d565b60405180910390f35b3480156104f557600080fd5b50610510600480360381019061050b9190612c4b565b610bf0565b005b34801561051e57600080fd5b5061053960048036038101906105349190612c78565b610c8f565b005b34801561054757600080fd5b50610562600480360381019061055d91906129f7565b610d7d565b60405161056f9190612a52565b60405180910390f35b34801561058457600080fd5b5061059f600480360381019061059a9190612c1e565b610d9b565b6040516105ac9190612a52565b60405180910390f35b3480156105c157600080fd5b506105ca610dbb565b005b3480156105d857600080fd5b506105f360048036038101906105ee9190612d44565b610dd4565b005b34801561060157600080fd5b5061061c60048036038101906106179190612da4565b610f0e565b6040516106299190612af6565b60405180910390f35b34801561063e57600080fd5b5061065960048036038101906106549190612f22565b610f95565b005b34801561066757600080fd5b50610682600480360381019061067d9190612c4b565b6110bf565b005b34801561069057600080fd5b506106ab60048036038101906106a69190612c1e565b611173565b005b60606040518060400160405280600c81526020017f426974636f696e20323032340000000000000000000000000000000000000000815250905090565b60006106fe6106f7611335565b848461133d565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600066038d7ea4c68000905090565b600061074a848484611508565b61080b84610756611335565b61080685604051806060016040528060288152602001613a8960289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107bc611335565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dac9092919063ffffffff16565b61133d565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610853611335565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d790612fca565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b600047905061090b81611e10565b50565b6000610958600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e7c565b9050919050565b610967611335565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109eb90612fca565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610aba611335565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3e90612fca565b60405180910390fd5b806016819055506509184e72a0006016541015610b6357600080fd5b50565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600581526020017f4254433234000000000000000000000000000000000000000000000000000000815250905090565b610bf8611335565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7c90612fca565b60405180910390fd5b8060188190555050565b610c97611335565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1b90612fca565b60405180910390fd5b8360088190555082600a819055508160098190555080600b819055506014600b54600954600a54600854610d589190613019565b610d629190613019565b610d6c9190613019565b1115610d7757600080fd5b50505050565b6000610d91610d8a611335565b8484611508565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b6000610dc63061090e565b9050610dd181611eea565b50565b610ddc611335565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6090612fca565b60405180910390fd5b60005b83839050811015610f08578160056000868685818110610e8f57610e8e61306f565b5b9050602002016020810190610ea49190612c1e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610f009061309e565b915050610e6c565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610f9d611335565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461102a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102190612fca565b60405180910390fd5b60005b82518110156110ba57816010600085848151811061104e5761104d61306f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806110b29061309e565b91505061102d565b505050565b6110c7611335565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114b90612fca565b60405180910390fd5b806017819055506509184e72a000601754101561117057600080fd5b50565b61117b611335565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ff90612fca565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126f90613159565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156113ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a4906131eb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561141d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114149061327d565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114fb9190612af6565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611578576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156f9061330f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115df906133a1565b60405180910390fd5b6000811161162b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162290613433565b60405180910390fd5b611633610b84565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116a15750611671610b84565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611aab57601560149054906101000a900460ff16611730576116c2610b84565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461172f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611726906134c5565b60405180910390fd5b5b601654811115611775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176c90613531565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118195750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184f906135c3565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461190557601754816118ba8461090e565b6118c49190613019565b10611904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fb90613655565b60405180910390fd5b5b60006119103061090e565b905060006018548210159050600260185461192b9190613675565b82106119435760026018546119409190613675565b91505b80801561195b575060158054906101000a900460ff16155b80156119b55750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156119cd5750601560169054906101000a900460ff165b8015611a235750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611a795750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611aa857611a8782611eea565b600047905067016345785d8a0000811115611aa657611aa547611e10565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b525750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611c055750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611c045750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611c135760009050611d9a565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611cbe5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611cd657600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d815750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d9957600a54600c81905550600b54600d819055505b5b611da684848484612170565b50505050565b6000838311158290611df4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611deb919061292d565b60405180910390fd5b5060008385611e0391906136cf565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e78573d6000803e3d6000fd5b5050565b6000600654821115611ec3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eba90613775565b60405180910390fd5b6000611ecd61219d565b9050611ee281846121c890919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611f2157611f20612de4565b5b604051908082528060200260200182016040528015611f4f5781602001602082028036833780820191505090505b5090503081600081518110611f6757611f6661306f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561200957600080fd5b505afa15801561201d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204191906137aa565b816001815181106120555761205461306f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506120bc30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461133d565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016121209594939291906138d0565b600060405180830381600087803b15801561213a57600080fd5b505af115801561214e573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b8061217e5761217d612212565b5b612189848484612255565b8061219757612196612420565b5b50505050565b60008060006121aa612434565b915091506121c181836121c890919063ffffffff16565b9250505090565b600061220a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612490565b905092915050565b6000600c5414801561222657506000600d54145b1561223057612253565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612267876124f3565b9550955095509550955095506122c586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255b90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061235a85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125a590919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123a681612603565b6123b084836126c0565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161240d9190612af6565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600066038d7ea4c68000905061246666038d7ea4c680006006546121c890919063ffffffff16565b8210156124835760065466038d7ea4c6800093509350505061248c565b81819350935050505b9091565b600080831182906124d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ce919061292d565b60405180910390fd5b50600083856124e69190613959565b9050809150509392505050565b60008060008060008060008060006125108a600c54600d546126fa565b925092509250600061252061219d565b905060008060006125338e878787612790565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061259d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611dac565b905092915050565b60008082846125b49190613019565b9050838110156125f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f0906139d6565b60405180910390fd5b8091505092915050565b600061260d61219d565b90506000612624828461281990919063ffffffff16565b905061267881600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125a590919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6126d58260065461255b90919063ffffffff16565b6006819055506126f0816007546125a590919063ffffffff16565b6007819055505050565b6000806000806127266064612718888a61281990919063ffffffff16565b6121c890919063ffffffff16565b905060006127506064612742888b61281990919063ffffffff16565b6121c890919063ffffffff16565b905060006127798261276b858c61255b90919063ffffffff16565b61255b90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806127a9858961281990919063ffffffff16565b905060006127c0868961281990919063ffffffff16565b905060006127d7878961281990919063ffffffff16565b90506000612800826127f2858761255b90919063ffffffff16565b61255b90919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083141561282c576000905061288e565b6000828461283a9190613675565b90508284826128499190613959565b14612889576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288090613a68565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156128ce5780820151818401526020810190506128b3565b838111156128dd576000848401525b50505050565b6000601f19601f8301169050919050565b60006128ff82612894565b612909818561289f565b93506129198185602086016128b0565b612922816128e3565b840191505092915050565b6000602082019050818103600083015261294781846128f4565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061298e82612963565b9050919050565b61299e81612983565b81146129a957600080fd5b50565b6000813590506129bb81612995565b92915050565b6000819050919050565b6129d4816129c1565b81146129df57600080fd5b50565b6000813590506129f1816129cb565b92915050565b60008060408385031215612a0e57612a0d612959565b5b6000612a1c858286016129ac565b9250506020612a2d858286016129e2565b9150509250929050565b60008115159050919050565b612a4c81612a37565b82525050565b6000602082019050612a676000830184612a43565b92915050565b6000819050919050565b6000612a92612a8d612a8884612963565b612a6d565b612963565b9050919050565b6000612aa482612a77565b9050919050565b6000612ab682612a99565b9050919050565b612ac681612aab565b82525050565b6000602082019050612ae16000830184612abd565b92915050565b612af0816129c1565b82525050565b6000602082019050612b0b6000830184612ae7565b92915050565b600080600060608486031215612b2a57612b29612959565b5b6000612b38868287016129ac565b9350506020612b49868287016129ac565b9250506040612b5a868287016129e2565b9150509250925092565b600060ff82169050919050565b612b7a81612b64565b82525050565b6000602082019050612b956000830184612b71565b92915050565b612ba481612983565b82525050565b6000602082019050612bbf6000830184612b9b565b92915050565b612bce81612a37565b8114612bd957600080fd5b50565b600081359050612beb81612bc5565b92915050565b600060208284031215612c0757612c06612959565b5b6000612c1584828501612bdc565b91505092915050565b600060208284031215612c3457612c33612959565b5b6000612c42848285016129ac565b91505092915050565b600060208284031215612c6157612c60612959565b5b6000612c6f848285016129e2565b91505092915050565b60008060008060808587031215612c9257612c91612959565b5b6000612ca0878288016129e2565b9450506020612cb1878288016129e2565b9350506040612cc2878288016129e2565b9250506060612cd3878288016129e2565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112612d0457612d03612cdf565b5b8235905067ffffffffffffffff811115612d2157612d20612ce4565b5b602083019150836020820283011115612d3d57612d3c612ce9565b5b9250929050565b600080600060408486031215612d5d57612d5c612959565b5b600084013567ffffffffffffffff811115612d7b57612d7a61295e565b5b612d8786828701612cee565b93509350506020612d9a86828701612bdc565b9150509250925092565b60008060408385031215612dbb57612dba612959565b5b6000612dc9858286016129ac565b9250506020612dda858286016129ac565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612e1c826128e3565b810181811067ffffffffffffffff82111715612e3b57612e3a612de4565b5b80604052505050565b6000612e4e61294f565b9050612e5a8282612e13565b919050565b600067ffffffffffffffff821115612e7a57612e79612de4565b5b602082029050602081019050919050565b6000612e9e612e9984612e5f565b612e44565b90508083825260208201905060208402830185811115612ec157612ec0612ce9565b5b835b81811015612eea5780612ed688826129ac565b845260208401935050602081019050612ec3565b5050509392505050565b600082601f830112612f0957612f08612cdf565b5b8135612f19848260208601612e8b565b91505092915050565b60008060408385031215612f3957612f38612959565b5b600083013567ffffffffffffffff811115612f5757612f5661295e565b5b612f6385828601612ef4565b9250506020612f7485828601612bdc565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612fb460208361289f565b9150612fbf82612f7e565b602082019050919050565b60006020820190508181036000830152612fe381612fa7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613024826129c1565b915061302f836129c1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561306457613063612fea565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006130a9826129c1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156130dc576130db612fea565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061314360268361289f565b915061314e826130e7565b604082019050919050565b6000602082019050818103600083015261317281613136565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006131d560248361289f565b91506131e082613179565b604082019050919050565b60006020820190508181036000830152613204816131c8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061326760228361289f565b91506132728261320b565b604082019050919050565b600060208201905081810360008301526132968161325a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006132f960258361289f565b91506133048261329d565b604082019050919050565b60006020820190508181036000830152613328816132ec565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061338b60238361289f565b91506133968261332f565b604082019050919050565b600060208201905081810360008301526133ba8161337e565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061341d60298361289f565b9150613428826133c1565b604082019050919050565b6000602082019050818103600083015261344c81613410565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006134af603f8361289f565b91506134ba82613453565b604082019050919050565b600060208201905081810360008301526134de816134a2565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b600061351b601c8361289f565b9150613526826134e5565b602082019050919050565b6000602082019050818103600083015261354a8161350e565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b60006135ad60238361289f565b91506135b882613551565b604082019050919050565b600060208201905081810360008301526135dc816135a0565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061363f60238361289f565b915061364a826135e3565b604082019050919050565b6000602082019050818103600083015261366e81613632565b9050919050565b6000613680826129c1565b915061368b836129c1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156136c4576136c3612fea565b5b828202905092915050565b60006136da826129c1565b91506136e5836129c1565b9250828210156136f8576136f7612fea565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b600061375f602a8361289f565b915061376a82613703565b604082019050919050565b6000602082019050818103600083015261378e81613752565b9050919050565b6000815190506137a481612995565b92915050565b6000602082840312156137c0576137bf612959565b5b60006137ce84828501613795565b91505092915050565b6000819050919050565b60006137fc6137f76137f2846137d7565b612a6d565b6129c1565b9050919050565b61380c816137e1565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61384781612983565b82525050565b6000613859838361383e565b60208301905092915050565b6000602082019050919050565b600061387d82613812565b613887818561381d565b93506138928361382e565b8060005b838110156138c35781516138aa888261384d565b97506138b583613865565b925050600181019050613896565b5085935050505092915050565b600060a0820190506138e56000830188612ae7565b6138f26020830187613803565b81810360408301526139048186613872565b90506139136060830185612b9b565b6139206080830184612ae7565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613964826129c1565b915061396f836129c1565b92508261397f5761397e61392a565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006139c0601b8361289f565b91506139cb8261398a565b602082019050919050565b600060208201905081810360008301526139ef816139b3565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a5260218361289f565b9150613a5d826139f6565b604082019050919050565b60006020820190508181036000830152613a8181613a45565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220678365b24967633d3b8edfec57c0c60b47deb325586c8b31f808430ef1c2ebbd64736f6c63430008090033

Deployed Bytecode Sourcemap

4187:13335:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6679:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7604:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5529:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6956:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7805:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5828:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6865:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5577:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16806:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12442:143;;;;;;;;;;;;;:::i;:::-;;7059:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1674:148;;;;;;;;;;;;;:::i;:::-;;16946:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5726:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5271;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1460:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5776:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6770:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16615:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16188:375;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7205:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5233:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12290:144;;;;;;;;;;;;;:::i;:::-;;17283:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7412:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12593:189;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17110:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1830:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6679:83;6716:13;6749:5;;;;;;;;;;;;;;;;;6742:12;;6679:83;:::o;7604:193::-;7706:4;7728:39;7737:12;:10;:12::i;:::-;7751:7;7760:6;7728:8;:39::i;:::-;7785:4;7778:11;;7604:193;;;;:::o;5529:41::-;;;;;;;;;;;;;:::o;6956:95::-;7009:7;4736:15;7029:14;;6956:95;:::o;7805:446::-;7937:4;7954:36;7964:6;7972:9;7983:6;7954:9;:36::i;:::-;8001:220;8024:6;8045:12;:10;:12::i;:::-;8072:138;8128:6;8072:138;;;;;;;;;;;;;;;;;:11;:19;8084:6;8072:19;;;;;;;;;;;;;;;:33;8092:12;:10;:12::i;:::-;8072:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8001:8;:220::i;:::-;8239:4;8232:11;;7805:446;;;;;:::o;5828:49::-;;;;:::o;6865:83::-;6906:5;4410:1;6924:16;;6865:83;:::o;5577:28::-;;;;;;;;;;;;;:::o;16806:101::-;1597:12;:10;:12::i;:::-;1587:22;;:6;;;;;;;;;;:22;;;1579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16887:12:::1;16873:11;;:26;;;;;;;;;;;;;;;;;;16806:101:::0;:::o;12442:143::-;12484:26;12513:21;12484:50;;12545:32;12558:18;12545:12;:32::i;:::-;12473:112;12442:143::o;7059:138::-;7125:7;7152:37;7172:7;:16;7180:7;7172:16;;;;;;;;;;;;;;;;7152:19;:37::i;:::-;7145:44;;7059:138;;;:::o;1674:148::-;1597:12;:10;:12::i;:::-;1587:22;;:6;;;;;;;;;;:22;;;1579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1781:1:::1;1744:40;;1765:6;::::0;::::1;;;;;;;;1744:40;;;;;;;;;;;;1812:1;1795:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1674:148::o:0;16946:156::-;1597:12;:10;:12::i;:::-;1587:22;;:6;;;;;;;;;;:22;;;1579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17035:11:::1;17020:12;:26;;;;17082:11;17066:12;;:27;;17057:37;;;::::0;::::1;;16946:156:::0;:::o;5726:43::-;;;;:::o;5271:::-;;;;;;;;;;;;;;;;;:::o;1460:79::-;1498:7;1525:6;;;;;;;;;;;1518:13;;1460:79;:::o;5776:45::-;;;;:::o;6770:87::-;6809:13;6842:7;;;;;;;;;;;;;;;;;6835:14;;6770:87;:::o;16615:139::-;1597:12;:10;:12::i;:::-;1587:22;;:6;;;;;;;;;;:22;;;1579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16728:18:::1;16706:19;:40;;;;16615:139:::0;:::o;16188:375::-;1597:12;:10;:12::i;:::-;1587:22;;:6;;;;;;;;;;:22;;;1579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16339:13:::1;16322:14;:30;;;;16381:14;16363:15;:32;;;;16421:11;16406:12;:26;;;;16459:12;16443:13;:28;;;;16552:2;16535:13;;16522:12;;16506:15;;16491:14;;:30;;;;:::i;:::-;:43;;;;:::i;:::-;:57;;;;:::i;:::-;:63;;16482:73;;;::::0;::::1;;16188:375:::0;;;;:::o;7205:199::-;7310:4;7332:42;7342:12;:10;:12::i;:::-;7356:9;7367:6;7332:9;:42::i;:::-;7392:4;7385:11;;7205:199;;;;:::o;5233:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12290:144::-;12332:23;12358:24;12376:4;12358:9;:24::i;:::-;12332:50;;12393:33;12410:15;12393:16;:33::i;:::-;12321:113;12290:144::o;17283:234::-;1597:12;:10;:12::i;:::-;1587:22;;:6;;;;;;;;;;:22;;;1579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17400:9:::1;17396:114;17419:8;;:15;;17415:1;:19;17396:114;;;17490:8;17456:18;:31;17475:8;;17484:1;17475:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17456:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17436:3;;;;;:::i;:::-;;;;17396:114;;;;17283:234:::0;;;:::o;7412:184::-;7529:7;7561:11;:18;7573:5;7561:18;;;;;;;;;;;;;;;:27;7580:7;7561:27;;;;;;;;;;;;;;;;7554:34;;7412:184;;;;:::o;12593:189::-;1597:12;:10;:12::i;:::-;1587:22;;:6;;;;;;;;;;:22;;;1579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12688:9:::1;12683:92;12707:5;:12;12703:1;:16;12683:92;;;12758:5;12741:4;:14;12746:5;12752:1;12746:8;;;;;;;;:::i;:::-;;;;;;;;12741:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;12721:3;;;;;:::i;:::-;;;;12683:92;;;;12593:189:::0;;:::o;17110:165::-;1597:12;:10;:12::i;:::-;1587:22;;:6;;;;;;;;;;:22;;;1579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17204:13:::1;17187:14;:30;;;;17255:11;17237:14;;:29;;17228:39;;;::::0;::::1;;17110:165:::0;:::o;1830:244::-;1597:12;:10;:12::i;:::-;1587:22;;:6;;;;;;;;;;:22;;;1579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1939:1:::1;1919:22;;:8;:22;;;;1911:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2029:8;2000:38;;2021:6;::::0;::::1;;;;;;;;2000:38;;;;;;;;;;;;2058:8;2049:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1830:244:::0;:::o;219:98::-;272:7;299:10;292:17;;219:98;:::o;8942:369::-;9086:1;9069:19;;:5;:19;;;;9061:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9167:1;9148:21;;:7;:21;;;;9140:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9249:6;9219:11;:18;9231:5;9219:18;;;;;;;;;;;;;;;:27;9238:7;9219:27;;;;;;;;;;;;;;;:36;;;;9287:7;9271:32;;9280:5;9271:32;;;9296:6;9271:32;;;;;;:::i;:::-;;;;;;;;8942:369;;;:::o;9319:2365::-;9457:1;9441:18;;:4;:18;;;;9433:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9534:1;9520:16;;:2;:16;;;;9512:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9604:1;9595:6;:10;9587:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9676:7;:5;:7::i;:::-;9668:15;;:4;:15;;;;:32;;;;;9693:7;:5;:7::i;:::-;9687:13;;:2;:13;;;;9668:32;9664:1294;;;9757:11;;;;;;;;;;;9752:144;;9805:7;:5;:7::i;:::-;9797:15;;:4;:15;;;9789:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9752:144;9930:12;;9920:6;:22;;9912:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9999:4;:10;10004:4;9999:10;;;;;;;;;;;;;;;;;;;;;;;;;9998:11;:24;;;;;10014:4;:8;10019:2;10014:8;;;;;;;;;;;;;;;;;;;;;;;;;10013:9;9998:24;9990:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10088:13;;;;;;;;;;;10082:19;;:2;:19;;;10079:146;;10155:14;;10146:6;10130:13;10140:2;10130:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10122:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10079:146;10241:28;10272:24;10290:4;10272:9;:24::i;:::-;10241:55;;10311:12;10350:19;;10326:20;:43;;10311:58;;10433:1;10413:19;;:21;;;;:::i;:::-;10389:20;:45;10386:142;;10511:1;10491:19;;:21;;;;:::i;:::-;10468:44;;10386:142;10548:7;:18;;;;;10560:6;;;;;;;;;;10559:7;10548:18;:43;;;;;10578:13;;;;;;;;;;;10570:21;;:4;:21;;;;10548:43;:58;;;;;10595:11;;;;;;;;;;;10548:58;:87;;;;;10611:18;:24;10630:4;10611:24;;;;;;;;;;;;;;;;;;;;;;;;;10610:25;10548:87;:114;;;;;10640:18;:22;10659:2;10640:22;;;;;;;;;;;;;;;;;;;;;;;;;10639:23;10548:114;10544:403;;;10683:38;10700:20;10683:16;:38::i;:::-;10740:26;10769:21;10740:50;;10834:18;10813;:39;10809:123;;;10877:35;10890:21;10877:12;:35::i;:::-;10809:123;10664:283;10544:403;9702:1256;;9664:1294;10970:12;10985:4;10970:19;;11034:18;:24;11053:4;11034:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11062:18;:22;11081:2;11062:22;;;;;;;;;;;;;;;;;;;;;;;;;11034:50;11033:102;;;;11098:13;;;;;;;;;;;11090:21;;:4;:21;;;;:44;;;;;11121:13;;;;;;;;;;;11115:19;;:2;:19;;;;11090:44;11033:102;11029:594;;;11162:5;11152:15;;11029:594;;;11245:13;;;;;;;;;;;11237:21;;:4;:21;;;:55;;;;;11276:15;;;;;;;;;;;11262:30;;:2;:30;;;;11237:55;11234:162;;;11325:14;;11313:9;:26;;;;11368:12;;11358:7;:22;;;;11234:162;11455:13;;;;;;;;;;;11449:19;;:2;:19;;;:55;;;;;11488:15;;;;;;;;;;;11472:32;;:4;:32;;;;11449:55;11445:165;;;11537:15;;11525:9;:27;;;;11581:13;;11571:7;:23;;;;11445:165;11029:594;11635:41;11650:4;11656:2;11660:6;11668:7;11635:14;:41::i;:::-;9422:2262;9319:2365;;;:::o;2438:224::-;2558:7;2591:1;2586;:6;;2594:12;2578:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2618:9;2634:1;2630;:5;;;;:::i;:::-;2618:17;;2653:1;2646:8;;;2438:224;;;;;:::o;12183:99::-;12240:17;;;;;;;;;;;:26;;:34;12267:6;12240:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12183:99;:::o;8259:323::-;8354:7;8412;;8401;:18;;8379:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8500:19;8522:10;:8;:10::i;:::-;8500:32;;8550:24;8562:11;8550:7;:11;;:24;;;;:::i;:::-;8543:31;;;8259:323;;;:::o;11692:483::-;5980:4;5971:6;;:13;;;;;;;;;;;;;;;;;;11770:21:::1;11808:1;11794:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11770:40;;11839:4;11821;11826:1;11821:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11865:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11855:4;11860:1;11855:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11898:62;11915:4;11930:15;;;;;;;;;;;11948:11;11898:8;:62::i;:::-;11971:15;;;;;;;;;;;:66;;;12052:11;12078:1;12094:4;12121;12141:15;11971:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11759:416;6016:5:::0;6007:6;;:14;;;;;;;;;;;;;;;;;;11692:483;:::o;12790:282::-;12946:7;12941:28;;12955:14;:12;:14::i;:::-;12941:28;12980:44;12998:6;13006:9;13017:6;12980:17;:44::i;:::-;13040:7;13035:29;;13049:15;:13;:15::i;:::-;13035:29;12790:282;;;;:::o;15751:164::-;15793:7;15814:15;15831;15850:19;:17;:19::i;:::-;15813:56;;;;15887:20;15899:7;15887;:11;;:20;;;;:::i;:::-;15880:27;;;;15751:164;:::o;2924:132::-;2982:7;3009:39;3013:1;3016;3009:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3002:46;;2924:132;;;;:::o;8590:219::-;8650:1;8637:9;;:14;:30;;;;;8666:1;8655:7;;:12;8637:30;8633:43;;;8669:7;;8633:43;8708:9;;8688:17;:29;;;;8746:7;;8728:15;:25;;;;8778:1;8766:9;:13;;;;8800:1;8790:7;:11;;;;8590:219;:::o;13080:610::-;13227:15;13257:23;13295:12;13322:23;13360:12;13387:13;13414:19;13425:7;13414:10;:19::i;:::-;13212:221;;;;;;;;;;;;13462:28;13482:7;13462;:15;13470:6;13462:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13444:7;:15;13452:6;13444:15;;;;;;;;;;;;;;;:46;;;;13522:39;13545:15;13522:7;:18;13530:9;13522:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13501:7;:18;13509:9;13501:18;;;;;;;;;;;;;;;:60;;;;13572:16;13582:5;13572:9;:16::i;:::-;13599:23;13611:4;13617;13599:11;:23::i;:::-;13655:9;13638:44;;13647:6;13638:44;;;13666:15;13638:44;;;;;;:::i;:::-;;;;;;;;13201:489;;;;;;13080:610;;;:::o;8817:117::-;8873:17;;8861:9;:29;;;;8911:15;;8901:7;:25;;;;8817:117::o;15923:257::-;15974:7;15983;16003:15;16021:7;;16003:25;;16039:15;4736;16039:25;;16089:20;4736:15;16089:7;;:11;;:20;;;;:::i;:::-;16079:7;:30;16075:61;;;16119:7;;4736:15;16111:25;;;;;;;;16075:61;16155:7;16164;16147:25;;;;;;15923:257;;;:::o;3064:223::-;3184:7;3216:1;3212;:5;3219:12;3204:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3243:9;3259:1;3255;:5;;;;:::i;:::-;3243:17;;3278:1;3271:8;;;3064:223;;;;;:::o;14109:615::-;14209:7;14231;14253;14275;14297;14319;14355:23;14380:12;14394:13;14424:40;14436:7;14445:9;;14456:7;;14424:11;:40::i;:::-;14354:110;;;;;;14475:19;14497:10;:8;:10::i;:::-;14475:32;;14519:15;14536:23;14561:12;14590:46;14602:7;14611:4;14617:5;14624:11;14590;:46::i;:::-;14518:118;;;;;;14655:7;14664:15;14681:4;14687:15;14704:4;14710:5;14647:69;;;;;;;;;;;;;;;;;;;14109:615;;;;;;;:::o;2294:136::-;2352:7;2379:43;2383:1;2386;2379:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2372:50;;2294:136;;;;:::o;2107:179::-;2165:7;2185:9;2201:1;2197;:5;;;;:::i;:::-;2185:17;;2226:1;2221;:6;;2213:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2277:1;2270:8;;;2107:179;;;;:::o;13698:211::-;13751:19;13773:10;:8;:10::i;:::-;13751:32;;13794:13;13810:22;13820:11;13810:5;:9;;:22;;;;:::i;:::-;13794:38;;13868:33;13895:5;13868:7;:22;13884:4;13868:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13843:7;:22;13859:4;13843:22;;;;;;;;;;;;;;;:58;;;;13740:169;;13698:211;:::o;13917:147::-;13995:17;14007:4;13995:7;;:11;;:17;;;;:::i;:::-;13985:7;:27;;;;14036:20;14051:4;14036:10;;:14;;:20;;;;:::i;:::-;14023:10;:33;;;;13917:147;;:::o;14732:469::-;14901:7;14923;14945;14980:12;14995:30;15021:3;14995:21;15007:8;14995:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;14980:45;;15036:13;15052:28;15076:3;15052:19;15064:6;15052:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15036:44;;15091:23;15117:28;15139:5;15117:17;15129:4;15117:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15091:54;;15164:15;15181:4;15187:5;15156:37;;;;;;;;;14732:469;;;;;;;:::o;15209:534::-;15403:7;15425;15447;15482:15;15500:24;15512:11;15500:7;:11;;:24;;;;:::i;:::-;15482:42;;15535:12;15550:21;15559:11;15550:4;:8;;:21;;;;:::i;:::-;15535:36;;15582:13;15598:22;15608:11;15598:5;:9;;:22;;;;:::i;:::-;15582:38;;15631:23;15657:28;15679:5;15657:17;15669:4;15657:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15631:54;;15704:7;15713:15;15730:4;15696:39;;;;;;;;;;15209:534;;;;;;;;:::o;2670:246::-;2728:7;2757:1;2752;:6;2748:47;;;2782:1;2775:8;;;;2748:47;2805:9;2821:1;2817;:5;;;;:::i;:::-;2805:17;;2850:1;2845;2841;:5;;;;:::i;:::-;:10;2833:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2907:1;2900:8;;;2670: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:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:60::-;3522:3;3543:5;3536:12;;3494:60;;;:::o;3560:142::-;3610:9;3643:53;3661:34;3670:24;3688:5;3670:24;:::i;:::-;3661:34;:::i;:::-;3643:53;:::i;:::-;3630:66;;3560:142;;;:::o;3708:126::-;3758:9;3791:37;3822:5;3791:37;:::i;:::-;3778:50;;3708:126;;;:::o;3840:152::-;3916:9;3949:37;3980:5;3949:37;:::i;:::-;3936:50;;3840:152;;;:::o;3998:183::-;4111:63;4168:5;4111:63;:::i;:::-;4106:3;4099:76;3998:183;;:::o;4187:274::-;4306:4;4344:2;4333:9;4329:18;4321:26;;4357:97;4451:1;4440:9;4436:17;4427:6;4357:97;:::i;:::-;4187:274;;;;:::o;4467:118::-;4554:24;4572:5;4554:24;:::i;:::-;4549:3;4542:37;4467:118;;:::o;4591:222::-;4684:4;4722:2;4711:9;4707:18;4699:26;;4735:71;4803:1;4792:9;4788:17;4779:6;4735:71;:::i;:::-;4591:222;;;;:::o;4819:619::-;4896:6;4904;4912;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;5214:2;5240:53;5285:7;5276:6;5265:9;5261:22;5240:53;:::i;:::-;5230:63;;5185:118;5342:2;5368:53;5413:7;5404:6;5393:9;5389:22;5368:53;:::i;:::-;5358:63;;5313:118;4819:619;;;;;:::o;5444:86::-;5479:7;5519:4;5512:5;5508:16;5497:27;;5444:86;;;:::o;5536:112::-;5619:22;5635:5;5619:22;:::i;:::-;5614:3;5607:35;5536:112;;:::o;5654:214::-;5743:4;5781:2;5770:9;5766:18;5758:26;;5794:67;5858:1;5847:9;5843:17;5834:6;5794:67;:::i;:::-;5654:214;;;;:::o;5874:118::-;5961:24;5979:5;5961:24;:::i;:::-;5956:3;5949:37;5874:118;;:::o;5998:222::-;6091:4;6129:2;6118:9;6114:18;6106:26;;6142:71;6210:1;6199:9;6195:17;6186:6;6142:71;:::i;:::-;5998:222;;;;:::o;6226:116::-;6296:21;6311:5;6296:21;:::i;:::-;6289:5;6286:32;6276:60;;6332:1;6329;6322:12;6276:60;6226:116;:::o;6348:133::-;6391:5;6429:6;6416:20;6407:29;;6445:30;6469:5;6445:30;:::i;:::-;6348:133;;;;:::o;6487:323::-;6543:6;6592:2;6580:9;6571:7;6567:23;6563:32;6560:119;;;6598:79;;:::i;:::-;6560:119;6718:1;6743:50;6785:7;6776:6;6765:9;6761:22;6743:50;:::i;:::-;6733:60;;6689:114;6487:323;;;;:::o;6816:329::-;6875:6;6924:2;6912:9;6903:7;6899:23;6895:32;6892:119;;;6930:79;;:::i;:::-;6892:119;7050:1;7075:53;7120:7;7111:6;7100:9;7096:22;7075:53;:::i;:::-;7065:63;;7021:117;6816:329;;;;:::o;7151:::-;7210:6;7259:2;7247:9;7238:7;7234:23;7230:32;7227:119;;;7265:79;;:::i;:::-;7227:119;7385:1;7410:53;7455:7;7446:6;7435:9;7431:22;7410:53;:::i;:::-;7400:63;;7356:117;7151:329;;;;:::o;7486:765::-;7572:6;7580;7588;7596;7645:3;7633:9;7624:7;7620:23;7616:33;7613:120;;;7652:79;;:::i;:::-;7613:120;7772:1;7797:53;7842:7;7833:6;7822:9;7818:22;7797:53;:::i;:::-;7787:63;;7743:117;7899:2;7925:53;7970:7;7961:6;7950:9;7946:22;7925:53;:::i;:::-;7915:63;;7870:118;8027:2;8053:53;8098:7;8089:6;8078:9;8074:22;8053:53;:::i;:::-;8043:63;;7998:118;8155:2;8181:53;8226:7;8217:6;8206:9;8202:22;8181:53;:::i;:::-;8171:63;;8126:118;7486:765;;;;;;;:::o;8257:117::-;8366:1;8363;8356:12;8380:117;8489:1;8486;8479:12;8503:117;8612:1;8609;8602:12;8643:568;8716:8;8726:6;8776:3;8769:4;8761:6;8757:17;8753:27;8743:122;;8784:79;;:::i;:::-;8743:122;8897:6;8884:20;8874:30;;8927:18;8919:6;8916:30;8913:117;;;8949:79;;:::i;:::-;8913:117;9063:4;9055:6;9051:17;9039:29;;9117:3;9109:4;9101:6;9097:17;9087:8;9083:32;9080:41;9077:128;;;9124:79;;:::i;:::-;9077:128;8643:568;;;;;:::o;9217:698::-;9309:6;9317;9325;9374:2;9362:9;9353:7;9349:23;9345:32;9342:119;;;9380:79;;:::i;:::-;9342:119;9528:1;9517:9;9513:17;9500:31;9558:18;9550:6;9547:30;9544:117;;;9580:79;;:::i;:::-;9544:117;9693:80;9765:7;9756:6;9745:9;9741:22;9693:80;:::i;:::-;9675:98;;;;9471:312;9822:2;9848:50;9890:7;9881:6;9870:9;9866:22;9848:50;:::i;:::-;9838:60;;9793:115;9217:698;;;;;:::o;9921:474::-;9989:6;9997;10046:2;10034:9;10025:7;10021:23;10017:32;10014:119;;;10052:79;;:::i;:::-;10014:119;10172:1;10197:53;10242:7;10233:6;10222:9;10218:22;10197:53;:::i;:::-;10187:63;;10143:117;10299:2;10325:53;10370:7;10361:6;10350:9;10346:22;10325:53;:::i;:::-;10315:63;;10270:118;9921:474;;;;;:::o;10401:180::-;10449:77;10446:1;10439:88;10546:4;10543:1;10536:15;10570:4;10567:1;10560:15;10587:281;10670:27;10692:4;10670:27;:::i;:::-;10662:6;10658:40;10800:6;10788:10;10785:22;10764:18;10752:10;10749:34;10746:62;10743:88;;;10811:18;;:::i;:::-;10743:88;10851:10;10847:2;10840:22;10630:238;10587:281;;:::o;10874:129::-;10908:6;10935:20;;:::i;:::-;10925:30;;10964:33;10992:4;10984:6;10964:33;:::i;:::-;10874:129;;;:::o;11009:311::-;11086:4;11176:18;11168:6;11165:30;11162:56;;;11198:18;;:::i;:::-;11162:56;11248:4;11240:6;11236:17;11228:25;;11308:4;11302;11298:15;11290:23;;11009:311;;;:::o;11343:710::-;11439:5;11464:81;11480:64;11537:6;11480:64;:::i;:::-;11464:81;:::i;:::-;11455:90;;11565:5;11594:6;11587:5;11580:21;11628:4;11621:5;11617:16;11610:23;;11681:4;11673:6;11669:17;11661:6;11657:30;11710:3;11702:6;11699:15;11696:122;;;11729:79;;:::i;:::-;11696:122;11844:6;11827:220;11861:6;11856:3;11853:15;11827:220;;;11936:3;11965:37;11998:3;11986:10;11965:37;:::i;:::-;11960:3;11953:50;12032:4;12027:3;12023:14;12016:21;;11903:144;11887:4;11882:3;11878:14;11871:21;;11827:220;;;11831:21;11445:608;;11343:710;;;;;:::o;12076:370::-;12147:5;12196:3;12189:4;12181:6;12177:17;12173:27;12163:122;;12204:79;;:::i;:::-;12163:122;12321:6;12308:20;12346:94;12436:3;12428:6;12421:4;12413:6;12409:17;12346:94;:::i;:::-;12337:103;;12153:293;12076:370;;;;:::o;12452:678::-;12542:6;12550;12599:2;12587:9;12578:7;12574:23;12570:32;12567:119;;;12605:79;;:::i;:::-;12567:119;12753:1;12742:9;12738:17;12725:31;12783:18;12775:6;12772:30;12769:117;;;12805:79;;:::i;:::-;12769:117;12910:78;12980:7;12971:6;12960:9;12956:22;12910:78;:::i;:::-;12900:88;;12696:302;13037:2;13063:50;13105:7;13096:6;13085:9;13081:22;13063:50;:::i;:::-;13053:60;;13008:115;12452:678;;;;;:::o;13136:182::-;13276:34;13272:1;13264:6;13260:14;13253:58;13136:182;:::o;13324:366::-;13466:3;13487:67;13551:2;13546:3;13487:67;:::i;:::-;13480:74;;13563:93;13652:3;13563:93;:::i;:::-;13681:2;13676:3;13672:12;13665:19;;13324:366;;;:::o;13696:419::-;13862:4;13900:2;13889:9;13885:18;13877:26;;13949:9;13943:4;13939:20;13935:1;13924:9;13920:17;13913:47;13977:131;14103:4;13977:131;:::i;:::-;13969:139;;13696:419;;;:::o;14121:180::-;14169:77;14166:1;14159:88;14266:4;14263:1;14256:15;14290:4;14287:1;14280:15;14307:305;14347:3;14366:20;14384:1;14366:20;:::i;:::-;14361:25;;14400:20;14418:1;14400:20;:::i;:::-;14395:25;;14554:1;14486:66;14482:74;14479:1;14476:81;14473:107;;;14560:18;;:::i;:::-;14473:107;14604:1;14601;14597:9;14590:16;;14307:305;;;;:::o;14618:180::-;14666:77;14663:1;14656:88;14763:4;14760:1;14753:15;14787:4;14784:1;14777:15;14804:233;14843:3;14866:24;14884:5;14866:24;:::i;:::-;14857:33;;14912:66;14905:5;14902:77;14899:103;;;14982:18;;:::i;:::-;14899:103;15029:1;15022:5;15018:13;15011:20;;14804:233;;;:::o;15043:225::-;15183:34;15179:1;15171:6;15167:14;15160:58;15252:8;15247:2;15239:6;15235:15;15228:33;15043:225;:::o;15274:366::-;15416:3;15437:67;15501:2;15496:3;15437:67;:::i;:::-;15430:74;;15513:93;15602:3;15513:93;:::i;:::-;15631:2;15626:3;15622:12;15615:19;;15274:366;;;:::o;15646:419::-;15812:4;15850:2;15839:9;15835:18;15827:26;;15899:9;15893:4;15889:20;15885:1;15874:9;15870:17;15863:47;15927:131;16053:4;15927:131;:::i;:::-;15919:139;;15646:419;;;:::o;16071:223::-;16211:34;16207:1;16199:6;16195:14;16188:58;16280:6;16275:2;16267:6;16263:15;16256:31;16071:223;:::o;16300:366::-;16442:3;16463:67;16527:2;16522:3;16463:67;:::i;:::-;16456:74;;16539:93;16628:3;16539:93;:::i;:::-;16657:2;16652:3;16648:12;16641:19;;16300:366;;;:::o;16672:419::-;16838:4;16876:2;16865:9;16861:18;16853:26;;16925:9;16919:4;16915:20;16911:1;16900:9;16896:17;16889:47;16953:131;17079:4;16953:131;:::i;:::-;16945:139;;16672:419;;;:::o;17097:221::-;17237:34;17233:1;17225:6;17221:14;17214:58;17306:4;17301:2;17293:6;17289:15;17282:29;17097:221;:::o;17324:366::-;17466:3;17487:67;17551:2;17546:3;17487:67;:::i;:::-;17480:74;;17563:93;17652:3;17563:93;:::i;:::-;17681:2;17676:3;17672:12;17665:19;;17324:366;;;:::o;17696:419::-;17862:4;17900:2;17889:9;17885:18;17877:26;;17949:9;17943:4;17939:20;17935:1;17924:9;17920:17;17913:47;17977:131;18103:4;17977:131;:::i;:::-;17969:139;;17696:419;;;:::o;18121:224::-;18261:34;18257:1;18249:6;18245:14;18238:58;18330:7;18325:2;18317:6;18313:15;18306:32;18121:224;:::o;18351:366::-;18493:3;18514:67;18578:2;18573:3;18514:67;:::i;:::-;18507:74;;18590:93;18679:3;18590:93;:::i;:::-;18708:2;18703:3;18699:12;18692:19;;18351:366;;;:::o;18723:419::-;18889:4;18927:2;18916:9;18912:18;18904:26;;18976:9;18970:4;18966:20;18962:1;18951:9;18947:17;18940:47;19004:131;19130:4;19004:131;:::i;:::-;18996:139;;18723:419;;;:::o;19148:222::-;19288:34;19284:1;19276:6;19272:14;19265:58;19357:5;19352:2;19344:6;19340:15;19333:30;19148:222;:::o;19376:366::-;19518:3;19539:67;19603:2;19598:3;19539:67;:::i;:::-;19532:74;;19615:93;19704:3;19615:93;:::i;:::-;19733:2;19728:3;19724:12;19717:19;;19376:366;;;:::o;19748:419::-;19914:4;19952:2;19941:9;19937:18;19929:26;;20001:9;19995:4;19991:20;19987:1;19976:9;19972:17;19965:47;20029:131;20155:4;20029:131;:::i;:::-;20021:139;;19748:419;;;:::o;20173:228::-;20313:34;20309:1;20301:6;20297:14;20290:58;20382:11;20377:2;20369:6;20365:15;20358:36;20173:228;:::o;20407:366::-;20549:3;20570:67;20634:2;20629:3;20570:67;:::i;:::-;20563:74;;20646:93;20735:3;20646:93;:::i;:::-;20764:2;20759:3;20755:12;20748:19;;20407:366;;;:::o;20779:419::-;20945:4;20983:2;20972:9;20968:18;20960:26;;21032:9;21026:4;21022:20;21018:1;21007:9;21003:17;20996:47;21060:131;21186:4;21060:131;:::i;:::-;21052:139;;20779:419;;;:::o;21204:250::-;21344:34;21340:1;21332:6;21328:14;21321:58;21413:33;21408:2;21400:6;21396:15;21389:58;21204:250;:::o;21460:366::-;21602:3;21623:67;21687:2;21682:3;21623:67;:::i;:::-;21616:74;;21699:93;21788:3;21699:93;:::i;:::-;21817:2;21812:3;21808:12;21801:19;;21460:366;;;:::o;21832:419::-;21998:4;22036:2;22025:9;22021:18;22013:26;;22085:9;22079:4;22075:20;22071:1;22060:9;22056:17;22049:47;22113:131;22239:4;22113:131;:::i;:::-;22105:139;;21832:419;;;:::o;22257:178::-;22397:30;22393:1;22385:6;22381:14;22374:54;22257:178;:::o;22441:366::-;22583:3;22604:67;22668:2;22663:3;22604:67;:::i;:::-;22597:74;;22680:93;22769:3;22680:93;:::i;:::-;22798:2;22793:3;22789:12;22782:19;;22441:366;;;:::o;22813:419::-;22979:4;23017:2;23006:9;23002:18;22994:26;;23066:9;23060:4;23056:20;23052:1;23041:9;23037:17;23030:47;23094:131;23220:4;23094:131;:::i;:::-;23086:139;;22813:419;;;:::o;23238:222::-;23378:34;23374:1;23366:6;23362:14;23355:58;23447:5;23442:2;23434:6;23430:15;23423:30;23238:222;:::o;23466:366::-;23608:3;23629:67;23693:2;23688:3;23629:67;:::i;:::-;23622:74;;23705:93;23794:3;23705:93;:::i;:::-;23823:2;23818:3;23814:12;23807:19;;23466:366;;;:::o;23838:419::-;24004:4;24042:2;24031:9;24027:18;24019:26;;24091:9;24085:4;24081:20;24077:1;24066:9;24062:17;24055:47;24119:131;24245:4;24119:131;:::i;:::-;24111:139;;23838:419;;;:::o;24263:222::-;24403:34;24399:1;24391:6;24387:14;24380:58;24472:5;24467:2;24459:6;24455:15;24448:30;24263:222;:::o;24491:366::-;24633:3;24654:67;24718:2;24713:3;24654:67;:::i;:::-;24647:74;;24730:93;24819:3;24730:93;:::i;:::-;24848:2;24843:3;24839:12;24832:19;;24491:366;;;:::o;24863:419::-;25029:4;25067:2;25056:9;25052:18;25044:26;;25116:9;25110:4;25106:20;25102:1;25091:9;25087:17;25080:47;25144:131;25270:4;25144:131;:::i;:::-;25136:139;;24863:419;;;:::o;25288:348::-;25328:7;25351:20;25369:1;25351:20;:::i;:::-;25346:25;;25385:20;25403:1;25385:20;:::i;:::-;25380:25;;25573:1;25505:66;25501:74;25498:1;25495:81;25490:1;25483:9;25476:17;25472:105;25469:131;;;25580:18;;:::i;:::-;25469:131;25628:1;25625;25621:9;25610:20;;25288:348;;;;:::o;25642:191::-;25682:4;25702:20;25720:1;25702:20;:::i;:::-;25697:25;;25736:20;25754:1;25736:20;:::i;:::-;25731:25;;25775:1;25772;25769:8;25766:34;;;25780:18;;:::i;:::-;25766:34;25825:1;25822;25818:9;25810:17;;25642:191;;;;:::o;25839:229::-;25979:34;25975:1;25967:6;25963:14;25956:58;26048:12;26043:2;26035:6;26031:15;26024:37;25839:229;:::o;26074:366::-;26216:3;26237:67;26301:2;26296:3;26237:67;:::i;:::-;26230:74;;26313:93;26402:3;26313:93;:::i;:::-;26431:2;26426:3;26422:12;26415:19;;26074:366;;;:::o;26446:419::-;26612:4;26650:2;26639:9;26635:18;26627:26;;26699:9;26693:4;26689:20;26685:1;26674:9;26670:17;26663:47;26727:131;26853:4;26727:131;:::i;:::-;26719:139;;26446:419;;;:::o;26871:143::-;26928:5;26959:6;26953:13;26944:22;;26975:33;27002:5;26975:33;:::i;:::-;26871:143;;;;:::o;27020:351::-;27090:6;27139:2;27127:9;27118:7;27114:23;27110:32;27107:119;;;27145:79;;:::i;:::-;27107:119;27265:1;27290:64;27346:7;27337:6;27326:9;27322:22;27290:64;:::i;:::-;27280:74;;27236:128;27020:351;;;;:::o;27377:85::-;27422:7;27451:5;27440:16;;27377:85;;;:::o;27468:158::-;27526:9;27559:61;27577:42;27586:32;27612:5;27586:32;:::i;:::-;27577:42;:::i;:::-;27559:61;:::i;:::-;27546:74;;27468:158;;;:::o;27632:147::-;27727:45;27766:5;27727:45;:::i;:::-;27722:3;27715:58;27632:147;;:::o;27785:114::-;27852:6;27886:5;27880:12;27870:22;;27785:114;;;:::o;27905:184::-;28004:11;28038:6;28033:3;28026:19;28078:4;28073:3;28069:14;28054:29;;27905:184;;;;:::o;28095:132::-;28162:4;28185:3;28177:11;;28215:4;28210:3;28206:14;28198:22;;28095:132;;;:::o;28233:108::-;28310:24;28328:5;28310:24;:::i;:::-;28305:3;28298:37;28233:108;;:::o;28347:179::-;28416:10;28437:46;28479:3;28471:6;28437:46;:::i;:::-;28515:4;28510:3;28506:14;28492:28;;28347:179;;;;:::o;28532:113::-;28602:4;28634;28629:3;28625:14;28617:22;;28532:113;;;:::o;28681:732::-;28800:3;28829:54;28877:5;28829:54;:::i;:::-;28899:86;28978:6;28973:3;28899:86;:::i;:::-;28892:93;;29009:56;29059:5;29009:56;:::i;:::-;29088:7;29119:1;29104:284;29129:6;29126:1;29123:13;29104:284;;;29205:6;29199:13;29232:63;29291:3;29276:13;29232:63;:::i;:::-;29225:70;;29318:60;29371:6;29318:60;:::i;:::-;29308:70;;29164:224;29151:1;29148;29144:9;29139:14;;29104:284;;;29108:14;29404:3;29397:10;;28805:608;;;28681:732;;;;:::o;29419:831::-;29682:4;29720:3;29709:9;29705:19;29697:27;;29734:71;29802:1;29791:9;29787:17;29778:6;29734:71;:::i;:::-;29815:80;29891:2;29880:9;29876:18;29867:6;29815:80;:::i;:::-;29942:9;29936:4;29932:20;29927:2;29916:9;29912:18;29905:48;29970:108;30073:4;30064:6;29970:108;:::i;:::-;29962:116;;30088:72;30156:2;30145:9;30141:18;30132:6;30088:72;:::i;:::-;30170:73;30238:3;30227:9;30223:19;30214:6;30170:73;:::i;:::-;29419:831;;;;;;;;:::o;30256:180::-;30304:77;30301:1;30294:88;30401:4;30398:1;30391:15;30425:4;30422:1;30415:15;30442:185;30482:1;30499:20;30517:1;30499:20;:::i;:::-;30494:25;;30533:20;30551:1;30533:20;:::i;:::-;30528:25;;30572:1;30562:35;;30577:18;;:::i;:::-;30562:35;30619:1;30616;30612:9;30607:14;;30442:185;;;;:::o;30633:177::-;30773:29;30769:1;30761:6;30757:14;30750:53;30633:177;:::o;30816:366::-;30958:3;30979:67;31043:2;31038:3;30979:67;:::i;:::-;30972:74;;31055:93;31144:3;31055:93;:::i;:::-;31173:2;31168:3;31164:12;31157:19;;30816:366;;;:::o;31188:419::-;31354:4;31392:2;31381:9;31377:18;31369:26;;31441:9;31435:4;31431:20;31427:1;31416:9;31412:17;31405:47;31469:131;31595:4;31469:131;:::i;:::-;31461:139;;31188:419;;;:::o;31613:220::-;31753:34;31749:1;31741:6;31737:14;31730:58;31822:3;31817:2;31809:6;31805:15;31798:28;31613:220;:::o;31839:366::-;31981:3;32002:67;32066:2;32061:3;32002:67;:::i;:::-;31995:74;;32078:93;32167:3;32078:93;:::i;:::-;32196:2;32191:3;32187:12;32180:19;;31839:366;;;:::o;32211:419::-;32377:4;32415:2;32404:9;32400:18;32392:26;;32464:9;32458:4;32454:20;32450:1;32439:9;32435:17;32428:47;32492:131;32618:4;32492:131;:::i;:::-;32484:139;;32211:419;;;:::o

Swarm Source

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