ETH Price: $3,278.77 (-1.03%)
Gas: 7 Gwei

Token

Douchebag (DOUCHE)
 

Overview

Max Total Supply

10,000,000,000 DOUCHE

Holders

53

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
69,300,000 DOUCHE

Value
$0.00
0x753e6ffb22ea2ec23f4de867c13cc9a270f8eda2
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:
ERC20DOUCHEBAG

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-22
*/

// SPDX-License-Identifier: UNLICENSED

/*

Website : http://douchebag.vip
Telegram : https://t.me/TehDoucheBagCommunity
Twitter :  https://twitter.com/DoucheBagERC

Introducing DoucheBag Coin: Unleashing Unapologetic Douchiness in Crypto!

In this wild world of cryptocurrencies, we've encountered countless amateurs, but we question if we, too, have dabbled in douchiness. Fear not, for DoucheBag Coin is here, redefining the game with audacious bravado!

Our token is indisputable proof that we embrace our inner douche, yet champion rectification like no other. We boldly declare, "Yeah, we might get a little douchey, but we're here to make things right." Because, let's face it, nobody does douche like us when it's absolutely necessary.

Step into our domain and witness the metamorphosis of douchebaggery. We thrive on self-reflection, turning flaws into assets. Join the DoucheBag Coin movement, where accountability meets growth. We're cocky, we're confident, and together, we're making crypto douchiness an art form!

*/

pragma solidity 0.8.18;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

interface ERC20 {
    function getOwner() external view returns (address);
    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);
}

abstract contract Auth {
    address internal owner;

    constructor(address _owner) {
        owner = _owner;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function renounceOwnership() external onlyOwner {
        owner = address(0);
    }

}

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

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

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

contract ERC20DOUCHEBAG is ERC20, Auth {
    using SafeMath for uint256;

    address immutable WETH;
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    string public constant name = "Douchebag";
    string public constant symbol = "DOUCHE";
    uint8 public constant decimals = 9;

    uint256 public constant totalSupply = 10 * 10**9 * 10**decimals;

    uint256 public _maxTxAmount = totalSupply / 100;
    uint256 public _maxWalletToken = totalSupply / 100;

    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isNiceguy;

    uint256 public marketingFee = 6;
    uint256 public operationsFee = 4;
    uint256 public totalFee = marketingFee + operationsFee;
    uint256 public constant feeDenominator = 100;
    
    uint256 buyMultiplier = 300;
    uint256 sellMultiplier = 990;
    uint256 transferMultiplier = 0;

    address marketingFeeReceiver;
    address operationsFeeReceiver;

    IDEXRouter public router;
    address public immutable pair;

    bool public swapEnabled = true;
    uint256 swapThreshold = totalSupply / 100;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();

        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        marketingFeeReceiver = 0xE52AdF20D2b0731A7D23327c41F7Cdba04003C83;
        operationsFeeReceiver = 0x47A416b370318C9509215A13eD6dF077AC79FAf2;

        isFeeExempt[msg.sender] = true;

        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[ZERO] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[DEAD] = true;

        balanceOf[msg.sender] = totalSupply;
        emit Transfer(address(0), msg.sender, totalSupply);
    }

    receive() external payable { }

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

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner {
        require(maxWallPercent_base1000 >= 10,"Cannot set max wallet less than 1%");
        _maxWalletToken = (totalSupply * maxWallPercent_base1000 ) / 1000;
    }

    function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external onlyOwner {
        require(maxTXPercentage_base1000 >= 10,"Cannot set max transaction less than 1%");
        _maxTxAmount = (totalSupply * maxTXPercentage_base1000 ) / 1000;
    }

    function manage_FeeExempt(address[] calldata addresses, bool status) external onlyOwner {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isFeeExempt[addresses[i]] = status;
        }
    }

    function manage_TxLimitExempt(address[] calldata addresses, bool status) external onlyOwner {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isTxLimitExempt[addresses[i]] = status;
        }
    }

    function manage_WalletLimitExempt(address[] calldata addresses, bool status) external onlyOwner {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isWalletLimitExempt[addresses[i]] = status;
        }
    }

    function manage_Niceguys(address[] calldata addresses, bool status) external onlyOwner {
        for (uint256 i=0; i < addresses.length; ++i) {
            isNiceguy[addresses[i]] = status;
        }
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        require(!isNiceguy[sender],"niceguy bought early, not a douchebag!");

        if (!isWalletLimitExempt[sender] && !isWalletLimitExempt[recipient] && recipient != pair) {
            require((balanceOf[recipient] + amount) <= _maxWalletToken,"max wallet limit reached");
        }
    
        require((amount <= _maxTxAmount) || isTxLimitExempt[sender] || isTxLimitExempt[recipient], "Max TX Limit Exceeded");

        if(shouldSwapBack()){ swapBack(); }

        balanceOf[sender] = balanceOf[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient);

        balanceOf[recipient] = balanceOf[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        balanceOf[sender] = balanceOf[sender].sub(amount, "Insufficient Balance");
        balanceOf[recipient] = balanceOf[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        if(amount == 0 || totalFee == 0){
            return amount;
        }

        uint256 multiplier = transferMultiplier;

        if(recipient == pair) {
            multiplier = sellMultiplier;
        } else if(sender == pair) {
            multiplier = buyMultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);

        if(feeAmount > 0){
            balanceOf[address(this)] = balanceOf[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && balanceOf[address(this)] >= swapThreshold;
    }

    function clearStuckBalance(uint256 amountPercentage) external onlyOwner {
        uint256 amountETH = address(this).balance;
        uint256 amountToClear = ( amountETH * amountPercentage ) / 100;
        payable(msg.sender).transfer(amountToClear);
    }

    function clearStuckToken(address tokenAddress, uint256 tokens) external onlyOwner returns (bool success) {
        if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }
        return ERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    function swapBack() internal swapping {

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            swapThreshold,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance;

        uint256 amountETHmarketing = (amountETH * marketingFee) / totalFee;
        uint256 amountETHOperations = (amountETH * operationsFee) / totalFee;

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHmarketing}("");
        (tmpSuccess,) = payable(operationsFeeReceiver).call{value: amountETHOperations}("");
    }

    function setMultipliers(uint256 _buy, uint256 _sell, uint256 _trans) external onlyOwner {
        sellMultiplier = _sell;
        buyMultiplier = _buy;
        transferMultiplier = _trans;
    }

    function setFees_base100(uint256 _marketingFee, uint256 _operationsFee) external onlyOwner {
        marketingFee = _marketingFee;
        operationsFee = _operationsFee;
        totalFee = _marketingFee + _operationsFee;
    }

    function setFeeReceivers(address _marketingFeeReceiver, address _operationsFeeReceiver) external onlyOwner {
        marketingFeeReceiver = _marketingFeeReceiver;
        operationsFeeReceiver = _operationsFeeReceiver;
    }

    function setSwapBackSettings(bool _enabled, uint256 _denominator) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = totalSupply / _denominator;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return (totalSupply - balanceOf[DEAD] - balanceOf[ZERO]);
    }
}

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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isNiceguy","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_FeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_Niceguys","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_TxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_WalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","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":"operationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_operationsFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_operationsFee","type":"uint256"}],"name":"setFees_base100","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setMultipliers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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"},{"stateMutability":"payable","type":"receive"}]

60c06040526064620000146009600a62000548565b62000025906402540be40062000560565b6200003191906200057a565b6001556064620000446009600a62000548565b62000055906402540be40062000560565b6200006191906200057a565b600255600660098190556004600a8190556200007d916200059d565b600b5561012c600c556103de600d556000600e556011805460ff60a01b1916600160a01b1790556064620000b46009600a62000548565b620000c5906402540be40062000560565b620000d191906200057a565b601255348015620000e157600080fd5b5060008054336001600160a01b03199182161790915560118054737a250d5630b4cf539739df2c5dacb4c659f2488d921682179055604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa15801562000152573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001789190620005b3565b6001600160a01b039081166080526011546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa158015620001c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ef9190620005b3565b6080516040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af115801562000241573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002679190620005b3565b6001600160a01b0390811660a05230600081815260046020908152604080832060115490951683529381528382206000199055600f80546001600160a01b031990811673e52adf20d2b0731a7d23327c41f7cdba04003c8317909155601080549091167347a416b370318c9509215a13ed6df077ac79faf217905533825260058152838220805460ff1990811660019081179092556006835285842080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e2280548216831790557f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f8805482168317905560079092528483208054831682179055928252928120805484168317905561dead90527fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d8054909216179055620003b76009600a62000548565b620003c8906402540be40062000560565b33600081815260036020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200040b6009600a62000548565b6200041c906402540be40062000560565b60405190815260200160405180910390a3620005de565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200048a5781600019048211156200046e576200046e62000433565b808516156200047c57918102915b93841c93908002906200044e565b509250929050565b600082620004a35750600162000542565b81620004b25750600062000542565b8160018114620004cb5760028114620004d657620004f6565b600191505062000542565b60ff841115620004ea57620004ea62000433565b50506001821b62000542565b5060208310610133831016604e8410600b84101617156200051b575081810a62000542565b62000527838362000449565b80600019048211156200053e576200053e62000433565b0290505b92915050565b60006200055960ff84168362000492565b9392505050565b808202811582820484141762000542576200054262000433565b6000826200059857634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000542576200054262000433565b600060208284031215620005c657600080fd5b81516001600160a01b03811681146200055957600080fd5b60805160a05161203962000620600039600081816106b501528181611237015281816115c00152818161185e01526118920152600061168a01526120396000f3fe6080604052600436106102325760003560e01c80636ce46bc31161012e5780638b42507f116100ab578063bd9ab5371161006f578063bd9ab537146106f7578063c867d60b14610717578063dd62ed3e14610747578063df20fd491461078d578063f887ea40146107ad57600080fd5b80638b42507f1461062157806395d89b4114610651578063a4b45c0014610683578063a8aa1b31146106a3578063a9059cbb146106d757600080fd5b806377b54bad116100f257806377b54bad1461058357806378109e54146105a35780637d1db4a5146105b9578063825fd422146105cf578063893d20e8146105ef57600080fd5b80636ce46bc3146104d05780636ddd1713146104f057806370a0823114610511578063715018a61461053e578063756910b31461055357600080fd5b80631df4ccfc116101bc5780633f4218e0116101805780633f4218e01461042a57806348a5df041461045a5780634be9d8691461047a578063571ac8b01461049a5780636b67c4df146104ba57600080fd5b80631df4ccfc1461038957806323b872dd1461039f5780632b112e49146103bf5780632f54bf6e146103d4578063313ce5671461040357600080fd5b806309302dc61161020357806309302dc6146102ef578063095ea7b31461030f578063180b0d7e1461033f57806318160ddd146103545780631da1db5e1461036957600080fd5b80621086831461023e578062bff4461461026057806306fdde0314610280578063090896be146102cb57600080fd5b3661023957005b600080fd5b34801561024a57600080fd5b5061025e610259366004611b37565b6107cd565b005b34801561026c57600080fd5b5061025e61027b366004611b37565b610896565b34801561028c57600080fd5b506102b560405180604001604052806009815260200168446f7563686562616760b81b81525081565b6040516102c29190611bbd565b60405180910390f35b3480156102d757600080fd5b506102e1600a5481565b6040519081526020016102c2565b3480156102fb57600080fd5b5061025e61030a366004611c0b565b610950565b34801561031b57600080fd5b5061032f61032a366004611c40565b610a0f565b60405190151581526020016102c2565b34801561034b57600080fd5b506102e1606481565b34801561036057600080fd5b506102e1610a7c565b34801561037557600080fd5b5061025e610384366004611c0b565b610a9a565b34801561039557600080fd5b506102e1600b5481565b3480156103ab57600080fd5b5061032f6103ba366004611c6a565b610b0d565b3480156103cb57600080fd5b506102e1610bcf565b3480156103e057600080fd5b5061032f6103ef366004611ca6565b6000546001600160a01b0391821691161490565b34801561040f57600080fd5b50610418600981565b60405160ff90911681526020016102c2565b34801561043657600080fd5b5061032f610445366004611ca6565b60056020526000908152604090205460ff1681565b34801561046657600080fd5b5061025e610475366004611cc1565b610c57565b34801561048657600080fd5b5061025e610495366004611b37565b610c9c565b3480156104a657600080fd5b5061032f6104b5366004611ca6565b610d56565b3480156104c657600080fd5b506102e160095481565b3480156104dc57600080fd5b5061025e6104eb366004611ce3565b610d64565b3480156104fc57600080fd5b5060115461032f90600160a01b900460ff1681565b34801561051d57600080fd5b506102e161052c366004611ca6565b60036020526000908152604090205481565b34801561054a57600080fd5b5061025e610d9f565b34801561055f57600080fd5b5061032f61056e366004611ca6565b60086020526000908152604090205460ff1681565b34801561058f57600080fd5b5061032f61059e366004611c40565b610ddb565b3480156105af57600080fd5b506102e160025481565b3480156105c557600080fd5b506102e160015481565b3480156105db57600080fd5b5061025e6105ea366004611b37565b610eea565b3480156105fb57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102c2565b34801561062d57600080fd5b5061032f61063c366004611ca6565b60066020526000908152604090205460ff1681565b34801561065d57600080fd5b506102b560405180604001604052806006815260200165444f5543484560d01b81525081565b34801561068f57600080fd5b5061025e61069e366004611d0f565b610f83565b3480156106af57600080fd5b506106097f000000000000000000000000000000000000000000000000000000000000000081565b3480156106e357600080fd5b5061032f6106f2366004611c40565b610fdb565b34801561070357600080fd5b5061025e610712366004611c0b565b610fe8565b34801561072357600080fd5b5061032f610732366004611ca6565b60076020526000908152604090205460ff1681565b34801561075357600080fd5b506102e1610762366004611d0f565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561079957600080fd5b5061025e6107a8366004611d42565b6110ac565b3480156107b957600080fd5b50601154610609906001600160a01b031681565b6000546001600160a01b031633146108005760405162461bcd60e51b81526004016107f790611d60565b60405180910390fd5b6101f582106108215760405162461bcd60e51b81526004016107f790611d80565b60005b8281101561089057816007600086868581811061084357610843611dc5565b90506020020160208101906108589190611ca6565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561088981611df1565b9050610824565b50505050565b6000546001600160a01b031633146108c05760405162461bcd60e51b81526004016107f790611d60565b6101f582106108e15760405162461bcd60e51b81526004016107f790611d80565b60005b8281101561089057816005600086868581811061090357610903611dc5565b90506020020160208101906109189190611ca6565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561094981611df1565b90506108e4565b6000546001600160a01b0316331461097a5760405162461bcd60e51b81526004016107f790611d60565b600a8110156109d65760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015261312560f01b60648201526084016107f7565b6103e8816109e66009600a611eee565b6109f5906402540be400611efd565b6109ff9190611efd565b610a099190611f14565b60025550565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a6a9086815260200190565b60405180910390a35060015b92915050565b610a886009600a611eee565b610a97906402540be400611efd565b81565b6000546001600160a01b03163314610ac45760405162461bcd60e51b81526004016107f790611d60565b4760006064610ad38484611efd565b610add9190611f14565b604051909150339082156108fc029083906000818181858888f19350505050158015610890573d6000803e3d6000fd5b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610bba576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600482528381203382529091529190912054610b9591849061111a565b6001600160a01b03851660009081526004602090815260408083203384529091529020555b610bc5848484611154565b90505b9392505050565b60036020527f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff5461dead60009081527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c54909190610c2f6009600a611eee565b610c3e906402540be400611efd565b610c489190611f36565b610c529190611f36565b905090565b6000546001600160a01b03163314610c815760405162461bcd60e51b81526004016107f790611d60565b6009829055600a819055610c958183611f49565b600b555050565b6000546001600160a01b03163314610cc65760405162461bcd60e51b81526004016107f790611d60565b6101f58210610ce75760405162461bcd60e51b81526004016107f790611d80565b60005b82811015610890578160066000868685818110610d0957610d09611dc5565b9050602002016020810190610d1e9190611ca6565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610d4f81611df1565b9050610cea565b6000610a7682600019610a0f565b6000546001600160a01b03163314610d8e5760405162461bcd60e51b81526004016107f790611d60565b600d91909155600c91909155600e55565b6000546001600160a01b03163314610dc95760405162461bcd60e51b81526004016107f790611d60565b600080546001600160a01b0319169055565b600080546001600160a01b03163314610e065760405162461bcd60e51b81526004016107f790611d60565b81600003610e79576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610e52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e769190611f5c565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc89190611f75565b6000546001600160a01b03163314610f145760405162461bcd60e51b81526004016107f790611d60565b60005b82811015610890578160086000868685818110610f3657610f36611dc5565b9050602002016020810190610f4b9190611ca6565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610f7c81611df1565b9050610f17565b6000546001600160a01b03163314610fad5760405162461bcd60e51b81526004016107f790611d60565b600f80546001600160a01b039384166001600160a01b03199182161790915560108054929093169116179055565b6000610bc8338484611154565b6000546001600160a01b031633146110125760405162461bcd60e51b81526004016107f790611d60565b600a8110156110735760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c657373206044820152667468616e20312560c81b60648201526084016107f7565b6103e8816110836009600a611eee565b611092906402540be400611efd565b61109c9190611efd565b6110a69190611f14565b60015550565b6000546001600160a01b031633146110d65760405162461bcd60e51b81526004016107f790611d60565b6011805460ff60a01b1916600160a01b84151502179055806110fa6009600a611eee565b611109906402540be400611efd565b6111139190611f14565b6012555050565b6000818484111561113e5760405162461bcd60e51b81526004016107f79190611bbd565b50600061114b8486611f36565b95945050505050565b60135460009060ff16156111745761116d8484846114cd565b9050610bc8565b6001600160a01b03841660009081526008602052604090205460ff16156111ec5760405162461bcd60e51b815260206004820152602660248201527f6e69636567757920626f75676874206561726c792c206e6f74206120646f756360448201526568656261672160d01b60648201526084016107f7565b6001600160a01b03841660009081526007602052604090205460ff1615801561122e57506001600160a01b03831660009081526007602052604090205460ff16155b801561126c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b156112e6576002546001600160a01b038416600090815260036020526040902054611298908490611f49565b11156112e65760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d69742072656163686564000000000000000060448201526064016107f7565b6001548211158061130f57506001600160a01b03841660009081526006602052604090205460ff165b8061133257506001600160a01b03831660009081526006602052604090205460ff165b6113765760405162461bcd60e51b815260206004820152601560248201527413585e08151608131a5b5a5d08115e18d959591959605a1b60448201526064016107f7565b61137e6115b3565b1561138b5761138b611626565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600390915291909120546113dd91849061111a565b6001600160a01b038516600090815260036020908152604080832093909355600590529081205460ff168061142a57506001600160a01b03841660009081526005602052604090205460ff165b61143e57611439858486611836565b611440565b825b6001600160a01b0385166000908152600360205260409020549091506114669082611993565b6001600160a01b0380861660008181526003602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114ba9085815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260039091529182205461151e91849061111a565b6001600160a01b03808616600090815260036020526040808220939093559085168152205461154d9083611993565b6001600160a01b0380851660008181526003602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115a19086815260200190565b60405180910390a35060019392505050565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906115f1575060135460ff16155b80156116065750601154600160a01b900460ff165b8015610c5257505060125430600090815260036020526040902054101590565b6013805460ff19166001179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061166857611668611dc5565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106116bc576116bc611dc5565b6001600160a01b03928316602091820292909201015260115460125460405163791ac94760e01b8152919092169163791ac947916117069190600090869030904290600401611f92565b600060405180830381600087803b15801561172057600080fd5b505af1158015611734573d6000803e3d6000fd5b5050600b546009544793506000925061174d9084611efd565b6117579190611f14565b90506000600b54600a548461176c9190611efd565b6117769190611f14565b600f546040519192506000916001600160a01b039091169084908381818185875af1925050503d80600081146117c8576040519150601f19603f3d011682016040523d82523d6000602084013e6117cd565b606091505b50506010546040519192506001600160a01b0316908390600081818185875af1925050503d806000811461181d576040519150601f19603f3d011682016040523d82523d6000602084013e611822565b606091505b50506013805460ff19169055505050505050565b60008215806118455750600b54155b15611851575081610bc8565b600e546001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116908416036118905750600d546118ce565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316036118ce5750600c545b60006119036118de606480611efd565b6118fd846118f7600b548a6119f290919063ffffffff16565b906119f2565b90611a74565b9050801561197f57306000908152600360205260409020546119259082611993565b30600081815260036020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119769085815260200190565b60405180910390a35b6119898582611ab6565b9695505050505050565b6000806119a08385611f49565b905083811015610bc85760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107f7565b600082600003611a0457506000610a76565b6000611a108385611efd565b905082611a1d8583611f14565b14610bc85760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107f7565b6000610bc883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611af8565b6000610bc883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061111a565b60008183611b195760405162461bcd60e51b81526004016107f79190611bbd565b50600061114b8486611f14565b8015158114611b3457600080fd5b50565b600080600060408486031215611b4c57600080fd5b833567ffffffffffffffff80821115611b6457600080fd5b818601915086601f830112611b7857600080fd5b813581811115611b8757600080fd5b8760208260051b8501011115611b9c57600080fd5b60209283019550935050840135611bb281611b26565b809150509250925092565b600060208083528351808285015260005b81811015611bea57858101830151858201604001528201611bce565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215611c1d57600080fd5b5035919050565b80356001600160a01b0381168114611c3b57600080fd5b919050565b60008060408385031215611c5357600080fd5b611c5c83611c24565b946020939093013593505050565b600080600060608486031215611c7f57600080fd5b611c8884611c24565b9250611c9660208501611c24565b9150604084013590509250925092565b600060208284031215611cb857600080fd5b610bc882611c24565b60008060408385031215611cd457600080fd5b50508035926020909101359150565b600080600060608486031215611cf857600080fd5b505081359360208301359350604090920135919050565b60008060408385031215611d2257600080fd5b611d2b83611c24565b9150611d3960208401611c24565b90509250929050565b60008060408385031215611d5557600080fd5b8235611c5c81611b26565b60208082526006908201526510a7aba722a960d11b604082015260600190565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611e0357611e03611ddb565b5060010190565b600181815b80851115611e45578160001904821115611e2b57611e2b611ddb565b80851615611e3857918102915b93841c9390800290611e0f565b509250929050565b600082611e5c57506001610a76565b81611e6957506000610a76565b8160018114611e7f5760028114611e8957611ea5565b6001915050610a76565b60ff841115611e9a57611e9a611ddb565b50506001821b610a76565b5060208310610133831016604e8410600b8410161715611ec8575081810a610a76565b611ed28383611e0a565b8060001904821115611ee657611ee6611ddb565b029392505050565b6000610bc860ff841683611e4d565b8082028115828204841417610a7657610a76611ddb565b600082611f3157634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610a7657610a76611ddb565b80820180821115610a7657610a76611ddb565b600060208284031215611f6e57600080fd5b5051919050565b600060208284031215611f8757600080fd5b8151610bc881611b26565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611fe25784516001600160a01b031683529383019391830191600101611fbd565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220ea5a40dd8f889c2597226f63f0d1d3b388e7c555e61edc24aae73071b066cc4064736f6c63430008120033

Deployed Bytecode

0x6080604052600436106102325760003560e01c80636ce46bc31161012e5780638b42507f116100ab578063bd9ab5371161006f578063bd9ab537146106f7578063c867d60b14610717578063dd62ed3e14610747578063df20fd491461078d578063f887ea40146107ad57600080fd5b80638b42507f1461062157806395d89b4114610651578063a4b45c0014610683578063a8aa1b31146106a3578063a9059cbb146106d757600080fd5b806377b54bad116100f257806377b54bad1461058357806378109e54146105a35780637d1db4a5146105b9578063825fd422146105cf578063893d20e8146105ef57600080fd5b80636ce46bc3146104d05780636ddd1713146104f057806370a0823114610511578063715018a61461053e578063756910b31461055357600080fd5b80631df4ccfc116101bc5780633f4218e0116101805780633f4218e01461042a57806348a5df041461045a5780634be9d8691461047a578063571ac8b01461049a5780636b67c4df146104ba57600080fd5b80631df4ccfc1461038957806323b872dd1461039f5780632b112e49146103bf5780632f54bf6e146103d4578063313ce5671461040357600080fd5b806309302dc61161020357806309302dc6146102ef578063095ea7b31461030f578063180b0d7e1461033f57806318160ddd146103545780631da1db5e1461036957600080fd5b80621086831461023e578062bff4461461026057806306fdde0314610280578063090896be146102cb57600080fd5b3661023957005b600080fd5b34801561024a57600080fd5b5061025e610259366004611b37565b6107cd565b005b34801561026c57600080fd5b5061025e61027b366004611b37565b610896565b34801561028c57600080fd5b506102b560405180604001604052806009815260200168446f7563686562616760b81b81525081565b6040516102c29190611bbd565b60405180910390f35b3480156102d757600080fd5b506102e1600a5481565b6040519081526020016102c2565b3480156102fb57600080fd5b5061025e61030a366004611c0b565b610950565b34801561031b57600080fd5b5061032f61032a366004611c40565b610a0f565b60405190151581526020016102c2565b34801561034b57600080fd5b506102e1606481565b34801561036057600080fd5b506102e1610a7c565b34801561037557600080fd5b5061025e610384366004611c0b565b610a9a565b34801561039557600080fd5b506102e1600b5481565b3480156103ab57600080fd5b5061032f6103ba366004611c6a565b610b0d565b3480156103cb57600080fd5b506102e1610bcf565b3480156103e057600080fd5b5061032f6103ef366004611ca6565b6000546001600160a01b0391821691161490565b34801561040f57600080fd5b50610418600981565b60405160ff90911681526020016102c2565b34801561043657600080fd5b5061032f610445366004611ca6565b60056020526000908152604090205460ff1681565b34801561046657600080fd5b5061025e610475366004611cc1565b610c57565b34801561048657600080fd5b5061025e610495366004611b37565b610c9c565b3480156104a657600080fd5b5061032f6104b5366004611ca6565b610d56565b3480156104c657600080fd5b506102e160095481565b3480156104dc57600080fd5b5061025e6104eb366004611ce3565b610d64565b3480156104fc57600080fd5b5060115461032f90600160a01b900460ff1681565b34801561051d57600080fd5b506102e161052c366004611ca6565b60036020526000908152604090205481565b34801561054a57600080fd5b5061025e610d9f565b34801561055f57600080fd5b5061032f61056e366004611ca6565b60086020526000908152604090205460ff1681565b34801561058f57600080fd5b5061032f61059e366004611c40565b610ddb565b3480156105af57600080fd5b506102e160025481565b3480156105c557600080fd5b506102e160015481565b3480156105db57600080fd5b5061025e6105ea366004611b37565b610eea565b3480156105fb57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102c2565b34801561062d57600080fd5b5061032f61063c366004611ca6565b60066020526000908152604090205460ff1681565b34801561065d57600080fd5b506102b560405180604001604052806006815260200165444f5543484560d01b81525081565b34801561068f57600080fd5b5061025e61069e366004611d0f565b610f83565b3480156106af57600080fd5b506106097f000000000000000000000000283c03e23970857041a415a95924352a11a70b8081565b3480156106e357600080fd5b5061032f6106f2366004611c40565b610fdb565b34801561070357600080fd5b5061025e610712366004611c0b565b610fe8565b34801561072357600080fd5b5061032f610732366004611ca6565b60076020526000908152604090205460ff1681565b34801561075357600080fd5b506102e1610762366004611d0f565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561079957600080fd5b5061025e6107a8366004611d42565b6110ac565b3480156107b957600080fd5b50601154610609906001600160a01b031681565b6000546001600160a01b031633146108005760405162461bcd60e51b81526004016107f790611d60565b60405180910390fd5b6101f582106108215760405162461bcd60e51b81526004016107f790611d80565b60005b8281101561089057816007600086868581811061084357610843611dc5565b90506020020160208101906108589190611ca6565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561088981611df1565b9050610824565b50505050565b6000546001600160a01b031633146108c05760405162461bcd60e51b81526004016107f790611d60565b6101f582106108e15760405162461bcd60e51b81526004016107f790611d80565b60005b8281101561089057816005600086868581811061090357610903611dc5565b90506020020160208101906109189190611ca6565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561094981611df1565b90506108e4565b6000546001600160a01b0316331461097a5760405162461bcd60e51b81526004016107f790611d60565b600a8110156109d65760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e20604482015261312560f01b60648201526084016107f7565b6103e8816109e66009600a611eee565b6109f5906402540be400611efd565b6109ff9190611efd565b610a099190611f14565b60025550565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a6a9086815260200190565b60405180910390a35060015b92915050565b610a886009600a611eee565b610a97906402540be400611efd565b81565b6000546001600160a01b03163314610ac45760405162461bcd60e51b81526004016107f790611d60565b4760006064610ad38484611efd565b610add9190611f14565b604051909150339082156108fc029083906000818181858888f19350505050158015610890573d6000803e3d6000fd5b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610bba576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600482528381203382529091529190912054610b9591849061111a565b6001600160a01b03851660009081526004602090815260408083203384529091529020555b610bc5848484611154565b90505b9392505050565b60036020527f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff5461dead60009081527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c54909190610c2f6009600a611eee565b610c3e906402540be400611efd565b610c489190611f36565b610c529190611f36565b905090565b6000546001600160a01b03163314610c815760405162461bcd60e51b81526004016107f790611d60565b6009829055600a819055610c958183611f49565b600b555050565b6000546001600160a01b03163314610cc65760405162461bcd60e51b81526004016107f790611d60565b6101f58210610ce75760405162461bcd60e51b81526004016107f790611d80565b60005b82811015610890578160066000868685818110610d0957610d09611dc5565b9050602002016020810190610d1e9190611ca6565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610d4f81611df1565b9050610cea565b6000610a7682600019610a0f565b6000546001600160a01b03163314610d8e5760405162461bcd60e51b81526004016107f790611d60565b600d91909155600c91909155600e55565b6000546001600160a01b03163314610dc95760405162461bcd60e51b81526004016107f790611d60565b600080546001600160a01b0319169055565b600080546001600160a01b03163314610e065760405162461bcd60e51b81526004016107f790611d60565b81600003610e79576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610e52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e769190611f5c565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc89190611f75565b6000546001600160a01b03163314610f145760405162461bcd60e51b81526004016107f790611d60565b60005b82811015610890578160086000868685818110610f3657610f36611dc5565b9050602002016020810190610f4b9190611ca6565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610f7c81611df1565b9050610f17565b6000546001600160a01b03163314610fad5760405162461bcd60e51b81526004016107f790611d60565b600f80546001600160a01b039384166001600160a01b03199182161790915560108054929093169116179055565b6000610bc8338484611154565b6000546001600160a01b031633146110125760405162461bcd60e51b81526004016107f790611d60565b600a8110156110735760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f7420736574206d6178207472616e73616374696f6e206c657373206044820152667468616e20312560c81b60648201526084016107f7565b6103e8816110836009600a611eee565b611092906402540be400611efd565b61109c9190611efd565b6110a69190611f14565b60015550565b6000546001600160a01b031633146110d65760405162461bcd60e51b81526004016107f790611d60565b6011805460ff60a01b1916600160a01b84151502179055806110fa6009600a611eee565b611109906402540be400611efd565b6111139190611f14565b6012555050565b6000818484111561113e5760405162461bcd60e51b81526004016107f79190611bbd565b50600061114b8486611f36565b95945050505050565b60135460009060ff16156111745761116d8484846114cd565b9050610bc8565b6001600160a01b03841660009081526008602052604090205460ff16156111ec5760405162461bcd60e51b815260206004820152602660248201527f6e69636567757920626f75676874206561726c792c206e6f74206120646f756360448201526568656261672160d01b60648201526084016107f7565b6001600160a01b03841660009081526007602052604090205460ff1615801561122e57506001600160a01b03831660009081526007602052604090205460ff16155b801561126c57507f000000000000000000000000283c03e23970857041a415a95924352a11a70b806001600160a01b0316836001600160a01b031614155b156112e6576002546001600160a01b038416600090815260036020526040902054611298908490611f49565b11156112e65760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d69742072656163686564000000000000000060448201526064016107f7565b6001548211158061130f57506001600160a01b03841660009081526006602052604090205460ff165b8061133257506001600160a01b03831660009081526006602052604090205460ff165b6113765760405162461bcd60e51b815260206004820152601560248201527413585e08151608131a5b5a5d08115e18d959591959605a1b60448201526064016107f7565b61137e6115b3565b1561138b5761138b611626565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600390915291909120546113dd91849061111a565b6001600160a01b038516600090815260036020908152604080832093909355600590529081205460ff168061142a57506001600160a01b03841660009081526005602052604090205460ff165b61143e57611439858486611836565b611440565b825b6001600160a01b0385166000908152600360205260409020549091506114669082611993565b6001600160a01b0380861660008181526003602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114ba9085815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260039091529182205461151e91849061111a565b6001600160a01b03808616600090815260036020526040808220939093559085168152205461154d9083611993565b6001600160a01b0380851660008181526003602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115a19086815260200190565b60405180910390a35060019392505050565b6000336001600160a01b037f000000000000000000000000283c03e23970857041a415a95924352a11a70b8016148015906115f1575060135460ff16155b80156116065750601154600160a01b900460ff165b8015610c5257505060125430600090815260036020526040902054101590565b6013805460ff19166001179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061166857611668611dc5565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106116bc576116bc611dc5565b6001600160a01b03928316602091820292909201015260115460125460405163791ac94760e01b8152919092169163791ac947916117069190600090869030904290600401611f92565b600060405180830381600087803b15801561172057600080fd5b505af1158015611734573d6000803e3d6000fd5b5050600b546009544793506000925061174d9084611efd565b6117579190611f14565b90506000600b54600a548461176c9190611efd565b6117769190611f14565b600f546040519192506000916001600160a01b039091169084908381818185875af1925050503d80600081146117c8576040519150601f19603f3d011682016040523d82523d6000602084013e6117cd565b606091505b50506010546040519192506001600160a01b0316908390600081818185875af1925050503d806000811461181d576040519150601f19603f3d011682016040523d82523d6000602084013e611822565b606091505b50506013805460ff19169055505050505050565b60008215806118455750600b54155b15611851575081610bc8565b600e546001600160a01b037f000000000000000000000000283c03e23970857041a415a95924352a11a70b808116908416036118905750600d546118ce565b7f000000000000000000000000283c03e23970857041a415a95924352a11a70b806001600160a01b0316856001600160a01b0316036118ce5750600c545b60006119036118de606480611efd565b6118fd846118f7600b548a6119f290919063ffffffff16565b906119f2565b90611a74565b9050801561197f57306000908152600360205260409020546119259082611993565b30600081815260036020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119769085815260200190565b60405180910390a35b6119898582611ab6565b9695505050505050565b6000806119a08385611f49565b905083811015610bc85760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107f7565b600082600003611a0457506000610a76565b6000611a108385611efd565b905082611a1d8583611f14565b14610bc85760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107f7565b6000610bc883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611af8565b6000610bc883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061111a565b60008183611b195760405162461bcd60e51b81526004016107f79190611bbd565b50600061114b8486611f14565b8015158114611b3457600080fd5b50565b600080600060408486031215611b4c57600080fd5b833567ffffffffffffffff80821115611b6457600080fd5b818601915086601f830112611b7857600080fd5b813581811115611b8757600080fd5b8760208260051b8501011115611b9c57600080fd5b60209283019550935050840135611bb281611b26565b809150509250925092565b600060208083528351808285015260005b81811015611bea57858101830151858201604001528201611bce565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215611c1d57600080fd5b5035919050565b80356001600160a01b0381168114611c3b57600080fd5b919050565b60008060408385031215611c5357600080fd5b611c5c83611c24565b946020939093013593505050565b600080600060608486031215611c7f57600080fd5b611c8884611c24565b9250611c9660208501611c24565b9150604084013590509250925092565b600060208284031215611cb857600080fd5b610bc882611c24565b60008060408385031215611cd457600080fd5b50508035926020909101359150565b600080600060608486031215611cf857600080fd5b505081359360208301359350604090920135919050565b60008060408385031215611d2257600080fd5b611d2b83611c24565b9150611d3960208401611c24565b90509250929050565b60008060408385031215611d5557600080fd5b8235611c5c81611b26565b60208082526006908201526510a7aba722a960d11b604082015260600190565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611e0357611e03611ddb565b5060010190565b600181815b80851115611e45578160001904821115611e2b57611e2b611ddb565b80851615611e3857918102915b93841c9390800290611e0f565b509250929050565b600082611e5c57506001610a76565b81611e6957506000610a76565b8160018114611e7f5760028114611e8957611ea5565b6001915050610a76565b60ff841115611e9a57611e9a611ddb565b50506001821b610a76565b5060208310610133831016604e8410600b8410161715611ec8575081810a610a76565b611ed28383611e0a565b8060001904821115611ee657611ee6611ddb565b029392505050565b6000610bc860ff841683611e4d565b8082028115828204841417610a7657610a76611ddb565b600082611f3157634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610a7657610a76611ddb565b80820180821115610a7657610a76611ddb565b600060208284031215611f6e57600080fd5b5051919050565b600060208284031215611f8757600080fd5b8151610bc881611b26565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611fe25784516001600160a01b031683529383019391830191600101611fbd565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220ea5a40dd8f889c2597226f63f0d1d3b388e7c555e61edc24aae73071b066cc4064736f6c63430008120033

Deployed Bytecode Sourcemap

3792:9916:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8518:310;;;;;;;;;;-1:-1:-1;8518:310:0;;;;;:::i;:::-;;:::i;:::-;;7906:294;;;;;;;;;;-1:-1:-1;7906:294:0;;;;;:::i;:::-;;:::i;4050:41::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4050:41:0;;;;;;;;;;;;:::i;:::-;;;;;;;;4749:32;;;;;;;;;;;;;;;;;;;1591:25:1;;;1579:2;1564:18;4749:32:0;1445:177:1;7369:260:0;;;;;;;;;;-1:-1:-1;7369:260:0;;;;;:::i;:::-;;:::i;6473:216::-;;;;;;;;;;-1:-1:-1;6473:216:0;;;;;:::i;:::-;;:::i;:::-;;;2414:14:1;;2407:22;2389:41;;2377:2;2362:18;6473:216:0;2249:187:1;4849:44:0;;;;;;;;;;;;4890:3;4849:44;;4188:63;;;;;;;;;;;;;:::i;11369:259::-;;;;;;;;;;-1:-1:-1;11369:259:0;;;;;:::i;:::-;;:::i;4788:54::-;;;;;;;;;;;;;;;;6991:370;;;;;;;;;;-1:-1:-1;6991:370:0;;;;;:::i;:::-;;:::i;13568:137::-;;;;;;;;;;;;;:::i;3112:103::-;;;;;;;;;;-1:-1:-1;3112:103:0;;;;;:::i;:::-;3167:4;3202:5;-1:-1:-1;;;;;3191:16:0;;;3202:5;;3191:16;;3112:103;4145:34;;;;;;;;;;;;4178:1;4145:34;;;;;3137:4:1;3125:17;;;3107:36;;3095:2;3080:18;4145:34:0;2965:184:1;4495:44:0;;;;;;;;;;-1:-1:-1;4495:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12907:231;;;;;;;;;;-1:-1:-1;12907:231:0;;;;;:::i;:::-;;:::i;8208:302::-;;;;;;;;;;-1:-1:-1;8208:302:0;;;;;:::i;:::-;;:::i;6697:122::-;;;;;;;;;;-1:-1:-1;6697:122:0;;;;;:::i;:::-;;:::i;4711:31::-;;;;;;;;;;;;;;;;12701:198;;;;;;;;;;-1:-1:-1;12701:198:0;;;;;:::i;:::-;;:::i;5156:30::-;;;;;;;;;;-1:-1:-1;5156:30:0;;;;-1:-1:-1;;;5156:30:0;;;;;;4373:45;;;;;;;;;;-1:-1:-1;4373:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;3223:85;;;;;;;;;;;;;:::i;4660:42::-;;;;;;;;;;-1:-1:-1;4660:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11636:284;;;;;;;;;;-1:-1:-1;11636:284:0;;;;;:::i;:::-;;:::i;4314:50::-;;;;;;;;;;;;;;;;4260:47;;;;;;;;;;;;;;;;8836:209;;;;;;;;;;-1:-1:-1;8836:209:0;;;;;:::i;:::-;;:::i;6248:78::-;;;;;;;;;;-1:-1:-1;6300:7:0;6318:5;-1:-1:-1;;;;;6318:5:0;6248:78;;;-1:-1:-1;;;;;3892:32:1;;;3874:51;;3862:2;3847:18;6248:78:0;3728:203:1;4546:48:0;;;;;;;;;;-1:-1:-1;4546:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4098:40;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4098:40:0;;;;;13146:227;;;;;;;;;;-1:-1:-1;13146:227:0;;;;;:::i;:::-;;:::i;5118:29::-;;;;;;;;;;;;;;;6827:156;;;;;;;;;;-1:-1:-1;6827:156:0;;;;;:::i;:::-;;:::i;7637:261::-;;;;;;;;;;-1:-1:-1;7637:261:0;;;;;:::i;:::-;;:::i;4601:52::-;;;;;;;;;;-1:-1:-1;4601:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6332:133;;;;;;;;;;-1:-1:-1;6332:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;6434:19:0;;;6416:7;6434:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;6332:133;13381:179;;;;;;;;;;-1:-1:-1;13381:179:0;;;;;:::i;:::-;;:::i;5087:24::-;;;;;;;;;;-1:-1:-1;5087:24:0;;;;-1:-1:-1;;;;;5087:24:0;;;8518:310;3167:4;3202:5;-1:-1:-1;;;;;3202:5:0;3071:10;3191:16;3055:38;;;;-1:-1:-1;;;3055:38:0;;;;;;;:::i;:::-;;;;;;;;;8652:3:::1;8633:22:::0;::::1;8625:71;;;;-1:-1:-1::0;;;8625:71:0::1;;;;;;;:::i;:::-;8712:9;8707:114;8725:20:::0;;::::1;8707:114;;;8803:6;8767:19;:33;8787:9;;8797:1;8787:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8767:33:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;8767:33:0;:42;;-1:-1:-1;;8767:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8747:3:::1;::::0;::::1;:::i;:::-;;;8707:114;;;;8518:310:::0;;;:::o;7906:294::-;3167:4;3202:5;-1:-1:-1;;;;;3202:5:0;3071:10;3191:16;3055:38;;;;-1:-1:-1;;;3055:38:0;;;;;;;:::i;:::-;8032:3:::1;8013:22:::0;::::1;8005:71;;;;-1:-1:-1::0;;;8005:71:0::1;;;;;;;:::i;:::-;8092:9;8087:106;8105:20:::0;;::::1;8087:106;;;8175:6;8147:11;:25;8159:9;;8169:1;8159:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8147:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;8147:25:0;:34;;-1:-1:-1;;8147:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8127:3:::1;::::0;::::1;:::i;:::-;;;8087:106;;7369:260:::0;3167:4;3202:5;-1:-1:-1;;;;;3202:5:0;3071:10;3191:16;3055:38;;;;-1:-1:-1;;;3055:38:0;;;;;;;:::i;:::-;7505:2:::1;7478:23;:29;;7470:75;;;::::0;-1:-1:-1;;;7470:75:0;;6087:2:1;7470:75:0::1;::::0;::::1;6069:21:1::0;6126:2;6106:18;;;6099:30;6165:34;6145:18;;;6138:62;-1:-1:-1;;;6216:18:1;;;6209:32;6258:19;;7470:75:0::1;5885:398:1::0;7470:75:0::1;7617:4;7589:23:::0;4239:12:::1;4178:1;4239:2;:12;:::i;:::-;4226:25;::::0;:10:::1;:25;:::i;:::-;7575:37;;;;:::i;:::-;7574:47;;;;:::i;:::-;7556:15;:65:::0;-1:-1:-1;7369:260:0:o;6473:216::-;6577:10;6548:4;6565:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;6565:32:0;;;;;;;;;;:41;;;6622:37;6548:4;;6565:32;;6622:37;;;;6600:6;1591:25:1;;1579:2;1564:18;;1445:177;6622:37:0;;;;;;;;-1:-1:-1;6677:4:0;6473:216;;;;;:::o;4188:63::-;4239:12;4178:1;4239:2;:12;:::i;:::-;4226:25;;:10;:25;:::i;:::-;4188:63;:::o;11369:259::-;3167:4;3202:5;-1:-1:-1;;;;;3202:5:0;3071:10;3191:16;3055:38;;;;-1:-1:-1;;;3055:38:0;;;;;;;:::i;:::-;11472:21:::1;11452:17;11563:3;11530:28;11542:16:::0;11472:21;11530:28:::1;:::i;:::-;11528:38;;;;:::i;:::-;11577:43;::::0;11504:62;;-1:-1:-1;11585:10:0::1;::::0;11577:43;::::1;;;::::0;11504:62;;11577:43:::1;::::0;;;11504:62;11585:10;11577:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;6991:370:::0;-1:-1:-1;;;;;7111:19:0;;7091:4;7111:19;;;:11;:19;;;;;;;;7131:10;7111:31;;;;;;;;-1:-1:-1;;7111:52:0;7108:186;;7213:69;;;;;;;;;;;-1:-1:-1;;;7213:69:0;;;;;;;;-1:-1:-1;;;;;7213:19:0;;-1:-1:-1;7213:19:0;;;:11;:19;;;;;7233:10;7213:31;;;;;;;;;;:69;;7249:6;;7213:35;:69::i;:::-;-1:-1:-1;;;;;7179:19:0;;;;;;:11;:19;;;;;;;;7199:10;7179:31;;;;;;;:103;7108:186;7313:40;7327:6;7335:9;7346:6;7313:13;:40::i;:::-;7306:47;;6991:370;;;;;;:::o;13568:137::-;13681:9;:15;;;;3926:42;13621:7;13663:15;;;;;13621:7;;13681:15;4239:12;4178:1;4239:2;:12;:::i;:::-;4226:25;;:10;:25;:::i;:::-;13649:29;;;;:::i;:::-;:47;;;;:::i;:::-;13641:56;;13568:137;:::o;12907:231::-;3167:4;3202:5;-1:-1:-1;;;;;3202:5:0;3071:10;3191:16;3055:38;;;;-1:-1:-1;;;3055:38:0;;;;;;;:::i;:::-;13009:12:::1;:28:::0;;;13048:13:::1;:30:::0;;;13100::::1;13064:14:::0;13024:13;13100:30:::1;:::i;:::-;13089:8;:41:::0;-1:-1:-1;;12907:231:0:o;8208:302::-;3167:4;3202:5;-1:-1:-1;;;;;3202:5:0;3071:10;3191:16;3055:38;;;;-1:-1:-1;;;3055:38:0;;;;;;;:::i;:::-;8338:3:::1;8319:22:::0;::::1;8311:71;;;;-1:-1:-1::0;;;8311:71:0::1;;;;;;;:::i;:::-;8398:9;8393:110;8411:20:::0;;::::1;8393:110;;;8485:6;8453:15;:29;8469:9;;8479:1;8469:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8453:29:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;8453:29:0;:38;;-1:-1:-1;;8453:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8433:3:::1;::::0;::::1;:::i;:::-;;;8393:110;;6697:122:::0;6752:4;6776:35;6784:7;-1:-1:-1;;6776:7:0;:35::i;12701:198::-;3167:4;3202:5;-1:-1:-1;;;;;3202:5:0;3071:10;3191:16;3055:38;;;;-1:-1:-1;;;3055:38:0;;;;;;;:::i;:::-;12800:14:::1;:22:::0;;;;12833:13:::1;:20:::0;;;;12864:18:::1;:27:::0;12701:198::o;3223:85::-;3167:4;3202:5;-1:-1:-1;;;;;3202:5:0;3071:10;3191:16;3055:38;;;;-1:-1:-1;;;3055:38:0;;;;;;;:::i;:::-;3298:1:::1;3282:18:::0;;-1:-1:-1;;;;;;3282:18:0::1;::::0;;3223:85::o;11636:284::-;11727:12;3202:5;;-1:-1:-1;;;;;3202:5:0;3071:10;3191:16;3055:38;;;;-1:-1:-1;;;3055:38:0;;;;;;;:::i;:::-;11755:6:::1;11765:1;11755:11:::0;11752:95:::1;;11791:44;::::0;-1:-1:-1;;;11791:44:0;;11829:4:::1;11791:44;::::0;::::1;3874:51:1::0;-1:-1:-1;;;;;11791:29:0;::::1;::::0;::::1;::::0;3847:18:1;;11791:44:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11782:53;;11752:95;11864:48;::::0;-1:-1:-1;;;11864:48:0;;11893:10:::1;11864:48;::::0;::::1;8692:51:1::0;8759:18;;;8752:34;;;-1:-1:-1;;;;;11864:28:0;::::1;::::0;::::1;::::0;8665:18:1;;11864:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;8836:209::-:0;3167:4;3202:5;-1:-1:-1;;;;;3202:5:0;3071:10;3191:16;3055:38;;;;-1:-1:-1;;;3055:38:0;;;;;;;:::i;:::-;8939:9:::1;8934:104;8952:20:::0;;::::1;8934:104;;;9020:6;8994:9;:23;9004:9;;9014:1;9004:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8994:23:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;8994:23:0;:32;;-1:-1:-1;;8994:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8974:3:::1;::::0;::::1;:::i;:::-;;;8934:104;;13146:227:::0;3167:4;3202:5;-1:-1:-1;;;;;3202:5:0;3071:10;3191:16;3055:38;;;;-1:-1:-1;;;3055:38:0;;;;;;;:::i;:::-;13264:20:::1;:44:::0;;-1:-1:-1;;;;;13264:44:0;;::::1;-1:-1:-1::0;;;;;;13264:44:0;;::::1;;::::0;;;13319:21:::1;:46:::0;;;;;::::1;::::0;::::1;;::::0;;13146:227::o;6827:156::-;6907:4;6931:44;6945:10;6957:9;6968:6;6931:13;:44::i;7637:261::-;3167:4;3202:5;-1:-1:-1;;;;;3202:5:0;3071:10;3191:16;3055:38;;;;-1:-1:-1;;;3055:38:0;;;;;;;:::i;:::-;7771:2:::1;7743:24;:30;;7735:81;;;::::0;-1:-1:-1;;;7735:81:0;;9249:2:1;7735:81:0::1;::::0;::::1;9231:21:1::0;9288:2;9268:18;;;9261:30;9327:34;9307:18;;;9300:62;-1:-1:-1;;;9378:18:1;;;9371:37;9425:19;;7735:81:0::1;9047:403:1::0;7735:81:0::1;7886:4;7857:24:::0;4239:12:::1;4178:1;4239:2;:12;:::i;:::-;4226:25;::::0;:10:::1;:25;:::i;:::-;7843:38;;;;:::i;:::-;7842:48;;;;:::i;:::-;7827:12;:63:::0;-1:-1:-1;7637:261:0:o;13381:179::-;3167:4;3202:5;-1:-1:-1;;;;;3202:5:0;3071:10;3191:16;3055:38;;;;-1:-1:-1;;;3055:38:0;;;;;;;:::i;:::-;13477:11:::1;:22:::0;;-1:-1:-1;;;;13477:22:0::1;-1:-1:-1::0;;;13477:22:0;::::1;;;;::::0;;13540:12;4239::::1;4178:1;4239:2;:12;:::i;:::-;4226:25;::::0;:10:::1;:25;:::i;:::-;13526:26;;;;:::i;:::-;13510:13;:42:::0;-1:-1:-1;;13381:179:0:o;1431:192::-;1517:7;1553:12;1545:6;;;;1537:29;;;;-1:-1:-1;;;1537:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1577:9:0;1589:5;1593:1;1589;:5;:::i;:::-;1577:17;1431:192;-1:-1:-1;;;;;1431:192:0:o;9053:1030::-;9165:6;;9145:4;;9165:6;;9162:63;;;9181:41;9196:6;9204:9;9215:6;9181:14;:41::i;:::-;9174:48;;;;9162:63;-1:-1:-1;;;;;9246:17:0;;;;;;:9;:17;;;;;;;;9245:18;9237:68;;;;-1:-1:-1;;;9237:68:0;;9657:2:1;9237:68:0;;;9639:21:1;9696:2;9676:18;;;9669:30;9735:34;9715:18;;;9708:62;-1:-1:-1;;;9786:18:1;;;9779:36;9832:19;;9237:68:0;9455:402:1;9237:68:0;-1:-1:-1;;;;;9323:27:0;;;;;;:19;:27;;;;;;;;9322:28;:63;;;;-1:-1:-1;;;;;;9355:30:0;;;;;;:19;:30;;;;;;;;9354:31;9322:63;:84;;;;;9402:4;-1:-1:-1;;;;;9389:17:0;:9;-1:-1:-1;;;;;9389:17:0;;;9322:84;9318:203;;;9466:15;;-1:-1:-1;;;;;9432:20:0;;;;;;:9;:20;;;;;;:29;;9455:6;;9432:29;:::i;:::-;9431:50;;9423:86;;;;-1:-1:-1;;;9423:86:0;;10064:2:1;9423:86:0;;;10046:21:1;10103:2;10083:18;;;10076:30;10142:26;10122:18;;;10115:54;10186:18;;9423:86:0;9862:348:1;9423:86:0;9556:12;;9546:6;:22;;9545:51;;;-1:-1:-1;;;;;;9573:23:0;;;;;;:15;:23;;;;;;;;9545:51;:81;;;-1:-1:-1;;;;;;9600:26:0;;;;;;:15;:26;;;;;;;;9545:81;9537:115;;;;-1:-1:-1;;;9537:115:0;;10417:2:1;9537:115:0;;;10399:21:1;10456:2;10436:18;;;10429:30;-1:-1:-1;;;10475:18:1;;;10468:51;10536:18;;9537:115:0;10215:345:1;9537:115:0;9668:16;:14;:16::i;:::-;9665:35;;;9687:10;:8;:10::i;:::-;9732:53;;;;;;;;;;;-1:-1:-1;;;9732:53:0;;;;;;;;-1:-1:-1;;;;;9732:17:0;;-1:-1:-1;9732:17:0;;;:9;:17;;;;;;;;:53;;9754:6;;9732:21;:53::i;:::-;-1:-1:-1;;;;;9712:17:0;;;;;;:9;:17;;;;;;;;:73;;;;9824:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;9847:22:0;;;;;;:11;:22;;;;;;;;9824:45;9823:93;;9882:34;9890:6;9898;9906:9;9882:7;:34::i;:::-;9823:93;;;9873:6;9823:93;-1:-1:-1;;;;;9952:20:0;;;;;;:9;:20;;;;;;9798:118;;-1:-1:-1;9952:40:0;;9798:118;9952:24;:40::i;:::-;-1:-1:-1;;;;;9929:20:0;;;;;;;:9;:20;;;;;;;:63;;;;10010:43;;;;;;;;;;10038:14;1591:25:1;;1579:2;1564:18;;1445:177;10010:43:0;;;;;;;;-1:-1:-1;10071:4:0;;9053:1030;-1:-1:-1;;;;9053:1030:0:o;10095:330::-;10225:53;;;;;;;;;;;-1:-1:-1;;;10225:53:0;;;;;;;;-1:-1:-1;;;;;10225:17:0;;10188:4;10225:17;;;:9;:17;;;;;;;:53;;10247:6;;10225:21;:53::i;:::-;-1:-1:-1;;;;;10205:17:0;;;;;;;:9;:17;;;;;;:73;;;;10312:20;;;;;;;:32;;10337:6;10312:24;:32::i;:::-;-1:-1:-1;;;;;10289:20:0;;;;;;;:9;:20;;;;;;;:55;;;;10360:35;;;;;;;;;;10388:6;1591:25:1;;1579:2;1564:18;;1445:177;10360:35:0;;;;;;;;-1:-1:-1;10413:4:0;10095:330;;;;;:::o;11164:197::-;11213:4;11237:10;-1:-1:-1;;;;;11251:4:0;11237:18;;;;;:38;;-1:-1:-1;11269:6:0;;;;11268:7;11237:38;:62;;;;-1:-1:-1;11288:11:0;;-1:-1:-1;;;11288:11:0;;;;11237:62;:116;;;;-1:-1:-1;;11340:13:0;;11330:4;11312:24;;;;:9;:24;;;;;;:41;;;11164:197::o;11928:765::-;5281:6;:13;;-1:-1:-1;;5281:13:0;5290:4;5281:13;;;12003:16:::1;::::0;;12017:1:::1;12003:16:::0;;;;;::::1;::::0;;-1:-1:-1;;12003:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12003:16:0::1;11979:40;;12048:4;12030;12035:1;12030:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;12030:23:0::1;;;-1:-1:-1::0;;;;;12030:23:0::1;;;::::0;::::1;12074:4;12064;12069:1;12064:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12064:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;12091:6:::1;::::0;12163:13:::1;::::0;12091:189:::1;::::0;-1:-1:-1;;;12091:189:0;;:6;;;::::1;::::0;:57:::1;::::0;:189:::1;::::0;12163:13;12091:6:::1;::::0;12207:4;;12234::::1;::::0;12254:15:::1;::::0;12091:189:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;12405:8:0::1;::::0;12389:12:::1;::::0;12313:21:::1;::::0;-1:-1:-1;12293:17:0::1;::::0;-1:-1:-1;12377:24:0::1;::::0;12313:21;12377:24:::1;:::i;:::-;12376:37;;;;:::i;:::-;12347:66;;12424:27;12484:8;;12467:13;;12455:9;:25;;;;:::i;:::-;12454:38;;;;:::i;:::-;12534:20;::::0;12526:65:::1;::::0;12424:68;;-1:-1:-1;12506:15:0::1;::::0;-1:-1:-1;;;;;12534:20:0;;::::1;::::0;12568:18;;12506:15;12526:65;12506:15;12526:65;12568:18;12534:20;12526:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;12626:21:0::1;::::0;12618:67:::1;::::0;12505:86;;-1:-1:-1;;;;;;12626:21:0::1;::::0;12661:19;;12618:67:::1;::::0;;;12661:19;12626:21;12618:67:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;5299:6:0;:14;;-1:-1:-1;;5299:14:0;;;-1:-1:-1;;;;;;11928:765:0:o;10433:723::-;10519:7;10542:11;;;:28;;-1:-1:-1;10557:8:0;;:13;10542:28;10539:72;;;-1:-1:-1;10593:6:0;10586:13;;10539:72;10644:18;;-1:-1:-1;;;;;10691:4:0;10678:17;;;;;;10675:154;;-1:-1:-1;10725:14:0;;10675:154;;;10770:4;-1:-1:-1;;;;;10760:14:0;:6;-1:-1:-1;;;;;10760:14:0;;10757:72;;-1:-1:-1;10804:13:0;;10757:72;10841:17;10861:62;10902:20;4890:3;;10902:20;:::i;:::-;10861:36;10886:10;10861:20;10872:8;;10861:6;:10;;:20;;;;:::i;:::-;:24;;:36::i;:::-;:40;;:62::i;:::-;10841:82;-1:-1:-1;10939:13:0;;10936:172;;11013:4;10995:24;;;;:9;:24;;;;;;:39;;11024:9;10995:28;:39::i;:::-;10986:4;10968:24;;;;:9;:24;;;;;;;:66;;;;11054:42;;-1:-1:-1;;;;;11054:42:0;;;;;;;11086:9;1591:25:1;;1579:2;1564:18;;1445:177;11054:42:0;;;;;;;;10936:172;11127:21;:6;11138:9;11127:10;:21::i;:::-;11120:28;10433:723;-1:-1:-1;;;;;;10433:723:0:o;1102:181::-;1160:7;;1192:5;1196:1;1192;:5;:::i;:::-;1180:17;;1221:1;1216;:6;;1208:46;;;;-1:-1:-1;;;1208:46:0;;12094:2:1;1208:46:0;;;12076:21:1;12133:2;12113:18;;;12106:30;12172:29;12152:18;;;12145:57;12219:18;;1208:46:0;11892:351:1;1629:250:0;1687:7;1711:1;1716;1711:6;1707:47;;-1:-1:-1;1741:1:0;1734:8;;1707:47;1766:9;1778:5;1782:1;1778;:5;:::i;:::-;1766:17;-1:-1:-1;1811:1:0;1802:5;1806:1;1766:17;1802:5;:::i;:::-;:10;1794:56;;;;-1:-1:-1;;;1794:56:0;;12450:2:1;1794:56:0;;;12432:21:1;12489:2;12469:18;;;12462:30;12528:34;12508:18;;;12501:62;-1:-1:-1;;;12579:18:1;;;12572:31;12620:19;;1794:56:0;12248:397:1;1885:132:0;1943:7;1970:39;1974:1;1977;1970:39;;;;;;;;;;;;;;;;;:3;:39::i;1289:136::-;1347:7;1374:43;1378:1;1381;1374:43;;;;;;;;;;;;;;;;;:3;:43::i;2023:189::-;2109:7;2144:12;2137:5;2129:28;;;;-1:-1:-1;;;2129:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2168:9:0;2180:5;2184:1;2180;:5;:::i;14:118:1:-;100:5;93:13;86:21;79:5;76:32;66:60;;122:1;119;112:12;66:60;14:118;:::o;137:750::-;229:6;237;245;298:2;286:9;277:7;273:23;269:32;266:52;;;314:1;311;304:12;266:52;354:9;341:23;383:18;424:2;416:6;413:14;410:34;;;440:1;437;430:12;410:34;478:6;467:9;463:22;453:32;;523:7;516:4;512:2;508:13;504:27;494:55;;545:1;542;535:12;494:55;585:2;572:16;611:2;603:6;600:14;597:34;;;627:1;624;617:12;597:34;682:7;675:4;665:6;662:1;658:14;654:2;650:23;646:34;643:47;640:67;;;703:1;700;693:12;640:67;734:4;726:13;;;;-1:-1:-1;758:6:1;-1:-1:-1;;799:20:1;;786:34;829:28;786:34;829:28;:::i;:::-;876:5;866:15;;;137:750;;;;;:::o;892:548::-;1004:4;1033:2;1062;1051:9;1044:21;1094:6;1088:13;1137:6;1132:2;1121:9;1117:18;1110:34;1162:1;1172:140;1186:6;1183:1;1180:13;1172:140;;;1281:14;;;1277:23;;1271:30;1247:17;;;1266:2;1243:26;1236:66;1201:10;;1172:140;;;1176:3;1361:1;1356:2;1347:6;1336:9;1332:22;1328:31;1321:42;1431:2;1424;1420:7;1415:2;1407:6;1403:15;1399:29;1388:9;1384:45;1380:54;1372:62;;;;892:548;;;;:::o;1627:180::-;1686:6;1739:2;1727:9;1718:7;1714:23;1710:32;1707:52;;;1755:1;1752;1745:12;1707:52;-1:-1:-1;1778:23:1;;1627:180;-1:-1:-1;1627:180:1:o;1812:173::-;1880:20;;-1:-1:-1;;;;;1929:31:1;;1919:42;;1909:70;;1975:1;1972;1965:12;1909:70;1812:173;;;:::o;1990:254::-;2058:6;2066;2119:2;2107:9;2098:7;2094:23;2090:32;2087:52;;;2135:1;2132;2125:12;2087:52;2158:29;2177:9;2158:29;:::i;:::-;2148:39;2234:2;2219:18;;;;2206:32;;-1:-1:-1;;;1990:254:1:o;2441:328::-;2518:6;2526;2534;2587:2;2575:9;2566:7;2562:23;2558:32;2555:52;;;2603:1;2600;2593:12;2555:52;2626:29;2645:9;2626:29;:::i;:::-;2616:39;;2674:38;2708:2;2697:9;2693:18;2674:38;:::i;:::-;2664:48;;2759:2;2748:9;2744:18;2731:32;2721:42;;2441:328;;;;;:::o;2774:186::-;2833:6;2886:2;2874:9;2865:7;2861:23;2857:32;2854:52;;;2902:1;2899;2892:12;2854:52;2925:29;2944:9;2925:29;:::i;3154:248::-;3222:6;3230;3283:2;3271:9;3262:7;3258:23;3254:32;3251:52;;;3299:1;3296;3289:12;3251:52;-1:-1:-1;;3322:23:1;;;3392:2;3377:18;;;3364:32;;-1:-1:-1;3154:248:1:o;3407:316::-;3484:6;3492;3500;3553:2;3541:9;3532:7;3528:23;3524:32;3521:52;;;3569:1;3566;3559:12;3521:52;-1:-1:-1;;3592:23:1;;;3662:2;3647:18;;3634:32;;-1:-1:-1;3713:2:1;3698:18;;;3685:32;;3407:316;-1:-1:-1;3407:316:1:o;3936:260::-;4004:6;4012;4065:2;4053:9;4044:7;4040:23;4036:32;4033:52;;;4081:1;4078;4071:12;4033:52;4104:29;4123:9;4104:29;:::i;:::-;4094:39;;4152:38;4186:2;4175:9;4171:18;4152:38;:::i;:::-;4142:48;;3936:260;;;;;:::o;4201:309::-;4266:6;4274;4327:2;4315:9;4306:7;4302:23;4298:32;4295:52;;;4343:1;4340;4333:12;4295:52;4382:9;4369:23;4401:28;4423:5;4401:28;:::i;4741:329::-;4943:2;4925:21;;;4982:1;4962:18;;;4955:29;-1:-1:-1;;;5015:2:1;5000:18;;4993:36;5061:2;5046:18;;4741:329::o;5075:401::-;5277:2;5259:21;;;5316:2;5296:18;;;5289:30;5355:34;5350:2;5335:18;;5328:62;-1:-1:-1;;;5421:2:1;5406:18;;5399:35;5466:3;5451:19;;5075:401::o;5481:127::-;5542:10;5537:3;5533:20;5530:1;5523:31;5573:4;5570:1;5563:15;5597:4;5594:1;5587:15;5613:127;5674:10;5669:3;5665:20;5662:1;5655:31;5705:4;5702:1;5695:15;5729:4;5726:1;5719:15;5745:135;5784:3;5805:17;;;5802:43;;5825:18;;:::i;:::-;-1:-1:-1;5872:1:1;5861:13;;5745:135::o;6288:422::-;6377:1;6420:5;6377:1;6434:270;6455:7;6445:8;6442:21;6434:270;;;6514:4;6510:1;6506:6;6502:17;6496:4;6493:27;6490:53;;;6523:18;;:::i;:::-;6573:7;6563:8;6559:22;6556:55;;;6593:16;;;;6556:55;6672:22;;;;6632:15;;;;6434:270;;;6438:3;6288:422;;;;;:::o;6715:806::-;6764:5;6794:8;6784:80;;-1:-1:-1;6835:1:1;6849:5;;6784:80;6883:4;6873:76;;-1:-1:-1;6920:1:1;6934:5;;6873:76;6965:4;6983:1;6978:59;;;;7051:1;7046:130;;;;6958:218;;6978:59;7008:1;6999:10;;7022:5;;;7046:130;7083:3;7073:8;7070:17;7067:43;;;7090:18;;:::i;:::-;-1:-1:-1;;7146:1:1;7132:16;;7161:5;;6958:218;;7260:2;7250:8;7247:16;7241:3;7235:4;7232:13;7228:36;7222:2;7212:8;7209:16;7204:2;7198:4;7195:12;7191:35;7188:77;7185:159;;;-1:-1:-1;7297:19:1;;;7329:5;;7185:159;7376:34;7401:8;7395:4;7376:34;:::i;:::-;7446:6;7442:1;7438:6;7434:19;7425:7;7422:32;7419:58;;;7457:18;;:::i;:::-;7495:20;;6715:806;-1:-1:-1;;;6715:806:1:o;7526:140::-;7584:5;7613:47;7654:4;7644:8;7640:19;7634:4;7613:47;:::i;7671:168::-;7744:9;;;7775;;7792:15;;;7786:22;;7772:37;7762:71;;7813:18;;:::i;7844:217::-;7884:1;7910;7900:132;;7954:10;7949:3;7945:20;7942:1;7935:31;7989:4;7986:1;7979:15;8017:4;8014:1;8007:15;7900:132;-1:-1:-1;8046:9:1;;7844:217::o;8066:128::-;8133:9;;;8154:11;;;8151:37;;;8168:18;;:::i;8199:125::-;8264:9;;;8285:10;;;8282:36;;;8298:18;;:::i;8329:184::-;8399:6;8452:2;8440:9;8431:7;8427:23;8423:32;8420:52;;;8468:1;8465;8458:12;8420:52;-1:-1:-1;8491:16:1;;8329:184;-1:-1:-1;8329:184:1:o;8797:245::-;8864:6;8917:2;8905:9;8896:7;8892:23;8888:32;8885:52;;;8933:1;8930;8923:12;8885:52;8965:9;8959:16;8984:28;9006:5;8984:28;:::i;10697:980::-;10959:4;11007:3;10996:9;10992:19;11038:6;11027:9;11020:25;11064:2;11102:6;11097:2;11086:9;11082:18;11075:34;11145:3;11140:2;11129:9;11125:18;11118:31;11169:6;11204;11198:13;11235:6;11227;11220:22;11273:3;11262:9;11258:19;11251:26;;11312:2;11304:6;11300:15;11286:29;;11333:1;11343:195;11357:6;11354:1;11351:13;11343:195;;;11422:13;;-1:-1:-1;;;;;11418:39:1;11406:52;;11513:15;;;;11478:12;;;;11454:1;11372:9;11343:195;;;-1:-1:-1;;;;;;;11594:32:1;;;;11589:2;11574:18;;11567:60;-1:-1:-1;;;11658:3:1;11643:19;11636:35;11555:3;10697:980;-1:-1:-1;;;10697:980:1:o

Swarm Source

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