ETH Price: $2,377.12 (-2.59%)

Token

Elusive Beauty of Imperfection (WABISABI)
 

Overview

Max Total Supply

100,000,000,000 WABISABI

Holders

33

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.069178163 WABISABI

Value
$0.00
0xca80e33c3e13f1717ec5a279f3de711e66015b7e
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:
WABISABI

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**
The Elusive beauty of imperfection...
https://twitter.com/elonmusk/status/1521190864592293891
TG: https://t.me/wabisabieth
*/

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
    );
}
 
contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
 
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
 
    function owner() public view returns (address) {
        return _owner;
    }
 
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
 
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
 
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
 
}
 
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
 
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
 
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
 
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
 
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
 
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}
 
interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}
 
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
 
    function factory() external pure returns (address);
 
    function WETH() external pure returns (address);
 
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}
 
contract WABISABI is Context, IERC20, Ownable {
 
    using SafeMath for uint256;
 
    string private constant _name = "Elusive Beauty of Imperfection";//
    string private constant _symbol = "WABISABI";//
    uint8 private constant _decimals = 9;
 
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 100000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
 
    //Buy Fee
    uint256 private _redisFeeOnBuy = 0;//
    uint256 private _taxFeeOnBuy = 8;//
 
    //Sell Fee
    uint256 private _redisFeeOnSell = 0;//
    uint256 private _taxFeeOnSell = 12;//
 
    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
 
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
 
    mapping(address => uint256) private cooldown;
 
    address payable private _developmentAddress = payable(0x819330616DdA1221a8be03a0B3a0Cd6F66aD65Cb); // dev wallet
    address payable private _marketingAddress = payable(0x819330616DdA1221a8be03a0B3a0Cd6F66aD65Cb); // tax wallet
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
 
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
 
    uint256 public _maxTxAmount = 2500000000 * 10**9; // 3% max buy
    uint256 public _maxWalletSize = 2500000000 * 10**9; // 3% max wallet
    uint256 public _swapTokensAtAmount = 100000000 * 10**9; // 0.1%
 
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    constructor() {
 
        _rOwned[_msgSender()] = _rTotal;
 
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
 
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;
 
 
        emit Transfer(address(0), _msgSender(), _tTotal);
    }
 
    function name() public pure returns (string memory) {
        return _name;
    }
 
    function symbol() public pure returns (string memory) {
        return _symbol;
    }
 
    function decimals() public pure returns (uint8) {
        return _decimals;
    }
 
    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }
 
    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }
 
    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
 
    function allowance(address owner, address spender)
        public
        view
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }
 
    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }
 
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }
 
    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }
 
    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;
 
        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;
 
        _redisFee = 0;
        _taxFee = 0;
    }
 
    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }
 
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
 
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
 
        if (from != owner() && to != owner()) {
 
            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }
 
            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
 
            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }
 
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;
 
            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }
 
            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
 
        bool takeFee = true;
 
        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {
 
            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }
 
            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }
 
        }
 
        _tokenTransfer(from, to, amount, takeFee);
    }
 
    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
 
    function sendETHToFee(uint256 amount) private {
        _developmentAddress.transfer(amount.div(2));
        _marketingAddress.transfer(amount.div(2));
    }
 
    function setTrading() public onlyOwner {
        tradingOpen = true;
    }
 
    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
 
    function manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
 
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }
 
    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
 
    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }
 
    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }
 
    receive() external payable {}
 
    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
 
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }
 
    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
 
        return (tTransferAmount, tFee, tTeam);
    }
 
    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
 
        return (rAmount, rTransferAmount, rFee);
    }
 
    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
 
        return rSupply.div(tSupply);
    }
 
    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
 
        return (rSupply, tSupply);
    }
 
    function setFee(uint256 taxFeeOnSell) public onlyOwner {
        _taxFeeOnSell = taxFeeOnSell;
    }
 
    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }
 
    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }
 
 
    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }
 
    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }
 
    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405268056bc75e2d631000006000196200001d919062000834565b6000196200002c9190620007bb565b600655600060085560086009556000600a55600c600b55600a54600c55600b54600d55600c54600e55600d54600f5573819330616dda1221a8be03a0b3a0cd6f66ad65cb601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073819330616dda1221a8be03a0b3a0cd6f66ad65cb601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601460156101000a81548160ff0219169083151502179055506001601460166101000a81548160ff0219169083151502179055506722b1c8c1227a00006015556722b1c8c1227a000060165567016345785d8a00006017553480156200016c57600080fd5b5060006200017f620006db60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506006546002600062000234620006db60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200031357600080fd5b505afa15801562000328573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034e919062000723565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003b157600080fd5b505afa158015620003c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ec919062000723565b6040518363ffffffff1660e01b81526004016200040b92919062000771565b602060405180830381600087803b1580156200042657600080fd5b505af11580156200043b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000461919062000723565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004b7620006e360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000664620006db60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef68056bc75e2d63100000604051620006cc91906200079e565b60405180910390a350620008e4565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000815190506200071d81620008ca565b92915050565b6000602082840312156200073657600080fd5b600062000746848285016200070c565b91505092915050565b6200075a81620007f6565b82525050565b6200076b816200082a565b82525050565b60006040820190506200078860008301856200074f565b6200079760208301846200074f565b9392505050565b6000602082019050620007b5600083018462000760565b92915050565b6000620007c8826200082a565b9150620007d5836200082a565b925082821015620007eb57620007ea6200086c565b5b828203905092915050565b600062000803826200080a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600062000841826200082a565b91506200084e836200082a565b9250826200086157620008606200089b565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b620008d581620007f6565b8114620008e157600080fd5b50565b61374e80620008f46000396000f3fe6080604052600436106101855760003560e01c806374010ece116100d157806398a5c3151161008a578063c492f04611610064578063c492f04614610533578063dd62ed3e1461055c578063ea1644d514610599578063f2fde38b146105c25761018c565b806398a5c315146104b6578063a9059cbb146104df578063c3c8cd801461051c5761018c565b806374010ece146103ca5780637c519ffb146103f35780637d1db4a51461040a5780638da5cb5b146104355780638f9a55c01461046057806395d89b411461048b5761018c565b8063313ce5671161013e5780636d8aa8f8116101185780636d8aa8f8146103365780636fc3eaec1461035f57806370a0823114610376578063715018a6146103b35761018c565b8063313ce567146102b757806349bd5a5e146102e257806369fe0e2d1461030d5761018c565b806306fdde0314610191578063095ea7b3146101bc5780631694505e146101f957806318160ddd1461022457806323b872dd1461024f5780632fd689e31461028c5761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a66105eb565b6040516101b39190612de8565b60405180910390f35b3480156101c857600080fd5b506101e360048036038101906101de91906129d2565b610628565b6040516101f09190612db2565b60405180910390f35b34801561020557600080fd5b5061020e610646565b60405161021b9190612dcd565b60405180910390f35b34801561023057600080fd5b5061023961066c565b6040516102469190612faa565b60405180910390f35b34801561025b57600080fd5b5061027660048036038101906102719190612983565b61067d565b6040516102839190612db2565b60405180910390f35b34801561029857600080fd5b506102a1610756565b6040516102ae9190612faa565b60405180910390f35b3480156102c357600080fd5b506102cc61075c565b6040516102d9919061301f565b60405180910390f35b3480156102ee57600080fd5b506102f7610765565b6040516103049190612d97565b60405180910390f35b34801561031957600080fd5b50610334600480360381019061032f9190612a8f565b61078b565b005b34801561034257600080fd5b5061035d60048036038101906103589190612a66565b61082a565b005b34801561036b57600080fd5b506103746108dc565b005b34801561038257600080fd5b5061039d600480360381019061039891906128f5565b6109ad565b6040516103aa9190612faa565b60405180910390f35b3480156103bf57600080fd5b506103c86109fe565b005b3480156103d657600080fd5b506103f160048036038101906103ec9190612a8f565b610b51565b005b3480156103ff57600080fd5b50610408610bf0565b005b34801561041657600080fd5b5061041f610ca1565b60405161042c9190612faa565b60405180910390f35b34801561044157600080fd5b5061044a610ca7565b6040516104579190612d97565b60405180910390f35b34801561046c57600080fd5b50610475610cd0565b6040516104829190612faa565b60405180910390f35b34801561049757600080fd5b506104a0610cd6565b6040516104ad9190612de8565b60405180910390f35b3480156104c257600080fd5b506104dd60048036038101906104d89190612a8f565b610d13565b005b3480156104eb57600080fd5b50610506600480360381019061050191906129d2565b610db2565b6040516105139190612db2565b60405180910390f35b34801561052857600080fd5b50610531610dd0565b005b34801561053f57600080fd5b5061055a60048036038101906105559190612a0e565b610ea9565b005b34801561056857600080fd5b50610583600480360381019061057e9190612947565b611009565b6040516105909190612faa565b60405180910390f35b3480156105a557600080fd5b506105c060048036038101906105bb9190612a8f565b611090565b005b3480156105ce57600080fd5b506105e960048036038101906105e491906128f5565b61112f565b005b60606040518060400160405280601e81526020017f456c757369766520426561757479206f6620496d70657266656374696f6e0000815250905090565b600061063c6106356112f1565b84846112f9565b6001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600068056bc75e2d63100000905090565b600061068a8484846114c4565b61074b846106966112f1565b610746856040518060600160405280602881526020016136f160289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106fc6112f1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c669092919063ffffffff16565b6112f9565b600190509392505050565b60175481565b60006009905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107936112f1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610820576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081790612f0a565b60405180910390fd5b80600b8190555050565b6108326112f1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b690612f0a565b60405180910390fd5b80601460166101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661091d6112f1565b73ffffffffffffffffffffffffffffffffffffffff1614806109935750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661097b6112f1565b73ffffffffffffffffffffffffffffffffffffffff16145b61099c57600080fd5b60004790506109aa81611cca565b50565b60006109f7600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dc5565b9050919050565b610a066112f1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8a90612f0a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b596112f1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610be6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bdd90612f0a565b60405180910390fd5b8060158190555050565b610bf86112f1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7c90612f0a565b60405180910390fd5b60016014806101000a81548160ff021916908315150217905550565b60155481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60165481565b60606040518060400160405280600881526020017f5741424953414249000000000000000000000000000000000000000000000000815250905090565b610d1b6112f1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9f90612f0a565b60405180910390fd5b8060178190555050565b6000610dc6610dbf6112f1565b84846114c4565b6001905092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e116112f1565b73ffffffffffffffffffffffffffffffffffffffff161480610e875750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e6f6112f1565b73ffffffffffffffffffffffffffffffffffffffff16145b610e9057600080fd5b6000610e9b306109ad565b9050610ea681611e33565b50565b610eb16112f1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3590612f0a565b60405180910390fd5b60005b83839050811015611003578160056000868685818110610f8a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002016020810190610f9f91906128f5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ffb90613262565b915050610f41565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6110986112f1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111c90612f0a565b60405180910390fd5b8060168190555050565b6111376112f1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bb90612f0a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122b90612e8a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611369576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136090612f8a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d090612eaa565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114b79190612faa565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152b90612f4a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159b90612e0a565b60405180910390fd5b600081116115e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115de90612f2a565b60405180910390fd5b6115ef610ca7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561165d575061162d610ca7565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156119655760148054906101000a900460ff166116ea5761167c610ca7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146116e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e090612e2a565b60405180910390fd5b5b60155481111561172f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172690612e6a565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146117dc5760165481611791846109ad565b61179b919061308f565b106117db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d290612f6a565b60405180910390fd5b5b60006117e7306109ad565b90506000601754821015905060155482106118025760155491505b80801561181c5750601460159054906101000a900460ff16155b80156118765750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561188e5750601460169054906101000a900460ff165b80156118e45750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561193a5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119625761194882611e33565b600047905060008111156119605761195f47611cca565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a0c5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611abf5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611abe5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611acd5760009050611c54565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b785750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b9057600854600c81905550600954600d819055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611c3b5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611c5357600a54600c81905550600b54600d819055505b5b611c608484848461212d565b50505050565b6000838311158290611cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca59190612de8565b60405180910390fd5b5060008385611cbd9190613170565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611d1a60028461215a90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611d45573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611d9660028461215a90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611dc1573d6000803e3d6000fd5b5050565b6000600654821115611e0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0390612e4a565b60405180910390fd5b6000611e166121a4565b9050611e2b818461215a90919063ffffffff16565b915050919050565b6001601460156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611e91577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015611ebf5781602001602082028036833780820191505090505b5090503081600081518110611efd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611f9f57600080fd5b505afa158015611fb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fd7919061291e565b81600181518110612011577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061207830601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846112f9565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016120dc959493929190612fc5565b600060405180830381600087803b1580156120f657600080fd5b505af115801561210a573d6000803e3d6000fd5b50505050506000601460156101000a81548160ff02191690831515021790555050565b8061213b5761213a6121cf565b5b612146848484612212565b80612154576121536123dd565b5b50505050565b600061219c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123f1565b905092915050565b60008060006121b1612454565b915091506121c8818361215a90919063ffffffff16565b9250505090565b6000600c541480156121e357506000600d54145b156121ed57612210565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612224876124b6565b95509550955095509550955061228286600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251e90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061231785600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612363816125c6565b61236d8483612683565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123ca9190612faa565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008083118290612438576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242f9190612de8565b60405180910390fd5b506000838561244791906130e5565b9050809150509392505050565b60008060006006549050600068056bc75e2d63100000905061248a68056bc75e2d6310000060065461215a90919063ffffffff16565b8210156124a95760065468056bc75e2d631000009350935050506124b2565b81819350935050505b9091565b60008060008060008060008060006124d38a600c54600d546126bd565b92509250925060006124e36121a4565b905060008060006124f68e878787612753565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061256083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c66565b905092915050565b6000808284612577919061308f565b9050838110156125bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b390612eca565b60405180910390fd5b8091505092915050565b60006125d06121a4565b905060006125e782846127dc90919063ffffffff16565b905061263b81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6126988260065461251e90919063ffffffff16565b6006819055506126b38160075461256890919063ffffffff16565b6007819055505050565b6000806000806126e960646126db888a6127dc90919063ffffffff16565b61215a90919063ffffffff16565b905060006127136064612705888b6127dc90919063ffffffff16565b61215a90919063ffffffff16565b9050600061273c8261272e858c61251e90919063ffffffff16565b61251e90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061276c85896127dc90919063ffffffff16565b9050600061278386896127dc90919063ffffffff16565b9050600061279a87896127dc90919063ffffffff16565b905060006127c3826127b5858761251e90919063ffffffff16565b61251e90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156127ef5760009050612851565b600082846127fd9190613116565b905082848261280c91906130e5565b1461284c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284390612eea565b60405180910390fd5b809150505b92915050565b600081359050612866816136ab565b92915050565b60008151905061287b816136ab565b92915050565b60008083601f84011261289357600080fd5b8235905067ffffffffffffffff8111156128ac57600080fd5b6020830191508360208202830111156128c457600080fd5b9250929050565b6000813590506128da816136c2565b92915050565b6000813590506128ef816136d9565b92915050565b60006020828403121561290757600080fd5b600061291584828501612857565b91505092915050565b60006020828403121561293057600080fd5b600061293e8482850161286c565b91505092915050565b6000806040838503121561295a57600080fd5b600061296885828601612857565b925050602061297985828601612857565b9150509250929050565b60008060006060848603121561299857600080fd5b60006129a686828701612857565b93505060206129b786828701612857565b92505060406129c8868287016128e0565b9150509250925092565b600080604083850312156129e557600080fd5b60006129f385828601612857565b9250506020612a04858286016128e0565b9150509250929050565b600080600060408486031215612a2357600080fd5b600084013567ffffffffffffffff811115612a3d57600080fd5b612a4986828701612881565b93509350506020612a5c868287016128cb565b9150509250925092565b600060208284031215612a7857600080fd5b6000612a86848285016128cb565b91505092915050565b600060208284031215612aa157600080fd5b6000612aaf848285016128e0565b91505092915050565b6000612ac48383612ad0565b60208301905092915050565b612ad9816131a4565b82525050565b612ae8816131a4565b82525050565b6000612af98261304a565b612b03818561306d565b9350612b0e8361303a565b8060005b83811015612b3f578151612b268882612ab8565b9750612b3183613060565b925050600181019050612b12565b5085935050505092915050565b612b55816131b6565b82525050565b612b64816131f9565b82525050565b612b738161321d565b82525050565b6000612b8482613055565b612b8e818561307e565b9350612b9e81856020860161322f565b612ba781613309565b840191505092915050565b6000612bbf60238361307e565b9150612bca8261331a565b604082019050919050565b6000612be2603f8361307e565b9150612bed82613369565b604082019050919050565b6000612c05602a8361307e565b9150612c10826133b8565b604082019050919050565b6000612c28601c8361307e565b9150612c3382613407565b602082019050919050565b6000612c4b60268361307e565b9150612c5682613430565b604082019050919050565b6000612c6e60228361307e565b9150612c798261347f565b604082019050919050565b6000612c91601b8361307e565b9150612c9c826134ce565b602082019050919050565b6000612cb460218361307e565b9150612cbf826134f7565b604082019050919050565b6000612cd760208361307e565b9150612ce282613546565b602082019050919050565b6000612cfa60298361307e565b9150612d058261356f565b604082019050919050565b6000612d1d60258361307e565b9150612d28826135be565b604082019050919050565b6000612d4060238361307e565b9150612d4b8261360d565b604082019050919050565b6000612d6360248361307e565b9150612d6e8261365c565b604082019050919050565b612d82816131e2565b82525050565b612d91816131ec565b82525050565b6000602082019050612dac6000830184612adf565b92915050565b6000602082019050612dc76000830184612b4c565b92915050565b6000602082019050612de26000830184612b5b565b92915050565b60006020820190508181036000830152612e028184612b79565b905092915050565b60006020820190508181036000830152612e2381612bb2565b9050919050565b60006020820190508181036000830152612e4381612bd5565b9050919050565b60006020820190508181036000830152612e6381612bf8565b9050919050565b60006020820190508181036000830152612e8381612c1b565b9050919050565b60006020820190508181036000830152612ea381612c3e565b9050919050565b60006020820190508181036000830152612ec381612c61565b9050919050565b60006020820190508181036000830152612ee381612c84565b9050919050565b60006020820190508181036000830152612f0381612ca7565b9050919050565b60006020820190508181036000830152612f2381612cca565b9050919050565b60006020820190508181036000830152612f4381612ced565b9050919050565b60006020820190508181036000830152612f6381612d10565b9050919050565b60006020820190508181036000830152612f8381612d33565b9050919050565b60006020820190508181036000830152612fa381612d56565b9050919050565b6000602082019050612fbf6000830184612d79565b92915050565b600060a082019050612fda6000830188612d79565b612fe76020830187612b6a565b8181036040830152612ff98186612aee565b90506130086060830185612adf565b6130156080830184612d79565b9695505050505050565b60006020820190506130346000830184612d88565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061309a826131e2565b91506130a5836131e2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156130da576130d96132ab565b5b828201905092915050565b60006130f0826131e2565b91506130fb836131e2565b92508261310b5761310a6132da565b5b828204905092915050565b6000613121826131e2565b915061312c836131e2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613165576131646132ab565b5b828202905092915050565b600061317b826131e2565b9150613186836131e2565b925082821015613199576131986132ab565b5b828203905092915050565b60006131af826131c2565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006132048261320b565b9050919050565b6000613216826131c2565b9050919050565b6000613228826131e2565b9050919050565b60005b8381101561324d578082015181840152602081019050613232565b8381111561325c576000848401525b50505050565b600061326d826131e2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156132a05761329f6132ab565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6136b4816131a4565b81146136bf57600080fd5b50565b6136cb816131b6565b81146136d657600080fd5b50565b6136e2816131e2565b81146136ed57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220bd959a03f031abcb5cde400dc8059c17339f5bf3c388c8f97b90f2ea5ced272d64736f6c63430008040033

Deployed Bytecode

0x6080604052600436106101855760003560e01c806374010ece116100d157806398a5c3151161008a578063c492f04611610064578063c492f04614610533578063dd62ed3e1461055c578063ea1644d514610599578063f2fde38b146105c25761018c565b806398a5c315146104b6578063a9059cbb146104df578063c3c8cd801461051c5761018c565b806374010ece146103ca5780637c519ffb146103f35780637d1db4a51461040a5780638da5cb5b146104355780638f9a55c01461046057806395d89b411461048b5761018c565b8063313ce5671161013e5780636d8aa8f8116101185780636d8aa8f8146103365780636fc3eaec1461035f57806370a0823114610376578063715018a6146103b35761018c565b8063313ce567146102b757806349bd5a5e146102e257806369fe0e2d1461030d5761018c565b806306fdde0314610191578063095ea7b3146101bc5780631694505e146101f957806318160ddd1461022457806323b872dd1461024f5780632fd689e31461028c5761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a66105eb565b6040516101b39190612de8565b60405180910390f35b3480156101c857600080fd5b506101e360048036038101906101de91906129d2565b610628565b6040516101f09190612db2565b60405180910390f35b34801561020557600080fd5b5061020e610646565b60405161021b9190612dcd565b60405180910390f35b34801561023057600080fd5b5061023961066c565b6040516102469190612faa565b60405180910390f35b34801561025b57600080fd5b5061027660048036038101906102719190612983565b61067d565b6040516102839190612db2565b60405180910390f35b34801561029857600080fd5b506102a1610756565b6040516102ae9190612faa565b60405180910390f35b3480156102c357600080fd5b506102cc61075c565b6040516102d9919061301f565b60405180910390f35b3480156102ee57600080fd5b506102f7610765565b6040516103049190612d97565b60405180910390f35b34801561031957600080fd5b50610334600480360381019061032f9190612a8f565b61078b565b005b34801561034257600080fd5b5061035d60048036038101906103589190612a66565b61082a565b005b34801561036b57600080fd5b506103746108dc565b005b34801561038257600080fd5b5061039d600480360381019061039891906128f5565b6109ad565b6040516103aa9190612faa565b60405180910390f35b3480156103bf57600080fd5b506103c86109fe565b005b3480156103d657600080fd5b506103f160048036038101906103ec9190612a8f565b610b51565b005b3480156103ff57600080fd5b50610408610bf0565b005b34801561041657600080fd5b5061041f610ca1565b60405161042c9190612faa565b60405180910390f35b34801561044157600080fd5b5061044a610ca7565b6040516104579190612d97565b60405180910390f35b34801561046c57600080fd5b50610475610cd0565b6040516104829190612faa565b60405180910390f35b34801561049757600080fd5b506104a0610cd6565b6040516104ad9190612de8565b60405180910390f35b3480156104c257600080fd5b506104dd60048036038101906104d89190612a8f565b610d13565b005b3480156104eb57600080fd5b50610506600480360381019061050191906129d2565b610db2565b6040516105139190612db2565b60405180910390f35b34801561052857600080fd5b50610531610dd0565b005b34801561053f57600080fd5b5061055a60048036038101906105559190612a0e565b610ea9565b005b34801561056857600080fd5b50610583600480360381019061057e9190612947565b611009565b6040516105909190612faa565b60405180910390f35b3480156105a557600080fd5b506105c060048036038101906105bb9190612a8f565b611090565b005b3480156105ce57600080fd5b506105e960048036038101906105e491906128f5565b61112f565b005b60606040518060400160405280601e81526020017f456c757369766520426561757479206f6620496d70657266656374696f6e0000815250905090565b600061063c6106356112f1565b84846112f9565b6001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600068056bc75e2d63100000905090565b600061068a8484846114c4565b61074b846106966112f1565b610746856040518060600160405280602881526020016136f160289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106fc6112f1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c669092919063ffffffff16565b6112f9565b600190509392505050565b60175481565b60006009905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107936112f1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610820576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081790612f0a565b60405180910390fd5b80600b8190555050565b6108326112f1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b690612f0a565b60405180910390fd5b80601460166101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661091d6112f1565b73ffffffffffffffffffffffffffffffffffffffff1614806109935750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661097b6112f1565b73ffffffffffffffffffffffffffffffffffffffff16145b61099c57600080fd5b60004790506109aa81611cca565b50565b60006109f7600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dc5565b9050919050565b610a066112f1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8a90612f0a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b596112f1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610be6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bdd90612f0a565b60405180910390fd5b8060158190555050565b610bf86112f1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7c90612f0a565b60405180910390fd5b60016014806101000a81548160ff021916908315150217905550565b60155481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60165481565b60606040518060400160405280600881526020017f5741424953414249000000000000000000000000000000000000000000000000815250905090565b610d1b6112f1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9f90612f0a565b60405180910390fd5b8060178190555050565b6000610dc6610dbf6112f1565b84846114c4565b6001905092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e116112f1565b73ffffffffffffffffffffffffffffffffffffffff161480610e875750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e6f6112f1565b73ffffffffffffffffffffffffffffffffffffffff16145b610e9057600080fd5b6000610e9b306109ad565b9050610ea681611e33565b50565b610eb16112f1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3590612f0a565b60405180910390fd5b60005b83839050811015611003578160056000868685818110610f8a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002016020810190610f9f91906128f5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ffb90613262565b915050610f41565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6110986112f1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111c90612f0a565b60405180910390fd5b8060168190555050565b6111376112f1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bb90612f0a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122b90612e8a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611369576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136090612f8a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d090612eaa565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114b79190612faa565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152b90612f4a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159b90612e0a565b60405180910390fd5b600081116115e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115de90612f2a565b60405180910390fd5b6115ef610ca7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561165d575061162d610ca7565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156119655760148054906101000a900460ff166116ea5761167c610ca7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146116e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e090612e2a565b60405180910390fd5b5b60155481111561172f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172690612e6a565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146117dc5760165481611791846109ad565b61179b919061308f565b106117db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d290612f6a565b60405180910390fd5b5b60006117e7306109ad565b90506000601754821015905060155482106118025760155491505b80801561181c5750601460159054906101000a900460ff16155b80156118765750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561188e5750601460169054906101000a900460ff165b80156118e45750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561193a5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119625761194882611e33565b600047905060008111156119605761195f47611cca565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a0c5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611abf5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611abe5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611acd5760009050611c54565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b785750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b9057600854600c81905550600954600d819055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611c3b5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611c5357600a54600c81905550600b54600d819055505b5b611c608484848461212d565b50505050565b6000838311158290611cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca59190612de8565b60405180910390fd5b5060008385611cbd9190613170565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611d1a60028461215a90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611d45573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611d9660028461215a90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611dc1573d6000803e3d6000fd5b5050565b6000600654821115611e0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0390612e4a565b60405180910390fd5b6000611e166121a4565b9050611e2b818461215a90919063ffffffff16565b915050919050565b6001601460156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611e91577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015611ebf5781602001602082028036833780820191505090505b5090503081600081518110611efd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611f9f57600080fd5b505afa158015611fb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fd7919061291e565b81600181518110612011577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061207830601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846112f9565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016120dc959493929190612fc5565b600060405180830381600087803b1580156120f657600080fd5b505af115801561210a573d6000803e3d6000fd5b50505050506000601460156101000a81548160ff02191690831515021790555050565b8061213b5761213a6121cf565b5b612146848484612212565b80612154576121536123dd565b5b50505050565b600061219c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123f1565b905092915050565b60008060006121b1612454565b915091506121c8818361215a90919063ffffffff16565b9250505090565b6000600c541480156121e357506000600d54145b156121ed57612210565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612224876124b6565b95509550955095509550955061228286600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251e90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061231785600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612363816125c6565b61236d8483612683565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123ca9190612faa565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008083118290612438576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242f9190612de8565b60405180910390fd5b506000838561244791906130e5565b9050809150509392505050565b60008060006006549050600068056bc75e2d63100000905061248a68056bc75e2d6310000060065461215a90919063ffffffff16565b8210156124a95760065468056bc75e2d631000009350935050506124b2565b81819350935050505b9091565b60008060008060008060008060006124d38a600c54600d546126bd565b92509250925060006124e36121a4565b905060008060006124f68e878787612753565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061256083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c66565b905092915050565b6000808284612577919061308f565b9050838110156125bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b390612eca565b60405180910390fd5b8091505092915050565b60006125d06121a4565b905060006125e782846127dc90919063ffffffff16565b905061263b81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6126988260065461251e90919063ffffffff16565b6006819055506126b38160075461256890919063ffffffff16565b6007819055505050565b6000806000806126e960646126db888a6127dc90919063ffffffff16565b61215a90919063ffffffff16565b905060006127136064612705888b6127dc90919063ffffffff16565b61215a90919063ffffffff16565b9050600061273c8261272e858c61251e90919063ffffffff16565b61251e90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061276c85896127dc90919063ffffffff16565b9050600061278386896127dc90919063ffffffff16565b9050600061279a87896127dc90919063ffffffff16565b905060006127c3826127b5858761251e90919063ffffffff16565b61251e90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156127ef5760009050612851565b600082846127fd9190613116565b905082848261280c91906130e5565b1461284c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284390612eea565b60405180910390fd5b809150505b92915050565b600081359050612866816136ab565b92915050565b60008151905061287b816136ab565b92915050565b60008083601f84011261289357600080fd5b8235905067ffffffffffffffff8111156128ac57600080fd5b6020830191508360208202830111156128c457600080fd5b9250929050565b6000813590506128da816136c2565b92915050565b6000813590506128ef816136d9565b92915050565b60006020828403121561290757600080fd5b600061291584828501612857565b91505092915050565b60006020828403121561293057600080fd5b600061293e8482850161286c565b91505092915050565b6000806040838503121561295a57600080fd5b600061296885828601612857565b925050602061297985828601612857565b9150509250929050565b60008060006060848603121561299857600080fd5b60006129a686828701612857565b93505060206129b786828701612857565b92505060406129c8868287016128e0565b9150509250925092565b600080604083850312156129e557600080fd5b60006129f385828601612857565b9250506020612a04858286016128e0565b9150509250929050565b600080600060408486031215612a2357600080fd5b600084013567ffffffffffffffff811115612a3d57600080fd5b612a4986828701612881565b93509350506020612a5c868287016128cb565b9150509250925092565b600060208284031215612a7857600080fd5b6000612a86848285016128cb565b91505092915050565b600060208284031215612aa157600080fd5b6000612aaf848285016128e0565b91505092915050565b6000612ac48383612ad0565b60208301905092915050565b612ad9816131a4565b82525050565b612ae8816131a4565b82525050565b6000612af98261304a565b612b03818561306d565b9350612b0e8361303a565b8060005b83811015612b3f578151612b268882612ab8565b9750612b3183613060565b925050600181019050612b12565b5085935050505092915050565b612b55816131b6565b82525050565b612b64816131f9565b82525050565b612b738161321d565b82525050565b6000612b8482613055565b612b8e818561307e565b9350612b9e81856020860161322f565b612ba781613309565b840191505092915050565b6000612bbf60238361307e565b9150612bca8261331a565b604082019050919050565b6000612be2603f8361307e565b9150612bed82613369565b604082019050919050565b6000612c05602a8361307e565b9150612c10826133b8565b604082019050919050565b6000612c28601c8361307e565b9150612c3382613407565b602082019050919050565b6000612c4b60268361307e565b9150612c5682613430565b604082019050919050565b6000612c6e60228361307e565b9150612c798261347f565b604082019050919050565b6000612c91601b8361307e565b9150612c9c826134ce565b602082019050919050565b6000612cb460218361307e565b9150612cbf826134f7565b604082019050919050565b6000612cd760208361307e565b9150612ce282613546565b602082019050919050565b6000612cfa60298361307e565b9150612d058261356f565b604082019050919050565b6000612d1d60258361307e565b9150612d28826135be565b604082019050919050565b6000612d4060238361307e565b9150612d4b8261360d565b604082019050919050565b6000612d6360248361307e565b9150612d6e8261365c565b604082019050919050565b612d82816131e2565b82525050565b612d91816131ec565b82525050565b6000602082019050612dac6000830184612adf565b92915050565b6000602082019050612dc76000830184612b4c565b92915050565b6000602082019050612de26000830184612b5b565b92915050565b60006020820190508181036000830152612e028184612b79565b905092915050565b60006020820190508181036000830152612e2381612bb2565b9050919050565b60006020820190508181036000830152612e4381612bd5565b9050919050565b60006020820190508181036000830152612e6381612bf8565b9050919050565b60006020820190508181036000830152612e8381612c1b565b9050919050565b60006020820190508181036000830152612ea381612c3e565b9050919050565b60006020820190508181036000830152612ec381612c61565b9050919050565b60006020820190508181036000830152612ee381612c84565b9050919050565b60006020820190508181036000830152612f0381612ca7565b9050919050565b60006020820190508181036000830152612f2381612cca565b9050919050565b60006020820190508181036000830152612f4381612ced565b9050919050565b60006020820190508181036000830152612f6381612d10565b9050919050565b60006020820190508181036000830152612f8381612d33565b9050919050565b60006020820190508181036000830152612fa381612d56565b9050919050565b6000602082019050612fbf6000830184612d79565b92915050565b600060a082019050612fda6000830188612d79565b612fe76020830187612b6a565b8181036040830152612ff98186612aee565b90506130086060830185612adf565b6130156080830184612d79565b9695505050505050565b60006020820190506130346000830184612d88565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061309a826131e2565b91506130a5836131e2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156130da576130d96132ab565b5b828201905092915050565b60006130f0826131e2565b91506130fb836131e2565b92508261310b5761310a6132da565b5b828204905092915050565b6000613121826131e2565b915061312c836131e2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613165576131646132ab565b5b828202905092915050565b600061317b826131e2565b9150613186836131e2565b925082821015613199576131986132ab565b5b828203905092915050565b60006131af826131c2565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006132048261320b565b9050919050565b6000613216826131c2565b9050919050565b6000613228826131e2565b9050919050565b60005b8381101561324d578082015181840152602081019050613232565b8381111561325c576000848401525b50505050565b600061326d826131e2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156132a05761329f6132ab565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6136b4816131a4565b81146136bf57600080fd5b50565b6136cb816131b6565b81146136d657600080fd5b50565b6136e2816131e2565b81146136ed57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220bd959a03f031abcb5cde400dc8059c17339f5bf3c388c8f97b90f2ea5ced272d64736f6c63430008040033

Deployed Bytecode Sourcemap

4192:13176:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6821:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7753:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5612:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7101:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7955:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5947:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7009:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5660:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16399:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16746:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12732:235;;;;;;;;;;;;;:::i;:::-;;7205:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1665:148;;;;;;;;;;;;;:::i;:::-;;16890:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12402:76;;;;;;;;;;;;;:::i;:::-;;5804:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1449:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5873:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6913:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16554:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7352:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12487:236;;;;;;;;;;;;;:::i;:::-;;17131:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7560:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17007:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1822:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6821:83;6858:13;6891:5;;;;;;;;;;;;;;;;;6884:12;;6821:83;:::o;7753:193::-;7855:4;7877:39;7886:12;:10;:12::i;:::-;7900:7;7909:6;7877:8;:39::i;:::-;7934:4;7927:11;;7753:193;;;;:::o;5612:41::-;;;;;;;;;;;;;:::o;7101:95::-;7154:7;4772:20;7174:14;;7101:95;:::o;7955:446::-;8087:4;8104:36;8114:6;8122:9;8133:6;8104:9;:36::i;:::-;8151:220;8174:6;8195:12;:10;:12::i;:::-;8222:138;8278:6;8222:138;;;;;;;;;;;;;;;;;:11;:19;8234:6;8222:19;;;;;;;;;;;;;;;:33;8242:12;:10;:12::i;:::-;8222:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8151:8;:220::i;:::-;8389:4;8382:11;;7955:446;;;;;:::o;5947:54::-;;;;:::o;7009:83::-;7050:5;4445:1;7068:16;;7009:83;:::o;5660:28::-;;;;;;;;;;;;;:::o;16399:102::-;1587:12;:10;:12::i;:::-;1577:22;;:6;;;;;;;;;;:22;;;1569:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16481:12:::1;16465:13;:28;;;;16399:102:::0;:::o;16746:101::-;1587:12;:10;:12::i;:::-;1577:22;;:6;;;;;;;;;;:22;;;1569:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16827:12:::1;16813:11;;:26;;;;;;;;;;;;;;;;;;16746:101:::0;:::o;12732:235::-;12798:19;;;;;;;;;;;12782:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12837:17;;;;;;;;;;;12821:33;;:12;:10;:12::i;:::-;:33;;;12782:72;12774:81;;;;;;12866:26;12895:21;12866:50;;12927:32;12940:18;12927:12;:32::i;:::-;12732:235;:::o;7205:138::-;7271:7;7298:37;7318:7;:16;7326:7;7318:16;;;;;;;;;;;;;;;;7298:19;:37::i;:::-;7291:44;;7205:138;;;:::o;1665:148::-;1587:12;:10;:12::i;:::-;1577:22;;:6;;;;;;;;;;:22;;;1569:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1772:1:::1;1735:40;;1756:6;::::0;::::1;;;;;;;;1735:40;;;;;;;;;;;;1803:1;1786:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1665:148::o:0;16890:108::-;1587:12;:10;:12::i;:::-;1577:22;;:6;;;;;;;;;;:22;;;1569:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16979:11:::1;16964:12;:26;;;;16890:108:::0;:::o;12402:76::-;1587:12;:10;:12::i;:::-;1577:22;;:6;;;;;;;;;;:22;;;1569:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12466:4:::1;12452:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;12402:76::o:0;5804:48::-;;;;:::o;1449:79::-;1487:7;1514:6;;;;;;;;;;;1507:13;;1449:79;:::o;5873:50::-;;;;:::o;6913:87::-;6952:13;6985:7;;;;;;;;;;;;;;;;;6978:14;;6913:87;:::o;16554:139::-;1587:12;:10;:12::i;:::-;1577:22;;:6;;;;;;;;;;:22;;;1569:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16667:18:::1;16645:19;:40;;;;16554:139:::0;:::o;7352:199::-;7457:4;7479:42;7489:12;:10;:12::i;:::-;7503:9;7514:6;7479:9;:42::i;:::-;7539:4;7532:11;;7352:199;;;;:::o;12487:236::-;12553:19;;;;;;;;;;;12537:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12592:17;;;;;;;;;;;12576:33;;:12;:10;:12::i;:::-;:33;;;12537:72;12529:81;;;;;;12621:23;12647:24;12665:4;12647:9;:24::i;:::-;12621:50;;12682:33;12699:15;12682:16;:33::i;:::-;12487:236;:::o;17131:234::-;1587:12;:10;:12::i;:::-;1577:22;;:6;;;;;;;;;;:22;;;1569:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17248:9:::1;17244:114;17267:8;;:15;;17263:1;:19;17244:114;;;17338:8;17304:18;:31;17323:8;;17332:1;17323:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17304:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17284:3;;;;;:::i;:::-;;;;17244:114;;;;17131:234:::0;;;:::o;7560:184::-;7677:7;7709:11;:18;7721:5;7709:18;;;;;;;;;;;;;;;:27;7728:7;7709:27;;;;;;;;;;;;;;;;7702:34;;7560:184;;;;:::o;17007:115::-;1587:12;:10;:12::i;:::-;1577:22;;:6;;;;;;;;;;:22;;;1569:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17101:13:::1;17084:14;:30;;;;17007:115:::0;:::o;1822:244::-;1587:12;:10;:12::i;:::-;1577:22;;:6;;;;;;;;;;:22;;;1569:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1931:1:::1;1911:22;;:8;:22;;;;1903:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2021:8;1992:38;;2013:6;::::0;::::1;;;;;;;;1992:38;;;;;;;;;;;;2050:8;2041:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1822:244:::0;:::o;198:98::-;251:7;278:10;271:17;;198:98;:::o;9098:369::-;9242:1;9225:19;;:5;:19;;;;9217:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9323:1;9304:21;;:7;:21;;;;9296:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9405:6;9375:11;:18;9387:5;9375:18;;;;;;;;;;;;;;;:27;9394:7;9375:27;;;;;;;;;;;;;;;:36;;;;9443:7;9427:32;;9436:5;9427:32;;;9452:6;9427:32;;;;;;:::i;:::-;;;;;;;;9098:369;;;:::o;9476:2256::-;9614:1;9598:18;;:4;:18;;;;9590:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9691:1;9677:16;;:2;:16;;;;9669:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9761:1;9752:6;:10;9744:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9834:7;:5;:7::i;:::-;9826:15;;:4;:15;;;;:32;;;;;9851:7;:5;:7::i;:::-;9845:13;;:2;:13;;;;9826:32;9822:1178;;;9916:11;;;;;;;;;;9911:144;;9964:7;:5;:7::i;:::-;9956:15;;:4;:15;;;9948:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9911:144;10090:12;;10080:6;:22;;10072:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10162:13;;;;;;;;;;;10156:19;;:2;:19;;;10153:146;;10229:14;;10220:6;10204:13;10214:2;10204:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10196:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10153:146;10316:28;10347:24;10365:4;10347:9;:24::i;:::-;10316:55;;10386:12;10425:19;;10401:20;:43;;10386:58;;10489:12;;10465:20;:36;10462:124;;10558:12;;10535:35;;10462:124;10607:7;:18;;;;;10619:6;;;;;;;;;;;10618:7;10607:18;:43;;;;;10637:13;;;;;;;;;;;10629:21;;:4;:21;;;;10607:43;:58;;;;;10654:11;;;;;;;;;;;10607:58;:87;;;;;10670:18;:24;10689:4;10670:24;;;;;;;;;;;;;;;;;;;;;;;;;10669:25;10607:87;:114;;;;;10699:18;:22;10718:2;10699:22;;;;;;;;;;;;;;;;;;;;;;;;;10698:23;10607:114;10603:386;;;10742:38;10759:20;10742:16;:38::i;:::-;10799:26;10828:21;10799:50;;10893:1;10872:18;:22;10868:106;;;10919:35;10932:21;10919:12;:35::i;:::-;10868:106;10603:386;;9822:1178;;;11013:12;11028:4;11013:19;;11078:18;:24;11097:4;11078:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11106:18;:22;11125:2;11106:22;;;;;;;;;;;;;;;;;;;;;;;;;11078:50;11077:102;;;;11142:13;;;;;;;;;;;11134:21;;:4;:21;;;;:44;;;;;11165:13;;;;;;;;;;;11159:19;;:2;:19;;;;11134:44;11077:102;11073:597;;;11206:5;11196:15;;11073:597;;;11290:13;;;;;;;;;;;11282:21;;:4;:21;;;:55;;;;;11321:15;;;;;;;;;;;11307:30;;:2;:30;;;;11282:55;11279:162;;;11370:14;;11358:9;:26;;;;11413:12;;11403:7;:22;;;;11279:162;11501:13;;;;;;;;;;;11495:19;;:2;:19;;;:55;;;;;11534:15;;;;;;;;;;;11518:32;;:4;:32;;;;11495:55;11491:165;;;11583:15;;11571:9;:27;;;;11627:13;;11617:7;:23;;;;11491:165;11073:597;11683:41;11698:4;11704:2;11708:6;11716:7;11683:14;:41::i;:::-;9476:2256;;;;:::o;2434:224::-;2554:7;2587:1;2582;:6;;2590:12;2574:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2614:9;2630:1;2626;:5;;;;:::i;:::-;2614:17;;2649:1;2642:8;;;2434:224;;;;;:::o;12233:160::-;12290:19;;;;;;;;;;;:28;;:43;12319:13;12330:1;12319:6;:10;;:13;;;;:::i;:::-;12290:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12344:17;;;;;;;;;;;:26;;:41;12371:13;12382:1;12371:6;:10;;:13;;;;:::i;:::-;12344:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12233:160;:::o;8410:323::-;8505:7;8563;;8552;:18;;8530:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8651:19;8673:10;:8;:10::i;:::-;8651:32;;8701:24;8713:11;8701:7;:11;;:24;;;;:::i;:::-;8694:31;;;8410:323;;;:::o;11741:483::-;6113:4;6104:6;;:13;;;;;;;;;;;;;;;;;;11819:21:::1;11857:1;11843:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11819:40;;11888:4;11870;11875:1;11870:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;11914:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11904:4;11909:1;11904:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;11947:62;11964:4;11979:15;;;;;;;;;;;11997:11;11947:8;:62::i;:::-;12020:15;;;;;;;;;;;:66;;;12101:11;12127:1;12143:4;12170;12190:15;12020:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;6128:1;6149:5:::0;6140:6;;:14;;;;;;;;;;;;;;;;;;11741:483;:::o;12976:282::-;13132:7;13127:28;;13141:14;:12;:14::i;:::-;13127:28;13166:44;13184:6;13192:9;13203:6;13166:17;:44::i;:::-;13226:7;13221:29;;13235:15;:13;:15::i;:::-;13221:29;12976:282;;;;:::o;2922:132::-;2980:7;3007:39;3011:1;3014;3007:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3000:46;;2922:132;;;;:::o;15954:167::-;15996:7;16017:15;16034;16053:19;:17;:19::i;:::-;16016:56;;;;16093:20;16105:7;16093;:11;;:20;;;;:::i;:::-;16086:27;;;;15954:167;:::o;8742:221::-;8802:1;8789:9;;:14;:30;;;;;8818:1;8807:7;;:12;8789:30;8785:43;;;8821:7;;8785:43;8861:9;;8841:17;:29;;;;8899:7;;8881:15;:25;;;;8932:1;8920:9;:13;;;;8954:1;8944:7;:11;;;;8742:221;:::o;13267:610::-;13414:15;13444:23;13482:12;13509:23;13547:12;13574:13;13601:19;13612:7;13601:10;:19::i;:::-;13399:221;;;;;;;;;;;;13649:28;13669:7;13649;:15;13657:6;13649:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13631:7;:15;13639:6;13631:15;;;;;;;;;;;;;;;:46;;;;13709:39;13732:15;13709:7;:18;13717:9;13709:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13688:7;:18;13696:9;13688:18;;;;;;;;;;;;;;;:60;;;;13759:16;13769:5;13759:9;:16::i;:::-;13786:23;13798:4;13804;13786:11;:23::i;:::-;13842:9;13825:44;;13834:6;13825:44;;;13853:15;13825:44;;;;;;:::i;:::-;;;;;;;;13267:610;;;;;;;;;:::o;8972:117::-;9028:17;;9016:9;:29;;;;9066:15;;9056:7;:25;;;;8972:117::o;3063:223::-;3183:7;3215:1;3211;:5;3218:12;3203:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3242:9;3258:1;3254;:5;;;;:::i;:::-;3242:17;;3277:1;3270:8;;;3063:223;;;;;:::o;16130:260::-;16181:7;16190;16210:15;16228:7;;16210:25;;16246:15;4772:20;16246:25;;16296:20;4772;16296:7;;:11;;:20;;;;:::i;:::-;16286:7;:30;16282:61;;;16326:7;;4772:20;16318:25;;;;;;;;16282:61;16365:7;16374;16357:25;;;;;;16130:260;;;:::o;14300:618::-;14400:7;14422;14444;14466;14488;14510;14546:23;14571:12;14585:13;14615:40;14627:7;14636:9;;14647:7;;14615:11;:40::i;:::-;14545:110;;;;;;14666:19;14688:10;:8;:10::i;:::-;14666:32;;14710:15;14727:23;14752:12;14781:46;14793:7;14802:4;14808:5;14815:11;14781;:46::i;:::-;14709:118;;;;;;14849:7;14858:15;14875:4;14881:15;14898:4;14904:5;14841:69;;;;;;;;;;;;;;;;;;;14300:618;;;;;;;:::o;2289:136::-;2347:7;2374:43;2378:1;2381;2374:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2367:50;;2289:136;;;;:::o;2101:179::-;2159:7;2179:9;2195:1;2191;:5;;;;:::i;:::-;2179:17;;2220:1;2215;:6;;2207:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2271:1;2264:8;;;2101:179;;;;:::o;13886:211::-;13939:19;13961:10;:8;:10::i;:::-;13939:32;;13982:13;13998:22;14008:11;13998:5;:9;;:22;;;;:::i;:::-;13982:38;;14056:33;14083:5;14056:7;:22;14072:4;14056:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14031:7;:22;14047:4;14031:22;;;;;;;;;;;;;;;:58;;;;13886:211;;;:::o;14106:147::-;14184:17;14196:4;14184:7;;:11;;:17;;;;:::i;:::-;14174:7;:27;;;;14225:20;14240:4;14225:10;;:14;;:20;;;;:::i;:::-;14212:10;:33;;;;14106:147;;:::o;14927:472::-;15096:7;15118;15140;15175:12;15190:30;15216:3;15190:21;15202:8;15190:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15175:45;;15231:13;15247:28;15271:3;15247:19;15259:6;15247:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15231:44;;15286:23;15312:28;15334:5;15312:17;15324:4;15312:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15286:54;;15362:15;15379:4;15385:5;15354:37;;;;;;;;;14927:472;;;;;;;:::o;15408:537::-;15602:7;15624;15646;15681:15;15699:24;15711:11;15699:7;:11;;:24;;;;:::i;:::-;15681:42;;15734:12;15749:21;15758:11;15749:4;:8;;:21;;;;:::i;:::-;15734:36;;15781:13;15797:22;15807:11;15797:5;:9;;:22;;;;:::i;:::-;15781:38;;15830:23;15856:28;15878:5;15856:17;15868:4;15856:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15830:54;;15906:7;15915:15;15932:4;15898:39;;;;;;;;;;15408:537;;;;;;;;:::o;2667:246::-;2725:7;2754:1;2749;:6;2745:47;;;2779:1;2772:8;;;;2745:47;2802:9;2818:1;2814;:5;;;;:::i;:::-;2802:17;;2847:1;2842;2838;:5;;;;:::i;:::-;:10;2830:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2904:1;2897:8;;;2667:246;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;318:367::-;391:8;401:6;451:3;444:4;436:6;432:17;428:27;418:2;;469:1;466;459:12;418:2;505:6;492:20;482:30;;535:18;527:6;524:30;521:2;;;567:1;564;557:12;521:2;604:4;596:6;592:17;580:29;;658:3;650:4;642:6;638:17;628:8;624:32;621:41;618:2;;;675:1;672;665:12;618:2;408:277;;;;;:::o;691:133::-;734:5;772:6;759:20;750:29;;788:30;812:5;788:30;:::i;:::-;740:84;;;;:::o;830:139::-;876:5;914:6;901:20;892:29;;930:33;957:5;930:33;:::i;:::-;882:87;;;;:::o;975:262::-;1034:6;1083:2;1071:9;1062:7;1058:23;1054:32;1051:2;;;1099:1;1096;1089:12;1051:2;1142:1;1167:53;1212:7;1203:6;1192:9;1188:22;1167:53;:::i;:::-;1157:63;;1113:117;1041:196;;;;:::o;1243:284::-;1313:6;1362:2;1350:9;1341:7;1337:23;1333:32;1330:2;;;1378:1;1375;1368:12;1330:2;1421:1;1446:64;1502:7;1493:6;1482:9;1478:22;1446:64;:::i;:::-;1436:74;;1392:128;1320:207;;;;:::o;1533:407::-;1601:6;1609;1658:2;1646:9;1637:7;1633:23;1629:32;1626:2;;;1674:1;1671;1664:12;1626:2;1717:1;1742:53;1787:7;1778:6;1767:9;1763:22;1742:53;:::i;:::-;1732:63;;1688:117;1844:2;1870:53;1915:7;1906:6;1895:9;1891:22;1870:53;:::i;:::-;1860:63;;1815:118;1616:324;;;;;:::o;1946:552::-;2023:6;2031;2039;2088:2;2076:9;2067:7;2063:23;2059:32;2056:2;;;2104:1;2101;2094:12;2056:2;2147:1;2172:53;2217:7;2208:6;2197:9;2193:22;2172:53;:::i;:::-;2162:63;;2118:117;2274:2;2300:53;2345:7;2336:6;2325:9;2321:22;2300:53;:::i;:::-;2290:63;;2245:118;2402:2;2428:53;2473:7;2464:6;2453:9;2449:22;2428:53;:::i;:::-;2418:63;;2373:118;2046:452;;;;;:::o;2504:407::-;2572:6;2580;2629:2;2617:9;2608:7;2604:23;2600:32;2597:2;;;2645:1;2642;2635:12;2597:2;2688:1;2713:53;2758:7;2749:6;2738:9;2734:22;2713:53;:::i;:::-;2703:63;;2659:117;2815:2;2841:53;2886:7;2877:6;2866:9;2862:22;2841:53;:::i;:::-;2831:63;;2786:118;2587:324;;;;;:::o;2917:564::-;3009:6;3017;3025;3074:2;3062:9;3053:7;3049:23;3045:32;3042:2;;;3090:1;3087;3080:12;3042:2;3161:1;3150:9;3146:17;3133:31;3191:18;3183:6;3180:30;3177:2;;;3223:1;3220;3213:12;3177:2;3259:80;3331:7;3322:6;3311:9;3307:22;3259:80;:::i;:::-;3241:98;;;;3104:245;3388:2;3414:50;3456:7;3447:6;3436:9;3432:22;3414:50;:::i;:::-;3404:60;;3359:115;3032:449;;;;;:::o;3487:256::-;3543:6;3592:2;3580:9;3571:7;3567:23;3563:32;3560:2;;;3608:1;3605;3598:12;3560:2;3651:1;3676:50;3718:7;3709:6;3698:9;3694:22;3676:50;:::i;:::-;3666:60;;3622:114;3550:193;;;;:::o;3749:262::-;3808:6;3857:2;3845:9;3836:7;3832:23;3828:32;3825:2;;;3873:1;3870;3863:12;3825:2;3916:1;3941:53;3986:7;3977:6;3966:9;3962:22;3941:53;:::i;:::-;3931:63;;3887:117;3815:196;;;;:::o;4017:179::-;4086:10;4107:46;4149:3;4141:6;4107:46;:::i;:::-;4185:4;4180:3;4176:14;4162:28;;4097:99;;;;:::o;4202:108::-;4279:24;4297:5;4279:24;:::i;:::-;4274:3;4267:37;4257:53;;:::o;4316:118::-;4403:24;4421:5;4403:24;:::i;:::-;4398:3;4391:37;4381:53;;:::o;4470:732::-;4589:3;4618:54;4666:5;4618:54;:::i;:::-;4688:86;4767:6;4762:3;4688:86;:::i;:::-;4681:93;;4798:56;4848:5;4798:56;:::i;:::-;4877:7;4908:1;4893:284;4918:6;4915:1;4912:13;4893:284;;;4994:6;4988:13;5021:63;5080:3;5065:13;5021:63;:::i;:::-;5014:70;;5107:60;5160:6;5107:60;:::i;:::-;5097:70;;4953:224;4940:1;4937;4933:9;4928:14;;4893:284;;;4897:14;5193:3;5186:10;;4594:608;;;;;;;:::o;5208:109::-;5289:21;5304:5;5289:21;:::i;:::-;5284:3;5277:34;5267:50;;:::o;5323:183::-;5436:63;5493:5;5436:63;:::i;:::-;5431:3;5424:76;5414:92;;:::o;5512:147::-;5607:45;5646:5;5607:45;:::i;:::-;5602:3;5595:58;5585:74;;:::o;5665:364::-;5753:3;5781:39;5814:5;5781:39;:::i;:::-;5836:71;5900:6;5895:3;5836:71;:::i;:::-;5829:78;;5916:52;5961:6;5956:3;5949:4;5942:5;5938:16;5916:52;:::i;:::-;5993:29;6015:6;5993:29;:::i;:::-;5988:3;5984:39;5977:46;;5757:272;;;;;:::o;6035:366::-;6177:3;6198:67;6262:2;6257:3;6198:67;:::i;:::-;6191:74;;6274:93;6363:3;6274:93;:::i;:::-;6392:2;6387:3;6383:12;6376:19;;6181:220;;;:::o;6407:366::-;6549:3;6570:67;6634:2;6629:3;6570:67;:::i;:::-;6563:74;;6646:93;6735:3;6646:93;:::i;:::-;6764:2;6759:3;6755:12;6748:19;;6553:220;;;:::o;6779:366::-;6921:3;6942:67;7006:2;7001:3;6942:67;:::i;:::-;6935:74;;7018:93;7107:3;7018:93;:::i;:::-;7136:2;7131:3;7127:12;7120:19;;6925:220;;;:::o;7151:366::-;7293:3;7314:67;7378:2;7373:3;7314:67;:::i;:::-;7307:74;;7390:93;7479:3;7390:93;:::i;:::-;7508:2;7503:3;7499:12;7492:19;;7297:220;;;:::o;7523:366::-;7665:3;7686:67;7750:2;7745:3;7686:67;:::i;:::-;7679:74;;7762:93;7851:3;7762:93;:::i;:::-;7880:2;7875:3;7871:12;7864:19;;7669:220;;;:::o;7895:366::-;8037:3;8058:67;8122:2;8117:3;8058:67;:::i;:::-;8051:74;;8134:93;8223:3;8134:93;:::i;:::-;8252:2;8247:3;8243:12;8236:19;;8041:220;;;:::o;8267:366::-;8409:3;8430:67;8494:2;8489:3;8430:67;:::i;:::-;8423:74;;8506:93;8595:3;8506:93;:::i;:::-;8624:2;8619:3;8615:12;8608:19;;8413:220;;;:::o;8639:366::-;8781:3;8802:67;8866:2;8861:3;8802:67;:::i;:::-;8795:74;;8878:93;8967:3;8878:93;:::i;:::-;8996:2;8991:3;8987:12;8980:19;;8785:220;;;:::o;9011:366::-;9153:3;9174:67;9238:2;9233:3;9174:67;:::i;:::-;9167:74;;9250:93;9339:3;9250:93;:::i;:::-;9368:2;9363:3;9359:12;9352:19;;9157:220;;;:::o;9383:366::-;9525:3;9546:67;9610:2;9605:3;9546:67;:::i;:::-;9539:74;;9622:93;9711:3;9622:93;:::i;:::-;9740:2;9735:3;9731:12;9724:19;;9529:220;;;:::o;9755:366::-;9897:3;9918:67;9982:2;9977:3;9918:67;:::i;:::-;9911:74;;9994:93;10083:3;9994:93;:::i;:::-;10112:2;10107:3;10103:12;10096:19;;9901:220;;;:::o;10127:366::-;10269:3;10290:67;10354:2;10349:3;10290:67;:::i;:::-;10283:74;;10366:93;10455:3;10366:93;:::i;:::-;10484:2;10479:3;10475:12;10468:19;;10273:220;;;:::o;10499:366::-;10641:3;10662:67;10726:2;10721:3;10662:67;:::i;:::-;10655:74;;10738:93;10827:3;10738:93;:::i;:::-;10856:2;10851:3;10847:12;10840:19;;10645:220;;;:::o;10871:118::-;10958:24;10976:5;10958:24;:::i;:::-;10953:3;10946:37;10936:53;;:::o;10995:112::-;11078:22;11094:5;11078:22;:::i;:::-;11073:3;11066:35;11056:51;;:::o;11113:222::-;11206:4;11244:2;11233:9;11229:18;11221:26;;11257:71;11325:1;11314:9;11310:17;11301:6;11257:71;:::i;:::-;11211:124;;;;:::o;11341:210::-;11428:4;11466:2;11455:9;11451:18;11443:26;;11479:65;11541:1;11530:9;11526:17;11517:6;11479:65;:::i;:::-;11433:118;;;;:::o;11557:274::-;11676:4;11714:2;11703:9;11699:18;11691:26;;11727:97;11821:1;11810:9;11806:17;11797:6;11727:97;:::i;:::-;11681:150;;;;:::o;11837:313::-;11950:4;11988:2;11977:9;11973:18;11965:26;;12037:9;12031:4;12027:20;12023:1;12012:9;12008:17;12001:47;12065:78;12138:4;12129:6;12065:78;:::i;:::-;12057:86;;11955:195;;;;:::o;12156:419::-;12322:4;12360:2;12349:9;12345:18;12337:26;;12409:9;12403:4;12399:20;12395:1;12384:9;12380:17;12373:47;12437:131;12563:4;12437:131;:::i;:::-;12429:139;;12327:248;;;:::o;12581:419::-;12747:4;12785:2;12774:9;12770:18;12762:26;;12834:9;12828:4;12824:20;12820:1;12809:9;12805:17;12798:47;12862:131;12988:4;12862:131;:::i;:::-;12854:139;;12752:248;;;:::o;13006:419::-;13172:4;13210:2;13199:9;13195:18;13187:26;;13259:9;13253:4;13249:20;13245:1;13234:9;13230:17;13223:47;13287:131;13413:4;13287:131;:::i;:::-;13279:139;;13177:248;;;:::o;13431:419::-;13597:4;13635:2;13624:9;13620:18;13612:26;;13684:9;13678:4;13674:20;13670:1;13659:9;13655:17;13648:47;13712:131;13838:4;13712:131;:::i;:::-;13704:139;;13602:248;;;:::o;13856:419::-;14022:4;14060:2;14049:9;14045:18;14037:26;;14109:9;14103:4;14099:20;14095:1;14084:9;14080:17;14073:47;14137:131;14263:4;14137:131;:::i;:::-;14129:139;;14027:248;;;:::o;14281:419::-;14447:4;14485:2;14474:9;14470:18;14462:26;;14534:9;14528:4;14524:20;14520:1;14509:9;14505:17;14498:47;14562:131;14688:4;14562:131;:::i;:::-;14554:139;;14452:248;;;:::o;14706:419::-;14872:4;14910:2;14899:9;14895:18;14887:26;;14959:9;14953:4;14949:20;14945:1;14934:9;14930:17;14923:47;14987:131;15113:4;14987:131;:::i;:::-;14979:139;;14877:248;;;:::o;15131:419::-;15297:4;15335:2;15324:9;15320:18;15312:26;;15384:9;15378:4;15374:20;15370:1;15359:9;15355:17;15348:47;15412:131;15538:4;15412:131;:::i;:::-;15404:139;;15302:248;;;:::o;15556:419::-;15722:4;15760:2;15749:9;15745:18;15737:26;;15809:9;15803:4;15799:20;15795:1;15784:9;15780:17;15773:47;15837:131;15963:4;15837:131;:::i;:::-;15829:139;;15727:248;;;:::o;15981:419::-;16147:4;16185:2;16174:9;16170:18;16162:26;;16234:9;16228:4;16224:20;16220:1;16209:9;16205:17;16198:47;16262:131;16388:4;16262:131;:::i;:::-;16254:139;;16152:248;;;:::o;16406:419::-;16572:4;16610:2;16599:9;16595:18;16587:26;;16659:9;16653:4;16649:20;16645:1;16634:9;16630:17;16623:47;16687:131;16813:4;16687:131;:::i;:::-;16679:139;;16577:248;;;:::o;16831:419::-;16997:4;17035:2;17024:9;17020:18;17012:26;;17084:9;17078:4;17074:20;17070:1;17059:9;17055:17;17048:47;17112:131;17238:4;17112:131;:::i;:::-;17104:139;;17002:248;;;:::o;17256:419::-;17422:4;17460:2;17449:9;17445:18;17437:26;;17509:9;17503:4;17499:20;17495:1;17484:9;17480:17;17473:47;17537:131;17663:4;17537:131;:::i;:::-;17529:139;;17427:248;;;:::o;17681:222::-;17774:4;17812:2;17801:9;17797:18;17789:26;;17825:71;17893:1;17882:9;17878:17;17869:6;17825:71;:::i;:::-;17779:124;;;;:::o;17909:831::-;18172:4;18210:3;18199:9;18195:19;18187:27;;18224:71;18292:1;18281:9;18277:17;18268:6;18224:71;:::i;:::-;18305:80;18381:2;18370:9;18366:18;18357:6;18305:80;:::i;:::-;18432:9;18426:4;18422:20;18417:2;18406:9;18402:18;18395:48;18460:108;18563:4;18554:6;18460:108;:::i;:::-;18452:116;;18578:72;18646:2;18635:9;18631:18;18622:6;18578:72;:::i;:::-;18660:73;18728:3;18717:9;18713:19;18704:6;18660:73;:::i;:::-;18177:563;;;;;;;;:::o;18746:214::-;18835:4;18873:2;18862:9;18858:18;18850:26;;18886:67;18950:1;18939:9;18935:17;18926:6;18886:67;:::i;:::-;18840:120;;;;:::o;18966:132::-;19033:4;19056:3;19048:11;;19086:4;19081:3;19077:14;19069:22;;19038:60;;;:::o;19104:114::-;19171:6;19205:5;19199:12;19189:22;;19178:40;;;:::o;19224:99::-;19276:6;19310:5;19304:12;19294:22;;19283:40;;;:::o;19329:113::-;19399:4;19431;19426:3;19422:14;19414:22;;19404:38;;;:::o;19448:184::-;19547:11;19581:6;19576:3;19569:19;19621:4;19616:3;19612:14;19597:29;;19559:73;;;;:::o;19638:169::-;19722:11;19756:6;19751:3;19744:19;19796:4;19791:3;19787:14;19772:29;;19734:73;;;;:::o;19813:305::-;19853:3;19872:20;19890:1;19872:20;:::i;:::-;19867:25;;19906:20;19924:1;19906:20;:::i;:::-;19901:25;;20060:1;19992:66;19988:74;19985:1;19982:81;19979:2;;;20066:18;;:::i;:::-;19979:2;20110:1;20107;20103:9;20096:16;;19857:261;;;;:::o;20124:185::-;20164:1;20181:20;20199:1;20181:20;:::i;:::-;20176:25;;20215:20;20233:1;20215:20;:::i;:::-;20210:25;;20254:1;20244:2;;20259:18;;:::i;:::-;20244:2;20301:1;20298;20294:9;20289:14;;20166:143;;;;:::o;20315:348::-;20355:7;20378:20;20396:1;20378:20;:::i;:::-;20373:25;;20412:20;20430:1;20412:20;:::i;:::-;20407:25;;20600:1;20532:66;20528:74;20525:1;20522:81;20517:1;20510:9;20503:17;20499:105;20496:2;;;20607:18;;:::i;:::-;20496:2;20655:1;20652;20648:9;20637:20;;20363:300;;;;:::o;20669:191::-;20709:4;20729:20;20747:1;20729:20;:::i;:::-;20724:25;;20763:20;20781:1;20763:20;:::i;:::-;20758:25;;20802:1;20799;20796:8;20793:2;;;20807:18;;:::i;:::-;20793:2;20852:1;20849;20845:9;20837:17;;20714:146;;;;:::o;20866:96::-;20903:7;20932:24;20950:5;20932:24;:::i;:::-;20921:35;;20911:51;;;:::o;20968:90::-;21002:7;21045:5;21038:13;21031:21;21020:32;;21010:48;;;:::o;21064:126::-;21101:7;21141:42;21134:5;21130:54;21119:65;;21109:81;;;:::o;21196:77::-;21233:7;21262:5;21251:16;;21241:32;;;:::o;21279:86::-;21314:7;21354:4;21347:5;21343:16;21332:27;;21322:43;;;:::o;21371:178::-;21447:9;21480:63;21537:5;21480:63;:::i;:::-;21467:76;;21457:92;;;:::o;21555:139::-;21631:9;21664:24;21682:5;21664:24;:::i;:::-;21651:37;;21641:53;;;:::o;21700:121::-;21758:9;21791:24;21809:5;21791:24;:::i;:::-;21778:37;;21768:53;;;:::o;21827:307::-;21895:1;21905:113;21919:6;21916:1;21913:13;21905:113;;;22004:1;21999:3;21995:11;21989:18;21985:1;21980:3;21976:11;21969:39;21941:2;21938:1;21934:10;21929:15;;21905:113;;;22036:6;22033:1;22030:13;22027:2;;;22116:1;22107:6;22102:3;22098:16;22091:27;22027:2;21876:258;;;;:::o;22140:233::-;22179:3;22202:24;22220:5;22202:24;:::i;:::-;22193:33;;22248:66;22241:5;22238:77;22235:2;;;22318:18;;:::i;:::-;22235:2;22365:1;22358:5;22354:13;22347:20;;22183:190;;;:::o;22379:180::-;22427:77;22424:1;22417:88;22524:4;22521:1;22514:15;22548:4;22545:1;22538:15;22565:180;22613:77;22610:1;22603:88;22710:4;22707:1;22700:15;22734:4;22731:1;22724:15;22751:102;22792:6;22843:2;22839:7;22834:2;22827:5;22823:14;22819:28;22809:38;;22799:54;;;:::o;22859:222::-;22999:34;22995:1;22987:6;22983:14;22976:58;23068:5;23063:2;23055:6;23051:15;23044:30;22965:116;:::o;23087:250::-;23227:34;23223:1;23215:6;23211:14;23204:58;23296:33;23291:2;23283:6;23279:15;23272:58;23193:144;:::o;23343:229::-;23483:34;23479:1;23471:6;23467:14;23460:58;23552:12;23547:2;23539:6;23535:15;23528:37;23449:123;:::o;23578:178::-;23718:30;23714:1;23706:6;23702:14;23695:54;23684:72;:::o;23762:225::-;23902:34;23898:1;23890:6;23886:14;23879:58;23971:8;23966:2;23958:6;23954:15;23947:33;23868:119;:::o;23993:221::-;24133:34;24129:1;24121:6;24117:14;24110:58;24202:4;24197:2;24189:6;24185:15;24178:29;24099:115;:::o;24220:177::-;24360:29;24356:1;24348:6;24344:14;24337:53;24326:71;:::o;24403:220::-;24543:34;24539:1;24531:6;24527:14;24520:58;24612:3;24607:2;24599:6;24595:15;24588:28;24509:114;:::o;24629:182::-;24769:34;24765:1;24757:6;24753:14;24746:58;24735:76;:::o;24817:228::-;24957:34;24953:1;24945:6;24941:14;24934:58;25026:11;25021:2;25013:6;25009:15;25002:36;24923:122;:::o;25051:224::-;25191:34;25187:1;25179:6;25175:14;25168:58;25260:7;25255:2;25247:6;25243:15;25236:32;25157:118;:::o;25281:222::-;25421:34;25417:1;25409:6;25405:14;25398:58;25490:5;25485:2;25477:6;25473:15;25466:30;25387:116;:::o;25509:223::-;25649:34;25645:1;25637:6;25633:14;25626:58;25718:6;25713:2;25705:6;25701:15;25694:31;25615:117;:::o;25738:122::-;25811:24;25829:5;25811:24;:::i;:::-;25804:5;25801:35;25791:2;;25850:1;25847;25840:12;25791:2;25781:79;:::o;25866:116::-;25936:21;25951:5;25936:21;:::i;:::-;25929:5;25926:32;25916:2;;25972:1;25969;25962:12;25916:2;25906:76;:::o;25988:122::-;26061:24;26079:5;26061:24;:::i;:::-;26054:5;26051:35;26041:2;;26100:1;26097;26090:12;26041:2;26031:79;:::o

Swarm Source

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