ETH Price: $3,493.79 (+3.40%)
Gas: 10 Gwei

Token

Is This a Pigeon (PIGEON)
 

Overview

Max Total Supply

100,000,000 PIGEON

Holders

80

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
IsThisaPigeon

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-04-20
*/

// Is This a Pigeon

// SPDX-License-Identifier: MIT

pragma solidity 0.8.12;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; 
        return msg.data;
    }
}

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 IERC20Metadata is IERC20 {

    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}


contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping (address => uint256) internal _balances;

    mapping (address => mapping (address => uint256)) internal _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor (string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }


    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);
    }

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
}

library Address{
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _setOwner(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

contract IsThisaPigeon is ERC20, Ownable{ 
    using Address for address payable;
    
    IRouter public router;
    address public pair;
    
    bool private swapping;
    bool public swapEnabled;
    bool public tradingEnabled;

    uint256 public genesis_block;
    uint256 public deadblocks = 0;
    
    uint256 public swapThreshold = 10_000 * 10e18;
    uint256 public maxTxAmount = 2_000_000 * 10**18; 
    uint256 public maxWalletAmount = 2_000_000 * 10**18; 
    
    address public marketingWallet = 0x4770D87B7C8894e2D84c545bd7E912849C32a075; 
    address public devWallet = 0x4770D87B7C8894e2D84c545bd7E912849C32a075;
    
    struct Taxes {
        uint256 marketing;
        uint256 liquidity; 
        uint256 dev;
    }
    
    Taxes public taxes = Taxes(20,0,7); 
    Taxes public sellTaxes = Taxes(34,0,6); 
    uint256 public totTax = 27; 
    uint256 public totSellTax = 40; 
    
    mapping (address => bool) public excludedFromFees;
    mapping (address => bool) private isBot;
    
    modifier inSwap() {
        if (!swapping) {
            swapping = true;
            _;
            swapping = false;
        }
    }
        
    constructor() ERC20("Is This a Pigeon", "PIGEON") { 
        _mint(msg.sender, 1e8 * 10 ** decimals()); 
        excludedFromFees[msg.sender] = true;

        excludedFromFees[address(this)] = true;
        excludedFromFees[marketingWallet] = true;
        excludedFromFees[devWallet] = true;
    }

    function createPair() external onlyOwner{
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory())
            .createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
    }
    
    function _transfer(address sender, address recipient, uint256 amount) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!isBot[sender] && !isBot[recipient], "You can't transfer tokens");
                
        
        if(!excludedFromFees[sender] && !excludedFromFees[recipient] && !swapping){
            require(tradingEnabled, "Trading not active yet");
            if(genesis_block + deadblocks > block.number){
                if(recipient != pair) isBot[recipient] = true;
                if(sender != pair) isBot[sender] = true;
            }
            require(amount <= maxTxAmount, "You are exceeding maxTxAmount");
            if(recipient != pair){
                require(balanceOf(recipient) + amount <= maxWalletAmount, "You are exceeding maxWalletAmount");
            }
        }

        uint256 fee;
        
  
        if (swapping || excludedFromFees[sender] || excludedFromFees[recipient]) fee = 0;
        
 
        else{
            if(recipient == pair) fee = amount * totSellTax / 100;
            else fee = amount * totTax / 100;
        }
        

        if (swapEnabled && !swapping && sender != pair && fee > 0) swapForFees();

        super._transfer(sender, recipient, amount - fee);
        if(fee > 0) super._transfer(sender, address(this) ,fee);

    }

    function swapForFees() private inSwap {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= swapThreshold) {

                    uint256 denominator = totSellTax * 2;
            uint256 tokensToAddLiquidityWith = contractBalance * sellTaxes.liquidity / denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;
    
            uint256 initialBalance = address(this).balance;
    
            swapTokensForETH(toSwap);
    
            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance= deltaBalance / (denominator - sellTaxes.liquidity);
            uint256 ethToAddLiquidityWith = unitBalance * sellTaxes.liquidity;
    
            if(ethToAddLiquidityWith > 0){
                // Add liquidity to Uniswap
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }
    
            uint256 marketingAmt = unitBalance * 2 * sellTaxes.marketing;
            if(marketingAmt > 0){
                payable(marketingWallet).sendValue(marketingAmt);
            }
            
            uint256 devAmt = unitBalance * 2 * sellTaxes.dev;
            if(devAmt > 0){
                payable(devWallet).sendValue(devAmt);
            }
        }
    }


    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount);

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp);

    }

    function addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{value: bnbAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            devWallet,
            block.timestamp
        );
    }

    function setSwapEnabled(bool state) external onlyOwner {
        swapEnabled = state;
    }

    function setSwapThreshold(uint256 new_amount) external onlyOwner {
        swapThreshold = new_amount;
    }

    function enableTrading(uint256 numOfDeadBlocks) external onlyOwner{
        require(!tradingEnabled, "Trading already active");
        tradingEnabled = true;
        swapEnabled = true;
        genesis_block = block.number;
        deadblocks = numOfDeadBlocks;
    }

    function setBuyTaxes(uint256 _marketing, uint256 _liquidity, uint256 _dev) external onlyOwner{
        taxes = Taxes(_marketing, _liquidity, _dev);
        totTax = _marketing + _liquidity + _dev;
    }

    function setSellTaxes(uint256 _marketing, uint256 _liquidity, uint256 _dev) external onlyOwner{
        sellTaxes = Taxes(_marketing, _liquidity, _dev);
        totSellTax = _marketing + _liquidity + _dev;
    }
    
    function updateDBMarketingWallet(address newWallet) external onlyOwner{
        marketingWallet = newWallet;
    }
    
    function updateDBTeamWallet(address newWallet) external onlyOwner{
        devWallet = newWallet;
    }

    function updateRouterAndPair(IRouter _router, address _pair) external onlyOwner{
        router = _router;
        pair = _pair;
    }
    
        function addBots(address[] memory isBot_) public onlyOwner {
        for (uint i = 0; i < isBot_.length; i++) {
            isBot[isBot_[i]] = true;
        }
        }
    function updateExcludedFromFees(address _address, bool state) external onlyOwner {
        excludedFromFees[_address] = state;
    }
    
    function updateMaxTxAmount(uint256 amount) external onlyOwner{
        maxTxAmount = amount * 10**18;
    }
    
    function updateMaxWalletAmount(uint256 amount) external onlyOwner{
        maxWalletAmount = amount * 10**18;
    }

    function rescueERC20(address tokenAddress, uint256 amount) external onlyOwner{
        IERC20(tokenAddress).transfer(owner(), amount);
    }

    function rescueETH(uint256 weiAmount) external onlyOwner{
        payable(owner()).sendValue(weiAmount);
    }

    function manualSwap(uint256 amount, uint256 devPercentage, uint256 marketingPercentage) external onlyOwner{
        uint256 initBalance = address(this).balance;
        swapTokensForETH(amount);
        uint256 newBalance = address(this).balance - initBalance;
        if(marketingPercentage > 0) payable(marketingWallet).sendValue(newBalance * marketingPercentage / (devPercentage + marketingPercentage));
        if(devPercentage > 0) payable(devWallet).sendValue(newBalance * devPercentage / (devPercentage + marketingPercentage));
    }

    // fallbacks
    receive() external payable {}
    
}

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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"isBot_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadblocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"uint256","name":"numOfDeadBlocks","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesis_block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"devPercentage","type":"uint256"},{"internalType":"uint256","name":"marketingPercentage","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDBMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDBTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IRouter","name":"_router","type":"address"},{"internalType":"address","name":"_pair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6000600981905569152d02c7e14af6800000600a556a01a784379d99db42000000600b819055600c55600d8054734770d87b7c8894e2d84c545bd7e912849c32a0756001600160a01b03199182168117909255600e805490911690911790556014608081905260a0829052600760c0819052600f8290556010839055601155610140604052602260e0819052610100839052600661012081905260129190915560139290925555601b6015556028601655348015620000bd57600080fd5b50604080518082018252601081526f24b9902a3434b99030902834b3b2b7b760811b6020808301918252835180850190945260068452652824a3a2a7a760d11b908401528151919291620001149160039162000310565b5080516200012a90600490602084019062000310565b5050506200014762000141620001d260201b60201c565b620001d6565b62000170336200015a6012600a620004cb565b6200016a906305f5e100620004e3565b62000228565b336000908152601760205260408082208054600160ff1991821681179092553084528284208054821683179055600d546001600160a01b0390811685528385208054831684179055600e5416845291909220805490911690911790556200055d565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620002835760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b806002600082825462000297919062000505565b90915550506001600160a01b03821660009081526020819052604081208054839290620002c690849062000505565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b8280546200031e9062000520565b90600052602060002090601f0160209004810192826200034257600085556200038d565b82601f106200035d57805160ff19168380011785556200038d565b828001600101855582156200038d579182015b828111156200038d57825182559160200191906001019062000370565b506200039b9291506200039f565b5090565b5b808211156200039b5760008155600101620003a0565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200040d578160001904821115620003f157620003f1620003b6565b80851615620003ff57918102915b93841c9390800290620003d1565b509250929050565b6000826200042657506001620004c5565b816200043557506000620004c5565b81600181146200044e5760028114620004595762000479565b6001915050620004c5565b60ff8411156200046d576200046d620003b6565b50506001821b620004c5565b5060208310610133831016604e8410600b84101617156200049e575081810a620004c5565b620004aa8383620003cc565b8060001904821115620004c157620004c1620003b6565b0290505b92915050565b6000620004dc60ff84168362000415565b9392505050565b6000816000190483118215151615620005005762000500620003b6565b500290565b600082198211156200051b576200051b620003b6565b500190565b600181811c908216806200053557607f821691505b602082108114156200055757634e487b7160e01b600052602260045260246000fd5b50919050565b61247e806200056d6000396000f3fe6080604052600436106102815760003560e01c80638c0b5e221161014f578063a9059cbb116100c1578063e01af92c1161007a578063e01af92c146107bc578063e545fd6d146107dc578063f2fde38b146107fc578063f66895a31461081c578063f887ea401461083b578063fb53d9a21461085b57600080fd5b8063a9059cbb146106d0578063aa4bde28146106f0578063c18bc19514610706578063d34628cc14610726578063dbe66ca014610746578063dd62ed3e1461077657600080fd5b80639d0014b1116101135780639d0014b11461061b5780639e252f001461063b5780639e78fb4f1461065b578063a457c2d714610670578063a7c7f0af14610690578063a8aa1b31146106b057600080fd5b80638c0b5e22146105925780638cd4426d146105a85780638da5cb5b146105c85780638ea5220f146105e657806395d89b411461060657600080fd5b8063313ce567116101f35780636ddd1713116101ac5780636ddd17131461049457806370a08231146104b5578063715018a6146104eb578063728f8eea1461050057806375f0a8741461053a57806382aa7c681461057257600080fd5b8063313ce567146103e157806339509351146103fd57806340b28c2f1461041d5780634ada218b1461043d57806350c9a88f1461045e5780636256d1811461047457600080fd5b80631870517a116102455780631870517a1461033f5780632253163d1461035f57806323b872dd1461037557806326b5d32f14610395578063274a533c146103b5578063293b7ef4146103cb57600080fd5b80630445b6671461028d57806306fdde03146102b657806308733214146102d8578063095ea7b3146102fa57806318160ddd1461032a57600080fd5b3661028857005b600080fd5b34801561029957600080fd5b506102a3600a5481565b6040519081526020015b60405180910390f35b3480156102c257600080fd5b506102cb61087b565b6040516102ad9190611f8b565b3480156102e457600080fd5b506102f86102f3366004611fe0565b61090d565b005b34801561030657600080fd5b5061031a610315366004612031565b610984565b60405190151581526020016102ad565b34801561033657600080fd5b506002546102a3565b34801561034b57600080fd5b506102f861035a366004611fe0565b61099a565b34801561036b57600080fd5b506102a360165481565b34801561038157600080fd5b5061031a61039036600461205d565b610a08565b3480156103a157600080fd5b506102f86103b0366004611fe0565b610ab9565b3480156103c157600080fd5b506102a360085481565b3480156103d757600080fd5b506102a360155481565b3480156103ed57600080fd5b50604051601281526020016102ad565b34801561040957600080fd5b5061031a610418366004612031565b610b74565b34801561042957600080fd5b506102f861043836600461209e565b610bab565b34801561044957600080fd5b5060075461031a90600160b01b900460ff1681565b34801561046a57600080fd5b506102a360095481565b34801561048057600080fd5b506102f861048f3660046120d7565b610c03565b3480156104a057600080fd5b5060075461031a90600160a81b900460ff1681565b3480156104c157600080fd5b506102a36104d03660046120f0565b6001600160a01b031660009081526020819052604090205490565b3480156104f757600080fd5b506102f8610c45565b34801561050c57600080fd5b50600f5460105460115461051f92919083565b604080519384526020840192909252908201526060016102ad565b34801561054657600080fd5b50600d5461055a906001600160a01b031681565b6040516001600160a01b0390911681526020016102ad565b34801561057e57600080fd5b506102f861058d3660046120d7565b610c7b565b34801561059e57600080fd5b506102a3600b5481565b3480156105b457600080fd5b506102f86105c3366004612031565b610d16565b3480156105d457600080fd5b506005546001600160a01b031661055a565b3480156105f257600080fd5b50600e5461055a906001600160a01b031681565b34801561061257600080fd5b506102cb610dd7565b34801561062757600080fd5b506102f86106363660046120d7565b610de6565b34801561064757600080fd5b506102f86106563660046120d7565b610e15565b34801561066757600080fd5b506102f8610e67565b34801561067c57600080fd5b5061031a61068b366004612031565b611020565b34801561069c57600080fd5b506102f86106ab3660046120f0565b6110bb565b3480156106bc57600080fd5b5060075461055a906001600160a01b031681565b3480156106dc57600080fd5b5061031a6106eb366004612031565b611107565b3480156106fc57600080fd5b506102a3600c5481565b34801561071257600080fd5b506102f86107213660046120d7565b611114565b34801561073257600080fd5b506102f861074136600461212a565b611156565b34801561075257600080fd5b5061031a6107613660046120f0565b60176020526000908152604090205460ff1681565b34801561078257600080fd5b506102a361079136600461209e565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107c857600080fd5b506102f86107d73660046121fd565b6111ec565b3480156107e857600080fd5b506102f86107f736600461221a565b611234565b34801561080857600080fd5b506102f86108173660046120f0565b611289565b34801561082857600080fd5b5060125460135460145461051f92919083565b34801561084757600080fd5b5060065461055a906001600160a01b031681565b34801561086757600080fd5b506102f86108763660046120f0565b611321565b60606003805461088a90612248565b80601f01602080910402602001604051908101604052809291908181526020018280546108b690612248565b80156109035780601f106108d857610100808354040283529160200191610903565b820191906000526020600020905b8154815290600101906020018083116108e657829003601f168201915b5050505050905090565b6005546001600160a01b031633146109405760405162461bcd60e51b815260040161093790612283565b60405180910390fd5b6040805160608101825284815260208101849052018190526012839055601382905560148190558061097283856122ce565b61097c91906122ce565b601655505050565b600061099133848461136d565b50600192915050565b6005546001600160a01b031633146109c45760405162461bcd60e51b815260040161093790612283565b604080516060810182528481526020810184905201819052600f83905560108290556011819055806109f683856122ce565b610a0091906122ce565b601555505050565b6000610a15848484611491565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610a9a5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610937565b610aae8533610aa986856122e6565b61136d565b506001949350505050565b6005546001600160a01b03163314610ae35760405162461bcd60e51b815260040161093790612283565b47610aed846118dd565b6000610af982476122e6565b90508215610b3457610b34610b0e84866122ce565b610b1885846122fd565b610b22919061231c565b600d546001600160a01b031690611a37565b8315610b6d57610b6d610b4784866122ce565b610b5186846122fd565b610b5b919061231c565b600e546001600160a01b031690611a37565b5050505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610991918590610aa99086906122ce565b6005546001600160a01b03163314610bd55760405162461bcd60e51b815260040161093790612283565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b6005546001600160a01b03163314610c2d5760405162461bcd60e51b815260040161093790612283565b610c3f81670de0b6b3a76400006122fd565b600b5550565b6005546001600160a01b03163314610c6f5760405162461bcd60e51b815260040161093790612283565b610c796000611b50565b565b6005546001600160a01b03163314610ca55760405162461bcd60e51b815260040161093790612283565b600754600160b01b900460ff1615610cf85760405162461bcd60e51b815260206004820152601660248201527554726164696e6720616c72656164792061637469766560501b6044820152606401610937565b6007805461ffff60a81b191661010160a81b17905543600855600955565b6005546001600160a01b03163314610d405760405162461bcd60e51b815260040161093790612283565b816001600160a01b031663a9059cbb610d616005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610dae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd2919061233e565b505050565b60606004805461088a90612248565b6005546001600160a01b03163314610e105760405162461bcd60e51b815260040161093790612283565b600a55565b6005546001600160a01b03163314610e3f5760405162461bcd60e51b815260040161093790612283565b610e6481610e556005546001600160a01b031690565b6001600160a01b031690611a37565b50565b6005546001600160a01b03163314610e915760405162461bcd60e51b815260040161093790612283565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0e919061235b565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7f919061235b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610fcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff0919061235b565b600680546001600160a01b039485166001600160a01b031991821617909155600780549290941691161790915550565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156110a25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610937565b6110b13385610aa986856122e6565b5060019392505050565b6005546001600160a01b031633146110e55760405162461bcd60e51b815260040161093790612283565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610991338484611491565b6005546001600160a01b0316331461113e5760405162461bcd60e51b815260040161093790612283565b61115081670de0b6b3a76400006122fd565b600c5550565b6005546001600160a01b031633146111805760405162461bcd60e51b815260040161093790612283565b60005b81518110156111e8576001601860008484815181106111a4576111a4612378565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806111e08161238e565b915050611183565b5050565b6005546001600160a01b031633146112165760405162461bcd60e51b815260040161093790612283565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b0316331461125e5760405162461bcd60e51b815260040161093790612283565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146112b35760405162461bcd60e51b815260040161093790612283565b6001600160a01b0381166113185760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610937565b610e6481611b50565b6005546001600160a01b0316331461134b5760405162461bcd60e51b815260040161093790612283565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166113cf5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610937565b6001600160a01b0382166114305760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610937565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116114f35760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610937565b6001600160a01b03831660009081526018602052604090205460ff1615801561153557506001600160a01b03821660009081526018602052604090205460ff16155b6115815760405162461bcd60e51b815260206004820152601960248201527f596f752063616e2774207472616e7366657220746f6b656e73000000000000006044820152606401610937565b6001600160a01b03831660009081526017602052604090205460ff161580156115c357506001600160a01b03821660009081526017602052604090205460ff16155b80156115d95750600754600160a01b900460ff16155b156117a557600754600160b01b900460ff166116305760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81b9bdd081858dd1a5d99481e595d60521b6044820152606401610937565b4360095460085461164191906122ce565b11156116b9576007546001600160a01b03838116911614611680576001600160a01b0382166000908152601860205260409020805460ff191660011790555b6007546001600160a01b038481169116146116b9576001600160a01b0383166000908152601860205260409020805460ff191660011790555b600b5481111561170b5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61785478416d6f756e740000006044820152606401610937565b6007546001600160a01b038381169116146117a557600c5481611743846001600160a01b031660009081526020819052604090205490565b61174d91906122ce565b11156117a55760405162461bcd60e51b815260206004820152602160248201527f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e6044820152601d60fa1b6064820152608401610937565b600754600090600160a01b900460ff16806117d857506001600160a01b03841660009081526017602052604090205460ff165b806117fb57506001600160a01b03831660009081526017602052604090205460ff165b156118085750600061185c565b6007546001600160a01b038481169116141561183f5760646016548361182e91906122fd565b611838919061231c565b905061185c565b60646015548361184f91906122fd565b611859919061231c565b90505b600754600160a81b900460ff16801561187f5750600754600160a01b900460ff16155b801561189957506007546001600160a01b03858116911614155b80156118a55750600081115b156118b2576118b2611ba2565b6118c684846118c184866122e6565b611d06565b80156118d7576118d7843083611d06565b50505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061191257611912612378565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561196b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198f919061235b565b816001815181106119a2576119a2612378565b6001600160a01b0392831660209182029290920101526006546119c8913091168461136d565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611a019085906000908690309042906004016123a9565b600060405180830381600087803b158015611a1b57600080fd5b505af1158015611a2f573d6000803e3d6000fd5b505050505050565b80471015611a875760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610937565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611ad4576040519150601f19603f3d011682016040523d82523d6000602084013e611ad9565b606091505b5050905080610dd25760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610937565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16610c79576007805460ff60a01b1916600160a01b179055306000908152602081905260408120549050600a548110611cf65760006016546002611bf291906122fd565b905060008160126001015484611c0891906122fd565b611c12919061231c565b90506000611c2082856122e6565b905047611c2c826118dd565b6000611c3882476122e6565b601354909150600090611c4b90876122e6565b611c55908361231c565b601354909150600090611c6890836122fd565b90508015611c7a57611c7a8682611ede565b601254600090611c8b8460026122fd565b611c9591906122fd565b90508015611cb357600d54611cb3906001600160a01b031682611a37565b601454600090611cc48560026122fd565b611cce91906122fd565b90508015611cec57600e54611cec906001600160a01b031682611a37565b5050505050505050505b506007805460ff60a01b19169055565b6001600160a01b038316611d6a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610937565b6001600160a01b038216611dcc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610937565b6001600160a01b03831660009081526020819052604090205481811015611e445760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610937565b611e4e82826122e6565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611e849084906122ce565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ed091815260200190565b60405180910390a350505050565b600654611ef69030906001600160a01b03168461136d565b600654600e5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611f66573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b6d919061241a565b600060208083528351808285015260005b81811015611fb857858101830151858201604001528201611f9c565b81811115611fca576000604083870101525b50601f01601f1916929092016040019392505050565b600080600060608486031215611ff557600080fd5b505081359360208301359350604090920135919050565b6001600160a01b0381168114610e6457600080fd5b803561202c8161200c565b919050565b6000806040838503121561204457600080fd5b823561204f8161200c565b946020939093013593505050565b60008060006060848603121561207257600080fd5b833561207d8161200c565b9250602084013561208d8161200c565b929592945050506040919091013590565b600080604083850312156120b157600080fd5b82356120bc8161200c565b915060208301356120cc8161200c565b809150509250929050565b6000602082840312156120e957600080fd5b5035919050565b60006020828403121561210257600080fd5b813561210d8161200c565b9392505050565b634e487b7160e01b600052604160045260246000fd5b6000602080838503121561213d57600080fd5b823567ffffffffffffffff8082111561215557600080fd5b818501915085601f83011261216957600080fd5b81358181111561217b5761217b612114565b8060051b604051601f19603f830116810181811085821117156121a0576121a0612114565b6040529182528482019250838101850191888311156121be57600080fd5b938501935b828510156121e3576121d485612021565b845293850193928501926121c3565b98975050505050505050565b8015158114610e6457600080fd5b60006020828403121561220f57600080fd5b813561210d816121ef565b6000806040838503121561222d57600080fd5b82356122388161200c565b915060208301356120cc816121ef565b600181811c9082168061225c57607f821691505b6020821081141561227d57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082198211156122e1576122e16122b8565b500190565b6000828210156122f8576122f86122b8565b500390565b6000816000190483118215151615612317576123176122b8565b500290565b60008261233957634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561235057600080fd5b815161210d816121ef565b60006020828403121561236d57600080fd5b815161210d8161200c565b634e487b7160e01b600052603260045260246000fd5b60006000198214156123a2576123a26122b8565b5060010190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123f95784516001600160a01b0316835293830193918301916001016123d4565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561242f57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220e0e735b23100f1a778f9ad2832001d66dd11637cbb68a1f78ef1ad4bab8fa50d64736f6c634300080c0033

Deployed Bytecode

0x6080604052600436106102815760003560e01c80638c0b5e221161014f578063a9059cbb116100c1578063e01af92c1161007a578063e01af92c146107bc578063e545fd6d146107dc578063f2fde38b146107fc578063f66895a31461081c578063f887ea401461083b578063fb53d9a21461085b57600080fd5b8063a9059cbb146106d0578063aa4bde28146106f0578063c18bc19514610706578063d34628cc14610726578063dbe66ca014610746578063dd62ed3e1461077657600080fd5b80639d0014b1116101135780639d0014b11461061b5780639e252f001461063b5780639e78fb4f1461065b578063a457c2d714610670578063a7c7f0af14610690578063a8aa1b31146106b057600080fd5b80638c0b5e22146105925780638cd4426d146105a85780638da5cb5b146105c85780638ea5220f146105e657806395d89b411461060657600080fd5b8063313ce567116101f35780636ddd1713116101ac5780636ddd17131461049457806370a08231146104b5578063715018a6146104eb578063728f8eea1461050057806375f0a8741461053a57806382aa7c681461057257600080fd5b8063313ce567146103e157806339509351146103fd57806340b28c2f1461041d5780634ada218b1461043d57806350c9a88f1461045e5780636256d1811461047457600080fd5b80631870517a116102455780631870517a1461033f5780632253163d1461035f57806323b872dd1461037557806326b5d32f14610395578063274a533c146103b5578063293b7ef4146103cb57600080fd5b80630445b6671461028d57806306fdde03146102b657806308733214146102d8578063095ea7b3146102fa57806318160ddd1461032a57600080fd5b3661028857005b600080fd5b34801561029957600080fd5b506102a3600a5481565b6040519081526020015b60405180910390f35b3480156102c257600080fd5b506102cb61087b565b6040516102ad9190611f8b565b3480156102e457600080fd5b506102f86102f3366004611fe0565b61090d565b005b34801561030657600080fd5b5061031a610315366004612031565b610984565b60405190151581526020016102ad565b34801561033657600080fd5b506002546102a3565b34801561034b57600080fd5b506102f861035a366004611fe0565b61099a565b34801561036b57600080fd5b506102a360165481565b34801561038157600080fd5b5061031a61039036600461205d565b610a08565b3480156103a157600080fd5b506102f86103b0366004611fe0565b610ab9565b3480156103c157600080fd5b506102a360085481565b3480156103d757600080fd5b506102a360155481565b3480156103ed57600080fd5b50604051601281526020016102ad565b34801561040957600080fd5b5061031a610418366004612031565b610b74565b34801561042957600080fd5b506102f861043836600461209e565b610bab565b34801561044957600080fd5b5060075461031a90600160b01b900460ff1681565b34801561046a57600080fd5b506102a360095481565b34801561048057600080fd5b506102f861048f3660046120d7565b610c03565b3480156104a057600080fd5b5060075461031a90600160a81b900460ff1681565b3480156104c157600080fd5b506102a36104d03660046120f0565b6001600160a01b031660009081526020819052604090205490565b3480156104f757600080fd5b506102f8610c45565b34801561050c57600080fd5b50600f5460105460115461051f92919083565b604080519384526020840192909252908201526060016102ad565b34801561054657600080fd5b50600d5461055a906001600160a01b031681565b6040516001600160a01b0390911681526020016102ad565b34801561057e57600080fd5b506102f861058d3660046120d7565b610c7b565b34801561059e57600080fd5b506102a3600b5481565b3480156105b457600080fd5b506102f86105c3366004612031565b610d16565b3480156105d457600080fd5b506005546001600160a01b031661055a565b3480156105f257600080fd5b50600e5461055a906001600160a01b031681565b34801561061257600080fd5b506102cb610dd7565b34801561062757600080fd5b506102f86106363660046120d7565b610de6565b34801561064757600080fd5b506102f86106563660046120d7565b610e15565b34801561066757600080fd5b506102f8610e67565b34801561067c57600080fd5b5061031a61068b366004612031565b611020565b34801561069c57600080fd5b506102f86106ab3660046120f0565b6110bb565b3480156106bc57600080fd5b5060075461055a906001600160a01b031681565b3480156106dc57600080fd5b5061031a6106eb366004612031565b611107565b3480156106fc57600080fd5b506102a3600c5481565b34801561071257600080fd5b506102f86107213660046120d7565b611114565b34801561073257600080fd5b506102f861074136600461212a565b611156565b34801561075257600080fd5b5061031a6107613660046120f0565b60176020526000908152604090205460ff1681565b34801561078257600080fd5b506102a361079136600461209e565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107c857600080fd5b506102f86107d73660046121fd565b6111ec565b3480156107e857600080fd5b506102f86107f736600461221a565b611234565b34801561080857600080fd5b506102f86108173660046120f0565b611289565b34801561082857600080fd5b5060125460135460145461051f92919083565b34801561084757600080fd5b5060065461055a906001600160a01b031681565b34801561086757600080fd5b506102f86108763660046120f0565b611321565b60606003805461088a90612248565b80601f01602080910402602001604051908101604052809291908181526020018280546108b690612248565b80156109035780601f106108d857610100808354040283529160200191610903565b820191906000526020600020905b8154815290600101906020018083116108e657829003601f168201915b5050505050905090565b6005546001600160a01b031633146109405760405162461bcd60e51b815260040161093790612283565b60405180910390fd5b6040805160608101825284815260208101849052018190526012839055601382905560148190558061097283856122ce565b61097c91906122ce565b601655505050565b600061099133848461136d565b50600192915050565b6005546001600160a01b031633146109c45760405162461bcd60e51b815260040161093790612283565b604080516060810182528481526020810184905201819052600f83905560108290556011819055806109f683856122ce565b610a0091906122ce565b601555505050565b6000610a15848484611491565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610a9a5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610937565b610aae8533610aa986856122e6565b61136d565b506001949350505050565b6005546001600160a01b03163314610ae35760405162461bcd60e51b815260040161093790612283565b47610aed846118dd565b6000610af982476122e6565b90508215610b3457610b34610b0e84866122ce565b610b1885846122fd565b610b22919061231c565b600d546001600160a01b031690611a37565b8315610b6d57610b6d610b4784866122ce565b610b5186846122fd565b610b5b919061231c565b600e546001600160a01b031690611a37565b5050505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610991918590610aa99086906122ce565b6005546001600160a01b03163314610bd55760405162461bcd60e51b815260040161093790612283565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b6005546001600160a01b03163314610c2d5760405162461bcd60e51b815260040161093790612283565b610c3f81670de0b6b3a76400006122fd565b600b5550565b6005546001600160a01b03163314610c6f5760405162461bcd60e51b815260040161093790612283565b610c796000611b50565b565b6005546001600160a01b03163314610ca55760405162461bcd60e51b815260040161093790612283565b600754600160b01b900460ff1615610cf85760405162461bcd60e51b815260206004820152601660248201527554726164696e6720616c72656164792061637469766560501b6044820152606401610937565b6007805461ffff60a81b191661010160a81b17905543600855600955565b6005546001600160a01b03163314610d405760405162461bcd60e51b815260040161093790612283565b816001600160a01b031663a9059cbb610d616005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610dae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd2919061233e565b505050565b60606004805461088a90612248565b6005546001600160a01b03163314610e105760405162461bcd60e51b815260040161093790612283565b600a55565b6005546001600160a01b03163314610e3f5760405162461bcd60e51b815260040161093790612283565b610e6481610e556005546001600160a01b031690565b6001600160a01b031690611a37565b50565b6005546001600160a01b03163314610e915760405162461bcd60e51b815260040161093790612283565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0e919061235b565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7f919061235b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610fcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff0919061235b565b600680546001600160a01b039485166001600160a01b031991821617909155600780549290941691161790915550565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156110a25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610937565b6110b13385610aa986856122e6565b5060019392505050565b6005546001600160a01b031633146110e55760405162461bcd60e51b815260040161093790612283565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610991338484611491565b6005546001600160a01b0316331461113e5760405162461bcd60e51b815260040161093790612283565b61115081670de0b6b3a76400006122fd565b600c5550565b6005546001600160a01b031633146111805760405162461bcd60e51b815260040161093790612283565b60005b81518110156111e8576001601860008484815181106111a4576111a4612378565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806111e08161238e565b915050611183565b5050565b6005546001600160a01b031633146112165760405162461bcd60e51b815260040161093790612283565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b0316331461125e5760405162461bcd60e51b815260040161093790612283565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146112b35760405162461bcd60e51b815260040161093790612283565b6001600160a01b0381166113185760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610937565b610e6481611b50565b6005546001600160a01b0316331461134b5760405162461bcd60e51b815260040161093790612283565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166113cf5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610937565b6001600160a01b0382166114305760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610937565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116114f35760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610937565b6001600160a01b03831660009081526018602052604090205460ff1615801561153557506001600160a01b03821660009081526018602052604090205460ff16155b6115815760405162461bcd60e51b815260206004820152601960248201527f596f752063616e2774207472616e7366657220746f6b656e73000000000000006044820152606401610937565b6001600160a01b03831660009081526017602052604090205460ff161580156115c357506001600160a01b03821660009081526017602052604090205460ff16155b80156115d95750600754600160a01b900460ff16155b156117a557600754600160b01b900460ff166116305760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81b9bdd081858dd1a5d99481e595d60521b6044820152606401610937565b4360095460085461164191906122ce565b11156116b9576007546001600160a01b03838116911614611680576001600160a01b0382166000908152601860205260409020805460ff191660011790555b6007546001600160a01b038481169116146116b9576001600160a01b0383166000908152601860205260409020805460ff191660011790555b600b5481111561170b5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61785478416d6f756e740000006044820152606401610937565b6007546001600160a01b038381169116146117a557600c5481611743846001600160a01b031660009081526020819052604090205490565b61174d91906122ce565b11156117a55760405162461bcd60e51b815260206004820152602160248201527f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e6044820152601d60fa1b6064820152608401610937565b600754600090600160a01b900460ff16806117d857506001600160a01b03841660009081526017602052604090205460ff165b806117fb57506001600160a01b03831660009081526017602052604090205460ff165b156118085750600061185c565b6007546001600160a01b038481169116141561183f5760646016548361182e91906122fd565b611838919061231c565b905061185c565b60646015548361184f91906122fd565b611859919061231c565b90505b600754600160a81b900460ff16801561187f5750600754600160a01b900460ff16155b801561189957506007546001600160a01b03858116911614155b80156118a55750600081115b156118b2576118b2611ba2565b6118c684846118c184866122e6565b611d06565b80156118d7576118d7843083611d06565b50505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061191257611912612378565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561196b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198f919061235b565b816001815181106119a2576119a2612378565b6001600160a01b0392831660209182029290920101526006546119c8913091168461136d565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611a019085906000908690309042906004016123a9565b600060405180830381600087803b158015611a1b57600080fd5b505af1158015611a2f573d6000803e3d6000fd5b505050505050565b80471015611a875760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610937565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611ad4576040519150601f19603f3d011682016040523d82523d6000602084013e611ad9565b606091505b5050905080610dd25760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610937565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16610c79576007805460ff60a01b1916600160a01b179055306000908152602081905260408120549050600a548110611cf65760006016546002611bf291906122fd565b905060008160126001015484611c0891906122fd565b611c12919061231c565b90506000611c2082856122e6565b905047611c2c826118dd565b6000611c3882476122e6565b601354909150600090611c4b90876122e6565b611c55908361231c565b601354909150600090611c6890836122fd565b90508015611c7a57611c7a8682611ede565b601254600090611c8b8460026122fd565b611c9591906122fd565b90508015611cb357600d54611cb3906001600160a01b031682611a37565b601454600090611cc48560026122fd565b611cce91906122fd565b90508015611cec57600e54611cec906001600160a01b031682611a37565b5050505050505050505b506007805460ff60a01b19169055565b6001600160a01b038316611d6a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610937565b6001600160a01b038216611dcc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610937565b6001600160a01b03831660009081526020819052604090205481811015611e445760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610937565b611e4e82826122e6565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611e849084906122ce565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ed091815260200190565b60405180910390a350505050565b600654611ef69030906001600160a01b03168461136d565b600654600e5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611f66573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b6d919061241a565b600060208083528351808285015260005b81811015611fb857858101830151858201604001528201611f9c565b81811115611fca576000604083870101525b50601f01601f1916929092016040019392505050565b600080600060608486031215611ff557600080fd5b505081359360208301359350604090920135919050565b6001600160a01b0381168114610e6457600080fd5b803561202c8161200c565b919050565b6000806040838503121561204457600080fd5b823561204f8161200c565b946020939093013593505050565b60008060006060848603121561207257600080fd5b833561207d8161200c565b9250602084013561208d8161200c565b929592945050506040919091013590565b600080604083850312156120b157600080fd5b82356120bc8161200c565b915060208301356120cc8161200c565b809150509250929050565b6000602082840312156120e957600080fd5b5035919050565b60006020828403121561210257600080fd5b813561210d8161200c565b9392505050565b634e487b7160e01b600052604160045260246000fd5b6000602080838503121561213d57600080fd5b823567ffffffffffffffff8082111561215557600080fd5b818501915085601f83011261216957600080fd5b81358181111561217b5761217b612114565b8060051b604051601f19603f830116810181811085821117156121a0576121a0612114565b6040529182528482019250838101850191888311156121be57600080fd5b938501935b828510156121e3576121d485612021565b845293850193928501926121c3565b98975050505050505050565b8015158114610e6457600080fd5b60006020828403121561220f57600080fd5b813561210d816121ef565b6000806040838503121561222d57600080fd5b82356122388161200c565b915060208301356120cc816121ef565b600181811c9082168061225c57607f821691505b6020821081141561227d57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082198211156122e1576122e16122b8565b500190565b6000828210156122f8576122f86122b8565b500390565b6000816000190483118215151615612317576123176122b8565b500290565b60008261233957634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561235057600080fd5b815161210d816121ef565b60006020828403121561236d57600080fd5b815161210d8161200c565b634e487b7160e01b600052603260045260246000fd5b60006000198214156123a2576123a26122b8565b5060010190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123f95784516001600160a01b0316835293830193918301916001016123d4565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561242f57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220e0e735b23100f1a778f9ad2832001d66dd11637cbb68a1f78ef1ad4bab8fa50d64736f6c634300080c0033

Deployed Bytecode Sourcemap

7781:8249:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8105:45;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;8105:45:0;;;;;;;;1716:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;13960:214::-;;;;;;;;;;-1:-1:-1;13960:214:0;;;;;:::i;:::-;;:::i;:::-;;2630:169;;;;;;;;;;-1:-1:-1;2630:169:0;;;;;:::i;:::-;;:::i;:::-;;;1879:14:1;;1872:22;1854:41;;1842:2;1827:18;2630:169:0;1714:187:1;2037:108:0;;;;;;;;;;-1:-1:-1;2125:12:0;;2037:108;;13747:205;;;;;;;;;;-1:-1:-1;13747:205:0;;;;;:::i;:::-;;:::i;8676:30::-;;;;;;;;;;;;;;;;2807:422;;;;;;;;;;-1:-1:-1;2807:422:0;;;;;:::i;:::-;;:::i;15420:546::-;;;;;;;;;;-1:-1:-1;15420:546:0;;;;;:::i;:::-;;:::i;8028:28::-;;;;;;;;;;;;;;;;8642:26;;;;;;;;;;;;;;;;1936:93;;;;;;;;;;-1:-1:-1;1936:93:0;;2019:2;2509:36:1;;2497:2;2482:18;1936:93:0;2367:184:1;3237:215:0;;;;;;;;;;-1:-1:-1;3237:215:0;;;;;:::i;:::-;;:::i;14427:137::-;;;;;;;;;;-1:-1:-1;14427:137:0;;;;;:::i;:::-;;:::i;7993:26::-;;;;;;;;;;-1:-1:-1;7993:26:0;;;;-1:-1:-1;;;7993:26:0;;;;;;8063:29;;;;;;;;;;;;;;;;14904:109;;;;;;;;;;-1:-1:-1;14904:109:0;;;;;:::i;:::-;;:::i;7963:23::-;;;;;;;;;;-1:-1:-1;7963:23:0;;;;-1:-1:-1;;;7963:23:0;;;;;;2153:127;;;;;;;;;;-1:-1:-1;2153:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;2254:18:0;2227:7;2254:18;;;;;;;;;;;;2153:127;6558:94;;;;;;;;;;;;;:::i;8554:34::-;;;;;;;;;;-1:-1:-1;8554:34:0;;;;;;;;;;;;;;;;3603:25:1;;;3659:2;3644:18;;3637:34;;;;3687:18;;;3680:34;3591:2;3576:18;8554:34:0;3401:319:1;8277:75:0;;;;;;;;;;-1:-1:-1;8277:75:0;;;;-1:-1:-1;;;;;8277:75:0;;;;;;-1:-1:-1;;;;;3889:32:1;;;3871:51;;3859:2;3844:18;8277:75:0;3725:203:1;13465:274:0;;;;;;;;;;-1:-1:-1;13465:274:0;;;;;:::i;:::-;;:::i;8157:47::-;;;;;;;;;;;;;;;;15150:142;;;;;;;;;;-1:-1:-1;15150:142:0;;;;;:::i;:::-;;:::i;6335:87::-;;;;;;;;;;-1:-1:-1;6408:6:0;;-1:-1:-1;;;;;6408:6:0;6335:87;;8360:69;;;;;;;;;;-1:-1:-1;8360:69:0;;;;-1:-1:-1;;;;;8360:69:0;;;1824:104;;;;;;;;;;;;;:::i;13347:110::-;;;;;;;;;;-1:-1:-1;13347:110:0;;;;;:::i;:::-;;:::i;15300:112::-;;;;;;;;;;-1:-1:-1;15300:112:0;;;;;:::i;:::-;;:::i;9297:290::-;;;;;;;;;;;;;:::i;3460:377::-;;;;;;;;;;-1:-1:-1;3460:377:0;;;;;:::i;:::-;;:::i;14314:105::-;;;;;;;;;;-1:-1:-1;14314:105:0;;;;;:::i;:::-;;:::i;7903:19::-;;;;;;;;;;-1:-1:-1;7903:19:0;;;;-1:-1:-1;;;;;7903:19:0;;;2288:175;;;;;;;;;;-1:-1:-1;2288:175:0;;;;;:::i;:::-;;:::i;8212:51::-;;;;;;;;;;;;;;;;15025:117;;;;;;;;;;-1:-1:-1;15025:117:0;;;;;:::i;:::-;;:::i;14580:172::-;;;;;;;;;;-1:-1:-1;14580:172:0;;;;;:::i;:::-;;:::i;8720:49::-;;;;;;;;;;-1:-1:-1;8720:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;2471:151;;;;;;;;;;-1:-1:-1;2471:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;2587:18:0;;;2560:7;2587:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2471:151;13246:93;;;;;;;;;;-1:-1:-1;13246:93:0;;;;;:::i;:::-;;:::i;14758:134::-;;;;;;;;;;-1:-1:-1;14758:134:0;;;;;:::i;:::-;;:::i;6660:192::-;;;;;;;;;;-1:-1:-1;6660:192:0;;;;;:::i;:::-;;:::i;8596:38::-;;;;;;;;;;-1:-1:-1;8596:38:0;;;;;;;;;;;;7875:21;;;;;;;;;;-1:-1:-1;7875:21:0;;;;-1:-1:-1;;;;;7875:21:0;;;14186:116;;;;;;;;;;-1:-1:-1;14186:116:0;;;;;:::i;:::-;;:::i;1716:100::-;1770:13;1803:5;1796:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1716:100;:::o;13960:214::-;6408:6;;-1:-1:-1;;;;;6408:6:0;198:10;6470:23;6462:68;;;;-1:-1:-1;;;6462:68:0;;;;;;;:::i;:::-;;;;;;;;;14077:35:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;14065:9:::1;:47:::0;;;;;;;;;;;14107:4;14136:23:::1;14095:10:::0;14083;14136:23:::1;:::i;:::-;:30;;;;:::i;:::-;14123:10;:43:::0;-1:-1:-1;;;13960:214:0:o;2630:169::-;2713:4;2730:39;198:10;2753:7;2762:6;2730:8;:39::i;:::-;-1:-1:-1;2787:4:0;2630:169;;;;:::o;13747:205::-;6408:6;;-1:-1:-1;;;;;6408:6:0;198:10;6470:23;6462:68;;;;-1:-1:-1;;;6462:68:0;;;;;;;:::i;:::-;13859:35:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;13851:5:::1;:43:::0;;;;;;;;;;;13889:4;13914:23:::1;13877:10:::0;13865;13914:23:::1;:::i;:::-;:30;;;;:::i;:::-;13905:6;:39:::0;-1:-1:-1;;;13747:205:0:o;2807:422::-;2913:4;2930:36;2940:6;2948:9;2959:6;2930:9;:36::i;:::-;-1:-1:-1;;;;;3006:19:0;;2979:24;3006:19;;;:11;:19;;;;;;;;198:10;3006:33;;;;;;;;3058:26;;;;3050:79;;;;-1:-1:-1;;;3050:79:0;;7776:2:1;3050:79:0;;;7758:21:1;7815:2;7795:18;;;7788:30;7854:34;7834:18;;;7827:62;-1:-1:-1;;;7905:18:1;;;7898:38;7953:19;;3050:79:0;7574:404:1;3050:79:0;3140:57;3149:6;198:10;3171:25;3190:6;3171:16;:25;:::i;:::-;3140:8;:57::i;:::-;-1:-1:-1;3217:4:0;;2807:422;-1:-1:-1;;;;2807:422:0:o;15420:546::-;6408:6;;-1:-1:-1;;;;;6408:6:0;198:10;6470:23;6462:68;;;;-1:-1:-1;;;6462:68:0;;;;;;;:::i;:::-;15559:21:::1;15591:24;15608:6:::0;15591:16:::1;:24::i;:::-;15626:18;15647:35;15671:11:::0;15647:21:::1;:35;:::i;:::-;15626:56:::0;-1:-1:-1;15696:23:0;;15693:136:::1;;15721:108;15792:35;15808:19:::0;15792:13;:35:::1;:::i;:::-;15756:32;15769:19:::0;15756:10;:32:::1;:::i;:::-;:72;;;;:::i;:::-;15729:15;::::0;-1:-1:-1;;;;;15729:15:0::1;::::0;15721:34:::1;:108::i;:::-;15843:17:::0;;15840:118:::1;;15862:96;15921:35;15937:19:::0;15921:13;:35:::1;:::i;:::-;15891:26;15904:13:::0;15891:10;:26:::1;:::i;:::-;:66;;;;:::i;:::-;15870:9;::::0;-1:-1:-1;;;;;15870:9:0::1;::::0;15862:28:::1;:96::i;:::-;15526:440;;15420:546:::0;;;:::o;3237:215::-;198:10;3325:4;3374:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3374:34:0;;;;;;;;;;3325:4;;3342:80;;3365:7;;3374:47;;3411:10;;3374:47;:::i;14427:137::-;6408:6;;-1:-1:-1;;;;;6408:6:0;198:10;6470:23;6462:68;;;;-1:-1:-1;;;6462:68:0;;;;;;;:::i;:::-;14517:6:::1;:16:::0;;-1:-1:-1;;;;;14517:16:0;;::::1;-1:-1:-1::0;;;;;;14517:16:0;;::::1;;::::0;;;14544:4:::1;:12:::0;;;;;::::1;::::0;::::1;;::::0;;14427:137::o;14904:109::-;6408:6;;-1:-1:-1;;;;;6408:6:0;198:10;6470:23;6462:68;;;;-1:-1:-1;;;6462:68:0;;;;;;;:::i;:::-;14990:15:::1;:6:::0;14999::::1;14990:15;:::i;:::-;14976:11;:29:::0;-1:-1:-1;14904:109:0:o;6558:94::-;6408:6;;-1:-1:-1;;;;;6408:6:0;198:10;6470:23;6462:68;;;;-1:-1:-1;;;6462:68:0;;;;;;;:::i;:::-;6623:21:::1;6641:1;6623:9;:21::i;:::-;6558:94::o:0;13465:274::-;6408:6;;-1:-1:-1;;;;;6408:6:0;198:10;6470:23;6462:68;;;;-1:-1:-1;;;6462:68:0;;;;;;;:::i;:::-;13551:14:::1;::::0;-1:-1:-1;;;13551:14:0;::::1;;;13550:15;13542:50;;;::::0;-1:-1:-1;;;13542:50:0;;8710:2:1;13542:50:0::1;::::0;::::1;8692:21:1::0;8749:2;8729:18;;;8722:30;-1:-1:-1;;;8768:18:1;;;8761:52;8830:18;;13542:50:0::1;8508:346:1::0;13542:50:0::1;13603:14;:21:::0;;-1:-1:-1;;;;13635:18:0;-1:-1:-1;;;13635:18:0;;;13680:12:::1;13664:13;:28:::0;13703:10:::1;:28:::0;13465:274::o;15150:142::-;6408:6;;-1:-1:-1;;;;;6408:6:0;198:10;6470:23;6462:68;;;;-1:-1:-1;;;6462:68:0;;;;;;;:::i;:::-;15245:12:::1;-1:-1:-1::0;;;;;15238:29:0::1;;15268:7;6408:6:::0;;-1:-1:-1;;;;;6408:6:0;;6335:87;15268:7:::1;15238:46;::::0;-1:-1:-1;;;;;;15238:46:0::1;::::0;;;;;;-1:-1:-1;;;;;9051:32:1;;;15238:46:0::1;::::0;::::1;9033:51:1::0;9100:18;;;9093:34;;;9006:18;;15238:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15150:142:::0;;:::o;1824:104::-;1880:13;1913:7;1906:14;;;;;:::i;13347:110::-;6408:6;;-1:-1:-1;;;;;6408:6:0;198:10;6470:23;6462:68;;;;-1:-1:-1;;;6462:68:0;;;;;;;:::i;:::-;13423:13:::1;:26:::0;13347:110::o;15300:112::-;6408:6;;-1:-1:-1;;;;;6408:6:0;198:10;6470:23;6462:68;;;;-1:-1:-1;;;6462:68:0;;;;;;;:::i;:::-;15367:37:::1;15394:9;15375:7;6408:6:::0;;-1:-1:-1;;;;;6408:6:0;;6335:87;15375:7:::1;-1:-1:-1::0;;;;;15367:26:0::1;::::0;::::1;:37::i;:::-;15300:112:::0;:::o;9297:290::-;6408:6;;-1:-1:-1;;;;;6408:6:0;198:10;6470:23;6462:68;;;;-1:-1:-1;;;6462:68:0;;;;;;;:::i;:::-;9348:15:::1;9374:42;9348:69;;9428:13;9453:7;-1:-1:-1::0;;;;;9453:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9444:52:0::1;;9505:4;9512:7;-1:-1:-1::0;;;;;9512:12:0::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9444:83;::::0;-1:-1:-1;;;;;;9444:83:0::1;::::0;;;;;;-1:-1:-1;;;;;9874:15:1;;;9444:83:0::1;::::0;::::1;9856:34:1::0;9926:15;;9906:18;;;9899:43;9791:18;;9444:83:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9540:6;:16:::0;;-1:-1:-1;;;;;9540:16:0;;::::1;-1:-1:-1::0;;;;;;9540:16:0;;::::1;;::::0;;;9567:4:::1;:12:::0;;;;;::::1;::::0;::::1;;::::0;;;-1:-1:-1;9297:290:0:o;3460:377::-;198:10;3553:4;3597:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3597:34:0;;;;;;;;;;3650:35;;;;3642:85;;;;-1:-1:-1;;;3642:85:0;;10155:2:1;3642:85:0;;;10137:21:1;10194:2;10174:18;;;10167:30;10233:34;10213:18;;;10206:62;-1:-1:-1;;;10284:18:1;;;10277:35;10329:19;;3642:85:0;9953:401:1;3642:85:0;3738:67;198:10;3761:7;3770:34;3789:15;3770:16;:34;:::i;3738:67::-;-1:-1:-1;3825:4:0;;3460:377;-1:-1:-1;;;3460:377:0:o;14314:105::-;6408:6;;-1:-1:-1;;;;;6408:6:0;198:10;6470:23;6462:68;;;;-1:-1:-1;;;6462:68:0;;;;;;;:::i;:::-;14390:9:::1;:21:::0;;-1:-1:-1;;;;;;14390:21:0::1;-1:-1:-1::0;;;;;14390:21:0;;;::::1;::::0;;;::::1;::::0;;14314:105::o;2288:175::-;2374:4;2391:42;198:10;2415:9;2426:6;2391:9;:42::i;15025:117::-;6408:6;;-1:-1:-1;;;;;6408:6:0;198:10;6470:23;6462:68;;;;-1:-1:-1;;;6462:68:0;;;;;;;:::i;:::-;15119:15:::1;:6:::0;15128::::1;15119:15;:::i;:::-;15101;:33:::0;-1:-1:-1;15025:117:0:o;14580:172::-;6408:6;;-1:-1:-1;;;;;6408:6:0;198:10;6470:23;6462:68;;;;-1:-1:-1;;;6462:68:0;;;;;;;:::i;:::-;14655:6:::1;14650:91;14671:6;:13;14667:1;:17;14650:91;;;14725:4;14706:5;:16;14712:6;14719:1;14712:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;14706:16:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;14706:16:0;:23;;-1:-1:-1;;14706:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14686:3;::::1;::::0;::::1;:::i;:::-;;;;14650:91;;;;14580:172:::0;:::o;13246:93::-;6408:6;;-1:-1:-1;;;;;6408:6:0;198:10;6470:23;6462:68;;;;-1:-1:-1;;;6462:68:0;;;;;;;:::i;:::-;13312:11:::1;:19:::0;;;::::1;;-1:-1:-1::0;;;13312:19:0::1;-1:-1:-1::0;;;;13312:19:0;;::::1;::::0;;;::::1;::::0;;13246:93::o;14758:134::-;6408:6;;-1:-1:-1;;;;;6408:6:0;198:10;6470:23;6462:68;;;;-1:-1:-1;;;6462:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14850:26:0;;;::::1;;::::0;;;:16:::1;:26;::::0;;;;:34;;-1:-1:-1;;14850:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14758:134::o;6660:192::-;6408:6;;-1:-1:-1;;;;;6408:6:0;198:10;6470:23;6462:68;;;;-1:-1:-1;;;6462:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6749:22:0;::::1;6741:73;;;::::0;-1:-1:-1;;;6741:73:0;;10833:2:1;6741:73:0::1;::::0;::::1;10815:21:1::0;10872:2;10852:18;;;10845:30;10911:34;10891:18;;;10884:62;-1:-1:-1;;;10962:18:1;;;10955:36;11008:19;;6741:73:0::1;10631:402:1::0;6741:73:0::1;6825:19;6835:8;6825:9;:19::i;14186:116::-:0;6408:6;;-1:-1:-1;;;;;6408:6:0;198:10;6470:23;6462:68;;;;-1:-1:-1;;;6462:68:0;;;;;;;:::i;:::-;14267:15:::1;:27:::0;;-1:-1:-1;;;;;;14267:27:0::1;-1:-1:-1::0;;;;;14267:27:0;;;::::1;::::0;;;::::1;::::0;;14186:116::o;5305:346::-;-1:-1:-1;;;;;5407:19:0;;5399:68;;;;-1:-1:-1;;;5399:68:0;;11240:2:1;5399:68:0;;;11222:21:1;11279:2;11259:18;;;11252:30;11318:34;11298:18;;;11291:62;-1:-1:-1;;;11369:18:1;;;11362:34;11413:19;;5399:68:0;11038:400:1;5399:68:0;-1:-1:-1;;;;;5486:21:0;;5478:68;;;;-1:-1:-1;;;5478:68:0;;11645:2:1;5478:68:0;;;11627:21:1;11684:2;11664:18;;;11657:30;11723:34;11703:18;;;11696:62;-1:-1:-1;;;11774:18:1;;;11767:32;11816:19;;5478:68:0;11443:398:1;5478:68:0;-1:-1:-1;;;;;5559:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5611:32;;160:25:1;;;5611:32:0;;133:18:1;5611:32:0;;;;;;;5305:346;;;:::o;9599:1389::-;9715:1;9706:6;:10;9698:64;;;;-1:-1:-1;;;9698:64:0;;12048:2:1;9698:64:0;;;12030:21:1;12087:2;12067:18;;;12060:30;12126:34;12106:18;;;12099:62;-1:-1:-1;;;12177:18:1;;;12170:39;12226:19;;9698:64:0;11846:405:1;9698:64:0;-1:-1:-1;;;;;9782:13:0;;;;;;:5;:13;;;;;;;;9781:14;:35;;;;-1:-1:-1;;;;;;9800:16:0;;;;;;:5;:16;;;;;;;;9799:17;9781:35;9773:73;;;;-1:-1:-1;;;9773:73:0;;12458:2:1;9773:73:0;;;12440:21:1;12497:2;12477:18;;;12470:30;12536:27;12516:18;;;12509:55;12581:18;;9773:73:0;12256:349:1;9773:73:0;-1:-1:-1;;;;;9889:24:0;;;;;;:16;:24;;;;;;;;9888:25;:57;;;;-1:-1:-1;;;;;;9918:27:0;;;;;;:16;:27;;;;;;;;9917:28;9888:57;:70;;;;-1:-1:-1;9950:8:0;;-1:-1:-1;;;9950:8:0;;;;9949:9;9888:70;9885:589;;;9982:14;;-1:-1:-1;;;9982:14:0;;;;9974:49;;;;-1:-1:-1;;;9974:49:0;;12812:2:1;9974:49:0;;;12794:21:1;12851:2;12831:18;;;12824:30;-1:-1:-1;;;12870:18:1;;;12863:52;12932:18;;9974:49:0;12610:346:1;9974:49:0;10070:12;10057:10;;10041:13;;:26;;;;:::i;:::-;:41;10038:183;;;10118:4;;-1:-1:-1;;;;;10105:17:0;;;10118:4;;10105:17;10102:45;;-1:-1:-1;;;;;10124:16:0;;;;;;:5;:16;;;;;:23;;-1:-1:-1;;10124:23:0;10143:4;10124:23;;;10102:45;10179:4;;-1:-1:-1;;;;;10169:14:0;;;10179:4;;10169:14;10166:39;;-1:-1:-1;;;;;10185:13:0;;;;;;:5;:13;;;;;:20;;-1:-1:-1;;10185:20:0;10201:4;10185:20;;;10166:39;10253:11;;10243:6;:21;;10235:63;;;;-1:-1:-1;;;10235:63:0;;13163:2:1;10235:63:0;;;13145:21:1;13202:2;13182:18;;;13175:30;13241:31;13221:18;;;13214:59;13290:18;;10235:63:0;12961:353:1;10235:63:0;10329:4;;-1:-1:-1;;;;;10316:17:0;;;10329:4;;10316:17;10313:150;;10394:15;;10384:6;10361:20;10371:9;-1:-1:-1;;;;;2254:18:0;2227:7;2254:18;;;;;;;;;;;;2153:127;10361:20;:29;;;;:::i;:::-;:48;;10353:94;;;;-1:-1:-1;;;10353:94:0;;13521:2:1;10353:94:0;;;13503:21:1;13560:2;13540:18;;;13533:30;13599:34;13579:18;;;13572:62;-1:-1:-1;;;13650:18:1;;;13643:31;13691:19;;10353:94:0;13319:397:1;10353:94:0;10526:8;;10486:11;;-1:-1:-1;;;10526:8:0;;;;;:36;;-1:-1:-1;;;;;;10538:24:0;;;;;;:16;:24;;;;;;;;10526:36;:67;;;-1:-1:-1;;;;;;10566:27:0;;;;;;:16;:27;;;;;;;;10526:67;10522:235;;;-1:-1:-1;10601:1:0;10522:235;;;10661:4;;-1:-1:-1;;;;;10648:17:0;;;10661:4;;10648:17;10645:100;;;10695:3;10682:10;;10673:6;:19;;;;:::i;:::-;:25;;;;:::i;:::-;10667:31;;10645:100;;;10742:3;10733:6;;10724;:15;;;;:::i;:::-;:21;;;;:::i;:::-;10718:27;;10645:100;10783:11;;-1:-1:-1;;;10783:11:0;;;;:24;;;;-1:-1:-1;10799:8:0;;-1:-1:-1;;;10799:8:0;;;;10798:9;10783:24;:42;;;;-1:-1:-1;10821:4:0;;-1:-1:-1;;;;;10811:14:0;;;10821:4;;10811:14;;10783:42;:53;;;;;10835:1;10829:3;:7;10783:53;10779:72;;;10838:13;:11;:13::i;:::-;10864:48;10880:6;10888:9;10899:12;10908:3;10899:6;:12;:::i;:::-;10864:15;:48::i;:::-;10926:7;;10923:55;;10935:43;10951:6;10967:4;10974:3;10935:15;:43::i;:::-;9687:1301;9599:1389;;;:::o;12333:400::-;12423:16;;;12437:1;12423:16;;;;;;;;12399:21;;12423:16;;;;;;;;;;-1:-1:-1;12423:16:0;12399:40;;12468:4;12450;12455:1;12450:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12450:23:0;;;:7;;;;;;;;;;:23;;;;12494:6;;:13;;;-1:-1:-1;;;12494:13:0;;;;:6;;;;;:11;;:13;;;;;12450:7;;12494:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12484:4;12489:1;12484:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12484:23:0;;;:7;;;;;;;;;:23;12552:6;;12520:53;;12537:4;;12552:6;12561:11;12520:8;:53::i;:::-;12612:6;;:111;;-1:-1:-1;;;12612:111:0;;-1:-1:-1;;;;;12612:6:0;;;;:57;;:111;;12670:11;;12612:6;;12686:4;;12700;;12707:15;;12612:111;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12388:345;12333:400;:::o;5780:317::-;5895:6;5870:21;:31;;5862:73;;;;-1:-1:-1;;;5862:73:0;;14908:2:1;5862:73:0;;;14890:21:1;14947:2;14927:18;;;14920:30;14986:31;14966:18;;;14959:59;15035:18;;5862:73:0;14706:353:1;5862:73:0;5949:12;5967:9;-1:-1:-1;;;;;5967:14:0;5989:6;5967:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5948:52;;;6019:7;6011:78;;;;-1:-1:-1;;;6011:78:0;;15476:2:1;6011:78:0;;;15458:21:1;15515:2;15495:18;;;15488:30;15554:34;15534:18;;;15527:62;15625:28;15605:18;;;15598:56;15671:19;;6011:78:0;15274:422:1;6860:173:0;6935:6;;;-1:-1:-1;;;;;6952:17:0;;;-1:-1:-1;;;;;;6952:17:0;;;;;;;6985:40;;6935:6;;;6952:17;6935:6;;6985:40;;6916:16;;6985:40;6905:128;6860:173;:::o;10996:1327::-;8862:8;;-1:-1:-1;;;8862:8:0;;;;8857:104;;8887:8;:15;;-1:-1:-1;;;;8887:15:0;-1:-1:-1;;;8887:15:0;;;11089:4:::1;-1:-1:-1::0;2254:18:0;;;;;;;;;;;11045:50:::1;;11129:13;;11110:15;:32;11106:1210;;11169:19;11191:10;;11204:1;11191:14;;;;:::i;:::-;11169:36;;11220:32;11295:11;11273:9;:19;;;11255:15;:37;;;;:::i;:::-;:51;;;;:::i;:::-;11220:86:::0;-1:-1:-1;11321:14:0::1;11338:42;11220:86:::0;11338:15;:42:::1;:::i;:::-;11321:59:::0;-1:-1:-1;11426:21:0::1;11468:24;11321:59:::0;11468:16:::1;:24::i;:::-;11513:20;11536:38;11560:14:::0;11536:21:::1;:38;:::i;:::-;11640:19:::0;;11513:61;;-1:-1:-1;11589:19:0::1;::::0;11626:33:::1;::::0;:11;:33:::1;:::i;:::-;11610:50;::::0;:12;:50:::1;:::i;:::-;11721:19:::0;;11589:71;;-1:-1:-1;11675:29:0::1;::::0;11707:33:::1;::::0;11589:71;11707:33:::1;:::i;:::-;11675:65:::0;-1:-1:-1;11764:25:0;;11761:170:::1;;11854:61;11867:24;11893:21;11854:12;:61::i;:::-;11992:9;:19:::0;11951:20:::1;::::0;11974:15:::1;:11:::0;11988:1:::1;11974:15;:::i;:::-;:37;;;;:::i;:::-;11951:60:::0;-1:-1:-1;12029:16:0;;12026:103:::1;;12073:15;::::0;12065:48:::1;::::0;-1:-1:-1;;;;;12073:15:0::1;12100:12:::0;12065:34:::1;:48::i;:::-;12192:13:::0;;12157:14:::1;::::0;12174:15:::1;:11:::0;12192:13:::1;12174:15;:::i;:::-;:31;;;;:::i;:::-;12157:48:::0;-1:-1:-1;12223:10:0;;12220:85:::1;;12261:9;::::0;12253:36:::1;::::0;-1:-1:-1;;;;;12261:9:0::1;12282:6:::0;12253:28:::1;:36::i;:::-;11144:1172;;;;;;;;;11106:1210;-1:-1:-1::0;8933:8:0;:16;;-1:-1:-1;;;;8933:16:0;;;10996:1327::o;3845:604::-;-1:-1:-1;;;;;3951:20:0;;3943:70;;;;-1:-1:-1;;;3943:70:0;;15903:2:1;3943:70:0;;;15885:21:1;15942:2;15922:18;;;15915:30;15981:34;15961:18;;;15954:62;-1:-1:-1;;;16032:18:1;;;16025:35;16077:19;;3943:70:0;15701:401:1;3943:70:0;-1:-1:-1;;;;;4032:23:0;;4024:71;;;;-1:-1:-1;;;4024:71:0;;16309:2:1;4024:71:0;;;16291:21:1;16348:2;16328:18;;;16321:30;16387:34;16367:18;;;16360:62;-1:-1:-1;;;16438:18:1;;;16431:33;16481:19;;4024:71:0;16107:399:1;4024:71:0;-1:-1:-1;;;;;4192:17:0;;4168:21;4192:17;;;;;;;;;;;4228:23;;;;4220:74;;;;-1:-1:-1;;;4220:74:0;;16713:2:1;4220:74:0;;;16695:21:1;16752:2;16732:18;;;16725:30;16791:34;16771:18;;;16764:62;-1:-1:-1;;;16842:18:1;;;16835:36;16888:19;;4220:74:0;16511:402:1;4220:74:0;4325:22;4341:6;4325:13;:22;:::i;:::-;-1:-1:-1;;;;;4305:17:0;;;:9;:17;;;;;;;;;;;:42;;;;4358:20;;;;;;;;:30;;4382:6;;4305:9;4358:30;;4382:6;;4358:30;:::i;:::-;;;;;;;;4423:9;-1:-1:-1;;;;;4406:35:0;4415:6;-1:-1:-1;;;;;4406:35:0;;4434:6;4406:35;;;;160:25:1;;148:2;133:18;;14:177;4406:35:0;;;;;;;;3932:517;3845:604;;;:::o;12741:497::-;12921:6;;12889:53;;12906:4;;-1:-1:-1;;;;;12921:6:0;12930:11;12889:8;:53::i;:::-;12985:6;;13180:9;;12985:245;;-1:-1:-1;;;12985:245:0;;13048:4;12985:245;;;17259:34:1;17309:18;;;17302:34;;;12985:6:0;17352:18:1;;;17345:34;;;17395:18;;;17388:34;-1:-1:-1;;;;;13180:9:0;;;17438:19:1;;;17431:44;13204:15:0;17491:19:1;;;17484:35;12985:6:0;;;:22;;13015:9;;17193:19:1;;12985:245:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;196:597:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;634:6;631:1;628:13;625:91;;;704:1;699:2;690:6;679:9;675:22;671:31;664:42;625:91;-1:-1:-1;777:2:1;756:15;-1:-1:-1;;752:29:1;737:45;;;;784:2;733:54;;196:597;-1:-1:-1;;;196:597:1:o;798:316::-;875:6;883;891;944:2;932:9;923:7;919:23;915:32;912:52;;;960:1;957;950:12;912:52;-1:-1:-1;;983:23:1;;;1053:2;1038:18;;1025:32;;-1:-1:-1;1104:2:1;1089:18;;;1076:32;;798:316;-1:-1:-1;798:316:1:o;1119:131::-;-1:-1:-1;;;;;1194:31:1;;1184:42;;1174:70;;1240:1;1237;1230:12;1255:134;1323:20;;1352:31;1323:20;1352:31;:::i;:::-;1255:134;;;:::o;1394:315::-;1462:6;1470;1523:2;1511:9;1502:7;1498:23;1494:32;1491:52;;;1539:1;1536;1529:12;1491:52;1578:9;1565:23;1597:31;1622:5;1597:31;:::i;:::-;1647:5;1699:2;1684:18;;;;1671:32;;-1:-1:-1;;;1394:315:1:o;1906:456::-;1983:6;1991;1999;2052:2;2040:9;2031:7;2027:23;2023:32;2020:52;;;2068:1;2065;2058:12;2020:52;2107:9;2094:23;2126:31;2151:5;2126:31;:::i;:::-;2176:5;-1:-1:-1;2233:2:1;2218:18;;2205:32;2246:33;2205:32;2246:33;:::i;:::-;1906:456;;2298:7;;-1:-1:-1;;;2352:2:1;2337:18;;;;2324:32;;1906:456::o;2556:403::-;2639:6;2647;2700:2;2688:9;2679:7;2675:23;2671:32;2668:52;;;2716:1;2713;2706:12;2668:52;2755:9;2742:23;2774:31;2799:5;2774:31;:::i;:::-;2824:5;-1:-1:-1;2881:2:1;2866:18;;2853:32;2894:33;2853:32;2894:33;:::i;:::-;2946:7;2936:17;;;2556:403;;;;;:::o;2964:180::-;3023:6;3076:2;3064:9;3055:7;3051:23;3047:32;3044:52;;;3092:1;3089;3082:12;3044:52;-1:-1:-1;3115:23:1;;2964:180;-1:-1:-1;2964:180:1:o;3149:247::-;3208:6;3261:2;3249:9;3240:7;3236:23;3232:32;3229:52;;;3277:1;3274;3267:12;3229:52;3316:9;3303:23;3335:31;3360:5;3335:31;:::i;:::-;3385:5;3149:247;-1:-1:-1;;;3149:247:1:o;3933:127::-;3994:10;3989:3;3985:20;3982:1;3975:31;4025:4;4022:1;4015:15;4049:4;4046:1;4039:15;4065:1121;4149:6;4180:2;4223;4211:9;4202:7;4198:23;4194:32;4191:52;;;4239:1;4236;4229:12;4191:52;4279:9;4266:23;4308:18;4349:2;4341:6;4338:14;4335:34;;;4365:1;4362;4355:12;4335:34;4403:6;4392:9;4388:22;4378:32;;4448:7;4441:4;4437:2;4433:13;4429:27;4419:55;;4470:1;4467;4460:12;4419:55;4506:2;4493:16;4528:2;4524;4521:10;4518:36;;;4534:18;;:::i;:::-;4580:2;4577:1;4573:10;4612:2;4606:9;4675:2;4671:7;4666:2;4662;4658:11;4654:25;4646:6;4642:38;4730:6;4718:10;4715:22;4710:2;4698:10;4695:18;4692:46;4689:72;;;4741:18;;:::i;:::-;4777:2;4770:22;4827:18;;;4861:15;;;;-1:-1:-1;4903:11:1;;;4899:20;;;4931:19;;;4928:39;;;4963:1;4960;4953:12;4928:39;4987:11;;;;5007:148;5023:6;5018:3;5015:15;5007:148;;;5089:23;5108:3;5089:23;:::i;:::-;5077:36;;5040:12;;;;5133;;;;5007:148;;;5174:6;4065:1121;-1:-1:-1;;;;;;;;4065:1121:1:o;5584:118::-;5670:5;5663:13;5656:21;5649:5;5646:32;5636:60;;5692:1;5689;5682:12;5707:241;5763:6;5816:2;5804:9;5795:7;5791:23;5787:32;5784:52;;;5832:1;5829;5822:12;5784:52;5871:9;5858:23;5890:28;5912:5;5890:28;:::i;5953:382::-;6018:6;6026;6079:2;6067:9;6058:7;6054:23;6050:32;6047:52;;;6095:1;6092;6085:12;6047:52;6134:9;6121:23;6153:31;6178:5;6153:31;:::i;:::-;6203:5;-1:-1:-1;6260:2:1;6245:18;;6232:32;6273:30;6232:32;6273:30;:::i;6563:380::-;6642:1;6638:12;;;;6685;;;6706:61;;6760:4;6752:6;6748:17;6738:27;;6706:61;6813:2;6805:6;6802:14;6782:18;6779:38;6776:161;;;6859:10;6854:3;6850:20;6847:1;6840:31;6894:4;6891:1;6884:15;6922:4;6919:1;6912:15;6776:161;;6563:380;;;:::o;6948:356::-;7150:2;7132:21;;;7169:18;;;7162:30;7228:34;7223:2;7208:18;;7201:62;7295:2;7280:18;;6948:356::o;7309:127::-;7370:10;7365:3;7361:20;7358:1;7351:31;7401:4;7398:1;7391:15;7425:4;7422:1;7415:15;7441:128;7481:3;7512:1;7508:6;7505:1;7502:13;7499:39;;;7518:18;;:::i;:::-;-1:-1:-1;7554:9:1;;7441:128::o;7983:125::-;8023:4;8051:1;8048;8045:8;8042:34;;;8056:18;;:::i;:::-;-1:-1:-1;8093:9:1;;7983:125::o;8113:168::-;8153:7;8219:1;8215;8211:6;8207:14;8204:1;8201:21;8196:1;8189:9;8182:17;8178:45;8175:71;;;8226:18;;:::i;:::-;-1:-1:-1;8266:9:1;;8113:168::o;8286:217::-;8326:1;8352;8342:132;;8396:10;8391:3;8387:20;8384:1;8377:31;8431:4;8428:1;8421:15;8459:4;8456:1;8449:15;8342:132;-1:-1:-1;8488:9:1;;8286:217::o;9138:245::-;9205:6;9258:2;9246:9;9237:7;9233:23;9229:32;9226:52;;;9274:1;9271;9264:12;9226:52;9306:9;9300:16;9325:28;9347:5;9325:28;:::i;9388:251::-;9458:6;9511:2;9499:9;9490:7;9486:23;9482:32;9479:52;;;9527:1;9524;9517:12;9479:52;9559:9;9553:16;9578:31;9603:5;9578:31;:::i;10359:127::-;10420:10;10415:3;10411:20;10408:1;10401:31;10451:4;10448:1;10441:15;10475:4;10472:1;10465:15;10491:135;10530:3;-1:-1:-1;;10551:17:1;;10548:43;;;10571:18;;:::i;:::-;-1:-1:-1;10618:1:1;10607:13;;10491:135::o;13721:980::-;13983:4;14031:3;14020:9;14016:19;14062:6;14051:9;14044:25;14088:2;14126:6;14121:2;14110:9;14106:18;14099:34;14169:3;14164:2;14153:9;14149:18;14142:31;14193:6;14228;14222:13;14259:6;14251;14244:22;14297:3;14286:9;14282:19;14275:26;;14336:2;14328:6;14324:15;14310:29;;14357:1;14367:195;14381:6;14378:1;14375:13;14367:195;;;14446:13;;-1:-1:-1;;;;;14442:39:1;14430:52;;14537:15;;;;14502:12;;;;14478:1;14396:9;14367:195;;;-1:-1:-1;;;;;;;14618:32:1;;;;14613:2;14598:18;;14591:60;-1:-1:-1;;;14682:3:1;14667:19;14660:35;14579:3;13721:980;-1:-1:-1;;;13721:980:1:o;17530:306::-;17618:6;17626;17634;17687:2;17675:9;17666:7;17662:23;17658:32;17655:52;;;17703:1;17700;17693:12;17655:52;17732:9;17726:16;17716:26;;17782:2;17771:9;17767:18;17761:25;17751:35;;17826:2;17815:9;17811:18;17805:25;17795:35;;17530:306;;;;;:::o

Swarm Source

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