ETH Price: $2,637.29 (-0.83%)
Gas: 2 Gwei

Token

0XGENESIS (0XGEN)
 

Overview

Max Total Supply

1,000,000,000 0XGEN

Holders

97

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
2,582,720.806062697 0XGEN

Value
$0.00
0x203e56d23789f62975bd6b2f83dea2bda303b106
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:
GENESIS

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-26
*/

// SPDX-License-Identifier: MIT

/*
Within the ever-evolving cosmos, a remarkable and inspiring future materializes at the juncture of artificial intelligence and blockchain technology.

Website: https://0xgenesis.org
Twitter: https://twitter.com/0XGENESIS_ERC
Telegram: https://t.me/ERC_0XGENESIS
*/

pragma solidity 0.8.21;
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }
}
abstract contract Ownable {
    address internal owner;
    constructor(address _owner) {owner = _owner;}
    modifier onlyOwner() {require(isOwner(msg.sender), "Ownable: Caller is not owner"); _;}
    function isOwner(address account) public view returns (bool) {return account == owner;}
    function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
    event OwnershipTransferred(address owner);
}
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    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);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
interface IRouterDex {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
}
interface IFactoryDex {
    function createPair(address tokenA, address tokenB) external returns (address pairAddy);
}
contract GENESIS is Ownable, IERC20 {
    using SafeMath for uint256;
    string private constant _name = "0XGENESIS";
    string private constant _symbol = "0XGEN";
    uint8 private constant _decimals = 9;
    uint256 private _totalS = 10 ** 9 * (10 ** _decimals);
    
    IRouterDex dexRouter;
    address public pairAddy;
    bool private launched = false;
    bool private caSwapActive = true;
    uint256 private numCaSwaps;
    bool private inCASwap;
    uint256 caSwapCounter;
    uint256 private taxSwapMax = _totalS * 1000 / 100000;
    uint256 private taxSwapMin = _totalS * 10 / 100000;
    modifier reentrance {inCASwap = true; _; inCASwap = false;}
    uint256 private lpChargeFee = 0;
    uint256 private marketChargeFee = 0;
    uint256 private devChargeFee = 100;
    uint256 private burnChargeFee = 0;
    uint256 private buyersTax = 1000;
    uint256 private sellersTax = 1000;
    uint256 private transfersTax = 1000;
    uint256 private denominator = 10000;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal devAddy = 0x8833A528C103eA366F5f7215cC424e9727A4B7F5; 
    address internal marketingAddy = 0x8833A528C103eA366F5f7215cC424e9727A4B7F5;
    address internal lpFeeAddy = 0x8833A528C103eA366F5f7215cC424e9727A4B7F5;
    uint256 public _maximTrxSize = ( _totalS * 300 ) / 10000;
    uint256 public _maximTransferSize = ( _totalS * 300 ) / 10000;
    uint256 public _maximWalletSize = ( _totalS * 300 ) / 10000;

    mapping (address => bool) public _isExcludedFromFee;
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    constructor() Ownable(msg.sender) {
        IRouterDex _router = IRouterDex(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactoryDex(_router.factory()).createPair(address(this), _router.WETH());
        dexRouter = _router; pairAddy = _pair;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[lpFeeAddy] = true;
        _isExcludedFromFee[marketingAddy] = true;
        _isExcludedFromFee[devAddy] = true;
        _isExcludedFromFee[msg.sender] = true;
        _balances[msg.sender] = _totalS;
        emit Transfer(address(0), msg.sender, _totalS);
    }
    receive() external payable {}
    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function decimals() public pure returns (uint8) {return _decimals;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function totalSupply() public view override returns (uint256) {return _totalS.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function getOwner() external view override returns (address) { return owner; }
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function startTrading() external onlyOwner {launched = true;}
    function setMaxTxLimits(uint256 _buy, uint256 _sell, uint256 _wallet) external onlyOwner {
        uint256 newTx = _totalS.mul(_buy).div(10000); uint256 newTransfer = _totalS.mul(_sell).div(10000); uint256 newWallet = _totalS.mul(_wallet).div(10000);
        _maximTrxSize = newTx; _maximTransferSize = newTransfer; _maximWalletSize = newWallet;
        uint256 limit = totalSupply().mul(5).div(1000);
        require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%");
    }
    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    function clearCADust(address _address, uint256 percent) external onlyOwner {
        uint256 _amount = IERC20(_address).balanceOf(address(this)).mul(percent).div(100);
        IERC20(_address).transfer(devAddy, _amount);
    }
    function swapTaxTokensAndSend(uint256 tokens) private reentrance {
        uint256 _denominator = (lpChargeFee.add(1).add(marketChargeFee).add(devChargeFee)).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(lpChargeFee).div(_denominator);
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForFee(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(lpChargeFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(lpChargeFee);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmt = unitBalance.mul(2).mul(marketChargeFee);
        if(marketingAmt > 0){payable(marketingAddy).transfer(marketingAmt);}
        uint256 contractBalance = address(this).balance;
        if(contractBalance > uint256(0)){payable(devAddy).transfer(contractBalance);}
    }
    function swapTokensForFee(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();
        _approve(address(this), address(dexRouter), tokenAmount);
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp);
    }
    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
        if(!_isExcludedFromFee[sender] && !_isExcludedFromFee[recipient]){require(launched, "launched");}
        if(!_isExcludedFromFee[sender] && !_isExcludedFromFee[recipient] && recipient != address(pairAddy) && recipient != address(DEAD)){
        require((_balances[recipient].add(amount)) <= _maximWalletSize, "Exceeds maximum wallet amount.");}
        if(sender != pairAddy){require(amount <= _maximTransferSize || _isExcludedFromFee[sender] || _isExcludedFromFee[recipient], "TX Limit Exceeded");}
        require(amount <= _maximTrxSize || _isExcludedFromFee[sender] || _isExcludedFromFee[recipient], "TX Limit Exceeded"); 
        if(recipient == pairAddy && !_isExcludedFromFee[sender]){numCaSwaps += uint256(1);}
        if(canFeeSwapOnCA(sender, recipient, amount)){swapTaxTokensAndSend(taxSwapMax); numCaSwaps = uint256(0);}
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = !_isExcludedFromFee[sender] ? feeAmountToCharge(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }
    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }
    function feeByType(address sender, address recipient) internal view returns (uint256) {
        if(recipient == pairAddy){return sellersTax;}
        if(sender == pairAddy){return buyersTax;}
        return transfersTax;
    }
    function feeAmountToCharge(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if (_isExcludedFromFee[recipient]) {return _maximTrxSize;}
        if(feeByType(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(feeByType(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        if(burnChargeFee > uint256(0) && feeByType(sender, recipient) > burnChargeFee){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnChargeFee));}
        return amount.sub(feeAmount);} return amount;
    }
    function canFeeSwapOnCA(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= taxSwapMin;
        bool aboveThreshold = balanceOf(address(this)) >= taxSwapMax;
        return !inCASwap && caSwapActive && launched && aboveMin && !_isExcludedFromFee[sender] && recipient == pairAddy && numCaSwaps >= caSwapCounter && aboveThreshold;
    }
    function setFee(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        lpChargeFee = _liquidity; marketChargeFee = _marketing; burnChargeFee = _burn; devChargeFee = _development; buyersTax = _total; sellersTax = _sell; transfersTax = _trans;
        require(buyersTax <= denominator.div(1) && sellersTax <= denominator.div(1) && transfersTax <= denominator.div(1), "buyersTax and sellersTax cannot be more than 20%");
    }
    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(dexRouter), tokenAmount);
        dexRouter.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            lpFeeAddy,
            block.timestamp);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maximTransferSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maximTrxSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maximWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"clearCADust","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pairAddy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setMaxTxLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"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 payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a620004be565b6200002290633b9aca00620004d5565b60018190556003805461ffff60a01b1916600160a81b179055620186a0906200004e906103e8620004d5565b6200005a9190620004ef565b600755620186a0600154600a620000729190620004d5565b6200007e9190620004ef565b6008555f6009819055600a8190556064600b55600c556103e8600d819055600e819055600f55612710601081905560118054738833a528c103ea366f5f7215cc424e9727a4b7f56001600160a01b0319918216811790925560128054821683179055601380549091169091179055600154620000fd9061012c620004d5565b620001099190620004ef565b60145561271060015461012c620001219190620004d5565b6200012d9190620004ef565b60155561271060015461012c620001459190620004d5565b620001519190620004ef565b60165534801562000160575f80fd5b505f80546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa158015620001c5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001eb91906200050f565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000237573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200025d91906200050f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002a8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002ce91906200050f565b600280546001600160a01b038581166001600160a01b031992831617909255600380548484169216919091179055305f908152601760209081526040808320805460ff19908116600190811790925560135486168552828520805482168317905560125486168552828520805482168317905560115490951684528184208054861682179055338085528285208054909616821790955554601883528184208190559051908152939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505062000537565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200040357815f1904821115620003e757620003e7620003af565b80851615620003f557918102915b93841c9390800290620003c8565b509250929050565b5f826200041b57506001620004b8565b816200042957505f620004b8565b81600181146200044257600281146200044d576200046d565b6001915050620004b8565b60ff841115620004615762000461620003af565b50506001821b620004b8565b5060208310610133831016604e8410600b841016171562000492575081810a620004b8565b6200049e8383620003c3565b805f1904821115620004b457620004b4620003af565b0290505b92915050565b5f620004ce60ff8416836200040b565b9392505050565b8082028115828204841417620004b857620004b8620003af565b5f826200050a57634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121562000520575f80fd5b81516001600160a01b0381168114620004ce575f80fd5b61193080620005455f395ff3fe608060405260043610610129575f3560e01c806370a08231116100a8578063aeb5b9b51161006d578063aeb5b9b514610376578063dd62ed3e14610395578063ef76e5fa146103d9578063f2fde38b146103f8578063fc377b0214610417578063fd4c402b1461042c575f80fd5b806370a0823114610298578063768dc710146102cc578063893d20e8146102fa57806395d89b411461032a578063a9059cbb14610357575f80fd5b80632f54bf6e116100ee5780632f54bf6e146101fd578063313ce5671461022a578063359e70eb14610245578063424e4ca614610264578063556e065414610279575f80fd5b806306fdde0314610134578063095ea7b31461017757806318160ddd146101a657806323b872dd146101c8578063293230b8146101e7575f80fd5b3661013057005b5f80fd5b34801561013f575f80fd5b50604080518082019091526009815268305847454e4553495360b81b60208201525b60405161016e91906115a0565b60405180910390f35b348015610182575f80fd5b50610196610191366004611602565b610441565b604051901515815260200161016e565b3480156101b1575f80fd5b506101ba610457565b60405190815260200161016e565b3480156101d3575f80fd5b506101966101e236600461162c565b6104c7565b3480156101f2575f80fd5b506101fb61052f565b005b348015610208575f80fd5b5061019661021736600461166a565b5f546001600160a01b0391821691161490565b348015610235575f80fd5b506040516009815260200161016e565b348015610250575f80fd5b506101fb61025f366004611602565b610576565b34801561026f575f80fd5b506101ba60155481565b348015610284575f80fd5b506101fb610293366004611685565b61069c565b3480156102a3575f80fd5b506101ba6102b236600461166a565b6001600160a01b03165f9081526018602052604090205490565b3480156102d7575f80fd5b506101966102e636600461166a565b60176020525f908152604090205460ff1681565b348015610305575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161016e565b348015610335575f80fd5b50604080518082019091526005815264182c23a2a760d91b6020820152610161565b348015610362575f80fd5b50610196610371366004611602565b6107cc565b348015610381575f80fd5b506101fb6103903660046116ae565b6107d8565b3480156103a0575f80fd5b506101ba6103af3660046116f5565b6001600160a01b039182165f90815260196020908152604080832093909416825291909152205490565b3480156103e4575f80fd5b50600354610312906001600160a01b031681565b348015610403575f80fd5b506101fb61041236600461166a565b6108d2565b348015610422575f80fd5b506101ba60145481565b348015610437575f80fd5b506101ba60165481565b5f61044d33848461094e565b5060015b92915050565b60186020527f999d26de3473317ead3eeaf34ca78057f1439db67b6953469c3c96ce9caf6bd75461dead5f9081527fe3ec2099396b7359df1c566dfdf9dfdb5e22fd64a6ede9d61aa32b2f63968fd65460015491926104c29290916104bc9190610a71565b90610a71565b905090565b5f6104d3848484610a7c565b610524843361051f856040518060600160405280602881526020016118d3602891396001600160a01b038a165f9081526019602090815260408083203384529091529020549190610fb7565b61094e565b5060015b9392505050565b5f546001600160a01b031633146105615760405162461bcd60e51b81526004016105589061172c565b60405180910390fd5b6003805460ff60a01b1916600160a01b179055565b5f546001600160a01b0316331461059f5760405162461bcd60e51b81526004016105589061172c565b6040516370a0823160e01b81523060048201525f906106209060649061061a9085906001600160a01b038816906370a0823190602401602060405180830381865afa1580156105f0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106149190611763565b90610fe2565b90610fed565b60115460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303815f875af1158015610672573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610696919061177a565b50505050565b5f546001600160a01b031633146106c55760405162461bcd60e51b81526004016105589061172c565b5f6106e161271061061a86600154610fe290919063ffffffff16565b90505f6106ff61271061061a86600154610fe290919063ffffffff16565b90505f61071d61271061061a86600154610fe290919063ffffffff16565b60148490556015839055601681905590505f6107426103e861061a6005610614610457565b90508084101580156107545750808310155b80156107605750808210155b6107c35760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b6064820152608401610558565b50505050505050565b5f61044d338484610a7c565b5f546001600160a01b031633146108015760405162461bcd60e51b81526004016105589061172c565b6009879055600a869055600c859055600b849055600d839055600e829055600f819055601054610832906001610fed565b600d5411158015610852575060105461084c906001610fed565b600e5411155b801561086d5750601054610867906001610fed565b600f5411155b6107c35760405162461bcd60e51b815260206004820152603060248201527f62757965727354617820616e642073656c6c6572735461782063616e6e6f742060448201526f6265206d6f7265207468616e2032302560801b6064820152608401610558565b5f546001600160a01b031633146108fb5760405162461bcd60e51b81526004016105589061172c565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166109b05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610558565b6001600160a01b038216610a115760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610558565b6001600160a01b038381165f8181526019602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61052882846117ad565b6001600160a01b038316610ae05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610558565b6001600160a01b038216610b425760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610558565b6001600160a01b0383165f90815260186020526040902054811115610bc35760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610558565b6001600160a01b0383165f9081526017602052604090205460ff16158015610c0357506001600160a01b0382165f9081526017602052604090205460ff16155b15610c4c57600354600160a01b900460ff16610c4c5760405162461bcd60e51b81526020600482015260086024820152671b185d5b98da195960c21b6044820152606401610558565b6001600160a01b0383165f9081526017602052604090205460ff16158015610c8c57506001600160a01b0382165f9081526017602052604090205460ff16155b8015610ca657506003546001600160a01b03838116911614155b8015610cbd57506001600160a01b03821661dead14155b15610d35576016546001600160a01b0383165f90815260186020526040902054610ce79083610ff8565b1115610d355760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610558565b6003546001600160a01b03848116911614610dd45760155481111580610d7257506001600160a01b0383165f9081526017602052604090205460ff165b80610d9457506001600160a01b0382165f9081526017602052604090205460ff165b610dd45760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610558565b60145481111580610dfc57506001600160a01b0383165f9081526017602052604090205460ff165b80610e1e57506001600160a01b0382165f9081526017602052604090205460ff165b610e5e5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610558565b6003546001600160a01b038381169116148015610e9357506001600160a01b0383165f9081526017602052604090205460ff16155b15610eb057600160045f828254610eaa91906117c0565b90915550505b610ebb838383611003565b15610ed057610ecb6007546110bb565b5f6004555b6001600160a01b0383165f90815260186020526040902054610ef29082610a71565b6001600160a01b0384165f90815260186020908152604080832093909355601790529081205460ff1615610f265781610f31565b610f3184848461122b565b6001600160a01b0384165f90815260186020526040902054909150610f569082610ff8565b6001600160a01b038085165f8181526018602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610fa99085815260200190565b60405180910390a350505050565b5f8184841115610fda5760405162461bcd60e51b815260040161055891906115a0565b505050900390565b5f61052882846117d3565b5f61052882846117ea565b5f61052882846117c0565b600854600754305f9081526018602052604081205460055491938510159211159060ff1615801561103d5750600354600160a81b900460ff165b80156110525750600354600160a01b900460ff165b801561105b5750815b801561107f57506001600160a01b0386165f9081526017602052604090205460ff16155b801561109857506003546001600160a01b038681169116145b80156110a8575060065460045410155b80156110b15750805b9695505050505050565b6005805460ff19166001908117909155600b54600a546009545f936110f4936002936106149391926110ee928391610ff8565b90610ff8565b90505f6111108261061a60095486610fe290919063ffffffff16565b90505f61111d8483610a71565b90504761112982611355565b5f6111344783610a71565b90505f61115661114f60095488610a7190919063ffffffff16565b8390610fed565b90505f61116e60095483610fe290919063ffffffff16565b905080156111805761118086826114a5565b600a545f9061119490610614856002610fe2565b905080156111d5576012546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156111d3573d5f803e3d5ffd5b505b478015611215576011546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611213573d5f803e3d5ffd5b505b50506005805460ff191690555050505050505050565b6001600160a01b0382165f9081526017602052604081205460ff16156112545750601454610528565b5f61125f8585611556565b111561134e575f6112816112738686611556565b601054610614908690610fed565b305f9081526018602052604090205490915061129d9082610ff8565b305f81815260186020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112ed9085815260200190565b60405180910390a35f600c541180156113105750600c5461130e8686611556565b115b1561133c5761133c3061dead611337600c5461061460105489610fed90919063ffffffff16565b610a7c565b6113468382610a71565b915050610528565b5092915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061138857611388611809565b6001600160a01b03928316602091820292909201810191909152600254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113df573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611403919061181d565b8160018151811061141657611416611809565b6001600160a01b03928316602091820292909201015260025461143c913091168461094e565b60025460405163791ac94760e01b81526001600160a01b039091169063791ac947906114749085905f90869030904290600401611838565b5f604051808303815f87803b15801561148b575f80fd5b505af115801561149d573d5f803e3d5ffd5b505050505050565b6002546114bd9030906001600160a01b03168461094e565b60025460135460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af115801561152a573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061154f91906118a7565b5050505050565b6003545f906001600160a01b03908116908316036115775750600e54610451565b6003546001600160a01b03908116908416036115965750600d54610451565b50600f5492915050565b5f6020808352835180828501525f5b818110156115cb578581018301518582016040015282016115af565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146115ff575f80fd5b50565b5f8060408385031215611613575f80fd5b823561161e816115eb565b946020939093013593505050565b5f805f6060848603121561163e575f80fd5b8335611649816115eb565b92506020840135611659816115eb565b929592945050506040919091013590565b5f6020828403121561167a575f80fd5b8135610528816115eb565b5f805f60608486031215611697575f80fd5b505081359360208301359350604090920135919050565b5f805f805f805f60e0888a0312156116c4575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b5f8060408385031215611706575f80fd5b8235611711816115eb565b91506020830135611721816115eb565b809150509250929050565b6020808252601c908201527f4f776e61626c653a2043616c6c6572206973206e6f74206f776e657200000000604082015260600190565b5f60208284031215611773575f80fd5b5051919050565b5f6020828403121561178a575f80fd5b81518015158114610528575f80fd5b634e487b7160e01b5f52601160045260245ffd5b8181038181111561045157610451611799565b8082018082111561045157610451611799565b808202811582820484141761045157610451611799565b5f8261180457634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561182d575f80fd5b8151610528816115eb565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156118865784516001600160a01b031683529383019391830191600101611861565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156118b9575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209d2b7f6ae1920146a6b18b410190cde4d07e575d2fdef61d977ea49bca6ceca264736f6c63430008150033

Deployed Bytecode

0x608060405260043610610129575f3560e01c806370a08231116100a8578063aeb5b9b51161006d578063aeb5b9b514610376578063dd62ed3e14610395578063ef76e5fa146103d9578063f2fde38b146103f8578063fc377b0214610417578063fd4c402b1461042c575f80fd5b806370a0823114610298578063768dc710146102cc578063893d20e8146102fa57806395d89b411461032a578063a9059cbb14610357575f80fd5b80632f54bf6e116100ee5780632f54bf6e146101fd578063313ce5671461022a578063359e70eb14610245578063424e4ca614610264578063556e065414610279575f80fd5b806306fdde0314610134578063095ea7b31461017757806318160ddd146101a657806323b872dd146101c8578063293230b8146101e7575f80fd5b3661013057005b5f80fd5b34801561013f575f80fd5b50604080518082019091526009815268305847454e4553495360b81b60208201525b60405161016e91906115a0565b60405180910390f35b348015610182575f80fd5b50610196610191366004611602565b610441565b604051901515815260200161016e565b3480156101b1575f80fd5b506101ba610457565b60405190815260200161016e565b3480156101d3575f80fd5b506101966101e236600461162c565b6104c7565b3480156101f2575f80fd5b506101fb61052f565b005b348015610208575f80fd5b5061019661021736600461166a565b5f546001600160a01b0391821691161490565b348015610235575f80fd5b506040516009815260200161016e565b348015610250575f80fd5b506101fb61025f366004611602565b610576565b34801561026f575f80fd5b506101ba60155481565b348015610284575f80fd5b506101fb610293366004611685565b61069c565b3480156102a3575f80fd5b506101ba6102b236600461166a565b6001600160a01b03165f9081526018602052604090205490565b3480156102d7575f80fd5b506101966102e636600461166a565b60176020525f908152604090205460ff1681565b348015610305575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161016e565b348015610335575f80fd5b50604080518082019091526005815264182c23a2a760d91b6020820152610161565b348015610362575f80fd5b50610196610371366004611602565b6107cc565b348015610381575f80fd5b506101fb6103903660046116ae565b6107d8565b3480156103a0575f80fd5b506101ba6103af3660046116f5565b6001600160a01b039182165f90815260196020908152604080832093909416825291909152205490565b3480156103e4575f80fd5b50600354610312906001600160a01b031681565b348015610403575f80fd5b506101fb61041236600461166a565b6108d2565b348015610422575f80fd5b506101ba60145481565b348015610437575f80fd5b506101ba60165481565b5f61044d33848461094e565b5060015b92915050565b60186020527f999d26de3473317ead3eeaf34ca78057f1439db67b6953469c3c96ce9caf6bd75461dead5f9081527fe3ec2099396b7359df1c566dfdf9dfdb5e22fd64a6ede9d61aa32b2f63968fd65460015491926104c29290916104bc9190610a71565b90610a71565b905090565b5f6104d3848484610a7c565b610524843361051f856040518060600160405280602881526020016118d3602891396001600160a01b038a165f9081526019602090815260408083203384529091529020549190610fb7565b61094e565b5060015b9392505050565b5f546001600160a01b031633146105615760405162461bcd60e51b81526004016105589061172c565b60405180910390fd5b6003805460ff60a01b1916600160a01b179055565b5f546001600160a01b0316331461059f5760405162461bcd60e51b81526004016105589061172c565b6040516370a0823160e01b81523060048201525f906106209060649061061a9085906001600160a01b038816906370a0823190602401602060405180830381865afa1580156105f0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106149190611763565b90610fe2565b90610fed565b60115460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303815f875af1158015610672573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610696919061177a565b50505050565b5f546001600160a01b031633146106c55760405162461bcd60e51b81526004016105589061172c565b5f6106e161271061061a86600154610fe290919063ffffffff16565b90505f6106ff61271061061a86600154610fe290919063ffffffff16565b90505f61071d61271061061a86600154610fe290919063ffffffff16565b60148490556015839055601681905590505f6107426103e861061a6005610614610457565b90508084101580156107545750808310155b80156107605750808210155b6107c35760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b6064820152608401610558565b50505050505050565b5f61044d338484610a7c565b5f546001600160a01b031633146108015760405162461bcd60e51b81526004016105589061172c565b6009879055600a869055600c859055600b849055600d839055600e829055600f819055601054610832906001610fed565b600d5411158015610852575060105461084c906001610fed565b600e5411155b801561086d5750601054610867906001610fed565b600f5411155b6107c35760405162461bcd60e51b815260206004820152603060248201527f62757965727354617820616e642073656c6c6572735461782063616e6e6f742060448201526f6265206d6f7265207468616e2032302560801b6064820152608401610558565b5f546001600160a01b031633146108fb5760405162461bcd60e51b81526004016105589061172c565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166109b05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610558565b6001600160a01b038216610a115760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610558565b6001600160a01b038381165f8181526019602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61052882846117ad565b6001600160a01b038316610ae05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610558565b6001600160a01b038216610b425760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610558565b6001600160a01b0383165f90815260186020526040902054811115610bc35760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610558565b6001600160a01b0383165f9081526017602052604090205460ff16158015610c0357506001600160a01b0382165f9081526017602052604090205460ff16155b15610c4c57600354600160a01b900460ff16610c4c5760405162461bcd60e51b81526020600482015260086024820152671b185d5b98da195960c21b6044820152606401610558565b6001600160a01b0383165f9081526017602052604090205460ff16158015610c8c57506001600160a01b0382165f9081526017602052604090205460ff16155b8015610ca657506003546001600160a01b03838116911614155b8015610cbd57506001600160a01b03821661dead14155b15610d35576016546001600160a01b0383165f90815260186020526040902054610ce79083610ff8565b1115610d355760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610558565b6003546001600160a01b03848116911614610dd45760155481111580610d7257506001600160a01b0383165f9081526017602052604090205460ff165b80610d9457506001600160a01b0382165f9081526017602052604090205460ff165b610dd45760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610558565b60145481111580610dfc57506001600160a01b0383165f9081526017602052604090205460ff165b80610e1e57506001600160a01b0382165f9081526017602052604090205460ff165b610e5e5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610558565b6003546001600160a01b038381169116148015610e9357506001600160a01b0383165f9081526017602052604090205460ff16155b15610eb057600160045f828254610eaa91906117c0565b90915550505b610ebb838383611003565b15610ed057610ecb6007546110bb565b5f6004555b6001600160a01b0383165f90815260186020526040902054610ef29082610a71565b6001600160a01b0384165f90815260186020908152604080832093909355601790529081205460ff1615610f265781610f31565b610f3184848461122b565b6001600160a01b0384165f90815260186020526040902054909150610f569082610ff8565b6001600160a01b038085165f8181526018602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610fa99085815260200190565b60405180910390a350505050565b5f8184841115610fda5760405162461bcd60e51b815260040161055891906115a0565b505050900390565b5f61052882846117d3565b5f61052882846117ea565b5f61052882846117c0565b600854600754305f9081526018602052604081205460055491938510159211159060ff1615801561103d5750600354600160a81b900460ff165b80156110525750600354600160a01b900460ff165b801561105b5750815b801561107f57506001600160a01b0386165f9081526017602052604090205460ff16155b801561109857506003546001600160a01b038681169116145b80156110a8575060065460045410155b80156110b15750805b9695505050505050565b6005805460ff19166001908117909155600b54600a546009545f936110f4936002936106149391926110ee928391610ff8565b90610ff8565b90505f6111108261061a60095486610fe290919063ffffffff16565b90505f61111d8483610a71565b90504761112982611355565b5f6111344783610a71565b90505f61115661114f60095488610a7190919063ffffffff16565b8390610fed565b90505f61116e60095483610fe290919063ffffffff16565b905080156111805761118086826114a5565b600a545f9061119490610614856002610fe2565b905080156111d5576012546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156111d3573d5f803e3d5ffd5b505b478015611215576011546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611213573d5f803e3d5ffd5b505b50506005805460ff191690555050505050505050565b6001600160a01b0382165f9081526017602052604081205460ff16156112545750601454610528565b5f61125f8585611556565b111561134e575f6112816112738686611556565b601054610614908690610fed565b305f9081526018602052604090205490915061129d9082610ff8565b305f81815260186020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112ed9085815260200190565b60405180910390a35f600c541180156113105750600c5461130e8686611556565b115b1561133c5761133c3061dead611337600c5461061460105489610fed90919063ffffffff16565b610a7c565b6113468382610a71565b915050610528565b5092915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061138857611388611809565b6001600160a01b03928316602091820292909201810191909152600254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113df573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611403919061181d565b8160018151811061141657611416611809565b6001600160a01b03928316602091820292909201015260025461143c913091168461094e565b60025460405163791ac94760e01b81526001600160a01b039091169063791ac947906114749085905f90869030904290600401611838565b5f604051808303815f87803b15801561148b575f80fd5b505af115801561149d573d5f803e3d5ffd5b505050505050565b6002546114bd9030906001600160a01b03168461094e565b60025460135460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af115801561152a573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061154f91906118a7565b5050505050565b6003545f906001600160a01b03908116908316036115775750600e54610451565b6003546001600160a01b03908116908416036115965750600d54610451565b50600f5492915050565b5f6020808352835180828501525f5b818110156115cb578581018301518582016040015282016115af565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146115ff575f80fd5b50565b5f8060408385031215611613575f80fd5b823561161e816115eb565b946020939093013593505050565b5f805f6060848603121561163e575f80fd5b8335611649816115eb565b92506020840135611659816115eb565b929592945050506040919091013590565b5f6020828403121561167a575f80fd5b8135610528816115eb565b5f805f60608486031215611697575f80fd5b505081359360208301359350604090920135919050565b5f805f805f805f60e0888a0312156116c4575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b5f8060408385031215611706575f80fd5b8235611711816115eb565b91506020830135611721816115eb565b809150509250929050565b6020808252601c908201527f4f776e61626c653a2043616c6c6572206973206e6f74206f776e657200000000604082015260600190565b5f60208284031215611773575f80fd5b5051919050565b5f6020828403121561178a575f80fd5b81518015158114610528575f80fd5b634e487b7160e01b5f52601160045260245ffd5b8181038181111561045157610451611799565b8082018082111561045157610451611799565b808202811582820484141761045157610451611799565b5f8261180457634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561182d575f80fd5b8151610528816115eb565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156118865784516001600160a01b031683529383019391830191600101611861565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156118b9575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209d2b7f6ae1920146a6b18b410190cde4d07e575d2fdef61d977ea49bca6ceca264736f6c63430008150033

Deployed Bytecode Sourcemap

3386:10056:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5749:67;;;;;;;;;;-1:-1:-1;5809:5:0;;;;;;;;;;;;-1:-1:-1;;;5809:5:0;;;;5749:67;;;;;;;:::i;:::-;;;;;;;;6105:133;;;;;;;;;;-1:-1:-1;6105:133:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6105:133:0;1023:187:1;6244:127:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;6244:127:0;1215:177:1;10924:309:0;;;;;;;;;;-1:-1:-1;10924:309:0;;;;;:::i;:::-;;:::i;6715:61::-;;;;;;;;;;;;;:::i;:::-;;1473:87;;;;;;;;;;-1:-1:-1;1473:87:0;;;;;:::i;:::-;1528:4;1553:5;-1:-1:-1;;;;;1542:16:0;;;1553:5;;1542:16;;1473:87;5899:67;;;;;;;;;;-1:-1:-1;5899:67:0;;3595:1;2252:36:1;;2240:2;2225:18;5899:67:0;2110:184:1;7670:229:0;;;;;;;;;;-1:-1:-1;7670:229:0;;;;;:::i;:::-;;:::i;4777:61::-;;;;;;;;;;;;;;;;6782:541;;;;;;;;;;-1:-1:-1;6782:541:0;;;;;:::i;:::-;;:::i;6377:103::-;;;;;;;;;;-1:-1:-1;6377:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;6460:18:0;6443:7;6460:18;;;:9;:18;;;;;;;6377:103;4913:51;;;;;;;;;;-1:-1:-1;4913:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6486:78;;;;;;;;;;-1:-1:-1;6538:7:0;6556:5;-1:-1:-1;;;;;6556:5:0;6486:78;;;-1:-1:-1;;;;;2784:32:1;;;2766:51;;2754:2;2739:18;6486:78:0;2620:203:1;5822:71:0;;;;;;;;;;-1:-1:-1;5884:7:0;;;;;;;;;;;;-1:-1:-1;;;5884:7:0;;;;5822:71;;6570:139;;;;;;;;;;-1:-1:-1;6570:139:0;;;;;:::i;:::-;;:::i;12569:524::-;;;;;;;;;;-1:-1:-1;12569:524:0;;;;;:::i;:::-;;:::i;5972:127::-;;;;;;;;;;-1:-1:-1;5972:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;6070:18:0;;;6053:7;6070:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5972:127;3696:23;;;;;;;;;;-1:-1:-1;3696:23:0;;;;-1:-1:-1;;;;;3696:23:0;;;1566:111;;;;;;;;;;-1:-1:-1;1566:111:0;;;;;:::i;:::-;;:::i;4714:56::-;;;;;;;;;;;;;;;;4845:59;;;;;;;;;;;;;;;;6105:133;6180:4;6187:37;6196:10;6208:7;6217:6;6187:8;:37::i;:::-;-1:-1:-1;6232:4:0;6105:133;;;;;:::o;6244:127::-;6460:9;:18;;;;4428:42;6297:7;6460:18;;;;;6314:7;;6297;;6314:55;;6460:18;;6314:28;;:7;:11;:28::i;:::-;:32;;:55::i;:::-;6307:62;;6244:127;:::o;10924:309::-;11022:4;11039:36;11049:6;11057:9;11068:6;11039:9;:36::i;:::-;11086:117;11095:6;11103:10;11115:87;11151:6;11115:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11115:19:0;;;;;;:11;:19;;;;;;;;11135:10;11115:31;;;;;;;;;:87;:35;:87::i;:::-;11086:8;:117::i;:::-;-1:-1:-1;11221:4:0;10924:309;;;;;;:::o;6715:61::-;1528:4;1553:5;-1:-1:-1;;;;;1553:5:0;1418:10;1542:16;1402:60;;;;-1:-1:-1;;;1402:60:0;;;;;;;:::i;:::-;;;;;;;;;6759:8:::1;:15:::0;;-1:-1:-1;;;;6759:15:0::1;-1:-1:-1::0;;;6759:15:0::1;::::0;;6715:61::o;7670:229::-;1528:4;1553:5;-1:-1:-1;;;;;1553:5:0;1418:10;1542:16;1402:60;;;;-1:-1:-1;;;1402:60:0;;;;;;;:::i;:::-;7774:41:::1;::::0;-1:-1:-1;;;7774:41:0;;7809:4:::1;7774:41;::::0;::::1;2766:51:1::0;7756:15:0::1;::::0;7774:63:::1;::::0;7833:3:::1;::::0;7774:54:::1;::::0;7820:7;;-1:-1:-1;;;;;7774:26:0;::::1;::::0;::::1;::::0;2739:18:1;;7774:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45:::0;::::1;:54::i;:::-;:58:::0;::::1;:63::i;:::-;7874:7;::::0;7848:43:::1;::::0;-1:-1:-1;;;7848:43:0;;-1:-1:-1;;;;;7874:7:0;;::::1;7848:43;::::0;::::1;4798:51:1::0;4865:18;;;4858:34;;;7756:81:0;;-1:-1:-1;7848:25:0;::::1;::::0;::::1;::::0;4771:18:1;;7848:43:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7745:154;7670:229:::0;;:::o;6782:541::-;1528:4;1553:5;-1:-1:-1;;;;;1553:5:0;1418:10;1542:16;1402:60;;;;-1:-1:-1;;;1402:60:0;;;;;;;:::i;:::-;6882:13:::1;6898:28;6920:5;6898:17;6910:4;6898:7;;:11;;:17;;;;:::i;:28::-;6882:44;;6928:19;6950:29;6973:5;6950:18;6962:5;6950:7;;:11;;:18;;;;:::i;:29::-;6928:51;;6981:17;7001:31;7026:5;7001:20;7013:7;7001;;:11;;:20;;;;:::i;:31::-;7043:13;:21:::0;;;7066:18:::1;:32:::0;;;7100:16:::1;:28:::0;;;6981:51;-1:-1:-1;;7155:30:0::1;7180:4;7155:20;7173:1;7155:13;:11;:13::i;:30::-;7139:46;;7213:5;7204;:14;;:38;;;;;7237:5;7222:11;:20;;7204:38;:60;;;;;7259:5;7246:9;:18;;7204:60;7196:119;;;::::0;-1:-1:-1;;;7196:119:0;;5387:2:1;7196:119:0::1;::::0;::::1;5369:21:1::0;5426:2;5406:18;;;5399:30;5465:34;5445:18;;;5438:62;-1:-1:-1;;;5516:18:1;;;5509:44;5570:19;;7196:119:0::1;5185:410:1::0;7196:119:0::1;6871:452;;;;6782:541:::0;;;:::o;6570:139::-;6648:4;6655:40;6665:10;6677:9;6688:6;6655:9;:40::i;12569:524::-;1528:4;1553:5;-1:-1:-1;;;;;1553:5:0;1418:10;1542:16;1402:60;;;;-1:-1:-1;;;1402:60:0;;;;;;;:::i;:::-;12739:11:::1;:24:::0;;;12765:15:::1;:28:::0;;;12795:13:::1;:21:::0;;;12818:12:::1;:27:::0;;;12847:9:::1;:18:::0;;;12867:10:::1;:18:::0;;;12887:12:::1;:21:::0;;;12940:11:::1;::::0;:18:::1;::::0;-1:-1:-1;12940:15:0::1;:18::i;:::-;12927:9;;:31;;:67;;;;-1:-1:-1::0;12976:11:0::1;::::0;:18:::1;::::0;12992:1:::1;12976:15;:18::i;:::-;12962:10;;:32;;12927:67;:105;;;;-1:-1:-1::0;13014:11:0::1;::::0;:18:::1;::::0;13030:1:::1;13014:15;:18::i;:::-;12998:12;;:34;;12927:105;12919:166;;;::::0;-1:-1:-1;;;12919:166:0;;5802:2:1;12919:166:0::1;::::0;::::1;5784:21:1::0;5841:2;5821:18;;;5814:30;5880:34;5860:18;;;5853:62;-1:-1:-1;;;5931:18:1;;;5924:46;5987:19;;12919:166:0::1;5600:412:1::0;1566:111:0;1528:4;1553:5;-1:-1:-1;;;;;1553:5:0;1418:10;1542:16;1402:60;;;;-1:-1:-1;;;1402:60:0;;;;;;;:::i;:::-;1632:5:::1;:11:::0;;-1:-1:-1;;;;;;1632:11:0::1;-1:-1:-1::0;;;;;1632:11:0;::::1;::::0;;::::1;::::0;;;1650:25:::1;::::0;2766:51:1;;;1650:25:0::1;::::0;2754:2:1;2739:18;1650:25:0::1;;;;;;;1566:111:::0;:::o;7329:335::-;-1:-1:-1;;;;;7422:19:0;;7414:68;;;;-1:-1:-1;;;7414:68:0;;6435:2:1;7414:68:0;;;6417:21:1;6474:2;6454:18;;;6447:30;6513:34;6493:18;;;6486:62;-1:-1:-1;;;6564:18:1;;;6557:34;6608:19;;7414:68:0;6233:400:1;7414:68:0;-1:-1:-1;;;;;7501:21:0;;7493:68;;;;-1:-1:-1;;;7493:68:0;;6840:2:1;7493:68:0;;;6822:21:1;6879:2;6859:18;;;6852:30;6918:34;6898:18;;;6891:62;-1:-1:-1;;;6969:18:1;;;6962:32;7011:19;;7493:68:0;6638:398:1;7493:68:0;-1:-1:-1;;;;;7572:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7624:32;;1361:25:1;;;7624:32:0;;1334:18:1;7624:32:0;;;;;;;7329:335;;;:::o;465:98::-;523:7;550:5;554:1;550;:5;:::i;9410:1508::-;-1:-1:-1;;;;;9507:20:0;;9499:70;;;;-1:-1:-1;;;9499:70:0;;7508:2:1;9499:70:0;;;7490:21:1;7547:2;7527:18;;;7520:30;7586:34;7566:18;;;7559:62;-1:-1:-1;;;7637:18:1;;;7630:35;7682:19;;9499:70:0;7306:401:1;9499:70:0;-1:-1:-1;;;;;9588:23:0;;9580:71;;;;-1:-1:-1;;;9580:71:0;;7914:2:1;9580:71:0;;;7896:21:1;7953:2;7933:18;;;7926:30;7992:34;7972:18;;;7965:62;-1:-1:-1;;;8043:18:1;;;8036:33;8086:19;;9580:71:0;7712:399:1;9580:71:0;-1:-1:-1;;;;;6460:18:0;;6443:7;6460:18;;;:9;:18;;;;;;9670:6;:27;;9662:88;;;;-1:-1:-1;;;9662:88:0;;8318:2:1;9662:88:0;;;8300:21:1;8357:2;8337:18;;;8330:30;8396:34;8376:18;;;8369:62;-1:-1:-1;;;8447:18:1;;;8440:47;8504:19;;9662:88:0;8116:413:1;9662:88:0;-1:-1:-1;;;;;9765:26:0;;;;;;:18;:26;;;;;;;;9764:27;:61;;;;-1:-1:-1;;;;;;9796:29:0;;;;;;:18;:29;;;;;;;;9795:30;9764:61;9761:97;;;9835:8;;-1:-1:-1;;;9835:8:0;;;;9827:29;;;;-1:-1:-1;;;9827:29:0;;8736:2:1;9827:29:0;;;8718:21:1;8775:1;8755:18;;;8748:29;-1:-1:-1;;;8793:18:1;;;8786:38;8841:18;;9827:29:0;8534:331:1;9827:29:0;-1:-1:-1;;;;;9872:26:0;;;;;;:18;:26;;;;;;;;9871:27;:61;;;;-1:-1:-1;;;;;;9903:29:0;;;;;;:18;:29;;;;;;;;9902:30;9871:61;:95;;;;-1:-1:-1;9957:8:0;;-1:-1:-1;;;;;9936:30:0;;;9957:8;;9936:30;;9871:95;:125;;;;-1:-1:-1;;;;;;9970:26:0;;4428:42;9970:26;;9871:125;9868:239;;;10054:16;;-1:-1:-1;;;;;10017:20:0;;;;;;:9;:20;;;;;;:32;;10042:6;10017:24;:32::i;:::-;10016:54;;10008:97;;;;-1:-1:-1;;;10008:97:0;;9072:2:1;10008:97:0;;;9054:21:1;9111:2;9091:18;;;9084:30;9150:32;9130:18;;;9123:60;9200:18;;10008:97:0;8870:354:1;10008:97:0;10130:8;;-1:-1:-1;;;;;10120:18:0;;;10130:8;;10120:18;10117:146;;10158:18;;10148:6;:28;;:58;;;-1:-1:-1;;;;;;10180:26:0;;;;;;:18;:26;;;;;;;;10148:58;:91;;;-1:-1:-1;;;;;;10210:29:0;;;;;;:18;:29;;;;;;;;10148:91;10140:121;;;;-1:-1:-1;;;10140:121:0;;9431:2:1;10140:121:0;;;9413:21:1;9470:2;9450:18;;;9443:30;-1:-1:-1;;;9489:18:1;;;9482:47;9546:18;;10140:121:0;9229:341:1;10140:121:0;10291:13;;10281:6;:23;;:53;;;-1:-1:-1;;;;;;10308:26:0;;;;;;:18;:26;;;;;;;;10281:53;:86;;;-1:-1:-1;;;;;;10338:29:0;;;;;;:18;:29;;;;;;;;10281:86;10273:116;;;;-1:-1:-1;;;10273:116:0;;9431:2:1;10273:116:0;;;9413:21:1;9470:2;9450:18;;;9443:30;-1:-1:-1;;;9489:18:1;;;9482:47;9546:18;;10273:116:0;9229:341:1;10273:116:0;10417:8;;-1:-1:-1;;;;;10404:21:0;;;10417:8;;10404:21;:52;;;;-1:-1:-1;;;;;;10430:26:0;;;;;;:18;:26;;;;;;;;10429:27;10404:52;10401:83;;;10480:1;10458:10;;:24;;;;;;;:::i;:::-;;;;-1:-1:-1;;10401:83:0;10497:41;10512:6;10520:9;10531:6;10497:14;:41::i;:::-;10494:105;;;10540:32;10561:10;;10540:20;:32::i;:::-;10595:1;10574:10;:23;10494:105;-1:-1:-1;;;;;10629:17:0;;;;;;:9;:17;;;;;;:29;;10651:6;10629:21;:29::i;:::-;-1:-1:-1;;;;;10609:17:0;;;;;;:9;:17;;;;;;;;:49;;;;10695:18;:26;;;;;;;;10694:27;:83;;10771:6;10694:83;;;10724:44;10742:6;10750:9;10761:6;10724:17;:44::i;:::-;-1:-1:-1;;;;;10811:20:0;;;;;;:9;:20;;;;;;10669:108;;-1:-1:-1;10811:40:0;;10669:108;10811:24;:40::i;:::-;-1:-1:-1;;;;;10788:20:0;;;;;;;:9;:20;;;;;;;:63;;;;10867:43;;;;;;;;;;10895:14;1361:25:1;;1349:2;1334:18;;1215:177;10867:43:0;;;;;;;;9488:1430;9410:1508;;;:::o;777:240::-;897:7;958:12;950:6;;;;942:29;;;;-1:-1:-1;;;942:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;993:5:0;;;777:240::o;569:98::-;627:7;654:5;658:1;654;:5;:::i;673:98::-;731:7;758:5;762:1;758;:5;:::i;361:98::-;419:7;446:5;450:1;446;:5;:::i;12161:402::-;12302:10;;12373;;12363:4;12259;6460:18;;;:9;:18;;;;;;12402:8;;12259:4;;12292:20;;;;-1:-1:-1;12345:38:0;;12402:8;;12401:9;:25;;;;-1:-1:-1;12414:12:0;;-1:-1:-1;;;12414:12:0;;;;12401:25;:37;;;;-1:-1:-1;12430:8:0;;-1:-1:-1;;;12430:8:0;;;;12401:37;:49;;;;;12442:8;12401:49;:80;;;;-1:-1:-1;;;;;;12455:26:0;;;;;;:18;:26;;;;;;;;12454:27;12401:80;:105;;;;-1:-1:-1;12498:8:0;;-1:-1:-1;;;;;12485:21:0;;;12498:8;;12485:21;12401:105;:136;;;;;12524:13;;12510:10;;:27;;12401:136;:154;;;;;12541:14;12401:154;12394:161;12161:402;-1:-1:-1;;;;;;12161:402:0:o;7905:1050::-;4027:8;:15;;-1:-1:-1;;4027:15:0;4038:4;4027:15;;;;;;8049:12:::1;::::0;8028:15:::1;::::0;8005:11:::1;::::0;4027:8;;8004:66:::1;::::0;8068:1:::1;::::0;8005:57:::1;::::0;8049:12;;8005:39:::1;::::0;;;:15:::1;:18::i;:::-;:22:::0;::::1;:39::i;8004:66::-;7981:89;;8081:32;8116:41;8144:12;8116:23;8127:11;;8116:6;:10;;:23;;;;:::i;:41::-;8081:76:::0;-1:-1:-1;8168:14:0::1;8185:36;:6:::0;8081:76;8185:10:::1;:36::i;:::-;8168:53:::0;-1:-1:-1;8257:21:0::1;8289:24;8168:53:::0;8289:16:::1;:24::i;:::-;8324:20;8347:41;:21;8373:14:::0;8347:25:::1;:41::i;:::-;8324:64;;8399:19;8420:47;8437:29;8454:11;;8437:12;:16;;:29;;;;:::i;:::-;8420:12:::0;;:16:::1;:47::i;:::-;8399:68;;8478:29;8510:28;8526:11;;8510;:15;;:28;;;;:::i;:::-;8478:60:::0;-1:-1:-1;8552:34:0;;8549:103:::1;;8588:61;8601:24;8627:21;8588:12;:61::i;:::-;8708:15;::::0;8662:20:::1;::::0;8685:39:::1;::::0;:18:::1;:11:::0;8701:1:::1;8685:15;:18::i;:39::-;8662:62:::0;-1:-1:-1;8738:16:0;;8735:68:::1;;8764:13;::::0;8756:45:::1;::::0;-1:-1:-1;;;;;8764:13:0;;::::1;::::0;8756:45;::::1;;;::::0;8788:12;;8764:13:::1;8756:45:::0;8764:13;8756:45;8788:12;8764:13;8756:45;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;8735:68;8839:21;8874:28:::0;;8871:77:::1;;8912:7;::::0;8904:42:::1;::::0;-1:-1:-1;;;;;8912:7:0;;::::1;::::0;8904:42;::::1;;;::::0;8930:15;;8912:7:::1;8904:42:::0;8912:7;8904:42;8930:15;8912:7;8904:42;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;8871:77;-1:-1:-1::0;;4047:8:0;:16;;-1:-1:-1;;4047:16:0;;;-1:-1:-1;;;;;;;;7905:1050:0:o;11475:680::-;-1:-1:-1;;;;;11595:29:0;;11571:7;11595:29;;;:18;:29;;;;;;;;11591:58;;;-1:-1:-1;11634:13:0;;11627:20;;11591:58;11693:1;11662:28;11672:6;11680:9;11662;:28::i;:::-;:32;11659:474;;;11706:17;11726:57;11754:28;11764:6;11772:9;11754;:28::i;:::-;11737:11;;11726:23;;:6;;:10;:23::i;:57::-;11839:4;11821:24;;;;:9;:24;;;;;;11706:77;;-1:-1:-1;11821:39:0;;11706:77;11821:28;:39::i;:::-;11812:4;11794:24;;;;:9;:24;;;;;;;:66;;;;11876:42;;-1:-1:-1;;;;;11876:42:0;;;;;;;11908:9;1361:25:1;;1349:2;1334:18;;1215:177;11876:42:0;;;;;;;;11956:1;11932:13;;:26;:74;;;;;11993:13;;11962:28;11972:6;11980:9;11962;:28::i;:::-;:44;11932:74;11929:164;;;12008:83;12026:4;4428:42;12048;12076:13;;12048:23;12059:11;;12048:6;:10;;:23;;;;:::i;:42::-;12008:9;:83::i;:::-;12110:21;:6;12121:9;12110:10;:21::i;:::-;12103:28;;;;;11659:474;-1:-1:-1;12141:6:0;11475:680;-1:-1:-1;;11475:680:0:o;8961:443::-;9051:16;;;9065:1;9051:16;;;;;;;;9027:21;;9051:16;;;;;;;;;;-1:-1:-1;9051:16:0;9027:40;;9096:4;9078;9083:1;9078:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;9078:23:0;;;:7;;;;;;;;;;:23;;;;9122:9;;:16;;;-1:-1:-1;;;9122:16:0;;;;:9;;;;;:14;;:16;;;;;9078:7;;9122:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9112:4;9117:1;9112:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;9112:26:0;;;:7;;;;;;;;;:26;9181:9;;9149:56;;9166:4;;9181:9;9193:11;9149:8;:56::i;:::-;9216:9;;:180;;-1:-1:-1;;;9216:180:0;;-1:-1:-1;;;;;9216:9:0;;;;:60;;:180;;9291:11;;9216:9;;9333:4;;9360;;9380:15;;9216:180;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9016:388;8961:443;:::o;13099:340::-;13212:9;;13180:56;;13197:4;;-1:-1:-1;;;;;13212:9:0;13224:11;13180:8;:56::i;:::-;13247:9;;13391;;13247:184;;-1:-1:-1;;;13247:184:0;;13313:4;13247:184;;;11946:34:1;11996:18;;;11989:34;;;13247:9:0;12039:18:1;;;12032:34;;;12082:18;;;12075:34;-1:-1:-1;;;;;13391:9:0;;;12125:19:1;;;12118:44;13415:15:0;12178:19:1;;;12171:35;13247:9:0;;;:25;;13280:9;;11880:19:1;;13247:184:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13099:340;;:::o;11239:230::-;11352:8;;11316:7;;-1:-1:-1;;;;;11352:8:0;;;11339:21;;;;11336:45;;-1:-1:-1;11369:10:0;;11362:17;;11336:45;11404:8;;-1:-1:-1;;;;;11404:8:0;;;11394:18;;;;11391:41;;-1:-1:-1;11421:9:0;;11414:16;;11391:41;-1:-1:-1;11449:12:0;;11239:230;;;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;1858:247::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;2025:9;2012:23;2044:31;2069:5;2044:31;:::i;2299:316::-;2376:6;2384;2392;2445:2;2433:9;2424:7;2420:23;2416:32;2413:52;;;2461:1;2458;2451:12;2413:52;-1:-1:-1;;2484:23:1;;;2554:2;2539:18;;2526:32;;-1:-1:-1;2605:2:1;2590:18;;;2577:32;;2299:316;-1:-1:-1;2299:316:1:o;2828:592::-;2941:6;2949;2957;2965;2973;2981;2989;3042:3;3030:9;3021:7;3017:23;3013:33;3010:53;;;3059:1;3056;3049:12;3010:53;-1:-1:-1;;3082:23:1;;;3152:2;3137:18;;3124:32;;-1:-1:-1;3203:2:1;3188:18;;3175:32;;3254:2;3239:18;;3226:32;;-1:-1:-1;3305:3:1;3290:19;;3277:33;;-1:-1:-1;3357:3:1;3342:19;;3329:33;;-1:-1:-1;3409:3:1;3394:19;3381:33;;-1:-1:-1;2828:592:1;-1:-1:-1;2828:592:1:o;3425:388::-;3493:6;3501;3554:2;3542:9;3533:7;3529:23;3525:32;3522:52;;;3570:1;3567;3560:12;3522:52;3609:9;3596:23;3628:31;3653:5;3628:31;:::i;:::-;3678:5;-1:-1:-1;3735:2:1;3720:18;;3707:32;3748:33;3707:32;3748:33;:::i;:::-;3800:7;3790:17;;;3425:388;;;;;:::o;4078:352::-;4280:2;4262:21;;;4319:2;4299:18;;;4292:30;4358;4353:2;4338:18;;4331:58;4421:2;4406:18;;4078:352::o;4435:184::-;4505:6;4558:2;4546:9;4537:7;4533:23;4529:32;4526:52;;;4574:1;4571;4564:12;4526:52;-1:-1:-1;4597:16:1;;4435:184;-1:-1:-1;4435:184:1:o;4903:277::-;4970:6;5023:2;5011:9;5002:7;4998:23;4994:32;4991:52;;;5039:1;5036;5029:12;4991:52;5071:9;5065:16;5124:5;5117:13;5110:21;5103:5;5100:32;5090:60;;5146:1;5143;5136:12;7041:127;7102:10;7097:3;7093:20;7090:1;7083:31;7133:4;7130:1;7123:15;7157:4;7154:1;7147:15;7173:128;7240:9;;;7261:11;;;7258:37;;;7275:18;;:::i;9575:125::-;9640:9;;;9661:10;;;9658:36;;;9674:18;;:::i;9705:168::-;9778:9;;;9809;;9826:15;;;9820:22;;9806:37;9796:71;;9847:18;;:::i;9878:217::-;9918:1;9944;9934:132;;9988:10;9983:3;9979:20;9976:1;9969:31;10023:4;10020:1;10013:15;10051:4;10048:1;10041:15;9934:132;-1:-1:-1;10080:9:1;;9878:217::o;10232:127::-;10293:10;10288:3;10284:20;10281:1;10274:31;10324:4;10321:1;10314:15;10348:4;10345:1;10338:15;10364:251;10434:6;10487:2;10475:9;10466:7;10462:23;10458:32;10455:52;;;10503:1;10500;10493:12;10455:52;10535:9;10529:16;10554:31;10579:5;10554:31;:::i;10620:980::-;10882:4;10930:3;10919:9;10915:19;10961:6;10950:9;10943:25;10987:2;11025:6;11020:2;11009:9;11005:18;10998:34;11068:3;11063:2;11052:9;11048:18;11041:31;11092:6;11127;11121:13;11158:6;11150;11143:22;11196:3;11185:9;11181:19;11174:26;;11235:2;11227:6;11223:15;11209:29;;11256:1;11266:195;11280:6;11277:1;11274:13;11266:195;;;11345:13;;-1:-1:-1;;;;;11341:39:1;11329:52;;11436:15;;;;11401:12;;;;11377:1;11295:9;11266:195;;;-1:-1:-1;;;;;;;11517:32:1;;;;11512:2;11497:18;;11490:60;-1:-1:-1;;;11581:3:1;11566:19;11559:35;11478:3;10620:980;-1:-1:-1;;;10620:980:1:o;12217:306::-;12305:6;12313;12321;12374:2;12362:9;12353:7;12349:23;12345:32;12342:52;;;12390:1;12387;12380:12;12342:52;12419:9;12413:16;12403:26;;12469:2;12458:9;12454:18;12448:25;12438:35;;12513:2;12502:9;12498:18;12492:25;12482:35;;12217:306;;;;;:::o

Swarm Source

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