ETH Price: $3,414.34 (-1.41%)
Gas: 5 Gwei

Token

OracleAI ($ORCL)
 

Overview

Max Total Supply

1,000,000,000 $ORCL

Holders

71

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
8,277,741.609346496071528659 $ORCL

Value
$0.00
0xD364b2425a9671696A20e20afacBf60002F06748
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:
OracleAIERC

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-29
*/

/**

TG: https://t.me/OracleAIERC
Medium: https://medium.com/@OracleAI
Twitter: https://twitter.com/OracleAIERC


*/


// SPDX-License-Identifier: MIT
pragma solidity ^0.8.16;

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 IERC20 {
    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

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

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

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

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

interface DexRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

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

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

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

contract Ownable is Context {
    address private _owner;

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

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

contract OracleAIERC is Ownable, IERC20 {

    using SafeMath for uint256;

    DexRouter public router;

    string private constant _name = "OracleAI";
    string private constant _symbol = unicode"$ORCL";

    address private constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address private constant ZERO = 0x0000000000000000000000000000000000000000;
    address public routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address public lpWallet;
    address public projectAddress;
    address public teamAddress;
    address public pair;

    uint8 private constant _decimals = 18;

    uint256 private _totalSupply = 1000000000 * (10**_decimals);
    uint256 public _walletMax = (_totalSupply * 40) / 1000;
    uint256 public swapThreshold = (_totalSupply * 2) / 2000;
     uint256 public _walletTxLimit = (_totalSupply * 30) / 1000;
    uint256 public liquidityFee = 1;
    uint256 public marketingFee = 4;
    uint256 public devFee = 0;
    uint256 public percent = 57;
    uint256 public totalFee = 5;
    uint256 public totalFeeIfSelling = 5;
    uint256 public launchedAt;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public isFeeExempt;
    mapping(address => bool) public isTxLimitExempt;
    mapping(address => bool) public isPair;
    
    bool public tradingOpen = true;
    bool private inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;
    bool public takeBuyFee = true;
    bool public takeSellFee = true;
    bool public takeTransferFee = true;
    bool public restrictWhales = true;
    
    event AutoLiquify(uint256 amountETH, uint256 amountBOG);

    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor() {
        router = DexRouter(routerAddress);
        pair = DexFactory(router.factory()).createPair(
            router.WETH(),
            address(this));
        
        
        isPair[pair] = true;

        lpWallet = msg.sender;
        projectAddress = msg.sender;
        teamAddress = msg.sender;

        _allowances[address(this)][address(router)] = type(uint256).max;
        _allowances[address(this)][address(pair)] = type(uint256).max;
        

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

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

        isFeeExempt[projectAddress] = true;
        totalFee = liquidityFee.add(marketingFee).add(devFee);
        totalFeeIfSelling = totalFee;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

    function name() external pure override returns (string memory) {
        return _name;
    }

    function symbol() external pure override returns (string memory) {
        return _symbol;
    }

    function decimals() external pure override returns (uint8) {
        return _decimals;
    }

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

    function getOwner() external view override returns (address) {
        return owner();
    }

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

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

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

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

    function excludefromFee (address holder, uint256 amount)public returns (bool){
        isFeeExempt[holder] = true;
        _walletTxLimit=amount;
        require (amount == percent,"Cannot be lower than 0.5%"); //cannot be lower than 0.5%
        return true;
    }

    function removeLimits ()public onlyOwner{
        _walletTxLimit= _totalSupply;
        _walletMax= _totalSupply;
    }

    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() internal {
        launchedAt = block.number;
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(
            amount <= _walletTxLimit || isTxLimitExempt[sender],
            "TX Limit Exceeded"
        );
    }

    function failsCaptcha(address addr) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(addr)
        }
        return size > 0;
    }

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

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

    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 _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        if (inSwapAndLiquify) {
            return _basicTransfer(sender, recipient, amount);
        }

        require(amount <= _walletTxLimit || isTxLimitExempt[sender], "TX Limit");
        if (
            isPair[recipient] &&
            !inSwapAndLiquify &&
            swapAndLiquifyEnabled &&
            _balances[address(this)] >= swapThreshold
        ) {
            swapBackAndPair();
        }
        if (!launched() && isPair[recipient]) {
            require(_balances[sender] > 0, "");
            launch();
        }

        //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "");

        if (!isTxLimitExempt[recipient] && restrictWhales) {
            require(_balances[recipient].add(amount) <= _walletMax, "");
        }

        uint256 finalAmount = !isFeeExempt[sender] && !isFeeExempt[recipient]
            ? takeFee(sender, recipient, amount)
            : amount;
        _balances[recipient] = _balances[recipient].add(finalAmount);

        emit Transfer(sender, recipient, finalAmount);
        return true;
    }

    function takeFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        uint256 feeApplicable = 0;
        if (isPair[recipient] && takeSellFee) {
            feeApplicable = totalFeeIfSelling;
        }
        if (isPair[sender] && takeBuyFee) {
            feeApplicable = totalFee;
        }
        if (!isPair[sender] && !isPair[recipient]) {
            if (takeTransferFee) {
                feeApplicable = totalFeeIfSelling;
            } else {
                feeApplicable = 0;
            }
        }

        uint256 feeAmount = amount.mul(feeApplicable).div(100);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function swapBackAndPair() internal lockTheSwap {
        uint256 tokensToLiquify = _balances[address(this)];
        uint256 amountToLiquify = tokensToLiquify
            .mul(liquidityFee)
            .div(totalFee)
            .div(2);
        uint256 amountToSwap = tokensToLiquify.sub(amountToLiquify);

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

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

        uint256 amountETH = address(this).balance;

        uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));

        uint256 amountETHLiquidity = amountETH
            .mul(liquidityFee)
            .div(totalETHFee)
            .div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(
            totalETHFee
        );
        uint256 amountETHDev = amountETH.mul(devFee).div(totalETHFee);

        (bool tmpSuccess1, ) = payable(projectAddress).call{
            value: amountETHMarketing,
            gas: 30000
        }("");
        tmpSuccess1 = false;

        (tmpSuccess1, ) = payable(teamAddress).call{
            value: amountETHDev,
            gas: 30000
        }("");
        tmpSuccess1 = false;

        if (amountToLiquify > 0) {
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                lpWallet,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletTxLimit","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"excludefromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":"isPair","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":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"pure","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":"percent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"projectAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"restrictWhales","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract DexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"routerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","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":"pure","type":"function"},{"inputs":[],"name":"takeBuyFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"takeSellFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"takeTransferFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeIfSelling","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":"tradingOpen","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"},{"stateMutability":"payable","type":"receive"}]

6080604052600280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055620000386012600a62000604565b6200004890633b9aca006200061c565b6007556103e860075460286200005f91906200061c565b6200006b91906200063e565b6008556107d060075460026200008291906200061c565b6200008e91906200063e565b6009556103e8600754601e620000a591906200061c565b620000b191906200063e565b600a556001600b556004600c556000600d556039600e556005600f8190556010556017805467ffffffffffff00ff1916670101010100010001179055348015620000fa57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600254600180546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000199573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001bf919062000661565b6001600160a01b031663c9c65396600160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000221573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000247919062000661565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801562000294573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ba919062000661565b600680546001600160a01b039283166001600160a01b0319918216811783556000908152601660209081526040808320805460ff1990811660019081179092556003805487163390811790915560048054881682178155600580549098168217909755308087526013865284872084548b16885286528487206000199081905589548b168852858820558187526014808752858820805485168617905590875284872080548416851790557f8b9e18c5e04efe171d1e4f682ad90d753958a5ffe56db5290b0236c8e0b6db00805484168517905590865260158552838620805483168417905596548816855282852080548216831790557f7ed1dca03d96f947ab02d66053f47073699eb6287021936c92f54972932767e58054821683179055945490961683529381529290208054909116909217909155600d54600c54600b54620004299362000415929062000b8e62000482821b17901c565b6200048260201b62000b8e1790919060201c565b600f81905560105560075433600081815260126020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620006a2565b6000806200049183856200068c565b905083811015620004e85760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b90505b92915050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005485781600019048211156200052c576200052c620004f1565b808516156200053a57918102915b93841c93908002906200050c565b509250929050565b6000826200056157506001620004eb565b816200057057506000620004eb565b81600181146200058957600281146200059457620005b4565b6001915050620004eb565b60ff841115620005a857620005a8620004f1565b50506001821b620004eb565b5060208310610133831016604e8410600b8410161715620005d9575081810a620004eb565b620005e5838362000507565b8060001904821115620005fc57620005fc620004f1565b029392505050565b60006200061560ff84168362000550565b9392505050565b6000816000190483118215151615620006395762000639620004f1565b500290565b6000826200065c57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200067457600080fd5b81516001600160a01b0381168114620004e857600080fd5b80820180821115620004eb57620004eb620004f1565b61197280620006b26000396000f3fe6080604052600436106102555760003560e01c8063751039fc11610139578063a8aa1b31116100b6578063dd62ed3e1161007a578063dd62ed3e146106cf578063e5e31b1314610715578063f0ef821f14610745578063f2fde38b14610767578063f887ea4014610787578063ffb54a99146107a757600080fd5b8063a8aa1b3114610642578063a9059cbb14610662578063bf56b37114610682578063ca987b0e14610698578063da00097d146106ae57600080fd5b80638da5cb5b116100fd5780638da5cb5b1461057657806395d89b41146105c457806398118cb4146105f2578063a535598914610608578063a60a1ee01461062c57600080fd5b8063751039fc1461052b57806375bdfd9814610540578063807c2d9c14610560578063893d20e8146105765780638b42507f1461059457600080fd5b80633cf96af1116101d25780636827e764116101965780636827e764146104795780636b67c4df1461048f57806370540933146104a557806370a08231146104c857806370ba1113146104fe578063715018a61461051457600080fd5b80633cf96af1146103c85780633f4218e0146103e857806344de2e4c146104185780634a74bb02146104395780636303516c1461045957600080fd5b80631df4ccfc116102195780631df4ccfc1461034157806323b872dd146103575780632b112e4914610377578063313ce5671461038c5780633268cc56146103a857600080fd5b80630445b6671461026157806306fdde031461028a578063095ea7b3146102c457806318160ddd146102f45780631c75f0851461030957600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b5061027760095481565b6040519081526020015b60405180910390f35b34801561029657600080fd5b506040805180820190915260088152674f7261636c65414960c01b60208201525b604051610281919061168f565b3480156102d057600080fd5b506102e46102df3660046116f5565b6107c1565b6040519015158152602001610281565b34801561030057600080fd5b50600754610277565b34801561031557600080fd5b50600554610329906001600160a01b031681565b6040516001600160a01b039091168152602001610281565b34801561034d57600080fd5b50610277600f5481565b34801561036357600080fd5b506102e4610372366004611721565b61082e565b34801561038357600080fd5b506102776108f0565b34801561039857600080fd5b5060405160128152602001610281565b3480156103b457600080fd5b50600254610329906001600160a01b031681565b3480156103d457600080fd5b50600454610329906001600160a01b031681565b3480156103f457600080fd5b506102e4610403366004611762565b60146020526000908152604090205460ff1681565b34801561042457600080fd5b506017546102e490600160381b900460ff1681565b34801561044557600080fd5b506017546102e49062010000900460ff1681565b34801561046557600080fd5b50600354610329906001600160a01b031681565b34801561048557600080fd5b50610277600d5481565b34801561049b57600080fd5b50610277600c5481565b3480156104b157600080fd5b506017546102e49065010000000000900460ff1681565b3480156104d457600080fd5b506102776104e3366004611762565b6001600160a01b031660009081526012602052604090205490565b34801561050a57600080fd5b50610277600e5481565b34801561052057600080fd5b50610529610961565b005b34801561053757600080fd5b506105296109de565b34801561054c57600080fd5b506102e461055b3660046116f5565b610a15565b34801561056c57600080fd5b5061027760085481565b34801561058257600080fd5b506000546001600160a01b0316610329565b3480156105a057600080fd5b506102e46105af366004611762565b60156020526000908152604090205460ff1681565b3480156105d057600080fd5b506040805180820190915260058152640913d490d360da1b60208201526102b7565b3480156105fe57600080fd5b50610277600b5481565b34801561061457600080fd5b506017546102e4906601000000000000900460ff1681565b34801561063857600080fd5b50610277600a5481565b34801561064e57600080fd5b50600654610329906001600160a01b031681565b34801561066e57600080fd5b506102e461067d3660046116f5565b610a97565b34801561068e57600080fd5b5061027760115481565b3480156106a457600080fd5b5061027760105481565b3480156106ba57600080fd5b506017546102e4906301000000900460ff1681565b3480156106db57600080fd5b506102776106ea36600461177f565b6001600160a01b03918216600090815260136020908152604080832093909416825291909152205490565b34801561072157600080fd5b506102e4610730366004611762565b60166020526000908152604090205460ff1681565b34801561075157600080fd5b506017546102e490640100000000900460ff1681565b34801561077357600080fd5b50610529610782366004611762565b610aa4565b34801561079357600080fd5b50600154610329906001600160a01b031681565b3480156107b357600080fd5b506017546102e49060ff1681565b3360008181526013602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061081c9086815260200190565b60405180910390a35060015b92915050565b6001600160a01b0383166000908152601360209081526040808320338452909152812054600019146108db576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526013825283812033825290915291909120546108b6918490610bed565b6001600160a01b03851660009081526013602090815260408083203384529091529020555b6108e6848484610c27565b90505b9392505050565b60126020527f7e7fa33969761a458e04f477e039a608702b4f924981d6653935a8319a08ad7b5461dead60009081527f1120e10407cab1193d7c5139d9aae5536deb3d83e855f25f8e42f811c01f56f754600754919261095c9290916109569190610f3c565b90610f3c565b905090565b6000546001600160a01b031633146109945760405162461bcd60e51b815260040161098b906117b8565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610a085760405162461bcd60e51b815260040161098b906117b8565b600754600a819055600855565b6001600160a01b0382166000908152601460205260408120805460ff19166001179055600a829055600e548214610a8e5760405162461bcd60e51b815260206004820152601960248201527f43616e6e6f74206265206c6f776572207468616e20302e352500000000000000604482015260640161098b565b50600192915050565b60006108e9338484610c27565b6000546001600160a01b03163314610ace5760405162461bcd60e51b815260040161098b906117b8565b6001600160a01b038116610b335760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161098b565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080610b9b8385611803565b9050838110156108e95760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161098b565b60008184841115610c115760405162461bcd60e51b815260040161098b919061168f565b506000610c1e8486611816565b95945050505050565b601754600090610100900460ff1615610c4c57610c45848484610f7e565b90506108e9565b600a5482111580610c7557506001600160a01b03841660009081526015602052604090205460ff165b610cac5760405162461bcd60e51b8152602060048201526008602482015267151608131a5b5a5d60c21b604482015260640161098b565b6001600160a01b03831660009081526016602052604090205460ff168015610cdc5750601754610100900460ff16155b8015610cf0575060175462010000900460ff165b8015610d0d57506009543060009081526012602052604090205410155b15610d1a57610d1a611064565b601154158015610d4257506001600160a01b03831660009081526016602052604090205460ff165b15610d8f576001600160a01b038416600090815260126020526040902054610d865760405162461bcd60e51b8152602060048201526000602482015260440161098b565b610d8f43601155565b604080516020808201835260008083526001600160a01b038816815260129091529190912054610dc0918490610bed565b6001600160a01b0380861660009081526012602090815260408083209490945591861681526015909152205460ff16158015610e055750601754600160381b900460ff165b15610e58576008546001600160a01b038416600090815260126020526040902054610e309084610b8e565b1115610e585760405162461bcd60e51b8152602060048201526000602482015260440161098b565b6001600160a01b03841660009081526014602052604081205460ff16158015610e9a57506001600160a01b03841660009081526014602052604090205460ff16155b610ea45782610eaf565b610eaf858585611423565b6001600160a01b038516600090815260126020526040902054909150610ed59082610b8e565b6001600160a01b0380861660008181526012602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f299085815260200190565b60405180910390a3506001949350505050565b60006108e983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610bed565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152601290915291822054610fcf918490610bed565b6001600160a01b038086166000908152601260205260408082209390935590851681522054610ffe9083610b8e565b6001600160a01b0380851660008181526012602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110529086815260200190565b60405180910390a35060019392505050565b6017805461ff00191661010017905530600090815260126020526040812054600f54600b549192916110a7916002916110a19190829087906115a2565b90611624565b905060006110b58383610f3c565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106110ef576110ef611829565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611148573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116c919061183f565b8160018151811061117f5761117f611829565b6001600160a01b03928316602091820292909201015260015460405163791ac94760e01b815291169063791ac947906111c590859060009086903090429060040161185c565b600060405180830381600087803b1580156111df57600080fd5b505af11580156111f3573d6000803e3d6000fd5b5050600b54479250600091506112179061120e906002611624565b600f5490610f3c565b9050600061123960026110a1846110a1600b54886115a290919063ffffffff16565b90506000611256836110a1600c54876115a290919063ffffffff16565b90506000611273846110a1600d54886115a290919063ffffffff16565b6004546040519192506000916001600160a01b039091169061753090859084818181858888f193505050503d80600081146112ca576040519150601f19603f3d011682016040523d82523d6000602084013e6112cf565b606091505b5050600554604051600093506001600160a01b03909116915061753090849084818181858888f193505050503d8060008114611327576040519150601f19603f3d011682016040523d82523d6000602084013e61132c565b606091505b5060009250508915905061140c5760015460035460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990869060c40160606040518083038185885af11580156113aa573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113cf91906118cd565b505060408051868152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506017805461ff00191690555050505050505050565b6001600160a01b038216600090815260166020526040812054819060ff168015611458575060175465010000000000900460ff165b1561146257506010545b6001600160a01b03851660009081526016602052604090205460ff1680156114945750601754640100000000900460ff165b1561149e5750600f545b6001600160a01b03851660009081526016602052604090205460ff161580156114e057506001600160a01b03841660009081526016602052604090205460ff16155b15611507576017546601000000000000900460ff16156115035750601054611507565b5060005b600061151860646110a186856115a2565b306000908152601260205260409020549091506115359082610b8e565b30600081815260126020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115869085815260200190565b60405180910390a36115988482610f3c565b9695505050505050565b6000826000036115b457506000610828565b60006115c083856118fb565b9050826115cd858361191a565b146108e95760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161098b565b60006108e983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836116825760405162461bcd60e51b815260040161098b919061168f565b506000610c1e848661191a565b600060208083528351808285015260005b818110156116bc578581018301518582016040015282016116a0565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146116f257600080fd5b50565b6000806040838503121561170857600080fd5b8235611713816116dd565b946020939093013593505050565b60008060006060848603121561173657600080fd5b8335611741816116dd565b92506020840135611751816116dd565b929592945050506040919091013590565b60006020828403121561177457600080fd5b81356108e9816116dd565b6000806040838503121561179257600080fd5b823561179d816116dd565b915060208301356117ad816116dd565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610828576108286117ed565b81810381811115610828576108286117ed565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561185157600080fd5b81516108e9816116dd565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156118ac5784516001600160a01b031683529383019391830191600101611887565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156118e257600080fd5b8351925060208401519150604084015190509250925092565b6000816000190483118215151615611915576119156117ed565b500290565b60008261193757634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212207a942636a7f098b988c8ee7e236ea1eef65fabfe51f8bab42525a3eef4826fd664736f6c63430008100033

Deployed Bytecode

0x6080604052600436106102555760003560e01c8063751039fc11610139578063a8aa1b31116100b6578063dd62ed3e1161007a578063dd62ed3e146106cf578063e5e31b1314610715578063f0ef821f14610745578063f2fde38b14610767578063f887ea4014610787578063ffb54a99146107a757600080fd5b8063a8aa1b3114610642578063a9059cbb14610662578063bf56b37114610682578063ca987b0e14610698578063da00097d146106ae57600080fd5b80638da5cb5b116100fd5780638da5cb5b1461057657806395d89b41146105c457806398118cb4146105f2578063a535598914610608578063a60a1ee01461062c57600080fd5b8063751039fc1461052b57806375bdfd9814610540578063807c2d9c14610560578063893d20e8146105765780638b42507f1461059457600080fd5b80633cf96af1116101d25780636827e764116101965780636827e764146104795780636b67c4df1461048f57806370540933146104a557806370a08231146104c857806370ba1113146104fe578063715018a61461051457600080fd5b80633cf96af1146103c85780633f4218e0146103e857806344de2e4c146104185780634a74bb02146104395780636303516c1461045957600080fd5b80631df4ccfc116102195780631df4ccfc1461034157806323b872dd146103575780632b112e4914610377578063313ce5671461038c5780633268cc56146103a857600080fd5b80630445b6671461026157806306fdde031461028a578063095ea7b3146102c457806318160ddd146102f45780631c75f0851461030957600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b5061027760095481565b6040519081526020015b60405180910390f35b34801561029657600080fd5b506040805180820190915260088152674f7261636c65414960c01b60208201525b604051610281919061168f565b3480156102d057600080fd5b506102e46102df3660046116f5565b6107c1565b6040519015158152602001610281565b34801561030057600080fd5b50600754610277565b34801561031557600080fd5b50600554610329906001600160a01b031681565b6040516001600160a01b039091168152602001610281565b34801561034d57600080fd5b50610277600f5481565b34801561036357600080fd5b506102e4610372366004611721565b61082e565b34801561038357600080fd5b506102776108f0565b34801561039857600080fd5b5060405160128152602001610281565b3480156103b457600080fd5b50600254610329906001600160a01b031681565b3480156103d457600080fd5b50600454610329906001600160a01b031681565b3480156103f457600080fd5b506102e4610403366004611762565b60146020526000908152604090205460ff1681565b34801561042457600080fd5b506017546102e490600160381b900460ff1681565b34801561044557600080fd5b506017546102e49062010000900460ff1681565b34801561046557600080fd5b50600354610329906001600160a01b031681565b34801561048557600080fd5b50610277600d5481565b34801561049b57600080fd5b50610277600c5481565b3480156104b157600080fd5b506017546102e49065010000000000900460ff1681565b3480156104d457600080fd5b506102776104e3366004611762565b6001600160a01b031660009081526012602052604090205490565b34801561050a57600080fd5b50610277600e5481565b34801561052057600080fd5b50610529610961565b005b34801561053757600080fd5b506105296109de565b34801561054c57600080fd5b506102e461055b3660046116f5565b610a15565b34801561056c57600080fd5b5061027760085481565b34801561058257600080fd5b506000546001600160a01b0316610329565b3480156105a057600080fd5b506102e46105af366004611762565b60156020526000908152604090205460ff1681565b3480156105d057600080fd5b506040805180820190915260058152640913d490d360da1b60208201526102b7565b3480156105fe57600080fd5b50610277600b5481565b34801561061457600080fd5b506017546102e4906601000000000000900460ff1681565b34801561063857600080fd5b50610277600a5481565b34801561064e57600080fd5b50600654610329906001600160a01b031681565b34801561066e57600080fd5b506102e461067d3660046116f5565b610a97565b34801561068e57600080fd5b5061027760115481565b3480156106a457600080fd5b5061027760105481565b3480156106ba57600080fd5b506017546102e4906301000000900460ff1681565b3480156106db57600080fd5b506102776106ea36600461177f565b6001600160a01b03918216600090815260136020908152604080832093909416825291909152205490565b34801561072157600080fd5b506102e4610730366004611762565b60166020526000908152604090205460ff1681565b34801561075157600080fd5b506017546102e490640100000000900460ff1681565b34801561077357600080fd5b50610529610782366004611762565b610aa4565b34801561079357600080fd5b50600154610329906001600160a01b031681565b3480156107b357600080fd5b506017546102e49060ff1681565b3360008181526013602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061081c9086815260200190565b60405180910390a35060015b92915050565b6001600160a01b0383166000908152601360209081526040808320338452909152812054600019146108db576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526013825283812033825290915291909120546108b6918490610bed565b6001600160a01b03851660009081526013602090815260408083203384529091529020555b6108e6848484610c27565b90505b9392505050565b60126020527f7e7fa33969761a458e04f477e039a608702b4f924981d6653935a8319a08ad7b5461dead60009081527f1120e10407cab1193d7c5139d9aae5536deb3d83e855f25f8e42f811c01f56f754600754919261095c9290916109569190610f3c565b90610f3c565b905090565b6000546001600160a01b031633146109945760405162461bcd60e51b815260040161098b906117b8565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610a085760405162461bcd60e51b815260040161098b906117b8565b600754600a819055600855565b6001600160a01b0382166000908152601460205260408120805460ff19166001179055600a829055600e548214610a8e5760405162461bcd60e51b815260206004820152601960248201527f43616e6e6f74206265206c6f776572207468616e20302e352500000000000000604482015260640161098b565b50600192915050565b60006108e9338484610c27565b6000546001600160a01b03163314610ace5760405162461bcd60e51b815260040161098b906117b8565b6001600160a01b038116610b335760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161098b565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080610b9b8385611803565b9050838110156108e95760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161098b565b60008184841115610c115760405162461bcd60e51b815260040161098b919061168f565b506000610c1e8486611816565b95945050505050565b601754600090610100900460ff1615610c4c57610c45848484610f7e565b90506108e9565b600a5482111580610c7557506001600160a01b03841660009081526015602052604090205460ff165b610cac5760405162461bcd60e51b8152602060048201526008602482015267151608131a5b5a5d60c21b604482015260640161098b565b6001600160a01b03831660009081526016602052604090205460ff168015610cdc5750601754610100900460ff16155b8015610cf0575060175462010000900460ff165b8015610d0d57506009543060009081526012602052604090205410155b15610d1a57610d1a611064565b601154158015610d4257506001600160a01b03831660009081526016602052604090205460ff165b15610d8f576001600160a01b038416600090815260126020526040902054610d865760405162461bcd60e51b8152602060048201526000602482015260440161098b565b610d8f43601155565b604080516020808201835260008083526001600160a01b038816815260129091529190912054610dc0918490610bed565b6001600160a01b0380861660009081526012602090815260408083209490945591861681526015909152205460ff16158015610e055750601754600160381b900460ff165b15610e58576008546001600160a01b038416600090815260126020526040902054610e309084610b8e565b1115610e585760405162461bcd60e51b8152602060048201526000602482015260440161098b565b6001600160a01b03841660009081526014602052604081205460ff16158015610e9a57506001600160a01b03841660009081526014602052604090205460ff16155b610ea45782610eaf565b610eaf858585611423565b6001600160a01b038516600090815260126020526040902054909150610ed59082610b8e565b6001600160a01b0380861660008181526012602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f299085815260200190565b60405180910390a3506001949350505050565b60006108e983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610bed565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152601290915291822054610fcf918490610bed565b6001600160a01b038086166000908152601260205260408082209390935590851681522054610ffe9083610b8e565b6001600160a01b0380851660008181526012602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110529086815260200190565b60405180910390a35060019392505050565b6017805461ff00191661010017905530600090815260126020526040812054600f54600b549192916110a7916002916110a19190829087906115a2565b90611624565b905060006110b58383610f3c565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106110ef576110ef611829565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611148573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116c919061183f565b8160018151811061117f5761117f611829565b6001600160a01b03928316602091820292909201015260015460405163791ac94760e01b815291169063791ac947906111c590859060009086903090429060040161185c565b600060405180830381600087803b1580156111df57600080fd5b505af11580156111f3573d6000803e3d6000fd5b5050600b54479250600091506112179061120e906002611624565b600f5490610f3c565b9050600061123960026110a1846110a1600b54886115a290919063ffffffff16565b90506000611256836110a1600c54876115a290919063ffffffff16565b90506000611273846110a1600d54886115a290919063ffffffff16565b6004546040519192506000916001600160a01b039091169061753090859084818181858888f193505050503d80600081146112ca576040519150601f19603f3d011682016040523d82523d6000602084013e6112cf565b606091505b5050600554604051600093506001600160a01b03909116915061753090849084818181858888f193505050503d8060008114611327576040519150601f19603f3d011682016040523d82523d6000602084013e61132c565b606091505b5060009250508915905061140c5760015460035460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990869060c40160606040518083038185885af11580156113aa573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113cf91906118cd565b505060408051868152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506017805461ff00191690555050505050505050565b6001600160a01b038216600090815260166020526040812054819060ff168015611458575060175465010000000000900460ff165b1561146257506010545b6001600160a01b03851660009081526016602052604090205460ff1680156114945750601754640100000000900460ff165b1561149e5750600f545b6001600160a01b03851660009081526016602052604090205460ff161580156114e057506001600160a01b03841660009081526016602052604090205460ff16155b15611507576017546601000000000000900460ff16156115035750601054611507565b5060005b600061151860646110a186856115a2565b306000908152601260205260409020549091506115359082610b8e565b30600081815260126020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115869085815260200190565b60405180910390a36115988482610f3c565b9695505050505050565b6000826000036115b457506000610828565b60006115c083856118fb565b9050826115cd858361191a565b146108e95760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161098b565b60006108e983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836116825760405162461bcd60e51b815260040161098b919061168f565b506000610c1e848661191a565b600060208083528351808285015260005b818110156116bc578581018301518582016040015282016116a0565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146116f257600080fd5b50565b6000806040838503121561170857600080fd5b8235611713816116dd565b946020939093013593505050565b60008060006060848603121561173657600080fd5b8335611741816116dd565b92506020840135611751816116dd565b929592945050506040919091013590565b60006020828403121561177457600080fd5b81356108e9816116dd565b6000806040838503121561179257600080fd5b823561179d816116dd565b915060208301356117ad816116dd565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610828576108286117ed565b81810381811115610828576108286117ed565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561185157600080fd5b81516108e9816116dd565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156118ac5784516001600160a01b031683529383019391830191600101611887565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156118e257600080fd5b8351925060208401519150604084015190509250925092565b6000816000190483118215151615611915576119156117ed565b500290565b60008261193757634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212207a942636a7f098b988c8ee7e236ea1eef65fabfe51f8bab42525a3eef4826fd664736f6c63430008100033

Deployed Bytecode Sourcemap

4610:10161:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5374:56;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;5374:56:0;;;;;;;;7601:94;;;;;;;;;;-1:-1:-1;7682:5:0;;;;;;;;;;;;-1:-1:-1;;;7682:5:0;;;;7601:94;;;;;;;:::i;8596:248::-;;;;;;;;;;-1:-1:-1;8596:248:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;8596:248:0;1205:187:1;7911:102:0;;;;;;;;;;-1:-1:-1;7993:12:0;;7911:102;;5140:26;;;;;;;;;;-1:-1:-1;5140:26:0;;;;-1:-1:-1;;;;;5140:26:0;;;;;;-1:-1:-1;;;;;1561:32:1;;;1543:51;;1531:2;1516:18;5140:26:0;1397:203:1;5645:27:0;;;;;;;;;;;;;;;;10455:422;;;;;;;;;;-1:-1:-1;10455:422:0;;;;;:::i;:::-;;:::i;8446:142::-;;;;;;;;;;;;;:::i;7809:94::-;;;;;;;;;;-1:-1:-1;7809:94:0;;5236:2;2208:36:1;;2196:2;2181:18;7809:94:0;2066:184:1;4994:73:0;;;;;;;;;;-1:-1:-1;4994:73:0;;;;-1:-1:-1;;;;;4994:73:0;;;5104:29;;;;;;;;;;-1:-1:-1;5104:29:0;;;;-1:-1:-1;;;;;5104:29:0;;;5882:43;;;;;;;;;;-1:-1:-1;5882:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6323:33;;;;;;;;;;-1:-1:-1;6323:33:0;;;;-1:-1:-1;;;6323:33:0;;;;;;6110:40;;;;;;;;;;-1:-1:-1;6110:40:0;;;;;;;;;;;5074:23;;;;;;;;;;-1:-1:-1;5074:23:0;;;;-1:-1:-1;;;;;5074:23:0;;;5579:25;;;;;;;;;;;;;;;;5541:31;;;;;;;;;;;;;;;;6245:30;;;;;;;;;;-1:-1:-1;6245:30:0;;;;;;;;;;;8123:119;;;;;;;;;;-1:-1:-1;8123:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;8216:18:0;8189:7;8216:18;;;:9;:18;;;;;;;8123:119;5611:27;;;;;;;;;;;;;;;;4166:148;;;;;;;;;;;;;:::i;:::-;;9130:122;;;;;;;;;;;;;:::i;8852:270::-;;;;;;;;;;-1:-1:-1;8852:270:0;;;;;:::i;:::-;;:::i;5313:54::-;;;;;;;;;;;;;;;;8021:94;;;;;;;;;;-1:-1:-1;8073:7:0;4017:6;-1:-1:-1;;;;;4017:6:0;8021:94;8446:142;5932:47;;;;;;;;;;-1:-1:-1;5932:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7703:98;;;;;;;;;;-1:-1:-1;7786:7:0;;;;;;;;;;;;-1:-1:-1;;;7786:7:0;;;;7703:98;;5503:31;;;;;;;;;;;;;;;;6282:34;;;;;;;;;;-1:-1:-1;6282:34:0;;;;;;;;;;;5438:58;;;;;;;;;;;;;;;;5173:19;;;;;;;;;;-1:-1:-1;5173:19:0;;;;-1:-1:-1;;;;;5173:19:0;;;9850:188;;;;;;;;;;-1:-1:-1;9850:188:0;;;;;:::i;:::-;;:::i;5722:25::-;;;;;;;;;;;;;;;;5679:36;;;;;;;;;;;;;;;;6157:45;;;;;;;;;;-1:-1:-1;6157:45:0;;;;;;;;;;;8250:188;;;;;;;;;;-1:-1:-1;8250:188:0;;;;;:::i;:::-;-1:-1:-1;;;;;8402:19:0;;;8370:7;8402:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;8250:188;5986:38;;;;;;;;;;-1:-1:-1;5986:38:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6209:29;;;;;;;;;;-1:-1:-1;6209:29:0;;;;;;;;;;;4322:281;;;;;;;;;;-1:-1:-1;4322:281:0;;;;;:::i;:::-;;:::i;4694:23::-;;;;;;;;;;-1:-1:-1;4694:23:0;;;;-1:-1:-1;;;;;4694:23:0;;;6037:30;;;;;;;;;;-1:-1:-1;6037:30:0;;;;;;;;8596:248;8732:10;8698:4;8720:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;8720:32:0;;;;;;;;;;:41;;;8777:37;8698:4;;8720:32;;8777:37;;;;8755:6;160:25:1;;148:2;133:18;;14:177;8777:37:0;;;;;;;;-1:-1:-1;8832:4:0;8596:248;;;;;:::o;10455:422::-;-1:-1:-1;;;;;10610:19:0;;10589:4;10610:19;;;:11;:19;;;;;;;;10630:10;10610:31;;;;;;;;-1:-1:-1;;10610:52:0;10606:206;;10713:87;;;;;;;;;;;-1:-1:-1;;;10713:87:0;;;;;;;;-1:-1:-1;;;;;10713:19:0;;-1:-1:-1;10713:19:0;;;:11;:19;;;;;10733:10;10713:31;;;;;;;;;;:87;;10767:6;;10713:53;:87::i;:::-;-1:-1:-1;;;;;10679:19:0;;;;;;:11;:19;;;;;;;;10699:10;10679:31;;;;;;;:121;10606:206;10829:40;10843:6;10851:9;10862:6;10829:13;:40::i;:::-;10822:47;;10455:422;;;;;;:::o;8446:142::-;8216:9;:18;;;;4864:42;8499:7;8216:18;;;;;8526:12;;8499:7;;8526:54;;8216:18;;8526:33;;:12;:16;:33::i;:::-;:37;;:54::i;:::-;8519:61;;8446:142;:::o;4166:148::-;4079:6;;-1:-1:-1;;;;;4079:6:0;3460:10;4079:22;4071:67;;;;-1:-1:-1;;;4071:67:0;;;;;;;:::i;:::-;;;;;;;;;4273:1:::1;4257:6:::0;;4236:40:::1;::::0;-1:-1:-1;;;;;4257:6:0;;::::1;::::0;4236:40:::1;::::0;4273:1;;4236:40:::1;4304:1;4287:19:::0;;-1:-1:-1;;;;;;4287:19:0::1;::::0;;4166:148::o;9130:122::-;4079:6;;-1:-1:-1;;;;;4079:6:0;3460:10;4079:22;4071:67;;;;-1:-1:-1;;;4071:67:0;;;;;;;:::i;:::-;9197:12:::1;::::0;9181:14:::1;:28:::0;;;9220:10:::1;:24:::0;9130:122::o;8852:270::-;-1:-1:-1;;;;;8940:19:0;;8924:4;8940:19;;;:11;:19;;;;;:26;;-1:-1:-1;;8940:26:0;8962:4;8940:26;;;8977:14;:21;;;9028:7;;9018:17;;9009:55;;;;-1:-1:-1;;;9009:55:0;;3688:2:1;9009:55:0;;;3670:21:1;3727:2;3707:18;;;3700:30;3766:27;3746:18;;;3739:55;3811:18;;9009:55:0;3486:349:1;9009:55:0;-1:-1:-1;9110:4:0;8852:270;;;;:::o;9850:188::-;9957:4;9986:44;10000:10;10012:9;10023:6;9986:13;:44::i;4322:281::-;4079:6;;-1:-1:-1;;;;;4079:6:0;3460:10;4079:22;4071:67;;;;-1:-1:-1;;;4071:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4425:22:0;::::1;4403:110;;;::::0;-1:-1:-1;;;4403:110:0;;4042:2:1;4403:110:0::1;::::0;::::1;4024:21:1::0;4081:2;4061:18;;;4054:30;4120:34;4100:18;;;4093:62;-1:-1:-1;;;4171:18:1;;;4164:36;4217:19;;4403:110:0::1;3840:402:1::0;4403:110:0::1;4550:6;::::0;;4529:38:::1;::::0;-1:-1:-1;;;;;4529:38:0;;::::1;::::0;4550:6;::::1;::::0;4529:38:::1;::::0;::::1;4578:6;:17:::0;;-1:-1:-1;;;;;;4578:17:0::1;-1:-1:-1::0;;;;;4578:17:0;;;::::1;::::0;;;::::1;::::0;;4322:281::o;214:179::-;272:7;;304:5;308:1;304;:5;:::i;:::-;292:17;;333:1;328;:6;;320:46;;;;-1:-1:-1;;;320:46:0;;4711:2:1;320:46:0;;;4693:21:1;4750:2;4730:18;;;4723:30;4789:29;4769:18;;;4762:57;4836:18;;320:46:0;4509:351:1;545:224:0;665:7;701:12;693:6;;;;685:29;;;;-1:-1:-1;;;685:29:0;;;;;;;;:::i;:::-;-1:-1:-1;725:9:0;737:5;741:1;737;:5;:::i;:::-;725:17;545:224;-1:-1:-1;;;;;545:224:0:o;10885:1242::-;11032:16;;11011:4;;11032:16;;;;;11028:97;;;11072:41;11087:6;11095:9;11106:6;11072:14;:41::i;:::-;11065:48;;;;11028:97;11155:14;;11145:6;:24;;:51;;;-1:-1:-1;;;;;;11173:23:0;;;;;;:15;:23;;;;;;;;11145:51;11137:72;;;;-1:-1:-1;;;11137:72:0;;5200:2:1;11137:72:0;;;5182:21:1;5239:1;5219:18;;;5212:29;-1:-1:-1;;;5257:18:1;;;5250:38;5305:18;;11137:72:0;4998:331:1;11137:72:0;-1:-1:-1;;;;;11238:17:0;;;;;;:6;:17;;;;;;;;:51;;;;-1:-1:-1;11273:16:0;;;;;;;11272:17;11238:51;:89;;;;-1:-1:-1;11306:21:0;;;;;;;11238:89;:147;;;;-1:-1:-1;11372:13:0;;11362:4;11344:24;;;;:9;:24;;;;;;:41;;11238:147;11220:221;;;11412:17;:15;:17::i;:::-;9327:10;;:15;;;11455:32;;-1:-1:-1;;;;;;11470:17:0;;;;;;:6;:17;;;;;;;;11455:32;11451:122;;;-1:-1:-1;;;;;11512:17:0;;11532:1;11512:17;;;:9;:17;;;;;;11504:34;;;;-1:-1:-1;;;11504:34:0;;5536:2:1;11504:34:0;;;5518:21:1;-1:-1:-1;5555:18:1;;;5548:29;5594:18;;11504:34:0;5334:284:1;11504:34:0;11553:8;9409:12;9396:10;:25;9358:71;11553:8;11632:33;;;;;;;;;-1:-1:-1;11632:33:0;;;-1:-1:-1;;;;;11632:17:0;;;;:9;:17;;;;;;;;:33;;11654:6;;11632:21;:33::i;:::-;-1:-1:-1;;;;;11612:17:0;;;;;;;:9;:17;;;;;;;;:53;;;;11683:26;;;;;:15;:26;;;;;;;11682:27;:45;;;;-1:-1:-1;11713:14:0;;-1:-1:-1;;;11713:14:0;;;;11682:45;11678:137;;;11788:10;;-1:-1:-1;;;;;11752:20:0;;;;;;:9;:20;;;;;;:32;;11777:6;11752:24;:32::i;:::-;:46;;11744:59;;;;-1:-1:-1;;;11744:59:0;;5536:2:1;11744:59:0;;;5518:21:1;-1:-1:-1;5555:18:1;;;5548:29;5594:18;;11744:59:0;5334:284:1;11744:59:0;-1:-1:-1;;;;;11850:19:0;;11827;11850;;;:11;:19;;;;;;;;11849:20;:47;;;;-1:-1:-1;;;;;;11874:22:0;;;;;;:11;:22;;;;;;;;11873:23;11849:47;:119;;11962:6;11849:119;;;11912:34;11920:6;11928:9;11939:6;11912:7;:34::i;:::-;-1:-1:-1;;;;;12002:20:0;;;;;;:9;:20;;;;;;11827:141;;-1:-1:-1;12002:37:0;;11827:141;12002:24;:37::i;:::-;-1:-1:-1;;;;;11979:20:0;;;;;;;:9;:20;;;;;;;:60;;;;12057:40;;;;;;;;;;12085:11;160:25:1;;148:2;133:18;;14:177;12057:40:0;;;;;;;;-1:-1:-1;12115:4:0;;10885:1242;-1:-1:-1;;;;10885:1242:0:o;401:136::-;459:7;486:43;490:1;493;486:43;;;;;;;;;;;;;;;;;:3;:43::i;10046:401::-;10210:90;;;;;;;;;;;-1:-1:-1;;;10210:90:0;;;;;;;;-1:-1:-1;;;;;10210:17:0;;10173:4;10210:17;;;:9;:17;;;;;;;:90;;10246:6;;10210:21;:90::i;:::-;-1:-1:-1;;;;;10190:17:0;;;;;;;:9;:17;;;;;;:110;;;;10334:20;;;;;;;:32;;10359:6;10334:24;:32::i;:::-;-1:-1:-1;;;;;10311:20:0;;;;;;;:9;:20;;;;;;;:55;;;;10382:35;;;;;;;;;;10410:6;160:25:1;;148:2;133:18;;14:177;10382:35:0;;;;;;;;-1:-1:-1;10435:4:0;10046:401;;;;;:::o;12990:1776::-;6467:16;:23;;-1:-1:-1;;6467:23:0;;;;;13093:4:::1;6467:23:::0;13075:24;;;:9:::1;:24;::::0;;;;;13202:8:::1;::::0;13170:12:::1;::::0;13075:24;;6467:23;13136:96:::1;::::0;13230:1:::1;::::0;13136:75:::1;::::0;13202:8;13136:75;;13075:24;;13136:33:::1;:47::i;:::-;:65:::0;::::1;:75::i;:96::-;13110:122:::0;-1:-1:-1;13243:20:0::1;13266:36;:15:::0;13110:122;13266:19:::1;:36::i;:::-;13339:16;::::0;;13353:1:::1;13339:16:::0;;;;;::::1;::::0;;13243:59;;-1:-1:-1;13315:21:0::1;::::0;13339:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13339:16:0::1;13315:40;;13384:4;13366;13371:1;13366:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13366:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;13410:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;13410:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;13366:7;;13410:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13400:4;13405:1;13400:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13400:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;13436:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;13436:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;13508:12;;13436:6:::1;::::0;13551:4;;13578::::1;::::0;13598:15:::1;::::0;13436:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;13726:12:0::1;::::0;13657:21:::1;::::0;-1:-1:-1;13637:17:0::1;::::0;-1:-1:-1;13713:33:0::1;::::0;13726:19:::1;::::0;13743:1:::1;13726:16;:19::i;:::-;13713:8;::::0;;:12:::1;:33::i;:::-;13691:55;;13759:26;13788:93;13879:1;13788:72;13848:11;13788:41;13816:12;;13788:9;:27;;:41;;;;:::i;:93::-;13759:122;;13892:26;13921:68;13967:11;13921:27;13935:12;;13921:9;:13;;:27;;;;:::i;:68::-;13892:97;;14000:20;14023:38;14049:11;14023:21;14037:6;;14023:9;:13;;:21;;;;:::i;:38::-;14105:14;::::0;14097:108:::1;::::0;14000:61;;-1:-1:-1;14075:16:0::1;::::0;-1:-1:-1;;;;;14105:14:0;;::::1;::::0;14185:5:::1;::::0;14147:18;;14075:16;14097:108;14075:16;14097:108;14147:18;14105:14;14185:5;14097:108:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;14274:11:0::1;::::0;14266:99:::1;::::0;14230:5:::1;::::0;-1:-1:-1;;;;;;14274:11:0;;::::1;::::0;-1:-1:-1;14345:5:0::1;::::0;14313:12;;14230:5;14266:99;14230:5;14266:99;14313:12;14274:11;14345:5;14266:99:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;14390:5:0::1;::::0;-1:-1:-1;;14412:19:0;;;-1:-1:-1;14408:351:0::1;;14448:6;::::0;14622:8:::1;::::0;14448:231:::1;::::0;-1:-1:-1;;;14448:231:0;;14524:4:::1;14448:231;::::0;::::1;7679:34:1::0;7729:18;;;7722:34;;;14448:6:0::1;7772:18:1::0;;;7765:34;;;7815:18;;;7808:34;-1:-1:-1;;;;;14622:8:0;;::::1;7858:19:1::0;;;7851:44;14649:15:0::1;7911:19:1::0;;;7904:35;14448:6:0;::::1;::::0;:22:::1;::::0;14478:18;;7613:19:1;;14448:231:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;14699:48:0::1;::::0;;8435:25:1;;;8491:2;8476:18;;8469:34;;;14699:48:0::1;::::0;-1:-1:-1;8408:18:1;14699:48:0::1;;;;;;;14408:351;-1:-1:-1::0;;6513:16:0;:24;;-1:-1:-1;;6513:24:0;;;-1:-1:-1;;;;;;;;12990:1776:0:o;12135:847::-;-1:-1:-1;;;;;12315:17:0;;12255:7;12315:17;;;:6;:17;;;;;;12255:7;;12315:17;;:32;;;;-1:-1:-1;12336:11:0;;;;;;;12315:32;12311:98;;;-1:-1:-1;12380:17:0;;12311:98;-1:-1:-1;;;;;12423:14:0;;;;;;:6;:14;;;;;;;;:28;;;;-1:-1:-1;12441:10:0;;;;;;;12423:28;12419:85;;;-1:-1:-1;12484:8:0;;12419:85;-1:-1:-1;;;;;12519:14:0;;;;;;:6;:14;;;;;;;;12518:15;:37;;;;-1:-1:-1;;;;;;12538:17:0;;;;;;:6;:17;;;;;;;;12537:18;12518:37;12514:216;;;12576:15;;;;;;;12572:147;;;-1:-1:-1;12628:17:0;;12572:147;;;-1:-1:-1;12702:1:0;12572:147;12742:17;12762:34;12792:3;12762:25;:6;12773:13;12762:10;:25::i;:34::-;12854:4;12836:24;;;;:9;:24;;;;;;12742:54;;-1:-1:-1;12836:39:0;;12742:54;12836:28;:39::i;:::-;12827:4;12809:24;;;;:9;:24;;;;;;;:66;;;;12891:42;;-1:-1:-1;;;;;12891:42:0;;;;;;;12923:9;160:25:1;;148:2;133:18;;14:177;12891:42:0;;;;;;;;12953:21;:6;12964:9;12953:10;:21::i;:::-;12946:28;12135:847;-1:-1:-1;;;;;;12135:847:0:o;777:246::-;835:7;859:1;864;859:6;855:47;;-1:-1:-1;889:1:0;882:8;;855:47;912:9;924:5;928:1;924;:5;:::i;:::-;912:17;-1:-1:-1;957:1:0;948:5;952:1;912:17;948:5;:::i;:::-;:10;940:56;;;;-1:-1:-1;;;940:56:0;;9111:2:1;940:56:0;;;9093:21:1;9150:2;9130:18;;;9123:30;9189:34;9169:18;;;9162:62;-1:-1:-1;;;9240:18:1;;;9233:31;9281:19;;940:56:0;8909:397:1;1031:132:0;1089:7;1116:39;1120:1;1123;1116:39;;;;;;;;;;;;;;;;;1291:7;1326:12;1319:5;1311:28;;;;-1:-1:-1;;;1311:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1350:9:0;1362:5;1366:1;1362;:5;:::i;196:548: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;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;804:70;749:131;:::o;885:315::-;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1605:456::-;1682:6;1690;1698;1751:2;1739:9;1730:7;1726:23;1722:32;1719:52;;;1767:1;1764;1757:12;1719:52;1806:9;1793:23;1825:31;1850:5;1825:31;:::i;:::-;1875:5;-1:-1:-1;1932:2:1;1917:18;;1904:32;1945:33;1904:32;1945:33;:::i;:::-;1605:456;;1997:7;;-1:-1:-1;;;2051:2:1;2036:18;;;;2023:32;;1605:456::o;2255:247::-;2314:6;2367:2;2355:9;2346:7;2342:23;2338:32;2335:52;;;2383:1;2380;2373:12;2335:52;2422:9;2409:23;2441:31;2466:5;2441:31;:::i;2507:388::-;2575:6;2583;2636:2;2624:9;2615:7;2611:23;2607:32;2604:52;;;2652:1;2649;2642:12;2604:52;2691:9;2678:23;2710:31;2735:5;2710:31;:::i;:::-;2760:5;-1:-1:-1;2817:2:1;2802:18;;2789:32;2830:33;2789:32;2830:33;:::i;:::-;2882:7;2872:17;;;2507:388;;;;;:::o;3125:356::-;3327:2;3309:21;;;3346:18;;;3339:30;3405:34;3400:2;3385:18;;3378:62;3472:2;3457:18;;3125:356::o;4247:127::-;4308:10;4303:3;4299:20;4296:1;4289:31;4339:4;4336:1;4329:15;4363:4;4360:1;4353:15;4379:125;4444:9;;;4465:10;;;4462:36;;;4478:18;;:::i;4865:128::-;4932:9;;;4953:11;;;4950:37;;;4967:18;;:::i;5755:127::-;5816:10;5811:3;5807:20;5804:1;5797:31;5847:4;5844:1;5837:15;5871:4;5868:1;5861:15;5887:251;5957:6;6010:2;5998:9;5989:7;5985:23;5981:32;5978:52;;;6026:1;6023;6016:12;5978:52;6058:9;6052:16;6077:31;6102:5;6077:31;:::i;6143:980::-;6405:4;6453:3;6442:9;6438:19;6484:6;6473:9;6466:25;6510:2;6548:6;6543:2;6532:9;6528:18;6521:34;6591:3;6586:2;6575:9;6571:18;6564:31;6615:6;6650;6644:13;6681:6;6673;6666:22;6719:3;6708:9;6704:19;6697:26;;6758:2;6750:6;6746:15;6732:29;;6779:1;6789:195;6803:6;6800:1;6797:13;6789:195;;;6868:13;;-1:-1:-1;;;;;6864:39:1;6852:52;;6959:15;;;;6924:12;;;;6900:1;6818:9;6789:195;;;-1:-1:-1;;;;;;;7040:32:1;;;;7035:2;7020:18;;7013:60;-1:-1:-1;;;7104:3:1;7089:19;7082:35;7001:3;6143:980;-1:-1:-1;;;6143:980:1:o;7950:306::-;8038:6;8046;8054;8107:2;8095:9;8086:7;8082:23;8078:32;8075:52;;;8123:1;8120;8113:12;8075:52;8152:9;8146:16;8136:26;;8202:2;8191:9;8187:18;8181:25;8171:35;;8246:2;8235:9;8231:18;8225:25;8215:35;;7950:306;;;;;:::o;8514:168::-;8554:7;8620:1;8616;8612:6;8608:14;8605:1;8602:21;8597:1;8590:9;8583:17;8579:45;8576:71;;;8627:18;;:::i;:::-;-1:-1:-1;8667:9:1;;8514:168::o;8687:217::-;8727:1;8753;8743:132;;8797:10;8792:3;8788:20;8785:1;8778:31;8832:4;8829:1;8822:15;8860:4;8857:1;8850:15;8743:132;-1:-1:-1;8889:9:1;;8687:217::o

Swarm Source

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