ETH Price: $2,506.27 (+0.18%)
Gas: 3.04 Gwei

Token

Twitether (TE)
 

Overview

Max Total Supply

1,000,000,000 TE

Holders

18

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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

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

Contract Source Code Verified (Exact Match)

Contract Name:
Twitether

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-29
*/

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

    using SafeMath for uint256;

    string private constant _name = "Twitether";
    string private constant _symbol = "TE";
    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 = 3;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 3;

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

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint256 public _maxTxAmount = 15000000 * 10**9;
    uint256 public _maxWalletSize = 30000000 * 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 totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }

    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender)
        public
        view
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (from != owner() && to != owner()) {

            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _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 setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

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

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

    function 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 updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        _maxTxAmount = newNum * (10**9);
    }

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

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

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

    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
         
         require(taxFeeOnBuy <= 10, "Must keep fees at 10% or less");
         require(taxFeeOnBuy <= 10, "Must keep fees at 10% or less");
         
    }

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

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


    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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","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"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052670de0b6b3a76400006000196200001c91906200073e565b6000196200002b9190620007a5565b600655600060085560036009556000600a556003600b55600a54600c55600b54600d55600c54600e55600d54600f55736b6c966015bce5248e5fb4b4a8ea1d7c2f67510f601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550736b6c966015bce5248e5fb4b4a8ea1d7c2f67510f601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555066354a6ba7a18000601655666a94d74f4300006017556509184e72a0006018553480156200016657600080fd5b50600062000179620006d460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600654600260006200022e620006d460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200030d57600080fd5b505afa15801562000322573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034891906200084a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003ab57600080fd5b505afa158015620003c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e691906200084a565b6040518363ffffffff1660e01b8152600401620004059291906200088d565b602060405180830381600087803b1580156200042057600080fd5b505af115801562000435573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200045b91906200084a565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004b1620006dc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200065e620006d460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620006c59190620008cb565b60405180910390a350620008e8565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200074b8262000705565b9150620007588362000705565b9250826200076b576200076a6200070f565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007b28262000705565b9150620007bf8362000705565b925082821015620007d557620007d462000776565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200081282620007e5565b9050919050565b620008248162000805565b81146200083057600080fd5b50565b600081519050620008448162000819565b92915050565b600060208284031215620008635762000862620007e0565b5b6000620008738482850162000833565b91505092915050565b620008878162000805565b82525050565b6000604082019050620008a460008301856200087c565b620008b360208301846200087c565b9392505050565b620008c58162000705565b82525050565b6000602082019050620008e26000830184620008ba565b92915050565b613e1080620008f86000396000f3fe6080604052600436106101c55760003560e01c8063715018a6116100f757806398a5c31511610095578063c3c8cd8011610064578063c3c8cd801461063a578063c492f04614610651578063dd62ed3e1461067a578063f2fde38b146106b7576101cc565b806398a5c3151461056e578063a2a957bb14610597578063a9059cbb146105c0578063bfd79284146105fd576101cc565b80638da5cb5b116100d15780638da5cb5b146104c45780638f70ccf7146104ef5780638f9a55c01461051857806395d89b4114610543576101cc565b8063715018a6146104455780637d1db4a51461045c5780637f2feddc14610487576101cc565b80632fd689e3116101645780636b9990531161013e5780636b9990531461039f5780636d8aa8f8146103c85780636fc3eaec146103f157806370a0823114610408576101cc565b80632fd689e31461031e578063313ce5671461034957806349bd5a5e14610374576101cc565b80631694505e116101a05780631694505e1461026257806318160ddd1461028d578063203e727e146102b857806323b872dd146102e1576101cc565b8062b8cf2a146101d157806306fdde03146101fa578063095ea7b314610225576101cc565b366101cc57005b600080fd5b3480156101dd57600080fd5b506101f860048036038101906101f39190612d30565b6106e0565b005b34801561020657600080fd5b5061020f61080a565b60405161021c9190612e01565b60405180910390f35b34801561023157600080fd5b5061024c60048036038101906102479190612e59565b610847565b6040516102599190612eb4565b60405180910390f35b34801561026e57600080fd5b50610277610865565b6040516102849190612f2e565b60405180910390f35b34801561029957600080fd5b506102a261088b565b6040516102af9190612f58565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da9190612f73565b61089b565b005b3480156102ed57600080fd5b5061030860048036038101906103039190612fa0565b610949565b6040516103159190612eb4565b60405180910390f35b34801561032a57600080fd5b50610333610a22565b6040516103409190612f58565b60405180910390f35b34801561035557600080fd5b5061035e610a28565b60405161036b919061300f565b60405180910390f35b34801561038057600080fd5b50610389610a31565b6040516103969190613039565b60405180910390f35b3480156103ab57600080fd5b506103c660048036038101906103c19190613054565b610a57565b005b3480156103d457600080fd5b506103ef60048036038101906103ea91906130ad565b610b47565b005b3480156103fd57600080fd5b50610406610bf9565b005b34801561041457600080fd5b5061042f600480360381019061042a9190613054565b610cca565b60405161043c9190612f58565b60405180910390f35b34801561045157600080fd5b5061045a610d1b565b005b34801561046857600080fd5b50610471610e6e565b60405161047e9190612f58565b60405180910390f35b34801561049357600080fd5b506104ae60048036038101906104a99190613054565b610e74565b6040516104bb9190612f58565b60405180910390f35b3480156104d057600080fd5b506104d9610e8c565b6040516104e69190613039565b60405180910390f35b3480156104fb57600080fd5b50610516600480360381019061051191906130ad565b610eb5565b005b34801561052457600080fd5b5061052d610f67565b60405161053a9190612f58565b60405180910390f35b34801561054f57600080fd5b50610558610f6d565b6040516105659190612e01565b60405180910390f35b34801561057a57600080fd5b5061059560048036038101906105909190612f73565b610faa565b005b3480156105a357600080fd5b506105be60048036038101906105b991906130da565b611049565b005b3480156105cc57600080fd5b506105e760048036038101906105e29190612e59565b611188565b6040516105f49190612eb4565b60405180910390f35b34801561060957600080fd5b50610624600480360381019061061f9190613054565b6111a6565b6040516106319190612eb4565b60405180910390f35b34801561064657600080fd5b5061064f6111c6565b005b34801561065d57600080fd5b506106786004803603810190610673919061319c565b61129f565b005b34801561068657600080fd5b506106a1600480360381019061069c91906131fc565b6113d9565b6040516106ae9190612f58565b60405180910390f35b3480156106c357600080fd5b506106de60048036038101906106d99190613054565b611460565b005b6106e8611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076c90613288565b60405180910390fd5b60005b81518110156108065760016010600084848151811061079a576107996132a8565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806107fe90613306565b915050610778565b5050565b60606040518060400160405280600981526020017f5477697465746865720000000000000000000000000000000000000000000000815250905090565b600061085b610854611622565b848461162a565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b6108a3611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610930576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092790613288565b60405180910390fd5b633b9aca0081610940919061334f565b60168190555050565b60006109568484846117f5565b610a1784610962611622565b610a1285604051806060016040528060288152602001613db360289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109c8611622565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461207a9092919063ffffffff16565b61162a565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a5f611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae390613288565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b4f611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd390613288565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c3a611622565b73ffffffffffffffffffffffffffffffffffffffff161480610cb05750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c98611622565b73ffffffffffffffffffffffffffffffffffffffff16145b610cb957600080fd5b6000479050610cc7816120de565b50565b6000610d14600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461214a565b9050919050565b610d23611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610db0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da790613288565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ebd611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4190613288565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600281526020017f5445000000000000000000000000000000000000000000000000000000000000815250905090565b610fb2611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461103f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103690613288565b60405180910390fd5b8060188190555050565b611051611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d590613288565b60405180910390fd5b8360088190555082600a819055508160098190555080600b81905550600a82111561113e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611135906133f5565b60405180910390fd5b600a821115611182576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611179906133f5565b60405180910390fd5b50505050565b600061119c611195611622565b84846117f5565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611207611622565b73ffffffffffffffffffffffffffffffffffffffff16148061127d5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611265611622565b73ffffffffffffffffffffffffffffffffffffffff16145b61128657600080fd5b600061129130610cca565b905061129c816121b8565b50565b6112a7611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611334576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132b90613288565b60405180910390fd5b60005b838390508110156113d357816005600086868581811061135a576113596132a8565b5b905060200201602081019061136f9190613054565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806113cb90613306565b915050611337565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611468611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ec90613288565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611565576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155c90613487565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561169a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169190613519565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561170a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611701906135ab565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117e89190612f58565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185c9061363d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cc906136cf565b60405180910390fd5b60008111611918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190f90613761565b60405180910390fd5b611920610e8c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561198e575061195e610e8c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d7957601560149054906101000a900460ff16611a1d576119af610e8c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a13906137f3565b60405180910390fd5b5b601654811115611a62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a599061385f565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b065750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3c906138f1565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611bf25760175481611ba784610cca565b611bb19190613911565b10611bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be8906139d9565b60405180910390fd5b5b6000611bfd30610cca565b9050600060185482101590506016548210611c185760165491505b808015611c30575060158054906101000a900460ff16155b8015611c8a5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611ca25750601560169054906101000a900460ff165b8015611cf85750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d4e5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d7657611d5c826121b8565b60004790506000811115611d7457611d73476120de565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e205750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611ed35750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611ed25750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611ee15760009050612068565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f8c5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611fa457600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561204f5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561206757600a54600c81905550600b54600d819055505b5b6120748484848461243e565b50505050565b60008383111582906120c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b99190612e01565b60405180910390fd5b50600083856120d191906139f9565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612146573d6000803e3d6000fd5b5050565b6000600654821115612191576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218890613a9f565b60405180910390fd5b600061219b61246b565b90506121b0818461249690919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156121ef576121ee612b8f565b5b60405190808252806020026020018201604052801561221d5781602001602082028036833780820191505090505b5090503081600081518110612235576122346132a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156122d757600080fd5b505afa1580156122eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061230f9190613ad4565b81600181518110612323576123226132a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061238a30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461162a565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016123ee959493929190613bfa565b600060405180830381600087803b15801561240857600080fd5b505af115801561241c573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b8061244c5761244b6124e0565b5b612457848484612523565b80612465576124646126ee565b5b50505050565b6000806000612478612702565b9150915061248f818361249690919063ffffffff16565b9250505090565b60006124d883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612761565b905092915050565b6000600c541480156124f457506000600d54145b156124fe57612521565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612535876127c4565b95509550955095509550955061259386600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282c90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061262885600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461287690919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612674816128d4565b61267e8483612991565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126db9190612f58565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a76400009050612736670de0b6b3a764000060065461249690919063ffffffff16565b82101561275457600654670de0b6b3a764000093509350505061275d565b81819350935050505b9091565b600080831182906127a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279f9190612e01565b60405180910390fd5b50600083856127b79190613c83565b9050809150509392505050565b60008060008060008060008060006127e18a600c54600d546129cb565b92509250925060006127f161246b565b905060008060006128048e878787612a61565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061286e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061207a565b905092915050565b60008082846128859190613911565b9050838110156128ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c190613d00565b60405180910390fd5b8091505092915050565b60006128de61246b565b905060006128f58284612aea90919063ffffffff16565b905061294981600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461287690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6129a68260065461282c90919063ffffffff16565b6006819055506129c18160075461287690919063ffffffff16565b6007819055505050565b6000806000806129f760646129e9888a612aea90919063ffffffff16565b61249690919063ffffffff16565b90506000612a216064612a13888b612aea90919063ffffffff16565b61249690919063ffffffff16565b90506000612a4a82612a3c858c61282c90919063ffffffff16565b61282c90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a7a8589612aea90919063ffffffff16565b90506000612a918689612aea90919063ffffffff16565b90506000612aa88789612aea90919063ffffffff16565b90506000612ad182612ac3858761282c90919063ffffffff16565b61282c90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612afd5760009050612b5f565b60008284612b0b919061334f565b9050828482612b1a9190613c83565b14612b5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5190613d92565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612bc782612b7e565b810181811067ffffffffffffffff82111715612be657612be5612b8f565b5b80604052505050565b6000612bf9612b65565b9050612c058282612bbe565b919050565b600067ffffffffffffffff821115612c2557612c24612b8f565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c6682612c3b565b9050919050565b612c7681612c5b565b8114612c8157600080fd5b50565b600081359050612c9381612c6d565b92915050565b6000612cac612ca784612c0a565b612bef565b90508083825260208201905060208402830185811115612ccf57612cce612c36565b5b835b81811015612cf85780612ce48882612c84565b845260208401935050602081019050612cd1565b5050509392505050565b600082601f830112612d1757612d16612b79565b5b8135612d27848260208601612c99565b91505092915050565b600060208284031215612d4657612d45612b6f565b5b600082013567ffffffffffffffff811115612d6457612d63612b74565b5b612d7084828501612d02565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612db3578082015181840152602081019050612d98565b83811115612dc2576000848401525b50505050565b6000612dd382612d79565b612ddd8185612d84565b9350612ded818560208601612d95565b612df681612b7e565b840191505092915050565b60006020820190508181036000830152612e1b8184612dc8565b905092915050565b6000819050919050565b612e3681612e23565b8114612e4157600080fd5b50565b600081359050612e5381612e2d565b92915050565b60008060408385031215612e7057612e6f612b6f565b5b6000612e7e85828601612c84565b9250506020612e8f85828601612e44565b9150509250929050565b60008115159050919050565b612eae81612e99565b82525050565b6000602082019050612ec96000830184612ea5565b92915050565b6000819050919050565b6000612ef4612eef612eea84612c3b565b612ecf565b612c3b565b9050919050565b6000612f0682612ed9565b9050919050565b6000612f1882612efb565b9050919050565b612f2881612f0d565b82525050565b6000602082019050612f436000830184612f1f565b92915050565b612f5281612e23565b82525050565b6000602082019050612f6d6000830184612f49565b92915050565b600060208284031215612f8957612f88612b6f565b5b6000612f9784828501612e44565b91505092915050565b600080600060608486031215612fb957612fb8612b6f565b5b6000612fc786828701612c84565b9350506020612fd886828701612c84565b9250506040612fe986828701612e44565b9150509250925092565b600060ff82169050919050565b61300981612ff3565b82525050565b60006020820190506130246000830184613000565b92915050565b61303381612c5b565b82525050565b600060208201905061304e600083018461302a565b92915050565b60006020828403121561306a57613069612b6f565b5b600061307884828501612c84565b91505092915050565b61308a81612e99565b811461309557600080fd5b50565b6000813590506130a781613081565b92915050565b6000602082840312156130c3576130c2612b6f565b5b60006130d184828501613098565b91505092915050565b600080600080608085870312156130f4576130f3612b6f565b5b600061310287828801612e44565b945050602061311387828801612e44565b935050604061312487828801612e44565b925050606061313587828801612e44565b91505092959194509250565b600080fd5b60008083601f84011261315c5761315b612b79565b5b8235905067ffffffffffffffff81111561317957613178613141565b5b60208301915083602082028301111561319557613194612c36565b5b9250929050565b6000806000604084860312156131b5576131b4612b6f565b5b600084013567ffffffffffffffff8111156131d3576131d2612b74565b5b6131df86828701613146565b935093505060206131f286828701613098565b9150509250925092565b6000806040838503121561321357613212612b6f565b5b600061322185828601612c84565b925050602061323285828601612c84565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613272602083612d84565b915061327d8261323c565b602082019050919050565b600060208201905081810360008301526132a181613265565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061331182612e23565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613344576133436132d7565b5b600182019050919050565b600061335a82612e23565b915061336583612e23565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561339e5761339d6132d7565b5b828202905092915050565b7f4d757374206b656570206665657320617420313025206f72206c657373000000600082015250565b60006133df601d83612d84565b91506133ea826133a9565b602082019050919050565b6000602082019050818103600083015261340e816133d2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613471602683612d84565b915061347c82613415565b604082019050919050565b600060208201905081810360008301526134a081613464565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613503602483612d84565b915061350e826134a7565b604082019050919050565b60006020820190508181036000830152613532816134f6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613595602283612d84565b91506135a082613539565b604082019050919050565b600060208201905081810360008301526135c481613588565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613627602583612d84565b9150613632826135cb565b604082019050919050565b600060208201905081810360008301526136568161361a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006136b9602383612d84565b91506136c48261365d565b604082019050919050565b600060208201905081810360008301526136e8816136ac565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061374b602983612d84565b9150613756826136ef565b604082019050919050565b6000602082019050818103600083015261377a8161373e565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006137dd603f83612d84565b91506137e882613781565b604082019050919050565b6000602082019050818103600083015261380c816137d0565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613849601c83612d84565b915061385482613813565b602082019050919050565b600060208201905081810360008301526138788161383c565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b60006138db602383612d84565b91506138e68261387f565b604082019050919050565b6000602082019050818103600083015261390a816138ce565b9050919050565b600061391c82612e23565b915061392783612e23565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561395c5761395b6132d7565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006139c3602383612d84565b91506139ce82613967565b604082019050919050565b600060208201905081810360008301526139f2816139b6565b9050919050565b6000613a0482612e23565b9150613a0f83612e23565b925082821015613a2257613a216132d7565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613a89602a83612d84565b9150613a9482613a2d565b604082019050919050565b60006020820190508181036000830152613ab881613a7c565b9050919050565b600081519050613ace81612c6d565b92915050565b600060208284031215613aea57613ae9612b6f565b5b6000613af884828501613abf565b91505092915050565b6000819050919050565b6000613b26613b21613b1c84613b01565b612ecf565b612e23565b9050919050565b613b3681613b0b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b7181612c5b565b82525050565b6000613b838383613b68565b60208301905092915050565b6000602082019050919050565b6000613ba782613b3c565b613bb18185613b47565b9350613bbc83613b58565b8060005b83811015613bed578151613bd48882613b77565b9750613bdf83613b8f565b925050600181019050613bc0565b5085935050505092915050565b600060a082019050613c0f6000830188612f49565b613c1c6020830187613b2d565b8181036040830152613c2e8186613b9c565b9050613c3d606083018561302a565b613c4a6080830184612f49565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c8e82612e23565b9150613c9983612e23565b925082613ca957613ca8613c54565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613cea601b83612d84565b9150613cf582613cb4565b602082019050919050565b60006020820190508181036000830152613d1981613cdd565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d7c602183612d84565b9150613d8782613d20565b604082019050919050565b60006020820190508181036000830152613dab81613d6f565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c476997c861d0399e0c1cd10a0e2da52e67b2d8ace6e79e8d5e73644fd593f8f64736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101c55760003560e01c8063715018a6116100f757806398a5c31511610095578063c3c8cd8011610064578063c3c8cd801461063a578063c492f04614610651578063dd62ed3e1461067a578063f2fde38b146106b7576101cc565b806398a5c3151461056e578063a2a957bb14610597578063a9059cbb146105c0578063bfd79284146105fd576101cc565b80638da5cb5b116100d15780638da5cb5b146104c45780638f70ccf7146104ef5780638f9a55c01461051857806395d89b4114610543576101cc565b8063715018a6146104455780637d1db4a51461045c5780637f2feddc14610487576101cc565b80632fd689e3116101645780636b9990531161013e5780636b9990531461039f5780636d8aa8f8146103c85780636fc3eaec146103f157806370a0823114610408576101cc565b80632fd689e31461031e578063313ce5671461034957806349bd5a5e14610374576101cc565b80631694505e116101a05780631694505e1461026257806318160ddd1461028d578063203e727e146102b857806323b872dd146102e1576101cc565b8062b8cf2a146101d157806306fdde03146101fa578063095ea7b314610225576101cc565b366101cc57005b600080fd5b3480156101dd57600080fd5b506101f860048036038101906101f39190612d30565b6106e0565b005b34801561020657600080fd5b5061020f61080a565b60405161021c9190612e01565b60405180910390f35b34801561023157600080fd5b5061024c60048036038101906102479190612e59565b610847565b6040516102599190612eb4565b60405180910390f35b34801561026e57600080fd5b50610277610865565b6040516102849190612f2e565b60405180910390f35b34801561029957600080fd5b506102a261088b565b6040516102af9190612f58565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da9190612f73565b61089b565b005b3480156102ed57600080fd5b5061030860048036038101906103039190612fa0565b610949565b6040516103159190612eb4565b60405180910390f35b34801561032a57600080fd5b50610333610a22565b6040516103409190612f58565b60405180910390f35b34801561035557600080fd5b5061035e610a28565b60405161036b919061300f565b60405180910390f35b34801561038057600080fd5b50610389610a31565b6040516103969190613039565b60405180910390f35b3480156103ab57600080fd5b506103c660048036038101906103c19190613054565b610a57565b005b3480156103d457600080fd5b506103ef60048036038101906103ea91906130ad565b610b47565b005b3480156103fd57600080fd5b50610406610bf9565b005b34801561041457600080fd5b5061042f600480360381019061042a9190613054565b610cca565b60405161043c9190612f58565b60405180910390f35b34801561045157600080fd5b5061045a610d1b565b005b34801561046857600080fd5b50610471610e6e565b60405161047e9190612f58565b60405180910390f35b34801561049357600080fd5b506104ae60048036038101906104a99190613054565b610e74565b6040516104bb9190612f58565b60405180910390f35b3480156104d057600080fd5b506104d9610e8c565b6040516104e69190613039565b60405180910390f35b3480156104fb57600080fd5b50610516600480360381019061051191906130ad565b610eb5565b005b34801561052457600080fd5b5061052d610f67565b60405161053a9190612f58565b60405180910390f35b34801561054f57600080fd5b50610558610f6d565b6040516105659190612e01565b60405180910390f35b34801561057a57600080fd5b5061059560048036038101906105909190612f73565b610faa565b005b3480156105a357600080fd5b506105be60048036038101906105b991906130da565b611049565b005b3480156105cc57600080fd5b506105e760048036038101906105e29190612e59565b611188565b6040516105f49190612eb4565b60405180910390f35b34801561060957600080fd5b50610624600480360381019061061f9190613054565b6111a6565b6040516106319190612eb4565b60405180910390f35b34801561064657600080fd5b5061064f6111c6565b005b34801561065d57600080fd5b506106786004803603810190610673919061319c565b61129f565b005b34801561068657600080fd5b506106a1600480360381019061069c91906131fc565b6113d9565b6040516106ae9190612f58565b60405180910390f35b3480156106c357600080fd5b506106de60048036038101906106d99190613054565b611460565b005b6106e8611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076c90613288565b60405180910390fd5b60005b81518110156108065760016010600084848151811061079a576107996132a8565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806107fe90613306565b915050610778565b5050565b60606040518060400160405280600981526020017f5477697465746865720000000000000000000000000000000000000000000000815250905090565b600061085b610854611622565b848461162a565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b6108a3611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610930576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092790613288565b60405180910390fd5b633b9aca0081610940919061334f565b60168190555050565b60006109568484846117f5565b610a1784610962611622565b610a1285604051806060016040528060288152602001613db360289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109c8611622565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461207a9092919063ffffffff16565b61162a565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a5f611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae390613288565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b4f611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd390613288565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c3a611622565b73ffffffffffffffffffffffffffffffffffffffff161480610cb05750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c98611622565b73ffffffffffffffffffffffffffffffffffffffff16145b610cb957600080fd5b6000479050610cc7816120de565b50565b6000610d14600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461214a565b9050919050565b610d23611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610db0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da790613288565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ebd611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4190613288565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600281526020017f5445000000000000000000000000000000000000000000000000000000000000815250905090565b610fb2611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461103f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103690613288565b60405180910390fd5b8060188190555050565b611051611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d590613288565b60405180910390fd5b8360088190555082600a819055508160098190555080600b81905550600a82111561113e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611135906133f5565b60405180910390fd5b600a821115611182576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611179906133f5565b60405180910390fd5b50505050565b600061119c611195611622565b84846117f5565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611207611622565b73ffffffffffffffffffffffffffffffffffffffff16148061127d5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611265611622565b73ffffffffffffffffffffffffffffffffffffffff16145b61128657600080fd5b600061129130610cca565b905061129c816121b8565b50565b6112a7611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611334576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132b90613288565b60405180910390fd5b60005b838390508110156113d357816005600086868581811061135a576113596132a8565b5b905060200201602081019061136f9190613054565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806113cb90613306565b915050611337565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611468611622565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ec90613288565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611565576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155c90613487565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561169a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169190613519565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561170a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611701906135ab565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117e89190612f58565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185c9061363d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cc906136cf565b60405180910390fd5b60008111611918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190f90613761565b60405180910390fd5b611920610e8c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561198e575061195e610e8c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d7957601560149054906101000a900460ff16611a1d576119af610e8c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a13906137f3565b60405180910390fd5b5b601654811115611a62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a599061385f565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b065750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3c906138f1565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611bf25760175481611ba784610cca565b611bb19190613911565b10611bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be8906139d9565b60405180910390fd5b5b6000611bfd30610cca565b9050600060185482101590506016548210611c185760165491505b808015611c30575060158054906101000a900460ff16155b8015611c8a5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611ca25750601560169054906101000a900460ff165b8015611cf85750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d4e5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d7657611d5c826121b8565b60004790506000811115611d7457611d73476120de565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e205750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611ed35750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611ed25750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611ee15760009050612068565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f8c5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611fa457600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561204f5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561206757600a54600c81905550600b54600d819055505b5b6120748484848461243e565b50505050565b60008383111582906120c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b99190612e01565b60405180910390fd5b50600083856120d191906139f9565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612146573d6000803e3d6000fd5b5050565b6000600654821115612191576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218890613a9f565b60405180910390fd5b600061219b61246b565b90506121b0818461249690919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156121ef576121ee612b8f565b5b60405190808252806020026020018201604052801561221d5781602001602082028036833780820191505090505b5090503081600081518110612235576122346132a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156122d757600080fd5b505afa1580156122eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061230f9190613ad4565b81600181518110612323576123226132a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061238a30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461162a565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016123ee959493929190613bfa565b600060405180830381600087803b15801561240857600080fd5b505af115801561241c573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b8061244c5761244b6124e0565b5b612457848484612523565b80612465576124646126ee565b5b50505050565b6000806000612478612702565b9150915061248f818361249690919063ffffffff16565b9250505090565b60006124d883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612761565b905092915050565b6000600c541480156124f457506000600d54145b156124fe57612521565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612535876127c4565b95509550955095509550955061259386600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282c90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061262885600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461287690919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612674816128d4565b61267e8483612991565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126db9190612f58565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a76400009050612736670de0b6b3a764000060065461249690919063ffffffff16565b82101561275457600654670de0b6b3a764000093509350505061275d565b81819350935050505b9091565b600080831182906127a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279f9190612e01565b60405180910390fd5b50600083856127b79190613c83565b9050809150509392505050565b60008060008060008060008060006127e18a600c54600d546129cb565b92509250925060006127f161246b565b905060008060006128048e878787612a61565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061286e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061207a565b905092915050565b60008082846128859190613911565b9050838110156128ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c190613d00565b60405180910390fd5b8091505092915050565b60006128de61246b565b905060006128f58284612aea90919063ffffffff16565b905061294981600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461287690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6129a68260065461282c90919063ffffffff16565b6006819055506129c18160075461287690919063ffffffff16565b6007819055505050565b6000806000806129f760646129e9888a612aea90919063ffffffff16565b61249690919063ffffffff16565b90506000612a216064612a13888b612aea90919063ffffffff16565b61249690919063ffffffff16565b90506000612a4a82612a3c858c61282c90919063ffffffff16565b61282c90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a7a8589612aea90919063ffffffff16565b90506000612a918689612aea90919063ffffffff16565b90506000612aa88789612aea90919063ffffffff16565b90506000612ad182612ac3858761282c90919063ffffffff16565b61282c90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612afd5760009050612b5f565b60008284612b0b919061334f565b9050828482612b1a9190613c83565b14612b5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5190613d92565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612bc782612b7e565b810181811067ffffffffffffffff82111715612be657612be5612b8f565b5b80604052505050565b6000612bf9612b65565b9050612c058282612bbe565b919050565b600067ffffffffffffffff821115612c2557612c24612b8f565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c6682612c3b565b9050919050565b612c7681612c5b565b8114612c8157600080fd5b50565b600081359050612c9381612c6d565b92915050565b6000612cac612ca784612c0a565b612bef565b90508083825260208201905060208402830185811115612ccf57612cce612c36565b5b835b81811015612cf85780612ce48882612c84565b845260208401935050602081019050612cd1565b5050509392505050565b600082601f830112612d1757612d16612b79565b5b8135612d27848260208601612c99565b91505092915050565b600060208284031215612d4657612d45612b6f565b5b600082013567ffffffffffffffff811115612d6457612d63612b74565b5b612d7084828501612d02565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612db3578082015181840152602081019050612d98565b83811115612dc2576000848401525b50505050565b6000612dd382612d79565b612ddd8185612d84565b9350612ded818560208601612d95565b612df681612b7e565b840191505092915050565b60006020820190508181036000830152612e1b8184612dc8565b905092915050565b6000819050919050565b612e3681612e23565b8114612e4157600080fd5b50565b600081359050612e5381612e2d565b92915050565b60008060408385031215612e7057612e6f612b6f565b5b6000612e7e85828601612c84565b9250506020612e8f85828601612e44565b9150509250929050565b60008115159050919050565b612eae81612e99565b82525050565b6000602082019050612ec96000830184612ea5565b92915050565b6000819050919050565b6000612ef4612eef612eea84612c3b565b612ecf565b612c3b565b9050919050565b6000612f0682612ed9565b9050919050565b6000612f1882612efb565b9050919050565b612f2881612f0d565b82525050565b6000602082019050612f436000830184612f1f565b92915050565b612f5281612e23565b82525050565b6000602082019050612f6d6000830184612f49565b92915050565b600060208284031215612f8957612f88612b6f565b5b6000612f9784828501612e44565b91505092915050565b600080600060608486031215612fb957612fb8612b6f565b5b6000612fc786828701612c84565b9350506020612fd886828701612c84565b9250506040612fe986828701612e44565b9150509250925092565b600060ff82169050919050565b61300981612ff3565b82525050565b60006020820190506130246000830184613000565b92915050565b61303381612c5b565b82525050565b600060208201905061304e600083018461302a565b92915050565b60006020828403121561306a57613069612b6f565b5b600061307884828501612c84565b91505092915050565b61308a81612e99565b811461309557600080fd5b50565b6000813590506130a781613081565b92915050565b6000602082840312156130c3576130c2612b6f565b5b60006130d184828501613098565b91505092915050565b600080600080608085870312156130f4576130f3612b6f565b5b600061310287828801612e44565b945050602061311387828801612e44565b935050604061312487828801612e44565b925050606061313587828801612e44565b91505092959194509250565b600080fd5b60008083601f84011261315c5761315b612b79565b5b8235905067ffffffffffffffff81111561317957613178613141565b5b60208301915083602082028301111561319557613194612c36565b5b9250929050565b6000806000604084860312156131b5576131b4612b6f565b5b600084013567ffffffffffffffff8111156131d3576131d2612b74565b5b6131df86828701613146565b935093505060206131f286828701613098565b9150509250925092565b6000806040838503121561321357613212612b6f565b5b600061322185828601612c84565b925050602061323285828601612c84565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613272602083612d84565b915061327d8261323c565b602082019050919050565b600060208201905081810360008301526132a181613265565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061331182612e23565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613344576133436132d7565b5b600182019050919050565b600061335a82612e23565b915061336583612e23565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561339e5761339d6132d7565b5b828202905092915050565b7f4d757374206b656570206665657320617420313025206f72206c657373000000600082015250565b60006133df601d83612d84565b91506133ea826133a9565b602082019050919050565b6000602082019050818103600083015261340e816133d2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613471602683612d84565b915061347c82613415565b604082019050919050565b600060208201905081810360008301526134a081613464565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613503602483612d84565b915061350e826134a7565b604082019050919050565b60006020820190508181036000830152613532816134f6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613595602283612d84565b91506135a082613539565b604082019050919050565b600060208201905081810360008301526135c481613588565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613627602583612d84565b9150613632826135cb565b604082019050919050565b600060208201905081810360008301526136568161361a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006136b9602383612d84565b91506136c48261365d565b604082019050919050565b600060208201905081810360008301526136e8816136ac565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061374b602983612d84565b9150613756826136ef565b604082019050919050565b6000602082019050818103600083015261377a8161373e565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006137dd603f83612d84565b91506137e882613781565b604082019050919050565b6000602082019050818103600083015261380c816137d0565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613849601c83612d84565b915061385482613813565b602082019050919050565b600060208201905081810360008301526138788161383c565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b60006138db602383612d84565b91506138e68261387f565b604082019050919050565b6000602082019050818103600083015261390a816138ce565b9050919050565b600061391c82612e23565b915061392783612e23565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561395c5761395b6132d7565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006139c3602383612d84565b91506139ce82613967565b604082019050919050565b600060208201905081810360008301526139f2816139b6565b9050919050565b6000613a0482612e23565b9150613a0f83612e23565b925082821015613a2257613a216132d7565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613a89602a83612d84565b9150613a9482613a2d565b604082019050919050565b60006020820190508181036000830152613ab881613a7c565b9050919050565b600081519050613ace81612c6d565b92915050565b600060208284031215613aea57613ae9612b6f565b5b6000613af884828501613abf565b91505092915050565b6000819050919050565b6000613b26613b21613b1c84613b01565b612ecf565b612e23565b9050919050565b613b3681613b0b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b7181612c5b565b82525050565b6000613b838383613b68565b60208301905092915050565b6000602082019050919050565b6000613ba782613b3c565b613bb18185613b47565b9350613bbc83613b58565b8060005b83811015613bed578151613bd48882613b77565b9750613bdf83613b8f565b925050600181019050613bc0565b5085935050505092915050565b600060a082019050613c0f6000830188612f49565b613c1c6020830187613b2d565b8181036040830152613c2e8186613b9c565b9050613c3d606083018561302a565b613c4a6080830184612f49565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c8e82612e23565b9150613c9983612e23565b925082613ca957613ca8613c54565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613cea601b83612d84565b9150613cf582613cb4565b602082019050919050565b60006020820190508181036000830152613d1981613cdd565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d7c602183612d84565b9150613d8782613d20565b604082019050919050565b60006020820190508181036000830152613dab81613d6f565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c476997c861d0399e0c1cd10a0e2da52e67b2d8ace6e79e8d5e73644fd593f8f64736f6c63430008090033

Deployed Bytecode Sourcemap

4071:13508:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12734:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6562:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7487:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5412:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6839:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13012:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7688:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5710:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6748:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5460:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12911:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17229:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12491:235;;;;;;;;;;;;;:::i;:::-;;6942:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1558:148;;;;;;;;;;;;;:::i;:::-;;5602:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5154:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1344:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12138:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5655:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6653:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17038:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16531:455;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7088:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5116:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12247:236;;;;;;;;;;;;;:::i;:::-;;17340:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7295:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1714:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12734:169;1481:12;:10;:12::i;:::-;1471:22;;:6;;;;;;;;;;:22;;;1463:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12810:9:::1;12805:91;12829:5;:12;12825:1;:16;12805:91;;;12880:4;12863;:14;12868:5;12874:1;12868:8;;;;;;;;:::i;:::-;;;;;;;;12863:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12843:3;;;;;:::i;:::-;;;;12805:91;;;;12734:169:::0;:::o;6562:83::-;6599:13;6632:5;;;;;;;;;;;;;;;;;6625:12;;6562:83;:::o;7487:193::-;7589:4;7611:39;7620:12;:10;:12::i;:::-;7634:7;7643:6;7611:8;:39::i;:::-;7668:4;7661:11;;7487:193;;;;:::o;5412:41::-;;;;;;;;;;;;;:::o;6839:95::-;6892:7;4618:18;6912:14;;6839:95;:::o;13012:113::-;1481:12;:10;:12::i;:::-;1471:22;;:6;;;;;;;;;;:22;;;1463:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13111:5:::1;13101:6;:16;;;;:::i;:::-;13086:12;:31;;;;13012:113:::0;:::o;7688:446::-;7820:4;7837:36;7847:6;7855:9;7866:6;7837:9;:36::i;:::-;7884:220;7907:6;7928:12;:10;:12::i;:::-;7955:138;8011:6;7955:138;;;;;;;;;;;;;;;;;:11;:19;7967:6;7955:19;;;;;;;;;;;;;;;:33;7975:12;:10;:12::i;:::-;7955:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7884:8;:220::i;:::-;8122:4;8115:11;;7688:446;;;;;:::o;5710:50::-;;;;:::o;6748:83::-;6789:5;4292:1;6807:16;;6748:83;:::o;5460:28::-;;;;;;;;;;;;;:::o;12911:92::-;1481:12;:10;:12::i;:::-;1471:22;;:6;;;;;;;;;;:22;;;1463:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12990:5:::1;12975:4;:12;12980:6;12975:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;12911:92:::0;:::o;17229:101::-;1481:12;:10;:12::i;:::-;1471:22;;:6;;;;;;;;;;:22;;;1463:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17310:12:::1;17296:11;;:26;;;;;;;;;;;;;;;;;;17229:101:::0;:::o;12491:235::-;12557:19;;;;;;;;;;;12541:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12596:17;;;;;;;;;;;12580:33;;:12;:10;:12::i;:::-;:33;;;12541:72;12533:81;;;;;;12625:26;12654:21;12625:50;;12686:32;12699:18;12686:12;:32::i;:::-;12522:204;12491:235::o;6942:138::-;7008:7;7035:37;7055:7;:16;7063:7;7055:16;;;;;;;;;;;;;;;;7035:19;:37::i;:::-;7028:44;;6942:138;;;:::o;1558:148::-;1481:12;:10;:12::i;:::-;1471:22;;:6;;;;;;;;;;:22;;;1463:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1665:1:::1;1628:40;;1649:6;::::0;::::1;;;;;;;;1628:40;;;;;;;;;;;;1696:1;1679:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1558:148::o:0;5602:46::-;;;;:::o;5154:43::-;;;;;;;;;;;;;;;;;:::o;1344:79::-;1382:7;1409:6;;;;;;;;;;;1402:13;;1344:79;:::o;12138:101::-;1481:12;:10;:12::i;:::-;1471:22;;:6;;;;;;;;;;:22;;;1463:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12219:12:::1;12205:11;;:26;;;;;;;;;;;;;;;;;;12138:101:::0;:::o;5655:48::-;;;;:::o;6653:87::-;6692:13;6725:7;;;;;;;;;;;;;;;;;6718:14;;6653:87;:::o;17038:139::-;1481:12;:10;:12::i;:::-;1471:22;;:6;;;;;;;;;;:22;;;1463:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17151:18:::1;17129:19;:40;;;;17038:139:::0;:::o;16531:455::-;1481:12;:10;:12::i;:::-;1471:22;;:6;;;;;;;;;;:22;;;1463:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16682:13:::1;16665:14;:30;;;;16724:14;16706:15;:32;;;;16764:11;16749:12;:26;;;;16802:12;16786:13;:28;;;;16860:2;16845:11;:17;;16837:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;16931:2;16916:11;:17;;16908:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;16531:455:::0;;;;:::o;7088:199::-;7193:4;7215:42;7225:12;:10;:12::i;:::-;7239:9;7250:6;7215:9;:42::i;:::-;7275:4;7268:11;;7088:199;;;;:::o;5116:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12247:236::-;12313:19;;;;;;;;;;;12297:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12352:17;;;;;;;;;;;12336:33;;:12;:10;:12::i;:::-;:33;;;12297:72;12289:81;;;;;;12381:23;12407:24;12425:4;12407:9;:24::i;:::-;12381:50;;12442:33;12459:15;12442:16;:33::i;:::-;12278:205;12247:236::o;17340:234::-;1481:12;:10;:12::i;:::-;1471:22;;:6;;;;;;;;;;:22;;;1463:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17457:9:::1;17453:114;17476:8;;:15;;17472:1;:19;17453:114;;;17547:8;17513:18;:31;17532:8;;17541:1;17532:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17513:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17493:3;;;;;:::i;:::-;;;;17453:114;;;;17340:234:::0;;;:::o;7295:184::-;7412:7;7444:11;:18;7456:5;7444:18;;;;;;;;;;;;;;;:27;7463:7;7444:27;;;;;;;;;;;;;;;;7437:34;;7295:184;;;;:::o;1714:244::-;1481:12;:10;:12::i;:::-;1471:22;;:6;;;;;;;;;;:22;;;1463:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1823:1:::1;1803:22;;:8;:22;;;;1795:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1913:8;1884:38;;1905:6;::::0;::::1;;;;;;;;1884:38;;;;;;;;;;;;1942:8;1933:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1714:244:::0;:::o;103:98::-;156:7;183:10;176:17;;103:98;:::o;8825:369::-;8969:1;8952:19;;:5;:19;;;;8944:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9050:1;9031:21;;:7;:21;;;;9023:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9132:6;9102:11;:18;9114:5;9102:18;;;;;;;;;;;;;;;:27;9121:7;9102:27;;;;;;;;;;;;;;;:36;;;;9170:7;9154:32;;9163:5;9154:32;;;9179:6;9154:32;;;;;;:::i;:::-;;;;;;;;8825:369;;;:::o;9202:2330::-;9340:1;9324:18;;:4;:18;;;;9316:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9417:1;9403:16;;:2;:16;;;;9395:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9487:1;9478:6;:10;9470:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9559:7;:5;:7::i;:::-;9551:15;;:4;:15;;;;:32;;;;;9576:7;:5;:7::i;:::-;9570:13;;:2;:13;;;;9551:32;9547:1259;;;9640:11;;;;;;;;;;;9635:144;;9688:7;:5;:7::i;:::-;9680:15;;:4;:15;;;9672:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9635:144;9813:12;;9803:6;:22;;9795:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9882:4;:10;9887:4;9882:10;;;;;;;;;;;;;;;;;;;;;;;;;9881:11;:24;;;;;9897:4;:8;9902:2;9897:8;;;;;;;;;;;;;;;;;;;;;;;;;9896:9;9881:24;9873:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;9971:13;;;;;;;;;;;9965:19;;:2;:19;;;9962:146;;10038:14;;10029:6;10013:13;10023:2;10013:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10005:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;9962:146;10124:28;10155:24;10173:4;10155:9;:24::i;:::-;10124:55;;10194:12;10233:19;;10209:20;:43;;10194:58;;10296:12;;10272:20;:36;10269:124;;10365:12;;10342:35;;10269:124;10413:7;:18;;;;;10425:6;;;;;;;;;;10424:7;10413:18;:43;;;;;10443:13;;;;;;;;;;;10435:21;;:4;:21;;;;10413:43;:58;;;;;10460:11;;;;;;;;;;;10413:58;:87;;;;;10476:18;:24;10495:4;10476:24;;;;;;;;;;;;;;;;;;;;;;;;;10475:25;10413:87;:114;;;;;10505:18;:22;10524:2;10505:22;;;;;;;;;;;;;;;;;;;;;;;;;10504:23;10413:114;10409:386;;;10548:38;10565:20;10548:16;:38::i;:::-;10605:26;10634:21;10605:50;;10699:1;10678:18;:22;10674:106;;;10725:35;10738:21;10725:12;:35::i;:::-;10674:106;10529:266;10409:386;9585:1221;;9547:1259;10818:12;10833:4;10818:19;;10882:18;:24;10901:4;10882:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10910:18;:22;10929:2;10910:22;;;;;;;;;;;;;;;;;;;;;;;;;10882:50;10881:102;;;;10946:13;;;;;;;;;;;10938:21;;:4;:21;;;;:44;;;;;10969:13;;;;;;;;;;;10963:19;;:2;:19;;;;10938:44;10881:102;10877:594;;;11010:5;11000:15;;10877:594;;;11093:13;;;;;;;;;;;11085:21;;:4;:21;;;:55;;;;;11124:15;;;;;;;;;;;11110:30;;:2;:30;;;;11085:55;11082:162;;;11173:14;;11161:9;:26;;;;11216:12;;11206:7;:22;;;;11082:162;11303:13;;;;;;;;;;;11297:19;;:2;:19;;;:55;;;;;11336:15;;;;;;;;;;;11320:32;;:4;:32;;;;11297:55;11293:165;;;11385:15;;11373:9;:27;;;;11429:13;;11419:7;:23;;;;11293:165;10877:594;11483:41;11498:4;11504:2;11508:6;11516:7;11483:14;:41::i;:::-;9305:2227;9202:2330;;;:::o;2322:224::-;2442:7;2475:1;2470;:6;;2478:12;2462:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2502:9;2518:1;2514;:5;;;;:::i;:::-;2502:17;;2537:1;2530:8;;;2322:224;;;;;:::o;12031:99::-;12088:17;;;;;;;;;;;:26;;:34;12115:6;12088:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12031:99;:::o;8142:323::-;8237:7;8295;;8284;:18;;8262:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8383:19;8405:10;:8;:10::i;:::-;8383:32;;8433:24;8445:11;8433:7;:11;;:24;;;;:::i;:::-;8426:31;;;8142:323;;;:::o;11540:483::-;5863:4;5854:6;;:13;;;;;;;;;;;;;;;;;;11618:21:::1;11656:1;11642:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11618:40;;11687:4;11669;11674:1;11669:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11713:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11703:4;11708:1;11703:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11746:62;11763:4;11778:15;;;;;;;;;;;11796:11;11746:8;:62::i;:::-;11819:15;;;;;;;;;;;:66;;;11900:11;11926:1;11942:4;11969;11989:15;11819:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11607:416;5899:5:::0;5890:6;;:14;;;;;;;;;;;;;;;;;;11540:483;:::o;13133:282::-;13289:7;13284:28;;13298:14;:12;:14::i;:::-;13284:28;13323:44;13341:6;13349:9;13360:6;13323:17;:44::i;:::-;13383:7;13378:29;;13392:15;:13;:15::i;:::-;13378:29;13133:282;;;;:::o;16094:164::-;16136:7;16157:15;16174;16193:19;:17;:19::i;:::-;16156:56;;;;16230:20;16242:7;16230;:11;;:20;;;;:::i;:::-;16223:27;;;;16094:164;:::o;2808:132::-;2866:7;2893:39;2897:1;2900;2893:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2886:46;;2808:132;;;;:::o;8473:219::-;8533:1;8520:9;;:14;:30;;;;;8549:1;8538:7;;:12;8520:30;8516:43;;;8552:7;;8516:43;8591:9;;8571:17;:29;;;;8629:7;;8611:15;:25;;;;8661:1;8649:9;:13;;;;8683:1;8673:7;:11;;;;8473:219;:::o;13423:610::-;13570:15;13600:23;13638:12;13665:23;13703:12;13730:13;13757:19;13768:7;13757:10;:19::i;:::-;13555:221;;;;;;;;;;;;13805:28;13825:7;13805;:15;13813:6;13805:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13787:7;:15;13795:6;13787:15;;;;;;;;;;;;;;;:46;;;;13865:39;13888:15;13865:7;:18;13873:9;13865:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13844:7;:18;13852:9;13844:18;;;;;;;;;;;;;;;:60;;;;13915:16;13925:5;13915:9;:16::i;:::-;13942:23;13954:4;13960;13942:11;:23::i;:::-;13998:9;13981:44;;13990:6;13981:44;;;14009:15;13981:44;;;;;;:::i;:::-;;;;;;;;13544:489;;;;;;13423:610;;;:::o;8700:117::-;8756:17;;8744:9;:29;;;;8794:15;;8784:7;:25;;;;8700:117::o;16266:257::-;16317:7;16326;16346:15;16364:7;;16346:25;;16382:15;4618:18;16382:25;;16432:20;4618:18;16432:7;;:11;;:20;;;;:::i;:::-;16422:7;:30;16418:61;;;16462:7;;4618:18;16454:25;;;;;;;;16418:61;16498:7;16507;16490:25;;;;;;16266:257;;;:::o;2948:223::-;3068:7;3100:1;3096;:5;3103:12;3088:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3127:9;3143:1;3139;:5;;;;:::i;:::-;3127:17;;3162:1;3155:8;;;2948:223;;;;;:::o;14452:615::-;14552:7;14574;14596;14618;14640;14662;14698:23;14723:12;14737:13;14767:40;14779:7;14788:9;;14799:7;;14767:11;:40::i;:::-;14697:110;;;;;;14818:19;14840:10;:8;:10::i;:::-;14818:32;;14862:15;14879:23;14904:12;14933:46;14945:7;14954:4;14960:5;14967:11;14933;:46::i;:::-;14861:118;;;;;;14998:7;15007:15;15024:4;15030:15;15047:4;15053:5;14990:69;;;;;;;;;;;;;;;;;;;14452:615;;;;;;;:::o;2178:136::-;2236:7;2263:43;2267:1;2270;2263:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2256:50;;2178:136;;;;:::o;1991:179::-;2049:7;2069:9;2085:1;2081;:5;;;;:::i;:::-;2069:17;;2110:1;2105;:6;;2097:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2161:1;2154:8;;;1991:179;;;;:::o;14041:211::-;14094:19;14116:10;:8;:10::i;:::-;14094:32;;14137:13;14153:22;14163:11;14153:5;:9;;:22;;;;:::i;:::-;14137:38;;14211:33;14238:5;14211:7;:22;14227:4;14211:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14186:7;:22;14202:4;14186:22;;;;;;;;;;;;;;;:58;;;;14083:169;;14041:211;:::o;14260:147::-;14338:17;14350:4;14338:7;;:11;;:17;;;;:::i;:::-;14328:7;:27;;;;14379:20;14394:4;14379:10;;:14;;:20;;;;:::i;:::-;14366:10;:33;;;;14260:147;;:::o;15075:469::-;15244:7;15266;15288;15323:12;15338:30;15364:3;15338:21;15350:8;15338:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15323:45;;15379:13;15395:28;15419:3;15395:19;15407:6;15395:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15379:44;;15434:23;15460:28;15482:5;15460:17;15472:4;15460:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15434:54;;15507:15;15524:4;15530:5;15499:37;;;;;;;;;15075:469;;;;;;;:::o;15552:534::-;15746:7;15768;15790;15825:15;15843:24;15855:11;15843:7;:11;;:24;;;;:::i;:::-;15825:42;;15878:12;15893:21;15902:11;15893:4;:8;;:21;;;;:::i;:::-;15878:36;;15925:13;15941:22;15951:11;15941:5;:9;;:22;;;;:::i;:::-;15925:38;;15974:23;16000:28;16022:5;16000:17;16012:4;16000:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15974:54;;16047:7;16056:15;16073:4;16039:39;;;;;;;;;;15552:534;;;;;;;;:::o;2554:246::-;2612:7;2641:1;2636;:6;2632:47;;;2666:1;2659:8;;;;2632:47;2689:9;2705:1;2701;:5;;;;:::i;:::-;2689:17;;2734:1;2729;2725;:5;;;;:::i;:::-;:10;2717:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2791:1;2784:8;;;2554: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:329::-;7720:6;7769:2;7757:9;7748:7;7744:23;7740:32;7737:119;;;7775:79;;:::i;:::-;7737:119;7895:1;7920:53;7965:7;7956:6;7945:9;7941:22;7920:53;:::i;:::-;7910:63;;7866:117;7661:329;;;;:::o;7996:619::-;8073:6;8081;8089;8138:2;8126:9;8117:7;8113:23;8109:32;8106:119;;;8144:79;;:::i;:::-;8106:119;8264:1;8289:53;8334:7;8325:6;8314:9;8310:22;8289:53;:::i;:::-;8279:63;;8235:117;8391:2;8417:53;8462:7;8453:6;8442:9;8438:22;8417:53;:::i;:::-;8407:63;;8362:118;8519:2;8545:53;8590:7;8581:6;8570:9;8566:22;8545:53;:::i;:::-;8535:63;;8490:118;7996:619;;;;;:::o;8621:86::-;8656:7;8696:4;8689:5;8685:16;8674:27;;8621:86;;;:::o;8713:112::-;8796:22;8812:5;8796:22;:::i;:::-;8791:3;8784:35;8713:112;;:::o;8831:214::-;8920:4;8958:2;8947:9;8943:18;8935:26;;8971:67;9035:1;9024:9;9020:17;9011:6;8971:67;:::i;:::-;8831:214;;;;:::o;9051:118::-;9138:24;9156:5;9138:24;:::i;:::-;9133:3;9126:37;9051:118;;:::o;9175:222::-;9268:4;9306:2;9295:9;9291:18;9283:26;;9319:71;9387:1;9376:9;9372:17;9363:6;9319:71;:::i;:::-;9175:222;;;;:::o;9403:329::-;9462:6;9511:2;9499:9;9490:7;9486:23;9482:32;9479:119;;;9517:79;;:::i;:::-;9479:119;9637:1;9662:53;9707:7;9698:6;9687:9;9683:22;9662:53;:::i;:::-;9652:63;;9608:117;9403:329;;;;:::o;9738:116::-;9808:21;9823:5;9808:21;:::i;:::-;9801:5;9798:32;9788:60;;9844:1;9841;9834:12;9788:60;9738:116;:::o;9860:133::-;9903:5;9941:6;9928:20;9919:29;;9957:30;9981:5;9957:30;:::i;:::-;9860:133;;;;:::o;9999:323::-;10055:6;10104:2;10092:9;10083:7;10079:23;10075:32;10072:119;;;10110:79;;:::i;:::-;10072:119;10230:1;10255:50;10297:7;10288:6;10277:9;10273:22;10255:50;:::i;:::-;10245:60;;10201:114;9999:323;;;;:::o;10328:765::-;10414:6;10422;10430;10438;10487:3;10475:9;10466:7;10462:23;10458:33;10455:120;;;10494:79;;:::i;:::-;10455:120;10614:1;10639:53;10684:7;10675:6;10664:9;10660:22;10639:53;:::i;:::-;10629:63;;10585:117;10741:2;10767:53;10812:7;10803:6;10792:9;10788:22;10767:53;:::i;:::-;10757:63;;10712:118;10869:2;10895:53;10940:7;10931:6;10920:9;10916:22;10895:53;:::i;:::-;10885:63;;10840:118;10997:2;11023:53;11068:7;11059:6;11048:9;11044:22;11023:53;:::i;:::-;11013:63;;10968:118;10328:765;;;;;;;:::o;11099:117::-;11208:1;11205;11198:12;11239:568;11312:8;11322:6;11372:3;11365:4;11357:6;11353:17;11349:27;11339:122;;11380:79;;:::i;:::-;11339:122;11493:6;11480:20;11470:30;;11523:18;11515:6;11512:30;11509:117;;;11545:79;;:::i;:::-;11509:117;11659:4;11651:6;11647:17;11635:29;;11713:3;11705:4;11697:6;11693:17;11683:8;11679:32;11676:41;11673:128;;;11720:79;;:::i;:::-;11673:128;11239:568;;;;;:::o;11813:698::-;11905:6;11913;11921;11970:2;11958:9;11949:7;11945:23;11941:32;11938:119;;;11976:79;;:::i;:::-;11938:119;12124:1;12113:9;12109:17;12096:31;12154:18;12146:6;12143:30;12140:117;;;12176:79;;:::i;:::-;12140:117;12289:80;12361:7;12352:6;12341:9;12337:22;12289:80;:::i;:::-;12271:98;;;;12067:312;12418:2;12444:50;12486:7;12477:6;12466:9;12462:22;12444:50;:::i;:::-;12434:60;;12389:115;11813:698;;;;;:::o;12517:474::-;12585:6;12593;12642:2;12630:9;12621:7;12617:23;12613:32;12610:119;;;12648:79;;:::i;:::-;12610:119;12768:1;12793:53;12838:7;12829:6;12818:9;12814:22;12793:53;:::i;:::-;12783:63;;12739:117;12895:2;12921:53;12966:7;12957:6;12946:9;12942:22;12921:53;:::i;:::-;12911:63;;12866:118;12517:474;;;;;:::o;12997:182::-;13137:34;13133:1;13125:6;13121:14;13114:58;12997:182;:::o;13185:366::-;13327:3;13348:67;13412:2;13407:3;13348:67;:::i;:::-;13341:74;;13424:93;13513:3;13424:93;:::i;:::-;13542:2;13537:3;13533:12;13526:19;;13185:366;;;:::o;13557:419::-;13723:4;13761:2;13750:9;13746:18;13738:26;;13810:9;13804:4;13800:20;13796:1;13785:9;13781:17;13774:47;13838:131;13964:4;13838:131;:::i;:::-;13830:139;;13557:419;;;:::o;13982:180::-;14030:77;14027:1;14020:88;14127:4;14124:1;14117:15;14151:4;14148:1;14141:15;14168:180;14216:77;14213:1;14206:88;14313:4;14310:1;14303:15;14337:4;14334:1;14327:15;14354:233;14393:3;14416:24;14434:5;14416:24;:::i;:::-;14407:33;;14462:66;14455:5;14452:77;14449:103;;;14532:18;;:::i;:::-;14449:103;14579:1;14572:5;14568:13;14561:20;;14354:233;;;:::o;14593:348::-;14633:7;14656:20;14674:1;14656:20;:::i;:::-;14651:25;;14690:20;14708:1;14690:20;:::i;:::-;14685:25;;14878:1;14810:66;14806:74;14803:1;14800:81;14795:1;14788:9;14781:17;14777:105;14774:131;;;14885:18;;:::i;:::-;14774:131;14933:1;14930;14926:9;14915:20;;14593:348;;;;:::o;14947:179::-;15087:31;15083:1;15075:6;15071:14;15064:55;14947:179;:::o;15132:366::-;15274:3;15295:67;15359:2;15354:3;15295:67;:::i;:::-;15288:74;;15371:93;15460:3;15371:93;:::i;:::-;15489:2;15484:3;15480:12;15473:19;;15132:366;;;:::o;15504:419::-;15670:4;15708:2;15697:9;15693:18;15685:26;;15757:9;15751:4;15747:20;15743:1;15732:9;15728:17;15721:47;15785:131;15911:4;15785:131;:::i;:::-;15777:139;;15504:419;;;:::o;15929:225::-;16069:34;16065:1;16057:6;16053:14;16046:58;16138:8;16133:2;16125:6;16121:15;16114:33;15929:225;:::o;16160:366::-;16302:3;16323:67;16387:2;16382:3;16323:67;:::i;:::-;16316:74;;16399:93;16488:3;16399:93;:::i;:::-;16517:2;16512:3;16508:12;16501:19;;16160:366;;;:::o;16532:419::-;16698:4;16736:2;16725:9;16721:18;16713:26;;16785:9;16779:4;16775:20;16771:1;16760:9;16756:17;16749:47;16813:131;16939:4;16813:131;:::i;:::-;16805:139;;16532:419;;;:::o;16957:223::-;17097:34;17093:1;17085:6;17081:14;17074:58;17166:6;17161:2;17153:6;17149:15;17142:31;16957:223;:::o;17186:366::-;17328:3;17349:67;17413:2;17408:3;17349:67;:::i;:::-;17342:74;;17425:93;17514:3;17425:93;:::i;:::-;17543:2;17538:3;17534:12;17527:19;;17186:366;;;:::o;17558:419::-;17724:4;17762:2;17751:9;17747:18;17739:26;;17811:9;17805:4;17801:20;17797:1;17786:9;17782:17;17775:47;17839:131;17965:4;17839:131;:::i;:::-;17831:139;;17558:419;;;:::o;17983:221::-;18123:34;18119:1;18111:6;18107:14;18100:58;18192:4;18187:2;18179:6;18175:15;18168:29;17983:221;:::o;18210:366::-;18352:3;18373:67;18437:2;18432:3;18373:67;:::i;:::-;18366:74;;18449:93;18538:3;18449:93;:::i;:::-;18567:2;18562:3;18558:12;18551:19;;18210:366;;;:::o;18582:419::-;18748:4;18786:2;18775:9;18771:18;18763:26;;18835:9;18829:4;18825:20;18821:1;18810:9;18806:17;18799:47;18863:131;18989:4;18863:131;:::i;:::-;18855:139;;18582:419;;;:::o;19007:224::-;19147:34;19143:1;19135:6;19131:14;19124:58;19216:7;19211:2;19203:6;19199:15;19192:32;19007:224;:::o;19237:366::-;19379:3;19400:67;19464:2;19459:3;19400:67;:::i;:::-;19393:74;;19476:93;19565:3;19476:93;:::i;:::-;19594:2;19589:3;19585:12;19578:19;;19237:366;;;:::o;19609:419::-;19775:4;19813:2;19802:9;19798:18;19790:26;;19862:9;19856:4;19852:20;19848:1;19837:9;19833:17;19826:47;19890:131;20016:4;19890:131;:::i;:::-;19882:139;;19609:419;;;:::o;20034:222::-;20174:34;20170:1;20162:6;20158:14;20151:58;20243:5;20238:2;20230:6;20226:15;20219:30;20034:222;:::o;20262:366::-;20404:3;20425:67;20489:2;20484:3;20425:67;:::i;:::-;20418:74;;20501:93;20590:3;20501:93;:::i;:::-;20619:2;20614:3;20610:12;20603:19;;20262:366;;;:::o;20634:419::-;20800:4;20838:2;20827:9;20823:18;20815:26;;20887:9;20881:4;20877:20;20873:1;20862:9;20858:17;20851:47;20915:131;21041:4;20915:131;:::i;:::-;20907:139;;20634:419;;;:::o;21059:228::-;21199:34;21195:1;21187:6;21183:14;21176:58;21268:11;21263:2;21255:6;21251:15;21244:36;21059:228;:::o;21293:366::-;21435:3;21456:67;21520:2;21515:3;21456:67;:::i;:::-;21449:74;;21532:93;21621:3;21532:93;:::i;:::-;21650:2;21645:3;21641:12;21634:19;;21293:366;;;:::o;21665:419::-;21831:4;21869:2;21858:9;21854:18;21846:26;;21918:9;21912:4;21908:20;21904:1;21893:9;21889:17;21882:47;21946:131;22072:4;21946:131;:::i;:::-;21938:139;;21665:419;;;:::o;22090:250::-;22230:34;22226:1;22218:6;22214:14;22207:58;22299:33;22294:2;22286:6;22282:15;22275:58;22090:250;:::o;22346:366::-;22488:3;22509:67;22573:2;22568:3;22509:67;:::i;:::-;22502:74;;22585:93;22674:3;22585:93;:::i;:::-;22703:2;22698:3;22694:12;22687:19;;22346:366;;;:::o;22718:419::-;22884:4;22922:2;22911:9;22907:18;22899:26;;22971:9;22965:4;22961:20;22957:1;22946:9;22942:17;22935:47;22999:131;23125:4;22999:131;:::i;:::-;22991:139;;22718:419;;;:::o;23143:178::-;23283:30;23279:1;23271:6;23267:14;23260:54;23143:178;:::o;23327:366::-;23469:3;23490:67;23554:2;23549:3;23490:67;:::i;:::-;23483:74;;23566:93;23655:3;23566:93;:::i;:::-;23684:2;23679:3;23675:12;23668:19;;23327:366;;;:::o;23699:419::-;23865:4;23903:2;23892:9;23888:18;23880:26;;23952:9;23946:4;23942:20;23938:1;23927:9;23923:17;23916:47;23980:131;24106:4;23980:131;:::i;:::-;23972:139;;23699:419;;;:::o;24124:222::-;24264:34;24260:1;24252:6;24248:14;24241:58;24333:5;24328:2;24320:6;24316:15;24309:30;24124:222;:::o;24352:366::-;24494:3;24515:67;24579:2;24574:3;24515:67;:::i;:::-;24508:74;;24591:93;24680:3;24591:93;:::i;:::-;24709:2;24704:3;24700:12;24693:19;;24352:366;;;:::o;24724:419::-;24890:4;24928:2;24917:9;24913:18;24905:26;;24977:9;24971:4;24967:20;24963:1;24952:9;24948:17;24941:47;25005:131;25131:4;25005:131;:::i;:::-;24997:139;;24724:419;;;:::o;25149:305::-;25189:3;25208:20;25226:1;25208:20;:::i;:::-;25203:25;;25242:20;25260:1;25242:20;:::i;:::-;25237:25;;25396:1;25328:66;25324:74;25321:1;25318:81;25315:107;;;25402:18;;:::i;:::-;25315:107;25446:1;25443;25439:9;25432:16;;25149:305;;;;:::o;25460:222::-;25600:34;25596:1;25588:6;25584:14;25577:58;25669:5;25664:2;25656:6;25652:15;25645:30;25460:222;:::o;25688:366::-;25830:3;25851:67;25915:2;25910:3;25851:67;:::i;:::-;25844:74;;25927:93;26016:3;25927:93;:::i;:::-;26045:2;26040:3;26036:12;26029:19;;25688:366;;;:::o;26060:419::-;26226:4;26264:2;26253:9;26249:18;26241:26;;26313:9;26307:4;26303:20;26299:1;26288:9;26284:17;26277:47;26341:131;26467:4;26341:131;:::i;:::-;26333:139;;26060:419;;;:::o;26485:191::-;26525:4;26545:20;26563:1;26545:20;:::i;:::-;26540:25;;26579:20;26597:1;26579:20;:::i;:::-;26574:25;;26618:1;26615;26612:8;26609:34;;;26623:18;;:::i;:::-;26609:34;26668:1;26665;26661:9;26653:17;;26485:191;;;;:::o;26682:229::-;26822:34;26818:1;26810:6;26806:14;26799:58;26891:12;26886:2;26878:6;26874:15;26867:37;26682:229;:::o;26917:366::-;27059:3;27080:67;27144:2;27139:3;27080:67;:::i;:::-;27073:74;;27156:93;27245:3;27156:93;:::i;:::-;27274:2;27269:3;27265:12;27258:19;;26917:366;;;:::o;27289:419::-;27455:4;27493:2;27482:9;27478:18;27470:26;;27542:9;27536:4;27532:20;27528:1;27517:9;27513:17;27506:47;27570:131;27696:4;27570:131;:::i;:::-;27562:139;;27289:419;;;:::o;27714:143::-;27771:5;27802:6;27796:13;27787:22;;27818:33;27845:5;27818:33;:::i;:::-;27714:143;;;;:::o;27863:351::-;27933:6;27982:2;27970:9;27961:7;27957:23;27953:32;27950:119;;;27988:79;;:::i;:::-;27950:119;28108:1;28133:64;28189:7;28180:6;28169:9;28165:22;28133:64;:::i;:::-;28123:74;;28079:128;27863:351;;;;:::o;28220:85::-;28265:7;28294:5;28283:16;;28220:85;;;:::o;28311:158::-;28369:9;28402:61;28420:42;28429:32;28455:5;28429:32;:::i;:::-;28420:42;:::i;:::-;28402:61;:::i;:::-;28389:74;;28311:158;;;:::o;28475:147::-;28570:45;28609:5;28570:45;:::i;:::-;28565:3;28558:58;28475:147;;:::o;28628:114::-;28695:6;28729:5;28723:12;28713:22;;28628:114;;;:::o;28748:184::-;28847:11;28881:6;28876:3;28869:19;28921:4;28916:3;28912:14;28897:29;;28748:184;;;;:::o;28938:132::-;29005:4;29028:3;29020:11;;29058:4;29053:3;29049:14;29041:22;;28938:132;;;:::o;29076:108::-;29153:24;29171:5;29153:24;:::i;:::-;29148:3;29141:37;29076:108;;:::o;29190:179::-;29259:10;29280:46;29322:3;29314:6;29280:46;:::i;:::-;29358:4;29353:3;29349:14;29335:28;;29190:179;;;;:::o;29375:113::-;29445:4;29477;29472:3;29468:14;29460:22;;29375:113;;;:::o;29524:732::-;29643:3;29672:54;29720:5;29672:54;:::i;:::-;29742:86;29821:6;29816:3;29742:86;:::i;:::-;29735:93;;29852:56;29902:5;29852:56;:::i;:::-;29931:7;29962:1;29947:284;29972:6;29969:1;29966:13;29947:284;;;30048:6;30042:13;30075:63;30134:3;30119:13;30075:63;:::i;:::-;30068:70;;30161:60;30214:6;30161:60;:::i;:::-;30151:70;;30007:224;29994:1;29991;29987:9;29982:14;;29947:284;;;29951:14;30247:3;30240:10;;29648:608;;;29524:732;;;;:::o;30262:831::-;30525:4;30563:3;30552:9;30548:19;30540:27;;30577:71;30645:1;30634:9;30630:17;30621:6;30577:71;:::i;:::-;30658:80;30734:2;30723:9;30719:18;30710:6;30658:80;:::i;:::-;30785:9;30779:4;30775:20;30770:2;30759:9;30755:18;30748:48;30813:108;30916:4;30907:6;30813:108;:::i;:::-;30805:116;;30931:72;30999:2;30988:9;30984:18;30975:6;30931:72;:::i;:::-;31013:73;31081:3;31070:9;31066:19;31057:6;31013:73;:::i;:::-;30262:831;;;;;;;;:::o;31099:180::-;31147:77;31144:1;31137:88;31244:4;31241:1;31234:15;31268:4;31265:1;31258:15;31285:185;31325:1;31342:20;31360:1;31342:20;:::i;:::-;31337:25;;31376:20;31394:1;31376:20;:::i;:::-;31371:25;;31415:1;31405:35;;31420:18;;:::i;:::-;31405:35;31462:1;31459;31455:9;31450:14;;31285:185;;;;:::o;31476:177::-;31616:29;31612:1;31604:6;31600:14;31593:53;31476:177;:::o;31659:366::-;31801:3;31822:67;31886:2;31881:3;31822:67;:::i;:::-;31815:74;;31898:93;31987:3;31898:93;:::i;:::-;32016:2;32011:3;32007:12;32000:19;;31659:366;;;:::o;32031:419::-;32197:4;32235:2;32224:9;32220:18;32212:26;;32284:9;32278:4;32274:20;32270:1;32259:9;32255:17;32248:47;32312:131;32438:4;32312:131;:::i;:::-;32304:139;;32031:419;;;:::o;32456:220::-;32596:34;32592:1;32584:6;32580:14;32573:58;32665:3;32660:2;32652:6;32648:15;32641:28;32456:220;:::o;32682:366::-;32824:3;32845:67;32909:2;32904:3;32845:67;:::i;:::-;32838:74;;32921:93;33010:3;32921:93;:::i;:::-;33039:2;33034:3;33030:12;33023:19;;32682:366;;;:::o;33054:419::-;33220:4;33258:2;33247:9;33243:18;33235:26;;33307:9;33301:4;33297:20;33293:1;33282:9;33278:17;33271:47;33335:131;33461:4;33335:131;:::i;:::-;33327:139;;33054:419;;;:::o

Swarm Source

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