ETH Price: $3,473.14 (+2.13%)

Token

Teresuko Research (TERESUKO)
 

Overview

Max Total Supply

1,000,000,000 TERESUKO

Holders

90

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
4,306,764.984821353 TERESUKO

Value
$0.00
0xc5c096a642bab3a435485f4e1864df179670d4ca
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:
TERESUKO

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-15
*/

/*
https://medium.com/@dejitarukabuto
*/
// 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 TERESUKO is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "Teresuko Research";
    string private constant _symbol = "TERESUKO";
    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 = 1000000000 * 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 = 15;

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

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint256 public _maxTxAmount = 20000000 * 10**9;
    uint256 public _maxWalletSize = 20000000 * 10**9;
    uint256 public _swapTokensAtAmount = 10000 * 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 buytax() public view  returns (uint256) {
        return _taxFeeOnBuy;
    }

    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 removeFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreFee() 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 >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

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

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

    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }

    function openTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

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

    function manualclaim() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function unblockBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

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

    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 setallFees(uint256 redisBuy, uint256 redisSell, uint256 taxBuy, uint256 taxSell) public onlyOwner {
        _redisFeeOnBuy = redisBuy;
        _redisFeeOnSell = redisSell;
        _taxFeeOnBuy = taxBuy;
        _taxFeeOnSell = taxSell;
    }

    //Set minimum tokens required to swap.
    function setSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    //Set maximum transaction
    

    function setmaxtxwamount(uint256 maxtxn,uint256 maxwallet) public onlyOwner {
        _maxTxAmount = maxtxn;
        _maxWalletSize = maxwallet;
        
    }

    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[]"}],"name":"blockBots","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":"buytax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"manualclaim","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":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisBuy","type":"uint256"},{"internalType":"uint256","name":"redisSell","type":"uint256"},{"internalType":"uint256","name":"taxBuy","type":"uint256"},{"internalType":"uint256","name":"taxSell","type":"uint256"}],"name":"setallFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxtxn","type":"uint256"},{"internalType":"uint256","name":"maxwallet","type":"uint256"}],"name":"setmaxtxwamount","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":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","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"}]

6080604052670de0b6b3a76400006000196200001c919062000759565b6000196200002b9190620007c0565b6006556000600855600a6009556000600a55600f600b55600a54600c55600b54600d55600c54600e55600d54600f5573fc34c0988be7ffde0e72f1f8d8580dd651bdd080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073fc34c0988be7ffde0e72f1f8d8580dd651bdd080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560146101000a81548160ff02191690831515021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555066470de4df82000060165566470de4df8200006017556509184e72a0006018553480156200018157600080fd5b50600062000194620006ef60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506006546002600062000249620006ef60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032857600080fd5b505afa1580156200033d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000363919062000865565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003c657600080fd5b505afa158015620003db573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000401919062000865565b6040518363ffffffff1660e01b815260040162000420929190620008a8565b602060405180830381600087803b1580156200043b57600080fd5b505af115801562000450573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000476919062000865565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004cc620006f760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000679620006ef60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620006e09190620008e6565b60405180910390a35062000903565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007668262000720565b9150620007738362000720565b9250826200078657620007856200072a565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007cd8262000720565b9150620007da8362000720565b925082821015620007f057620007ef62000791565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200082d8262000800565b9050919050565b6200083f8162000820565b81146200084b57600080fd5b50565b6000815190506200085f8162000834565b92915050565b6000602082840312156200087e576200087d620007fb565b5b60006200088e848285016200084e565b91505092915050565b620008a28162000820565b82525050565b6000604082019050620008bf600083018562000897565b620008ce602083018462000897565b9392505050565b620008e08162000720565b82525050565b6000602082019050620008fd6000830184620008d5565b92915050565b613d9580620009136000396000f3fe6080604052600436106101d05760003560e01c80637d1db4a5116100f7578063a673c04011610095578063c3c8cd8011610064578063c3c8cd8014610670578063c492f04614610687578063dd62ed3e146106b0578063f2fde38b146106ed576101d7565b8063a673c040146105b6578063a9059cbb146105df578063b360711d1461061c578063bfd7928414610633576101d7565b80638738ce7d116100d15780638738ce7d1461050c5780638da5cb5b146105355780638f9a55c01461056057806395d89b411461058b576101d7565b80637d1db4a51461047b5780637f2feddc146104a65780637fc2a3e0146104e3576101d7565b80632fd689e31161016f5780636b9990531161013e5780636b999053146103d55780636d8aa8f8146103fe57806370a0823114610427578063715018a614610464576101d7565b80632fd689e314610329578063313ce5671461035457806349bd5a5e1461037f5780634a1263f3146103aa576101d7565b80631694505e116101ab5780631694505e1461026d57806318160ddd1461029857806323b872dd146102c35780632a9b807214610300576101d7565b8062b8cf2a146101dc57806306fdde0314610205578063095ea7b314610230576101d7565b366101d757005b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190612ce1565b610716565b005b34801561021157600080fd5b5061021a610840565b6040516102279190612db2565b60405180910390f35b34801561023c57600080fd5b5061025760048036038101906102529190612e0a565b61087d565b6040516102649190612e65565b60405180910390f35b34801561027957600080fd5b5061028261089b565b60405161028f9190612edf565b60405180910390f35b3480156102a457600080fd5b506102ad6108c1565b6040516102ba9190612f09565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e59190612f24565b6108d1565b6040516102f79190612e65565b60405180910390f35b34801561030c57600080fd5b5061032760048036038101906103229190612fa3565b6109aa565b005b34801561033557600080fd5b5061033e610a5c565b60405161034b9190612f09565b60405180910390f35b34801561036057600080fd5b50610369610a62565b6040516103769190612fec565b60405180910390f35b34801561038b57600080fd5b50610394610a6b565b6040516103a19190613016565b60405180910390f35b3480156103b657600080fd5b506103bf610a91565b6040516103cc9190612f09565b60405180910390f35b3480156103e157600080fd5b506103fc60048036038101906103f79190613031565b610a9b565b005b34801561040a57600080fd5b5061042560048036038101906104209190612fa3565b610b8b565b005b34801561043357600080fd5b5061044e60048036038101906104499190613031565b610c3d565b60405161045b9190612f09565b60405180910390f35b34801561047057600080fd5b50610479610c8e565b005b34801561048757600080fd5b50610490610de1565b60405161049d9190612f09565b60405180910390f35b3480156104b257600080fd5b506104cd60048036038101906104c89190613031565b610de7565b6040516104da9190612f09565b60405180910390f35b3480156104ef57600080fd5b5061050a6004803603810190610505919061305e565b610dff565b005b34801561051857600080fd5b50610533600480360381019061052e91906130c5565b610eb6565b005b34801561054157600080fd5b5061054a610f55565b6040516105579190613016565b60405180910390f35b34801561056c57600080fd5b50610575610f7e565b6040516105829190612f09565b60405180910390f35b34801561059757600080fd5b506105a0610f84565b6040516105ad9190612db2565b60405180910390f35b3480156105c257600080fd5b506105dd60048036038101906105d891906130f2565b610fc1565b005b3480156105eb57600080fd5b5061060660048036038101906106019190612e0a565b611068565b6040516106139190612e65565b60405180910390f35b34801561062857600080fd5b50610631611086565b005b34801561063f57600080fd5b5061065a60048036038101906106559190613031565b611157565b6040516106679190612e65565b60405180910390f35b34801561067c57600080fd5b50610685611177565b005b34801561069357600080fd5b506106ae60048036038101906106a9919061318d565b611250565b005b3480156106bc57600080fd5b506106d760048036038101906106d291906131ed565b61138a565b6040516106e49190612f09565b60405180910390f35b3480156106f957600080fd5b50610714600480360381019061070f9190613031565b611411565b005b61071e6115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a290613279565b60405180910390fd5b60005b815181101561083c576001601060008484815181106107d0576107cf613299565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610834906132f7565b9150506107ae565b5050565b60606040518060400160405280601181526020017f5465726573756b6f205265736561726368000000000000000000000000000000815250905090565b600061089161088a6115d3565b84846115db565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006108de8484846117a6565b61099f846108ea6115d3565b61099a85604051806060016040528060288152602001613d3860289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109506115d3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202b9092919063ffffffff16565b6115db565b600190509392505050565b6109b26115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3690613279565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600954905090565b610aa36115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2790613279565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b936115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1790613279565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b6000610c87600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461208f565b9050919050565b610c966115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1a90613279565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b610e076115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8b90613279565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b610ebe6115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4290613279565b60405180910390fd5b8060188190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600881526020017f5445524553554b4f000000000000000000000000000000000000000000000000815250905090565b610fc96115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611056576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104d90613279565b60405180910390fd5b81601681905550806017819055505050565b600061107c6110756115d3565b84846117a6565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110c76115d3565b73ffffffffffffffffffffffffffffffffffffffff16148061113d5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111256115d3565b73ffffffffffffffffffffffffffffffffffffffff16145b61114657600080fd5b6000479050611154816120fd565b50565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111b86115d3565b73ffffffffffffffffffffffffffffffffffffffff16148061122e5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112166115d3565b73ffffffffffffffffffffffffffffffffffffffff16145b61123757600080fd5b600061124230610c3d565b905061124d81612169565b50565b6112586115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112dc90613279565b60405180910390fd5b60005b8383905081101561138457816005600086868581811061130b5761130a613299565b5b90506020020160208101906113209190613031565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061137c906132f7565b9150506112e8565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6114196115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149d90613279565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150d906133b2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561164b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164290613444565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b2906134d6565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117999190612f09565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611816576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180d90613568565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187d906135fa565b60405180910390fd5b600081116118c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c09061368c565b60405180910390fd5b6118d1610f55565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561193f575061190f610f55565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d2a57601560149054906101000a900460ff166119ce57611960610f55565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c49061371e565b60405180910390fd5b5b601654811115611a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0a9061378a565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ab75750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611af6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aed9061381c565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ba35760175481611b5884610c3d565b611b62919061383c565b10611ba2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9990613904565b60405180910390fd5b5b6000611bae30610c3d565b9050600060185482101590506016548210611bc95760165491505b808015611be1575060158054906101000a900460ff16155b8015611c3b5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c535750601560169054906101000a900460ff165b8015611ca95750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611cff5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d2757611d0d82612169565b60004790506000811115611d2557611d24476120fd565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611dd15750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611e845750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e835750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e925760009050612019565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f3d5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f5557600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120005750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561201857600a54600c81905550600b54600d819055505b5b612025848484846123ef565b50505050565b6000838311158290612073576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206a9190612db2565b60405180910390fd5b50600083856120829190613924565b9050809150509392505050565b60006006548211156120d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cd906139ca565b60405180910390fd5b60006120e061241c565b90506120f5818461244790919063ffffffff16565b915050919050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612165573d6000803e3d6000fd5b5050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156121a05761219f612b40565b5b6040519080825280602002602001820160405280156121ce5781602001602082028036833780820191505090505b50905030816000815181106121e6576121e5613299565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561228857600080fd5b505afa15801561229c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c091906139ff565b816001815181106122d4576122d3613299565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061233b30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115db565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161239f959493929190613b25565b600060405180830381600087803b1580156123b957600080fd5b505af11580156123cd573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806123fd576123fc612491565b5b6124088484846124d4565b806124165761241561269f565b5b50505050565b60008060006124296126b3565b91509150612440818361244790919063ffffffff16565b9250505090565b600061248983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612712565b905092915050565b6000600c541480156124a557506000600d54145b156124af576124d2565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806124e687612775565b95509550955095509550955061254486600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127dd90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125d985600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282790919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061262581612885565b61262f8483612942565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161268c9190612f09565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a764000090506126e7670de0b6b3a764000060065461244790919063ffffffff16565b82101561270557600654670de0b6b3a764000093509350505061270e565b81819350935050505b9091565b60008083118290612759576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127509190612db2565b60405180910390fd5b50600083856127689190613bae565b9050809150509392505050565b60008060008060008060008060006127928a600c54600d5461297c565b92509250925060006127a261241c565b905060008060006127b58e878787612a12565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061281f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061202b565b905092915050565b6000808284612836919061383c565b90508381101561287b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287290613c2b565b60405180910390fd5b8091505092915050565b600061288f61241c565b905060006128a68284612a9b90919063ffffffff16565b90506128fa81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282790919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612957826006546127dd90919063ffffffff16565b6006819055506129728160075461282790919063ffffffff16565b6007819055505050565b6000806000806129a8606461299a888a612a9b90919063ffffffff16565b61244790919063ffffffff16565b905060006129d260646129c4888b612a9b90919063ffffffff16565b61244790919063ffffffff16565b905060006129fb826129ed858c6127dd90919063ffffffff16565b6127dd90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a2b8589612a9b90919063ffffffff16565b90506000612a428689612a9b90919063ffffffff16565b90506000612a598789612a9b90919063ffffffff16565b90506000612a8282612a7485876127dd90919063ffffffff16565b6127dd90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612aae5760009050612b10565b60008284612abc9190613c4b565b9050828482612acb9190613bae565b14612b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0290613d17565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612b7882612b2f565b810181811067ffffffffffffffff82111715612b9757612b96612b40565b5b80604052505050565b6000612baa612b16565b9050612bb68282612b6f565b919050565b600067ffffffffffffffff821115612bd657612bd5612b40565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c1782612bec565b9050919050565b612c2781612c0c565b8114612c3257600080fd5b50565b600081359050612c4481612c1e565b92915050565b6000612c5d612c5884612bbb565b612ba0565b90508083825260208201905060208402830185811115612c8057612c7f612be7565b5b835b81811015612ca95780612c958882612c35565b845260208401935050602081019050612c82565b5050509392505050565b600082601f830112612cc857612cc7612b2a565b5b8135612cd8848260208601612c4a565b91505092915050565b600060208284031215612cf757612cf6612b20565b5b600082013567ffffffffffffffff811115612d1557612d14612b25565b5b612d2184828501612cb3565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d64578082015181840152602081019050612d49565b83811115612d73576000848401525b50505050565b6000612d8482612d2a565b612d8e8185612d35565b9350612d9e818560208601612d46565b612da781612b2f565b840191505092915050565b60006020820190508181036000830152612dcc8184612d79565b905092915050565b6000819050919050565b612de781612dd4565b8114612df257600080fd5b50565b600081359050612e0481612dde565b92915050565b60008060408385031215612e2157612e20612b20565b5b6000612e2f85828601612c35565b9250506020612e4085828601612df5565b9150509250929050565b60008115159050919050565b612e5f81612e4a565b82525050565b6000602082019050612e7a6000830184612e56565b92915050565b6000819050919050565b6000612ea5612ea0612e9b84612bec565b612e80565b612bec565b9050919050565b6000612eb782612e8a565b9050919050565b6000612ec982612eac565b9050919050565b612ed981612ebe565b82525050565b6000602082019050612ef46000830184612ed0565b92915050565b612f0381612dd4565b82525050565b6000602082019050612f1e6000830184612efa565b92915050565b600080600060608486031215612f3d57612f3c612b20565b5b6000612f4b86828701612c35565b9350506020612f5c86828701612c35565b9250506040612f6d86828701612df5565b9150509250925092565b612f8081612e4a565b8114612f8b57600080fd5b50565b600081359050612f9d81612f77565b92915050565b600060208284031215612fb957612fb8612b20565b5b6000612fc784828501612f8e565b91505092915050565b600060ff82169050919050565b612fe681612fd0565b82525050565b60006020820190506130016000830184612fdd565b92915050565b61301081612c0c565b82525050565b600060208201905061302b6000830184613007565b92915050565b60006020828403121561304757613046612b20565b5b600061305584828501612c35565b91505092915050565b6000806000806080858703121561307857613077612b20565b5b600061308687828801612df5565b945050602061309787828801612df5565b93505060406130a887828801612df5565b92505060606130b987828801612df5565b91505092959194509250565b6000602082840312156130db576130da612b20565b5b60006130e984828501612df5565b91505092915050565b6000806040838503121561310957613108612b20565b5b600061311785828601612df5565b925050602061312885828601612df5565b9150509250929050565b600080fd5b60008083601f84011261314d5761314c612b2a565b5b8235905067ffffffffffffffff81111561316a57613169613132565b5b60208301915083602082028301111561318657613185612be7565b5b9250929050565b6000806000604084860312156131a6576131a5612b20565b5b600084013567ffffffffffffffff8111156131c4576131c3612b25565b5b6131d086828701613137565b935093505060206131e386828701612f8e565b9150509250925092565b6000806040838503121561320457613203612b20565b5b600061321285828601612c35565b925050602061322385828601612c35565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613263602083612d35565b915061326e8261322d565b602082019050919050565b6000602082019050818103600083015261329281613256565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061330282612dd4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613335576133346132c8565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061339c602683612d35565b91506133a782613340565b604082019050919050565b600060208201905081810360008301526133cb8161338f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061342e602483612d35565b9150613439826133d2565b604082019050919050565b6000602082019050818103600083015261345d81613421565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006134c0602283612d35565b91506134cb82613464565b604082019050919050565b600060208201905081810360008301526134ef816134b3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613552602583612d35565b915061355d826134f6565b604082019050919050565b6000602082019050818103600083015261358181613545565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006135e4602383612d35565b91506135ef82613588565b604082019050919050565b60006020820190508181036000830152613613816135d7565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613676602983612d35565b91506136818261361a565b604082019050919050565b600060208201905081810360008301526136a581613669565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613708603f83612d35565b9150613713826136ac565b604082019050919050565b60006020820190508181036000830152613737816136fb565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613774601c83612d35565b915061377f8261373e565b602082019050919050565b600060208201905081810360008301526137a381613767565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613806602383612d35565b9150613811826137aa565b604082019050919050565b60006020820190508181036000830152613835816137f9565b9050919050565b600061384782612dd4565b915061385283612dd4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613887576138866132c8565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006138ee602383612d35565b91506138f982613892565b604082019050919050565b6000602082019050818103600083015261391d816138e1565b9050919050565b600061392f82612dd4565b915061393a83612dd4565b92508282101561394d5761394c6132c8565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006139b4602a83612d35565b91506139bf82613958565b604082019050919050565b600060208201905081810360008301526139e3816139a7565b9050919050565b6000815190506139f981612c1e565b92915050565b600060208284031215613a1557613a14612b20565b5b6000613a23848285016139ea565b91505092915050565b6000819050919050565b6000613a51613a4c613a4784613a2c565b612e80565b612dd4565b9050919050565b613a6181613a36565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a9c81612c0c565b82525050565b6000613aae8383613a93565b60208301905092915050565b6000602082019050919050565b6000613ad282613a67565b613adc8185613a72565b9350613ae783613a83565b8060005b83811015613b18578151613aff8882613aa2565b9750613b0a83613aba565b925050600181019050613aeb565b5085935050505092915050565b600060a082019050613b3a6000830188612efa565b613b476020830187613a58565b8181036040830152613b598186613ac7565b9050613b686060830185613007565b613b756080830184612efa565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613bb982612dd4565b9150613bc483612dd4565b925082613bd457613bd3613b7f565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c15601b83612d35565b9150613c2082613bdf565b602082019050919050565b60006020820190508181036000830152613c4481613c08565b9050919050565b6000613c5682612dd4565b9150613c6183612dd4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613c9a57613c996132c8565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d01602183612d35565b9150613d0c82613ca5565b604082019050919050565b60006020820190508181036000830152613d3081613cf4565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220cc0bdd3ac384e2d9cd740c36590f65575452a6cca51ed76656611401c657a6a464736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101d05760003560e01c80637d1db4a5116100f7578063a673c04011610095578063c3c8cd8011610064578063c3c8cd8014610670578063c492f04614610687578063dd62ed3e146106b0578063f2fde38b146106ed576101d7565b8063a673c040146105b6578063a9059cbb146105df578063b360711d1461061c578063bfd7928414610633576101d7565b80638738ce7d116100d15780638738ce7d1461050c5780638da5cb5b146105355780638f9a55c01461056057806395d89b411461058b576101d7565b80637d1db4a51461047b5780637f2feddc146104a65780637fc2a3e0146104e3576101d7565b80632fd689e31161016f5780636b9990531161013e5780636b999053146103d55780636d8aa8f8146103fe57806370a0823114610427578063715018a614610464576101d7565b80632fd689e314610329578063313ce5671461035457806349bd5a5e1461037f5780634a1263f3146103aa576101d7565b80631694505e116101ab5780631694505e1461026d57806318160ddd1461029857806323b872dd146102c35780632a9b807214610300576101d7565b8062b8cf2a146101dc57806306fdde0314610205578063095ea7b314610230576101d7565b366101d757005b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190612ce1565b610716565b005b34801561021157600080fd5b5061021a610840565b6040516102279190612db2565b60405180910390f35b34801561023c57600080fd5b5061025760048036038101906102529190612e0a565b61087d565b6040516102649190612e65565b60405180910390f35b34801561027957600080fd5b5061028261089b565b60405161028f9190612edf565b60405180910390f35b3480156102a457600080fd5b506102ad6108c1565b6040516102ba9190612f09565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e59190612f24565b6108d1565b6040516102f79190612e65565b60405180910390f35b34801561030c57600080fd5b5061032760048036038101906103229190612fa3565b6109aa565b005b34801561033557600080fd5b5061033e610a5c565b60405161034b9190612f09565b60405180910390f35b34801561036057600080fd5b50610369610a62565b6040516103769190612fec565b60405180910390f35b34801561038b57600080fd5b50610394610a6b565b6040516103a19190613016565b60405180910390f35b3480156103b657600080fd5b506103bf610a91565b6040516103cc9190612f09565b60405180910390f35b3480156103e157600080fd5b506103fc60048036038101906103f79190613031565b610a9b565b005b34801561040a57600080fd5b5061042560048036038101906104209190612fa3565b610b8b565b005b34801561043357600080fd5b5061044e60048036038101906104499190613031565b610c3d565b60405161045b9190612f09565b60405180910390f35b34801561047057600080fd5b50610479610c8e565b005b34801561048757600080fd5b50610490610de1565b60405161049d9190612f09565b60405180910390f35b3480156104b257600080fd5b506104cd60048036038101906104c89190613031565b610de7565b6040516104da9190612f09565b60405180910390f35b3480156104ef57600080fd5b5061050a6004803603810190610505919061305e565b610dff565b005b34801561051857600080fd5b50610533600480360381019061052e91906130c5565b610eb6565b005b34801561054157600080fd5b5061054a610f55565b6040516105579190613016565b60405180910390f35b34801561056c57600080fd5b50610575610f7e565b6040516105829190612f09565b60405180910390f35b34801561059757600080fd5b506105a0610f84565b6040516105ad9190612db2565b60405180910390f35b3480156105c257600080fd5b506105dd60048036038101906105d891906130f2565b610fc1565b005b3480156105eb57600080fd5b5061060660048036038101906106019190612e0a565b611068565b6040516106139190612e65565b60405180910390f35b34801561062857600080fd5b50610631611086565b005b34801561063f57600080fd5b5061065a60048036038101906106559190613031565b611157565b6040516106679190612e65565b60405180910390f35b34801561067c57600080fd5b50610685611177565b005b34801561069357600080fd5b506106ae60048036038101906106a9919061318d565b611250565b005b3480156106bc57600080fd5b506106d760048036038101906106d291906131ed565b61138a565b6040516106e49190612f09565b60405180910390f35b3480156106f957600080fd5b50610714600480360381019061070f9190613031565b611411565b005b61071e6115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a290613279565b60405180910390fd5b60005b815181101561083c576001601060008484815181106107d0576107cf613299565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610834906132f7565b9150506107ae565b5050565b60606040518060400160405280601181526020017f5465726573756b6f205265736561726368000000000000000000000000000000815250905090565b600061089161088a6115d3565b84846115db565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006108de8484846117a6565b61099f846108ea6115d3565b61099a85604051806060016040528060288152602001613d3860289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109506115d3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202b9092919063ffffffff16565b6115db565b600190509392505050565b6109b26115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3690613279565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600954905090565b610aa36115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2790613279565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b936115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1790613279565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b6000610c87600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461208f565b9050919050565b610c966115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1a90613279565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b610e076115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8b90613279565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b610ebe6115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4290613279565b60405180910390fd5b8060188190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600881526020017f5445524553554b4f000000000000000000000000000000000000000000000000815250905090565b610fc96115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611056576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104d90613279565b60405180910390fd5b81601681905550806017819055505050565b600061107c6110756115d3565b84846117a6565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110c76115d3565b73ffffffffffffffffffffffffffffffffffffffff16148061113d5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111256115d3565b73ffffffffffffffffffffffffffffffffffffffff16145b61114657600080fd5b6000479050611154816120fd565b50565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111b86115d3565b73ffffffffffffffffffffffffffffffffffffffff16148061122e5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112166115d3565b73ffffffffffffffffffffffffffffffffffffffff16145b61123757600080fd5b600061124230610c3d565b905061124d81612169565b50565b6112586115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112dc90613279565b60405180910390fd5b60005b8383905081101561138457816005600086868581811061130b5761130a613299565b5b90506020020160208101906113209190613031565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061137c906132f7565b9150506112e8565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6114196115d3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149d90613279565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150d906133b2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561164b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164290613444565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b2906134d6565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117999190612f09565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611816576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180d90613568565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187d906135fa565b60405180910390fd5b600081116118c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c09061368c565b60405180910390fd5b6118d1610f55565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561193f575061190f610f55565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d2a57601560149054906101000a900460ff166119ce57611960610f55565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c49061371e565b60405180910390fd5b5b601654811115611a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0a9061378a565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ab75750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611af6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aed9061381c565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ba35760175481611b5884610c3d565b611b62919061383c565b10611ba2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9990613904565b60405180910390fd5b5b6000611bae30610c3d565b9050600060185482101590506016548210611bc95760165491505b808015611be1575060158054906101000a900460ff16155b8015611c3b5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c535750601560169054906101000a900460ff165b8015611ca95750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611cff5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d2757611d0d82612169565b60004790506000811115611d2557611d24476120fd565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611dd15750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611e845750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e835750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e925760009050612019565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f3d5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f5557600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120005750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561201857600a54600c81905550600b54600d819055505b5b612025848484846123ef565b50505050565b6000838311158290612073576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206a9190612db2565b60405180910390fd5b50600083856120829190613924565b9050809150509392505050565b60006006548211156120d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cd906139ca565b60405180910390fd5b60006120e061241c565b90506120f5818461244790919063ffffffff16565b915050919050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612165573d6000803e3d6000fd5b5050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156121a05761219f612b40565b5b6040519080825280602002602001820160405280156121ce5781602001602082028036833780820191505090505b50905030816000815181106121e6576121e5613299565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561228857600080fd5b505afa15801561229c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c091906139ff565b816001815181106122d4576122d3613299565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061233b30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115db565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161239f959493929190613b25565b600060405180830381600087803b1580156123b957600080fd5b505af11580156123cd573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806123fd576123fc612491565b5b6124088484846124d4565b806124165761241561269f565b5b50505050565b60008060006124296126b3565b91509150612440818361244790919063ffffffff16565b9250505090565b600061248983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612712565b905092915050565b6000600c541480156124a557506000600d54145b156124af576124d2565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806124e687612775565b95509550955095509550955061254486600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127dd90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125d985600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282790919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061262581612885565b61262f8483612942565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161268c9190612f09565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a764000090506126e7670de0b6b3a764000060065461244790919063ffffffff16565b82101561270557600654670de0b6b3a764000093509350505061270e565b81819350935050505b9091565b60008083118290612759576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127509190612db2565b60405180910390fd5b50600083856127689190613bae565b9050809150509392505050565b60008060008060008060008060006127928a600c54600d5461297c565b92509250925060006127a261241c565b905060008060006127b58e878787612a12565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061281f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061202b565b905092915050565b6000808284612836919061383c565b90508381101561287b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287290613c2b565b60405180910390fd5b8091505092915050565b600061288f61241c565b905060006128a68284612a9b90919063ffffffff16565b90506128fa81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282790919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612957826006546127dd90919063ffffffff16565b6006819055506129728160075461282790919063ffffffff16565b6007819055505050565b6000806000806129a8606461299a888a612a9b90919063ffffffff16565b61244790919063ffffffff16565b905060006129d260646129c4888b612a9b90919063ffffffff16565b61244790919063ffffffff16565b905060006129fb826129ed858c6127dd90919063ffffffff16565b6127dd90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a2b8589612a9b90919063ffffffff16565b90506000612a428689612a9b90919063ffffffff16565b90506000612a598789612a9b90919063ffffffff16565b90506000612a8282612a7485876127dd90919063ffffffff16565b6127dd90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612aae5760009050612b10565b60008284612abc9190613c4b565b9050828482612acb9190613bae565b14612b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0290613d17565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612b7882612b2f565b810181811067ffffffffffffffff82111715612b9757612b96612b40565b5b80604052505050565b6000612baa612b16565b9050612bb68282612b6f565b919050565b600067ffffffffffffffff821115612bd657612bd5612b40565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c1782612bec565b9050919050565b612c2781612c0c565b8114612c3257600080fd5b50565b600081359050612c4481612c1e565b92915050565b6000612c5d612c5884612bbb565b612ba0565b90508083825260208201905060208402830185811115612c8057612c7f612be7565b5b835b81811015612ca95780612c958882612c35565b845260208401935050602081019050612c82565b5050509392505050565b600082601f830112612cc857612cc7612b2a565b5b8135612cd8848260208601612c4a565b91505092915050565b600060208284031215612cf757612cf6612b20565b5b600082013567ffffffffffffffff811115612d1557612d14612b25565b5b612d2184828501612cb3565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d64578082015181840152602081019050612d49565b83811115612d73576000848401525b50505050565b6000612d8482612d2a565b612d8e8185612d35565b9350612d9e818560208601612d46565b612da781612b2f565b840191505092915050565b60006020820190508181036000830152612dcc8184612d79565b905092915050565b6000819050919050565b612de781612dd4565b8114612df257600080fd5b50565b600081359050612e0481612dde565b92915050565b60008060408385031215612e2157612e20612b20565b5b6000612e2f85828601612c35565b9250506020612e4085828601612df5565b9150509250929050565b60008115159050919050565b612e5f81612e4a565b82525050565b6000602082019050612e7a6000830184612e56565b92915050565b6000819050919050565b6000612ea5612ea0612e9b84612bec565b612e80565b612bec565b9050919050565b6000612eb782612e8a565b9050919050565b6000612ec982612eac565b9050919050565b612ed981612ebe565b82525050565b6000602082019050612ef46000830184612ed0565b92915050565b612f0381612dd4565b82525050565b6000602082019050612f1e6000830184612efa565b92915050565b600080600060608486031215612f3d57612f3c612b20565b5b6000612f4b86828701612c35565b9350506020612f5c86828701612c35565b9250506040612f6d86828701612df5565b9150509250925092565b612f8081612e4a565b8114612f8b57600080fd5b50565b600081359050612f9d81612f77565b92915050565b600060208284031215612fb957612fb8612b20565b5b6000612fc784828501612f8e565b91505092915050565b600060ff82169050919050565b612fe681612fd0565b82525050565b60006020820190506130016000830184612fdd565b92915050565b61301081612c0c565b82525050565b600060208201905061302b6000830184613007565b92915050565b60006020828403121561304757613046612b20565b5b600061305584828501612c35565b91505092915050565b6000806000806080858703121561307857613077612b20565b5b600061308687828801612df5565b945050602061309787828801612df5565b93505060406130a887828801612df5565b92505060606130b987828801612df5565b91505092959194509250565b6000602082840312156130db576130da612b20565b5b60006130e984828501612df5565b91505092915050565b6000806040838503121561310957613108612b20565b5b600061311785828601612df5565b925050602061312885828601612df5565b9150509250929050565b600080fd5b60008083601f84011261314d5761314c612b2a565b5b8235905067ffffffffffffffff81111561316a57613169613132565b5b60208301915083602082028301111561318657613185612be7565b5b9250929050565b6000806000604084860312156131a6576131a5612b20565b5b600084013567ffffffffffffffff8111156131c4576131c3612b25565b5b6131d086828701613137565b935093505060206131e386828701612f8e565b9150509250925092565b6000806040838503121561320457613203612b20565b5b600061321285828601612c35565b925050602061322385828601612c35565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613263602083612d35565b915061326e8261322d565b602082019050919050565b6000602082019050818103600083015261329281613256565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061330282612dd4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613335576133346132c8565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061339c602683612d35565b91506133a782613340565b604082019050919050565b600060208201905081810360008301526133cb8161338f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061342e602483612d35565b9150613439826133d2565b604082019050919050565b6000602082019050818103600083015261345d81613421565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006134c0602283612d35565b91506134cb82613464565b604082019050919050565b600060208201905081810360008301526134ef816134b3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613552602583612d35565b915061355d826134f6565b604082019050919050565b6000602082019050818103600083015261358181613545565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006135e4602383612d35565b91506135ef82613588565b604082019050919050565b60006020820190508181036000830152613613816135d7565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613676602983612d35565b91506136818261361a565b604082019050919050565b600060208201905081810360008301526136a581613669565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613708603f83612d35565b9150613713826136ac565b604082019050919050565b60006020820190508181036000830152613737816136fb565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613774601c83612d35565b915061377f8261373e565b602082019050919050565b600060208201905081810360008301526137a381613767565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613806602383612d35565b9150613811826137aa565b604082019050919050565b60006020820190508181036000830152613835816137f9565b9050919050565b600061384782612dd4565b915061385283612dd4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613887576138866132c8565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006138ee602383612d35565b91506138f982613892565b604082019050919050565b6000602082019050818103600083015261391d816138e1565b9050919050565b600061392f82612dd4565b915061393a83612dd4565b92508282101561394d5761394c6132c8565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006139b4602a83612d35565b91506139bf82613958565b604082019050919050565b600060208201905081810360008301526139e3816139a7565b9050919050565b6000815190506139f981612c1e565b92915050565b600060208284031215613a1557613a14612b20565b5b6000613a23848285016139ea565b91505092915050565b6000819050919050565b6000613a51613a4c613a4784613a2c565b612e80565b612dd4565b9050919050565b613a6181613a36565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a9c81612c0c565b82525050565b6000613aae8383613a93565b60208301905092915050565b6000602082019050919050565b6000613ad282613a67565b613adc8185613a72565b9350613ae783613a83565b8060005b83811015613b18578151613aff8882613aa2565b9750613b0a83613aba565b925050600181019050613aeb565b5085935050505092915050565b600060a082019050613b3a6000830188612efa565b613b476020830187613a58565b8181036040830152613b598186613ac7565b9050613b686060830185613007565b613b756080830184612efa565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613bb982612dd4565b9150613bc483612dd4565b925082613bd457613bd3613b7f565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c15601b83612d35565b9150613c2082613bdf565b602082019050919050565b60006020820190508181036000830152613c4481613c08565b9050919050565b6000613c5682612dd4565b9150613c6183612dd4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613c9a57613c996132c8565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d01602183612d35565b9150613d0c82613ca5565b604082019050919050565b60006020820190508181036000830152613d3081613cf4565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220cc0bdd3ac384e2d9cd740c36590f65575452a6cca51ed76656611401c657a6a464736f6c63430008090033

Deployed Bytecode Sourcemap

4112:13499:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12889:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6625:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7646:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5468:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6998:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7847:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12291:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5773:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6811:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5516:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6903:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13066:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17053:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7101:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1599:148;;;;;;;;;;;;;:::i;:::-;;5665:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5210:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16558:255;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16865:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1385:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5718:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6716:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17201:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7247:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12645:236;;;;;;;;;;;;;:::i;:::-;;5172:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12401:236;;;;;;;;;;;;;:::i;:::-;;17372:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7454:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1755:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12889:169;1522:12;:10;:12::i;:::-;1512:22;;:6;;;;;;;;;;:22;;;1504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12965:9:::1;12960:91;12984:5;:12;12980:1;:16;12960:91;;;13035:4;13018;:14;13023:5;13029:1;13023:8;;;;;;;;:::i;:::-;;;;;;;;13018:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12998:3;;;;;:::i;:::-;;;;12960:91;;;;12889:169:::0;:::o;6625:83::-;6662:13;6695:5;;;;;;;;;;;;;;;;;6688:12;;6625:83;:::o;7646:193::-;7748:4;7770:39;7779:12;:10;:12::i;:::-;7793:7;7802:6;7770:8;:39::i;:::-;7827:4;7820:11;;7646:193;;;;:::o;5468:41::-;;;;;;;;;;;;;:::o;6998:95::-;7051:7;4672:18;7071:14;;6998:95;:::o;7847:446::-;7979:4;7996:36;8006:6;8014:9;8025:6;7996:9;:36::i;:::-;8043:220;8066:6;8087:12;:10;:12::i;:::-;8114:138;8170:6;8114:138;;;;;;;;;;;;;;;;;:11;:19;8126:6;8114:19;;;;;;;;;;;;;;;:33;8134:12;:10;:12::i;:::-;8114:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8043:8;:220::i;:::-;8281:4;8274:11;;7847:446;;;;;:::o;12291:102::-;1522:12;:10;:12::i;:::-;1512:22;;:6;;;;;;;;;;:22;;;1504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12373:12:::1;12359:11;;:26;;;;;;;;;;;;;;;;;;12291:102:::0;:::o;5773:50::-;;;;:::o;6811:83::-;6852:5;4346:1;6870:16;;6811:83;:::o;5516:28::-;;;;;;;;;;;;;:::o;6903:87::-;6943:7;6970:12;;6963:19;;6903:87;:::o;13066:92::-;1522:12;:10;:12::i;:::-;1512:22;;:6;;;;;;;;;;:22;;;1504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13145:5:::1;13130:4;:12;13135:6;13130:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13066:92:::0;:::o;17053:101::-;1522:12;:10;:12::i;:::-;1512:22;;:6;;;;;;;;;;:22;;;1504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17134:12:::1;17120:11;;:26;;;;;;;;;;;;;;;;;;17053:101:::0;:::o;7101:138::-;7167:7;7194:37;7214:7;:16;7222:7;7214:16;;;;;;;;;;;;;;;;7194:19;:37::i;:::-;7187:44;;7101:138;;;:::o;1599:148::-;1522:12;:10;:12::i;:::-;1512:22;;:6;;;;;;;;;;:22;;;1504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1706:1:::1;1669:40;;1690:6;::::0;::::1;;;;;;;;1669:40;;;;;;;;;;;;1737:1;1720:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1599:148::o:0;5665:46::-;;;;:::o;5210:43::-;;;;;;;;;;;;;;;;;:::o;16558:255::-;1522:12;:10;:12::i;:::-;1512:22;;:6;;;;;;;;;;:22;;;1504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16693:8:::1;16676:14;:25;;;;16730:9;16712:15;:27;;;;16765:6;16750:12;:21;;;;16798:7;16782:13;:23;;;;16558:255:::0;;;;:::o;16865:136::-;1522:12;:10;:12::i;:::-;1512:22;;:6;;;;;;;;;;:22;;;1504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16975:18:::1;16953:19;:40;;;;16865:136:::0;:::o;1385:79::-;1423:7;1450:6;;;;;;;;;;;1443:13;;1385:79;:::o;5718:48::-;;;;:::o;6716:87::-;6755:13;6788:7;;;;;;;;;;;;;;;;;6781:14;;6716:87;:::o;17201:163::-;1522:12;:10;:12::i;:::-;1512:22;;:6;;;;;;;;;;:22;;;1504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17303:6:::1;17288:12;:21;;;;17337:9;17320:14;:26;;;;17201:163:::0;;:::o;7247:199::-;7352:4;7374:42;7384:12;:10;:12::i;:::-;7398:9;7409:6;7374:9;:42::i;:::-;7434:4;7427:11;;7247:199;;;;:::o;12645:236::-;12712:19;;;;;;;;;;;12696:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12751:17;;;;;;;;;;;12735:33;;:12;:10;:12::i;:::-;:33;;;12696:72;12688:81;;;;;;12780:26;12809:21;12780:50;;12841:32;12854:18;12841:12;:32::i;:::-;12677:204;12645:236::o;5172:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12401:236::-;12467:19;;;;;;;;;;;12451:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12506:17;;;;;;;;;;;12490:33;;:12;:10;:12::i;:::-;:33;;;12451:72;12443:81;;;;;;12535:23;12561:24;12579:4;12561:9;:24::i;:::-;12535:50;;12596:33;12613:15;12596:16;:33::i;:::-;12432:205;12401:236::o;17372:234::-;1522:12;:10;:12::i;:::-;1512:22;;:6;;;;;;;;;;:22;;;1504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17489:9:::1;17485:114;17508:8;;:15;;17504:1;:19;17485:114;;;17579:8;17545:18;:31;17564:8;;17573:1;17564:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17545:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17525:3;;;;;:::i;:::-;;;;17485:114;;;;17372:234:::0;;;:::o;7454:184::-;7571:7;7603:11;:18;7615:5;7603:18;;;;;;;;;;;;;;;:27;7622:7;7603:27;;;;;;;;;;;;;;;;7596:34;;7454:184;;;;:::o;1755:244::-;1522:12;:10;:12::i;:::-;1512:22;;:6;;;;;;;;;;:22;;;1504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1864:1:::1;1844:22;;:8;:22;;;;1836:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1954:8;1925:38;;1946:6;::::0;::::1;;;;;;;;1925:38;;;;;;;;;;;;1983:8;1974:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1755:244:::0;:::o;144:98::-;197:7;224:10;217:17;;144:98;:::o;8978:369::-;9122:1;9105:19;;:5;:19;;;;9097:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9203:1;9184:21;;:7;:21;;;;9176:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9285:6;9255:11;:18;9267:5;9255:18;;;;;;;;;;;;;;;:27;9274:7;9255:27;;;;;;;;;;;;;;;:36;;;;9323:7;9307:32;;9316:5;9307:32;;;9332:6;9307:32;;;;;;:::i;:::-;;;;;;;;8978:369;;;:::o;9355:2330::-;9493:1;9477:18;;:4;:18;;;;9469:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9570:1;9556:16;;:2;:16;;;;9548:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9640:1;9631:6;:10;9623:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9712:7;:5;:7::i;:::-;9704:15;;:4;:15;;;;:32;;;;;9729:7;:5;:7::i;:::-;9723:13;;:2;:13;;;;9704:32;9700:1259;;;9793:11;;;;;;;;;;;9788:144;;9841:7;:5;:7::i;:::-;9833:15;;:4;:15;;;9825:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9788:144;9966:12;;9956:6;:22;;9948:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10035:4;:10;10040:4;10035:10;;;;;;;;;;;;;;;;;;;;;;;;;10034:11;:24;;;;;10050:4;:8;10055:2;10050:8;;;;;;;;;;;;;;;;;;;;;;;;;10049:9;10034:24;10026:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10124:13;;;;;;;;;;;10118:19;;:2;:19;;;10115:146;;10191:14;;10182:6;10166:13;10176:2;10166:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10158:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10115:146;10277:28;10308:24;10326:4;10308:9;:24::i;:::-;10277:55;;10347:12;10386:19;;10362:20;:43;;10347:58;;10449:12;;10425:20;:36;10422:124;;10518:12;;10495:35;;10422:124;10566:7;:18;;;;;10578:6;;;;;;;;;;10577:7;10566:18;:43;;;;;10596:13;;;;;;;;;;;10588:21;;:4;:21;;;;10566:43;:58;;;;;10613:11;;;;;;;;;;;10566:58;:87;;;;;10629:18;:24;10648:4;10629:24;;;;;;;;;;;;;;;;;;;;;;;;;10628:25;10566:87;:114;;;;;10658:18;:22;10677:2;10658:22;;;;;;;;;;;;;;;;;;;;;;;;;10657:23;10566:114;10562:386;;;10701:38;10718:20;10701:16;:38::i;:::-;10758:26;10787:21;10758:50;;10852:1;10831:18;:22;10827:106;;;10878:35;10891:21;10878:12;:35::i;:::-;10827:106;10682:266;10562:386;9738:1221;;9700:1259;10971:12;10986:4;10971:19;;11035:18;:24;11054:4;11035:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11063:18;:22;11082:2;11063:22;;;;;;;;;;;;;;;;;;;;;;;;;11035:50;11034:102;;;;11099:13;;;;;;;;;;;11091:21;;:4;:21;;;;:44;;;;;11122:13;;;;;;;;;;;11116:19;;:2;:19;;;;11091:44;11034:102;11030:594;;;11163:5;11153:15;;11030:594;;;11246:13;;;;;;;;;;;11238:21;;:4;:21;;;:55;;;;;11277:15;;;;;;;;;;;11263:30;;:2;:30;;;;11238:55;11235:162;;;11326:14;;11314:9;:26;;;;11369:12;;11359:7;:22;;;;11235:162;11456:13;;;;;;;;;;;11450:19;;:2;:19;;;:55;;;;;11489:15;;;;;;;;;;;11473:32;;:4;:32;;;;11450:55;11446:165;;;11538:15;;11526:9;:27;;;;11582:13;;11572:7;:23;;;;11446:165;11030:594;11636:41;11651:4;11657:2;11661:6;11669:7;11636:14;:41::i;:::-;9458:2227;9355:2330;;;:::o;2363:224::-;2483:7;2516:1;2511;:6;;2519:12;2503:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2543:9;2559:1;2555;:5;;;;:::i;:::-;2543:17;;2578:1;2571:8;;;2363:224;;;;;:::o;8301:323::-;8396:7;8454;;8443;:18;;8421:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8542:19;8564:10;:8;:10::i;:::-;8542:32;;8592:24;8604:11;8592:7;:11;;:24;;;;:::i;:::-;8585:31;;;8301:323;;;:::o;12184:99::-;12241:17;;;;;;;;;;;:26;;:34;12268:6;12241:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12184:99;:::o;11693:483::-;5926:4;5917:6;;:13;;;;;;;;;;;;;;;;;;11771:21:::1;11809:1;11795:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11771:40;;11840:4;11822;11827:1;11822:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11866:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11856:4;11861:1;11856:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11899:62;11916:4;11931:15;;;;;;;;;;;11949:11;11899:8;:62::i;:::-;11972:15;;;;;;;;;;;:66;;;12053:11;12079:1;12095:4;12122;12142:15;11972:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11760:416;5962:5:::0;5953:6;;:14;;;;;;;;;;;;;;;;;;11693:483;:::o;13166:276::-;13322:7;13317:25;;13331:11;:9;:11::i;:::-;13317:25;13353:44;13371:6;13379:9;13390:6;13353:17;:44::i;:::-;13413:7;13408:26;;13422:12;:10;:12::i;:::-;13408:26;13166:276;;;;:::o;16121:164::-;16163:7;16184:15;16201;16220:19;:17;:19::i;:::-;16183:56;;;;16257:20;16269:7;16257;:11;;:20;;;;:::i;:::-;16250:27;;;;16121:164;:::o;2849:132::-;2907:7;2934:39;2938:1;2941;2934:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2927:46;;2849:132;;;;:::o;8632:216::-;8689:1;8676:9;;:14;:30;;;;;8705:1;8694:7;;:12;8676:30;8672:43;;;8708:7;;8672:43;8747:9;;8727:17;:29;;;;8785:7;;8767:15;:25;;;;8817:1;8805:9;:13;;;;8839:1;8829:7;:11;;;;8632:216;:::o;13450:610::-;13597:15;13627:23;13665:12;13692:23;13730:12;13757:13;13784:19;13795:7;13784:10;:19::i;:::-;13582:221;;;;;;;;;;;;13832:28;13852:7;13832;:15;13840:6;13832:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13814:7;:15;13822:6;13814:15;;;;;;;;;;;;;;;:46;;;;13892:39;13915:15;13892:7;:18;13900:9;13892:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13871:7;:18;13879:9;13871:18;;;;;;;;;;;;;;;:60;;;;13942:16;13952:5;13942:9;:16::i;:::-;13969:23;13981:4;13987;13969:11;:23::i;:::-;14025:9;14008:44;;14017:6;14008:44;;;14036:15;14008:44;;;;;;:::i;:::-;;;;;;;;13571:489;;;;;;13450:610;;;:::o;8856:114::-;8909:17;;8897:9;:29;;;;8947:15;;8937:7;:25;;;;8856:114::o;16293:257::-;16344:7;16353;16373:15;16391:7;;16373:25;;16409:15;4672:18;16409:25;;16459:20;4672:18;16459:7;;:11;;:20;;;;:::i;:::-;16449:7;:30;16445:61;;;16489:7;;4672:18;16481:25;;;;;;;;16445:61;16525:7;16534;16517:25;;;;;;16293:257;;;:::o;2989:223::-;3109:7;3141:1;3137;:5;3144:12;3129:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3168:9;3184:1;3180;:5;;;;:::i;:::-;3168:17;;3203:1;3196:8;;;2989:223;;;;;:::o;14479:615::-;14579:7;14601;14623;14645;14667;14689;14725:23;14750:12;14764:13;14794:40;14806:7;14815:9;;14826:7;;14794:11;:40::i;:::-;14724:110;;;;;;14845:19;14867:10;:8;:10::i;:::-;14845:32;;14889:15;14906:23;14931:12;14960:46;14972:7;14981:4;14987:5;14994:11;14960;:46::i;:::-;14888:118;;;;;;15025:7;15034:15;15051:4;15057:15;15074:4;15080:5;15017:69;;;;;;;;;;;;;;;;;;;14479:615;;;;;;;:::o;2219:136::-;2277:7;2304:43;2308:1;2311;2304:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2297:50;;2219:136;;;;:::o;2032:179::-;2090:7;2110:9;2126:1;2122;:5;;;;:::i;:::-;2110:17;;2151:1;2146;:6;;2138:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2202:1;2195:8;;;2032:179;;;;:::o;14068:211::-;14121:19;14143:10;:8;:10::i;:::-;14121:32;;14164:13;14180:22;14190:11;14180:5;:9;;:22;;;;:::i;:::-;14164:38;;14238:33;14265:5;14238:7;:22;14254:4;14238:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14213:7;:22;14229:4;14213:22;;;;;;;;;;;;;;;:58;;;;14110:169;;14068:211;:::o;14287:147::-;14365:17;14377:4;14365:7;;:11;;:17;;;;:::i;:::-;14355:7;:27;;;;14406:20;14421:4;14406:10;;:14;;:20;;;;:::i;:::-;14393:10;:33;;;;14287:147;;:::o;15102:469::-;15271:7;15293;15315;15350:12;15365:30;15391:3;15365:21;15377:8;15365:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15350:45;;15406:13;15422:28;15446:3;15422:19;15434:6;15422:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15406:44;;15461:23;15487:28;15509:5;15487:17;15499:4;15487:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15461:54;;15534:15;15551:4;15557:5;15526:37;;;;;;;;;15102:469;;;;;;;:::o;15579:534::-;15773:7;15795;15817;15852:15;15870:24;15882:11;15870:7;:11;;:24;;;;:::i;:::-;15852:42;;15905:12;15920:21;15929:11;15920:4;:8;;:21;;;;:::i;:::-;15905:36;;15952:13;15968:22;15978:11;15968:5;:9;;:22;;;;:::i;:::-;15952:38;;16001:23;16027:28;16049:5;16027:17;16039:4;16027:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16001:54;;16074:7;16083:15;16100:4;16066:39;;;;;;;;;;15579:534;;;;;;;;:::o;2595:246::-;2653:7;2682:1;2677;:6;2673:47;;;2707:1;2700:8;;;;2673:47;2730:9;2746:1;2742;:5;;;;:::i;:::-;2730:17;;2775:1;2770;2766;:5;;;;:::i;:::-;:10;2758:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2832:1;2825:8;;;2595:246;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:307::-;4139:1;4149:113;4163:6;4160:1;4157:13;4149:113;;;4248:1;4243:3;4239:11;4233:18;4229:1;4224:3;4220:11;4213:39;4185:2;4182:1;4178:10;4173:15;;4149:113;;;4280:6;4277:1;4274:13;4271:101;;;4360:1;4351:6;4346:3;4342:16;4335:27;4271:101;4120:258;4071:307;;;:::o;4384:364::-;4472:3;4500:39;4533:5;4500:39;:::i;:::-;4555:71;4619:6;4614:3;4555:71;:::i;:::-;4548:78;;4635:52;4680:6;4675:3;4668:4;4661:5;4657:16;4635:52;:::i;:::-;4712:29;4734:6;4712:29;:::i;:::-;4707:3;4703:39;4696:46;;4476:272;4384:364;;;;:::o;4754:313::-;4867:4;4905:2;4894:9;4890:18;4882:26;;4954:9;4948:4;4944:20;4940:1;4929:9;4925:17;4918:47;4982:78;5055:4;5046:6;4982:78;:::i;:::-;4974:86;;4754:313;;;;:::o;5073:77::-;5110:7;5139:5;5128:16;;5073:77;;;:::o;5156:122::-;5229:24;5247:5;5229:24;:::i;:::-;5222:5;5219:35;5209:63;;5268:1;5265;5258:12;5209:63;5156:122;:::o;5284:139::-;5330:5;5368:6;5355:20;5346:29;;5384:33;5411:5;5384:33;:::i;:::-;5284:139;;;;:::o;5429:474::-;5497:6;5505;5554:2;5542:9;5533:7;5529:23;5525:32;5522:119;;;5560:79;;:::i;:::-;5522:119;5680:1;5705:53;5750:7;5741:6;5730:9;5726:22;5705:53;:::i;:::-;5695:63;;5651:117;5807:2;5833:53;5878:7;5869:6;5858:9;5854:22;5833:53;:::i;:::-;5823:63;;5778:118;5429:474;;;;;:::o;5909:90::-;5943:7;5986:5;5979:13;5972:21;5961:32;;5909:90;;;:::o;6005:109::-;6086:21;6101:5;6086:21;:::i;:::-;6081:3;6074:34;6005:109;;:::o;6120:210::-;6207:4;6245:2;6234:9;6230:18;6222:26;;6258:65;6320:1;6309:9;6305:17;6296:6;6258:65;:::i;:::-;6120:210;;;;:::o;6336:60::-;6364:3;6385:5;6378:12;;6336:60;;;:::o;6402:142::-;6452:9;6485:53;6503:34;6512:24;6530:5;6512:24;:::i;:::-;6503:34;:::i;:::-;6485:53;:::i;:::-;6472:66;;6402:142;;;:::o;6550:126::-;6600:9;6633:37;6664:5;6633:37;:::i;:::-;6620:50;;6550:126;;;:::o;6682:152::-;6758:9;6791:37;6822:5;6791:37;:::i;:::-;6778:50;;6682:152;;;:::o;6840:183::-;6953:63;7010:5;6953:63;:::i;:::-;6948:3;6941:76;6840:183;;:::o;7029:274::-;7148:4;7186:2;7175:9;7171:18;7163:26;;7199:97;7293:1;7282:9;7278:17;7269:6;7199:97;:::i;:::-;7029:274;;;;:::o;7309:118::-;7396:24;7414:5;7396:24;:::i;:::-;7391:3;7384:37;7309:118;;:::o;7433:222::-;7526:4;7564:2;7553:9;7549:18;7541:26;;7577:71;7645:1;7634:9;7630:17;7621:6;7577:71;:::i;:::-;7433:222;;;;:::o;7661:619::-;7738:6;7746;7754;7803:2;7791:9;7782:7;7778:23;7774:32;7771:119;;;7809:79;;:::i;:::-;7771:119;7929:1;7954:53;7999:7;7990:6;7979:9;7975:22;7954:53;:::i;:::-;7944:63;;7900:117;8056:2;8082:53;8127:7;8118:6;8107:9;8103:22;8082:53;:::i;:::-;8072:63;;8027:118;8184:2;8210:53;8255:7;8246:6;8235:9;8231:22;8210:53;:::i;:::-;8200:63;;8155:118;7661:619;;;;;:::o;8286:116::-;8356:21;8371:5;8356:21;:::i;:::-;8349:5;8346:32;8336:60;;8392:1;8389;8382:12;8336:60;8286:116;:::o;8408:133::-;8451:5;8489:6;8476:20;8467:29;;8505:30;8529:5;8505:30;:::i;:::-;8408:133;;;;:::o;8547:323::-;8603:6;8652:2;8640:9;8631:7;8627:23;8623:32;8620:119;;;8658:79;;:::i;:::-;8620:119;8778:1;8803:50;8845:7;8836:6;8825:9;8821:22;8803:50;:::i;:::-;8793:60;;8749:114;8547:323;;;;:::o;8876:86::-;8911:7;8951:4;8944:5;8940:16;8929:27;;8876:86;;;:::o;8968:112::-;9051:22;9067:5;9051:22;:::i;:::-;9046:3;9039:35;8968:112;;:::o;9086:214::-;9175:4;9213:2;9202:9;9198:18;9190:26;;9226:67;9290:1;9279:9;9275:17;9266:6;9226:67;:::i;:::-;9086:214;;;;:::o;9306:118::-;9393:24;9411:5;9393:24;:::i;:::-;9388:3;9381:37;9306:118;;:::o;9430:222::-;9523:4;9561:2;9550:9;9546:18;9538:26;;9574:71;9642:1;9631:9;9627:17;9618:6;9574:71;:::i;:::-;9430:222;;;;:::o;9658:329::-;9717:6;9766:2;9754:9;9745:7;9741:23;9737:32;9734:119;;;9772:79;;:::i;:::-;9734:119;9892:1;9917:53;9962:7;9953:6;9942:9;9938:22;9917:53;:::i;:::-;9907:63;;9863:117;9658:329;;;;:::o;9993:765::-;10079:6;10087;10095;10103;10152:3;10140:9;10131:7;10127:23;10123:33;10120:120;;;10159:79;;:::i;:::-;10120:120;10279:1;10304:53;10349:7;10340:6;10329:9;10325:22;10304:53;:::i;:::-;10294:63;;10250:117;10406:2;10432:53;10477:7;10468:6;10457:9;10453:22;10432:53;:::i;:::-;10422:63;;10377:118;10534:2;10560:53;10605:7;10596:6;10585:9;10581:22;10560:53;:::i;:::-;10550:63;;10505:118;10662:2;10688:53;10733:7;10724:6;10713:9;10709:22;10688:53;:::i;:::-;10678:63;;10633:118;9993:765;;;;;;;:::o;10764:329::-;10823:6;10872:2;10860:9;10851:7;10847:23;10843:32;10840:119;;;10878:79;;:::i;:::-;10840:119;10998:1;11023:53;11068:7;11059:6;11048:9;11044:22;11023:53;:::i;:::-;11013:63;;10969:117;10764:329;;;;:::o;11099:474::-;11167:6;11175;11224:2;11212:9;11203:7;11199:23;11195:32;11192:119;;;11230:79;;:::i;:::-;11192:119;11350:1;11375:53;11420:7;11411:6;11400:9;11396:22;11375:53;:::i;:::-;11365:63;;11321:117;11477:2;11503:53;11548:7;11539:6;11528:9;11524:22;11503:53;:::i;:::-;11493:63;;11448:118;11099:474;;;;;:::o;11579:117::-;11688:1;11685;11678:12;11719:568;11792:8;11802:6;11852:3;11845:4;11837:6;11833:17;11829:27;11819:122;;11860:79;;:::i;:::-;11819:122;11973:6;11960:20;11950:30;;12003:18;11995:6;11992:30;11989:117;;;12025:79;;:::i;:::-;11989:117;12139:4;12131:6;12127:17;12115:29;;12193:3;12185:4;12177:6;12173:17;12163:8;12159:32;12156:41;12153:128;;;12200:79;;:::i;:::-;12153:128;11719:568;;;;;:::o;12293:698::-;12385:6;12393;12401;12450:2;12438:9;12429:7;12425:23;12421:32;12418:119;;;12456:79;;:::i;:::-;12418:119;12604:1;12593:9;12589:17;12576:31;12634:18;12626:6;12623:30;12620:117;;;12656:79;;:::i;:::-;12620:117;12769:80;12841:7;12832:6;12821:9;12817:22;12769:80;:::i;:::-;12751:98;;;;12547:312;12898:2;12924:50;12966:7;12957:6;12946:9;12942:22;12924:50;:::i;:::-;12914:60;;12869:115;12293:698;;;;;:::o;12997:474::-;13065:6;13073;13122:2;13110:9;13101:7;13097:23;13093:32;13090:119;;;13128:79;;:::i;:::-;13090:119;13248:1;13273:53;13318:7;13309:6;13298:9;13294:22;13273:53;:::i;:::-;13263:63;;13219:117;13375:2;13401:53;13446:7;13437:6;13426:9;13422:22;13401:53;:::i;:::-;13391:63;;13346:118;12997:474;;;;;:::o;13477:182::-;13617:34;13613:1;13605:6;13601:14;13594:58;13477:182;:::o;13665:366::-;13807:3;13828:67;13892:2;13887:3;13828:67;:::i;:::-;13821:74;;13904:93;13993:3;13904:93;:::i;:::-;14022:2;14017:3;14013:12;14006:19;;13665:366;;;:::o;14037:419::-;14203:4;14241:2;14230:9;14226:18;14218:26;;14290:9;14284:4;14280:20;14276:1;14265:9;14261:17;14254:47;14318:131;14444:4;14318:131;:::i;:::-;14310:139;;14037:419;;;:::o;14462:180::-;14510:77;14507:1;14500:88;14607:4;14604:1;14597:15;14631:4;14628:1;14621:15;14648:180;14696:77;14693:1;14686:88;14793:4;14790:1;14783:15;14817:4;14814:1;14807:15;14834:233;14873:3;14896:24;14914:5;14896:24;:::i;:::-;14887:33;;14942:66;14935:5;14932:77;14929:103;;;15012:18;;:::i;:::-;14929:103;15059:1;15052:5;15048:13;15041:20;;14834:233;;;:::o;15073:225::-;15213:34;15209:1;15201:6;15197:14;15190:58;15282:8;15277:2;15269:6;15265:15;15258:33;15073:225;:::o;15304:366::-;15446:3;15467:67;15531:2;15526:3;15467:67;:::i;:::-;15460:74;;15543:93;15632:3;15543:93;:::i;:::-;15661:2;15656:3;15652:12;15645:19;;15304:366;;;:::o;15676:419::-;15842:4;15880:2;15869:9;15865:18;15857:26;;15929:9;15923:4;15919:20;15915:1;15904:9;15900:17;15893:47;15957:131;16083:4;15957:131;:::i;:::-;15949:139;;15676:419;;;:::o;16101:223::-;16241:34;16237:1;16229:6;16225:14;16218:58;16310:6;16305:2;16297:6;16293:15;16286:31;16101:223;:::o;16330:366::-;16472:3;16493:67;16557:2;16552:3;16493:67;:::i;:::-;16486:74;;16569:93;16658:3;16569:93;:::i;:::-;16687:2;16682:3;16678:12;16671:19;;16330:366;;;:::o;16702:419::-;16868:4;16906:2;16895:9;16891:18;16883:26;;16955:9;16949:4;16945:20;16941:1;16930:9;16926:17;16919:47;16983:131;17109:4;16983:131;:::i;:::-;16975:139;;16702:419;;;:::o;17127:221::-;17267:34;17263:1;17255:6;17251:14;17244:58;17336:4;17331:2;17323:6;17319:15;17312:29;17127:221;:::o;17354:366::-;17496:3;17517:67;17581:2;17576:3;17517:67;:::i;:::-;17510:74;;17593:93;17682:3;17593:93;:::i;:::-;17711:2;17706:3;17702:12;17695:19;;17354:366;;;:::o;17726:419::-;17892:4;17930:2;17919:9;17915:18;17907:26;;17979:9;17973:4;17969:20;17965:1;17954:9;17950:17;17943:47;18007:131;18133:4;18007:131;:::i;:::-;17999:139;;17726:419;;;:::o;18151:224::-;18291:34;18287:1;18279:6;18275:14;18268:58;18360:7;18355:2;18347:6;18343:15;18336:32;18151:224;:::o;18381:366::-;18523:3;18544:67;18608:2;18603:3;18544:67;:::i;:::-;18537:74;;18620:93;18709:3;18620:93;:::i;:::-;18738:2;18733:3;18729:12;18722:19;;18381:366;;;:::o;18753:419::-;18919:4;18957:2;18946:9;18942:18;18934:26;;19006:9;19000:4;18996:20;18992:1;18981:9;18977:17;18970:47;19034:131;19160:4;19034:131;:::i;:::-;19026:139;;18753:419;;;:::o;19178:222::-;19318:34;19314:1;19306:6;19302:14;19295:58;19387:5;19382:2;19374:6;19370:15;19363:30;19178:222;:::o;19406:366::-;19548:3;19569:67;19633:2;19628:3;19569:67;:::i;:::-;19562:74;;19645:93;19734:3;19645:93;:::i;:::-;19763:2;19758:3;19754:12;19747:19;;19406:366;;;:::o;19778:419::-;19944:4;19982:2;19971:9;19967:18;19959:26;;20031:9;20025:4;20021:20;20017:1;20006:9;20002:17;19995:47;20059:131;20185:4;20059:131;:::i;:::-;20051:139;;19778:419;;;:::o;20203:228::-;20343:34;20339:1;20331:6;20327:14;20320:58;20412:11;20407:2;20399:6;20395:15;20388:36;20203:228;:::o;20437:366::-;20579:3;20600:67;20664:2;20659:3;20600:67;:::i;:::-;20593:74;;20676:93;20765:3;20676:93;:::i;:::-;20794:2;20789:3;20785:12;20778:19;;20437:366;;;:::o;20809:419::-;20975:4;21013:2;21002:9;20998:18;20990:26;;21062:9;21056:4;21052:20;21048:1;21037:9;21033:17;21026:47;21090:131;21216:4;21090:131;:::i;:::-;21082:139;;20809:419;;;:::o;21234:250::-;21374:34;21370:1;21362:6;21358:14;21351:58;21443:33;21438:2;21430:6;21426:15;21419:58;21234:250;:::o;21490:366::-;21632:3;21653:67;21717:2;21712:3;21653:67;:::i;:::-;21646:74;;21729:93;21818:3;21729:93;:::i;:::-;21847:2;21842:3;21838:12;21831:19;;21490:366;;;:::o;21862:419::-;22028:4;22066:2;22055:9;22051:18;22043:26;;22115:9;22109:4;22105:20;22101:1;22090:9;22086:17;22079:47;22143:131;22269:4;22143:131;:::i;:::-;22135:139;;21862:419;;;:::o;22287:178::-;22427:30;22423:1;22415:6;22411:14;22404:54;22287:178;:::o;22471:366::-;22613:3;22634:67;22698:2;22693:3;22634:67;:::i;:::-;22627:74;;22710:93;22799:3;22710:93;:::i;:::-;22828:2;22823:3;22819:12;22812:19;;22471:366;;;:::o;22843:419::-;23009:4;23047:2;23036:9;23032:18;23024:26;;23096:9;23090:4;23086:20;23082:1;23071:9;23067:17;23060:47;23124:131;23250:4;23124:131;:::i;:::-;23116:139;;22843:419;;;:::o;23268:222::-;23408:34;23404:1;23396:6;23392:14;23385:58;23477:5;23472:2;23464:6;23460:15;23453:30;23268:222;:::o;23496:366::-;23638:3;23659:67;23723:2;23718:3;23659:67;:::i;:::-;23652:74;;23735:93;23824:3;23735:93;:::i;:::-;23853:2;23848:3;23844:12;23837:19;;23496:366;;;:::o;23868:419::-;24034:4;24072:2;24061:9;24057:18;24049:26;;24121:9;24115:4;24111:20;24107:1;24096:9;24092:17;24085:47;24149:131;24275:4;24149:131;:::i;:::-;24141:139;;23868:419;;;:::o;24293:305::-;24333:3;24352:20;24370:1;24352:20;:::i;:::-;24347:25;;24386:20;24404:1;24386:20;:::i;:::-;24381:25;;24540:1;24472:66;24468:74;24465:1;24462:81;24459:107;;;24546:18;;:::i;:::-;24459:107;24590:1;24587;24583:9;24576:16;;24293:305;;;;:::o;24604:222::-;24744:34;24740:1;24732:6;24728:14;24721:58;24813:5;24808:2;24800:6;24796:15;24789:30;24604:222;:::o;24832:366::-;24974:3;24995:67;25059:2;25054:3;24995:67;:::i;:::-;24988:74;;25071:93;25160:3;25071:93;:::i;:::-;25189:2;25184:3;25180:12;25173:19;;24832:366;;;:::o;25204:419::-;25370:4;25408:2;25397:9;25393:18;25385:26;;25457:9;25451:4;25447:20;25443:1;25432:9;25428:17;25421:47;25485:131;25611:4;25485:131;:::i;:::-;25477:139;;25204:419;;;:::o;25629:191::-;25669:4;25689:20;25707:1;25689:20;:::i;:::-;25684:25;;25723:20;25741:1;25723:20;:::i;:::-;25718:25;;25762:1;25759;25756:8;25753:34;;;25767:18;;:::i;:::-;25753:34;25812:1;25809;25805:9;25797:17;;25629:191;;;;:::o;25826:229::-;25966:34;25962:1;25954:6;25950:14;25943:58;26035:12;26030:2;26022:6;26018:15;26011:37;25826:229;:::o;26061:366::-;26203:3;26224:67;26288:2;26283:3;26224:67;:::i;:::-;26217:74;;26300:93;26389:3;26300:93;:::i;:::-;26418:2;26413:3;26409:12;26402:19;;26061:366;;;:::o;26433:419::-;26599:4;26637:2;26626:9;26622:18;26614:26;;26686:9;26680:4;26676:20;26672:1;26661:9;26657:17;26650:47;26714:131;26840:4;26714:131;:::i;:::-;26706:139;;26433:419;;;:::o;26858:143::-;26915:5;26946:6;26940:13;26931:22;;26962:33;26989:5;26962:33;:::i;:::-;26858:143;;;;:::o;27007:351::-;27077:6;27126:2;27114:9;27105:7;27101:23;27097:32;27094:119;;;27132:79;;:::i;:::-;27094:119;27252:1;27277:64;27333:7;27324:6;27313:9;27309:22;27277:64;:::i;:::-;27267:74;;27223:128;27007:351;;;;:::o;27364:85::-;27409:7;27438:5;27427:16;;27364:85;;;:::o;27455:158::-;27513:9;27546:61;27564:42;27573:32;27599:5;27573:32;:::i;:::-;27564:42;:::i;:::-;27546:61;:::i;:::-;27533:74;;27455:158;;;:::o;27619:147::-;27714:45;27753:5;27714:45;:::i;:::-;27709:3;27702:58;27619:147;;:::o;27772:114::-;27839:6;27873:5;27867:12;27857:22;;27772:114;;;:::o;27892:184::-;27991:11;28025:6;28020:3;28013:19;28065:4;28060:3;28056:14;28041:29;;27892:184;;;;:::o;28082:132::-;28149:4;28172:3;28164:11;;28202:4;28197:3;28193:14;28185:22;;28082:132;;;:::o;28220:108::-;28297:24;28315:5;28297:24;:::i;:::-;28292:3;28285:37;28220:108;;:::o;28334:179::-;28403:10;28424:46;28466:3;28458:6;28424:46;:::i;:::-;28502:4;28497:3;28493:14;28479:28;;28334:179;;;;:::o;28519:113::-;28589:4;28621;28616:3;28612:14;28604:22;;28519:113;;;:::o;28668:732::-;28787:3;28816:54;28864:5;28816:54;:::i;:::-;28886:86;28965:6;28960:3;28886:86;:::i;:::-;28879:93;;28996:56;29046:5;28996:56;:::i;:::-;29075:7;29106:1;29091:284;29116:6;29113:1;29110:13;29091:284;;;29192:6;29186:13;29219:63;29278:3;29263:13;29219:63;:::i;:::-;29212:70;;29305:60;29358:6;29305:60;:::i;:::-;29295:70;;29151:224;29138:1;29135;29131:9;29126:14;;29091:284;;;29095:14;29391:3;29384:10;;28792:608;;;28668:732;;;;:::o;29406:831::-;29669:4;29707:3;29696:9;29692:19;29684:27;;29721:71;29789:1;29778:9;29774:17;29765:6;29721:71;:::i;:::-;29802:80;29878:2;29867:9;29863:18;29854:6;29802:80;:::i;:::-;29929:9;29923:4;29919:20;29914:2;29903:9;29899:18;29892:48;29957:108;30060:4;30051:6;29957:108;:::i;:::-;29949:116;;30075:72;30143:2;30132:9;30128:18;30119:6;30075:72;:::i;:::-;30157:73;30225:3;30214:9;30210:19;30201:6;30157:73;:::i;:::-;29406:831;;;;;;;;:::o;30243:180::-;30291:77;30288:1;30281:88;30388:4;30385:1;30378:15;30412:4;30409:1;30402:15;30429:185;30469:1;30486:20;30504:1;30486:20;:::i;:::-;30481:25;;30520:20;30538:1;30520:20;:::i;:::-;30515:25;;30559:1;30549:35;;30564:18;;:::i;:::-;30549:35;30606:1;30603;30599:9;30594:14;;30429:185;;;;:::o;30620:177::-;30760:29;30756:1;30748:6;30744:14;30737:53;30620:177;:::o;30803:366::-;30945:3;30966:67;31030:2;31025:3;30966:67;:::i;:::-;30959:74;;31042:93;31131:3;31042:93;:::i;:::-;31160:2;31155:3;31151:12;31144:19;;30803:366;;;:::o;31175:419::-;31341:4;31379:2;31368:9;31364:18;31356:26;;31428:9;31422:4;31418:20;31414:1;31403:9;31399:17;31392:47;31456:131;31582:4;31456:131;:::i;:::-;31448:139;;31175:419;;;:::o;31600:348::-;31640:7;31663:20;31681:1;31663:20;:::i;:::-;31658:25;;31697:20;31715:1;31697:20;:::i;:::-;31692:25;;31885:1;31817:66;31813:74;31810:1;31807:81;31802:1;31795:9;31788:17;31784:105;31781:131;;;31892:18;;:::i;:::-;31781:131;31940:1;31937;31933:9;31922:20;;31600:348;;;;:::o;31954:220::-;32094:34;32090:1;32082:6;32078:14;32071:58;32163:3;32158:2;32150:6;32146:15;32139:28;31954:220;:::o;32180:366::-;32322:3;32343:67;32407:2;32402:3;32343:67;:::i;:::-;32336:74;;32419:93;32508:3;32419:93;:::i;:::-;32537:2;32532:3;32528:12;32521:19;;32180:366;;;:::o;32552:419::-;32718:4;32756:2;32745:9;32741:18;32733:26;;32805:9;32799:4;32795:20;32791:1;32780:9;32776:17;32769:47;32833:131;32959:4;32833:131;:::i;:::-;32825:139;;32552:419;;;:::o

Swarm Source

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