ETH Price: $3,296.73 (-3.77%)
Gas: 8 Gwei

Token

ShibVinci (SHIV)
 

Overview

Max Total Supply

1,000,000,000,000,000,000 SHIV

Holders

1,418

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
78,012,332,707,312.840127169 SHIV

Value
$0.00
0xB638f25550De42d5751960CFB4d5669a99492D9C
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:
ShibVinci

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-02-14
*/

/**
                                                                              _  _  _  _          _                         _               _                   _           _              _                                                              _          
    _(_)(_)(_)(_)_       (_)                       (_)             (_)                 (_)         (_)            (_)                                                            (_)         
   (_)          (_)      (_) _  _  _             _  _              (_) _  _  _         (_)         (_)          _  _               _  _  _  _             _  _  _              _  _          
   (_)_  _  _  _         (_)(_)(_)(_)_          (_)(_)             (_)(_)(_)(_)_       (_)_       _(_)         (_)(_)             (_)(_)(_)(_)_         _(_)(_)(_)            (_)(_)         
     (_)(_)(_)(_)_       (_)        (_)            (_)             (_)        (_)        (_)     (_)              (_)             (_)        (_)       (_)                       (_)         
    _           (_)      (_)        (_)            (_)             (_)        (_)         (_)   (_)               (_)             (_)        (_)       (_)                       (_)         
   (_)_  _  _  _(_)      (_)        (_)          _ (_) _           (_) _  _  _(_)          (_)_(_)              _ (_) _           (_)        (_)       (_)_  _  _              _ (_) _       
     (_)(_)(_)(_)        (_)        (_)         (_)(_)(_)          (_)(_)(_)(_)              (_)               (_)(_)(_)          (_)        (_)         (_)(_)(_)            (_)(_)(_)      
                                                                                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                    
/**
 //SPDX-License-Identifier: UNLICENSED
 
*/

pragma solidity ^0.8.4;

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
    );
}

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;
    }
}

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);
    }
}

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 deadlineroute
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

contract ShibVinci is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private bots;
    mapping(address => uint256) private cooldown;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000000000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    uint256 private _feeAddr1;
    uint256 private _feeAddr2;
    address payable public _feeAddrMarketing;
    address payable public _feeAddrDev;
    address payable public _feeAddrTreasury;
    address private _administratorAddress; // Will be able todo limited stuff on the contract once renounced

    string private constant _name = "ShibVinci";
    string private constant _symbol = "SHIV";
    uint8 private constant _decimals = 9;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;
    uint256 private _maxTxAmount = _tTotal;
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        _administratorAddress = address(0xE5E2420dfFDBb8f1d40a11A33d9E2D3e9c8a1679);

        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_administratorAddress] = true;
        emit Transfer(address(this), _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 setCooldownEnabled(bool onoff) external onlyOwner {
        cooldownEnabled = onoff;
    }

    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 _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");
        _feeAddr1 = 1;
        _feeAddr2 = 9;
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);
            if (
                from == uniswapV2Pair &&
                to != address(uniswapV2Router) &&
                !_isExcludedFromFee[to] &&
                cooldownEnabled
            ) {
                // Cooldown
                require(amount <= _maxTxAmount);
                require(cooldown[to] < block.timestamp);
                cooldown[to] = block.timestamp + (30 seconds);
            }

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

        _tokenTransfer(from, to, amount);
    }

     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 {
        _feeAddrMarketing.transfer(amount.div(3));
        _feeAddrDev.transfer(amount.div(3));
        _feeAddrTreasury.transfer(amount.div(3));
    }

     function addLiquidity() external onlyOwner {
        require(!tradingOpen, "trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        swapEnabled = true;
        cooldownEnabled = true;
        _maxTxAmount = 15000000000000000 * 10**9;
        tradingOpen = true;
        IERC20(uniswapV2Pair).approve(
            address(uniswapV2Router),
            type(uint256).max
        );
    }

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

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

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        _transferStandard(sender, recipient, amount);
    }

    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 manualswap() external {
        require(_msgSender() == _administratorAddress, "Invalid admin address");
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == _administratorAddress, "Invalid admin address");
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function excludeFromFee(address _address, bool _val) external {
        require(_msgSender() == _administratorAddress, "Invalid admin address");
        _isExcludedFromFee[_address] = _val;
    }

    function updateMarketingAddress(address _address) external {
        require(_msgSender() == _administratorAddress, "Invalid admin address");
        _feeAddrMarketing = payable(_address);
        _isExcludedFromFee[_address] = true;
    }

    function updateDevAddress(address _address) external {
        require(_msgSender() == _administratorAddress, "Invalid admin address");
        _feeAddrDev = payable(_address);
        _isExcludedFromFee[_address] = true;
    }

    function updateTreasuryAddress(address _address) external {
        require(_msgSender() == _administratorAddress, "Invalid admin address");
        _feeAddrTreasury = payable(_address);
        _isExcludedFromFee[_address] = true;
    }
   
    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(
            tAmount,
            _feeAddr1,
            _feeAddr2
        );
        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 taxFee,
        uint256 TeamFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tTeam = tAmount.mul(TeamFee).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);
    }
}

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":"_feeAddrDev","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_feeAddrMarketing","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_feeAddrTreasury","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"nonpayable","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":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_val","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":"_address","type":"address"}],"name":"updateDevAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"updateMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"updateTreasuryAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526b033b2e3c9fd0803ce800000060001962000020919062000460565b6000196200002f91906200041b565b6008556000601160156101000a81548160ff0219169083151502179055506000601160166101000a81548160ff0219169083151502179055506000601160176101000a81548160ff0219169083151502179055506b033b2e3c9fd0803ce8000000601255348015620000a057600080fd5b506000620000b3620003bc60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073e5e2420dffdbb8f1d40a11a33d9e2d3e9c8a1679600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060085460026000620001bd620003bc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060016005600062000211620003c460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000344620003bc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b033b2e3c9fd0803ce8000000604051620003ae9190620003fe565b60405180910390a3620004f6565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620003f88162000456565b82525050565b6000602082019050620004156000830184620003ed565b92915050565b6000620004288262000456565b9150620004358362000456565b9250828210156200044b576200044a62000498565b5b828203905092915050565b6000819050919050565b60006200046d8262000456565b91506200047a8362000456565b9250826200048d576200048c620004c7565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b613baa80620005066000396000f3fe60806040526004361061014f5760003560e01c8063715018a6116100b6578063a9059cbb1161006f578063a9059cbb14610465578063b515566a146104a2578063c3c8cd80146104cb578063dd62ed3e146104e2578063df8408fe1461051f578063e8078d941461054857610156565b8063715018a61461037b578063841e45611461039257806385033762146103bb5780638da5cb5b146103e457806395d89b411461040f5780639f4dde821461043a57610156565b8063273123b711610108578063273123b71461027f578063313ce567146102a85780633c9a685f146102d35780635932ead1146102fe5780636fc3eaec1461032757806370a082311461033e57610156565b806306fdde031461015b578063095ea7b31461018657806318160ddd146101c35780631e11b4b4146101ee5780632369bf831461021957806323b872dd1461024257610156565b3661015657005b600080fd5b34801561016757600080fd5b5061017061055f565b60405161017d9190613266565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a89190612d93565b61059c565b6040516101ba919061324b565b60405180910390f35b3480156101cf57600080fd5b506101d86105ba565b6040516101e591906133e8565b60405180910390f35b3480156101fa57600080fd5b506102036105ce565b604051610210919061317d565b60405180910390f35b34801561022557600080fd5b50610240600480360381019061023b9190612c66565b6105f4565b005b34801561024e57600080fd5b5061026960048036038101906102649190612d00565b610727565b604051610276919061324b565b60405180910390f35b34801561028b57600080fd5b506102a660048036038101906102a19190612c66565b610800565b005b3480156102b457600080fd5b506102bd6108f0565b6040516102ca919061345d565b60405180910390f35b3480156102df57600080fd5b506102e86108f9565b6040516102f5919061317d565b60405180910390f35b34801561030a57600080fd5b5061032560048036038101906103209190612e1c565b61091f565b005b34801561033357600080fd5b5061033c6109d1565b005b34801561034a57600080fd5b5061036560048036038101906103609190612c66565b610a79565b60405161037291906133e8565b60405180910390f35b34801561038757600080fd5b50610390610aca565b005b34801561039e57600080fd5b506103b960048036038101906103b49190612c66565b610c1d565b005b3480156103c757600080fd5b506103e260048036038101906103dd9190612c66565b610d50565b005b3480156103f057600080fd5b506103f9610e83565b6040516104069190613162565b60405180910390f35b34801561041b57600080fd5b50610424610eac565b6040516104319190613266565b60405180910390f35b34801561044657600080fd5b5061044f610ee9565b60405161045c919061317d565b60405180910390f35b34801561047157600080fd5b5061048c60048036038101906104879190612d93565b610f0f565b604051610499919061324b565b60405180910390f35b3480156104ae57600080fd5b506104c960048036038101906104c49190612dd3565b610f2d565b005b3480156104d757600080fd5b506104e0611057565b005b3480156104ee57600080fd5b5061050960048036038101906105049190612cc0565b611107565b60405161051691906133e8565b60405180910390f35b34801561052b57600080fd5b5061054660048036038101906105419190612d53565b61118e565b005b34801561055457600080fd5b5061055d611280565b005b60606040518060400160405280600981526020017f5368696256696e63690000000000000000000000000000000000000000000000815250905090565b60006105b06105a96117e2565b84846117ea565b6001905092915050565b60006b033b2e3c9fd0803ce8000000905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106356117e2565b73ffffffffffffffffffffffffffffffffffffffff161461068b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610682906132a8565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006107348484846119b5565b6107f5846107406117e2565b6107f085604051806060016040528060288152602001613b4d60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107a66117e2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fba9092919063ffffffff16565b6117ea565b600190509392505050565b6108086117e2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088c90613348565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109276117e2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ab90613348565b60405180910390fd5b80601160176101000a81548160ff02191690831515021790555050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a126117e2565b73ffffffffffffffffffffffffffffffffffffffff1614610a68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5f906132a8565b60405180910390fd5b6000479050610a768161201e565b50565b6000610ac3600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612195565b9050919050565b610ad26117e2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5690613348565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c5e6117e2565b73ffffffffffffffffffffffffffffffffffffffff1614610cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cab906132a8565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d916117e2565b73ffffffffffffffffffffffffffffffffffffffff1614610de7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dde906132a8565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f5348495600000000000000000000000000000000000000000000000000000000815250905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610f23610f1c6117e2565b84846119b5565b6001905092915050565b610f356117e2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb990613348565b60405180910390fd5b60005b815181101561105357600160066000848481518110610fe757610fe66137b7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061104b90613710565b915050610fc5565b5050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110986117e2565b73ffffffffffffffffffffffffffffffffffffffff16146110ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e5906132a8565b60405180910390fd5b60006110f930610a79565b905061110481612203565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111cf6117e2565b73ffffffffffffffffffffffffffffffffffffffff1614611225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121c906132a8565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6112886117e2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130c90613348565b60405180910390fd5b601160149054906101000a900460ff1615611365576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135c906133c8565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506113f830601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166b033b2e3c9fd0803ce80000006117ea565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561143e57600080fd5b505afa158015611452573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114769190612c93565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156114d857600080fd5b505afa1580156114ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115109190612c93565b6040518363ffffffff1660e01b815260040161152d929190613198565b602060405180830381600087803b15801561154757600080fd5b505af115801561155b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157f9190612c93565b601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061160830610a79565b600080611613610e83565b426040518863ffffffff1660e01b8152600401611635969594939291906131ea565b6060604051808303818588803b15801561164e57600080fd5b505af1158015611662573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906116879190612e76565b5050506001601160166101000a81548160ff0219169083151502179055506001601160176101000a81548160ff0219169083151502179055506a0c685fa11e01ec6f0000006012819055506001601160146101000a81548160ff021916908315150217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161178c9291906131c1565b602060405180830381600087803b1580156117a657600080fd5b505af11580156117ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117de9190612e49565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561185a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611851906133a8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c1906132e8565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119a891906133e8565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1c90613388565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8c90613288565b60405180910390fd5b60008111611ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acf90613368565b60405180910390fd5b6001600a819055506009600b81905550611af0610e83565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b5e5750611b2e610e83565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611faa57600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c075750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611c1057600080fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611cbb5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611d115750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d295750601160179054906101000a900460ff165b15611dd957601254811115611d3d57600080fd5b42600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611d8857600080fd5b601e42611d95919061351e565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611e845750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611eda5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ef0576001600a819055506009600b819055505b6000611efb30610a79565b9050601160159054906101000a900460ff16158015611f685750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611f805750601160169054906101000a900460ff165b15611fa857611f8e81612203565b60004790506000811115611fa657611fa54761201e565b5b505b505b611fb583838361248b565b505050565b6000838311158290612002576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff99190613266565b60405180910390fd5b506000838561201191906135ff565b9050809150509392505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61206e60038461249b90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612099573d6000803e3d6000fd5b50600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6120ea60038461249b90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612115573d6000803e3d6000fd5b50600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61216660038461249b90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612191573d6000803e3d6000fd5b5050565b60006008548211156121dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d3906132c8565b60405180910390fd5b60006121e66124e5565b90506121fb818461249b90919063ffffffff16565b915050919050565b6001601160156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561223b5761223a6137e6565b5b6040519080825280602002602001820160405280156122695781602001602082028036833780820191505090505b5090503081600081518110612281576122806137b7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561232357600080fd5b505afa158015612337573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061235b9190612c93565b8160018151811061236f5761236e6137b7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123d630601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117ea565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161243a959493929190613403565b600060405180830381600087803b15801561245457600080fd5b505af1158015612468573d6000803e3d6000fd5b50505050506000601160156101000a81548160ff02191690831515021790555050565b612496838383612510565b505050565b60006124dd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506126db565b905092915050565b60008060006124f261273e565b91509150612509818361249b90919063ffffffff16565b9250505090565b600080600080600080612522876127a9565b95509550955095509550955061258086600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461281190919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061261585600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461285b90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612661816128b9565b61266b8483612976565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126c891906133e8565b60405180910390a3505050505050505050565b60008083118290612722576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127199190613266565b60405180910390fd5b50600083856127319190613574565b9050809150509392505050565b6000806000600854905060006b033b2e3c9fd0803ce8000000905061277a6b033b2e3c9fd0803ce800000060085461249b90919063ffffffff16565b82101561279c576008546b033b2e3c9fd0803ce80000009350935050506127a5565b81819350935050505b9091565b60008060008060008060008060006127c68a600a54600b546129b0565b92509250925060006127d66124e5565b905060008060006127e98e878787612a46565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061285383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fba565b905092915050565b600080828461286a919061351e565b9050838110156128af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a690613308565b60405180910390fd5b8091505092915050565b60006128c36124e5565b905060006128da8284612acf90919063ffffffff16565b905061292e81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461285b90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61298b8260085461281190919063ffffffff16565b6008819055506129a68160095461285b90919063ffffffff16565b6009819055505050565b6000806000806129dc60646129ce888a612acf90919063ffffffff16565b61249b90919063ffffffff16565b90506000612a0660646129f8888b612acf90919063ffffffff16565b61249b90919063ffffffff16565b90506000612a2f82612a21858c61281190919063ffffffff16565b61281190919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a5f8589612acf90919063ffffffff16565b90506000612a768689612acf90919063ffffffff16565b90506000612a8d8789612acf90919063ffffffff16565b90506000612ab682612aa8858761281190919063ffffffff16565b61281190919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612ae25760009050612b44565b60008284612af091906135a5565b9050828482612aff9190613574565b14612b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3690613328565b60405180910390fd5b809150505b92915050565b6000612b5d612b588461349d565b613478565b90508083825260208201905082856020860282011115612b8057612b7f61381a565b5b60005b85811015612bb05781612b968882612bba565b845260208401935060208301925050600181019050612b83565b5050509392505050565b600081359050612bc981613b07565b92915050565b600081519050612bde81613b07565b92915050565b600082601f830112612bf957612bf8613815565b5b8135612c09848260208601612b4a565b91505092915050565b600081359050612c2181613b1e565b92915050565b600081519050612c3681613b1e565b92915050565b600081359050612c4b81613b35565b92915050565b600081519050612c6081613b35565b92915050565b600060208284031215612c7c57612c7b613824565b5b6000612c8a84828501612bba565b91505092915050565b600060208284031215612ca957612ca8613824565b5b6000612cb784828501612bcf565b91505092915050565b60008060408385031215612cd757612cd6613824565b5b6000612ce585828601612bba565b9250506020612cf685828601612bba565b9150509250929050565b600080600060608486031215612d1957612d18613824565b5b6000612d2786828701612bba565b9350506020612d3886828701612bba565b9250506040612d4986828701612c3c565b9150509250925092565b60008060408385031215612d6a57612d69613824565b5b6000612d7885828601612bba565b9250506020612d8985828601612c12565b9150509250929050565b60008060408385031215612daa57612da9613824565b5b6000612db885828601612bba565b9250506020612dc985828601612c3c565b9150509250929050565b600060208284031215612de957612de8613824565b5b600082013567ffffffffffffffff811115612e0757612e0661381f565b5b612e1384828501612be4565b91505092915050565b600060208284031215612e3257612e31613824565b5b6000612e4084828501612c12565b91505092915050565b600060208284031215612e5f57612e5e613824565b5b6000612e6d84828501612c27565b91505092915050565b600080600060608486031215612e8f57612e8e613824565b5b6000612e9d86828701612c51565b9350506020612eae86828701612c51565b9250506040612ebf86828701612c51565b9150509250925092565b6000612ed58383612ef0565b60208301905092915050565b612eea81613645565b82525050565b612ef981613633565b82525050565b612f0881613633565b82525050565b6000612f19826134d9565b612f2381856134fc565b9350612f2e836134c9565b8060005b83811015612f5f578151612f468882612ec9565b9750612f51836134ef565b925050600181019050612f32565b5085935050505092915050565b612f7581613657565b82525050565b612f848161369a565b82525050565b6000612f95826134e4565b612f9f818561350d565b9350612faf8185602086016136ac565b612fb881613829565b840191505092915050565b6000612fd060238361350d565b9150612fdb8261383a565b604082019050919050565b6000612ff360158361350d565b9150612ffe82613889565b602082019050919050565b6000613016602a8361350d565b9150613021826138b2565b604082019050919050565b600061303960228361350d565b915061304482613901565b604082019050919050565b600061305c601b8361350d565b915061306782613950565b602082019050919050565b600061307f60218361350d565b915061308a82613979565b604082019050919050565b60006130a260208361350d565b91506130ad826139c8565b602082019050919050565b60006130c560298361350d565b91506130d0826139f1565b604082019050919050565b60006130e860258361350d565b91506130f382613a40565b604082019050919050565b600061310b60248361350d565b915061311682613a8f565b604082019050919050565b600061312e60178361350d565b915061313982613ade565b602082019050919050565b61314d81613683565b82525050565b61315c8161368d565b82525050565b60006020820190506131776000830184612eff565b92915050565b60006020820190506131926000830184612ee1565b92915050565b60006040820190506131ad6000830185612eff565b6131ba6020830184612eff565b9392505050565b60006040820190506131d66000830185612eff565b6131e36020830184613144565b9392505050565b600060c0820190506131ff6000830189612eff565b61320c6020830188613144565b6132196040830187612f7b565b6132266060830186612f7b565b6132336080830185612eff565b61324060a0830184613144565b979650505050505050565b60006020820190506132606000830184612f6c565b92915050565b600060208201905081810360008301526132808184612f8a565b905092915050565b600060208201905081810360008301526132a181612fc3565b9050919050565b600060208201905081810360008301526132c181612fe6565b9050919050565b600060208201905081810360008301526132e181613009565b9050919050565b600060208201905081810360008301526133018161302c565b9050919050565b600060208201905081810360008301526133218161304f565b9050919050565b6000602082019050818103600083015261334181613072565b9050919050565b6000602082019050818103600083015261336181613095565b9050919050565b60006020820190508181036000830152613381816130b8565b9050919050565b600060208201905081810360008301526133a1816130db565b9050919050565b600060208201905081810360008301526133c1816130fe565b9050919050565b600060208201905081810360008301526133e181613121565b9050919050565b60006020820190506133fd6000830184613144565b92915050565b600060a0820190506134186000830188613144565b6134256020830187612f7b565b81810360408301526134378186612f0e565b90506134466060830185612eff565b6134536080830184613144565b9695505050505050565b60006020820190506134726000830184613153565b92915050565b6000613482613493565b905061348e82826136df565b919050565b6000604051905090565b600067ffffffffffffffff8211156134b8576134b76137e6565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061352982613683565b915061353483613683565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561356957613568613759565b5b828201905092915050565b600061357f82613683565b915061358a83613683565b92508261359a57613599613788565b5b828204905092915050565b60006135b082613683565b91506135bb83613683565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156135f4576135f3613759565b5b828202905092915050565b600061360a82613683565b915061361583613683565b92508282101561362857613627613759565b5b828203905092915050565b600061363e82613663565b9050919050565b600061365082613663565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006136a582613683565b9050919050565b60005b838110156136ca5780820151818401526020810190506136af565b838111156136d9576000848401525b50505050565b6136e882613829565b810181811067ffffffffffffffff82111715613707576137066137e6565b5b80604052505050565b600061371b82613683565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561374e5761374d613759565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f496e76616c69642061646d696e20616464726573730000000000000000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b613b1081613633565b8114613b1b57600080fd5b50565b613b2781613657565b8114613b3257600080fd5b50565b613b3e81613683565b8114613b4957600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207f800635bb7fd82b5a61ca82481644d681b0a4e03f6d017ce6430e021a1af8a664736f6c63430008070033

Deployed Bytecode

0x60806040526004361061014f5760003560e01c8063715018a6116100b6578063a9059cbb1161006f578063a9059cbb14610465578063b515566a146104a2578063c3c8cd80146104cb578063dd62ed3e146104e2578063df8408fe1461051f578063e8078d941461054857610156565b8063715018a61461037b578063841e45611461039257806385033762146103bb5780638da5cb5b146103e457806395d89b411461040f5780639f4dde821461043a57610156565b8063273123b711610108578063273123b71461027f578063313ce567146102a85780633c9a685f146102d35780635932ead1146102fe5780636fc3eaec1461032757806370a082311461033e57610156565b806306fdde031461015b578063095ea7b31461018657806318160ddd146101c35780631e11b4b4146101ee5780632369bf831461021957806323b872dd1461024257610156565b3661015657005b600080fd5b34801561016757600080fd5b5061017061055f565b60405161017d9190613266565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a89190612d93565b61059c565b6040516101ba919061324b565b60405180910390f35b3480156101cf57600080fd5b506101d86105ba565b6040516101e591906133e8565b60405180910390f35b3480156101fa57600080fd5b506102036105ce565b604051610210919061317d565b60405180910390f35b34801561022557600080fd5b50610240600480360381019061023b9190612c66565b6105f4565b005b34801561024e57600080fd5b5061026960048036038101906102649190612d00565b610727565b604051610276919061324b565b60405180910390f35b34801561028b57600080fd5b506102a660048036038101906102a19190612c66565b610800565b005b3480156102b457600080fd5b506102bd6108f0565b6040516102ca919061345d565b60405180910390f35b3480156102df57600080fd5b506102e86108f9565b6040516102f5919061317d565b60405180910390f35b34801561030a57600080fd5b5061032560048036038101906103209190612e1c565b61091f565b005b34801561033357600080fd5b5061033c6109d1565b005b34801561034a57600080fd5b5061036560048036038101906103609190612c66565b610a79565b60405161037291906133e8565b60405180910390f35b34801561038757600080fd5b50610390610aca565b005b34801561039e57600080fd5b506103b960048036038101906103b49190612c66565b610c1d565b005b3480156103c757600080fd5b506103e260048036038101906103dd9190612c66565b610d50565b005b3480156103f057600080fd5b506103f9610e83565b6040516104069190613162565b60405180910390f35b34801561041b57600080fd5b50610424610eac565b6040516104319190613266565b60405180910390f35b34801561044657600080fd5b5061044f610ee9565b60405161045c919061317d565b60405180910390f35b34801561047157600080fd5b5061048c60048036038101906104879190612d93565b610f0f565b604051610499919061324b565b60405180910390f35b3480156104ae57600080fd5b506104c960048036038101906104c49190612dd3565b610f2d565b005b3480156104d757600080fd5b506104e0611057565b005b3480156104ee57600080fd5b5061050960048036038101906105049190612cc0565b611107565b60405161051691906133e8565b60405180910390f35b34801561052b57600080fd5b5061054660048036038101906105419190612d53565b61118e565b005b34801561055457600080fd5b5061055d611280565b005b60606040518060400160405280600981526020017f5368696256696e63690000000000000000000000000000000000000000000000815250905090565b60006105b06105a96117e2565b84846117ea565b6001905092915050565b60006b033b2e3c9fd0803ce8000000905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106356117e2565b73ffffffffffffffffffffffffffffffffffffffff161461068b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610682906132a8565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006107348484846119b5565b6107f5846107406117e2565b6107f085604051806060016040528060288152602001613b4d60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107a66117e2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fba9092919063ffffffff16565b6117ea565b600190509392505050565b6108086117e2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088c90613348565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109276117e2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ab90613348565b60405180910390fd5b80601160176101000a81548160ff02191690831515021790555050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a126117e2565b73ffffffffffffffffffffffffffffffffffffffff1614610a68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5f906132a8565b60405180910390fd5b6000479050610a768161201e565b50565b6000610ac3600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612195565b9050919050565b610ad26117e2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5690613348565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c5e6117e2565b73ffffffffffffffffffffffffffffffffffffffff1614610cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cab906132a8565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d916117e2565b73ffffffffffffffffffffffffffffffffffffffff1614610de7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dde906132a8565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f5348495600000000000000000000000000000000000000000000000000000000815250905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610f23610f1c6117e2565b84846119b5565b6001905092915050565b610f356117e2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb990613348565b60405180910390fd5b60005b815181101561105357600160066000848481518110610fe757610fe66137b7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061104b90613710565b915050610fc5565b5050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110986117e2565b73ffffffffffffffffffffffffffffffffffffffff16146110ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e5906132a8565b60405180910390fd5b60006110f930610a79565b905061110481612203565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111cf6117e2565b73ffffffffffffffffffffffffffffffffffffffff1614611225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121c906132a8565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6112886117e2565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130c90613348565b60405180910390fd5b601160149054906101000a900460ff1615611365576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135c906133c8565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506113f830601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166b033b2e3c9fd0803ce80000006117ea565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561143e57600080fd5b505afa158015611452573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114769190612c93565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156114d857600080fd5b505afa1580156114ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115109190612c93565b6040518363ffffffff1660e01b815260040161152d929190613198565b602060405180830381600087803b15801561154757600080fd5b505af115801561155b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157f9190612c93565b601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061160830610a79565b600080611613610e83565b426040518863ffffffff1660e01b8152600401611635969594939291906131ea565b6060604051808303818588803b15801561164e57600080fd5b505af1158015611662573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906116879190612e76565b5050506001601160166101000a81548160ff0219169083151502179055506001601160176101000a81548160ff0219169083151502179055506a0c685fa11e01ec6f0000006012819055506001601160146101000a81548160ff021916908315150217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161178c9291906131c1565b602060405180830381600087803b1580156117a657600080fd5b505af11580156117ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117de9190612e49565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561185a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611851906133a8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c1906132e8565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119a891906133e8565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1c90613388565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8c90613288565b60405180910390fd5b60008111611ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acf90613368565b60405180910390fd5b6001600a819055506009600b81905550611af0610e83565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b5e5750611b2e610e83565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611faa57600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c075750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611c1057600080fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611cbb5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611d115750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d295750601160179054906101000a900460ff165b15611dd957601254811115611d3d57600080fd5b42600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611d8857600080fd5b601e42611d95919061351e565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611e845750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611eda5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ef0576001600a819055506009600b819055505b6000611efb30610a79565b9050601160159054906101000a900460ff16158015611f685750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611f805750601160169054906101000a900460ff165b15611fa857611f8e81612203565b60004790506000811115611fa657611fa54761201e565b5b505b505b611fb583838361248b565b505050565b6000838311158290612002576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff99190613266565b60405180910390fd5b506000838561201191906135ff565b9050809150509392505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61206e60038461249b90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612099573d6000803e3d6000fd5b50600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6120ea60038461249b90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612115573d6000803e3d6000fd5b50600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61216660038461249b90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612191573d6000803e3d6000fd5b5050565b60006008548211156121dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d3906132c8565b60405180910390fd5b60006121e66124e5565b90506121fb818461249b90919063ffffffff16565b915050919050565b6001601160156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561223b5761223a6137e6565b5b6040519080825280602002602001820160405280156122695781602001602082028036833780820191505090505b5090503081600081518110612281576122806137b7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561232357600080fd5b505afa158015612337573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061235b9190612c93565b8160018151811061236f5761236e6137b7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123d630601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117ea565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161243a959493929190613403565b600060405180830381600087803b15801561245457600080fd5b505af1158015612468573d6000803e3d6000fd5b50505050506000601160156101000a81548160ff02191690831515021790555050565b612496838383612510565b505050565b60006124dd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506126db565b905092915050565b60008060006124f261273e565b91509150612509818361249b90919063ffffffff16565b9250505090565b600080600080600080612522876127a9565b95509550955095509550955061258086600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461281190919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061261585600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461285b90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612661816128b9565b61266b8483612976565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126c891906133e8565b60405180910390a3505050505050505050565b60008083118290612722576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127199190613266565b60405180910390fd5b50600083856127319190613574565b9050809150509392505050565b6000806000600854905060006b033b2e3c9fd0803ce8000000905061277a6b033b2e3c9fd0803ce800000060085461249b90919063ffffffff16565b82101561279c576008546b033b2e3c9fd0803ce80000009350935050506127a5565b81819350935050505b9091565b60008060008060008060008060006127c68a600a54600b546129b0565b92509250925060006127d66124e5565b905060008060006127e98e878787612a46565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061285383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fba565b905092915050565b600080828461286a919061351e565b9050838110156128af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a690613308565b60405180910390fd5b8091505092915050565b60006128c36124e5565b905060006128da8284612acf90919063ffffffff16565b905061292e81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461285b90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61298b8260085461281190919063ffffffff16565b6008819055506129a68160095461285b90919063ffffffff16565b6009819055505050565b6000806000806129dc60646129ce888a612acf90919063ffffffff16565b61249b90919063ffffffff16565b90506000612a0660646129f8888b612acf90919063ffffffff16565b61249b90919063ffffffff16565b90506000612a2f82612a21858c61281190919063ffffffff16565b61281190919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a5f8589612acf90919063ffffffff16565b90506000612a768689612acf90919063ffffffff16565b90506000612a8d8789612acf90919063ffffffff16565b90506000612ab682612aa8858761281190919063ffffffff16565b61281190919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612ae25760009050612b44565b60008284612af091906135a5565b9050828482612aff9190613574565b14612b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3690613328565b60405180910390fd5b809150505b92915050565b6000612b5d612b588461349d565b613478565b90508083825260208201905082856020860282011115612b8057612b7f61381a565b5b60005b85811015612bb05781612b968882612bba565b845260208401935060208301925050600181019050612b83565b5050509392505050565b600081359050612bc981613b07565b92915050565b600081519050612bde81613b07565b92915050565b600082601f830112612bf957612bf8613815565b5b8135612c09848260208601612b4a565b91505092915050565b600081359050612c2181613b1e565b92915050565b600081519050612c3681613b1e565b92915050565b600081359050612c4b81613b35565b92915050565b600081519050612c6081613b35565b92915050565b600060208284031215612c7c57612c7b613824565b5b6000612c8a84828501612bba565b91505092915050565b600060208284031215612ca957612ca8613824565b5b6000612cb784828501612bcf565b91505092915050565b60008060408385031215612cd757612cd6613824565b5b6000612ce585828601612bba565b9250506020612cf685828601612bba565b9150509250929050565b600080600060608486031215612d1957612d18613824565b5b6000612d2786828701612bba565b9350506020612d3886828701612bba565b9250506040612d4986828701612c3c565b9150509250925092565b60008060408385031215612d6a57612d69613824565b5b6000612d7885828601612bba565b9250506020612d8985828601612c12565b9150509250929050565b60008060408385031215612daa57612da9613824565b5b6000612db885828601612bba565b9250506020612dc985828601612c3c565b9150509250929050565b600060208284031215612de957612de8613824565b5b600082013567ffffffffffffffff811115612e0757612e0661381f565b5b612e1384828501612be4565b91505092915050565b600060208284031215612e3257612e31613824565b5b6000612e4084828501612c12565b91505092915050565b600060208284031215612e5f57612e5e613824565b5b6000612e6d84828501612c27565b91505092915050565b600080600060608486031215612e8f57612e8e613824565b5b6000612e9d86828701612c51565b9350506020612eae86828701612c51565b9250506040612ebf86828701612c51565b9150509250925092565b6000612ed58383612ef0565b60208301905092915050565b612eea81613645565b82525050565b612ef981613633565b82525050565b612f0881613633565b82525050565b6000612f19826134d9565b612f2381856134fc565b9350612f2e836134c9565b8060005b83811015612f5f578151612f468882612ec9565b9750612f51836134ef565b925050600181019050612f32565b5085935050505092915050565b612f7581613657565b82525050565b612f848161369a565b82525050565b6000612f95826134e4565b612f9f818561350d565b9350612faf8185602086016136ac565b612fb881613829565b840191505092915050565b6000612fd060238361350d565b9150612fdb8261383a565b604082019050919050565b6000612ff360158361350d565b9150612ffe82613889565b602082019050919050565b6000613016602a8361350d565b9150613021826138b2565b604082019050919050565b600061303960228361350d565b915061304482613901565b604082019050919050565b600061305c601b8361350d565b915061306782613950565b602082019050919050565b600061307f60218361350d565b915061308a82613979565b604082019050919050565b60006130a260208361350d565b91506130ad826139c8565b602082019050919050565b60006130c560298361350d565b91506130d0826139f1565b604082019050919050565b60006130e860258361350d565b91506130f382613a40565b604082019050919050565b600061310b60248361350d565b915061311682613a8f565b604082019050919050565b600061312e60178361350d565b915061313982613ade565b602082019050919050565b61314d81613683565b82525050565b61315c8161368d565b82525050565b60006020820190506131776000830184612eff565b92915050565b60006020820190506131926000830184612ee1565b92915050565b60006040820190506131ad6000830185612eff565b6131ba6020830184612eff565b9392505050565b60006040820190506131d66000830185612eff565b6131e36020830184613144565b9392505050565b600060c0820190506131ff6000830189612eff565b61320c6020830188613144565b6132196040830187612f7b565b6132266060830186612f7b565b6132336080830185612eff565b61324060a0830184613144565b979650505050505050565b60006020820190506132606000830184612f6c565b92915050565b600060208201905081810360008301526132808184612f8a565b905092915050565b600060208201905081810360008301526132a181612fc3565b9050919050565b600060208201905081810360008301526132c181612fe6565b9050919050565b600060208201905081810360008301526132e181613009565b9050919050565b600060208201905081810360008301526133018161302c565b9050919050565b600060208201905081810360008301526133218161304f565b9050919050565b6000602082019050818103600083015261334181613072565b9050919050565b6000602082019050818103600083015261336181613095565b9050919050565b60006020820190508181036000830152613381816130b8565b9050919050565b600060208201905081810360008301526133a1816130db565b9050919050565b600060208201905081810360008301526133c1816130fe565b9050919050565b600060208201905081810360008301526133e181613121565b9050919050565b60006020820190506133fd6000830184613144565b92915050565b600060a0820190506134186000830188613144565b6134256020830187612f7b565b81810360408301526134378186612f0e565b90506134466060830185612eff565b6134536080830184613144565b9695505050505050565b60006020820190506134726000830184613153565b92915050565b6000613482613493565b905061348e82826136df565b919050565b6000604051905090565b600067ffffffffffffffff8211156134b8576134b76137e6565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061352982613683565b915061353483613683565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561356957613568613759565b5b828201905092915050565b600061357f82613683565b915061358a83613683565b92508261359a57613599613788565b5b828204905092915050565b60006135b082613683565b91506135bb83613683565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156135f4576135f3613759565b5b828202905092915050565b600061360a82613683565b915061361583613683565b92508282101561362857613627613759565b5b828203905092915050565b600061363e82613663565b9050919050565b600061365082613663565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006136a582613683565b9050919050565b60005b838110156136ca5780820151818401526020810190506136af565b838111156136d9576000848401525b50505050565b6136e882613829565b810181811067ffffffffffffffff82111715613707576137066137e6565b5b80604052505050565b600061371b82613683565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561374e5761374d613759565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f496e76616c69642061646d696e20616464726573730000000000000000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b613b1081613633565b8114613b1b57600080fd5b50565b613b2781613657565b8114613b3257600080fd5b50565b613b3e81613683565b8114613b4957600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207f800635bb7fd82b5a61ca82481644d681b0a4e03f6d017ce6430e021a1af8a664736f6c63430008070033

Deployed Bytecode Sourcemap

6048:12678:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7930:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8855:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8207:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6735:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15823:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9056:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13837:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8116:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6782:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9510:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15384:225;;;;;;;;;;;;;:::i;:::-;;8310:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4995:148;;;;;;;;;;;;;:::i;:::-;;16313:241;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16074:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4781:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8021:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6823:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8456:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13662:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15150:226;;;;;;;;;;;;;:::i;:::-;;8663:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15617:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12660:994;;;;;;;;;;;;;:::i;:::-;;7930:83;7967:13;8000:5;;;;;;;;;;;;;;;;;7993:12;;7930:83;:::o;8855:193::-;8957:4;8979:39;8988:12;:10;:12::i;:::-;9002:7;9011:6;8979:8;:39::i;:::-;9036:4;9029:11;;8855:193;;;;:::o;8207:95::-;8260:7;6546:27;8280:14;;8207:95;:::o;6735:40::-;;;;;;;;;;;;;:::o;15823:243::-;15917:21;;;;;;;;;;;15901:37;;:12;:10;:12::i;:::-;:37;;;15893:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16003:8;15975:17;;:37;;;;;;;;;;;;;;;;;;16054:4;16023:18;:28;16042:8;16023:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;15823:243;:::o;9056:446::-;9188:4;9205:36;9215:6;9223:9;9234:6;9205:9;:36::i;:::-;9252:220;9275:6;9296:12;:10;:12::i;:::-;9323:138;9379:6;9323:138;;;;;;;;;;;;;;;;;:11;:19;9335:6;9323:19;;;;;;;;;;;;;;;:33;9343:12;:10;:12::i;:::-;9323:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;9252:8;:220::i;:::-;9490:4;9483:11;;9056:446;;;;;:::o;13837:88::-;4918:12;:10;:12::i;:::-;4908:22;;:6;;;;;;;;;;:22;;;4900:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13912:5:::1;13897:4;:12;13902:6;13897:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13837:88:::0;:::o;8116:83::-;8157:5;7113:1;8175:16;;8116:83;:::o;6782:34::-;;;;;;;;;;;;;:::o;9510:101::-;4918:12;:10;:12::i;:::-;4908:22;;:6;;;;;;;;;;:22;;;4900:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9598:5:::1;9580:15;;:23;;;;;;;;;;;;;;;;;;9510:101:::0;:::o;15384:225::-;15450:21;;;;;;;;;;;15434:37;;:12;:10;:12::i;:::-;:37;;;15426:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15508:26;15537:21;15508:50;;15569:32;15582:18;15569:12;:32::i;:::-;15415:194;15384:225::o;8310:138::-;8376:7;8403:37;8423:7;:16;8431:7;8423:16;;;;;;;;;;;;;;;;8403:19;:37::i;:::-;8396:44;;8310:138;;;:::o;4995:148::-;4918:12;:10;:12::i;:::-;4908:22;;:6;;;;;;;;;;:22;;;4900:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5102:1:::1;5065:40;;5086:6;::::0;::::1;;;;;;;;5065:40;;;;;;;;;;;;5133:1;5116:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;4995:148::o:0;16313:241::-;16406:21;;;;;;;;;;;16390:37;;:12;:10;:12::i;:::-;:37;;;16382:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16491:8;16464:16;;:36;;;;;;;;;;;;;;;;;;16542:4;16511:18;:28;16530:8;16511:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;16313:241;:::o;16074:231::-;16162:21;;;;;;;;;;;16146:37;;:12;:10;:12::i;:::-;:37;;;16138:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16242:8;16220:11;;:31;;;;;;;;;;;;;;;;;;16293:4;16262:18;:28;16281:8;16262:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;16074:231;:::o;4781:79::-;4819:7;4846:6;;;;;;;;;;;4839:13;;4781:79;:::o;8021:87::-;8060:13;8093:7;;;;;;;;;;;;;;;;;8086:14;;8021:87;:::o;6823:39::-;;;;;;;;;;;;;:::o;8456:199::-;8561:4;8583:42;8593:12;:10;:12::i;:::-;8607:9;8618:6;8583:9;:42::i;:::-;8643:4;8636:11;;8456:199;;;;:::o;13662:167::-;4918:12;:10;:12::i;:::-;4908:22;;:6;;;;;;;;;;:22;;;4900:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13736:9:::1;13731:91;13755:5;:12;13751:1;:16;13731:91;;;13806:4;13789;:14;13794:5;13800:1;13794:8;;;;;;;;:::i;:::-;;;;;;;;13789:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13769:3;;;;;:::i;:::-;;;;13731:91;;;;13662:167:::0;:::o;15150:226::-;15216:21;;;;;;;;;;;15200:37;;:12;:10;:12::i;:::-;:37;;;15192:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15274:23;15300:24;15318:4;15300:9;:24::i;:::-;15274:50;;15335:33;15352:15;15335:16;:33::i;:::-;15181:195;15150:226::o;8663:184::-;8780:7;8812:11;:18;8824:5;8812:18;;;;;;;;;;;;;;;:27;8831:7;8812:27;;;;;;;;;;;;;;;;8805:34;;8663:184;;;;:::o;15617:198::-;15714:21;;;;;;;;;;;15698:37;;:12;:10;:12::i;:::-;:37;;;15690:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15803:4;15772:18;:28;15791:8;15772:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;15617:198;;:::o;12660:994::-;4918:12;:10;:12::i;:::-;4908:22;;:6;;;;;;;;;;:22;;;4900:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12723:11:::1;;;;;;;;;;;12722:12;12714:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;12773:35;12844:42;12773:124;;12926:16;12908:15;;:34;;;;;;;;;;;;;;;;;;12953:58;12970:4;12985:15;;;;;;;;;;;6546:27;12953:8;:58::i;:::-;13056:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13038:70;;;13117:4;13124:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13038:110;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13022:13;;:126;;;;;;;;;;;;;;;;;;13159:15;;;;;;;;;;;:31;;;13198:21;13243:4;13263:24;13281:4;13263:9;:24::i;:::-;13302:1;13318::::0;13334:7:::1;:5;:7::i;:::-;13356:15;13159:223;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13407:4;13393:11;;:18;;;;;;;;;;;;;;;;;;13440:4;13422:15;;:22;;;;;;;;;;;;;;;;;;13470:25;13455:12;:40;;;;13520:4;13506:11;;:18;;;;;;;;;;;;;;;;;;13542:13;;;;;;;;;;;13535:29;;;13587:15;;;;;;;;;;;13618:17;13535:111;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12703:951;12660:994::o:0;2284:98::-;2337:7;2364:10;2357:17;;2284:98;:::o;9950:369::-;10094:1;10077:19;;:5;:19;;;;10069:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10175:1;10156:21;;:7;:21;;;;10148:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10257:6;10227:11;:18;10239:5;10227:18;;;;;;;;;;;;;;;:27;10246:7;10227:27;;;;;;;;;;;;;;;:36;;;;10295:7;10279:32;;10288:5;10279:32;;;10304:6;10279:32;;;;;;:::i;:::-;;;;;;;;9950:369;;;:::o;10331:1617::-;10469:1;10453:18;;:4;:18;;;;10445:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10546:1;10532:16;;:2;:16;;;;10524:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10616:1;10607:6;:10;10599:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10686:1;10674:9;:13;;;;10710:1;10698:9;:13;;;;10734:7;:5;:7::i;:::-;10726:15;;:4;:15;;;;:32;;;;;10751:7;:5;:7::i;:::-;10745:13;;:2;:13;;;;10726:32;10722:1174;;;10784:4;:10;10789:4;10784:10;;;;;;;;;;;;;;;;;;;;;;;;;10783:11;:24;;;;;10799:4;:8;10804:2;10799:8;;;;;;;;;;;;;;;;;;;;;;;;;10798:9;10783:24;10775:33;;;;;;10853:13;;;;;;;;;;;10845:21;;:4;:21;;;:72;;;;;10901:15;;;;;;;;;;;10887:30;;:2;:30;;;;10845:72;:116;;;;;10939:18;:22;10958:2;10939:22;;;;;;;;;;;;;;;;;;;;;;;;;10938:23;10845:116;:152;;;;;10982:15;;;;;;;;;;;10845:152;10823:407;;;11079:12;;11069:6;:22;;11061:31;;;;;;11134:15;11119:8;:12;11128:2;11119:12;;;;;;;;;;;;;;;;:30;11111:39;;;;;;11203:10;11184:15;:30;;;;:::i;:::-;11169:8;:12;11178:2;11169:12;;;;;;;;;;;;;;;:45;;;;10823:407;11274:13;;;;;;;;;;;11268:19;;:2;:19;;;:72;;;;;11324:15;;;;;;;;;;;11308:32;;:4;:32;;;;11268:72;:118;;;;;11362:18;:24;11381:4;11362:24;;;;;;;;;;;;;;;;;;;;;;;;;11361:25;11268:118;11246:236;;;11433:1;11421:9;:13;;;;11465:1;11453:9;:13;;;;11246:236;11496:28;11527:24;11545:4;11527:9;:24::i;:::-;11496:55;;11571:6;;;;;;;;;;;11570:7;:32;;;;;11589:13;;;;;;;;;;;11581:21;;:4;:21;;;;11570:32;:47;;;;;11606:11;;;;;;;;;;;11570:47;11566:319;;;11638:38;11655:20;11638:16;:38::i;:::-;11695:26;11724:21;11695:50;;11789:1;11768:18;:22;11764:106;;;11815:35;11828:21;11815:12;:35::i;:::-;11764:106;11619:266;11566:319;10760:1136;10722:1174;11908:32;11923:4;11929:2;11933:6;11908:14;:32::i;:::-;10331:1617;;;:::o;3546:224::-;3666:7;3699:1;3694;:6;;3702:12;3686:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3726:9;3742:1;3738;:5;;;;:::i;:::-;3726:17;;3761:1;3754:8;;;3546:224;;;;;:::o;12448:203::-;12505:17;;;;;;;;;;;:26;;:41;12532:13;12543:1;12532:6;:10;;:13;;;;:::i;:::-;12505:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12557:11;;;;;;;;;;;:20;;:35;12578:13;12589:1;12578:6;:10;;:13;;;;:::i;:::-;12557:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12603:16;;;;;;;;;;;:25;;:40;12629:13;12640:1;12629:6;:10;;:13;;;;:::i;:::-;12603:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12448:203;:::o;9619:323::-;9714:7;9772;;9761;:18;;9739:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;9860:19;9882:10;:8;:10::i;:::-;9860:32;;9910:24;9922:11;9910:7;:11;;:24;;;;:::i;:::-;9903:31;;;9619:323;;;:::o;11957:483::-;7496:4;7487:6;;:13;;;;;;;;;;;;;;;;;;12035:21:::1;12073:1;12059:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12035:40;;12104:4;12086;12091:1;12086:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12130:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12120:4;12125:1;12120:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12163:62;12180:4;12195:15;;;;;;;;;;;12213:11;12163:8;:62::i;:::-;12236:15;;;;;;;;;;;:66;;;12317:11;12343:1;12359:4;12386;12406:15;12236:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12024:416;7532:5:::0;7523:6;;:14;;;;;;;;;;;;;;;;;;11957:483;:::o;13933:180::-;14061:44;14079:6;14087:9;14098:6;14061:17;:44::i;:::-;13933:180;;;:::o;4032:132::-;4090:7;4117:39;4121:1;4124;4117:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;4110:46;;4032:132;;;;:::o;18294:164::-;18336:7;18357:15;18374;18393:19;:17;:19::i;:::-;18356:56;;;;18430:20;18442:7;18430;:11;;:20;;;;:::i;:::-;18423:27;;;;18294:164;:::o;14121:610::-;14268:15;14298:23;14336:12;14363:23;14401:12;14428:13;14455:19;14466:7;14455:10;:19::i;:::-;14253:221;;;;;;;;;;;;14503:28;14523:7;14503;:15;14511:6;14503:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14485:7;:15;14493:6;14485:15;;;;;;;;;;;;;;;:46;;;;14563:39;14586:15;14563:7;:18;14571:9;14563:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14542:7;:18;14550:9;14542:18;;;;;;;;;;;;;;;:60;;;;14613:16;14623:5;14613:9;:16::i;:::-;14640:23;14652:4;14658;14640:11;:23::i;:::-;14696:9;14679:44;;14688:6;14679:44;;;14707:15;14679:44;;;;;;:::i;:::-;;;;;;;;14242:489;;;;;;14121:610;;;:::o;4172:223::-;4292:7;4324:1;4320;:5;4327:12;4312:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4351:9;4367:1;4363;:5;;;;:::i;:::-;4351:17;;4386:1;4379:8;;;4172:223;;;;;:::o;18466:257::-;18517:7;18526;18546:15;18564:7;;18546:25;;18582:15;6546:27;18582:25;;18632:20;6546:27;18632:7;;:11;;:20;;;;:::i;:::-;18622:7;:30;18618:61;;;18662:7;;6546:27;18654:25;;;;;;;;18618:61;18698:7;18707;18690:25;;;;;;18466:257;;;:::o;16565:704::-;16665:7;16687;16709;16731;16753;16775;16811:23;16836:12;16850:13;16867:92;16893:7;16915:9;;16939;;16867:11;:92::i;:::-;16810:149;;;;;;16970:19;16992:10;:8;:10::i;:::-;16970:32;;17014:15;17031:23;17056:12;17072:109;17098:7;17120:4;17139:5;17159:11;17072;:109::i;:::-;17013:168;;;;;;17200:7;17209:15;17226:4;17232:15;17249:4;17255:5;17192:69;;;;;;;;;;;;;;;;;;;16565:704;;;;;;;:::o;3402:136::-;3460:7;3487:43;3491:1;3494;3487:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3480:50;;3402:136;;;;:::o;3215:179::-;3273:7;3293:9;3309:1;3305;:5;;;;:::i;:::-;3293:17;;3334:1;3329;:6;;3321:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3385:1;3378:8;;;3215:179;;;;:::o;14739:211::-;14792:19;14814:10;:8;:10::i;:::-;14792:32;;14835:13;14851:22;14861:11;14851:5;:9;;:22;;;;:::i;:::-;14835:38;;14909:33;14936:5;14909:7;:22;14925:4;14909:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14884:7;:22;14900:4;14884:22;;;;;;;;;;;;;;;:58;;;;14781:169;;14739:211;:::o;14958:147::-;15036:17;15048:4;15036:7;;:11;;:17;;;;:::i;:::-;15026:7;:27;;;;15077:20;15092:4;15077:10;;:14;;:20;;;;:::i;:::-;15064:10;:33;;;;14958:147;;:::o;17277:467::-;17445:7;17467;17489;17524:12;17539:28;17563:3;17539:19;17551:6;17539:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;17524:43;;17578:13;17594:29;17619:3;17594:20;17606:7;17594;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;17578:45;;17634:23;17660:28;17682:5;17660:17;17672:4;17660:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;17634:54;;17707:15;17724:4;17730:5;17699:37;;;;;;;;;17277:467;;;;;;;:::o;17752:534::-;17946:7;17968;17990;18025:15;18043:24;18055:11;18043:7;:11;;:24;;;;:::i;:::-;18025:42;;18078:12;18093:21;18102:11;18093:4;:8;;:21;;;;:::i;:::-;18078:36;;18125:13;18141:22;18151:11;18141:5;:9;;:22;;;;:::i;:::-;18125:38;;18174:23;18200:28;18222:5;18200:17;18212:4;18200:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;18174:54;;18247:7;18256:15;18273:4;18239:39;;;;;;;;;;17752:534;;;;;;;;:::o;3778:246::-;3836:7;3865:1;3860;:6;3856:47;;;3890:1;3883:8;;;;3856:47;3913:9;3929:1;3925;:5;;;;:::i;:::-;3913:17;;3958:1;3953;3949;:5;;;;:::i;:::-;:10;3941:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;4015:1;4008:8;;;3778:246;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;752:139::-;798:5;836:6;823:20;814:29;;852:33;879:5;852:33;:::i;:::-;752:139;;;;:::o;897:143::-;954:5;985:6;979:13;970:22;;1001:33;1028:5;1001:33;:::i;:::-;897:143;;;;:::o;1063:370::-;1134:5;1183:3;1176:4;1168:6;1164:17;1160:27;1150:122;;1191:79;;:::i;:::-;1150:122;1308:6;1295:20;1333:94;1423:3;1415:6;1408:4;1400:6;1396:17;1333:94;:::i;:::-;1324:103;;1140:293;1063:370;;;;:::o;1439:133::-;1482:5;1520:6;1507:20;1498:29;;1536:30;1560:5;1536:30;:::i;:::-;1439:133;;;;:::o;1578:137::-;1632:5;1663:6;1657:13;1648:22;;1679:30;1703:5;1679:30;:::i;:::-;1578:137;;;;:::o;1721:139::-;1767:5;1805:6;1792:20;1783:29;;1821:33;1848:5;1821:33;:::i;:::-;1721:139;;;;:::o;1866:143::-;1923:5;1954:6;1948:13;1939:22;;1970:33;1997:5;1970:33;:::i;:::-;1866:143;;;;:::o;2015:329::-;2074:6;2123:2;2111:9;2102:7;2098:23;2094:32;2091:119;;;2129:79;;:::i;:::-;2091:119;2249:1;2274:53;2319:7;2310:6;2299:9;2295:22;2274:53;:::i;:::-;2264:63;;2220:117;2015:329;;;;:::o;2350:351::-;2420:6;2469:2;2457:9;2448:7;2444:23;2440:32;2437:119;;;2475:79;;:::i;:::-;2437:119;2595:1;2620:64;2676:7;2667:6;2656:9;2652:22;2620:64;:::i;:::-;2610:74;;2566:128;2350:351;;;;:::o;2707:474::-;2775:6;2783;2832:2;2820:9;2811:7;2807:23;2803:32;2800:119;;;2838:79;;:::i;:::-;2800:119;2958:1;2983:53;3028:7;3019:6;3008:9;3004:22;2983:53;:::i;:::-;2973:63;;2929:117;3085:2;3111:53;3156:7;3147:6;3136:9;3132:22;3111:53;:::i;:::-;3101:63;;3056:118;2707:474;;;;;:::o;3187:619::-;3264:6;3272;3280;3329:2;3317:9;3308:7;3304:23;3300:32;3297:119;;;3335:79;;:::i;:::-;3297:119;3455:1;3480:53;3525:7;3516:6;3505:9;3501:22;3480:53;:::i;:::-;3470:63;;3426:117;3582:2;3608:53;3653:7;3644:6;3633:9;3629:22;3608:53;:::i;:::-;3598:63;;3553:118;3710:2;3736:53;3781:7;3772:6;3761:9;3757:22;3736:53;:::i;:::-;3726:63;;3681:118;3187:619;;;;;:::o;3812:468::-;3877:6;3885;3934:2;3922:9;3913:7;3909:23;3905:32;3902:119;;;3940:79;;:::i;:::-;3902:119;4060:1;4085:53;4130:7;4121:6;4110:9;4106:22;4085:53;:::i;:::-;4075:63;;4031:117;4187:2;4213:50;4255:7;4246:6;4235:9;4231:22;4213:50;:::i;:::-;4203:60;;4158:115;3812:468;;;;;:::o;4286:474::-;4354:6;4362;4411:2;4399:9;4390:7;4386:23;4382:32;4379:119;;;4417:79;;:::i;:::-;4379:119;4537:1;4562:53;4607:7;4598:6;4587:9;4583:22;4562:53;:::i;:::-;4552:63;;4508:117;4664:2;4690:53;4735:7;4726:6;4715:9;4711:22;4690:53;:::i;:::-;4680:63;;4635:118;4286:474;;;;;:::o;4766:539::-;4850:6;4899:2;4887:9;4878:7;4874:23;4870:32;4867:119;;;4905:79;;:::i;:::-;4867:119;5053:1;5042:9;5038:17;5025:31;5083:18;5075:6;5072:30;5069:117;;;5105:79;;:::i;:::-;5069:117;5210:78;5280:7;5271:6;5260:9;5256:22;5210:78;:::i;:::-;5200:88;;4996:302;4766:539;;;;:::o;5311:323::-;5367:6;5416:2;5404:9;5395:7;5391:23;5387:32;5384:119;;;5422:79;;:::i;:::-;5384:119;5542:1;5567:50;5609:7;5600:6;5589:9;5585:22;5567:50;:::i;:::-;5557:60;;5513:114;5311:323;;;;:::o;5640:345::-;5707:6;5756:2;5744:9;5735:7;5731:23;5727:32;5724:119;;;5762:79;;:::i;:::-;5724:119;5882:1;5907:61;5960:7;5951:6;5940:9;5936:22;5907:61;:::i;:::-;5897:71;;5853:125;5640:345;;;;:::o;5991:663::-;6079:6;6087;6095;6144:2;6132:9;6123:7;6119:23;6115:32;6112:119;;;6150:79;;:::i;:::-;6112:119;6270:1;6295:64;6351:7;6342:6;6331:9;6327:22;6295:64;:::i;:::-;6285:74;;6241:128;6408:2;6434:64;6490:7;6481:6;6470:9;6466:22;6434:64;:::i;:::-;6424:74;;6379:129;6547:2;6573:64;6629:7;6620:6;6609:9;6605:22;6573:64;:::i;:::-;6563:74;;6518:129;5991:663;;;;;:::o;6660:179::-;6729:10;6750:46;6792:3;6784:6;6750:46;:::i;:::-;6828:4;6823:3;6819:14;6805:28;;6660:179;;;;:::o;6845:142::-;6948:32;6974:5;6948:32;:::i;:::-;6943:3;6936:45;6845:142;;:::o;6993:108::-;7070:24;7088:5;7070:24;:::i;:::-;7065:3;7058:37;6993:108;;:::o;7107:118::-;7194:24;7212:5;7194:24;:::i;:::-;7189:3;7182:37;7107:118;;:::o;7261:732::-;7380:3;7409:54;7457:5;7409:54;:::i;:::-;7479:86;7558:6;7553:3;7479:86;:::i;:::-;7472:93;;7589:56;7639:5;7589:56;:::i;:::-;7668:7;7699:1;7684:284;7709:6;7706:1;7703:13;7684:284;;;7785:6;7779:13;7812:63;7871:3;7856:13;7812:63;:::i;:::-;7805:70;;7898:60;7951:6;7898:60;:::i;:::-;7888:70;;7744:224;7731:1;7728;7724:9;7719:14;;7684:284;;;7688:14;7984:3;7977:10;;7385:608;;;7261:732;;;;:::o;7999:109::-;8080:21;8095:5;8080:21;:::i;:::-;8075:3;8068:34;7999:109;;:::o;8114:147::-;8209:45;8248:5;8209:45;:::i;:::-;8204:3;8197:58;8114:147;;:::o;8267:364::-;8355:3;8383:39;8416:5;8383:39;:::i;:::-;8438:71;8502:6;8497:3;8438:71;:::i;:::-;8431:78;;8518:52;8563:6;8558:3;8551:4;8544:5;8540:16;8518:52;:::i;:::-;8595:29;8617:6;8595:29;:::i;:::-;8590:3;8586:39;8579:46;;8359:272;8267:364;;;;:::o;8637:366::-;8779:3;8800:67;8864:2;8859:3;8800:67;:::i;:::-;8793:74;;8876:93;8965:3;8876:93;:::i;:::-;8994:2;8989:3;8985:12;8978:19;;8637:366;;;:::o;9009:::-;9151:3;9172:67;9236:2;9231:3;9172:67;:::i;:::-;9165:74;;9248:93;9337:3;9248:93;:::i;:::-;9366:2;9361:3;9357:12;9350:19;;9009:366;;;:::o;9381:::-;9523:3;9544:67;9608:2;9603:3;9544:67;:::i;:::-;9537:74;;9620:93;9709:3;9620:93;:::i;:::-;9738:2;9733:3;9729:12;9722:19;;9381:366;;;:::o;9753:::-;9895:3;9916:67;9980:2;9975:3;9916:67;:::i;:::-;9909:74;;9992:93;10081:3;9992:93;:::i;:::-;10110:2;10105:3;10101:12;10094:19;;9753:366;;;:::o;10125:::-;10267:3;10288:67;10352:2;10347:3;10288:67;:::i;:::-;10281:74;;10364:93;10453:3;10364:93;:::i;:::-;10482:2;10477:3;10473:12;10466:19;;10125:366;;;:::o;10497:::-;10639:3;10660:67;10724:2;10719:3;10660:67;:::i;:::-;10653:74;;10736:93;10825:3;10736:93;:::i;:::-;10854:2;10849:3;10845:12;10838:19;;10497:366;;;:::o;10869:::-;11011:3;11032:67;11096:2;11091:3;11032:67;:::i;:::-;11025:74;;11108:93;11197:3;11108:93;:::i;:::-;11226:2;11221:3;11217:12;11210:19;;10869:366;;;:::o;11241:::-;11383:3;11404:67;11468:2;11463:3;11404:67;:::i;:::-;11397:74;;11480:93;11569:3;11480:93;:::i;:::-;11598:2;11593:3;11589:12;11582:19;;11241:366;;;:::o;11613:::-;11755:3;11776:67;11840:2;11835:3;11776:67;:::i;:::-;11769:74;;11852:93;11941:3;11852:93;:::i;:::-;11970:2;11965:3;11961:12;11954:19;;11613:366;;;:::o;11985:::-;12127:3;12148:67;12212:2;12207:3;12148:67;:::i;:::-;12141:74;;12224:93;12313:3;12224:93;:::i;:::-;12342:2;12337:3;12333:12;12326:19;;11985:366;;;:::o;12357:::-;12499:3;12520:67;12584:2;12579:3;12520:67;:::i;:::-;12513:74;;12596:93;12685:3;12596:93;:::i;:::-;12714:2;12709:3;12705:12;12698:19;;12357:366;;;:::o;12729:118::-;12816:24;12834:5;12816:24;:::i;:::-;12811:3;12804:37;12729:118;;:::o;12853:112::-;12936:22;12952:5;12936:22;:::i;:::-;12931:3;12924:35;12853:112;;:::o;12971:222::-;13064:4;13102:2;13091:9;13087:18;13079:26;;13115:71;13183:1;13172:9;13168:17;13159:6;13115:71;:::i;:::-;12971:222;;;;:::o;13199:254::-;13308:4;13346:2;13335:9;13331:18;13323:26;;13359:87;13443:1;13432:9;13428:17;13419:6;13359:87;:::i;:::-;13199:254;;;;:::o;13459:332::-;13580:4;13618:2;13607:9;13603:18;13595:26;;13631:71;13699:1;13688:9;13684:17;13675:6;13631:71;:::i;:::-;13712:72;13780:2;13769:9;13765:18;13756:6;13712:72;:::i;:::-;13459:332;;;;;:::o;13797:::-;13918:4;13956:2;13945:9;13941:18;13933:26;;13969:71;14037:1;14026:9;14022:17;14013:6;13969:71;:::i;:::-;14050:72;14118:2;14107:9;14103:18;14094:6;14050:72;:::i;:::-;13797:332;;;;;:::o;14135:807::-;14384:4;14422:3;14411:9;14407:19;14399:27;;14436:71;14504:1;14493:9;14489:17;14480:6;14436:71;:::i;:::-;14517:72;14585:2;14574:9;14570:18;14561:6;14517:72;:::i;:::-;14599:80;14675:2;14664:9;14660:18;14651:6;14599:80;:::i;:::-;14689;14765:2;14754:9;14750:18;14741:6;14689:80;:::i;:::-;14779:73;14847:3;14836:9;14832:19;14823:6;14779:73;:::i;:::-;14862;14930:3;14919:9;14915:19;14906:6;14862:73;:::i;:::-;14135:807;;;;;;;;;:::o;14948:210::-;15035:4;15073:2;15062:9;15058:18;15050:26;;15086:65;15148:1;15137:9;15133:17;15124:6;15086:65;:::i;:::-;14948:210;;;;:::o;15164:313::-;15277:4;15315:2;15304:9;15300:18;15292:26;;15364:9;15358:4;15354:20;15350:1;15339:9;15335:17;15328:47;15392:78;15465:4;15456:6;15392:78;:::i;:::-;15384:86;;15164:313;;;;:::o;15483:419::-;15649:4;15687:2;15676:9;15672:18;15664:26;;15736:9;15730:4;15726:20;15722:1;15711:9;15707:17;15700:47;15764:131;15890:4;15764:131;:::i;:::-;15756:139;;15483:419;;;:::o;15908:::-;16074:4;16112:2;16101:9;16097:18;16089:26;;16161:9;16155:4;16151:20;16147:1;16136:9;16132:17;16125:47;16189:131;16315:4;16189:131;:::i;:::-;16181:139;;15908:419;;;:::o;16333:::-;16499:4;16537:2;16526:9;16522:18;16514:26;;16586:9;16580:4;16576:20;16572:1;16561:9;16557:17;16550:47;16614:131;16740:4;16614:131;:::i;:::-;16606:139;;16333:419;;;:::o;16758:::-;16924:4;16962:2;16951:9;16947:18;16939:26;;17011:9;17005:4;17001:20;16997:1;16986:9;16982:17;16975:47;17039:131;17165:4;17039:131;:::i;:::-;17031:139;;16758:419;;;:::o;17183:::-;17349:4;17387:2;17376:9;17372:18;17364:26;;17436:9;17430:4;17426:20;17422:1;17411:9;17407:17;17400:47;17464:131;17590:4;17464:131;:::i;:::-;17456:139;;17183:419;;;:::o;17608:::-;17774:4;17812:2;17801:9;17797:18;17789:26;;17861:9;17855:4;17851:20;17847:1;17836:9;17832:17;17825:47;17889:131;18015:4;17889:131;:::i;:::-;17881:139;;17608:419;;;:::o;18033:::-;18199:4;18237:2;18226:9;18222:18;18214:26;;18286:9;18280:4;18276:20;18272:1;18261:9;18257:17;18250:47;18314:131;18440:4;18314:131;:::i;:::-;18306:139;;18033:419;;;:::o;18458:::-;18624:4;18662:2;18651:9;18647:18;18639:26;;18711:9;18705:4;18701:20;18697:1;18686:9;18682:17;18675:47;18739:131;18865:4;18739:131;:::i;:::-;18731:139;;18458:419;;;:::o;18883:::-;19049:4;19087:2;19076:9;19072:18;19064:26;;19136:9;19130:4;19126:20;19122:1;19111:9;19107:17;19100:47;19164:131;19290:4;19164:131;:::i;:::-;19156:139;;18883:419;;;:::o;19308:::-;19474:4;19512:2;19501:9;19497:18;19489:26;;19561:9;19555:4;19551:20;19547:1;19536:9;19532:17;19525:47;19589:131;19715:4;19589:131;:::i;:::-;19581:139;;19308:419;;;:::o;19733:::-;19899:4;19937:2;19926:9;19922:18;19914:26;;19986:9;19980:4;19976:20;19972:1;19961:9;19957:17;19950:47;20014:131;20140:4;20014:131;:::i;:::-;20006:139;;19733:419;;;:::o;20158:222::-;20251:4;20289:2;20278:9;20274:18;20266:26;;20302:71;20370:1;20359:9;20355:17;20346:6;20302:71;:::i;:::-;20158:222;;;;:::o;20386:831::-;20649:4;20687:3;20676:9;20672:19;20664:27;;20701:71;20769:1;20758:9;20754:17;20745:6;20701:71;:::i;:::-;20782:80;20858:2;20847:9;20843:18;20834:6;20782:80;:::i;:::-;20909:9;20903:4;20899:20;20894:2;20883:9;20879:18;20872:48;20937:108;21040:4;21031:6;20937:108;:::i;:::-;20929:116;;21055:72;21123:2;21112:9;21108:18;21099:6;21055:72;:::i;:::-;21137:73;21205:3;21194:9;21190:19;21181:6;21137:73;:::i;:::-;20386:831;;;;;;;;:::o;21223:214::-;21312:4;21350:2;21339:9;21335:18;21327:26;;21363:67;21427:1;21416:9;21412:17;21403:6;21363:67;:::i;:::-;21223:214;;;;:::o;21443:129::-;21477:6;21504:20;;:::i;:::-;21494:30;;21533:33;21561:4;21553:6;21533:33;:::i;:::-;21443:129;;;:::o;21578:75::-;21611:6;21644:2;21638:9;21628:19;;21578:75;:::o;21659:311::-;21736:4;21826:18;21818:6;21815:30;21812:56;;;21848:18;;:::i;:::-;21812:56;21898:4;21890:6;21886:17;21878:25;;21958:4;21952;21948:15;21940:23;;21659:311;;;:::o;21976:132::-;22043:4;22066:3;22058:11;;22096:4;22091:3;22087:14;22079:22;;21976:132;;;:::o;22114:114::-;22181:6;22215:5;22209:12;22199:22;;22114:114;;;:::o;22234:99::-;22286:6;22320:5;22314:12;22304:22;;22234:99;;;:::o;22339:113::-;22409:4;22441;22436:3;22432:14;22424:22;;22339:113;;;:::o;22458:184::-;22557:11;22591:6;22586:3;22579:19;22631:4;22626:3;22622:14;22607:29;;22458:184;;;;:::o;22648:169::-;22732:11;22766:6;22761:3;22754:19;22806:4;22801:3;22797:14;22782:29;;22648:169;;;;:::o;22823:305::-;22863:3;22882:20;22900:1;22882:20;:::i;:::-;22877:25;;22916:20;22934:1;22916:20;:::i;:::-;22911:25;;23070:1;23002:66;22998:74;22995:1;22992:81;22989:107;;;23076:18;;:::i;:::-;22989:107;23120:1;23117;23113:9;23106:16;;22823:305;;;;:::o;23134:185::-;23174:1;23191:20;23209:1;23191:20;:::i;:::-;23186:25;;23225:20;23243:1;23225:20;:::i;:::-;23220:25;;23264:1;23254:35;;23269:18;;:::i;:::-;23254:35;23311:1;23308;23304:9;23299:14;;23134:185;;;;:::o;23325:348::-;23365:7;23388:20;23406:1;23388:20;:::i;:::-;23383:25;;23422:20;23440:1;23422:20;:::i;:::-;23417:25;;23610:1;23542:66;23538:74;23535:1;23532:81;23527:1;23520:9;23513:17;23509:105;23506:131;;;23617:18;;:::i;:::-;23506:131;23665:1;23662;23658:9;23647:20;;23325:348;;;;:::o;23679:191::-;23719:4;23739:20;23757:1;23739:20;:::i;:::-;23734:25;;23773:20;23791:1;23773:20;:::i;:::-;23768:25;;23812:1;23809;23806:8;23803:34;;;23817:18;;:::i;:::-;23803:34;23862:1;23859;23855:9;23847:17;;23679:191;;;;:::o;23876:96::-;23913:7;23942:24;23960:5;23942:24;:::i;:::-;23931:35;;23876:96;;;:::o;23978:104::-;24023:7;24052:24;24070:5;24052:24;:::i;:::-;24041:35;;23978:104;;;:::o;24088:90::-;24122:7;24165:5;24158:13;24151:21;24140:32;;24088:90;;;:::o;24184:126::-;24221:7;24261:42;24254:5;24250:54;24239:65;;24184:126;;;:::o;24316:77::-;24353:7;24382:5;24371:16;;24316:77;;;:::o;24399:86::-;24434:7;24474:4;24467:5;24463:16;24452:27;;24399:86;;;:::o;24491:121::-;24549:9;24582:24;24600:5;24582:24;:::i;:::-;24569:37;;24491:121;;;:::o;24618:307::-;24686:1;24696:113;24710:6;24707:1;24704:13;24696:113;;;24795:1;24790:3;24786:11;24780:18;24776:1;24771:3;24767:11;24760:39;24732:2;24729:1;24725:10;24720:15;;24696:113;;;24827:6;24824:1;24821:13;24818:101;;;24907:1;24898:6;24893:3;24889:16;24882:27;24818:101;24667:258;24618:307;;;:::o;24931:281::-;25014:27;25036:4;25014:27;:::i;:::-;25006:6;25002:40;25144:6;25132:10;25129:22;25108:18;25096:10;25093:34;25090:62;25087:88;;;25155:18;;:::i;:::-;25087:88;25195:10;25191:2;25184:22;24974:238;24931:281;;:::o;25218:233::-;25257:3;25280:24;25298:5;25280:24;:::i;:::-;25271:33;;25326:66;25319:5;25316:77;25313:103;;;25396:18;;:::i;:::-;25313:103;25443:1;25436:5;25432:13;25425:20;;25218:233;;;:::o;25457:180::-;25505:77;25502:1;25495:88;25602:4;25599:1;25592:15;25626:4;25623:1;25616:15;25643:180;25691:77;25688:1;25681:88;25788:4;25785:1;25778:15;25812:4;25809:1;25802:15;25829:180;25877:77;25874:1;25867:88;25974:4;25971:1;25964:15;25998:4;25995:1;25988:15;26015:180;26063:77;26060:1;26053:88;26160:4;26157:1;26150:15;26184:4;26181:1;26174:15;26201:117;26310:1;26307;26300:12;26324:117;26433:1;26430;26423:12;26447:117;26556:1;26553;26546:12;26570:117;26679:1;26676;26669:12;26693:102;26734:6;26785:2;26781:7;26776:2;26769:5;26765:14;26761:28;26751:38;;26693:102;;;:::o;26801:222::-;26941:34;26937:1;26929:6;26925:14;26918:58;27010:5;27005:2;26997:6;26993:15;26986:30;26801:222;:::o;27029:171::-;27169:23;27165:1;27157:6;27153:14;27146:47;27029:171;:::o;27206:229::-;27346:34;27342:1;27334:6;27330:14;27323:58;27415:12;27410:2;27402:6;27398:15;27391:37;27206:229;:::o;27441:221::-;27581:34;27577:1;27569:6;27565:14;27558:58;27650:4;27645:2;27637:6;27633:15;27626:29;27441:221;:::o;27668:177::-;27808:29;27804:1;27796:6;27792:14;27785:53;27668:177;:::o;27851:220::-;27991:34;27987:1;27979:6;27975:14;27968:58;28060:3;28055:2;28047:6;28043:15;28036:28;27851:220;:::o;28077:182::-;28217:34;28213:1;28205:6;28201:14;28194:58;28077:182;:::o;28265:228::-;28405:34;28401:1;28393:6;28389:14;28382:58;28474:11;28469:2;28461:6;28457:15;28450:36;28265:228;:::o;28499:224::-;28639:34;28635:1;28627:6;28623:14;28616:58;28708:7;28703:2;28695:6;28691:15;28684:32;28499:224;:::o;28729:223::-;28869:34;28865:1;28857:6;28853:14;28846:58;28938:6;28933:2;28925:6;28921:15;28914:31;28729:223;:::o;28958:173::-;29098:25;29094:1;29086:6;29082:14;29075:49;28958:173;:::o;29137:122::-;29210:24;29228:5;29210:24;:::i;:::-;29203:5;29200:35;29190:63;;29249:1;29246;29239:12;29190:63;29137:122;:::o;29265:116::-;29335:21;29350:5;29335:21;:::i;:::-;29328:5;29325:32;29315:60;;29371:1;29368;29361:12;29315:60;29265:116;:::o;29387:122::-;29460:24;29478:5;29460:24;:::i;:::-;29453:5;29450:35;29440:63;;29499:1;29496;29489:12;29440:63;29387:122;:::o

Swarm Source

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