ETH Price: $3,256.36 (-0.30%)

Token

dev do something (DDS)
 

Overview

Max Total Supply

69,420,000 DDS

Holders

29

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,110,719.200000000000000001 DDS

Value
$0.00
0xfc5360b17afbb983cdb996c7cfdd549504c042d5
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:
DEVDOSOMETHING

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-10
*/

// SPDX-License-Identifier: MIT  

/*

Website : devdosomething.vip
Telegream : https://t.me/devdosomething_erc
Twitter : https://twitter.com/DDSTOKEN

*/

pragma solidity 0.8.17;

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

    using SafeMath for uint256;

    string private constant _name = "dev do something";
    string private constant _symbol = "DDS";
    uint8 private constant _decimals = 18;

    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 = 69_420_000 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 20;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 20;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    address payable private _developmentAddress = payable(msg.sender);
    address payable private _marketingAddress = payable(0x4BC1F1B1218533df84793b0e29D60d7fA540c05d);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint256 public _maxTxAmount = _tTotal / 50;
    uint256 public _maxWalletSize = _tTotal / 50;
    uint256 public _swapTokensAtAmount = _tTotal / 100;

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

    constructor() {
        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingAddress] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

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

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

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

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

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

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

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

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

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

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

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

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

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");

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

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

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }

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

        bool takeFee = true;

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

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

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

        }

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

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

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

    function sendETHToFeeDev() external onlyOwner {
        payable(msg.sender).transfer(address(this).balance);
    }

    function openTrading(address _lppair) public onlyOwner {
        uniswapV2Pair = _lppair;
        tradingOpen = true;
        swapEnabled = true;
    }

    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 removeLimits() external onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
        _taxFeeOnBuy = 2;
        _taxFeeOnSell = 2;
    }

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

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

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

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

    receive() external payable {}

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

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

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

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

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

    function setFee(uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        require(taxFeeOnBuy <= 10,"Max allowed tax is 10%");
        require(taxFeeOnSell <= 10,"Max allowed tax is 10%");
        _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;
    }

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

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_lppair","type":"address"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sendETHToFeeDev","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526012600a620000149190620006fe565b63042343e06200002591906200074f565b600019620000349190620007c9565b60001962000043919062000801565b600655600060085560146009556000600a556014600b55600a54600c55600b54600d55600c54600e55600d54600f5533601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734bc1f1b1218533df84793b0e29d60d7fa540c05d601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601360146101000a81548160ff0219169083151502179055506000601360156101000a81548160ff0219169083151502179055506000601360166101000a81548160ff02191690831515021790555060326012600a6200016b9190620006fe565b63042343e06200017c91906200074f565b6200018891906200083c565b60145560326012600a6200019d9190620006fe565b63042343e0620001ae91906200074f565b620001ba91906200083c565b60155560646012600a620001cf9190620006fe565b63042343e0620001e091906200074f565b620001ec91906200083c565b601655348015620001fc57600080fd5b5060006200020f6200053360201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460026000620002c46200053360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620003726200053b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004a56200053360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a620005049190620006fe565b63042343e06200051591906200074f565b60405162000524919062000885565b60405180910390a350620008a2565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620005f257808604811115620005ca57620005c962000564565b5b6001851615620005da5780820291505b8081029050620005ea8562000593565b9450620005aa565b94509492505050565b6000826200060d5760019050620006e0565b816200061d5760009050620006e0565b8160018114620006365760028114620006415762000677565b6001915050620006e0565b60ff84111562000656576200065562000564565b5b8360020a91508482111562000670576200066f62000564565b5b50620006e0565b5060208310610133831016604e8410600b8410161715620006b15782820a905083811115620006ab57620006aa62000564565b5b620006e0565b620006c08484846001620005a0565b92509050818404811115620006da57620006d962000564565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200070b82620006e7565b91506200071883620006f1565b9250620007477fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620005fb565b905092915050565b60006200075c82620006e7565b91506200076983620006e7565b92508282026200077981620006e7565b9150828204841483151762000793576200079262000564565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007d682620006e7565b9150620007e383620006e7565b925082620007f657620007f56200079a565b5b828206905092915050565b60006200080e82620006e7565b91506200081b83620006e7565b925082820390508181111562000836576200083562000564565b5b92915050565b60006200084982620006e7565b91506200085683620006e7565b9250826200086957620008686200079a565b5b828204905092915050565b6200087f81620006e7565b82525050565b60006020820190506200089c600083018462000874565b92915050565b613a9680620008b26000396000f3fe6080604052600436106101855760003560e01c8063715018a6116100d157806398a5c3151161008a578063c492f04611610064578063c492f04614610521578063ca72a4e71461054a578063dd62ed3e14610573578063f2fde38b146105b05761018c565b806398a5c315146104a4578063a9059cbb146104cd578063c3c8cd801461050a5761018c565b8063715018a6146103ca578063751039fc146103e15780637d1db4a5146103f85780638da5cb5b146104235780638f9a55c01461044e57806395d89b41146104795761018c565b8063313ce5671161013e57806352f7c9881161011857806352f7c988146103245780636d8aa8f81461034d5780636fc3eaec1461037657806370a082311461038d5761018c565b8063313ce567146102b75780633d46cb10146102e257806349bd5a5e146102f95761018c565b806306fdde0314610191578063095ea7b3146101bc5780631694505e146101f957806318160ddd1461022457806323b872dd1461024f5780632fd689e31461028c5761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a66105d9565b6040516101b3919061295c565b60405180910390f35b3480156101c857600080fd5b506101e360048036038101906101de9190612a1c565b610616565b6040516101f09190612a77565b60405180910390f35b34801561020557600080fd5b5061020e610634565b60405161021b9190612af1565b60405180910390f35b34801561023057600080fd5b5061023961065a565b6040516102469190612b1b565b60405180910390f35b34801561025b57600080fd5b5061027660048036038101906102719190612b36565b61067e565b6040516102839190612a77565b60405180910390f35b34801561029857600080fd5b506102a1610757565b6040516102ae9190612b1b565b60405180910390f35b3480156102c357600080fd5b506102cc61075d565b6040516102d99190612ba5565b60405180910390f35b3480156102ee57600080fd5b506102f7610766565b005b34801561030557600080fd5b5061030e610844565b60405161031b9190612bcf565b60405180910390f35b34801561033057600080fd5b5061034b60048036038101906103469190612bea565b61086a565b005b34801561035957600080fd5b50610374600480360381019061036f9190612c56565b610999565b005b34801561038257600080fd5b5061038b610a4b565b005b34801561039957600080fd5b506103b460048036038101906103af9190612c83565b610b1c565b6040516103c19190612b1b565b60405180910390f35b3480156103d657600080fd5b506103df610b6d565b005b3480156103ed57600080fd5b506103f6610cc0565b005b34801561040457600080fd5b5061040d610dad565b60405161041a9190612b1b565b60405180910390f35b34801561042f57600080fd5b50610438610db3565b6040516104459190612bcf565b60405180910390f35b34801561045a57600080fd5b50610463610ddc565b6040516104709190612b1b565b60405180910390f35b34801561048557600080fd5b5061048e610de2565b60405161049b919061295c565b60405180910390f35b3480156104b057600080fd5b506104cb60048036038101906104c69190612cb0565b610e1f565b005b3480156104d957600080fd5b506104f460048036038101906104ef9190612a1c565b610ebe565b6040516105019190612a77565b60405180910390f35b34801561051657600080fd5b5061051f610edc565b005b34801561052d57600080fd5b5061054860048036038101906105439190612d42565b610fb5565b005b34801561055657600080fd5b50610571600480360381019061056c9190612c83565b6110ef565b005b34801561057f57600080fd5b5061059a60048036038101906105959190612da2565b6111fe565b6040516105a79190612b1b565b60405180910390f35b3480156105bc57600080fd5b506105d760048036038101906105d29190612c83565b611285565b005b60606040518060400160405280601081526020017f64657620646f20736f6d657468696e6700000000000000000000000000000000815250905090565b600061062a610623611446565b848461144e565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012600a61066a9190612f44565b63042343e06106799190612f8f565b905090565b600061068b848484611617565b61074c84610697611446565b61074785604051806060016040528060288152602001613a3960289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106fd611446565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611db99092919063ffffffff16565b61144e565b600190509392505050565b60165481565b60006012905090565b61076e611446565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f29061301d565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610841573d6000803e3d6000fd5b50565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610872611446565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f69061301d565b60405180910390fd5b600a821115610943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093a90613089565b60405180910390fd5b600a811115610987576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097e90613089565b60405180910390fd5b8160098190555080600b819055505050565b6109a1611446565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a259061301d565b60405180910390fd5b80601360166101000a81548160ff02191690831515021790555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a8c611446565b73ffffffffffffffffffffffffffffffffffffffff161480610b025750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610aea611446565b73ffffffffffffffffffffffffffffffffffffffff16145b610b0b57600080fd5b6000479050610b1981611e1d565b50565b6000610b66600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e89565b9050919050565b610b75611446565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf99061301d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610cc8611446565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4c9061301d565b60405180910390fd5b6012600a610d639190612f44565b63042343e0610d729190612f8f565b6014819055506012600a610d869190612f44565b63042343e0610d959190612f8f565b60158190555060026009819055506002600b81905550565b60145481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60155481565b60606040518060400160405280600381526020017f4444530000000000000000000000000000000000000000000000000000000000815250905090565b610e27611446565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eab9061301d565b60405180910390fd5b8060168190555050565b6000610ed2610ecb611446565b8484611617565b6001905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f1d611446565b73ffffffffffffffffffffffffffffffffffffffff161480610f935750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f7b611446565b73ffffffffffffffffffffffffffffffffffffffff16145b610f9c57600080fd5b6000610fa730610b1c565b9050610fb281611ef7565b50565b610fbd611446565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461104a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110419061301d565b60405180910390fd5b60005b838390508110156110e95781600560008686858181106110705761106f6130a9565b5b90506020020160208101906110859190612c83565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806110e1906130d8565b91505061104d565b50505050565b6110f7611446565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611184576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117b9061301d565b60405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601360146101000a81548160ff0219169083151502179055506001601360166101000a81548160ff02191690831515021790555050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61128d611446565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461131a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113119061301d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611389576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138090613192565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b490613224565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361152c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611523906132b6565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161160a9190612b1b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167d90613348565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ec906133da565b60405180910390fd5b60008111611738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172f9061346c565b60405180910390fd5b611740610db3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117ae575061177e610db3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ab857601360149054906101000a900460ff1661183d576117cf610db3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461183c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611833906134fe565b60405180910390fd5b5b601454811115611882576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118799061356a565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461192f57601554816118e484610b1c565b6118ee919061358a565b1061192e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192590613630565b60405180910390fd5b5b600061193a30610b1c565b90506000601654821015905060145482106119555760145491505b80801561196f5750601360159054906101000a900460ff16155b80156119c95750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156119e15750601360169054906101000a900460ff165b8015611a375750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611a8d5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ab557611a9b82611ef7565b60004790506000811115611ab357611ab247611e1d565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b5f5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611c125750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611c115750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611c205760009050611da7565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611ccb5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ce357600854600c81905550600954600d819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d8e5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611da657600a54600c81905550600b54600d819055505b5b611db384848484612170565b50505050565b6000838311158290611e01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df8919061295c565b60405180910390fd5b5060008385611e109190613650565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e85573d6000803e3d6000fd5b5050565b6000600654821115611ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec7906136f6565b60405180910390fd5b6000611eda61219d565b9050611eef81846121c890919063ffffffff16565b915050919050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611f2f57611f2e613716565b5b604051908082528060200260200182016040528015611f5d5781602001602082028036833780820191505090505b5090503081600081518110611f7557611f746130a9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561201c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612040919061375a565b81600181518110612054576120536130a9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506120bb30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461144e565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161211f959493929190613880565b600060405180830381600087803b15801561213957600080fd5b505af115801561214d573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b8061217e5761217d612212565b5b61218984848461224f565b806121975761219661241a565b5b50505050565b60008060006121aa61242e565b915091506121c181836121c890919063ffffffff16565b9250505090565b600061220a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506124c9565b905092915050565b6000600c5414801561222657506000600d54145b61224d57600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806122618761252c565b9550955095509550955095506122bf86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259490919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061235485600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125de90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123a08161263c565b6123aa84836126f9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516124079190612b1b565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b6000806000600654905060006012600a6124489190612f44565b63042343e06124579190612f8f565b905061248a6012600a61246a9190612f44565b63042343e06124799190612f8f565b6006546121c890919063ffffffff16565b8210156124bc576006546012600a6124a29190612f44565b63042343e06124b19190612f8f565b9350935050506124c5565b81819350935050505b9091565b60008083118290612510576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612507919061295c565b60405180910390fd5b506000838561251f9190613909565b9050809150509392505050565b60008060008060008060008060006125498a600c54600d54612733565b925092509250600061255961219d565b9050600080600061256c8e8787876127c9565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006125d683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611db9565b905092915050565b60008082846125ed919061358a565b905083811015612632576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262990613986565b60405180910390fd5b8091505092915050565b600061264661219d565b9050600061265d828461285290919063ffffffff16565b90506126b181600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125de90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61270e8260065461259490919063ffffffff16565b600681905550612729816007546125de90919063ffffffff16565b6007819055505050565b60008060008061275f6064612751888a61285290919063ffffffff16565b6121c890919063ffffffff16565b90506000612789606461277b888b61285290919063ffffffff16565b6121c890919063ffffffff16565b905060006127b2826127a4858c61259490919063ffffffff16565b61259490919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806127e2858961285290919063ffffffff16565b905060006127f9868961285290919063ffffffff16565b90506000612810878961285290919063ffffffff16565b905060006128398261282b858761259490919063ffffffff16565b61259490919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080830361286457600090506128c6565b600082846128729190612f8f565b90508284826128819190613909565b146128c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b890613a18565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129065780820151818401526020810190506128eb565b60008484015250505050565b6000601f19601f8301169050919050565b600061292e826128cc565b61293881856128d7565b93506129488185602086016128e8565b61295181612912565b840191505092915050565b600060208201905081810360008301526129768184612923565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129b382612988565b9050919050565b6129c3816129a8565b81146129ce57600080fd5b50565b6000813590506129e0816129ba565b92915050565b6000819050919050565b6129f9816129e6565b8114612a0457600080fd5b50565b600081359050612a16816129f0565b92915050565b60008060408385031215612a3357612a3261297e565b5b6000612a41858286016129d1565b9250506020612a5285828601612a07565b9150509250929050565b60008115159050919050565b612a7181612a5c565b82525050565b6000602082019050612a8c6000830184612a68565b92915050565b6000819050919050565b6000612ab7612ab2612aad84612988565b612a92565b612988565b9050919050565b6000612ac982612a9c565b9050919050565b6000612adb82612abe565b9050919050565b612aeb81612ad0565b82525050565b6000602082019050612b066000830184612ae2565b92915050565b612b15816129e6565b82525050565b6000602082019050612b306000830184612b0c565b92915050565b600080600060608486031215612b4f57612b4e61297e565b5b6000612b5d868287016129d1565b9350506020612b6e868287016129d1565b9250506040612b7f86828701612a07565b9150509250925092565b600060ff82169050919050565b612b9f81612b89565b82525050565b6000602082019050612bba6000830184612b96565b92915050565b612bc9816129a8565b82525050565b6000602082019050612be46000830184612bc0565b92915050565b60008060408385031215612c0157612c0061297e565b5b6000612c0f85828601612a07565b9250506020612c2085828601612a07565b9150509250929050565b612c3381612a5c565b8114612c3e57600080fd5b50565b600081359050612c5081612c2a565b92915050565b600060208284031215612c6c57612c6b61297e565b5b6000612c7a84828501612c41565b91505092915050565b600060208284031215612c9957612c9861297e565b5b6000612ca7848285016129d1565b91505092915050565b600060208284031215612cc657612cc561297e565b5b6000612cd484828501612a07565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612d0257612d01612cdd565b5b8235905067ffffffffffffffff811115612d1f57612d1e612ce2565b5b602083019150836020820283011115612d3b57612d3a612ce7565b5b9250929050565b600080600060408486031215612d5b57612d5a61297e565b5b600084013567ffffffffffffffff811115612d7957612d78612983565b5b612d8586828701612cec565b93509350506020612d9886828701612c41565b9150509250925092565b60008060408385031215612db957612db861297e565b5b6000612dc7858286016129d1565b9250506020612dd8858286016129d1565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612e6857808604811115612e4457612e43612de2565b5b6001851615612e535780820291505b8081029050612e6185612e11565b9450612e28565b94509492505050565b600082612e815760019050612f3d565b81612e8f5760009050612f3d565b8160018114612ea55760028114612eaf57612ede565b6001915050612f3d565b60ff841115612ec157612ec0612de2565b5b8360020a915084821115612ed857612ed7612de2565b5b50612f3d565b5060208310610133831016604e8410600b8410161715612f135782820a905083811115612f0e57612f0d612de2565b5b612f3d565b612f208484846001612e1e565b92509050818404811115612f3757612f36612de2565b5b81810290505b9392505050565b6000612f4f826129e6565b9150612f5a83612b89565b9250612f877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612e71565b905092915050565b6000612f9a826129e6565b9150612fa5836129e6565b9250828202612fb3816129e6565b91508282048414831517612fca57612fc9612de2565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006130076020836128d7565b915061301282612fd1565b602082019050919050565b6000602082019050818103600083015261303681612ffa565b9050919050565b7f4d617820616c6c6f776564207461782069732031302500000000000000000000600082015250565b60006130736016836128d7565b915061307e8261303d565b602082019050919050565b600060208201905081810360008301526130a281613066565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006130e3826129e6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361311557613114612de2565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061317c6026836128d7565b915061318782613120565b604082019050919050565b600060208201905081810360008301526131ab8161316f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061320e6024836128d7565b9150613219826131b2565b604082019050919050565b6000602082019050818103600083015261323d81613201565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006132a06022836128d7565b91506132ab82613244565b604082019050919050565b600060208201905081810360008301526132cf81613293565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006133326025836128d7565b915061333d826132d6565b604082019050919050565b6000602082019050818103600083015261336181613325565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006133c46023836128d7565b91506133cf82613368565b604082019050919050565b600060208201905081810360008301526133f3816133b7565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006134566029836128d7565b9150613461826133fa565b604082019050919050565b6000602082019050818103600083015261348581613449565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006134e8603f836128d7565b91506134f38261348c565b604082019050919050565b60006020820190508181036000830152613517816134db565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613554601c836128d7565b915061355f8261351e565b602082019050919050565b6000602082019050818103600083015261358381613547565b9050919050565b6000613595826129e6565b91506135a0836129e6565b92508282019050808211156135b8576135b7612de2565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061361a6023836128d7565b9150613625826135be565b604082019050919050565b600060208201905081810360008301526136498161360d565b9050919050565b600061365b826129e6565b9150613666836129e6565b925082820390508181111561367e5761367d612de2565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006136e0602a836128d7565b91506136eb82613684565b604082019050919050565b6000602082019050818103600083015261370f816136d3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050613754816129ba565b92915050565b6000602082840312156137705761376f61297e565b5b600061377e84828501613745565b91505092915050565b6000819050919050565b60006137ac6137a76137a284613787565b612a92565b6129e6565b9050919050565b6137bc81613791565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6137f7816129a8565b82525050565b600061380983836137ee565b60208301905092915050565b6000602082019050919050565b600061382d826137c2565b61383781856137cd565b9350613842836137de565b8060005b8381101561387357815161385a88826137fd565b975061386583613815565b925050600181019050613846565b5085935050505092915050565b600060a0820190506138956000830188612b0c565b6138a260208301876137b3565b81810360408301526138b48186613822565b90506138c36060830185612bc0565b6138d06080830184612b0c565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613914826129e6565b915061391f836129e6565b92508261392f5761392e6138da565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613970601b836128d7565b915061397b8261393a565b602082019050919050565b6000602082019050818103600083015261399f81613963565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a026021836128d7565b9150613a0d826139a6565b604082019050919050565b60006020820190508181036000830152613a31816139f5565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d9c6a12229b627377e7cc3ac66b6539a4403dec2f4a3da64d03174f9322e118d64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101855760003560e01c8063715018a6116100d157806398a5c3151161008a578063c492f04611610064578063c492f04614610521578063ca72a4e71461054a578063dd62ed3e14610573578063f2fde38b146105b05761018c565b806398a5c315146104a4578063a9059cbb146104cd578063c3c8cd801461050a5761018c565b8063715018a6146103ca578063751039fc146103e15780637d1db4a5146103f85780638da5cb5b146104235780638f9a55c01461044e57806395d89b41146104795761018c565b8063313ce5671161013e57806352f7c9881161011857806352f7c988146103245780636d8aa8f81461034d5780636fc3eaec1461037657806370a082311461038d5761018c565b8063313ce567146102b75780633d46cb10146102e257806349bd5a5e146102f95761018c565b806306fdde0314610191578063095ea7b3146101bc5780631694505e146101f957806318160ddd1461022457806323b872dd1461024f5780632fd689e31461028c5761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a66105d9565b6040516101b3919061295c565b60405180910390f35b3480156101c857600080fd5b506101e360048036038101906101de9190612a1c565b610616565b6040516101f09190612a77565b60405180910390f35b34801561020557600080fd5b5061020e610634565b60405161021b9190612af1565b60405180910390f35b34801561023057600080fd5b5061023961065a565b6040516102469190612b1b565b60405180910390f35b34801561025b57600080fd5b5061027660048036038101906102719190612b36565b61067e565b6040516102839190612a77565b60405180910390f35b34801561029857600080fd5b506102a1610757565b6040516102ae9190612b1b565b60405180910390f35b3480156102c357600080fd5b506102cc61075d565b6040516102d99190612ba5565b60405180910390f35b3480156102ee57600080fd5b506102f7610766565b005b34801561030557600080fd5b5061030e610844565b60405161031b9190612bcf565b60405180910390f35b34801561033057600080fd5b5061034b60048036038101906103469190612bea565b61086a565b005b34801561035957600080fd5b50610374600480360381019061036f9190612c56565b610999565b005b34801561038257600080fd5b5061038b610a4b565b005b34801561039957600080fd5b506103b460048036038101906103af9190612c83565b610b1c565b6040516103c19190612b1b565b60405180910390f35b3480156103d657600080fd5b506103df610b6d565b005b3480156103ed57600080fd5b506103f6610cc0565b005b34801561040457600080fd5b5061040d610dad565b60405161041a9190612b1b565b60405180910390f35b34801561042f57600080fd5b50610438610db3565b6040516104459190612bcf565b60405180910390f35b34801561045a57600080fd5b50610463610ddc565b6040516104709190612b1b565b60405180910390f35b34801561048557600080fd5b5061048e610de2565b60405161049b919061295c565b60405180910390f35b3480156104b057600080fd5b506104cb60048036038101906104c69190612cb0565b610e1f565b005b3480156104d957600080fd5b506104f460048036038101906104ef9190612a1c565b610ebe565b6040516105019190612a77565b60405180910390f35b34801561051657600080fd5b5061051f610edc565b005b34801561052d57600080fd5b5061054860048036038101906105439190612d42565b610fb5565b005b34801561055657600080fd5b50610571600480360381019061056c9190612c83565b6110ef565b005b34801561057f57600080fd5b5061059a60048036038101906105959190612da2565b6111fe565b6040516105a79190612b1b565b60405180910390f35b3480156105bc57600080fd5b506105d760048036038101906105d29190612c83565b611285565b005b60606040518060400160405280601081526020017f64657620646f20736f6d657468696e6700000000000000000000000000000000815250905090565b600061062a610623611446565b848461144e565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012600a61066a9190612f44565b63042343e06106799190612f8f565b905090565b600061068b848484611617565b61074c84610697611446565b61074785604051806060016040528060288152602001613a3960289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106fd611446565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611db99092919063ffffffff16565b61144e565b600190509392505050565b60165481565b60006012905090565b61076e611446565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f29061301d565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610841573d6000803e3d6000fd5b50565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610872611446565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f69061301d565b60405180910390fd5b600a821115610943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093a90613089565b60405180910390fd5b600a811115610987576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097e90613089565b60405180910390fd5b8160098190555080600b819055505050565b6109a1611446565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a259061301d565b60405180910390fd5b80601360166101000a81548160ff02191690831515021790555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a8c611446565b73ffffffffffffffffffffffffffffffffffffffff161480610b025750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610aea611446565b73ffffffffffffffffffffffffffffffffffffffff16145b610b0b57600080fd5b6000479050610b1981611e1d565b50565b6000610b66600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e89565b9050919050565b610b75611446565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf99061301d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610cc8611446565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4c9061301d565b60405180910390fd5b6012600a610d639190612f44565b63042343e0610d729190612f8f565b6014819055506012600a610d869190612f44565b63042343e0610d959190612f8f565b60158190555060026009819055506002600b81905550565b60145481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60155481565b60606040518060400160405280600381526020017f4444530000000000000000000000000000000000000000000000000000000000815250905090565b610e27611446565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eab9061301d565b60405180910390fd5b8060168190555050565b6000610ed2610ecb611446565b8484611617565b6001905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f1d611446565b73ffffffffffffffffffffffffffffffffffffffff161480610f935750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f7b611446565b73ffffffffffffffffffffffffffffffffffffffff16145b610f9c57600080fd5b6000610fa730610b1c565b9050610fb281611ef7565b50565b610fbd611446565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461104a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110419061301d565b60405180910390fd5b60005b838390508110156110e95781600560008686858181106110705761106f6130a9565b5b90506020020160208101906110859190612c83565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806110e1906130d8565b91505061104d565b50505050565b6110f7611446565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611184576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117b9061301d565b60405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601360146101000a81548160ff0219169083151502179055506001601360166101000a81548160ff02191690831515021790555050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61128d611446565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461131a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113119061301d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611389576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138090613192565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b490613224565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361152c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611523906132b6565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161160a9190612b1b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167d90613348565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ec906133da565b60405180910390fd5b60008111611738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172f9061346c565b60405180910390fd5b611740610db3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117ae575061177e610db3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ab857601360149054906101000a900460ff1661183d576117cf610db3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461183c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611833906134fe565b60405180910390fd5b5b601454811115611882576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118799061356a565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461192f57601554816118e484610b1c565b6118ee919061358a565b1061192e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192590613630565b60405180910390fd5b5b600061193a30610b1c565b90506000601654821015905060145482106119555760145491505b80801561196f5750601360159054906101000a900460ff16155b80156119c95750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156119e15750601360169054906101000a900460ff165b8015611a375750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611a8d5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ab557611a9b82611ef7565b60004790506000811115611ab357611ab247611e1d565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b5f5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611c125750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611c115750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611c205760009050611da7565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611ccb5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ce357600854600c81905550600954600d819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d8e5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611da657600a54600c81905550600b54600d819055505b5b611db384848484612170565b50505050565b6000838311158290611e01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df8919061295c565b60405180910390fd5b5060008385611e109190613650565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e85573d6000803e3d6000fd5b5050565b6000600654821115611ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec7906136f6565b60405180910390fd5b6000611eda61219d565b9050611eef81846121c890919063ffffffff16565b915050919050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611f2f57611f2e613716565b5b604051908082528060200260200182016040528015611f5d5781602001602082028036833780820191505090505b5090503081600081518110611f7557611f746130a9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561201c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612040919061375a565b81600181518110612054576120536130a9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506120bb30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461144e565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161211f959493929190613880565b600060405180830381600087803b15801561213957600080fd5b505af115801561214d573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b8061217e5761217d612212565b5b61218984848461224f565b806121975761219661241a565b5b50505050565b60008060006121aa61242e565b915091506121c181836121c890919063ffffffff16565b9250505090565b600061220a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506124c9565b905092915050565b6000600c5414801561222657506000600d54145b61224d57600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806122618761252c565b9550955095509550955095506122bf86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461259490919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061235485600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125de90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123a08161263c565b6123aa84836126f9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516124079190612b1b565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b6000806000600654905060006012600a6124489190612f44565b63042343e06124579190612f8f565b905061248a6012600a61246a9190612f44565b63042343e06124799190612f8f565b6006546121c890919063ffffffff16565b8210156124bc576006546012600a6124a29190612f44565b63042343e06124b19190612f8f565b9350935050506124c5565b81819350935050505b9091565b60008083118290612510576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612507919061295c565b60405180910390fd5b506000838561251f9190613909565b9050809150509392505050565b60008060008060008060008060006125498a600c54600d54612733565b925092509250600061255961219d565b9050600080600061256c8e8787876127c9565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006125d683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611db9565b905092915050565b60008082846125ed919061358a565b905083811015612632576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262990613986565b60405180910390fd5b8091505092915050565b600061264661219d565b9050600061265d828461285290919063ffffffff16565b90506126b181600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125de90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61270e8260065461259490919063ffffffff16565b600681905550612729816007546125de90919063ffffffff16565b6007819055505050565b60008060008061275f6064612751888a61285290919063ffffffff16565b6121c890919063ffffffff16565b90506000612789606461277b888b61285290919063ffffffff16565b6121c890919063ffffffff16565b905060006127b2826127a4858c61259490919063ffffffff16565b61259490919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806127e2858961285290919063ffffffff16565b905060006127f9868961285290919063ffffffff16565b90506000612810878961285290919063ffffffff16565b905060006128398261282b858761259490919063ffffffff16565b61259490919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080830361286457600090506128c6565b600082846128729190612f8f565b90508284826128819190613909565b146128c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b890613a18565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129065780820151818401526020810190506128eb565b60008484015250505050565b6000601f19601f8301169050919050565b600061292e826128cc565b61293881856128d7565b93506129488185602086016128e8565b61295181612912565b840191505092915050565b600060208201905081810360008301526129768184612923565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129b382612988565b9050919050565b6129c3816129a8565b81146129ce57600080fd5b50565b6000813590506129e0816129ba565b92915050565b6000819050919050565b6129f9816129e6565b8114612a0457600080fd5b50565b600081359050612a16816129f0565b92915050565b60008060408385031215612a3357612a3261297e565b5b6000612a41858286016129d1565b9250506020612a5285828601612a07565b9150509250929050565b60008115159050919050565b612a7181612a5c565b82525050565b6000602082019050612a8c6000830184612a68565b92915050565b6000819050919050565b6000612ab7612ab2612aad84612988565b612a92565b612988565b9050919050565b6000612ac982612a9c565b9050919050565b6000612adb82612abe565b9050919050565b612aeb81612ad0565b82525050565b6000602082019050612b066000830184612ae2565b92915050565b612b15816129e6565b82525050565b6000602082019050612b306000830184612b0c565b92915050565b600080600060608486031215612b4f57612b4e61297e565b5b6000612b5d868287016129d1565b9350506020612b6e868287016129d1565b9250506040612b7f86828701612a07565b9150509250925092565b600060ff82169050919050565b612b9f81612b89565b82525050565b6000602082019050612bba6000830184612b96565b92915050565b612bc9816129a8565b82525050565b6000602082019050612be46000830184612bc0565b92915050565b60008060408385031215612c0157612c0061297e565b5b6000612c0f85828601612a07565b9250506020612c2085828601612a07565b9150509250929050565b612c3381612a5c565b8114612c3e57600080fd5b50565b600081359050612c5081612c2a565b92915050565b600060208284031215612c6c57612c6b61297e565b5b6000612c7a84828501612c41565b91505092915050565b600060208284031215612c9957612c9861297e565b5b6000612ca7848285016129d1565b91505092915050565b600060208284031215612cc657612cc561297e565b5b6000612cd484828501612a07565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612d0257612d01612cdd565b5b8235905067ffffffffffffffff811115612d1f57612d1e612ce2565b5b602083019150836020820283011115612d3b57612d3a612ce7565b5b9250929050565b600080600060408486031215612d5b57612d5a61297e565b5b600084013567ffffffffffffffff811115612d7957612d78612983565b5b612d8586828701612cec565b93509350506020612d9886828701612c41565b9150509250925092565b60008060408385031215612db957612db861297e565b5b6000612dc7858286016129d1565b9250506020612dd8858286016129d1565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612e6857808604811115612e4457612e43612de2565b5b6001851615612e535780820291505b8081029050612e6185612e11565b9450612e28565b94509492505050565b600082612e815760019050612f3d565b81612e8f5760009050612f3d565b8160018114612ea55760028114612eaf57612ede565b6001915050612f3d565b60ff841115612ec157612ec0612de2565b5b8360020a915084821115612ed857612ed7612de2565b5b50612f3d565b5060208310610133831016604e8410600b8410161715612f135782820a905083811115612f0e57612f0d612de2565b5b612f3d565b612f208484846001612e1e565b92509050818404811115612f3757612f36612de2565b5b81810290505b9392505050565b6000612f4f826129e6565b9150612f5a83612b89565b9250612f877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612e71565b905092915050565b6000612f9a826129e6565b9150612fa5836129e6565b9250828202612fb3816129e6565b91508282048414831517612fca57612fc9612de2565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006130076020836128d7565b915061301282612fd1565b602082019050919050565b6000602082019050818103600083015261303681612ffa565b9050919050565b7f4d617820616c6c6f776564207461782069732031302500000000000000000000600082015250565b60006130736016836128d7565b915061307e8261303d565b602082019050919050565b600060208201905081810360008301526130a281613066565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006130e3826129e6565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361311557613114612de2565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061317c6026836128d7565b915061318782613120565b604082019050919050565b600060208201905081810360008301526131ab8161316f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061320e6024836128d7565b9150613219826131b2565b604082019050919050565b6000602082019050818103600083015261323d81613201565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006132a06022836128d7565b91506132ab82613244565b604082019050919050565b600060208201905081810360008301526132cf81613293565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006133326025836128d7565b915061333d826132d6565b604082019050919050565b6000602082019050818103600083015261336181613325565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006133c46023836128d7565b91506133cf82613368565b604082019050919050565b600060208201905081810360008301526133f3816133b7565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006134566029836128d7565b9150613461826133fa565b604082019050919050565b6000602082019050818103600083015261348581613449565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006134e8603f836128d7565b91506134f38261348c565b604082019050919050565b60006020820190508181036000830152613517816134db565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613554601c836128d7565b915061355f8261351e565b602082019050919050565b6000602082019050818103600083015261358381613547565b9050919050565b6000613595826129e6565b91506135a0836129e6565b92508282019050808211156135b8576135b7612de2565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061361a6023836128d7565b9150613625826135be565b604082019050919050565b600060208201905081810360008301526136498161360d565b9050919050565b600061365b826129e6565b9150613666836129e6565b925082820390508181111561367e5761367d612de2565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006136e0602a836128d7565b91506136eb82613684565b604082019050919050565b6000602082019050818103600083015261370f816136d3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050613754816129ba565b92915050565b6000602082840312156137705761376f61297e565b5b600061377e84828501613745565b91505092915050565b6000819050919050565b60006137ac6137a76137a284613787565b612a92565b6129e6565b9050919050565b6137bc81613791565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6137f7816129a8565b82525050565b600061380983836137ee565b60208301905092915050565b6000602082019050919050565b600061382d826137c2565b61383781856137cd565b9350613842836137de565b8060005b8381101561387357815161385a88826137fd565b975061386583613815565b925050600181019050613846565b5085935050505092915050565b600060a0820190506138956000830188612b0c565b6138a260208301876137b3565b81810360408301526138b48186613822565b90506138c36060830185612bc0565b6138d06080830184612b0c565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613914826129e6565b915061391f836129e6565b92508261392f5761392e6138da565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613970601b836128d7565b915061397b8261393a565b602082019050919050565b6000602082019050818103600083015261399f81613963565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a026021836128d7565b9150613a0d826139a6565b604082019050919050565b60006020820190508181036000830152613a31816139f5565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d9c6a12229b627377e7cc3ac66b6539a4403dec2f4a3da64d03174f9322e118d64736f6c63430008110033

Deployed Bytecode Sourcemap

4194:12917:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6392:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7317:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5439:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6669:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7518:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5738:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6578:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11881:116;;;;;;;;;;;;;:::i;:::-;;5487:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16235:285;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16763:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12412:235;;;;;;;;;;;;;:::i;:::-;;6772:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1681:148;;;;;;;;;;;;;:::i;:::-;;12655:174;;;;;;;;;;;;;:::i;:::-;;5638:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1467:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5687:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6483:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16572:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6918:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12168:236;;;;;;;;;;;;;:::i;:::-;;16872:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12005:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7125:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1837:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6392:83;6429:13;6462:5;;;;;;;;;;;;;;;;;6455:12;;6392:83;:::o;7317:193::-;7419:4;7441:39;7450:12;:10;:12::i;:::-;7464:7;7473:6;7441:8;:39::i;:::-;7498:4;7491:11;;7317:193;;;;:::o;5439:41::-;;;;;;;;;;;;;:::o;6669:95::-;6722:7;4428:2;4768;:13;;;;:::i;:::-;4755:10;:26;;;;:::i;:::-;6742:14;;6669:95;:::o;7518:446::-;7650:4;7667:36;7677:6;7685:9;7696:6;7667:9;:36::i;:::-;7714:220;7737:6;7758:12;:10;:12::i;:::-;7785:138;7841:6;7785:138;;;;;;;;;;;;;;;;;:11;:19;7797:6;7785:19;;;;;;;;;;;;;;;:33;7805:12;:10;:12::i;:::-;7785:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7714:8;:220::i;:::-;7952:4;7945:11;;7518:446;;;;;:::o;5738:50::-;;;;:::o;6578:83::-;6619:5;4428:2;6637:16;;6578:83;:::o;11881:116::-;1604:12;:10;:12::i;:::-;1594:22;;:6;;;;;;;;;;:22;;;1586:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11946:10:::1;11938:28;;:51;11967:21;11938:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11881:116::o:0;5487:28::-;;;;;;;;;;;;;:::o;16235:285::-;1604:12;:10;:12::i;:::-;1594:22;;:6;;;;;;;;;;:22;;;1586:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16345:2:::1;16330:11;:17;;16322:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;16408:2;16392:12;:18;;16384:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;16462:11;16447:12;:26;;;;16500:12;16484:13;:28;;;;16235:285:::0;;:::o;16763:101::-;1604:12;:10;:12::i;:::-;1594:22;;:6;;;;;;;;;;:22;;;1586:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16844:12:::1;16830:11;;:26;;;;;;;;;;;;;;;;;;16763:101:::0;:::o;12412:235::-;12478:19;;;;;;;;;;;12462:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12517:17;;;;;;;;;;;12501:33;;:12;:10;:12::i;:::-;:33;;;12462:72;12454:81;;;;;;12546:26;12575:21;12546:50;;12607:32;12620:18;12607:12;:32::i;:::-;12443:204;12412:235::o;6772:138::-;6838:7;6865:37;6885:7;:16;6893:7;6885:16;;;;;;;;;;;;;;;;6865:19;:37::i;:::-;6858:44;;6772:138;;;:::o;1681:148::-;1604:12;:10;:12::i;:::-;1594:22;;:6;;;;;;;;;;:22;;;1586:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1788:1:::1;1751:40;;1772:6;::::0;::::1;;;;;;;;1751:40;;;;;;;;;;;;1819:1;1802:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1681:148::o:0;12655:174::-;1604:12;:10;:12::i;:::-;1594:22;;:6;;;;;;;;;;:22;;;1586:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4428:2:::1;4768;:13;;;;:::i;:::-;4755:10;:26;;;;:::i;:::-;12709:12;:22;;;;4428:2;4768;:13;;;;:::i;:::-;4755:10;:26;;;;:::i;:::-;12742:14;:24;;;;12792:1;12777:12;:16;;;;12820:1;12804:13;:17;;;;12655:174::o:0;5638:42::-;;;;:::o;1467:79::-;1505:7;1532:6;;;;;;;;;;;1525:13;;1467:79;:::o;5687:44::-;;;;:::o;6483:87::-;6522:13;6555:7;;;;;;;;;;;;;;;;;6548:14;;6483:87;:::o;16572:139::-;1604:12;:10;:12::i;:::-;1594:22;;:6;;;;;;;;;;:22;;;1586:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16685:18:::1;16663:19;:40;;;;16572:139:::0;:::o;6918:199::-;7023:4;7045:42;7055:12;:10;:12::i;:::-;7069:9;7080:6;7045:9;:42::i;:::-;7105:4;7098:11;;6918:199;;;;:::o;12168:236::-;12234:19;;;;;;;;;;;12218:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12273:17;;;;;;;;;;;12257:33;;:12;:10;:12::i;:::-;:33;;;12218:72;12210:81;;;;;;12302:23;12328:24;12346:4;12328:9;:24::i;:::-;12302:50;;12363:33;12380:15;12363:16;:33::i;:::-;12199:205;12168:236::o;16872:234::-;1604:12;:10;:12::i;:::-;1594:22;;:6;;;;;;;;;;:22;;;1586:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16989:9:::1;16985:114;17008:8;;:15;;17004:1;:19;16985:114;;;17079:8;17045:18;:31;17064:8;;17073:1;17064:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17045:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17025:3;;;;;:::i;:::-;;;;16985:114;;;;16872:234:::0;;;:::o;12005:155::-;1604:12;:10;:12::i;:::-;1594:22;;:6;;;;;;;;;;:22;;;1586:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12087:7:::1;12071:13;;:23;;;;;;;;;;;;;;;;;;12119:4;12105:11;;:18;;;;;;;;;;;;;;;;;;12148:4;12134:11;;:18;;;;;;;;;;;;;;;;;;12005:155:::0;:::o;7125:184::-;7242:7;7274:11;:18;7286:5;7274:18;;;;;;;;;;;;;;;:27;7293:7;7274:27;;;;;;;;;;;;;;;;7267:34;;7125:184;;;;:::o;1837:244::-;1604:12;:10;:12::i;:::-;1594:22;;:6;;;;;;;;;;:22;;;1586:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1946:1:::1;1926:22;;:8;:22;;::::0;1918:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2036:8;2007:38;;2028:6;::::0;::::1;;;;;;;;2007:38;;;;;;;;;;;;2065:8;2056:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1837:244:::0;:::o;226:98::-;279:7;306:10;299:17;;226:98;:::o;8655:369::-;8799:1;8782:19;;:5;:19;;;8774:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8880:1;8861:21;;:7;:21;;;8853:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8962:6;8932:11;:18;8944:5;8932:18;;;;;;;;;;;;;;;:27;8951:7;8932:27;;;;;;;;;;;;;;;:36;;;;9000:7;8984:32;;8993:5;8984:32;;;9009:6;8984:32;;;;;;:::i;:::-;;;;;;;;8655:369;;;:::o;9032:2243::-;9170:1;9154:18;;:4;:18;;;9146:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9247:1;9233:16;;:2;:16;;;9225:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9317:1;9308:6;:10;9300:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9389:7;:5;:7::i;:::-;9381:15;;:4;:15;;;;:32;;;;;9406:7;:5;:7::i;:::-;9400:13;;:2;:13;;;;9381:32;9377:1172;;;9470:11;;;;;;;;;;;9465:144;;9518:7;:5;:7::i;:::-;9510:15;;:4;:15;;;9502:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9465:144;9643:12;;9633:6;:22;;9625:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9714:13;;;;;;;;;;;9708:19;;:2;:19;;;9705:146;;9781:14;;9772:6;9756:13;9766:2;9756:9;:13::i;:::-;:22;;;;:::i;:::-;:39;9748:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;9705:146;9867:28;9898:24;9916:4;9898:9;:24::i;:::-;9867:55;;9937:12;9976:19;;9952:20;:43;;9937:58;;10039:12;;10015:20;:36;10012:124;;10108:12;;10085:35;;10012:124;10156:7;:18;;;;;10168:6;;;;;;;;;;;10167:7;10156:18;:43;;;;;10186:13;;;;;;;;;;;10178:21;;:4;:21;;;;10156:43;:58;;;;;10203:11;;;;;;;;;;;10156:58;:87;;;;;10219:18;:24;10238:4;10219:24;;;;;;;;;;;;;;;;;;;;;;;;;10218:25;10156:87;:114;;;;;10248:18;:22;10267:2;10248:22;;;;;;;;;;;;;;;;;;;;;;;;;10247:23;10156:114;10152:386;;;10291:38;10308:20;10291:16;:38::i;:::-;10348:26;10377:21;10348:50;;10442:1;10421:18;:22;10417:106;;;10468:35;10481:21;10468:12;:35::i;:::-;10417:106;10272:266;10152:386;9415:1134;;9377:1172;10561:12;10576:4;10561:19;;10625:18;:24;10644:4;10625:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10653:18;:22;10672:2;10653:22;;;;;;;;;;;;;;;;;;;;;;;;;10625:50;10624:102;;;;10689:13;;;;;;;;;;;10681:21;;:4;:21;;;;:44;;;;;10712:13;;;;;;;;;;;10706:19;;:2;:19;;;;10681:44;10624:102;10620:594;;;10753:5;10743:15;;10620:594;;;10836:13;;;;;;;;;;;10828:21;;:4;:21;;;:55;;;;;10867:15;;;;;;;;;;;10853:30;;:2;:30;;;;10828:55;10825:162;;;10916:14;;10904:9;:26;;;;10959:12;;10949:7;:22;;;;10825:162;11046:13;;;;;;;;;;;11040:19;;:2;:19;;;:55;;;;;11079:15;;;;;;;;;;;11063:32;;:4;:32;;;;11040:55;11036:165;;;11128:15;;11116:9;:27;;;;11172:13;;11162:7;:23;;;;11036:165;10620:594;11226:41;11241:4;11247:2;11251:6;11259:7;11226:14;:41::i;:::-;9135:2140;9032:2243;;;:::o;2445:224::-;2565:7;2598:1;2593;:6;;2601:12;2585:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2625:9;2641:1;2637;:5;;;;:::i;:::-;2625:17;;2660:1;2653:8;;;2445:224;;;;;:::o;11774:99::-;11831:17;;;;;;;;;;;:26;;:34;11858:6;11831:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11774:99;:::o;7972:323::-;8067:7;8125;;8114;:18;;8092:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8213:19;8235:10;:8;:10::i;:::-;8213:32;;8263:24;8275:11;8263:7;:11;;:24;;;;:::i;:::-;8256:31;;;7972:323;;;:::o;11283:483::-;5891:4;5882:6;;:13;;;;;;;;;;;;;;;;;;11361:21:::1;11399:1;11385:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11361:40;;11430:4;11412;11417:1;11412:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11456:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11446:4;11451:1;11446:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11489:62;11506:4;11521:15;;;;;;;;;;;11539:11;11489:8;:62::i;:::-;11562:15;;;;;;;;;;;:66;;;11643:11;11669:1;11685:4;11712;11732:15;11562:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11350:416;5927:5:::0;5918:6;;:14;;;;;;;;;;;;;;;;;;11283:483;:::o;12837:282::-;12993:7;12988:28;;13002:14;:12;:14::i;:::-;12988:28;13027:44;13045:6;13053:9;13064:6;13027:17;:44::i;:::-;13087:7;13082:29;;13096:15;:13;:15::i;:::-;13082:29;12837:282;;;;:::o;15798:164::-;15840:7;15861:15;15878;15897:19;:17;:19::i;:::-;15860:56;;;;15934:20;15946:7;15934;:11;;:20;;;;:::i;:::-;15927:27;;;;15798:164;:::o;2931:132::-;2989:7;3016:39;3020:1;3023;3016:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3009:46;;2931:132;;;;:::o;8303:219::-;8363:1;8350:9;;:14;:30;;;;;8379:1;8368:7;;:12;8350:30;8382:7;8346:43;8421:9;;8401:17;:29;;;;8459:7;;8441:15;:25;;;;8491:1;8479:9;:13;;;;8513:1;8503:7;:11;;;;8303:219;:::o;13127:610::-;13274:15;13304:23;13342:12;13369:23;13407:12;13434:13;13461:19;13472:7;13461:10;:19::i;:::-;13259:221;;;;;;;;;;;;13509:28;13529:7;13509;:15;13517:6;13509:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13491:7;:15;13499:6;13491:15;;;;;;;;;;;;;;;:46;;;;13569:39;13592:15;13569:7;:18;13577:9;13569:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13548:7;:18;13556:9;13548:18;;;;;;;;;;;;;;;:60;;;;13619:16;13629:5;13619:9;:16::i;:::-;13646:23;13658:4;13664;13646:11;:23::i;:::-;13702:9;13685:44;;13694:6;13685:44;;;13713:15;13685:44;;;;;;:::i;:::-;;;;;;;;13248:489;;;;;;13127:610;;;:::o;8530:117::-;8586:17;;8574:9;:29;;;;8624:15;;8614:7;:25;;;;8530:117::o;15970:257::-;16021:7;16030;16050:15;16068:7;;16050:25;;16086:15;4428:2;4768;:13;;;;:::i;:::-;4755:10;:26;;;;:::i;:::-;16086:25;;16136:20;4428:2;4768;:13;;;;:::i;:::-;4755:10;:26;;;;:::i;:::-;16136:7;;:11;;:20;;;;:::i;:::-;16126:7;:30;16122:61;;;16166:7;;4428:2;4768;:13;;;;:::i;:::-;4755:10;:26;;;;:::i;:::-;16158:25;;;;;;;;16122:61;16202:7;16211;16194:25;;;;;;15970:257;;;:::o;3071:223::-;3191:7;3223:1;3219;:5;3226:12;3211:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3250:9;3266:1;3262;:5;;;;:::i;:::-;3250:17;;3285:1;3278:8;;;3071:223;;;;;:::o;14156:615::-;14256:7;14278;14300;14322;14344;14366;14402:23;14427:12;14441:13;14471:40;14483:7;14492:9;;14503:7;;14471:11;:40::i;:::-;14401:110;;;;;;14522:19;14544:10;:8;:10::i;:::-;14522:32;;14566:15;14583:23;14608:12;14637:46;14649:7;14658:4;14664:5;14671:11;14637;:46::i;:::-;14565:118;;;;;;14702:7;14711:15;14728:4;14734:15;14751:4;14757:5;14694:69;;;;;;;;;;;;;;;;;;;14156:615;;;;;;;:::o;2301:136::-;2359:7;2386:43;2390:1;2393;2386:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2379:50;;2301:136;;;;:::o;2114:179::-;2172:7;2192:9;2208:1;2204;:5;;;;:::i;:::-;2192:17;;2233:1;2228;:6;;2220:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2284:1;2277:8;;;2114:179;;;;:::o;13745:211::-;13798:19;13820:10;:8;:10::i;:::-;13798:32;;13841:13;13857:22;13867:11;13857:5;:9;;:22;;;;:::i;:::-;13841:38;;13915:33;13942:5;13915:7;:22;13931:4;13915:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13890:7;:22;13906:4;13890:22;;;;;;;;;;;;;;;:58;;;;13787:169;;13745:211;:::o;13964:147::-;14042:17;14054:4;14042:7;;:11;;:17;;;;:::i;:::-;14032:7;:27;;;;14083:20;14098:4;14083:10;;:14;;:20;;;;:::i;:::-;14070:10;:33;;;;13964:147;;:::o;14779:469::-;14948:7;14970;14992;15027:12;15042:30;15068:3;15042:21;15054:8;15042:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15027:45;;15083:13;15099:28;15123:3;15099:19;15111:6;15099:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15083:44;;15138:23;15164:28;15186:5;15164:17;15176:4;15164:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15138:54;;15211:15;15228:4;15234:5;15203:37;;;;;;;;;14779:469;;;;;;;:::o;15256:534::-;15450:7;15472;15494;15529:15;15547:24;15559:11;15547:7;:11;;:24;;;;:::i;:::-;15529:42;;15582:12;15597:21;15606:11;15597:4;:8;;:21;;;;:::i;:::-;15582:36;;15629:13;15645:22;15655:11;15645:5;:9;;:22;;;;:::i;:::-;15629:38;;15678:23;15704:28;15726:5;15704:17;15716:4;15704:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15678:54;;15751:7;15760:15;15777:4;15743:39;;;;;;;;;;15256:534;;;;;;;;:::o;2677:246::-;2735:7;2764:1;2759;:6;2755:47;;2789:1;2782:8;;;;2755:47;2812:9;2828:1;2824;:5;;;;:::i;:::-;2812:17;;2857:1;2852;2848;:5;;;;:::i;:::-;:10;2840:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2914:1;2907:8;;;2677:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:86::-;5431:7;5471:4;5464:5;5460:16;5449:27;;5396:86;;;:::o;5488:112::-;5571:22;5587:5;5571:22;:::i;:::-;5566:3;5559:35;5488:112;;:::o;5606:214::-;5695:4;5733:2;5722:9;5718:18;5710:26;;5746:67;5810:1;5799:9;5795:17;5786:6;5746:67;:::i;:::-;5606:214;;;;:::o;5826:118::-;5913:24;5931:5;5913:24;:::i;:::-;5908:3;5901:37;5826:118;;:::o;5950:222::-;6043:4;6081:2;6070:9;6066:18;6058:26;;6094:71;6162:1;6151:9;6147:17;6138:6;6094:71;:::i;:::-;5950:222;;;;:::o;6178:474::-;6246:6;6254;6303:2;6291:9;6282:7;6278:23;6274:32;6271:119;;;6309:79;;:::i;:::-;6271:119;6429:1;6454:53;6499:7;6490:6;6479:9;6475:22;6454:53;:::i;:::-;6444:63;;6400:117;6556:2;6582:53;6627:7;6618:6;6607:9;6603:22;6582:53;:::i;:::-;6572:63;;6527:118;6178:474;;;;;:::o;6658:116::-;6728:21;6743:5;6728:21;:::i;:::-;6721:5;6718:32;6708:60;;6764:1;6761;6754:12;6708:60;6658:116;:::o;6780:133::-;6823:5;6861:6;6848:20;6839:29;;6877:30;6901:5;6877:30;:::i;:::-;6780:133;;;;:::o;6919:323::-;6975:6;7024:2;7012:9;7003:7;6999:23;6995:32;6992:119;;;7030:79;;:::i;:::-;6992:119;7150:1;7175:50;7217:7;7208:6;7197:9;7193:22;7175:50;:::i;:::-;7165:60;;7121:114;6919:323;;;;:::o;7248:329::-;7307:6;7356:2;7344:9;7335:7;7331:23;7327:32;7324:119;;;7362:79;;:::i;:::-;7324:119;7482:1;7507:53;7552:7;7543:6;7532:9;7528:22;7507:53;:::i;:::-;7497:63;;7453:117;7248:329;;;;:::o;7583:::-;7642:6;7691:2;7679:9;7670:7;7666:23;7662:32;7659:119;;;7697:79;;:::i;:::-;7659:119;7817:1;7842:53;7887:7;7878:6;7867:9;7863:22;7842:53;:::i;:::-;7832:63;;7788:117;7583:329;;;;:::o;7918:117::-;8027:1;8024;8017:12;8041:117;8150:1;8147;8140:12;8164:117;8273:1;8270;8263:12;8304:568;8377:8;8387:6;8437:3;8430:4;8422:6;8418:17;8414:27;8404:122;;8445:79;;:::i;:::-;8404:122;8558:6;8545:20;8535:30;;8588:18;8580:6;8577:30;8574:117;;;8610:79;;:::i;:::-;8574:117;8724:4;8716:6;8712:17;8700:29;;8778:3;8770:4;8762:6;8758:17;8748:8;8744:32;8741:41;8738:128;;;8785:79;;:::i;:::-;8738:128;8304:568;;;;;:::o;8878:698::-;8970:6;8978;8986;9035:2;9023:9;9014:7;9010:23;9006:32;9003:119;;;9041:79;;:::i;:::-;9003:119;9189:1;9178:9;9174:17;9161:31;9219:18;9211:6;9208:30;9205:117;;;9241:79;;:::i;:::-;9205:117;9354:80;9426:7;9417:6;9406:9;9402:22;9354:80;:::i;:::-;9336:98;;;;9132:312;9483:2;9509:50;9551:7;9542:6;9531:9;9527:22;9509:50;:::i;:::-;9499:60;;9454:115;8878:698;;;;;:::o;9582:474::-;9650:6;9658;9707:2;9695:9;9686:7;9682:23;9678:32;9675:119;;;9713:79;;:::i;:::-;9675:119;9833:1;9858:53;9903:7;9894:6;9883:9;9879:22;9858:53;:::i;:::-;9848:63;;9804:117;9960:2;9986:53;10031:7;10022:6;10011:9;10007:22;9986:53;:::i;:::-;9976:63;;9931:118;9582:474;;;;;:::o;10062:180::-;10110:77;10107:1;10100:88;10207:4;10204:1;10197:15;10231:4;10228:1;10221:15;10248:102;10290:8;10337:5;10334:1;10330:13;10309:34;;10248:102;;;:::o;10356:848::-;10417:5;10424:4;10448:6;10439:15;;10472:5;10463:14;;10486:712;10507:1;10497:8;10494:15;10486:712;;;10602:4;10597:3;10593:14;10587:4;10584:24;10581:50;;;10611:18;;:::i;:::-;10581:50;10661:1;10651:8;10647:16;10644:451;;;11076:4;11069:5;11065:16;11056:25;;10644:451;11126:4;11120;11116:15;11108:23;;11156:32;11179:8;11156:32;:::i;:::-;11144:44;;10486:712;;;10356:848;;;;;;;:::o;11210:1073::-;11264:5;11455:8;11445:40;;11476:1;11467:10;;11478:5;;11445:40;11504:4;11494:36;;11521:1;11512:10;;11523:5;;11494:36;11590:4;11638:1;11633:27;;;;11674:1;11669:191;;;;11583:277;;11633:27;11651:1;11642:10;;11653:5;;;11669:191;11714:3;11704:8;11701:17;11698:43;;;11721:18;;:::i;:::-;11698:43;11770:8;11767:1;11763:16;11754:25;;11805:3;11798:5;11795:14;11792:40;;;11812:18;;:::i;:::-;11792:40;11845:5;;;11583:277;;11969:2;11959:8;11956:16;11950:3;11944:4;11941:13;11937:36;11919:2;11909:8;11906:16;11901:2;11895:4;11892:12;11888:35;11872:111;11869:246;;;12025:8;12019:4;12015:19;12006:28;;12060:3;12053:5;12050:14;12047:40;;;12067:18;;:::i;:::-;12047:40;12100:5;;11869:246;12140:42;12178:3;12168:8;12162:4;12159:1;12140:42;:::i;:::-;12125:57;;;;12214:4;12209:3;12205:14;12198:5;12195:25;12192:51;;;12223:18;;:::i;:::-;12192:51;12272:4;12265:5;12261:16;12252:25;;11210:1073;;;;;;:::o;12289:281::-;12347:5;12371:23;12389:4;12371:23;:::i;:::-;12363:31;;12415:25;12431:8;12415:25;:::i;:::-;12403:37;;12459:104;12496:66;12486:8;12480:4;12459:104;:::i;:::-;12450:113;;12289:281;;;;:::o;12576:410::-;12616:7;12639:20;12657:1;12639:20;:::i;:::-;12634:25;;12673:20;12691:1;12673:20;:::i;:::-;12668:25;;12728:1;12725;12721:9;12750:30;12768:11;12750:30;:::i;:::-;12739:41;;12929:1;12920:7;12916:15;12913:1;12910:22;12890:1;12883:9;12863:83;12840:139;;12959:18;;:::i;:::-;12840:139;12624:362;12576:410;;;;:::o;12992:182::-;13132:34;13128:1;13120:6;13116:14;13109:58;12992:182;:::o;13180:366::-;13322:3;13343:67;13407:2;13402:3;13343:67;:::i;:::-;13336:74;;13419:93;13508:3;13419:93;:::i;:::-;13537:2;13532:3;13528:12;13521:19;;13180:366;;;:::o;13552:419::-;13718:4;13756:2;13745:9;13741:18;13733:26;;13805:9;13799:4;13795:20;13791:1;13780:9;13776:17;13769:47;13833:131;13959:4;13833:131;:::i;:::-;13825:139;;13552:419;;;:::o;13977:172::-;14117:24;14113:1;14105:6;14101:14;14094:48;13977:172;:::o;14155:366::-;14297:3;14318:67;14382:2;14377:3;14318:67;:::i;:::-;14311:74;;14394:93;14483:3;14394:93;:::i;:::-;14512:2;14507:3;14503:12;14496:19;;14155:366;;;:::o;14527:419::-;14693:4;14731:2;14720:9;14716:18;14708:26;;14780:9;14774:4;14770:20;14766:1;14755:9;14751:17;14744:47;14808:131;14934:4;14808:131;:::i;:::-;14800:139;;14527:419;;;:::o;14952:180::-;15000:77;14997:1;14990:88;15097:4;15094:1;15087:15;15121:4;15118:1;15111:15;15138:233;15177:3;15200:24;15218:5;15200:24;:::i;:::-;15191:33;;15246:66;15239:5;15236:77;15233:103;;15316:18;;:::i;:::-;15233:103;15363:1;15356:5;15352:13;15345:20;;15138:233;;;:::o;15377:225::-;15517:34;15513:1;15505:6;15501:14;15494:58;15586:8;15581:2;15573:6;15569:15;15562:33;15377:225;:::o;15608:366::-;15750:3;15771:67;15835:2;15830:3;15771:67;:::i;:::-;15764:74;;15847:93;15936:3;15847:93;:::i;:::-;15965:2;15960:3;15956:12;15949:19;;15608:366;;;:::o;15980:419::-;16146:4;16184:2;16173:9;16169:18;16161:26;;16233:9;16227:4;16223:20;16219:1;16208:9;16204:17;16197:47;16261:131;16387:4;16261:131;:::i;:::-;16253:139;;15980:419;;;:::o;16405:223::-;16545:34;16541:1;16533:6;16529:14;16522:58;16614:6;16609:2;16601:6;16597:15;16590:31;16405:223;:::o;16634:366::-;16776:3;16797:67;16861:2;16856:3;16797:67;:::i;:::-;16790:74;;16873:93;16962:3;16873:93;:::i;:::-;16991:2;16986:3;16982:12;16975:19;;16634:366;;;:::o;17006:419::-;17172:4;17210:2;17199:9;17195:18;17187:26;;17259:9;17253:4;17249:20;17245:1;17234:9;17230:17;17223:47;17287:131;17413:4;17287:131;:::i;:::-;17279:139;;17006:419;;;:::o;17431:221::-;17571:34;17567:1;17559:6;17555:14;17548:58;17640:4;17635:2;17627:6;17623:15;17616:29;17431:221;:::o;17658:366::-;17800:3;17821:67;17885:2;17880:3;17821:67;:::i;:::-;17814:74;;17897:93;17986:3;17897:93;:::i;:::-;18015:2;18010:3;18006:12;17999:19;;17658:366;;;:::o;18030:419::-;18196:4;18234:2;18223:9;18219:18;18211:26;;18283:9;18277:4;18273:20;18269:1;18258:9;18254:17;18247:47;18311:131;18437:4;18311:131;:::i;:::-;18303:139;;18030:419;;;:::o;18455:224::-;18595:34;18591:1;18583:6;18579:14;18572:58;18664:7;18659:2;18651:6;18647:15;18640:32;18455:224;:::o;18685:366::-;18827:3;18848:67;18912:2;18907:3;18848:67;:::i;:::-;18841:74;;18924:93;19013:3;18924:93;:::i;:::-;19042:2;19037:3;19033:12;19026:19;;18685:366;;;:::o;19057:419::-;19223:4;19261:2;19250:9;19246:18;19238:26;;19310:9;19304:4;19300:20;19296:1;19285:9;19281:17;19274:47;19338:131;19464:4;19338:131;:::i;:::-;19330:139;;19057:419;;;:::o;19482:222::-;19622:34;19618:1;19610:6;19606:14;19599:58;19691:5;19686:2;19678:6;19674:15;19667:30;19482:222;:::o;19710:366::-;19852:3;19873:67;19937:2;19932:3;19873:67;:::i;:::-;19866:74;;19949:93;20038:3;19949:93;:::i;:::-;20067:2;20062:3;20058:12;20051:19;;19710:366;;;:::o;20082:419::-;20248:4;20286:2;20275:9;20271:18;20263:26;;20335:9;20329:4;20325:20;20321:1;20310:9;20306:17;20299:47;20363:131;20489:4;20363:131;:::i;:::-;20355:139;;20082:419;;;:::o;20507:228::-;20647:34;20643:1;20635:6;20631:14;20624:58;20716:11;20711:2;20703:6;20699:15;20692:36;20507:228;:::o;20741:366::-;20883:3;20904:67;20968:2;20963:3;20904:67;:::i;:::-;20897:74;;20980:93;21069:3;20980:93;:::i;:::-;21098:2;21093:3;21089:12;21082:19;;20741:366;;;:::o;21113:419::-;21279:4;21317:2;21306:9;21302:18;21294:26;;21366:9;21360:4;21356:20;21352:1;21341:9;21337:17;21330:47;21394:131;21520:4;21394:131;:::i;:::-;21386:139;;21113:419;;;:::o;21538:250::-;21678:34;21674:1;21666:6;21662:14;21655:58;21747:33;21742:2;21734:6;21730:15;21723:58;21538:250;:::o;21794:366::-;21936:3;21957:67;22021:2;22016:3;21957:67;:::i;:::-;21950:74;;22033:93;22122:3;22033:93;:::i;:::-;22151:2;22146:3;22142:12;22135:19;;21794:366;;;:::o;22166:419::-;22332:4;22370:2;22359:9;22355:18;22347:26;;22419:9;22413:4;22409:20;22405:1;22394:9;22390:17;22383:47;22447:131;22573:4;22447:131;:::i;:::-;22439:139;;22166:419;;;:::o;22591:178::-;22731:30;22727:1;22719:6;22715:14;22708:54;22591:178;:::o;22775:366::-;22917:3;22938:67;23002:2;22997:3;22938:67;:::i;:::-;22931:74;;23014:93;23103:3;23014:93;:::i;:::-;23132:2;23127:3;23123:12;23116:19;;22775:366;;;:::o;23147:419::-;23313:4;23351:2;23340:9;23336:18;23328:26;;23400:9;23394:4;23390:20;23386:1;23375:9;23371:17;23364:47;23428:131;23554:4;23428:131;:::i;:::-;23420:139;;23147:419;;;:::o;23572:191::-;23612:3;23631:20;23649:1;23631:20;:::i;:::-;23626:25;;23665:20;23683:1;23665:20;:::i;:::-;23660:25;;23708:1;23705;23701:9;23694:16;;23729:3;23726:1;23723:10;23720:36;;;23736:18;;:::i;:::-;23720:36;23572:191;;;;:::o;23769:222::-;23909:34;23905:1;23897:6;23893:14;23886:58;23978:5;23973:2;23965:6;23961:15;23954:30;23769:222;:::o;23997:366::-;24139:3;24160:67;24224:2;24219:3;24160:67;:::i;:::-;24153:74;;24236:93;24325:3;24236:93;:::i;:::-;24354:2;24349:3;24345:12;24338:19;;23997:366;;;:::o;24369:419::-;24535:4;24573:2;24562:9;24558:18;24550:26;;24622:9;24616:4;24612:20;24608:1;24597:9;24593:17;24586:47;24650:131;24776:4;24650:131;:::i;:::-;24642:139;;24369:419;;;:::o;24794:194::-;24834:4;24854:20;24872:1;24854:20;:::i;:::-;24849:25;;24888:20;24906:1;24888:20;:::i;:::-;24883:25;;24932:1;24929;24925:9;24917:17;;24956:1;24950:4;24947:11;24944:37;;;24961:18;;:::i;:::-;24944:37;24794:194;;;;:::o;24994:229::-;25134:34;25130:1;25122:6;25118:14;25111:58;25203:12;25198:2;25190:6;25186:15;25179:37;24994:229;:::o;25229:366::-;25371:3;25392:67;25456:2;25451:3;25392:67;:::i;:::-;25385:74;;25468:93;25557:3;25468:93;:::i;:::-;25586:2;25581:3;25577:12;25570:19;;25229:366;;;:::o;25601:419::-;25767:4;25805:2;25794:9;25790:18;25782:26;;25854:9;25848:4;25844:20;25840:1;25829:9;25825:17;25818:47;25882:131;26008:4;25882:131;:::i;:::-;25874:139;;25601:419;;;:::o;26026:180::-;26074:77;26071:1;26064:88;26171:4;26168:1;26161:15;26195:4;26192:1;26185:15;26212:143;26269:5;26300:6;26294:13;26285:22;;26316:33;26343:5;26316:33;:::i;:::-;26212:143;;;;:::o;26361:351::-;26431:6;26480:2;26468:9;26459:7;26455:23;26451:32;26448:119;;;26486:79;;:::i;:::-;26448:119;26606:1;26631:64;26687:7;26678:6;26667:9;26663:22;26631:64;:::i;:::-;26621:74;;26577:128;26361:351;;;;:::o;26718:85::-;26763:7;26792:5;26781:16;;26718:85;;;:::o;26809:158::-;26867:9;26900:61;26918:42;26927:32;26953:5;26927:32;:::i;:::-;26918:42;:::i;:::-;26900:61;:::i;:::-;26887:74;;26809:158;;;:::o;26973:147::-;27068:45;27107:5;27068:45;:::i;:::-;27063:3;27056:58;26973:147;;:::o;27126:114::-;27193:6;27227:5;27221:12;27211:22;;27126:114;;;:::o;27246:184::-;27345:11;27379:6;27374:3;27367:19;27419:4;27414:3;27410:14;27395:29;;27246:184;;;;:::o;27436:132::-;27503:4;27526:3;27518:11;;27556:4;27551:3;27547:14;27539:22;;27436:132;;;:::o;27574:108::-;27651:24;27669:5;27651:24;:::i;:::-;27646:3;27639:37;27574:108;;:::o;27688:179::-;27757:10;27778:46;27820:3;27812:6;27778:46;:::i;:::-;27856:4;27851:3;27847:14;27833:28;;27688:179;;;;:::o;27873:113::-;27943:4;27975;27970:3;27966:14;27958:22;;27873:113;;;:::o;28022:732::-;28141:3;28170:54;28218:5;28170:54;:::i;:::-;28240:86;28319:6;28314:3;28240:86;:::i;:::-;28233:93;;28350:56;28400:5;28350:56;:::i;:::-;28429:7;28460:1;28445:284;28470:6;28467:1;28464:13;28445:284;;;28546:6;28540:13;28573:63;28632:3;28617:13;28573:63;:::i;:::-;28566:70;;28659:60;28712:6;28659:60;:::i;:::-;28649:70;;28505:224;28492:1;28489;28485:9;28480:14;;28445:284;;;28449:14;28745:3;28738:10;;28146:608;;;28022:732;;;;:::o;28760:831::-;29023:4;29061:3;29050:9;29046:19;29038:27;;29075:71;29143:1;29132:9;29128:17;29119:6;29075:71;:::i;:::-;29156:80;29232:2;29221:9;29217:18;29208:6;29156:80;:::i;:::-;29283:9;29277:4;29273:20;29268:2;29257:9;29253:18;29246:48;29311:108;29414:4;29405:6;29311:108;:::i;:::-;29303:116;;29429:72;29497:2;29486:9;29482:18;29473:6;29429:72;:::i;:::-;29511:73;29579:3;29568:9;29564:19;29555:6;29511:73;:::i;:::-;28760:831;;;;;;;;:::o;29597:180::-;29645:77;29642:1;29635:88;29742:4;29739:1;29732:15;29766:4;29763:1;29756:15;29783:185;29823:1;29840:20;29858:1;29840:20;:::i;:::-;29835:25;;29874:20;29892:1;29874:20;:::i;:::-;29869:25;;29913:1;29903:35;;29918:18;;:::i;:::-;29903:35;29960:1;29957;29953:9;29948:14;;29783:185;;;;:::o;29974:177::-;30114:29;30110:1;30102:6;30098:14;30091:53;29974:177;:::o;30157:366::-;30299:3;30320:67;30384:2;30379:3;30320:67;:::i;:::-;30313:74;;30396:93;30485:3;30396:93;:::i;:::-;30514:2;30509:3;30505:12;30498:19;;30157:366;;;:::o;30529:419::-;30695:4;30733:2;30722:9;30718:18;30710:26;;30782:9;30776:4;30772:20;30768:1;30757:9;30753:17;30746:47;30810:131;30936:4;30810:131;:::i;:::-;30802:139;;30529:419;;;:::o;30954:220::-;31094:34;31090:1;31082:6;31078:14;31071:58;31163:3;31158:2;31150:6;31146:15;31139:28;30954:220;:::o;31180:366::-;31322:3;31343:67;31407:2;31402:3;31343:67;:::i;:::-;31336:74;;31419:93;31508:3;31419:93;:::i;:::-;31537:2;31532:3;31528:12;31521:19;;31180:366;;;:::o;31552:419::-;31718:4;31756:2;31745:9;31741:18;31733:26;;31805:9;31799:4;31795:20;31791:1;31780:9;31776:17;31769:47;31833:131;31959:4;31833:131;:::i;:::-;31825:139;;31552:419;;;:::o

Swarm Source

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