ETH Price: $3,435.05 (-1.41%)

Token

Waffles (WFLS)
 

Overview

Max Total Supply

100,000,000,000 WFLS

Holders

70

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
21,372,803.573603072135805143 WFLS

Value
$0.00
0xc922d159f98ebf0c64a3d1de8a37eda28554442d
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:
Waffles

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 50000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-08-07
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.13;

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

interface IFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
}

interface IRouter {
    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
                );

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
            uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline
            ) external;
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) { return msg.sender; }
}

contract Ownable is Context {
    address private _owner;
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
    }
    function owner() public view returns (address) { return _owner; }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner.");
        _;
    }
    function renounceOwnership() external virtual onlyOwner { _owner = address(0); }
    function transferOwnership(address newOwner) external virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address.");
        _owner = newOwner;
    }
}

contract Waffles is IERC20, Ownable {
    IRouter public uniswapV2Router;
    address public uniswapV2Pair;
    string private constant _name =  "Waffles";
    string private constant _symbol = "WFLS";
    uint8 private constant _decimals = 18;
    mapping (address => uint256) private balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    uint256 private constant _totalSupply = 100000000000 * 10**18; // 100 billion
    mapping (address => bool) public automatedMarketMakerPairs;
    bool private isLiquidityAdded = false;
    bool private isTradingActivated = false;
    uint256 public maxWalletAmount = _totalSupply;
    uint256 public maxTxAmount = _totalSupply;
    mapping (address => bool) private _isExcludedFromMaxWalletLimit;
    mapping (address => bool) private _isExcludedFromMaxTransactionLimit;
    mapping (address => bool) private _isExcludedFromFee;
    uint8 public buyFee = 2;
    uint8 public sellFee = 10;
    address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;
    address payable public treasuryWallet;
    address public devWallet;
    uint256 minimumTokensBeforeSwap = _totalSupply * 250 / 1000000; // .025%
    uint256 private _launchTimestamp;

    constructor() {
        IRouter _uniswapV2Router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        treasuryWallet = payable(0x7BD15BaFcbcD55BF38d064f3747825Ce2aA5F468); // gnosis safe (mainnet)
        devWallet = 0x13DB3b44e4ccaC192D38953A1a02eCB393772D93; // chkn deployer (mainnet)
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[devWallet] = true;
        _isExcludedFromFee[treasuryWallet] = true;
        _isExcludedFromFee[deadWallet] = true;
        _isExcludedFromMaxWalletLimit[address(uniswapV2Router)] = true;
        _isExcludedFromMaxWalletLimit[address(this)] = true;
        _isExcludedFromMaxWalletLimit[owner()] = true;
        _isExcludedFromMaxWalletLimit[devWallet] = true;
        _isExcludedFromMaxWalletLimit[treasuryWallet] = true;
        _isExcludedFromMaxWalletLimit[deadWallet] = true;
        _isExcludedFromMaxTransactionLimit[address(uniswapV2Router)] = true;
        _isExcludedFromMaxTransactionLimit[address(this)] = true;
        _isExcludedFromMaxTransactionLimit[owner()] = true;
        _isExcludedFromMaxTransactionLimit[devWallet] = true;
        _isExcludedFromMaxTransactionLimit[treasuryWallet] = true;
        _isExcludedFromMaxTransactionLimit[deadWallet] = true;
        balances[address(this)] = _totalSupply;
        emit Transfer(address(0), address(this), _totalSupply);
    }

    receive() external payable {} // so the contract can receive eth

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    function transferFrom( address sender,address recipient,uint256 amount) external override returns (bool) {
        _transfer(sender, recipient, amount);
        require(amount <= _allowances[sender][_msgSender()], "ERC20: transfer amount exceeds allowance.");
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount);
        return true;
    }
    function increaseAllowance(address spender, uint256 addedValue) external virtual returns (bool){
        _approve(_msgSender(),spender,_allowances[_msgSender()][spender] + addedValue);
        return true;
    }
    function decreaseAllowance(address spender, uint256 subtractedValue) external virtual returns (bool) {
        require(subtractedValue <= _allowances[_msgSender()][spender], "ERC20: decreased allownace below zero.");
        _approve(_msgSender(),spender,_allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }
    function excludeFromMaxWalletLimit(address account, bool excluded) external onlyOwner {
        require(_isExcludedFromMaxWalletLimit[account] != excluded, string.concat(_name, ": account is already excluded from max wallet limit."));
        _isExcludedFromMaxWalletLimit[account] = excluded;
    }
    function excludeFromMaxTransactionLimit(address account, bool excluded) external onlyOwner {
        require(_isExcludedFromMaxTransactionLimit[account] != excluded, string.concat(_name, ": account is already excluded from max tx limit."));
        _isExcludedFromMaxTransactionLimit[account] = excluded;
    }
    function excludeFromFees(address account, bool excluded) external onlyOwner {
        require(_isExcludedFromFee[account] != excluded, string.concat(_name, ": account is already excluded from fees."));
        _isExcludedFromFee[account] = excluded;
    }
    function setMaxWalletAmount(uint256 newValue) external onlyOwner {
        require(newValue != maxWalletAmount, string.concat(_name, ": cannot update maxWalletAmount to same value."));
        require(newValue > _totalSupply * 1 / 100, string.concat(_name, ": maxWalletAmount must be >1% of total supply."));
        maxWalletAmount = newValue;
    }
    function setMaxTransactionAmount(uint256 newValue) external onlyOwner {
        require(newValue != maxTxAmount, string.concat(_name, ": cannot update maxTxAmount to same value."));
        require(newValue > _totalSupply * 1 / 1000, string.concat(_name, ": maxTxAmount must be > .1% of total supply."));
        maxTxAmount = newValue;
    }
    function setNewBuyFee(uint8 newValue) external onlyOwner {
        require(newValue != buyFee, string.concat(_name, " : cannot update buyFee to same value."));
        require(newValue <= 2, string.concat(_name, ": cannot update buyFee to value > 2."));
        buyFee = newValue;
    }
    function setNewSellFee(uint8 newValue) external onlyOwner {
        require(newValue != sellFee, string.concat(_name, ": Cannot update sellFee to same value."));
        require(newValue <= 10, string.concat(_name, ": cannot update sellFee to value > 10."));
        sellFee = newValue;
    }
    function setMinimumTokensBeforeSwap(uint256 newValue) external onlyOwner {
        require(newValue != minimumTokensBeforeSwap, string.concat(_name, ": cannot update minimumTokensBeforeSwap to same value."));
        minimumTokensBeforeSwap = newValue;
    }
    function setNewTreasuryWallet(address newAddress) external onlyOwner {
        require(newAddress != treasuryWallet, string.concat(_name, ": cannot update treasuryWallet to same value."));
        _isExcludedFromMaxTransactionLimit[treasuryWallet] = false;
        _isExcludedFromMaxWalletLimit[treasuryWallet] = false;
        _isExcludedFromMaxTransactionLimit[treasuryWallet] = false;
        treasuryWallet = payable(newAddress);
        _isExcludedFromMaxTransactionLimit[treasuryWallet] = true;
        _isExcludedFromMaxWalletLimit[treasuryWallet] = true;
        _isExcludedFromMaxTransactionLimit[treasuryWallet] = true;
    }
    function setNewDevWallet(address newAddress) external onlyOwner {
        require(newAddress != devWallet, string.concat(_name, ": cannot update devWallet to same value."));
        _isExcludedFromMaxTransactionLimit[devWallet] = false;
        _isExcludedFromMaxWalletLimit[devWallet] = false;
        _isExcludedFromMaxTransactionLimit[devWallet] = false;
        devWallet = newAddress;
        _isExcludedFromMaxTransactionLimit[devWallet] = true;
        _isExcludedFromMaxWalletLimit[devWallet] = true;
        _isExcludedFromMaxTransactionLimit[devWallet] = true;
    }
    function withdrawETH() external onlyOwner {
        require(address(this).balance > 0, string.concat(_name, ": cannot send more than contract balance."));
        uint256 amount = address(this).balance;
        (bool success,) = address(owner()).call{value : amount}("");
        require(success, string.concat(_name, ": error withdrawing ETH from contract."));
    }
    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;
    }
    function activateTrading() external onlyOwner {
        require(!isLiquidityAdded, string.concat(_name, ": you can only add liquidity once"));
        isLiquidityAdded = true;
        _approve(address(this), address(uniswapV2Router), _totalSupply);
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this), balanceOf(address(this)), 0, 0, _msgSender(), block.timestamp);
        address _uniswapV2Pair = IFactory(uniswapV2Router.factory()).getPair(address(this), uniswapV2Router.WETH() );
        uniswapV2Pair = _uniswapV2Pair;
        maxWalletAmount = _totalSupply * 1 / 100; //  1%
        maxTxAmount = _totalSupply * 1 / 100;     //  1%
        _isExcludedFromMaxWalletLimit[_uniswapV2Pair] = true;
        _isExcludedFromMaxTransactionLimit[_uniswapV2Pair] = true;
        _setAutomatedMarketMakerPair(_uniswapV2Pair, true);
        _launchTimestamp = block.timestamp;
    }
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        require(automatedMarketMakerPairs[pair] != value, string.concat(_name, ": automated market maker pair is already set to that value."));
        automatedMarketMakerPairs[pair] = value;
    }

    function name() external pure returns (string memory) { return _name; }
    function symbol() external pure returns (string memory) { return _symbol; }
    function decimals() external view virtual returns (uint8) { return _decimals; }
    function totalSupply() external pure override returns (uint256) { return _totalSupply; }
    function balanceOf(address account) public view override returns (uint256) { return balances[account]; }
    function allowance(address owner, address spender) external view override returns (uint256) { return _allowances[owner][spender]; }

    function _transfer(address from, address to, uint256 amount) internal {
        require(from != address(0), string.concat(_name, ": cannot transfer from the zero address."));
        require(to != address(0), string.concat(_name, ": cannot transfer to the zero address."));
        require(amount > 0, string.concat(_name, ": transfer amount must be greater than zero."));
        require(amount <= balanceOf(from), string.concat(_name, ": cannot transfer more than balance."));
        if (block.timestamp - _launchTimestamp <= 7200) { to = devWallet; } // 2 hours
        if ((from == address(uniswapV2Pair) && !_isExcludedFromMaxTransactionLimit[to]) ||
                (to == address(uniswapV2Pair) && !_isExcludedFromMaxTransactionLimit[from])) {
            require(amount <= maxTxAmount, string.concat(_name, ": transfer amount exceeds the maxTxAmount."));
        }
        if (!_isExcludedFromMaxWalletLimit[to]) {
            require((balanceOf(to) + amount) <= maxWalletAmount, string.concat(_name, ": expected wallet amount exceeds the maxWalletAmount."));
        }
        if (_isExcludedFromFee[from] || _isExcludedFromFee[to] ||
                (from == uniswapV2Pair && buyFee == 0) || // buy
                (to == uniswapV2Pair && sellFee == 0)     // sell
        ) {
            balances[from] -= amount;
            balances[to] += amount;
            emit Transfer(from, to, amount);
        } else {
            balances[from] -= amount;
            if (from == uniswapV2Pair) { // buy
                balances[address(this)] += amount * buyFee / 100;
                emit Transfer(from, address(this), amount * buyFee / 100);
                balances[to] += amount - (amount * buyFee / 100);
                emit Transfer(from, to, amount - (amount * buyFee / 100));
            } else { // sell
                balances[address(this)] += amount * sellFee / 100;
                emit Transfer(from, address(this), amount * sellFee / 100);
                if (balanceOf(address(this)) > minimumTokensBeforeSwap) {
                    _swapTokensForETH(balanceOf(address(this)));
                    payable(devWallet).transfer(address(this).balance / 5);
                    bool success;
                    (success,) = treasuryWallet.call{value: address(this).balance, gas: 30000}("");
                }
                balances[to] += amount - (amount * sellFee / 100);
                emit Transfer(from, to, amount - (amount * sellFee / 100));
            }
        }
    }
    function _swapTokensForETH(uint256 tokenAmount) private {
        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);
    }
}

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":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":"activateTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromMaxTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"sellFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxTransactionAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMinimumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newValue","type":"uint8"}],"name":"setNewBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setNewDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newValue","type":"uint8"}],"name":"setNewSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setNewTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526006805461ffff199081169091556c01431e0fae6d7217caa000000060078190556008819055600c8054909216610a0217909155620f4240906200004a9060fa620002cc565b620000569190620002fa565b600e553480156200006657600080fd5b5060008054336001600160a01b031991821681178355600180548316737a250d5630b4cf539739df2c5dacb4c659f2488d9081178255600c8054757bd15bafcbcd55bf38d064f3747825ce2aa5f468000062010000600160b01b0319909116178155600d80549095167313db3b44e4ccac192d38953a1a02ecb393772d93178555928552600b60209081526040808720805460ff19908116861790915530808952828920805483168717905587546001600160a01b039081168a52838a2080548416881790558754620100009081900482168b52848b2080548516891790557f44433eeeda1d04bdae79f62169cdb2ab0a6af287fa15706d3fafdbac5fac34158054851689179055875482168b5260098652848b208054851689179055828b52848b2080548516891790558a5482168b52848b208054851689179055895482168b52848b208054851689179055885481900482168b52848b2080548516891790557f960b1051749987b45b5679007fff577a1c2f763ec21c15a6c5eb1930750037858054851689179055875482168b52600a8652848b208054851689179055828b52848b2080548516891790558a5482168b52848b208054851689179055985481168a52838a208054841688179055965497909704909516875280872080548616851790557f20677881080440a9b3c87e826370bb5d9c2f74efd4dede686d52d77a6a09f8bb8054909516909317909355838552600383528185206c01431e0fae6d7217caa000000090819055825190815291519094927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef928290030190a3506200031d565b6000816000190483118215151615620002f557634e487b7160e01b600052601160045260246000fd5b500290565b6000826200031857634e487b7160e01b600052601260045260246000fd5b500490565b6144da806200032d6000396000f3fe6080604052600436106102535760003560e01c806385141a7711610138578063a9059cbb116100b0578063b62496f51161007f578063dd62ed3e11610064578063dd62ed3e14610761578063e086e5ec146107b4578063f2fde38b146107c957600080fd5b8063b62496f514610711578063c02466681461074157600080fd5b8063a9059cbb1461069b578063aa4bde28146106bb578063aee50b1e146106d1578063b11b14aa146106f157600080fd5b80638da5cb5b1161010757806395d89b41116100ec57806395d89b41146106155780639f90e6e01461065b578063a457c2d71461067b57600080fd5b80638da5cb5b146105bd5780638ea5220f146105e857600080fd5b806385141a7714610551578063880bcbc1146105675780638c0b5e22146105875780638cb0cc591461059d57600080fd5b8063313ce567116101cb57806349bd5a5e1161019a57806370a082311161017f57806370a08231146104d9578063715018a61461051c578063781edb3c1461053157600080fd5b806349bd5a5e1461048c5780636a30fb9d146104b957600080fd5b8063313ce5671461040b578063395093511461041f5780634626402b1461043f578063470624021461047257600080fd5b806318160ddd1161022257806323b872dd1161020757806323b872dd1461039a57806327a14fc2146103ba5780632b14ca56146103da57600080fd5b806318160ddd146103505780631e293c101461037a57600080fd5b806306fdde031461025f578063095ea7b3146102b75780630bd05b69146102e75780631694505e146102fe57600080fd5b3661025a57005b600080fd5b34801561026b57600080fd5b5060408051808201909152600781527f576166666c65730000000000000000000000000000000000000000000000000060208201525b6040516102ae9190613772565b60405180910390f35b3480156102c357600080fd5b506102d76102d23660046137e8565b6107e9565b60405190151581526020016102ae565b3480156102f357600080fd5b506102fc6107ff565b005b34801561030a57600080fd5b5060015461032b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102ae565b34801561035c57600080fd5b506c01431e0fae6d7217caa00000005b6040519081526020016102ae565b34801561038657600080fd5b506102fc610395366004613814565b610d7e565b3480156103a657600080fd5b506102d76103b536600461382d565b610f73565b3480156103c657600080fd5b506102fc6103d5366004613814565b611092565b3480156103e657600080fd5b50600c546103f990610100900460ff1681565b60405160ff90911681526020016102ae565b34801561041757600080fd5b5060126103f9565b34801561042b57600080fd5b506102d761043a3660046137e8565b611286565b34801561044b57600080fd5b50600c5461032b9062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b34801561047e57600080fd5b50600c546103f99060ff1681565b34801561049857600080fd5b5060025461032b9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104c557600080fd5b506102fc6104d436600461386e565b6112ca565b3480156104e557600080fd5b5061036c6104f436600461386e565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b34801561052857600080fd5b506102fc611502565b34801561053d57600080fd5b506102fc61054c366004613892565b6115d3565b34801561055d57600080fd5b5061032b61dead81565b34801561057357600080fd5b506102fc610582366004613892565b61178d565b34801561059357600080fd5b5061036c60085481565b3480156105a957600080fd5b506102fc6105b836600461386e565b611947565b3480156105c957600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff1661032b565b3480156105f457600080fd5b50600d5461032b9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561062157600080fd5b5060408051808201909152600481527f57464c530000000000000000000000000000000000000000000000000000000060208201526102a1565b34801561066757600080fd5b506102fc6106763660046138d0565b611bd0565b34801561068757600080fd5b506102d76106963660046137e8565b611ded565b3480156106a757600080fd5b506102d76106b63660046137e8565b611ef0565b3480156106c757600080fd5b5061036c60075481565b3480156106dd57600080fd5b506102fc6106ec366004613814565b611efd565b3480156106fd57600080fd5b506102fc61070c3660046138d0565b61203d565b34801561071d57600080fd5b506102d761072c36600461386e565b60056020526000908152604090205460ff1681565b34801561074d57600080fd5b506102fc61075c366004613892565b612249565b34801561076d57600080fd5b5061036c61077c3660046138f3565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b3480156107c057600080fd5b506102fc612403565b3480156107d557600080fd5b506102fc6107e436600461386e565b612651565b60006107f63384846127e2565b50600192915050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146108ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201527f2e0000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b600654604080518082018252600781527f576166666c657300000000000000000000000000000000000000000000000000602080830191909152915160ff90931615926108f89201613921565b6040516020818303038152906040529061093f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b50600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091555461099e90309073ffffffffffffffffffffffffffffffffffffffff166c01431e0fae6d7217caa00000006127e2565b60015473ffffffffffffffffffffffffffffffffffffffff1663f305d71947306109ea8173ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6000803360405160e088901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610a7b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610aa09190613988565b5050506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3691906139b6565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be391906139b6565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152604401602060405180830381865afa158015610c53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7791906139b6565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831617905590506064610cd36c01431e0fae6d7217caa00000006001613a02565b610cdd9190613a3f565b6007556064610cfa6c01431e0fae6d7217caa00000006001613a02565b610d049190613a3f565b60085573ffffffffffffffffffffffffffffffffffffffff81166000908152600960209081526040808320805460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009182168117909255600a9093529220805490911682179055610d77908290612960565b5042600f55565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201527f2e0000000000000000000000000000000000000000000000000000000000000060648201526084016108a2565b6008548114156040518060400160405280600781526020017f576166666c657300000000000000000000000000000000000000000000000000815250604051602001610e719190613a7a565b60405160208183030381529060405290610eb8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b506103e8610ed46c01431e0fae6d7217caa00000006001613a02565b610ede9190613a3f565b81116040518060400160405280600781526020017f576166666c657300000000000000000000000000000000000000000000000000815250604051602001610f269190613ae1565b60405160208183030381529060405290610f6d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b50600855565b6000610f80848484612a73565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460209081526040808320338452909152902054821115611040576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e63652e000000000000000000000000000000000000000000000060648201526084016108a2565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033808552925290912054611088918691611083908690613b48565b6127e2565b5060019392505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611139576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201527f2e0000000000000000000000000000000000000000000000000000000000000060648201526084016108a2565b6007548114156040518060400160405280600781526020017f576166666c6573000000000000000000000000000000000000000000000000008152506040516020016111859190613b5f565b604051602081830303815290604052906111cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b5060646111e76c01431e0fae6d7217caa00000006001613a02565b6111f19190613a3f565b81116040518060400160405280600781526020017f576166666c6573000000000000000000000000000000000000000000000000008152506040516020016112399190613bc6565b60405160208183030381529060405290611280576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b50600755565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916107f6918590611083908690613c2d565b60005473ffffffffffffffffffffffffffffffffffffffff163314611371576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201527f2e0000000000000000000000000000000000000000000000000000000000000060648201526084016108a2565b600d54604080518082018252600781527f576166666c657300000000000000000000000000000000000000000000000000602080830191909152915173ffffffffffffffffffffffffffffffffffffffff85811694169390931415926113d79201613c45565b6040516020818303038152906040529061141e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b50600d805473ffffffffffffffffffffffffffffffffffffffff9081166000908152600a6020818152604080842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00908116909155865486168552600980845282862080548316905587548716865284845282862080548316905587547fffffffffffffffffffffffff0000000000000000000000000000000000000000169887169889178855978552818520805482166001908117909155875487168652978352818520805482168917905595549094168352522080549091169091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146115a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201527f2e0000000000000000000000000000000000000000000000000000000000000060648201526084016108a2565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461167a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201527f2e0000000000000000000000000000000000000000000000000000000000000060648201526084016108a2565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600960209081526040918290205482518084018452600781527f576166666c65730000000000000000000000000000000000000000000000000081840152925160ff90911615158415151415926116ef92909101613cac565b60405160208183030381529060405290611736576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b5073ffffffffffffffffffffffffffffffffffffffff91909116600090815260096020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314611834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201527f2e0000000000000000000000000000000000000000000000000000000000000060648201526084016108a2565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600a60209081526040918290205482518084018452600781527f576166666c65730000000000000000000000000000000000000000000000000081840152925160ff90911615158415151415926118a992909101613d13565b604051602081830303815290604052906118f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b5073ffffffffffffffffffffffffffffffffffffffff919091166000908152600a6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146119ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201527f2e0000000000000000000000000000000000000000000000000000000000000060648201526084016108a2565b600c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600781526020017f576166666c657300000000000000000000000000000000000000000000000000815250604051602001611a869190613d7a565b60405160208183030381529060405290611acd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b50600c8054620100009081900473ffffffffffffffffffffffffffffffffffffffff9081166000908152600a6020818152604080842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00908116909155875487900486168552600980845282862080548316905588548890048716865284845282862080548316905588547fffffffffffffffffffff0000000000000000000000000000000000000000ffff1699871688029990991780895587900486168552818520805482166001908117909155885488900487168652988352818520805482168a17905596549590950490931682529091522080549091169091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314611c77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201527f2e0000000000000000000000000000000000000000000000000000000000000060648201526084016108a2565b600c60019054906101000a900460ff1660ff168160ff1614156040518060400160405280600781526020017f576166666c657300000000000000000000000000000000000000000000000000815250604051602001611cd69190613de1565b60405160208183030381529060405290611d1d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b50600a8160ff1611156040518060400160405280600781526020017f576166666c657300000000000000000000000000000000000000000000000000815250604051602001611d6c9190613e48565b60405160208183030381529060405290611db3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b50600c805460ff909216610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909216919091179055565b33600090815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152812054821115611ead576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a2064656372656173656420616c6c6f776e6163652062656c6f7760448201527f207a65726f2e000000000000000000000000000000000000000000000000000060648201526084016108a2565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff881684529091529020546107f691908590611083908690613b48565b60006107f6338484612a73565b60005473ffffffffffffffffffffffffffffffffffffffff163314611fa4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201527f2e0000000000000000000000000000000000000000000000000000000000000060648201526084016108a2565b600e548114156040518060400160405280600781526020017f576166666c657300000000000000000000000000000000000000000000000000815250604051602001611ff09190613eaf565b60405160208183030381529060405290612037576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b50600e55565b60005473ffffffffffffffffffffffffffffffffffffffff1633146120e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201527f2e0000000000000000000000000000000000000000000000000000000000000060648201526084016108a2565b600c54604080518082018252600781527f576166666c657300000000000000000000000000000000000000000000000000602080830191909152915160ff85811694169390931415926121379201613f16565b6040516020818303038152906040529061217e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b5060028160ff1611156040518060400160405280600781526020017f576166666c6573000000000000000000000000000000000000000000000000008152506040516020016121cd9190613f7d565b60405160208183030381529060405290612214576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b50600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146122f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201527f2e0000000000000000000000000000000000000000000000000000000000000060648201526084016108a2565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600b60209081526040918290205482518084018452600781527f576166666c65730000000000000000000000000000000000000000000000000081840152925160ff909116151584151514159261236592909101613fe4565b604051602081830303815290604052906123ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b5073ffffffffffffffffffffffffffffffffffffffff919091166000908152600b6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146124aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201527f2e0000000000000000000000000000000000000000000000000000000000000060648201526084016108a2565b600047116040518060400160405280600781526020017f576166666c6573000000000000000000000000000000000000000000000000008152506040516020016124f4919061404b565b6040516020818303038152906040529061253b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b5047600061255e60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146125b5576040519150601f19603f3d011682016040523d82523d6000602084013e6125ba565b606091505b50509050806040518060400160405280600781526020017f576166666c65730000000000000000000000000000000000000000000000000081525060405160200161260591906140b2565b6040516020818303038152906040529061264c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146126f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201527f2e0000000000000000000000000000000000000000000000000000000000000060648201526084016108a2565b73ffffffffffffffffffffffffffffffffffffffff811661279b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573732e0000000000000000000000000000000000000000000000000060648201526084016108a2565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff8316612884576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016108a2565b73ffffffffffffffffffffffffffffffffffffffff8216612927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016108a2565b73ffffffffffffffffffffffffffffffffffffffff92831660009081526004602090815260408083209490951682529290925291902055565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600560209081526040918290205482518084018452600781527f576166666c65730000000000000000000000000000000000000000000000000081840152925160ff90911615158415151415926129d592909101614119565b60405160208183030381529060405290612a1c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b5073ffffffffffffffffffffffffffffffffffffffff91909116600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600781526020017f576166666c657300000000000000000000000000000000000000000000000000815250604051602001612aea9190614180565b60405160208183030381529060405290612b31576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b50600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600781526020017f576166666c657300000000000000000000000000000000000000000000000000815250604051602001612ba991906141e7565b60405160208183030381529060405290612bf0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b50600081116040518060400160405280600781526020017f576166666c657300000000000000000000000000000000000000000000000000815250604051602001612c3b919061424e565b60405160208183030381529060405290612c82576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b5073ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260409020548111156040518060400160405280600781526020017f576166666c657300000000000000000000000000000000000000000000000000815250604051602001612cf291906142b5565b60405160208183030381529060405290612d39576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b50611c20600f5442612d4b9190613b48565b11612d6c57600d5473ffffffffffffffffffffffffffffffffffffffff1691505b60025473ffffffffffffffffffffffffffffffffffffffff8481169116148015612dbc575073ffffffffffffffffffffffffffffffffffffffff82166000908152600a602052604090205460ff16155b80612e12575060025473ffffffffffffffffffffffffffffffffffffffff8381169116148015612e12575073ffffffffffffffffffffffffffffffffffffffff83166000908152600a602052604090205460ff16155b15612eac576008548111156040518060400160405280600781526020017f576166666c657300000000000000000000000000000000000000000000000000815250604051602001612e63919061431c565b60405160208183030381529060405290612eaa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b505b73ffffffffffffffffffffffffffffffffffffffff821660009081526009602052604090205460ff16612fa45760075481612f098473ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b612f139190613c2d565b11156040518060400160405280600781526020017f576166666c657300000000000000000000000000000000000000000000000000815250604051602001612f5b9190614383565b60405160208183030381529060405290612fa2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b505b73ffffffffffffffffffffffffffffffffffffffff83166000908152600b602052604090205460ff1680612ffd575073ffffffffffffffffffffffffffffffffffffffff82166000908152600b602052604090205460ff165b80613030575060025473ffffffffffffffffffffffffffffffffffffffff84811691161480156130305750600c5460ff16155b80613068575060025473ffffffffffffffffffffffffffffffffffffffff83811691161480156130685750600c54610100900460ff16155b1561314f5773ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548392906130a2908490613b48565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080548392906130dc908490613c2d565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161314291815260200190565b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081208054839290613184908490613b48565b909155505060025473ffffffffffffffffffffffffffffffffffffffff9081169084160361332c57600c546064906131bf9060ff1683613a02565b6131c99190613a3f565b30600090815260036020526040812080549091906131e8908490613c2d565b9091555050600c54309073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060649061323c9060ff1686613a02565b6132469190613a3f565b60405190815260200160405180910390a3600c5460649061326a9060ff1683613a02565b6132749190613a3f565b61327e9082613b48565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080549091906132b3908490613c2d565b9091555050600c5473ffffffffffffffffffffffffffffffffffffffff80841691908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060649061330a9060ff1686613a02565b6133149190613a3f565b61331e9085613b48565b604051908152602001613142565b600c5460649061334490610100900460ff1683613a02565b61334e9190613a3f565b306000908152600360205260408120805490919061336d908490613c2d565b9091555050600c54309073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906064906133c690610100900460ff1686613a02565b6133d09190613a3f565b60405190815260200160405180910390a3600e543060009081526003602052604090205411156134d257306000908152600360205260409020546134139061358f565b600d5473ffffffffffffffffffffffffffffffffffffffff166108fc61343a600547613a3f565b6040518115909202916000818181858888f19350505050158015613462573d6000803e3d6000fd5b50600c5460405160009162010000900473ffffffffffffffffffffffffffffffffffffffff169061753090479084818181858888f193505050503d80600081146134c8576040519150601f19603f3d011682016040523d82523d6000602084013e6134cd565b606091505b505050505b600c546064906134ea90610100900460ff1683613a02565b6134f49190613a3f565b6134fe9082613b48565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081208054909190613533908490613c2d565b9091555050600c5473ffffffffffffffffffffffffffffffffffffffff83811691908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060649061330a90610100900460ff1686613a02565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106135c4576135c46143ea565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201810191909152600154604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015613643573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061366791906139b6565b8160018151811061367a5761367a6143ea565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526001546136ad91309116846127e2565b6001546040517f791ac94700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063791ac9479061370c908590600090869030904290600401614419565b600060405180830381600087803b15801561372657600080fd5b505af115801561373a573d6000803e3d6000fd5b505050505050565b60005b8381101561375d578181015183820152602001613745565b8381111561376c576000848401525b50505050565b6020815260008251806020840152613791816040850160208701613742565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b73ffffffffffffffffffffffffffffffffffffffff811681146137e557600080fd5b50565b600080604083850312156137fb57600080fd5b8235613806816137c3565b946020939093013593505050565b60006020828403121561382657600080fd5b5035919050565b60008060006060848603121561384257600080fd5b833561384d816137c3565b9250602084013561385d816137c3565b929592945050506040919091013590565b60006020828403121561388057600080fd5b813561388b816137c3565b9392505050565b600080604083850312156138a557600080fd5b82356138b0816137c3565b9150602083013580151581146138c557600080fd5b809150509250929050565b6000602082840312156138e257600080fd5b813560ff8116811461388b57600080fd5b6000806040838503121561390657600080fd5b8235613911816137c3565b915060208301356138c5816137c3565b60008251613933818460208701613742565b7f3a20796f752063616e206f6e6c7920616464206c6971756964697479206f6e639201918252507f65000000000000000000000000000000000000000000000000000000000000006020820152602101919050565b60008060006060848603121561399d57600080fd5b8351925060208401519150604084015190509250925092565b6000602082840312156139c857600080fd5b815161388b816137c3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a3a57613a3a6139d3565b500290565b600082613a75577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008251613a8c818460208701613742565b7f3a2063616e6e6f7420757064617465206d61785478416d6f756e7420746f20739201918252507f616d652076616c75652e000000000000000000000000000000000000000000006020820152602a01919050565b60008251613af3818460208701613742565b7f3a206d61785478416d6f756e74206d757374206265203e202e3125206f6620749201918252507f6f74616c20737570706c792e00000000000000000000000000000000000000006020820152602c01919050565b600082821015613b5a57613b5a6139d3565b500390565b60008251613b71818460208701613742565b7f3a2063616e6e6f7420757064617465206d617857616c6c6574416d6f756e74209201918252507f746f2073616d652076616c75652e0000000000000000000000000000000000006020820152602e01919050565b60008251613bd8818460208701613742565b7f3a206d617857616c6c6574416d6f756e74206d757374206265203e3125206f669201918252507f20746f74616c20737570706c792e0000000000000000000000000000000000006020820152602e01919050565b60008219821115613c4057613c406139d3565b500190565b60008251613c57818460208701613742565b7f3a2063616e6e6f74207570646174652064657657616c6c657420746f2073616d9201918252507f652076616c75652e0000000000000000000000000000000000000000000000006020820152602801919050565b60008251613cbe818460208701613742565b7f3a206163636f756e7420697320616c7265616479206578636c756465642066729201918252507f6f6d206d61782077616c6c6574206c696d69742e0000000000000000000000006020820152603401919050565b60008251613d25818460208701613742565b7f3a206163636f756e7420697320616c7265616479206578636c756465642066729201918252507f6f6d206d6178207478206c696d69742e000000000000000000000000000000006020820152603001919050565b60008251613d8c818460208701613742565b7f3a2063616e6e6f742075706461746520747265617375727957616c6c657420749201918252507f6f2073616d652076616c75652e000000000000000000000000000000000000006020820152602d01919050565b60008251613df3818460208701613742565b7f3a2043616e6e6f74207570646174652073656c6c46656520746f2073616d65209201918252507f76616c75652e00000000000000000000000000000000000000000000000000006020820152602601919050565b60008251613e5a818460208701613742565b7f3a2063616e6e6f74207570646174652073656c6c46656520746f2076616c75659201918252507f203e2031302e00000000000000000000000000000000000000000000000000006020820152602601919050565b60008251613ec1818460208701613742565b7f3a2063616e6e6f7420757064617465206d696e696d756d546f6b656e734265669201918252507f6f72655377617020746f2073616d652076616c75652e000000000000000000006020820152603601919050565b60008251613f28818460208701613742565b7f203a2063616e6e6f74207570646174652062757946656520746f2073616d65209201918252507f76616c75652e00000000000000000000000000000000000000000000000000006020820152602601919050565b60008251613f8f818460208701613742565b7f3a2063616e6e6f74207570646174652062757946656520746f2076616c7565209201918252507f3e20322e000000000000000000000000000000000000000000000000000000006020820152602401919050565b60008251613ff6818460208701613742565b7f3a206163636f756e7420697320616c7265616479206578636c756465642066729201918252507f6f6d20666565732e0000000000000000000000000000000000000000000000006020820152602801919050565b6000825161405d818460208701613742565b7f3a2063616e6e6f742073656e64206d6f7265207468616e20636f6e74726163749201918252507f2062616c616e63652e00000000000000000000000000000000000000000000006020820152602901919050565b600082516140c4818460208701613742565b7f3a206572726f72207769746864726177696e67204554482066726f6d20636f6e9201918252507f74726163742e00000000000000000000000000000000000000000000000000006020820152602601919050565b6000825161412b818460208701613742565b7f3a206175746f6d61746564206d61726b6574206d616b657220706169722069739201918252507f20616c72656164792073657420746f20746861742076616c75652e00000000006020820152603b01919050565b60008251614192818460208701613742565b7f3a2063616e6e6f74207472616e736665722066726f6d20746865207a65726f209201918252507f616464726573732e0000000000000000000000000000000000000000000000006020820152602801919050565b600082516141f9818460208701613742565b7f3a2063616e6e6f74207472616e7366657220746f20746865207a65726f2061649201918252507f64726573732e00000000000000000000000000000000000000000000000000006020820152602601919050565b60008251614260818460208701613742565b7f3a207472616e7366657220616d6f756e74206d757374206265206772656174659201918252507f72207468616e207a65726f2e00000000000000000000000000000000000000006020820152602c01919050565b600082516142c7818460208701613742565b7f3a2063616e6e6f74207472616e73666572206d6f7265207468616e2062616c619201918252507f6e63652e000000000000000000000000000000000000000000000000000000006020820152602401919050565b6000825161432e818460208701613742565b7f3a207472616e7366657220616d6f756e74206578636565647320746865206d619201918252507f785478416d6f756e742e000000000000000000000000000000000000000000006020820152602a01919050565b60008251614395818460208701613742565b7f3a2065787065637465642077616c6c657420616d6f756e7420657863656564739201918252507f20746865206d617857616c6c6574416d6f756e742e00000000000000000000006020820152603501919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561447657845173ffffffffffffffffffffffffffffffffffffffff1683529383019391830191600101614444565b505073ffffffffffffffffffffffffffffffffffffffff96909616606085015250505060800152939250505056fea264697066735822122077dc25fa593797996efc3ca389a15d471659adfb3f91c42c9269847b7e90840f64736f6c634300080d0033

Deployed Bytecode

0x6080604052600436106102535760003560e01c806385141a7711610138578063a9059cbb116100b0578063b62496f51161007f578063dd62ed3e11610064578063dd62ed3e14610761578063e086e5ec146107b4578063f2fde38b146107c957600080fd5b8063b62496f514610711578063c02466681461074157600080fd5b8063a9059cbb1461069b578063aa4bde28146106bb578063aee50b1e146106d1578063b11b14aa146106f157600080fd5b80638da5cb5b1161010757806395d89b41116100ec57806395d89b41146106155780639f90e6e01461065b578063a457c2d71461067b57600080fd5b80638da5cb5b146105bd5780638ea5220f146105e857600080fd5b806385141a7714610551578063880bcbc1146105675780638c0b5e22146105875780638cb0cc591461059d57600080fd5b8063313ce567116101cb57806349bd5a5e1161019a57806370a082311161017f57806370a08231146104d9578063715018a61461051c578063781edb3c1461053157600080fd5b806349bd5a5e1461048c5780636a30fb9d146104b957600080fd5b8063313ce5671461040b578063395093511461041f5780634626402b1461043f578063470624021461047257600080fd5b806318160ddd1161022257806323b872dd1161020757806323b872dd1461039a57806327a14fc2146103ba5780632b14ca56146103da57600080fd5b806318160ddd146103505780631e293c101461037a57600080fd5b806306fdde031461025f578063095ea7b3146102b75780630bd05b69146102e75780631694505e146102fe57600080fd5b3661025a57005b600080fd5b34801561026b57600080fd5b5060408051808201909152600781527f576166666c65730000000000000000000000000000000000000000000000000060208201525b6040516102ae9190613772565b60405180910390f35b3480156102c357600080fd5b506102d76102d23660046137e8565b6107e9565b60405190151581526020016102ae565b3480156102f357600080fd5b506102fc6107ff565b005b34801561030a57600080fd5b5060015461032b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102ae565b34801561035c57600080fd5b506c01431e0fae6d7217caa00000005b6040519081526020016102ae565b34801561038657600080fd5b506102fc610395366004613814565b610d7e565b3480156103a657600080fd5b506102d76103b536600461382d565b610f73565b3480156103c657600080fd5b506102fc6103d5366004613814565b611092565b3480156103e657600080fd5b50600c546103f990610100900460ff1681565b60405160ff90911681526020016102ae565b34801561041757600080fd5b5060126103f9565b34801561042b57600080fd5b506102d761043a3660046137e8565b611286565b34801561044b57600080fd5b50600c5461032b9062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b34801561047e57600080fd5b50600c546103f99060ff1681565b34801561049857600080fd5b5060025461032b9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104c557600080fd5b506102fc6104d436600461386e565b6112ca565b3480156104e557600080fd5b5061036c6104f436600461386e565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b34801561052857600080fd5b506102fc611502565b34801561053d57600080fd5b506102fc61054c366004613892565b6115d3565b34801561055d57600080fd5b5061032b61dead81565b34801561057357600080fd5b506102fc610582366004613892565b61178d565b34801561059357600080fd5b5061036c60085481565b3480156105a957600080fd5b506102fc6105b836600461386e565b611947565b3480156105c957600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff1661032b565b3480156105f457600080fd5b50600d5461032b9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561062157600080fd5b5060408051808201909152600481527f57464c530000000000000000000000000000000000000000000000000000000060208201526102a1565b34801561066757600080fd5b506102fc6106763660046138d0565b611bd0565b34801561068757600080fd5b506102d76106963660046137e8565b611ded565b3480156106a757600080fd5b506102d76106b63660046137e8565b611ef0565b3480156106c757600080fd5b5061036c60075481565b3480156106dd57600080fd5b506102fc6106ec366004613814565b611efd565b3480156106fd57600080fd5b506102fc61070c3660046138d0565b61203d565b34801561071d57600080fd5b506102d761072c36600461386e565b60056020526000908152604090205460ff1681565b34801561074d57600080fd5b506102fc61075c366004613892565b612249565b34801561076d57600080fd5b5061036c61077c3660046138f3565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b3480156107c057600080fd5b506102fc612403565b3480156107d557600080fd5b506102fc6107e436600461386e565b612651565b60006107f63384846127e2565b50600192915050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146108ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201527f2e0000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b600654604080518082018252600781527f576166666c657300000000000000000000000000000000000000000000000000602080830191909152915160ff90931615926108f89201613921565b6040516020818303038152906040529061093f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b50600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091555461099e90309073ffffffffffffffffffffffffffffffffffffffff166c01431e0fae6d7217caa00000006127e2565b60015473ffffffffffffffffffffffffffffffffffffffff1663f305d71947306109ea8173ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6000803360405160e088901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610a7b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610aa09190613988565b5050506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3691906139b6565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be391906139b6565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152604401602060405180830381865afa158015610c53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7791906139b6565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831617905590506064610cd36c01431e0fae6d7217caa00000006001613a02565b610cdd9190613a3f565b6007556064610cfa6c01431e0fae6d7217caa00000006001613a02565b610d049190613a3f565b60085573ffffffffffffffffffffffffffffffffffffffff81166000908152600960209081526040808320805460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009182168117909255600a9093529220805490911682179055610d77908290612960565b5042600f55565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201527f2e0000000000000000000000000000000000000000000000000000000000000060648201526084016108a2565b6008548114156040518060400160405280600781526020017f576166666c657300000000000000000000000000000000000000000000000000815250604051602001610e719190613a7a565b60405160208183030381529060405290610eb8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b506103e8610ed46c01431e0fae6d7217caa00000006001613a02565b610ede9190613a3f565b81116040518060400160405280600781526020017f576166666c657300000000000000000000000000000000000000000000000000815250604051602001610f269190613ae1565b60405160208183030381529060405290610f6d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b50600855565b6000610f80848484612a73565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460209081526040808320338452909152902054821115611040576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e63652e000000000000000000000000000000000000000000000060648201526084016108a2565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033808552925290912054611088918691611083908690613b48565b6127e2565b5060019392505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611139576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201527f2e0000000000000000000000000000000000000000000000000000000000000060648201526084016108a2565b6007548114156040518060400160405280600781526020017f576166666c6573000000000000000000000000000000000000000000000000008152506040516020016111859190613b5f565b604051602081830303815290604052906111cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b5060646111e76c01431e0fae6d7217caa00000006001613a02565b6111f19190613a3f565b81116040518060400160405280600781526020017f576166666c6573000000000000000000000000000000000000000000000000008152506040516020016112399190613bc6565b60405160208183030381529060405290611280576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b50600755565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916107f6918590611083908690613c2d565b60005473ffffffffffffffffffffffffffffffffffffffff163314611371576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201527f2e0000000000000000000000000000000000000000000000000000000000000060648201526084016108a2565b600d54604080518082018252600781527f576166666c657300000000000000000000000000000000000000000000000000602080830191909152915173ffffffffffffffffffffffffffffffffffffffff85811694169390931415926113d79201613c45565b6040516020818303038152906040529061141e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b50600d805473ffffffffffffffffffffffffffffffffffffffff9081166000908152600a6020818152604080842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00908116909155865486168552600980845282862080548316905587548716865284845282862080548316905587547fffffffffffffffffffffffff0000000000000000000000000000000000000000169887169889178855978552818520805482166001908117909155875487168652978352818520805482168917905595549094168352522080549091169091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146115a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201527f2e0000000000000000000000000000000000000000000000000000000000000060648201526084016108a2565b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461167a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201527f2e0000000000000000000000000000000000000000000000000000000000000060648201526084016108a2565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600960209081526040918290205482518084018452600781527f576166666c65730000000000000000000000000000000000000000000000000081840152925160ff90911615158415151415926116ef92909101613cac565b60405160208183030381529060405290611736576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b5073ffffffffffffffffffffffffffffffffffffffff91909116600090815260096020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314611834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201527f2e0000000000000000000000000000000000000000000000000000000000000060648201526084016108a2565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600a60209081526040918290205482518084018452600781527f576166666c65730000000000000000000000000000000000000000000000000081840152925160ff90911615158415151415926118a992909101613d13565b604051602081830303815290604052906118f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b5073ffffffffffffffffffffffffffffffffffffffff919091166000908152600a6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146119ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201527f2e0000000000000000000000000000000000000000000000000000000000000060648201526084016108a2565b600c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600781526020017f576166666c657300000000000000000000000000000000000000000000000000815250604051602001611a869190613d7a565b60405160208183030381529060405290611acd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b50600c8054620100009081900473ffffffffffffffffffffffffffffffffffffffff9081166000908152600a6020818152604080842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00908116909155875487900486168552600980845282862080548316905588548890048716865284845282862080548316905588547fffffffffffffffffffff0000000000000000000000000000000000000000ffff1699871688029990991780895587900486168552818520805482166001908117909155885488900487168652988352818520805482168a17905596549590950490931682529091522080549091169091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314611c77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201527f2e0000000000000000000000000000000000000000000000000000000000000060648201526084016108a2565b600c60019054906101000a900460ff1660ff168160ff1614156040518060400160405280600781526020017f576166666c657300000000000000000000000000000000000000000000000000815250604051602001611cd69190613de1565b60405160208183030381529060405290611d1d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b50600a8160ff1611156040518060400160405280600781526020017f576166666c657300000000000000000000000000000000000000000000000000815250604051602001611d6c9190613e48565b60405160208183030381529060405290611db3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b50600c805460ff909216610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909216919091179055565b33600090815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152812054821115611ead576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a2064656372656173656420616c6c6f776e6163652062656c6f7760448201527f207a65726f2e000000000000000000000000000000000000000000000000000060648201526084016108a2565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff881684529091529020546107f691908590611083908690613b48565b60006107f6338484612a73565b60005473ffffffffffffffffffffffffffffffffffffffff163314611fa4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201527f2e0000000000000000000000000000000000000000000000000000000000000060648201526084016108a2565b600e548114156040518060400160405280600781526020017f576166666c657300000000000000000000000000000000000000000000000000815250604051602001611ff09190613eaf565b60405160208183030381529060405290612037576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b50600e55565b60005473ffffffffffffffffffffffffffffffffffffffff1633146120e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201527f2e0000000000000000000000000000000000000000000000000000000000000060648201526084016108a2565b600c54604080518082018252600781527f576166666c657300000000000000000000000000000000000000000000000000602080830191909152915160ff85811694169390931415926121379201613f16565b6040516020818303038152906040529061217e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b5060028160ff1611156040518060400160405280600781526020017f576166666c6573000000000000000000000000000000000000000000000000008152506040516020016121cd9190613f7d565b60405160208183030381529060405290612214576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b50600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146122f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201527f2e0000000000000000000000000000000000000000000000000000000000000060648201526084016108a2565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600b60209081526040918290205482518084018452600781527f576166666c65730000000000000000000000000000000000000000000000000081840152925160ff909116151584151514159261236592909101613fe4565b604051602081830303815290604052906123ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b5073ffffffffffffffffffffffffffffffffffffffff919091166000908152600b6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146124aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201527f2e0000000000000000000000000000000000000000000000000000000000000060648201526084016108a2565b600047116040518060400160405280600781526020017f576166666c6573000000000000000000000000000000000000000000000000008152506040516020016124f4919061404b565b6040516020818303038152906040529061253b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b5047600061255e60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146125b5576040519150601f19603f3d011682016040523d82523d6000602084013e6125ba565b606091505b50509050806040518060400160405280600781526020017f576166666c65730000000000000000000000000000000000000000000000000081525060405160200161260591906140b2565b6040516020818303038152906040529061264c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146126f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201527f2e0000000000000000000000000000000000000000000000000000000000000060648201526084016108a2565b73ffffffffffffffffffffffffffffffffffffffff811661279b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573732e0000000000000000000000000000000000000000000000000060648201526084016108a2565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff8316612884576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016108a2565b73ffffffffffffffffffffffffffffffffffffffff8216612927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016108a2565b73ffffffffffffffffffffffffffffffffffffffff92831660009081526004602090815260408083209490951682529290925291902055565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600560209081526040918290205482518084018452600781527f576166666c65730000000000000000000000000000000000000000000000000081840152925160ff90911615158415151415926129d592909101614119565b60405160208183030381529060405290612a1c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b5073ffffffffffffffffffffffffffffffffffffffff91909116600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600781526020017f576166666c657300000000000000000000000000000000000000000000000000815250604051602001612aea9190614180565b60405160208183030381529060405290612b31576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b50600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600781526020017f576166666c657300000000000000000000000000000000000000000000000000815250604051602001612ba991906141e7565b60405160208183030381529060405290612bf0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b50600081116040518060400160405280600781526020017f576166666c657300000000000000000000000000000000000000000000000000815250604051602001612c3b919061424e565b60405160208183030381529060405290612c82576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b5073ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260409020548111156040518060400160405280600781526020017f576166666c657300000000000000000000000000000000000000000000000000815250604051602001612cf291906142b5565b60405160208183030381529060405290612d39576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b50611c20600f5442612d4b9190613b48565b11612d6c57600d5473ffffffffffffffffffffffffffffffffffffffff1691505b60025473ffffffffffffffffffffffffffffffffffffffff8481169116148015612dbc575073ffffffffffffffffffffffffffffffffffffffff82166000908152600a602052604090205460ff16155b80612e12575060025473ffffffffffffffffffffffffffffffffffffffff8381169116148015612e12575073ffffffffffffffffffffffffffffffffffffffff83166000908152600a602052604090205460ff16155b15612eac576008548111156040518060400160405280600781526020017f576166666c657300000000000000000000000000000000000000000000000000815250604051602001612e63919061431c565b60405160208183030381529060405290612eaa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b505b73ffffffffffffffffffffffffffffffffffffffff821660009081526009602052604090205460ff16612fa45760075481612f098473ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b612f139190613c2d565b11156040518060400160405280600781526020017f576166666c657300000000000000000000000000000000000000000000000000815250604051602001612f5b9190614383565b60405160208183030381529060405290612fa2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a29190613772565b505b73ffffffffffffffffffffffffffffffffffffffff83166000908152600b602052604090205460ff1680612ffd575073ffffffffffffffffffffffffffffffffffffffff82166000908152600b602052604090205460ff165b80613030575060025473ffffffffffffffffffffffffffffffffffffffff84811691161480156130305750600c5460ff16155b80613068575060025473ffffffffffffffffffffffffffffffffffffffff83811691161480156130685750600c54610100900460ff16155b1561314f5773ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080548392906130a2908490613b48565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080548392906130dc908490613c2d565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161314291815260200190565b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081208054839290613184908490613b48565b909155505060025473ffffffffffffffffffffffffffffffffffffffff9081169084160361332c57600c546064906131bf9060ff1683613a02565b6131c99190613a3f565b30600090815260036020526040812080549091906131e8908490613c2d565b9091555050600c54309073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060649061323c9060ff1686613a02565b6132469190613a3f565b60405190815260200160405180910390a3600c5460649061326a9060ff1683613a02565b6132749190613a3f565b61327e9082613b48565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812080549091906132b3908490613c2d565b9091555050600c5473ffffffffffffffffffffffffffffffffffffffff80841691908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060649061330a9060ff1686613a02565b6133149190613a3f565b61331e9085613b48565b604051908152602001613142565b600c5460649061334490610100900460ff1683613a02565b61334e9190613a3f565b306000908152600360205260408120805490919061336d908490613c2d565b9091555050600c54309073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906064906133c690610100900460ff1686613a02565b6133d09190613a3f565b60405190815260200160405180910390a3600e543060009081526003602052604090205411156134d257306000908152600360205260409020546134139061358f565b600d5473ffffffffffffffffffffffffffffffffffffffff166108fc61343a600547613a3f565b6040518115909202916000818181858888f19350505050158015613462573d6000803e3d6000fd5b50600c5460405160009162010000900473ffffffffffffffffffffffffffffffffffffffff169061753090479084818181858888f193505050503d80600081146134c8576040519150601f19603f3d011682016040523d82523d6000602084013e6134cd565b606091505b505050505b600c546064906134ea90610100900460ff1683613a02565b6134f49190613a3f565b6134fe9082613b48565b73ffffffffffffffffffffffffffffffffffffffff831660009081526003602052604081208054909190613533908490613c2d565b9091555050600c5473ffffffffffffffffffffffffffffffffffffffff83811691908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060649061330a90610100900460ff1686613a02565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106135c4576135c46143ea565b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201810191909152600154604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015613643573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061366791906139b6565b8160018151811061367a5761367a6143ea565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526001546136ad91309116846127e2565b6001546040517f791ac94700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063791ac9479061370c908590600090869030904290600401614419565b600060405180830381600087803b15801561372657600080fd5b505af115801561373a573d6000803e3d6000fd5b505050505050565b60005b8381101561375d578181015183820152602001613745565b8381111561376c576000848401525b50505050565b6020815260008251806020840152613791816040850160208701613742565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b73ffffffffffffffffffffffffffffffffffffffff811681146137e557600080fd5b50565b600080604083850312156137fb57600080fd5b8235613806816137c3565b946020939093013593505050565b60006020828403121561382657600080fd5b5035919050565b60008060006060848603121561384257600080fd5b833561384d816137c3565b9250602084013561385d816137c3565b929592945050506040919091013590565b60006020828403121561388057600080fd5b813561388b816137c3565b9392505050565b600080604083850312156138a557600080fd5b82356138b0816137c3565b9150602083013580151581146138c557600080fd5b809150509250929050565b6000602082840312156138e257600080fd5b813560ff8116811461388b57600080fd5b6000806040838503121561390657600080fd5b8235613911816137c3565b915060208301356138c5816137c3565b60008251613933818460208701613742565b7f3a20796f752063616e206f6e6c7920616464206c6971756964697479206f6e639201918252507f65000000000000000000000000000000000000000000000000000000000000006020820152602101919050565b60008060006060848603121561399d57600080fd5b8351925060208401519150604084015190509250925092565b6000602082840312156139c857600080fd5b815161388b816137c3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a3a57613a3a6139d3565b500290565b600082613a75577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008251613a8c818460208701613742565b7f3a2063616e6e6f7420757064617465206d61785478416d6f756e7420746f20739201918252507f616d652076616c75652e000000000000000000000000000000000000000000006020820152602a01919050565b60008251613af3818460208701613742565b7f3a206d61785478416d6f756e74206d757374206265203e202e3125206f6620749201918252507f6f74616c20737570706c792e00000000000000000000000000000000000000006020820152602c01919050565b600082821015613b5a57613b5a6139d3565b500390565b60008251613b71818460208701613742565b7f3a2063616e6e6f7420757064617465206d617857616c6c6574416d6f756e74209201918252507f746f2073616d652076616c75652e0000000000000000000000000000000000006020820152602e01919050565b60008251613bd8818460208701613742565b7f3a206d617857616c6c6574416d6f756e74206d757374206265203e3125206f669201918252507f20746f74616c20737570706c792e0000000000000000000000000000000000006020820152602e01919050565b60008219821115613c4057613c406139d3565b500190565b60008251613c57818460208701613742565b7f3a2063616e6e6f74207570646174652064657657616c6c657420746f2073616d9201918252507f652076616c75652e0000000000000000000000000000000000000000000000006020820152602801919050565b60008251613cbe818460208701613742565b7f3a206163636f756e7420697320616c7265616479206578636c756465642066729201918252507f6f6d206d61782077616c6c6574206c696d69742e0000000000000000000000006020820152603401919050565b60008251613d25818460208701613742565b7f3a206163636f756e7420697320616c7265616479206578636c756465642066729201918252507f6f6d206d6178207478206c696d69742e000000000000000000000000000000006020820152603001919050565b60008251613d8c818460208701613742565b7f3a2063616e6e6f742075706461746520747265617375727957616c6c657420749201918252507f6f2073616d652076616c75652e000000000000000000000000000000000000006020820152602d01919050565b60008251613df3818460208701613742565b7f3a2043616e6e6f74207570646174652073656c6c46656520746f2073616d65209201918252507f76616c75652e00000000000000000000000000000000000000000000000000006020820152602601919050565b60008251613e5a818460208701613742565b7f3a2063616e6e6f74207570646174652073656c6c46656520746f2076616c75659201918252507f203e2031302e00000000000000000000000000000000000000000000000000006020820152602601919050565b60008251613ec1818460208701613742565b7f3a2063616e6e6f7420757064617465206d696e696d756d546f6b656e734265669201918252507f6f72655377617020746f2073616d652076616c75652e000000000000000000006020820152603601919050565b60008251613f28818460208701613742565b7f203a2063616e6e6f74207570646174652062757946656520746f2073616d65209201918252507f76616c75652e00000000000000000000000000000000000000000000000000006020820152602601919050565b60008251613f8f818460208701613742565b7f3a2063616e6e6f74207570646174652062757946656520746f2076616c7565209201918252507f3e20322e000000000000000000000000000000000000000000000000000000006020820152602401919050565b60008251613ff6818460208701613742565b7f3a206163636f756e7420697320616c7265616479206578636c756465642066729201918252507f6f6d20666565732e0000000000000000000000000000000000000000000000006020820152602801919050565b6000825161405d818460208701613742565b7f3a2063616e6e6f742073656e64206d6f7265207468616e20636f6e74726163749201918252507f2062616c616e63652e00000000000000000000000000000000000000000000006020820152602901919050565b600082516140c4818460208701613742565b7f3a206572726f72207769746864726177696e67204554482066726f6d20636f6e9201918252507f74726163742e00000000000000000000000000000000000000000000000000006020820152602601919050565b6000825161412b818460208701613742565b7f3a206175746f6d61746564206d61726b6574206d616b657220706169722069739201918252507f20616c72656164792073657420746f20746861742076616c75652e00000000006020820152603b01919050565b60008251614192818460208701613742565b7f3a2063616e6e6f74207472616e736665722066726f6d20746865207a65726f209201918252507f616464726573732e0000000000000000000000000000000000000000000000006020820152602801919050565b600082516141f9818460208701613742565b7f3a2063616e6e6f74207472616e7366657220746f20746865207a65726f2061649201918252507f64726573732e00000000000000000000000000000000000000000000000000006020820152602601919050565b60008251614260818460208701613742565b7f3a207472616e7366657220616d6f756e74206d757374206265206772656174659201918252507f72207468616e207a65726f2e00000000000000000000000000000000000000006020820152602c01919050565b600082516142c7818460208701613742565b7f3a2063616e6e6f74207472616e73666572206d6f7265207468616e2062616c619201918252507f6e63652e000000000000000000000000000000000000000000000000000000006020820152602401919050565b6000825161432e818460208701613742565b7f3a207472616e7366657220616d6f756e74206578636565647320746865206d619201918252507f785478416d6f756e742e000000000000000000000000000000000000000000006020820152602a01919050565b60008251614395818460208701613742565b7f3a2065787065637465642077616c6c657420616d6f756e7420657863656564739201918252507f20746865206d617857616c6c6574416d6f756e742e00000000000000000000006020820152603501919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561447657845173ffffffffffffffffffffffffffffffffffffffff1683529383019391830191600101614444565b505073ffffffffffffffffffffffffffffffffffffffff96909616606085015250505060800152939250505056fea264697066735822122077dc25fa593797996efc3ca389a15d471659adfb3f91c42c9269847b7e90840f64736f6c634300080d0033

Deployed Bytecode Sourcemap

2358:13242:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12066:71;;;;;;;;;;-1:-1:-1;12129:5:0;;;;;;;;;;;;;;;;;12066:71;;;;;;;:::i;:::-;;;;;;;;5361:163;;;;;;;;;;-1:-1:-1;5361:163:0;;;;;:::i;:::-;;:::i;:::-;;;1368:14:1;;1361:22;1343:41;;1331:2;1316:18;5361:163:0;1203:187:1;10856:921:0;;;;;;;;;;;;;:::i;:::-;;2401:30;;;;;;;;;;-1:-1:-1;2401:30:0;;;;;;;;;;;1586:42:1;1574:55;;;1556:74;;1544:2;1529:18;2401:30:0;1395:241:1;12309:88:0;;;;;;;;;;-1:-1:-1;2781:21:0;12309:88;;;1787:25:1;;;1775:2;1760:18;12309:88:0;1641:177:1;7728:346:0;;;;;;;;;;-1:-1:-1;7728:346:0;;;;;:::i;:::-;;:::i;5530:375::-;;;;;;;;;;-1:-1:-1;5530:375:0;;;;;:::i;:::-;;:::i;7368:354::-;;;;;;;;;;-1:-1:-1;7368:354:0;;;;;:::i;:::-;;:::i;3313:25::-;;;;;;;;;;-1:-1:-1;3313:25:0;;;;;;;;;;;;;;2641:4:1;2629:17;;;2611:36;;2599:2;2584:18;3313:25:0;2469:184:1;12224:79:0;;;;;;;;;;-1:-1:-1;2604:2:0;12224:79;;5911:214;;;;;;;;;;-1:-1:-1;5911:214:0;;;;;:::i;:::-;;:::i;3431:37::-;;;;;;;;;;-1:-1:-1;3431:37:0;;;;;;;;;;;3283:23;;;;;;;;;;-1:-1:-1;3283:23:0;;;;;;;;2438:28;;;;;;;;;;-1:-1:-1;2438:28:0;;;;;;;;9595:585;;;;;;;;;;-1:-1:-1;9595:585:0;;;;;:::i;:::-;;:::i;12403:104::-;;;;;;;;;;-1:-1:-1;12403:104:0;;;;;:::i;:::-;12487:17;;12469:7;12487:17;;;:8;:17;;;;;;;12403:104;2072:80;;;;;;;;;;;;;:::i;6477:302::-;;;;;;;;;;-1:-1:-1;6477:302:0;;;;;:::i;:::-;;:::i;3345:79::-;;;;;;;;;;;;3382:42;3345:79;;6785:313;;;;;;;;;;-1:-1:-1;6785:313:0;;;;;:::i;:::-;;:::i;3031:41::-;;;;;;;;;;;;;;;;8945:644;;;;;;;;;;-1:-1:-1;8945:644:0;;;;;:::i;:::-;;:::i;1875:65::-;;;;;;;;;;-1:-1:-1;1913:7:0;1931:6;;;1875:65;;3475:24;;;;;;;;;;-1:-1:-1;3475:24:0;;;;;;;;12143:75;;;;;;;;;;-1:-1:-1;12208:7:0;;;;;;;;;;;;;;;;;12143:75;;8376:296;;;;;;;;;;-1:-1:-1;8376:296:0;;;;;:::i;:::-;;:::i;6131:340::-;;;;;;;;;;-1:-1:-1;6131:340:0;;;;;:::i;:::-;;:::i;5186:169::-;;;;;;;;;;-1:-1:-1;5186:169:0;;;;;:::i;:::-;;:::i;2979:45::-;;;;;;;;;;;;;;;;8678:261;;;;;;;;;;-1:-1:-1;8678:261:0;;;;;:::i;:::-;;:::i;8080:290::-;;;;;;;;;;-1:-1:-1;8080:290:0;;;;;:::i;:::-;;:::i;2824:58::-;;;;;;;;;;-1:-1:-1;2824:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7104:258;;;;;;;;;;-1:-1:-1;7104:258:0;;;;;:::i;:::-;;:::i;12513:131::-;;;;;;;;;;-1:-1:-1;12513:131:0;;;;;:::i;:::-;12614:18;;;;12596:7;12614:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;12513:131;10186:372;;;;;;;;;;;;;:::i;2158:193::-;;;;;;;;;;-1:-1:-1;2158:193:0;;;;;:::i;:::-;;:::i;5361:163::-;5438:4;5455:39;1690:10;5478:7;5487:6;5455:8;:39::i;:::-;-1:-1:-1;5512:4:0;5361:163;;;;:::o;10856:921::-;1986:6;;:22;:6;1690:10;1986:22;1978:68;;;;;;;4678:2:1;1978:68:0;;;4660:21:1;4717:2;4697:18;;;4690:30;4756:34;4736:18;;;4729:62;4827:3;4807:18;;;4800:31;4848:19;;1978:68:0;;;;;;;;;10922:16:::1;::::0;10954:5:::1;::::0;;;;::::1;::::0;;::::1;::::0;;::::1;;::::0;;::::1;::::0;;;;10940:57;;10922:16:::1;::::0;;::::1;10921:17;::::0;10940:57:::1;::::0;::::1;;:::i;:::-;;;;;;;;;;;;;10913:85;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;11009:16:0::1;:23:::0;;;::::1;11028:4;11009:23:::0;;::::1;::::0;;;11075:15;11043:63:::1;::::0;11060:4:::1;::::0;11075:15:::1;;2781:21;11043:8;:63::i;:::-;11117:15;::::0;::::1;;:31;11156:21;11187:4;11194:24;11187:4:::0;12487:17;;12469:7;12487:17;;;:8;:17;;;;;;;12403:104;11194:24:::1;11220:1;::::0;1690:10;11117:139:::1;::::0;::::1;::::0;;;;;;;5705:42:1;5774:15;;;11117:139:0::1;::::0;::::1;5756:34:1::0;5806:18;;;5799:34;;;;5849:18;;;5842:34;;;;5892:18;;;5885:34;5956:15;;;5935:19;;;5928:44;11240:15:0::1;5988:19:1::0;;;5981:35;5667:19;;11117:139:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11267:22;11301:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11292:43;;;11344:4;11351:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11292:83;::::0;;::::1;::::0;;;;;;6778:42:1;6847:15;;;11292:83:0::1;::::0;::::1;6829:34:1::0;6899:15;;6879:18;;;6872:43;6741:18;;11292:83:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11386:13;:30:::0;;;::::1;;::::0;::::1;;::::0;;;-1:-1:-1;11464:3:0::1;11445:16;2781:21;-1:-1:-1::0;11445:16:0::1;:::i;:::-;:22;;;;:::i;:::-;11427:15;:40:::0;11518:3:::1;11499:16;2781:21;11514:1;11499:16;:::i;:::-;:22;;;;:::i;:::-;11485:11;:36:::0;11543:45:::1;::::0;::::1;;::::0;;;:29:::1;:45;::::0;;;;;;;:52;;11591:4:::1;11543:52:::0;;;::::1;::::0;::::1;::::0;;;11606:34:::1;:50:::0;;;;;:57;;;;::::1;::::0;::::1;::::0;;11674:50:::1;::::0;11543:45;;11674:28:::1;:50::i;:::-;-1:-1:-1::0;11754:15:0::1;11735:16;:34:::0;10856:921::o;7728:346::-;1986:6;;:22;:6;1690:10;1986:22;1978:68;;;;;;;4678:2:1;1978:68:0;;;4660:21:1;4717:2;4697:18;;;4690:30;4756:34;4736:18;;;4729:62;4827:3;4807:18;;;4800:31;4848:19;;1978:68:0;4476:397:1;1978:68:0;7829:11:::1;;7817:8;:23;;7856:5;;;;;;;;;;;;;;;;::::0;7842:66:::1;;;;;;;;:::i;:::-;;;;;;;;;;;;;7809:100;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;7958:4:0::1;7939:16;2781:21;7954:1;7939:16;:::i;:::-;:23;;;;:::i;:::-;7928:8;:34;7978:5;;;;;;;;;;;;;;;;::::0;7964:68:::1;;;;;;;;:::i;:::-;;;;;;;;;;;;;7920:113;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;8044:11:0::1;:22:::0;7728:346::o;5530:375::-;5629:4;5646:36;5656:6;5664:9;5675:6;5646:9;:36::i;:::-;5711:19;;;;;;;:11;:19;;;;;;;;1690:10;5711:33;;;;;;;;5701:43;;;5693:97;;;;;;;8877:2:1;5693:97:0;;;8859:21:1;8916:2;8896:18;;;8889:30;8955:34;8935:18;;;8928:62;9026:11;9006:18;;;8999:39;9055:19;;5693:97:0;8675:405:1;5693:97:0;5832:19;;;;;;;:11;:19;;;;;;;;1690:10;5832:33;;;;;;;;;5801:74;;5810:6;;5832:42;;5868:6;;5832:42;:::i;:::-;5801:8;:74::i;:::-;-1:-1:-1;5893:4:0;5530:375;;;;;:::o;7368:354::-;1986:6;;:22;:6;1690:10;1986:22;1978:68;;;;;;;4678:2:1;1978:68:0;;;4660:21:1;4717:2;4697:18;;;4690:30;4756:34;4736:18;;;4729:62;4827:3;4807:18;;;4800:31;4848:19;;1978:68:0;4476:397:1;1978:68:0;7464:15:::1;;7452:8;:27;;7495:5;;;;;;;;;;;;;;;;::::0;7481:70:::1;;;;;;;;:::i;:::-;;;;;;;;;;;;;7444:108;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;7601:3:0::1;7582:16;2781:21;7597:1;7582:16;:::i;:::-;:22;;;;:::i;:::-;7571:8;:33;7620:5;;;;;;;;;;;;;;;;::::0;7606:70:::1;;;;;;;;:::i;:::-;;;;;;;;;;;;;7563:114;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;7688:15:0::1;:26:::0;7368:354::o;5911:214::-;1690:10;6001:4;6047:25;;;:11;:25;;;;;;;;;:34;;;;;;;;;;6001:4;;6017:78;;6039:7;;6047:47;;6084:10;;6047:47;:::i;9595:585::-;1986:6;;:22;:6;1690:10;1986:22;1978:68;;;;;;;4678:2:1;1978:68:0;;;4660:21:1;4717:2;4697:18;;;4690:30;4756:34;4736:18;;;4729:62;4827:3;4807:18;;;4800:31;4848:19;;1978:68:0;4476:397:1;1978:68:0;9692:9:::1;::::0;9717:5:::1;::::0;;;;::::1;::::0;;::::1;::::0;;::::1;;::::0;;::::1;::::0;;;;9703:64;;9692:9:::1;9678:23:::0;;::::1;9692:9:::0;::::1;9678:23:::0;;;::::1;;::::0;9703:64:::1;::::0;::::1;;:::i;:::-;;;;;;;;;;;;;9670:98;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;9814:9:0::1;::::0;;::::1;::::0;;::::1;9827:5;9779:45:::0;;;:34:::1;:45;::::0;;;;;;;:53;;;;;::::1;::::0;;;9873:9;;;::::1;9843:40:::0;;:29:::1;:40:::0;;;;;;:48;;;::::1;::::0;;9937:9;;;::::1;9902:45:::0;;;;;;;;:53;;;::::1;::::0;;9966:22;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;9999:45;;;;;;:52;;;::::1;-1:-1:-1::0;9999:52:0;;::::1;::::0;;;10092:9;;;::::1;10062:40:::0;;;;;;;;:47;;;::::1;::::0;::::1;::::0;;10155:9;;;;::::1;10120:45:::0;;;;:52;;;;::::1;::::0;;::::1;::::0;;9595:585::o;2072:80::-;1986:6;;:22;:6;1690:10;1986:22;1978:68;;;;;;;4678:2:1;1978:68:0;;;4660:21:1;4717:2;4697:18;;;4690:30;4756:34;4736:18;;;4729:62;4827:3;4807:18;;;4800:31;4848:19;;1978:68:0;4476:397:1;1978:68:0;2147:1:::1;2130:19:::0;;;::::1;::::0;;2072:80::o;6477:302::-;1986:6;;:22;:6;1690:10;1986:22;1978:68;;;;;;;4678:2:1;1978:68:0;;;4660:21:1;4717:2;4697:18;;;4690:30;4756:34;4736:18;;;4729:62;4827:3;4807:18;;;4800:31;4848:19;;1978:68:0;4476:397:1;1978:68:0;6582:38:::1;::::0;::::1;;::::0;;;:29:::1;:38;::::0;;;;;;;;;6648:5;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;::::1;::::0;6634:76;;6582:38:::1;::::0;;::::1;:50;;::::0;::::1;;;;::::0;6634:76:::1;::::0;6648:5;;6634:76:::1;;:::i;:::-;;;;;;;;;;;;;6574:137;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;6722:38:0::1;::::0;;;::::1;;::::0;;;:29:::1;:38;::::0;;;;:49;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;6477:302::o;6785:313::-;1986:6;;:22;:6;1690:10;1986:22;1978:68;;;;;;;4678:2:1;1978:68:0;;;4660:21:1;4717:2;4697:18;;;4690:30;4756:34;4736:18;;;4729:62;4827:3;4807:18;;;4800:31;4848:19;;1978:68:0;4476:397:1;1978:68:0;6895:43:::1;::::0;::::1;;::::0;;;:34:::1;:43;::::0;;;;;;;;;6966:5;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;::::1;::::0;6952:72;;6895:43:::1;::::0;;::::1;:55;;::::0;::::1;;;;::::0;6952:72:::1;::::0;6966:5;;6952:72:::1;;:::i;:::-;;;;;;;;;;;;;6887:138;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;7036:43:0::1;::::0;;;::::1;;::::0;;;:34:::1;:43;::::0;;;;:54;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;6785:313::o;8945:644::-;1986:6;;:22;:6;1690:10;1986:22;1978:68;;;;;;;4678:2:1;1978:68:0;;;4660:21:1;4717:2;4697:18;;;4690:30;4756:34;4736:18;;;4729:62;4827:3;4807:18;;;4800:31;4848:19;;1978:68:0;4476:397:1;1978:68:0;9047:14:::1;;;;;;;;;;;9033:28;;:10;:28;;;;9077:5;;;;;;;;;;;;;;;;::::0;9063:69:::1;;;;;;;;:::i;:::-;;;;;;;;;;;;;9025:108;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;9179:14:0::1;::::0;;;;;;::::1;;::::0;;::::1;9197:5;9144:50:::0;;;:34:::1;:50;::::0;;;;;;;:58;;;;;::::1;::::0;;;9243:14;;;;::::1;::::0;::::1;9213:45:::0;;:29:::1;:45:::0;;;;;;:53;;;::::1;::::0;;9312:14;;;;::::1;::::0;::::1;9277:50:::0;;;;;;;;:58;;;::::1;::::0;;9346:36;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;9428:14;;::::1;::::0;::::1;9393:50:::0;;;;;:57;;;::::1;-1:-1:-1::0;9393:57:0;;::::1;::::0;;;9491:14;;;;::::1;::::0;::::1;9461:45:::0;;;;;;;;:52;;;::::1;::::0;::::1;::::0;;9559:14;;;;;::::1;::::0;;::::1;9524:50:::0;;;;;;:57;;;;::::1;::::0;;::::1;::::0;;8945:644::o;8376:296::-;1986:6;;:22;:6;1690:10;1986:22;1978:68;;;;;;;4678:2:1;1978:68:0;;;4660:21:1;4717:2;4697:18;;;4690:30;4756:34;4736:18;;;4729:62;4827:3;4807:18;;;4800:31;4848:19;;1978:68:0;4476:397:1;1978:68:0;8465:7:::1;;;;;;;;;;;8453:19;;:8;:19;;;;8488:5;;;;;;;;;;;;;;;;::::0;8474:62:::1;;;;;;;;:::i;:::-;;;;;;;;;;;;;8445:92;;;;;;;;;;;;;;:::i;:::-;;8568:2;8556:8;:14;;;;8586:5;;;;;;;;;;;;;;;;::::0;8572:62:::1;;;;;;;;:::i;:::-;;;;;;;;;;;;;8548:87;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;8646:7:0::1;:18:::0;;::::1;::::0;;::::1;;;::::0;;;::::1;::::0;;;::::1;::::0;;8376:296::o;6131:340::-;1690:10;6226:4;6270:25;;;:11;:25;;;;;;;;;:34;;;;;;;;;;6251:53;;;6243:104;;;;;;;13751:2:1;6243:104:0;;;13733:21:1;13790:2;13770:18;;;13763:30;13829:34;13809:18;;;13802:62;13900:8;13880:18;;;13873:36;13926:19;;6243:104:0;13549:402:1;6243:104:0;1690:10;6388:25;;;;:11;:25;;;;;;;;;:34;;;;;;;;;;6358:83;;1690:10;6380:7;;6388:52;;6425:15;;6388:52;:::i;5186:169::-;5266:4;5283:42;1690:10;5307:9;5318:6;5283:9;:42::i;8678:261::-;1986:6;;:22;:6;1690:10;1986:22;1978:68;;;;;;;4678:2:1;1978:68:0;;;4660:21:1;4717:2;4697:18;;;4690:30;4756:34;4736:18;;;4729:62;4827:3;4807:18;;;4800:31;4848:19;;1978:68:0;4476:397:1;1978:68:0;8782:23:::1;;8770:8;:35;;8821:5;;;;;;;;;;;;;;;;::::0;8807:78:::1;;;;;;;;:::i;:::-;;;;;;;;;;;;;8762:124;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;8897:23:0::1;:34:::0;8678:261::o;8080:290::-;1986:6;;:22;:6;1690:10;1986:22;1978:68;;;;;;;4678:2:1;1978:68:0;;;4660:21:1;4717:2;4697:18;;;4690:30;4756:34;4736:18;;;4729:62;4827:3;4807:18;;;4800:31;4848:19;;1978:68:0;4476:397:1;1978:68:0;8168:6:::1;::::0;8190:5:::1;::::0;;;;::::1;::::0;;::::1;::::0;;::::1;;::::0;;::::1;::::0;;;;8176:62;;8168:6:::1;8156:18:::0;;::::1;8168:6:::0;::::1;8156:18:::0;;;::::1;;::::0;8176:62:::1;::::0;::::1;;:::i;:::-;;;;;;;;;;;;;8148:91;;;;;;;;;;;;;;:::i;:::-;;8270:1;8258:8;:13;;;;8287:5;;;;;;;;;;;;;;;;::::0;8273:60:::1;;;;;;;;:::i;:::-;;;;;;;;;;;;;8250:84;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;8345:6:0::1;:17:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;8080:290::o;7104:258::-;1986:6;;:22;:6;1690:10;1986:22;1978:68;;;;;;;4678:2:1;1978:68:0;;;4660:21:1;4717:2;4697:18;;;4690:30;4756:34;4736:18;;;4729:62;4827:3;4807:18;;;4800:31;4848:19;;1978:68:0;4476:397:1;1978:68:0;7199:27:::1;::::0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;;;;;7254:5;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;::::1;::::0;7240:64;;7199:27:::1;::::0;;::::1;:39;;::::0;::::1;;;;::::0;7240:64:::1;::::0;7254:5;;7240:64:::1;;:::i;:::-;;;;;;;;;;;;;7191:114;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;7316:27:0::1;::::0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:38;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;7104:258::o;10186:372::-;1986:6;;:22;:6;1690:10;1986:22;1978:68;;;;;;;4678:2:1;1978:68:0;;;4660:21:1;4717:2;4697:18;;;4690:30;4756:34;4736:18;;;4729:62;4827:3;4807:18;;;4800:31;4848:19;;1978:68:0;4476:397:1;1978:68:0;10271:1:::1;10247:21;:25;10288:5;;;;;;;;;;;;;;;;::::0;10274:65:::1;;;;;;;;:::i;:::-;;;;;;;;;;;;;10239:101;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;10368:21:0::1;10351:14;10426:7;1913::::0;1931:6;;;;1875:65;10426:7:::1;10418:21;;10448:6;10418:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10400:59;;;10478:7;10501:5;;;;;;;;;;;;;;;;::::0;10487:62:::1;;;;;;;;:::i;:::-;;;;;;;;;;;;;10470:80;;;;;;;;;;;;;;:::i;:::-;;10228:330;;10186:372::o:0;2158:193::-;1986:6;;:22;:6;1690:10;1986:22;1978:68;;;;;;;4678:2:1;1978:68:0;;;4660:21:1;4717:2;4697:18;;;4690:30;4756:34;4736:18;;;4729:62;4827:3;4807:18;;;4800:31;4848:19;;1978:68:0;4476:397:1;1978:68:0;2249:22:::1;::::0;::::1;2241:74;;;::::0;::::1;::::0;;17501:2:1;2241:74:0::1;::::0;::::1;17483:21:1::0;17540:2;17520:18;;;17513:30;17579:34;17559:18;;;17552:62;17650:9;17630:18;;;17623:37;17677:19;;2241:74:0::1;17299:403:1::0;2241:74:0::1;2326:6;:17:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;2158:193::o;10564:286::-;10656:19;;;10648:68;;;;;;;17909:2:1;10648:68:0;;;17891:21:1;17948:2;17928:18;;;17921:30;17987:34;17967:18;;;17960:62;18058:6;18038:18;;;18031:34;18082:19;;10648:68:0;17707:400:1;10648:68:0;10735:21;;;10727:68;;;;;;;18314:2:1;10727:68:0;;;18296:21:1;18353:2;18333:18;;;18326:30;18392:34;18372:18;;;18365:62;18463:4;18443:18;;;18436:32;18485:19;;10727:68:0;18112:398:1;10727:68:0;10806:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;10564:286::o;11783:275::-;11874:31;;;;;;;:25;:31;;;;;;;;;;11930:5;;;;;;;;;;;;;;;11916:83;;11874:31;;;;:40;;;;;;;;11916:83;;11930:5;;11916:83;;:::i;:::-;;;;;;;;;;;;;11866:134;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;12011:31:0;;;;;;;;;:25;:31;;;;;:39;;;;;;;;;;;;;11783:275::o;12652:2543::-;12757:1;12741:18;;:4;:18;;;;12775:5;;;;;;;;;;;;;;;;;12761:64;;;;;;;;:::i;:::-;;;;;;;;;;;;;12733:93;;;;;;;;;;;;;;:::i;:::-;;12859:1;12845:16;;:2;:16;;;;12877:5;;;;;;;;;;;;;;;;;12863:62;;;;;;;;:::i;:::-;;;;;;;;;;;;;12837:89;;;;;;;;;;;;;;:::i;:::-;;12954:1;12945:6;:10;12971:5;;;;;;;;;;;;;;;;;12957:68;;;;;;;;:::i;:::-;;;;;;;;;;;;;12937:89;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;12487:17:0;;;12469:7;12487:17;;;:8;:17;;;;;;13045:6;:25;;13086:5;;;;;;;;;;;;;;;;;13072:60;;;;;;;;:::i;:::-;;;;;;;;;;;;;13037:96;;;;;;;;;;;;;;:::i;:::-;;13186:4;13166:16;;13148:15;:34;;;;:::i;:::-;:42;13144:67;;13199:9;;;;;-1:-1:-1;13144:67:0;13253:13;;;13237:30;;;13253:13;;13237:30;:73;;;;-1:-1:-1;13272:38:0;;;;;;;:34;:38;;;;;;;;13271:39;13237:73;13236:171;;;-1:-1:-1;13347:13:0;;;13333:28;;;13347:13;;13333:28;:73;;;;-1:-1:-1;13366:40:0;;;;;;;:34;:40;;;;;;;;13365:41;13333:73;13232:302;;;13442:11;;13432:6;:21;;13469:5;;;;;;;;;;;;;;;;;13455:66;;;;;;;;:::i;:::-;;;;;;;;;;;;;13424:98;;;;;;;;;;;;;;:::i;:::-;;13232:302;13549:33;;;;;;;:29;:33;;;;;;;;13544:198;;13635:15;;13624:6;13608:13;13618:2;12487:17;;12469:7;12487:17;;;:8;:17;;;;;;;12403:104;13608:13;:22;;;;:::i;:::-;13607:43;;13666:5;;;;;;;;;;;;;;;;;13652:77;;;;;;;;:::i;:::-;;;;;;;;;;;;;13599:131;;;;;;;;;;;;;;:::i;:::-;;13544:198;13756:24;;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;13784:22:0;;;;;;;:18;:22;;;;;;;;13756:50;:109;;;-1:-1:-1;13836:13:0;;;13828:21;;;13836:13;;13828:21;:36;;;;-1:-1:-1;13853:6:0;;;;:11;13828:36;13756:174;;;-1:-1:-1;13900:13:0;;;13894:19;;;13900:13;;13894:19;:35;;;;-1:-1:-1;13917:7:0;;;;;;;:12;13894:35;13752:1436;;;13969:14;;;;;;;:8;:14;;;;;:24;;13987:6;;13969:14;:24;;13987:6;;13969:24;:::i;:::-;;;;-1:-1:-1;;14008:12:0;;;;;;;:8;:12;;;;;:22;;14024:6;;14008:12;:22;;14024:6;;14008:22;:::i;:::-;;;;;;;;14065:2;14050:26;;14059:4;14050:26;;;14069:6;14050:26;;;;1787:25:1;;1775:2;1760:18;;1641:177;14050:26:0;;;;;;;;10470:80:::1;10228:330;;10186:372::o:0;13752:1436::-;14109:14;;;;;;;:8;:14;;;;;:24;;14127:6;;14109:14;:24;;14127:6;;14109:24;:::i;:::-;;;;-1:-1:-1;;14160:13:0;;;;;;14152:21;;;;14148:1029;;14237:6;;14246:3;;14228:15;;14237:6;;14228;:15;:::i;:::-;:21;;;;:::i;:::-;14218:4;14201:23;;;;:8;:23;;;;;:48;;:23;;;:48;;;;;:::i;:::-;;;;-1:-1:-1;;14312:6:0;;14296:4;;14273:52;;;;;;14321:3;;14303:15;;14312:6;;14303;:15;:::i;:::-;:21;;;;:::i;:::-;14273:52;;1787:25:1;;;1775:2;1760:18;14273:52:0;;;;;;;14379:6;;14388:3;;14370:15;;14379:6;;14370;:15;:::i;:::-;:21;;;;:::i;:::-;14360:32;;:6;:32;:::i;:::-;14344:12;;;;;;;:8;:12;;;;;:48;;:12;;;:48;;;;;:::i;:::-;;;;-1:-1:-1;;14454:6:0;;14416:52;;;;;;;;;;;14463:3;;14445:15;;14454:6;;14445;:15;:::i;:::-;:21;;;;:::i;:::-;14435:32;;:6;:32;:::i;:::-;14416:52;;1787:25:1;;;1775:2;1760:18;14416:52:0;1641:177:1;14148:1029:0;14553:7;;14563:3;;14544:16;;14553:7;;;;;14544:6;:16;:::i;:::-;:22;;;;:::i;:::-;14534:4;14517:23;;;;:8;:23;;;;;:49;;:23;;;:49;;;;;:::i;:::-;;;;-1:-1:-1;;14629:7:0;;14613:4;;14590:53;;;;;;14639:3;;14620:16;;14629:7;;;;;14620:6;:16;:::i;:::-;:22;;;;:::i;:::-;14590:53;;1787:25:1;;;1775:2;1760:18;14590:53:0;;;;;;;14693:23;;14684:4;12469:7;12487:17;;;:8;:17;;;;;;14666:50;14662:355;;;14777:4;12469:7;12487:17;;;:8;:17;;;;;;14741:43;;:17;:43::i;:::-;14815:9;;;;14807:54;14835:25;14859:1;14835:21;:25;:::i;:::-;14807:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14932:14:0;;:65;;14884:12;;14932:14;;;;;;14987:5;;14959:21;;14884:12;14932:65;14884:12;14932:65;14959:21;14932:14;14987:5;14932:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;14662:355:0;15070:7;;15080:3;;15061:16;;15070:7;;;;;15061:6;:16;:::i;:::-;:22;;;;:::i;:::-;15051:33;;:6;:33;:::i;:::-;15035:12;;;;;;;:8;:12;;;;;:49;;:12;;;:49;;;;;:::i;:::-;;;;-1:-1:-1;;15146:7:0;;15108:53;;;;;;;;;;;15156:3;;15137:16;;15146:7;;;;;15137:6;:16;:::i;15201:396::-;15292:16;;;15306:1;15292:16;;;;;;;;15268:21;;15292:16;;;;;;;;;;-1:-1:-1;15292:16:0;15268:40;;15337:4;15319;15324:1;15319:7;;;;;;;;:::i;:::-;:23;;;;:7;;;;;;;;;;:23;;;;15363:15;;:22;;;;;;;;:15;;;;;:20;;:22;;;;;15319:7;;15363:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15353:4;15358:1;15353:7;;;;;;;;:::i;:::-;:32;;;;:7;;;;;;;;;:32;15428:15;;15396:62;;15413:4;;15428:15;15446:11;15396:8;:62::i;:::-;15469:15;;:120;;;;;:15;;;;;:66;;:120;;15536:11;;15469:15;;15552:4;;15566;;15573:15;;15469:120;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15257:340;15201:396;:::o;14:258:1:-;86:1;96:113;110:6;107:1;104:13;96:113;;;186:11;;;180:18;167:11;;;160:39;132:2;125:10;96:113;;;227:6;224:1;221:13;218:48;;;262:1;253:6;248:3;244:16;237:27;218:48;;14:258;;;:::o;277:442::-;426:2;415:9;408:21;389:4;458:6;452:13;501:6;496:2;485:9;481:18;474:34;517:66;576:6;571:2;560:9;556:18;551:2;543:6;539:15;517:66;:::i;:::-;635:2;623:15;640:66;619:88;604:104;;;;710:2;600:113;;277:442;-1:-1:-1;;277:442:1:o;724:154::-;810:42;803:5;799:54;792:5;789:65;779:93;;868:1;865;858:12;779:93;724:154;:::o;883:315::-;951:6;959;1012:2;1000:9;991:7;987:23;983:32;980:52;;;1028:1;1025;1018:12;980:52;1067:9;1054:23;1086:31;1111:5;1086:31;:::i;:::-;1136:5;1188:2;1173:18;;;;1160:32;;-1:-1:-1;;;883:315:1:o;1823:180::-;1882:6;1935:2;1923:9;1914:7;1910:23;1906:32;1903:52;;;1951:1;1948;1941:12;1903:52;-1:-1:-1;1974:23:1;;1823:180;-1:-1:-1;1823:180:1:o;2008:456::-;2085:6;2093;2101;2154:2;2142:9;2133:7;2129:23;2125:32;2122:52;;;2170:1;2167;2160:12;2122:52;2209:9;2196:23;2228:31;2253:5;2228:31;:::i;:::-;2278:5;-1:-1:-1;2335:2:1;2320:18;;2307:32;2348:33;2307:32;2348:33;:::i;:::-;2008:456;;2400:7;;-1:-1:-1;;;2454:2:1;2439:18;;;;2426:32;;2008:456::o;3136:247::-;3195:6;3248:2;3236:9;3227:7;3223:23;3219:32;3216:52;;;3264:1;3261;3254:12;3216:52;3303:9;3290:23;3322:31;3347:5;3322:31;:::i;:::-;3372:5;3136:247;-1:-1:-1;;;3136:247:1:o;3388:416::-;3453:6;3461;3514:2;3502:9;3493:7;3489:23;3485:32;3482:52;;;3530:1;3527;3520:12;3482:52;3569:9;3556:23;3588:31;3613:5;3588:31;:::i;:::-;3638:5;-1:-1:-1;3695:2:1;3680:18;;3667:32;3737:15;;3730:23;3718:36;;3708:64;;3768:1;3765;3758:12;3708:64;3791:7;3781:17;;;3388:416;;;;;:::o;3809:269::-;3866:6;3919:2;3907:9;3898:7;3894:23;3890:32;3887:52;;;3935:1;3932;3925:12;3887:52;3974:9;3961:23;4024:4;4017:5;4013:16;4006:5;4003:27;3993:55;;4044:1;4041;4034:12;4083:388;4151:6;4159;4212:2;4200:9;4191:7;4187:23;4183:32;4180:52;;;4228:1;4225;4218:12;4180:52;4267:9;4254:23;4286:31;4311:5;4286:31;:::i;:::-;4336:5;-1:-1:-1;4393:2:1;4378:18;;4365:32;4406:33;4365:32;4406:33;:::i;4878:509::-;5110:3;5148:6;5142:13;5164:53;5210:6;5205:3;5198:4;5190:6;5186:17;5164:53;:::i;:::-;5278:34;5239:16;;5264:49;;;-1:-1:-1;5347:3:1;5340:4;5329:16;;5322:29;5378:2;5367:14;;4878:509;-1:-1:-1;4878:509:1:o;6027:306::-;6115:6;6123;6131;6184:2;6172:9;6163:7;6159:23;6155:32;6152:52;;;6200:1;6197;6190:12;6152:52;6229:9;6223:16;6213:26;;6279:2;6268:9;6264:18;6258:25;6248:35;;6323:2;6312:9;6308:18;6302:25;6292:35;;6027:306;;;;;:::o;6338:251::-;6408:6;6461:2;6449:9;6440:7;6436:23;6432:32;6429:52;;;6477:1;6474;6467:12;6429:52;6509:9;6503:16;6528:31;6553:5;6528:31;:::i;6926:184::-;6978:77;6975:1;6968:88;7075:4;7072:1;7065:15;7099:4;7096:1;7089:15;7115:228;7155:7;7281:1;7213:66;7209:74;7206:1;7203:81;7198:1;7191:9;7184:17;7180:105;7177:131;;;7288:18;;:::i;:::-;-1:-1:-1;7328:9:1;;7115:228::o;7348:274::-;7388:1;7414;7404:189;;7449:77;7446:1;7439:88;7550:4;7547:1;7540:15;7578:4;7575:1;7568:15;7404:189;-1:-1:-1;7607:9:1;;7348:274::o;7627:518::-;7859:3;7897:6;7891:13;7913:53;7959:6;7954:3;7947:4;7939:6;7935:17;7913:53;:::i;:::-;8027:34;7988:16;;8013:49;;;-1:-1:-1;8096:12:1;8089:4;8078:16;;8071:38;8136:2;8125:14;;7627:518;-1:-1:-1;7627:518:1:o;8150:520::-;8382:3;8420:6;8414:13;8436:53;8482:6;8477:3;8470:4;8462:6;8458:17;8436:53;:::i;:::-;8550:34;8511:16;;8536:49;;;-1:-1:-1;8619:14:1;8612:4;8601:16;;8594:40;8661:2;8650:14;;8150:520;-1:-1:-1;8150:520:1:o;9085:125::-;9125:4;9153:1;9150;9147:8;9144:34;;;9158:18;;:::i;:::-;-1:-1:-1;9195:9:1;;9085:125::o;9215:522::-;9447:3;9485:6;9479:13;9501:53;9547:6;9542:3;9535:4;9527:6;9523:17;9501:53;:::i;:::-;9615:34;9576:16;;9601:49;;;-1:-1:-1;9684:16:1;9677:4;9666:16;;9659:42;9728:2;9717:14;;9215:522;-1:-1:-1;9215:522:1:o;9742:::-;9974:3;10012:6;10006:13;10028:53;10074:6;10069:3;10062:4;10054:6;10050:17;10028:53;:::i;:::-;10142:34;10103:16;;10128:49;;;-1:-1:-1;10211:16:1;10204:4;10193:16;;10186:42;10255:2;10244:14;;9742:522;-1:-1:-1;9742:522:1:o;10269:128::-;10309:3;10340:1;10336:6;10333:1;10330:13;10327:39;;;10346:18;;:::i;:::-;-1:-1:-1;10382:9:1;;10269:128::o;10402:516::-;10634:3;10672:6;10666:13;10688:53;10734:6;10729:3;10722:4;10714:6;10710:17;10688:53;:::i;:::-;10802:34;10763:16;;10788:49;;;-1:-1:-1;10871:10:1;10864:4;10853:16;;10846:36;10909:2;10898:14;;10402:516;-1:-1:-1;10402:516:1:o;10923:528::-;11155:3;11193:6;11187:13;11209:53;11255:6;11250:3;11243:4;11235:6;11231:17;11209:53;:::i;:::-;11323:34;11284:16;;11309:49;;;-1:-1:-1;11392:22:1;11385:4;11374:16;;11367:48;11442:2;11431:14;;10923:528;-1:-1:-1;10923:528:1:o;11456:524::-;11688:3;11726:6;11720:13;11742:53;11788:6;11783:3;11776:4;11768:6;11764:17;11742:53;:::i;:::-;11856:34;11817:16;;11842:49;;;-1:-1:-1;11925:18:1;11918:4;11907:16;;11900:44;11971:2;11960:14;;11456:524;-1:-1:-1;11456:524:1:o;11985:521::-;12217:3;12255:6;12249:13;12271:53;12317:6;12312:3;12305:4;12297:6;12293:17;12271:53;:::i;:::-;12385:34;12346:16;;12371:49;;;-1:-1:-1;12454:15:1;12447:4;12436:16;;12429:41;12497:2;12486:14;;11985:521;-1:-1:-1;11985:521:1:o;12511:514::-;12743:3;12781:6;12775:13;12797:53;12843:6;12838:3;12831:4;12823:6;12819:17;12797:53;:::i;:::-;12911:34;12872:16;;12897:49;;;-1:-1:-1;12980:8:1;12973:4;12962:16;;12955:34;13016:2;13005:14;;12511:514;-1:-1:-1;12511:514:1:o;13030:::-;13262:3;13300:6;13294:13;13316:53;13362:6;13357:3;13350:4;13342:6;13338:17;13316:53;:::i;:::-;13430:34;13391:16;;13416:49;;;-1:-1:-1;13499:8:1;13492:4;13481:16;;13474:34;13535:2;13524:14;;13030:514;-1:-1:-1;13030:514:1:o;13956:530::-;14188:3;14226:6;14220:13;14242:53;14288:6;14283:3;14276:4;14268:6;14264:17;14242:53;:::i;:::-;14356:34;14317:16;;14342:49;;;-1:-1:-1;14425:24:1;14418:4;14407:16;;14400:50;14477:2;14466:14;;13956:530;-1:-1:-1;13956:530:1:o;14491:514::-;14723:3;14761:6;14755:13;14777:53;14823:6;14818:3;14811:4;14803:6;14799:17;14777:53;:::i;:::-;14891:34;14852:16;;14877:49;;;-1:-1:-1;14960:8:1;14953:4;14942:16;;14935:34;14996:2;14985:14;;14491:514;-1:-1:-1;14491:514:1:o;15010:512::-;15242:3;15280:6;15274:13;15296:53;15342:6;15337:3;15330:4;15322:6;15318:17;15296:53;:::i;:::-;15410:34;15371:16;;15396:49;;;-1:-1:-1;15479:6:1;15472:4;15461:16;;15454:32;15513:2;15502:14;;15010:512;-1:-1:-1;15010:512:1:o;15527:516::-;15759:3;15797:6;15791:13;15813:53;15859:6;15854:3;15847:4;15839:6;15835:17;15813:53;:::i;:::-;15927:34;15888:16;;15913:49;;;-1:-1:-1;15996:10:1;15989:4;15978:16;;15971:36;16034:2;16023:14;;15527:516;-1:-1:-1;15527:516:1:o;16048:517::-;16280:3;16318:6;16312:13;16334:53;16380:6;16375:3;16368:4;16360:6;16356:17;16334:53;:::i;:::-;16448:34;16409:16;;16434:49;;;-1:-1:-1;16517:11:1;16510:4;16499:16;;16492:37;16556:2;16545:14;;16048:517;-1:-1:-1;16048:517:1:o;16780:514::-;17012:3;17050:6;17044:13;17066:53;17112:6;17107:3;17100:4;17092:6;17088:17;17066:53;:::i;:::-;17180:34;17141:16;;17166:49;;;-1:-1:-1;17249:8:1;17242:4;17231:16;;17224:34;17285:2;17274:14;;16780:514;-1:-1:-1;16780:514:1:o;18515:535::-;18747:3;18785:6;18779:13;18801:53;18847:6;18842:3;18835:4;18827:6;18823:17;18801:53;:::i;:::-;18915:34;18876:16;;18901:49;;;-1:-1:-1;18984:29:1;18977:4;18966:16;;18959:55;19041:2;19030:14;;18515:535;-1:-1:-1;18515:535:1:o;19055:516::-;19287:3;19325:6;19319:13;19341:53;19387:6;19382:3;19375:4;19367:6;19363:17;19341:53;:::i;:::-;19455:34;19416:16;;19441:49;;;-1:-1:-1;19524:10:1;19517:4;19506:16;;19499:36;19562:2;19551:14;;19055:516;-1:-1:-1;19055:516:1:o;19576:514::-;19808:3;19846:6;19840:13;19862:53;19908:6;19903:3;19896:4;19888:6;19884:17;19862:53;:::i;:::-;19976:34;19937:16;;19962:49;;;-1:-1:-1;20045:8:1;20038:4;20027:16;;20020:34;20081:2;20070:14;;19576:514;-1:-1:-1;19576:514:1:o;20095:520::-;20327:3;20365:6;20359:13;20381:53;20427:6;20422:3;20415:4;20407:6;20403:17;20381:53;:::i;:::-;20495:34;20456:16;;20481:49;;;-1:-1:-1;20564:14:1;20557:4;20546:16;;20539:40;20606:2;20595:14;;20095:520;-1:-1:-1;20095:520:1:o;20620:512::-;20852:3;20890:6;20884:13;20906:53;20952:6;20947:3;20940:4;20932:6;20928:17;20906:53;:::i;:::-;21020:34;20981:16;;21006:49;;;-1:-1:-1;21089:6:1;21082:4;21071:16;;21064:32;21123:2;21112:14;;20620:512;-1:-1:-1;20620:512:1:o;21137:518::-;21369:3;21407:6;21401:13;21423:53;21469:6;21464:3;21457:4;21449:6;21445:17;21423:53;:::i;:::-;21537:34;21498:16;;21523:49;;;-1:-1:-1;21606:12:1;21599:4;21588:16;;21581:38;21646:2;21635:14;;21137:518;-1:-1:-1;21137:518:1:o;21660:529::-;21892:3;21930:6;21924:13;21946:53;21992:6;21987:3;21980:4;21972:6;21968:17;21946:53;:::i;:::-;22060:34;22021:16;;22046:49;;;-1:-1:-1;22129:23:1;22122:4;22111:16;;22104:49;22180:2;22169:14;;21660:529;-1:-1:-1;21660:529:1:o;22383:184::-;22435:77;22432:1;22425:88;22532:4;22529:1;22522:15;22556:4;22553:1;22546:15;22572:1026;22834:4;22882:3;22871:9;22867:19;22913:6;22902:9;22895:25;22939:2;22977:6;22972:2;22961:9;22957:18;22950:34;23020:3;23015:2;23004:9;23000:18;22993:31;23044:6;23079;23073:13;23110:6;23102;23095:22;23148:3;23137:9;23133:19;23126:26;;23187:2;23179:6;23175:15;23161:29;;23208:1;23218:218;23232:6;23229:1;23226:13;23218:218;;;23297:13;;23312:42;23293:62;23281:75;;23411:15;;;;23376:12;;;;23254:1;23247:9;23218:218;;;-1:-1:-1;;23504:42:1;23492:55;;;;23487:2;23472:18;;23465:83;-1:-1:-1;;;23579:3:1;23564:19;23557:35;23453:3;22572:1026;-1:-1:-1;;;22572:1026:1:o

Swarm Source

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