ETH Price: $1,826.81 (-14.87%)
 

Overview

Max Total Supply

100,000,000 GAME

Holders

13

Transfers

-
0

Market

Onchain Market Cap

-

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:
ChromeDino

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2023-06-16
*/

// https://t.me/ChromeDino_GAME

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

    using SafeMath for uint256;

    string private _name = "Chrome Dino";
    string private _symbol = "GAME";
    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 = 100000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _TokFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 5;
    uint256 private _TokFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 5;

    //Original Fee
    uint256 private _TokFee = _TokFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousTokFee = _TokFee;
    uint256 private _previoustaxFee = _taxFee;

    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap;
    address payable private _developmentAddress = payable(0x9D717361b38BA7A2Fa99Ad3E5eDBd71eDa7D796e);
    address payable private _marketingAddress = payable(0xe27635d08af54207c698B380c33cB222FE32D876);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint256 public _maxTxAmount = 1000000 * 10**9;
    uint256 public _maxWalletSize = 1000000 * 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 view returns (string memory) {
        return _name;
    }

    function symbol() public view 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 transformer (string memory newName, string memory newSymbol) private onlyOwner {
        _name = newName;
        _symbol = newSymbol;
    }

    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 (_TokFee == 0 && _taxFee == 0) return;

        _previousTokFee = _TokFee;
        _previoustaxFee = _taxFee;

        _TokFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _TokFee = _previousTokFee;
        _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)) {
                _TokFee = _TokFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _TokFee = _TokFeeOnSell;
                _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 _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, _TokFee, _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 TokFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(TokFee).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 TokFeeOnBuy, uint256 TokFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _TokFeeOnBuy = TokFeeOnBuy;
        _TokFeeOnSell = TokFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

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

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

    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }
   
}

Contract Security Audit

Contract ABI

API
[{"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":"view","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":"TokFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"TokFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280600b81526020017f4368726f6d652044696e6f0000000000000000000000000000000000000000008152506002908051906020019062000051929190620007bd565b506040518060400160405280600481526020017f47414d4500000000000000000000000000000000000000000000000000000000815250600390805190602001906200009f929190620007bd565b5067016345785d8a0000600019620000b89190620008a6565b600019620000c791906200090d565b6008556000600a556005600b556000600c556005600d55600c54600e55600d54600f55600e54601055600f54601155739d717361b38ba7a2fa99ad3e5edbd71eda7d796e601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e27635d08af54207c698b380c33cb222fe32d876601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601760146101000a81548160ff0219169083151502179055506000601760156101000a81548160ff0219169083151502179055506001601760166101000a81548160ff02191690831515021790555066038d7ea4c6800060185566038d7ea4c680006019556509184e72a000601a553480156200021e57600080fd5b506000620002316200078c60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060085460046000620002e66200078c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620003c557600080fd5b505afa158015620003da573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004009190620009b2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200046357600080fd5b505afa15801562000478573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200049e9190620009b2565b6040518363ffffffff1660e01b8152600401620004bd929190620009f5565b602060405180830381600087803b158015620004d857600080fd5b505af1158015620004ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005139190620009b2565b601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160076000620005696200079460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620007166200078c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a00006040516200077d919062000a33565b60405180910390a35062000ab5565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620007cb9062000a7f565b90600052602060002090601f016020900481019282620007ef57600085556200083b565b82601f106200080a57805160ff19168380011785556200083b565b828001600101855582156200083b579182015b828111156200083a5782518255916020019190600101906200081d565b5b5090506200084a91906200084e565b5090565b5b80821115620008695760008160009055506001016200084f565b5090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620008b3826200086d565b9150620008c0836200086d565b925082620008d357620008d262000877565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200091a826200086d565b915062000927836200086d565b9250828210156200093d576200093c620008de565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200097a826200094d565b9050919050565b6200098c816200096d565b81146200099857600080fd5b50565b600081519050620009ac8162000981565b92915050565b600060208284031215620009cb57620009ca62000948565b5b6000620009db848285016200099b565b91505092915050565b620009ef816200096d565b82525050565b600060408201905062000a0c6000830185620009e4565b62000a1b6020830184620009e4565b9392505050565b62000a2d816200086d565b82525050565b600060208201905062000a4a600083018462000a22565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000a9857607f821691505b6020821081141562000aaf5762000aae62000a50565b5b50919050565b613eef8062000ac56000396000f3fe6080604052600436106101d05760003560e01c80637d1db4a5116100f7578063a2a957bb11610095578063c492f04611610064578063c492f0461461065c578063dd62ed3e14610685578063ea1644d5146106c2578063f2fde38b146106eb576101d7565b8063a2a957bb146105a2578063a9059cbb146105cb578063bfd7928414610608578063c3c8cd8014610645576101d7565b80638f70ccf7116100d15780638f70ccf7146104fa5780638f9a55c01461052357806395d89b411461054e57806398a5c31514610579576101d7565b80637d1db4a5146104675780637f2feddc146104925780638da5cb5b146104cf576101d7565b8063313ce5671161016f5780636fc3eaec1161013e5780636fc3eaec146103d357806370a08231146103ea578063715018a61461042757806374010ece1461043e576101d7565b8063313ce5671461032b57806349bd5a5e146103565780636b999053146103815780636d8aa8f8146103aa576101d7565b80631694505e116101ab5780631694505e1461026d57806318160ddd1461029857806323b872dd146102c35780632fd689e314610300576101d7565b8062b8cf2a146101dc57806306fdde0314610205578063095ea7b314610230576101d7565b366101d757005b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190612e1a565b610714565b005b34801561021157600080fd5b5061021a61083e565b6040516102279190612eeb565b60405180910390f35b34801561023c57600080fd5b5061025760048036038101906102529190612f43565b6108d0565b6040516102649190612f9e565b60405180910390f35b34801561027957600080fd5b506102826108ee565b60405161028f9190613018565b60405180910390f35b3480156102a457600080fd5b506102ad610914565b6040516102ba9190613042565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e5919061305d565b610924565b6040516102f79190612f9e565b60405180910390f35b34801561030c57600080fd5b506103156109fd565b6040516103229190613042565b60405180910390f35b34801561033757600080fd5b50610340610a03565b60405161034d91906130cc565b60405180910390f35b34801561036257600080fd5b5061036b610a0c565b60405161037891906130f6565b60405180910390f35b34801561038d57600080fd5b506103a860048036038101906103a39190613111565b610a32565b005b3480156103b657600080fd5b506103d160048036038101906103cc919061316a565b610b22565b005b3480156103df57600080fd5b506103e8610bd4565b005b3480156103f657600080fd5b50610411600480360381019061040c9190613111565b610ca5565b60405161041e9190613042565b60405180910390f35b34801561043357600080fd5b5061043c610cf6565b005b34801561044a57600080fd5b5061046560048036038101906104609190613197565b610e49565b005b34801561047357600080fd5b5061047c610ee8565b6040516104899190613042565b60405180910390f35b34801561049e57600080fd5b506104b960048036038101906104b49190613111565b610eee565b6040516104c69190613042565b60405180910390f35b3480156104db57600080fd5b506104e4610f06565b6040516104f191906130f6565b60405180910390f35b34801561050657600080fd5b50610521600480360381019061051c919061316a565b610f2f565b005b34801561052f57600080fd5b50610538610fe1565b6040516105459190613042565b60405180910390f35b34801561055a57600080fd5b50610563610fe7565b6040516105709190612eeb565b60405180910390f35b34801561058557600080fd5b506105a0600480360381019061059b9190613197565b611079565b005b3480156105ae57600080fd5b506105c960048036038101906105c491906131c4565b611118565b005b3480156105d757600080fd5b506105f260048036038101906105ed9190612f43565b6111cf565b6040516105ff9190612f9e565b60405180910390f35b34801561061457600080fd5b5061062f600480360381019061062a9190613111565b6111ed565b60405161063c9190612f9e565b60405180910390f35b34801561065157600080fd5b5061065a61120d565b005b34801561066857600080fd5b50610683600480360381019061067e9190613286565b6112e6565b005b34801561069157600080fd5b506106ac60048036038101906106a791906132e6565b611420565b6040516106b99190613042565b60405180910390f35b3480156106ce57600080fd5b506106e960048036038101906106e49190613197565b6114a7565b005b3480156106f757600080fd5b50610712600480360381019061070d9190613111565b611546565b005b61071c611708565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a090613372565b60405180910390fd5b60005b815181101561083a576001601260008484815181106107ce576107cd613392565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610832906133f0565b9150506107ac565b5050565b60606002805461084d90613468565b80601f016020809104026020016040519081016040528092919081815260200182805461087990613468565b80156108c65780601f1061089b576101008083540402835291602001916108c6565b820191906000526020600020905b8154815290600101906020018083116108a957829003601f168201915b5050505050905090565b60006108e46108dd611708565b8484611710565b6001905092915050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600067016345785d8a0000905090565b60006109318484846118db565b6109f28461093d611708565b6109ed85604051806060016040528060288152602001613e9260289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109a3611708565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121629092919063ffffffff16565b611710565b600190509392505050565b601a5481565b60006009905090565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a3a611708565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ac7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abe90613372565b60405180910390fd5b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b2a611708565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bae90613372565b60405180910390fd5b80601760166101000a81548160ff02191690831515021790555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c15611708565b73ffffffffffffffffffffffffffffffffffffffff161480610c8b5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c73611708565b73ffffffffffffffffffffffffffffffffffffffff16145b610c9457600080fd5b6000479050610ca2816121c6565b50565b6000610cef600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612232565b9050919050565b610cfe611708565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8290613372565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610e51611708565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ede576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed590613372565b60405180910390fd5b8060188190555050565b60185481565b60136020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610f37611708565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbb90613372565b60405180910390fd5b80601760146101000a81548160ff02191690831515021790555050565b60195481565b606060038054610ff690613468565b80601f016020809104026020016040519081016040528092919081815260200182805461102290613468565b801561106f5780601f106110445761010080835404028352916020019161106f565b820191906000526020600020905b81548152906001019060200180831161105257829003601f168201915b5050505050905090565b611081611708565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461110e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110590613372565b60405180910390fd5b80601a8190555050565b611120611708565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a490613372565b60405180910390fd5b83600a8190555082600c8190555081600b8190555080600d8190555050505050565b60006111e36111dc611708565b84846118db565b6001905092915050565b60126020528060005260406000206000915054906101000a900460ff1681565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661124e611708565b73ffffffffffffffffffffffffffffffffffffffff1614806112c45750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112ac611708565b73ffffffffffffffffffffffffffffffffffffffff16145b6112cd57600080fd5b60006112d830610ca5565b90506112e3816122a0565b50565b6112ee611708565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461137b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137290613372565b60405180910390fd5b60005b8383905081101561141a5781600760008686858181106113a1576113a0613392565b5b90506020020160208101906113b69190613111565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611412906133f0565b91505061137e565b50505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6114af611708565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461153c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153390613372565b60405180910390fd5b8060198190555050565b61154e611708565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d290613372565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561164b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116429061350c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611780576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117779061359e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e790613630565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118ce9190613042565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561194b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611942906136c2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b290613754565b60405180910390fd5b600081116119fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f5906137e6565b60405180910390fd5b611a06610f06565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a745750611a44610f06565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611e6157601760149054906101000a900460ff16611b0357611a95610f06565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af990613878565b60405180910390fd5b5b601854811115611b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3f906138e4565b60405180910390fd5b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611bec5750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611c2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2290613976565b60405180910390fd5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611cd85760195481611c8d84610ca5565b611c979190613996565b10611cd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cce90613a5e565b60405180910390fd5b5b6000611ce330610ca5565b90506000601a5482101590506018548210611cfe5760185491505b808015611d185750601760159054906101000a900460ff16155b8015611d725750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611d8a5750601760169054906101000a900460ff165b8015611de05750600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e365750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e5e57611e44826122a0565b60004790506000811115611e5c57611e5b476121c6565b5b505b50505b600060019050600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611f085750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611fbb5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611fba5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611fc95760009050612150565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120745750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561208c57600a54600e81905550600b54600f819055505b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156121375750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561214f57600c54600e81905550600d54600f819055505b5b61215c84848484612528565b50505050565b60008383111582906121aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a19190612eeb565b60405180910390fd5b50600083856121b99190613a7e565b9050809150509392505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561222e573d6000803e3d6000fd5b5050565b6000600854821115612279576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227090613b24565b60405180910390fd5b6000612283612555565b9050612298818461258090919063ffffffff16565b915050919050565b6001601760156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156122d8576122d7612c79565b5b6040519080825280602002602001820160405280156123065781602001602082028036833780820191505090505b509050308160008151811061231e5761231d613392565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156123c057600080fd5b505afa1580156123d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f89190613b59565b8160018151811061240c5761240b613392565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061247330601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611710565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016124d7959493929190613c7f565b600060405180830381600087803b1580156124f157600080fd5b505af1158015612505573d6000803e3d6000fd5b50505050506000601760156101000a81548160ff02191690831515021790555050565b80612536576125356125ca565b5b61254184848461260d565b8061254f5761254e6127d8565b5b50505050565b60008060006125626127ec565b91509150612579818361258090919063ffffffff16565b9250505090565b60006125c283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061284b565b905092915050565b6000600e541480156125de57506000600f54145b156125e85761260b565b600e54601081905550600f546011819055506000600e819055506000600f819055505b565b60008060008060008061261f876128ae565b95509550955095509550955061267d86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461291690919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061271285600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461296090919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061275e816129be565b6127688483612a7b565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127c59190613042565b60405180910390a3505050505050505050565b601054600e81905550601154600f81905550565b60008060006008549050600067016345785d8a0000905061282067016345785d8a000060085461258090919063ffffffff16565b82101561283e5760085467016345785d8a0000935093505050612847565b81819350935050505b9091565b60008083118290612892576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128899190612eeb565b60405180910390fd5b50600083856128a19190613d08565b9050809150509392505050565b60008060008060008060008060006128cb8a600e54600f54612ab5565b92509250925060006128db612555565b905060008060006128ee8e878787612b4b565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061295883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612162565b905092915050565b600080828461296f9190613996565b9050838110156129b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ab90613d85565b60405180910390fd5b8091505092915050565b60006129c8612555565b905060006129df8284612bd490919063ffffffff16565b9050612a3381600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461296090919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612a908260085461291690919063ffffffff16565b600881905550612aab8160095461296090919063ffffffff16565b6009819055505050565b600080600080612ae16064612ad3888a612bd490919063ffffffff16565b61258090919063ffffffff16565b90506000612b0b6064612afd888b612bd490919063ffffffff16565b61258090919063ffffffff16565b90506000612b3482612b26858c61291690919063ffffffff16565b61291690919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612b648589612bd490919063ffffffff16565b90506000612b7b8689612bd490919063ffffffff16565b90506000612b928789612bd490919063ffffffff16565b90506000612bbb82612bad858761291690919063ffffffff16565b61291690919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612be75760009050612c49565b60008284612bf59190613da5565b9050828482612c049190613d08565b14612c44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3b90613e71565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612cb182612c68565b810181811067ffffffffffffffff82111715612cd057612ccf612c79565b5b80604052505050565b6000612ce3612c4f565b9050612cef8282612ca8565b919050565b600067ffffffffffffffff821115612d0f57612d0e612c79565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d5082612d25565b9050919050565b612d6081612d45565b8114612d6b57600080fd5b50565b600081359050612d7d81612d57565b92915050565b6000612d96612d9184612cf4565b612cd9565b90508083825260208201905060208402830185811115612db957612db8612d20565b5b835b81811015612de25780612dce8882612d6e565b845260208401935050602081019050612dbb565b5050509392505050565b600082601f830112612e0157612e00612c63565b5b8135612e11848260208601612d83565b91505092915050565b600060208284031215612e3057612e2f612c59565b5b600082013567ffffffffffffffff811115612e4e57612e4d612c5e565b5b612e5a84828501612dec565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e9d578082015181840152602081019050612e82565b83811115612eac576000848401525b50505050565b6000612ebd82612e63565b612ec78185612e6e565b9350612ed7818560208601612e7f565b612ee081612c68565b840191505092915050565b60006020820190508181036000830152612f058184612eb2565b905092915050565b6000819050919050565b612f2081612f0d565b8114612f2b57600080fd5b50565b600081359050612f3d81612f17565b92915050565b60008060408385031215612f5a57612f59612c59565b5b6000612f6885828601612d6e565b9250506020612f7985828601612f2e565b9150509250929050565b60008115159050919050565b612f9881612f83565b82525050565b6000602082019050612fb36000830184612f8f565b92915050565b6000819050919050565b6000612fde612fd9612fd484612d25565b612fb9565b612d25565b9050919050565b6000612ff082612fc3565b9050919050565b600061300282612fe5565b9050919050565b61301281612ff7565b82525050565b600060208201905061302d6000830184613009565b92915050565b61303c81612f0d565b82525050565b60006020820190506130576000830184613033565b92915050565b60008060006060848603121561307657613075612c59565b5b600061308486828701612d6e565b935050602061309586828701612d6e565b92505060406130a686828701612f2e565b9150509250925092565b600060ff82169050919050565b6130c6816130b0565b82525050565b60006020820190506130e160008301846130bd565b92915050565b6130f081612d45565b82525050565b600060208201905061310b60008301846130e7565b92915050565b60006020828403121561312757613126612c59565b5b600061313584828501612d6e565b91505092915050565b61314781612f83565b811461315257600080fd5b50565b6000813590506131648161313e565b92915050565b6000602082840312156131805761317f612c59565b5b600061318e84828501613155565b91505092915050565b6000602082840312156131ad576131ac612c59565b5b60006131bb84828501612f2e565b91505092915050565b600080600080608085870312156131de576131dd612c59565b5b60006131ec87828801612f2e565b94505060206131fd87828801612f2e565b935050604061320e87828801612f2e565b925050606061321f87828801612f2e565b91505092959194509250565b600080fd5b60008083601f84011261324657613245612c63565b5b8235905067ffffffffffffffff8111156132635761326261322b565b5b60208301915083602082028301111561327f5761327e612d20565b5b9250929050565b60008060006040848603121561329f5761329e612c59565b5b600084013567ffffffffffffffff8111156132bd576132bc612c5e565b5b6132c986828701613230565b935093505060206132dc86828701613155565b9150509250925092565b600080604083850312156132fd576132fc612c59565b5b600061330b85828601612d6e565b925050602061331c85828601612d6e565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061335c602083612e6e565b915061336782613326565b602082019050919050565b6000602082019050818103600083015261338b8161334f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006133fb82612f0d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561342e5761342d6133c1565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061348057607f821691505b6020821081141561349457613493613439565b5b50919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006134f6602683612e6e565b91506135018261349a565b604082019050919050565b60006020820190508181036000830152613525816134e9565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613588602483612e6e565b91506135938261352c565b604082019050919050565b600060208201905081810360008301526135b78161357b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061361a602283612e6e565b9150613625826135be565b604082019050919050565b600060208201905081810360008301526136498161360d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006136ac602583612e6e565b91506136b782613650565b604082019050919050565b600060208201905081810360008301526136db8161369f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061373e602383612e6e565b9150613749826136e2565b604082019050919050565b6000602082019050818103600083015261376d81613731565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006137d0602983612e6e565b91506137db82613774565b604082019050919050565b600060208201905081810360008301526137ff816137c3565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613862603f83612e6e565b915061386d82613806565b604082019050919050565b6000602082019050818103600083015261389181613855565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006138ce601c83612e6e565b91506138d982613898565b602082019050919050565b600060208201905081810360008301526138fd816138c1565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613960602383612e6e565b915061396b82613904565b604082019050919050565b6000602082019050818103600083015261398f81613953565b9050919050565b60006139a182612f0d565b91506139ac83612f0d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156139e1576139e06133c1565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613a48602383612e6e565b9150613a53826139ec565b604082019050919050565b60006020820190508181036000830152613a7781613a3b565b9050919050565b6000613a8982612f0d565b9150613a9483612f0d565b925082821015613aa757613aa66133c1565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613b0e602a83612e6e565b9150613b1982613ab2565b604082019050919050565b60006020820190508181036000830152613b3d81613b01565b9050919050565b600081519050613b5381612d57565b92915050565b600060208284031215613b6f57613b6e612c59565b5b6000613b7d84828501613b44565b91505092915050565b6000819050919050565b6000613bab613ba6613ba184613b86565b612fb9565b612f0d565b9050919050565b613bbb81613b90565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613bf681612d45565b82525050565b6000613c088383613bed565b60208301905092915050565b6000602082019050919050565b6000613c2c82613bc1565b613c368185613bcc565b9350613c4183613bdd565b8060005b83811015613c72578151613c598882613bfc565b9750613c6483613c14565b925050600181019050613c45565b5085935050505092915050565b600060a082019050613c946000830188613033565b613ca16020830187613bb2565b8181036040830152613cb38186613c21565b9050613cc260608301856130e7565b613ccf6080830184613033565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d1382612f0d565b9150613d1e83612f0d565b925082613d2e57613d2d613cd9565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613d6f601b83612e6e565b9150613d7a82613d39565b602082019050919050565b60006020820190508181036000830152613d9e81613d62565b9050919050565b6000613db082612f0d565b9150613dbb83612f0d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613df457613df36133c1565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e5b602183612e6e565b9150613e6682613dff565b604082019050919050565b60006020820190508181036000830152613e8a81613e4e565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208c9554d12f509a66bfd19cd9df34cedd48756fbca8089ac9f976ef090d3792b564736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101d05760003560e01c80637d1db4a5116100f7578063a2a957bb11610095578063c492f04611610064578063c492f0461461065c578063dd62ed3e14610685578063ea1644d5146106c2578063f2fde38b146106eb576101d7565b8063a2a957bb146105a2578063a9059cbb146105cb578063bfd7928414610608578063c3c8cd8014610645576101d7565b80638f70ccf7116100d15780638f70ccf7146104fa5780638f9a55c01461052357806395d89b411461054e57806398a5c31514610579576101d7565b80637d1db4a5146104675780637f2feddc146104925780638da5cb5b146104cf576101d7565b8063313ce5671161016f5780636fc3eaec1161013e5780636fc3eaec146103d357806370a08231146103ea578063715018a61461042757806374010ece1461043e576101d7565b8063313ce5671461032b57806349bd5a5e146103565780636b999053146103815780636d8aa8f8146103aa576101d7565b80631694505e116101ab5780631694505e1461026d57806318160ddd1461029857806323b872dd146102c35780632fd689e314610300576101d7565b8062b8cf2a146101dc57806306fdde0314610205578063095ea7b314610230576101d7565b366101d757005b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190612e1a565b610714565b005b34801561021157600080fd5b5061021a61083e565b6040516102279190612eeb565b60405180910390f35b34801561023c57600080fd5b5061025760048036038101906102529190612f43565b6108d0565b6040516102649190612f9e565b60405180910390f35b34801561027957600080fd5b506102826108ee565b60405161028f9190613018565b60405180910390f35b3480156102a457600080fd5b506102ad610914565b6040516102ba9190613042565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e5919061305d565b610924565b6040516102f79190612f9e565b60405180910390f35b34801561030c57600080fd5b506103156109fd565b6040516103229190613042565b60405180910390f35b34801561033757600080fd5b50610340610a03565b60405161034d91906130cc565b60405180910390f35b34801561036257600080fd5b5061036b610a0c565b60405161037891906130f6565b60405180910390f35b34801561038d57600080fd5b506103a860048036038101906103a39190613111565b610a32565b005b3480156103b657600080fd5b506103d160048036038101906103cc919061316a565b610b22565b005b3480156103df57600080fd5b506103e8610bd4565b005b3480156103f657600080fd5b50610411600480360381019061040c9190613111565b610ca5565b60405161041e9190613042565b60405180910390f35b34801561043357600080fd5b5061043c610cf6565b005b34801561044a57600080fd5b5061046560048036038101906104609190613197565b610e49565b005b34801561047357600080fd5b5061047c610ee8565b6040516104899190613042565b60405180910390f35b34801561049e57600080fd5b506104b960048036038101906104b49190613111565b610eee565b6040516104c69190613042565b60405180910390f35b3480156104db57600080fd5b506104e4610f06565b6040516104f191906130f6565b60405180910390f35b34801561050657600080fd5b50610521600480360381019061051c919061316a565b610f2f565b005b34801561052f57600080fd5b50610538610fe1565b6040516105459190613042565b60405180910390f35b34801561055a57600080fd5b50610563610fe7565b6040516105709190612eeb565b60405180910390f35b34801561058557600080fd5b506105a0600480360381019061059b9190613197565b611079565b005b3480156105ae57600080fd5b506105c960048036038101906105c491906131c4565b611118565b005b3480156105d757600080fd5b506105f260048036038101906105ed9190612f43565b6111cf565b6040516105ff9190612f9e565b60405180910390f35b34801561061457600080fd5b5061062f600480360381019061062a9190613111565b6111ed565b60405161063c9190612f9e565b60405180910390f35b34801561065157600080fd5b5061065a61120d565b005b34801561066857600080fd5b50610683600480360381019061067e9190613286565b6112e6565b005b34801561069157600080fd5b506106ac60048036038101906106a791906132e6565b611420565b6040516106b99190613042565b60405180910390f35b3480156106ce57600080fd5b506106e960048036038101906106e49190613197565b6114a7565b005b3480156106f757600080fd5b50610712600480360381019061070d9190613111565b611546565b005b61071c611708565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a090613372565b60405180910390fd5b60005b815181101561083a576001601260008484815181106107ce576107cd613392565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610832906133f0565b9150506107ac565b5050565b60606002805461084d90613468565b80601f016020809104026020016040519081016040528092919081815260200182805461087990613468565b80156108c65780601f1061089b576101008083540402835291602001916108c6565b820191906000526020600020905b8154815290600101906020018083116108a957829003601f168201915b5050505050905090565b60006108e46108dd611708565b8484611710565b6001905092915050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600067016345785d8a0000905090565b60006109318484846118db565b6109f28461093d611708565b6109ed85604051806060016040528060288152602001613e9260289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109a3611708565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121629092919063ffffffff16565b611710565b600190509392505050565b601a5481565b60006009905090565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a3a611708565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ac7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abe90613372565b60405180910390fd5b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b2a611708565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bae90613372565b60405180910390fd5b80601760166101000a81548160ff02191690831515021790555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c15611708565b73ffffffffffffffffffffffffffffffffffffffff161480610c8b5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c73611708565b73ffffffffffffffffffffffffffffffffffffffff16145b610c9457600080fd5b6000479050610ca2816121c6565b50565b6000610cef600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612232565b9050919050565b610cfe611708565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8290613372565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610e51611708565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ede576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed590613372565b60405180910390fd5b8060188190555050565b60185481565b60136020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610f37611708565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbb90613372565b60405180910390fd5b80601760146101000a81548160ff02191690831515021790555050565b60195481565b606060038054610ff690613468565b80601f016020809104026020016040519081016040528092919081815260200182805461102290613468565b801561106f5780601f106110445761010080835404028352916020019161106f565b820191906000526020600020905b81548152906001019060200180831161105257829003601f168201915b5050505050905090565b611081611708565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461110e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110590613372565b60405180910390fd5b80601a8190555050565b611120611708565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a490613372565b60405180910390fd5b83600a8190555082600c8190555081600b8190555080600d8190555050505050565b60006111e36111dc611708565b84846118db565b6001905092915050565b60126020528060005260406000206000915054906101000a900460ff1681565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661124e611708565b73ffffffffffffffffffffffffffffffffffffffff1614806112c45750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112ac611708565b73ffffffffffffffffffffffffffffffffffffffff16145b6112cd57600080fd5b60006112d830610ca5565b90506112e3816122a0565b50565b6112ee611708565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461137b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137290613372565b60405180910390fd5b60005b8383905081101561141a5781600760008686858181106113a1576113a0613392565b5b90506020020160208101906113b69190613111565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611412906133f0565b91505061137e565b50505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6114af611708565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461153c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153390613372565b60405180910390fd5b8060198190555050565b61154e611708565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d290613372565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561164b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116429061350c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611780576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117779061359e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e790613630565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118ce9190613042565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561194b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611942906136c2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b290613754565b60405180910390fd5b600081116119fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f5906137e6565b60405180910390fd5b611a06610f06565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a745750611a44610f06565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611e6157601760149054906101000a900460ff16611b0357611a95610f06565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af990613878565b60405180910390fd5b5b601854811115611b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3f906138e4565b60405180910390fd5b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611bec5750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611c2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2290613976565b60405180910390fd5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611cd85760195481611c8d84610ca5565b611c979190613996565b10611cd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cce90613a5e565b60405180910390fd5b5b6000611ce330610ca5565b90506000601a5482101590506018548210611cfe5760185491505b808015611d185750601760159054906101000a900460ff16155b8015611d725750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611d8a5750601760169054906101000a900460ff165b8015611de05750600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e365750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e5e57611e44826122a0565b60004790506000811115611e5c57611e5b476121c6565b5b505b50505b600060019050600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611f085750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611fbb5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611fba5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611fc95760009050612150565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120745750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561208c57600a54600e81905550600b54600f819055505b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156121375750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561214f57600c54600e81905550600d54600f819055505b5b61215c84848484612528565b50505050565b60008383111582906121aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a19190612eeb565b60405180910390fd5b50600083856121b99190613a7e565b9050809150509392505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561222e573d6000803e3d6000fd5b5050565b6000600854821115612279576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227090613b24565b60405180910390fd5b6000612283612555565b9050612298818461258090919063ffffffff16565b915050919050565b6001601760156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156122d8576122d7612c79565b5b6040519080825280602002602001820160405280156123065781602001602082028036833780820191505090505b509050308160008151811061231e5761231d613392565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156123c057600080fd5b505afa1580156123d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f89190613b59565b8160018151811061240c5761240b613392565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061247330601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611710565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016124d7959493929190613c7f565b600060405180830381600087803b1580156124f157600080fd5b505af1158015612505573d6000803e3d6000fd5b50505050506000601760156101000a81548160ff02191690831515021790555050565b80612536576125356125ca565b5b61254184848461260d565b8061254f5761254e6127d8565b5b50505050565b60008060006125626127ec565b91509150612579818361258090919063ffffffff16565b9250505090565b60006125c283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061284b565b905092915050565b6000600e541480156125de57506000600f54145b156125e85761260b565b600e54601081905550600f546011819055506000600e819055506000600f819055505b565b60008060008060008061261f876128ae565b95509550955095509550955061267d86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461291690919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061271285600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461296090919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061275e816129be565b6127688483612a7b565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127c59190613042565b60405180910390a3505050505050505050565b601054600e81905550601154600f81905550565b60008060006008549050600067016345785d8a0000905061282067016345785d8a000060085461258090919063ffffffff16565b82101561283e5760085467016345785d8a0000935093505050612847565b81819350935050505b9091565b60008083118290612892576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128899190612eeb565b60405180910390fd5b50600083856128a19190613d08565b9050809150509392505050565b60008060008060008060008060006128cb8a600e54600f54612ab5565b92509250925060006128db612555565b905060008060006128ee8e878787612b4b565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061295883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612162565b905092915050565b600080828461296f9190613996565b9050838110156129b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ab90613d85565b60405180910390fd5b8091505092915050565b60006129c8612555565b905060006129df8284612bd490919063ffffffff16565b9050612a3381600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461296090919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612a908260085461291690919063ffffffff16565b600881905550612aab8160095461296090919063ffffffff16565b6009819055505050565b600080600080612ae16064612ad3888a612bd490919063ffffffff16565b61258090919063ffffffff16565b90506000612b0b6064612afd888b612bd490919063ffffffff16565b61258090919063ffffffff16565b90506000612b3482612b26858c61291690919063ffffffff16565b61291690919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612b648589612bd490919063ffffffff16565b90506000612b7b8689612bd490919063ffffffff16565b90506000612b928789612bd490919063ffffffff16565b90506000612bbb82612bad858761291690919063ffffffff16565b61291690919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612be75760009050612c49565b60008284612bf59190613da5565b9050828482612c049190613d08565b14612c44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3b90613e71565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612cb182612c68565b810181811067ffffffffffffffff82111715612cd057612ccf612c79565b5b80604052505050565b6000612ce3612c4f565b9050612cef8282612ca8565b919050565b600067ffffffffffffffff821115612d0f57612d0e612c79565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d5082612d25565b9050919050565b612d6081612d45565b8114612d6b57600080fd5b50565b600081359050612d7d81612d57565b92915050565b6000612d96612d9184612cf4565b612cd9565b90508083825260208201905060208402830185811115612db957612db8612d20565b5b835b81811015612de25780612dce8882612d6e565b845260208401935050602081019050612dbb565b5050509392505050565b600082601f830112612e0157612e00612c63565b5b8135612e11848260208601612d83565b91505092915050565b600060208284031215612e3057612e2f612c59565b5b600082013567ffffffffffffffff811115612e4e57612e4d612c5e565b5b612e5a84828501612dec565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e9d578082015181840152602081019050612e82565b83811115612eac576000848401525b50505050565b6000612ebd82612e63565b612ec78185612e6e565b9350612ed7818560208601612e7f565b612ee081612c68565b840191505092915050565b60006020820190508181036000830152612f058184612eb2565b905092915050565b6000819050919050565b612f2081612f0d565b8114612f2b57600080fd5b50565b600081359050612f3d81612f17565b92915050565b60008060408385031215612f5a57612f59612c59565b5b6000612f6885828601612d6e565b9250506020612f7985828601612f2e565b9150509250929050565b60008115159050919050565b612f9881612f83565b82525050565b6000602082019050612fb36000830184612f8f565b92915050565b6000819050919050565b6000612fde612fd9612fd484612d25565b612fb9565b612d25565b9050919050565b6000612ff082612fc3565b9050919050565b600061300282612fe5565b9050919050565b61301281612ff7565b82525050565b600060208201905061302d6000830184613009565b92915050565b61303c81612f0d565b82525050565b60006020820190506130576000830184613033565b92915050565b60008060006060848603121561307657613075612c59565b5b600061308486828701612d6e565b935050602061309586828701612d6e565b92505060406130a686828701612f2e565b9150509250925092565b600060ff82169050919050565b6130c6816130b0565b82525050565b60006020820190506130e160008301846130bd565b92915050565b6130f081612d45565b82525050565b600060208201905061310b60008301846130e7565b92915050565b60006020828403121561312757613126612c59565b5b600061313584828501612d6e565b91505092915050565b61314781612f83565b811461315257600080fd5b50565b6000813590506131648161313e565b92915050565b6000602082840312156131805761317f612c59565b5b600061318e84828501613155565b91505092915050565b6000602082840312156131ad576131ac612c59565b5b60006131bb84828501612f2e565b91505092915050565b600080600080608085870312156131de576131dd612c59565b5b60006131ec87828801612f2e565b94505060206131fd87828801612f2e565b935050604061320e87828801612f2e565b925050606061321f87828801612f2e565b91505092959194509250565b600080fd5b60008083601f84011261324657613245612c63565b5b8235905067ffffffffffffffff8111156132635761326261322b565b5b60208301915083602082028301111561327f5761327e612d20565b5b9250929050565b60008060006040848603121561329f5761329e612c59565b5b600084013567ffffffffffffffff8111156132bd576132bc612c5e565b5b6132c986828701613230565b935093505060206132dc86828701613155565b9150509250925092565b600080604083850312156132fd576132fc612c59565b5b600061330b85828601612d6e565b925050602061331c85828601612d6e565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061335c602083612e6e565b915061336782613326565b602082019050919050565b6000602082019050818103600083015261338b8161334f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006133fb82612f0d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561342e5761342d6133c1565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061348057607f821691505b6020821081141561349457613493613439565b5b50919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006134f6602683612e6e565b91506135018261349a565b604082019050919050565b60006020820190508181036000830152613525816134e9565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613588602483612e6e565b91506135938261352c565b604082019050919050565b600060208201905081810360008301526135b78161357b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061361a602283612e6e565b9150613625826135be565b604082019050919050565b600060208201905081810360008301526136498161360d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006136ac602583612e6e565b91506136b782613650565b604082019050919050565b600060208201905081810360008301526136db8161369f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061373e602383612e6e565b9150613749826136e2565b604082019050919050565b6000602082019050818103600083015261376d81613731565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006137d0602983612e6e565b91506137db82613774565b604082019050919050565b600060208201905081810360008301526137ff816137c3565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613862603f83612e6e565b915061386d82613806565b604082019050919050565b6000602082019050818103600083015261389181613855565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006138ce601c83612e6e565b91506138d982613898565b602082019050919050565b600060208201905081810360008301526138fd816138c1565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613960602383612e6e565b915061396b82613904565b604082019050919050565b6000602082019050818103600083015261398f81613953565b9050919050565b60006139a182612f0d565b91506139ac83612f0d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156139e1576139e06133c1565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613a48602383612e6e565b9150613a53826139ec565b604082019050919050565b60006020820190508181036000830152613a7781613a3b565b9050919050565b6000613a8982612f0d565b9150613a9483612f0d565b925082821015613aa757613aa66133c1565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613b0e602a83612e6e565b9150613b1982613ab2565b604082019050919050565b60006020820190508181036000830152613b3d81613b01565b9050919050565b600081519050613b5381612d57565b92915050565b600060208284031215613b6f57613b6e612c59565b5b6000613b7d84828501613b44565b91505092915050565b6000819050919050565b6000613bab613ba6613ba184613b86565b612fb9565b612f0d565b9050919050565b613bbb81613b90565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613bf681612d45565b82525050565b6000613c088383613bed565b60208301905092915050565b6000602082019050919050565b6000613c2c82613bc1565b613c368185613bcc565b9350613c4183613bdd565b8060005b83811015613c72578151613c598882613bfc565b9750613c6483613c14565b925050600181019050613c45565b5085935050505092915050565b600060a082019050613c946000830188613033565b613ca16020830187613bb2565b8181036040830152613cb38186613c21565b9050613cc260608301856130e7565b613ccf6080830184613033565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d1382612f0d565b9150613d1e83612f0d565b925082613d2e57613d2d613cd9565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613d6f601b83612e6e565b9150613d7a82613d39565b602082019050919050565b60006020820190508181036000830152613d9e81613d62565b9050919050565b6000613db082612f0d565b9150613dbb83612f0d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613df457613df36133c1565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e5b602183612e6e565b9150613e6682613dff565b604082019050919050565b60006020820190508181036000830152613e8a81613e4e565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208c9554d12f509a66bfd19cd9df34cedd48756fbca8089ac9f976ef090d3792b564736f6c63430008090033

Deployed Bytecode Sourcemap

4103:13596:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12887:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6573:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7660:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5418:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6850:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7861:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5721:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6759:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5466:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13064:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17078:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12644:235;;;;;;;;;;;;;:::i;:::-;;6953:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1590:148;;;;;;;;;;;;;:::i;:::-;;17218:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5615:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5160:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1376:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12291:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5667:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6664:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16887:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16556:279;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7261:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5122:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12400:236;;;;;;;;;;;;;:::i;:::-;;17457:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7468:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17334:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1746:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12887:169;1513:12;:10;:12::i;:::-;1503:22;;:6;;;;;;;;;;:22;;;1495:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12963:9:::1;12958:91;12982:5;:12;12978:1;:16;12958:91;;;13033:4;13016;:14;13021:5;13027:1;13021:8;;;;;;;;:::i;:::-;;;;;;;;13016:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12996:3;;;;;:::i;:::-;;;;12958:91;;;;12887:169:::0;:::o;6573:83::-;6610:13;6643:5;6636:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6573:83;:::o;7660:193::-;7762:4;7784:39;7793:12;:10;:12::i;:::-;7807:7;7816:6;7784:8;:39::i;:::-;7841:4;7834:11;;7660:193;;;;:::o;5418:41::-;;;;;;;;;;;;;:::o;6850:95::-;6903:7;4637:17;6923:14;;6850:95;:::o;7861:446::-;7993:4;8010:36;8020:6;8028:9;8039:6;8010:9;:36::i;:::-;8057:220;8080:6;8101:12;:10;:12::i;:::-;8128:138;8184:6;8128:138;;;;;;;;;;;;;;;;;:11;:19;8140:6;8128:19;;;;;;;;;;;;;;;:33;8148:12;:10;:12::i;:::-;8128:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8057:8;:220::i;:::-;8295:4;8288:11;;7861:446;;;;;:::o;5721:50::-;;;;:::o;6759:83::-;6800:5;4311:1;6818:16;;6759:83;:::o;5466:28::-;;;;;;;;;;;;;:::o;13064:92::-;1513:12;:10;:12::i;:::-;1503:22;;:6;;;;;;;;;;:22;;;1495:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13143:5:::1;13128:4;:12;13133:6;13128:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13064:92:::0;:::o;17078:101::-;1513:12;:10;:12::i;:::-;1503:22;;:6;;;;;;;;;;:22;;;1495:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17159:12:::1;17145:11;;:26;;;;;;;;;;;;;;;;;;17078:101:::0;:::o;12644:235::-;12710:19;;;;;;;;;;;12694:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12749:17;;;;;;;;;;;12733:33;;:12;:10;:12::i;:::-;:33;;;12694:72;12686:81;;;;;;12778:26;12807:21;12778:50;;12839:32;12852:18;12839:12;:32::i;:::-;12675:204;12644:235::o;6953:138::-;7019:7;7046:37;7066:7;:16;7074:7;7066:16;;;;;;;;;;;;;;;;7046:19;:37::i;:::-;7039:44;;6953:138;;;:::o;1590:148::-;1513:12;:10;:12::i;:::-;1503:22;;:6;;;;;;;;;;:22;;;1495:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1697:1:::1;1660:40;;1681:6;::::0;::::1;;;;;;;;1660:40;;;;;;;;;;;;1728:1;1711:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1590:148::o:0;17218:108::-;1513:12;:10;:12::i;:::-;1503:22;;:6;;;;;;;;;;:22;;;1495:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17307:11:::1;17292:12;:26;;;;17218:108:::0;:::o;5615:45::-;;;;:::o;5160:43::-;;;;;;;;;;;;;;;;;:::o;1376:79::-;1414:7;1441:6;;;;;;;;;;;1434:13;;1376:79;:::o;12291:101::-;1513:12;:10;:12::i;:::-;1503:22;;:6;;;;;;;;;;:22;;;1495:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12372:12:::1;12358:11;;:26;;;;;;;;;;;;;;;;;;12291:101:::0;:::o;5667:47::-;;;;:::o;6664:87::-;6703:13;6736:7;6729:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6664:87;:::o;16887:139::-;1513:12;:10;:12::i;:::-;1503:22;;:6;;;;;;;;;;:22;;;1495:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17000:18:::1;16978:19;:40;;;;16887:139:::0;:::o;16556:279::-;1513:12;:10;:12::i;:::-;1503:22;;:6;;;;;;;;;;:22;;;1495:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16701:11:::1;16686:12;:26;;;;16739:12;16723:13;:28;;;;16777:11;16762:12;:26;;;;16815:12;16799:13;:28;;;;16556:279:::0;;;;:::o;7261:199::-;7366:4;7388:42;7398:12;:10;:12::i;:::-;7412:9;7423:6;7388:9;:42::i;:::-;7448:4;7441:11;;7261:199;;;;:::o;5122:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12400:236::-;12466:19;;;;;;;;;;;12450:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12505:17;;;;;;;;;;;12489:33;;:12;:10;:12::i;:::-;:33;;;12450:72;12442:81;;;;;;12534:23;12560:24;12578:4;12560:9;:24::i;:::-;12534:50;;12595:33;12612:15;12595:16;:33::i;:::-;12431:205;12400:236::o;17457:234::-;1513:12;:10;:12::i;:::-;1503:22;;:6;;;;;;;;;;:22;;;1495:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17574:9:::1;17570:114;17593:8;;:15;;17589:1;:19;17570:114;;;17664:8;17630:18;:31;17649:8;;17658:1;17649:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17630:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17610:3;;;;;:::i;:::-;;;;17570:114;;;;17457:234:::0;;;:::o;7468:184::-;7585:7;7617:11;:18;7629:5;7617:18;;;;;;;;;;;;;;;:27;7636:7;7617:27;;;;;;;;;;;;;;;;7610:34;;7468:184;;;;:::o;17334:115::-;1513:12;:10;:12::i;:::-;1503:22;;:6;;;;;;;;;;:22;;;1495:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17428:13:::1;17411:14;:30;;;;17334:115:::0;:::o;1746:244::-;1513:12;:10;:12::i;:::-;1503:22;;:6;;;;;;;;;;:22;;;1495:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1855:1:::1;1835:22;;:8;:22;;;;1827:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1945:8;1916:38;;1937:6;::::0;::::1;;;;;;;;1916:38;;;;;;;;;;;;1974:8;1965:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1746:244:::0;:::o;135:98::-;188:7;215:10;208:17;;135:98;:::o;8986:369::-;9130:1;9113:19;;:5;:19;;;;9105:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9211:1;9192:21;;:7;:21;;;;9184:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9293:6;9263:11;:18;9275:5;9263:18;;;;;;;;;;;;;;;:27;9282:7;9263:27;;;;;;;;;;;;;;;:36;;;;9331:7;9315:32;;9324:5;9315:32;;;9340:6;9315:32;;;;;;:::i;:::-;;;;;;;;8986:369;;;:::o;9363:2322::-;9501:1;9485:18;;:4;:18;;;;9477:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9578:1;9564:16;;:2;:16;;;;9556:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9648:1;9639:6;:10;9631:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9720:7;:5;:7::i;:::-;9712:15;;:4;:15;;;;:32;;;;;9737:7;:5;:7::i;:::-;9731:13;;:2;:13;;;;9712:32;9708:1259;;;9801:11;;;;;;;;;;;9796:144;;9849:7;:5;:7::i;:::-;9841:15;;:4;:15;;;9833:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9796:144;9974:12;;9964:6;:22;;9956:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10043:4;:10;10048:4;10043:10;;;;;;;;;;;;;;;;;;;;;;;;;10042:11;:24;;;;;10058:4;:8;10063:2;10058:8;;;;;;;;;;;;;;;;;;;;;;;;;10057:9;10042:24;10034:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10132:13;;;;;;;;;;;10126:19;;:2;:19;;;10123:146;;10199:14;;10190:6;10174:13;10184:2;10174:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10166:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10123:146;10285:28;10316:24;10334:4;10316:9;:24::i;:::-;10285:55;;10355:12;10394:19;;10370:20;:43;;10355:58;;10457:12;;10433:20;:36;10430:124;;10526:12;;10503:35;;10430:124;10574:7;:18;;;;;10586:6;;;;;;;;;;;10585:7;10574:18;:43;;;;;10604:13;;;;;;;;;;;10596:21;;:4;:21;;;;10574:43;:58;;;;;10621:11;;;;;;;;;;;10574:58;:87;;;;;10637:18;:24;10656:4;10637:24;;;;;;;;;;;;;;;;;;;;;;;;;10636:25;10574:87;:114;;;;;10666:18;:22;10685:2;10666:22;;;;;;;;;;;;;;;;;;;;;;;;;10665:23;10574:114;10570:386;;;10709:38;10726:20;10709:16;:38::i;:::-;10766:26;10795:21;10766:50;;10860:1;10839:18;:22;10835:106;;;10886:35;10899:21;10886:12;:35::i;:::-;10835:106;10690:266;10570:386;9746:1221;;9708:1259;10979:12;10994:4;10979:19;;11043:18;:24;11062:4;11043:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11071:18;:22;11090:2;11071:22;;;;;;;;;;;;;;;;;;;;;;;;;11043:50;11042:102;;;;11107:13;;;;;;;;;;;11099:21;;:4;:21;;;;:44;;;;;11130:13;;;;;;;;;;;11124:19;;:2;:19;;;;11099:44;11042:102;11038:586;;;11171:5;11161:15;;11038:586;;;11254:13;;;;;;;;;;;11246:21;;:4;:21;;;:55;;;;;11285:15;;;;;;;;;;;11271:30;;:2;:30;;;;11246:55;11243:158;;;11332:12;;11322:7;:22;;;;11373:12;;11363:7;:22;;;;11243:158;11460:13;;;;;;;;;;;11454:19;;:2;:19;;;:55;;;;;11493:15;;;;;;;;;;;11477:32;;:4;:32;;;;11454:55;11450:161;;;11540:13;;11530:7;:23;;;;11582:13;;11572:7;:23;;;;11450:161;11038:586;11636:41;11651:4;11657:2;11661:6;11669:7;11636:14;:41::i;:::-;9466:2219;9363:2322;;;:::o;2354:224::-;2474:7;2507:1;2502;:6;;2510:12;2494:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2534:9;2550:1;2546;:5;;;;:::i;:::-;2534:17;;2569:1;2562:8;;;2354:224;;;;;:::o;12184:99::-;12241:17;;;;;;;;;;;:26;;:34;12268:6;12241:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12184:99;:::o;8315:323::-;8410:7;8468;;8457;:18;;8435:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8556:19;8578:10;:8;:10::i;:::-;8556:32;;8606:24;8618:11;8606:7;:11;;:24;;;;:::i;:::-;8599:31;;;8315:323;;;:::o;11693:483::-;5874:4;5865:6;;:13;;;;;;;;;;;;;;;;;;11771:21:::1;11809:1;11795:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11771:40;;11840:4;11822;11827:1;11822:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11866:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11856:4;11861:1;11856:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11899:62;11916:4;11931:15;;;;;;;;;;;11949:11;11899:8;:62::i;:::-;11972:15;;;;;;;;;;;:66;;;12053:11;12079:1;12095:4;12122;12142:15;11972:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11760:416;5910:5:::0;5901:6;;:14;;;;;;;;;;;;;;;;;;11693:483;:::o;13164:282::-;13320:7;13315:28;;13329:14;:12;:14::i;:::-;13315:28;13354:44;13372:6;13380:9;13391:6;13354:17;:44::i;:::-;13414:7;13409:29;;13423:15;:13;:15::i;:::-;13409:29;13164:282;;;;:::o;16119:164::-;16161:7;16182:15;16199;16218:19;:17;:19::i;:::-;16181:56;;;;16255:20;16267:7;16255;:11;;:20;;;;:::i;:::-;16248:27;;;;16119:164;:::o;2840:132::-;2898:7;2925:39;2929:1;2932;2925:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2918:46;;2840:132;;;;:::o;8646:211::-;8704:1;8693:7;;:12;:28;;;;;8720:1;8709:7;;:12;8693:28;8689:41;;;8723:7;;8689:41;8760:7;;8742:15;:25;;;;8796:7;;8778:15;:25;;;;8826:1;8816:7;:11;;;;8848:1;8838:7;:11;;;;8646:211;:::o;13454:610::-;13601:15;13631:23;13669:12;13696:23;13734:12;13761:13;13788:19;13799:7;13788:10;:19::i;:::-;13586:221;;;;;;;;;;;;13836:28;13856:7;13836;:15;13844:6;13836:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13818:7;:15;13826:6;13818:15;;;;;;;;;;;;;;;:46;;;;13896:39;13919:15;13896:7;:18;13904:9;13896:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13875:7;:18;13883:9;13875:18;;;;;;;;;;;;;;;:60;;;;13946:16;13956:5;13946:9;:16::i;:::-;13973:23;13985:4;13991;13973:11;:23::i;:::-;14029:9;14012:44;;14021:6;14012:44;;;14040:15;14012:44;;;;;;:::i;:::-;;;;;;;;13575:489;;;;;;13454:610;;;:::o;8865:113::-;8919:15;;8909:7;:25;;;;8955:15;;8945:7;:25;;;;8865:113::o;16291:257::-;16342:7;16351;16371:15;16389:7;;16371:25;;16407:15;4637:17;16407:25;;16457:20;4637:17;16457:7;;:11;;:20;;;;:::i;:::-;16447:7;:30;16443:61;;;16487:7;;4637:17;16479:25;;;;;;;;16443:61;16523:7;16532;16515:25;;;;;;16291:257;;;:::o;2980:223::-;3100:7;3132:1;3128;:5;3135:12;3120:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3159:9;3175:1;3171;:5;;;;:::i;:::-;3159:17;;3194:1;3187:8;;;2980:223;;;;;:::o;14483:613::-;14583:7;14605;14627;14649;14671;14693;14729:23;14754:12;14768:13;14798:38;14810:7;14819;;14828;;14798:11;:38::i;:::-;14728:108;;;;;;14847:19;14869:10;:8;:10::i;:::-;14847:32;;14891:15;14908:23;14933:12;14962:46;14974:7;14983:4;14989:5;14996:11;14962;:46::i;:::-;14890:118;;;;;;15027:7;15036:15;15053:4;15059:15;15076:4;15082:5;15019:69;;;;;;;;;;;;;;;;;;;14483:613;;;;;;;:::o;2210:136::-;2268:7;2295:43;2299:1;2302;2295:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2288:50;;2210:136;;;;:::o;2023:179::-;2081:7;2101:9;2117:1;2113;:5;;;;:::i;:::-;2101:17;;2142:1;2137;:6;;2129:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2193:1;2186:8;;;2023:179;;;;:::o;14072:211::-;14125:19;14147:10;:8;:10::i;:::-;14125:32;;14168:13;14184:22;14194:11;14184:5;:9;;:22;;;;:::i;:::-;14168:38;;14242:33;14269:5;14242:7;:22;14258:4;14242:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14217:7;:22;14233:4;14217:22;;;;;;;;;;;;;;;:58;;;;14114:169;;14072:211;:::o;14291:147::-;14369:17;14381:4;14369:7;;:11;;:17;;;;:::i;:::-;14359:7;:27;;;;14410:20;14425:4;14410:10;;:14;;:20;;;;:::i;:::-;14397:10;:33;;;;14291:147;;:::o;15104:465::-;15271:7;15293;15315;15350:12;15365:28;15389:3;15365:19;15377:6;15365:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15350:43;;15404:13;15420:28;15444:3;15420:19;15432:6;15420:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15404:44;;15459:23;15485:28;15507:5;15485:17;15497:4;15485:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15459:54;;15532:15;15549:4;15555:5;15524:37;;;;;;;;;15104:465;;;;;;;:::o;15577:534::-;15771:7;15793;15815;15850:15;15868:24;15880:11;15868:7;:11;;:24;;;;:::i;:::-;15850:42;;15903:12;15918:21;15927:11;15918:4;:8;;:21;;;;:::i;:::-;15903:36;;15950:13;15966:22;15976:11;15966:5;:9;;:22;;;;:::i;:::-;15950:38;;15999:23;16025:28;16047:5;16025:17;16037:4;16025:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15999:54;;16072:7;16081:15;16098:4;16064:39;;;;;;;;;;15577:534;;;;;;;;:::o;2586:246::-;2644:7;2673:1;2668;:6;2664:47;;;2698:1;2691:8;;;;2664:47;2721:9;2737:1;2733;:5;;;;:::i;:::-;2721:17;;2766:1;2761;2757;:5;;;;:::i;:::-;:10;2749:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2823:1;2816:8;;;2586:246;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:307::-;4139:1;4149:113;4163:6;4160:1;4157:13;4149:113;;;4248:1;4243:3;4239:11;4233:18;4229:1;4224:3;4220:11;4213:39;4185:2;4182:1;4178:10;4173:15;;4149:113;;;4280:6;4277:1;4274:13;4271:101;;;4360:1;4351:6;4346:3;4342:16;4335:27;4271:101;4120:258;4071:307;;;:::o;4384:364::-;4472:3;4500:39;4533:5;4500:39;:::i;:::-;4555:71;4619:6;4614:3;4555:71;:::i;:::-;4548:78;;4635:52;4680:6;4675:3;4668:4;4661:5;4657:16;4635:52;:::i;:::-;4712:29;4734:6;4712:29;:::i;:::-;4707:3;4703:39;4696:46;;4476:272;4384:364;;;;:::o;4754:313::-;4867:4;4905:2;4894:9;4890:18;4882:26;;4954:9;4948:4;4944:20;4940:1;4929:9;4925:17;4918:47;4982:78;5055:4;5046:6;4982:78;:::i;:::-;4974:86;;4754:313;;;;:::o;5073:77::-;5110:7;5139:5;5128:16;;5073:77;;;:::o;5156:122::-;5229:24;5247:5;5229:24;:::i;:::-;5222:5;5219:35;5209:63;;5268:1;5265;5258:12;5209:63;5156:122;:::o;5284:139::-;5330:5;5368:6;5355:20;5346:29;;5384:33;5411:5;5384:33;:::i;:::-;5284:139;;;;:::o;5429:474::-;5497:6;5505;5554:2;5542:9;5533:7;5529:23;5525:32;5522:119;;;5560:79;;:::i;:::-;5522:119;5680:1;5705:53;5750:7;5741:6;5730:9;5726:22;5705:53;:::i;:::-;5695:63;;5651:117;5807:2;5833:53;5878:7;5869:6;5858:9;5854:22;5833:53;:::i;:::-;5823:63;;5778:118;5429:474;;;;;:::o;5909:90::-;5943:7;5986:5;5979:13;5972:21;5961:32;;5909:90;;;:::o;6005:109::-;6086:21;6101:5;6086:21;:::i;:::-;6081:3;6074:34;6005:109;;:::o;6120:210::-;6207:4;6245:2;6234:9;6230:18;6222:26;;6258:65;6320:1;6309:9;6305:17;6296:6;6258:65;:::i;:::-;6120:210;;;;:::o;6336:60::-;6364:3;6385:5;6378:12;;6336:60;;;:::o;6402:142::-;6452:9;6485:53;6503:34;6512:24;6530:5;6512:24;:::i;:::-;6503:34;:::i;:::-;6485:53;:::i;:::-;6472:66;;6402:142;;;:::o;6550:126::-;6600:9;6633:37;6664:5;6633:37;:::i;:::-;6620:50;;6550:126;;;:::o;6682:152::-;6758:9;6791:37;6822:5;6791:37;:::i;:::-;6778:50;;6682:152;;;:::o;6840:183::-;6953:63;7010:5;6953:63;:::i;:::-;6948:3;6941:76;6840:183;;:::o;7029:274::-;7148:4;7186:2;7175:9;7171:18;7163:26;;7199:97;7293:1;7282:9;7278:17;7269:6;7199:97;:::i;:::-;7029:274;;;;:::o;7309:118::-;7396:24;7414:5;7396:24;:::i;:::-;7391:3;7384:37;7309:118;;:::o;7433:222::-;7526:4;7564:2;7553:9;7549:18;7541:26;;7577:71;7645:1;7634:9;7630:17;7621:6;7577:71;:::i;:::-;7433:222;;;;:::o;7661:619::-;7738:6;7746;7754;7803:2;7791:9;7782:7;7778:23;7774:32;7771:119;;;7809:79;;:::i;:::-;7771:119;7929:1;7954:53;7999:7;7990:6;7979:9;7975:22;7954:53;:::i;:::-;7944:63;;7900:117;8056:2;8082:53;8127:7;8118:6;8107:9;8103:22;8082:53;:::i;:::-;8072:63;;8027:118;8184:2;8210:53;8255:7;8246:6;8235:9;8231:22;8210:53;:::i;:::-;8200:63;;8155:118;7661:619;;;;;:::o;8286:86::-;8321:7;8361:4;8354:5;8350:16;8339:27;;8286:86;;;:::o;8378:112::-;8461:22;8477:5;8461:22;:::i;:::-;8456:3;8449:35;8378:112;;:::o;8496:214::-;8585:4;8623:2;8612:9;8608:18;8600:26;;8636:67;8700:1;8689:9;8685:17;8676:6;8636:67;:::i;:::-;8496:214;;;;:::o;8716:118::-;8803:24;8821:5;8803:24;:::i;:::-;8798:3;8791:37;8716:118;;:::o;8840:222::-;8933:4;8971:2;8960:9;8956:18;8948:26;;8984:71;9052:1;9041:9;9037:17;9028:6;8984:71;:::i;:::-;8840:222;;;;:::o;9068:329::-;9127:6;9176:2;9164:9;9155:7;9151:23;9147:32;9144:119;;;9182:79;;:::i;:::-;9144:119;9302:1;9327:53;9372:7;9363:6;9352:9;9348:22;9327:53;:::i;:::-;9317:63;;9273:117;9068:329;;;;:::o;9403:116::-;9473:21;9488:5;9473:21;:::i;:::-;9466:5;9463:32;9453:60;;9509:1;9506;9499:12;9453:60;9403:116;:::o;9525:133::-;9568:5;9606:6;9593:20;9584:29;;9622:30;9646:5;9622:30;:::i;:::-;9525:133;;;;:::o;9664:323::-;9720:6;9769:2;9757:9;9748:7;9744:23;9740:32;9737:119;;;9775:79;;:::i;:::-;9737:119;9895:1;9920:50;9962:7;9953:6;9942:9;9938:22;9920:50;:::i;:::-;9910:60;;9866:114;9664:323;;;;:::o;9993:329::-;10052:6;10101:2;10089:9;10080:7;10076:23;10072:32;10069:119;;;10107:79;;:::i;:::-;10069:119;10227:1;10252:53;10297:7;10288:6;10277:9;10273:22;10252:53;:::i;:::-;10242:63;;10198:117;9993:329;;;;:::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:180::-;14641:77;14638:1;14631:88;14738:4;14735:1;14728:15;14762:4;14759:1;14752:15;14779:320;14823:6;14860:1;14854:4;14850:12;14840:22;;14907:1;14901:4;14897:12;14928:18;14918:81;;14984:4;14976:6;14972:17;14962:27;;14918:81;15046:2;15038:6;15035:14;15015:18;15012:38;15009:84;;;15065:18;;:::i;:::-;15009:84;14830:269;14779:320;;;:::o;15105:225::-;15245:34;15241:1;15233:6;15229:14;15222:58;15314:8;15309:2;15301:6;15297:15;15290:33;15105:225;:::o;15336:366::-;15478:3;15499:67;15563:2;15558:3;15499:67;:::i;:::-;15492:74;;15575:93;15664:3;15575:93;:::i;:::-;15693:2;15688:3;15684:12;15677:19;;15336:366;;;:::o;15708:419::-;15874:4;15912:2;15901:9;15897:18;15889:26;;15961:9;15955:4;15951:20;15947:1;15936:9;15932:17;15925:47;15989:131;16115:4;15989:131;:::i;:::-;15981:139;;15708:419;;;:::o;16133:223::-;16273:34;16269:1;16261:6;16257:14;16250:58;16342:6;16337:2;16329:6;16325:15;16318:31;16133:223;:::o;16362:366::-;16504:3;16525:67;16589:2;16584:3;16525:67;:::i;:::-;16518:74;;16601:93;16690:3;16601:93;:::i;:::-;16719:2;16714:3;16710:12;16703:19;;16362:366;;;:::o;16734:419::-;16900:4;16938:2;16927:9;16923:18;16915:26;;16987:9;16981:4;16977:20;16973:1;16962:9;16958:17;16951:47;17015:131;17141:4;17015:131;:::i;:::-;17007:139;;16734:419;;;:::o;17159:221::-;17299:34;17295:1;17287:6;17283:14;17276:58;17368:4;17363:2;17355:6;17351:15;17344:29;17159:221;:::o;17386:366::-;17528:3;17549:67;17613:2;17608:3;17549:67;:::i;:::-;17542:74;;17625:93;17714:3;17625:93;:::i;:::-;17743:2;17738:3;17734:12;17727:19;;17386:366;;;:::o;17758:419::-;17924:4;17962:2;17951:9;17947:18;17939:26;;18011:9;18005:4;18001:20;17997:1;17986:9;17982:17;17975:47;18039:131;18165:4;18039:131;:::i;:::-;18031:139;;17758:419;;;:::o;18183:224::-;18323:34;18319:1;18311:6;18307:14;18300:58;18392:7;18387:2;18379:6;18375:15;18368:32;18183:224;:::o;18413:366::-;18555:3;18576:67;18640:2;18635:3;18576:67;:::i;:::-;18569:74;;18652:93;18741:3;18652:93;:::i;:::-;18770:2;18765:3;18761:12;18754:19;;18413:366;;;:::o;18785:419::-;18951:4;18989:2;18978:9;18974:18;18966:26;;19038:9;19032:4;19028:20;19024:1;19013:9;19009:17;19002:47;19066:131;19192:4;19066:131;:::i;:::-;19058:139;;18785:419;;;:::o;19210:222::-;19350:34;19346:1;19338:6;19334:14;19327:58;19419:5;19414:2;19406:6;19402:15;19395:30;19210:222;:::o;19438:366::-;19580:3;19601:67;19665:2;19660:3;19601:67;:::i;:::-;19594:74;;19677:93;19766:3;19677:93;:::i;:::-;19795:2;19790:3;19786:12;19779:19;;19438:366;;;:::o;19810:419::-;19976:4;20014:2;20003:9;19999:18;19991:26;;20063:9;20057:4;20053:20;20049:1;20038:9;20034:17;20027:47;20091:131;20217:4;20091:131;:::i;:::-;20083:139;;19810:419;;;:::o;20235:228::-;20375:34;20371:1;20363:6;20359:14;20352:58;20444:11;20439:2;20431:6;20427:15;20420:36;20235:228;:::o;20469:366::-;20611:3;20632:67;20696:2;20691:3;20632:67;:::i;:::-;20625:74;;20708:93;20797:3;20708:93;:::i;:::-;20826:2;20821:3;20817:12;20810:19;;20469:366;;;:::o;20841:419::-;21007:4;21045:2;21034:9;21030:18;21022:26;;21094:9;21088:4;21084:20;21080:1;21069:9;21065:17;21058:47;21122:131;21248:4;21122:131;:::i;:::-;21114:139;;20841:419;;;:::o;21266:250::-;21406:34;21402:1;21394:6;21390:14;21383:58;21475:33;21470:2;21462:6;21458:15;21451:58;21266:250;:::o;21522:366::-;21664:3;21685:67;21749:2;21744:3;21685:67;:::i;:::-;21678:74;;21761:93;21850:3;21761:93;:::i;:::-;21879:2;21874:3;21870:12;21863:19;;21522:366;;;:::o;21894:419::-;22060:4;22098:2;22087:9;22083:18;22075:26;;22147:9;22141:4;22137:20;22133:1;22122:9;22118:17;22111:47;22175:131;22301:4;22175:131;:::i;:::-;22167:139;;21894:419;;;:::o;22319:178::-;22459:30;22455:1;22447:6;22443:14;22436:54;22319:178;:::o;22503:366::-;22645:3;22666:67;22730:2;22725:3;22666:67;:::i;:::-;22659:74;;22742:93;22831:3;22742:93;:::i;:::-;22860:2;22855:3;22851:12;22844:19;;22503:366;;;:::o;22875:419::-;23041:4;23079:2;23068:9;23064:18;23056:26;;23128:9;23122:4;23118:20;23114:1;23103:9;23099:17;23092:47;23156:131;23282:4;23156:131;:::i;:::-;23148:139;;22875:419;;;:::o;23300:222::-;23440:34;23436:1;23428:6;23424:14;23417:58;23509:5;23504:2;23496:6;23492:15;23485:30;23300:222;:::o;23528:366::-;23670:3;23691:67;23755:2;23750:3;23691:67;:::i;:::-;23684:74;;23767:93;23856:3;23767:93;:::i;:::-;23885:2;23880:3;23876:12;23869:19;;23528:366;;;:::o;23900:419::-;24066:4;24104:2;24093:9;24089:18;24081:26;;24153:9;24147:4;24143:20;24139:1;24128:9;24124:17;24117:47;24181:131;24307:4;24181:131;:::i;:::-;24173:139;;23900:419;;;:::o;24325:305::-;24365:3;24384:20;24402:1;24384:20;:::i;:::-;24379:25;;24418:20;24436:1;24418:20;:::i;:::-;24413:25;;24572:1;24504:66;24500:74;24497:1;24494:81;24491:107;;;24578:18;;:::i;:::-;24491:107;24622:1;24619;24615:9;24608:16;;24325:305;;;;:::o;24636:222::-;24776:34;24772:1;24764:6;24760:14;24753:58;24845:5;24840:2;24832:6;24828:15;24821:30;24636:222;:::o;24864:366::-;25006:3;25027:67;25091:2;25086:3;25027:67;:::i;:::-;25020:74;;25103:93;25192:3;25103:93;:::i;:::-;25221:2;25216:3;25212:12;25205:19;;24864:366;;;:::o;25236:419::-;25402:4;25440:2;25429:9;25425:18;25417:26;;25489:9;25483:4;25479:20;25475:1;25464:9;25460:17;25453:47;25517:131;25643:4;25517:131;:::i;:::-;25509:139;;25236:419;;;:::o;25661:191::-;25701:4;25721:20;25739:1;25721:20;:::i;:::-;25716:25;;25755:20;25773:1;25755:20;:::i;:::-;25750:25;;25794:1;25791;25788:8;25785:34;;;25799:18;;:::i;:::-;25785:34;25844:1;25841;25837:9;25829:17;;25661:191;;;;:::o;25858:229::-;25998:34;25994:1;25986:6;25982:14;25975:58;26067:12;26062:2;26054:6;26050:15;26043:37;25858:229;:::o;26093:366::-;26235:3;26256:67;26320:2;26315:3;26256:67;:::i;:::-;26249:74;;26332:93;26421:3;26332:93;:::i;:::-;26450:2;26445:3;26441:12;26434:19;;26093:366;;;:::o;26465:419::-;26631:4;26669:2;26658:9;26654:18;26646:26;;26718:9;26712:4;26708:20;26704:1;26693:9;26689:17;26682:47;26746:131;26872:4;26746:131;:::i;:::-;26738:139;;26465:419;;;:::o;26890:143::-;26947:5;26978:6;26972:13;26963:22;;26994:33;27021:5;26994:33;:::i;:::-;26890:143;;;;:::o;27039:351::-;27109:6;27158:2;27146:9;27137:7;27133:23;27129:32;27126:119;;;27164:79;;:::i;:::-;27126:119;27284:1;27309:64;27365:7;27356:6;27345:9;27341:22;27309:64;:::i;:::-;27299:74;;27255:128;27039:351;;;;:::o;27396:85::-;27441:7;27470:5;27459:16;;27396:85;;;:::o;27487:158::-;27545:9;27578:61;27596:42;27605:32;27631:5;27605:32;:::i;:::-;27596:42;:::i;:::-;27578:61;:::i;:::-;27565:74;;27487:158;;;:::o;27651:147::-;27746:45;27785:5;27746:45;:::i;:::-;27741:3;27734:58;27651:147;;:::o;27804:114::-;27871:6;27905:5;27899:12;27889:22;;27804:114;;;:::o;27924:184::-;28023:11;28057:6;28052:3;28045:19;28097:4;28092:3;28088:14;28073:29;;27924:184;;;;:::o;28114:132::-;28181:4;28204:3;28196:11;;28234:4;28229:3;28225:14;28217:22;;28114:132;;;:::o;28252:108::-;28329:24;28347:5;28329:24;:::i;:::-;28324:3;28317:37;28252:108;;:::o;28366:179::-;28435:10;28456:46;28498:3;28490:6;28456:46;:::i;:::-;28534:4;28529:3;28525:14;28511:28;;28366:179;;;;:::o;28551:113::-;28621:4;28653;28648:3;28644:14;28636:22;;28551:113;;;:::o;28700:732::-;28819:3;28848:54;28896:5;28848:54;:::i;:::-;28918:86;28997:6;28992:3;28918:86;:::i;:::-;28911:93;;29028:56;29078:5;29028:56;:::i;:::-;29107:7;29138:1;29123:284;29148:6;29145:1;29142:13;29123:284;;;29224:6;29218:13;29251:63;29310:3;29295:13;29251:63;:::i;:::-;29244:70;;29337:60;29390:6;29337:60;:::i;:::-;29327:70;;29183:224;29170:1;29167;29163:9;29158:14;;29123:284;;;29127:14;29423:3;29416:10;;28824:608;;;28700:732;;;;:::o;29438:831::-;29701:4;29739:3;29728:9;29724:19;29716:27;;29753:71;29821:1;29810:9;29806:17;29797:6;29753:71;:::i;:::-;29834:80;29910:2;29899:9;29895:18;29886:6;29834:80;:::i;:::-;29961:9;29955:4;29951:20;29946:2;29935:9;29931:18;29924:48;29989:108;30092:4;30083:6;29989:108;:::i;:::-;29981:116;;30107:72;30175:2;30164:9;30160:18;30151:6;30107:72;:::i;:::-;30189:73;30257:3;30246:9;30242:19;30233:6;30189:73;:::i;:::-;29438:831;;;;;;;;:::o;30275:180::-;30323:77;30320:1;30313:88;30420:4;30417:1;30410:15;30444:4;30441:1;30434:15;30461:185;30501:1;30518:20;30536:1;30518:20;:::i;:::-;30513:25;;30552:20;30570:1;30552:20;:::i;:::-;30547:25;;30591:1;30581:35;;30596:18;;:::i;:::-;30581:35;30638:1;30635;30631:9;30626:14;;30461:185;;;;:::o;30652:177::-;30792:29;30788:1;30780:6;30776:14;30769:53;30652:177;:::o;30835:366::-;30977:3;30998:67;31062:2;31057:3;30998:67;:::i;:::-;30991:74;;31074:93;31163:3;31074:93;:::i;:::-;31192:2;31187:3;31183:12;31176:19;;30835:366;;;:::o;31207:419::-;31373:4;31411:2;31400:9;31396:18;31388:26;;31460:9;31454:4;31450:20;31446:1;31435:9;31431:17;31424:47;31488:131;31614:4;31488:131;:::i;:::-;31480:139;;31207:419;;;:::o;31632:348::-;31672:7;31695:20;31713:1;31695:20;:::i;:::-;31690:25;;31729:20;31747:1;31729:20;:::i;:::-;31724:25;;31917:1;31849:66;31845:74;31842:1;31839:81;31834:1;31827:9;31820:17;31816:105;31813:131;;;31924:18;;:::i;:::-;31813:131;31972:1;31969;31965:9;31954:20;;31632:348;;;;:::o;31986:220::-;32126:34;32122:1;32114:6;32110:14;32103:58;32195:3;32190:2;32182:6;32178:15;32171:28;31986:220;:::o;32212:366::-;32354:3;32375:67;32439:2;32434:3;32375:67;:::i;:::-;32368:74;;32451:93;32540:3;32451:93;:::i;:::-;32569:2;32564:3;32560:12;32553:19;;32212:366;;;:::o;32584:419::-;32750:4;32788:2;32777:9;32773:18;32765:26;;32837:9;32831:4;32827:20;32823:1;32812:9;32808:17;32801:47;32865:131;32991:4;32865:131;:::i;:::-;32857:139;;32584:419;;;:::o

Swarm Source

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