ETH Price: $3,918.42 (+0.18%)

Token

ERC-20: Build The Temple (BUTT)
 

Overview

Max Total Supply

1,000,000,000,000 BUTT

Holders

15

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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

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

Contract Source Code Verified (Exact Match)

Contract Name:
BUTT

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-09-05
*/

//https://medium.com/@BUTTDAO/butt-2035cf775040
// SPDX-License-Identifier: unlicense
pragma solidity ^0.8.7;
 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}
 
interface IERC20 {
    function totalSupply() external view returns (uint256);
 
    function balanceOf(address account) external view returns (uint256);
 
    function transfer(address recipient, uint256 amount) external returns (bool);
 
    function allowance(address owner, address spender) external view returns (uint256);
 
    function approve(address spender, uint256 amount) external returns (bool);
 
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
 
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}
 
contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    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;
    }
 
}
 
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 IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}
 
interface IUniswapV2Router02 {    
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
 
    function factory() external pure returns (address);
}
 
contract BUTT is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "Build The Temple";
    string private constant _symbol = "BUTT";
    uint8 private constant _decimals = 9;
 
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1_000_000_000_000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 public launchBlock;
 
    //Buy Fee
    uint256 private _redisFeeOnBuy = 0;//
    uint256 private _taxFeeOnBuy = 5;//

    //Sell Fee
    uint256 private _redisFeeOnSell = 0;//
    uint256 private _taxFeeOnSell = 5;//

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
 
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    mapping(address => bool) public bots;
    mapping(address => uint256) private cooldown;
 
    address private constant _developmentAddress = 0x0ccAa23a400a4faAE55Ec3544eD842C2a4faF789;//
    address private constant _marketingAddress = 0x0ccAa23a400a4faAE55Ec3544eD842C2a4faF789;//
 
    IUniswapV2Router02 immutable public uniswapV2Router;
    address immutable public uniswapV2Pair;
    address constant public USDC_ADDRESS = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48;    
    IERC20 immutable USDC = IERC20(USDC_ADDRESS);
      
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
 
    uint256 public _maxTxAmount = 20_000_000_000 * 10**9; //2%
    uint256 public _maxWalletSize = 20_000_000_000 * 10**9; //2%
    uint256 public _swapTokensAtAmount = 1_000_000_000 * 10**9;
 
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    constructor() {
 
        _rOwned[_msgSender()] = _rTotal;
 
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), USDC_ADDRESS);
 
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;
  
        emit Transfer(address(0), _msgSender(), _tTotal);
    }
 
    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 totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }
 
    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }
 
    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
 
    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(_msgSender(), spender, amount);
        return true;
    }
 
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }
 
    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }
 
    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;
 
        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;
 
        _redisFee = 0;
        _taxFee = 0;
    }
 
    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }
 
    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 _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if(inSwap){
            return _tokenTransfer(from, to, amount, false);
        }
 
        if (from != _developmentAddress && to != _developmentAddress) {
 
            //Trade start check
            require(tradingOpen, "TOKEN: This account cannot send tokens until trading is enabled");
            
            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");
 
            if(block.number <= launchBlock + 0 && from == uniswapV2Pair && 
            to != address(uniswapV2Router) && to != address(this) && to != uniswapV2Pair){   
                bots[to] = true;
            } 
 
            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }
 
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;
              
            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled 
            && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                if(contractTokenBalance >= _maxTxAmount) {
                    contractTokenBalance = _maxTxAmount;
                }
                swapTokensForUSDC(contractTokenBalance);
            }
        }
 
        bool takeFee = true;
 
        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {
 
            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }
 
            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }
        }

        _tokenTransfer(from, to, amount, takeFee);
    }
 
    function swapTokensForUSDC(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = USDC_ADDRESS;

        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            (tokenAmount.div(2)),
            0,
            path,
            _marketingAddress,
            block.timestamp
        );

        uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            (tokenAmount.div(2)),
            0,
            path,
            _developmentAddress,
            block.timestamp
        );

    }
     
    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
        launchBlock = block.number;
    }
 
    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractTokenBalance = balanceOf(address(this));
        swapTokensForUSDC(contractTokenBalance);
    }

    function blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
 
    function unblockBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }
 
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }
 
    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
 
    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }
 
    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }
 
    receive() external payable {}
 
    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
 
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }
 
    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
 
        return (tTransferAmount, tFee, tTeam);
    }
 
    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
 
        return (rAmount, rTransferAmount, rFee); 
    }
 
    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
 
        return rSupply.div(tSupply);
    }
 
    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
 
        return (rSupply, tSupply);
    }
 
    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
 
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }
 
    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }
 
    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }
 
    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }
 
    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }
 
    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }
}

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":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":"USDC_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","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":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e06040526200001b683635c9adc5dea0000060001962000337565b62000029906000196200035a565b600655600060098190556005600a819055600b829055600c819055600d829055600e819055600f9190915560105573a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4860c0526013805462ffff001916620100001790556801158e460913d000006014819055601555670de0b6b3a7640000601655348015620000ab57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506006543360009081526002602090815260409182902092909255737a250d5630b4cf539739df2c5dacb4c659f2488d6080819052815163c45a015560e01b815291519092839263c45a01559260048083019392829003018186803b1580156200015557600080fd5b505afa1580156200016a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000190919062000380565b6040516364e329cb60e11b815230600482015273a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4860248201526001600160a01b03919091169063c9c6539690604401602060405180830381600087803b158015620001ee57600080fd5b505af115801562000203573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000229919062000380565b6001600160a01b031660a0526001600560006200024e6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905530815260059092528120805483166001908117909155730ccaa23a400a4faae55ec3544ed842c2a4faf7899091527f5dd9033b22f2f022ff93a619bbc6576b91606a16543780ca15dc2b9f3c6bea9c8054909216179055620002d93390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef683635c9adc5dea000006040516200032891815260200190565b60405180910390a350620003b2565b6000826200035557634e487b7160e01b600052601260045260246000fd5b500690565b6000828210156200037b57634e487b7160e01b600052601160045260246000fd5b500390565b6000602082840312156200039357600080fd5b81516001600160a01b0381168114620003ab57600080fd5b9392505050565b60805160a05160c05161205b62000441600039600050506000818161034f01528181610fa201528181611032015281816110920152818161116c01528181611269015281816112a6015281816112ea015261136f01526000818161028b01528181610fdf01528181611326015281816113ab0152818161156e0152818161159d0152611640015261205b6000f3fe6080604052600436106101d05760003560e01c80638da5cb5b116100f7578063bb09d9b711610095578063d00efb2f11610064578063d00efb2f1461058a578063dd62ed3e146105a0578063ea1644d5146105e6578063f2fde38b1461060657600080fd5b8063bb09d9b7146104fd578063bfd7928414610525578063c3c8cd8014610555578063c492f0461461056a57600080fd5b806395d89b41116100d157806395d89b411461047057806398a5c3151461049d578063a2a957bb146104bd578063a9059cbb146104dd57600080fd5b80638da5cb5b1461041c5780638f70ccf71461043a5780638f9a55c01461045a57600080fd5b8063313ce5671161016f57806370a082311161013e57806370a08231146103b1578063715018a6146103d157806374010ece146103e65780637d1db4a51461040657600080fd5b8063313ce5671461032157806349bd5a5e1461033d5780636b999053146103715780636d8aa8f81461039157600080fd5b80631694505e116101ab5780631694505e1461027957806318160ddd146102c557806323b872dd146102eb5780632fd689e31461030b57600080fd5b8062b8cf2a146101dc57806306fdde03146101fe578063095ea7b31461024957600080fd5b366101d757005b600080fd5b3480156101e857600080fd5b506101fc6101f7366004611bd8565b610626565b005b34801561020a57600080fd5b5060408051808201909152601081526f4275696c64205468652054656d706c6560801b60208201525b6040516102409190611c9d565b60405180910390f35b34801561025557600080fd5b50610269610264366004611cf2565b6106c5565b6040519015158152602001610240565b34801561028557600080fd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610240565b3480156102d157600080fd5b50683635c9adc5dea000005b604051908152602001610240565b3480156102f757600080fd5b50610269610306366004611d1c565b6106dc565b34801561031757600080fd5b506102dd60165481565b34801561032d57600080fd5b5060405160098152602001610240565b34801561034957600080fd5b506102ad7f000000000000000000000000000000000000000000000000000000000000000081565b34801561037d57600080fd5b506101fc61038c366004611d58565b610745565b34801561039d57600080fd5b506101fc6103ac366004611d83565b610790565b3480156103bd57600080fd5b506102dd6103cc366004611d58565b6107d6565b3480156103dd57600080fd5b506101fc6107f8565b3480156103f257600080fd5b506101fc610401366004611d9e565b61086c565b34801561041257600080fd5b506102dd60145481565b34801561042857600080fd5b506000546001600160a01b03166102ad565b34801561044657600080fd5b506101fc610455366004611d83565b61089b565b34801561046657600080fd5b506102dd60155481565b34801561047c57600080fd5b506040805180820190915260048152631095551560e21b6020820152610233565b3480156104a957600080fd5b506101fc6104b8366004611d9e565b6108dc565b3480156104c957600080fd5b506101fc6104d8366004611db7565b61090b565b3480156104e957600080fd5b506102696104f8366004611cf2565b610949565b34801561050957600080fd5b506102ad73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4881565b34801561053157600080fd5b50610269610540366004611d58565b60116020526000908152604090205460ff1681565b34801561056157600080fd5b506101fc610956565b34801561057657600080fd5b506101fc610585366004611de9565b6109ad565b34801561059657600080fd5b506102dd60085481565b3480156105ac57600080fd5b506102dd6105bb366004611e6d565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156105f257600080fd5b506101fc610601366004611d9e565b610a4e565b34801561061257600080fd5b506101fc610621366004611d58565b610a7d565b6000546001600160a01b031633146106595760405162461bcd60e51b815260040161065090611ea0565b60405180910390fd5b60005b81518110156106c15760016011600084848151811061067d5761067d611ed5565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806106b981611f01565b91505061065c565b5050565b60006106d2338484610b67565b5060015b92915050565b60006106e9848484610c8b565b61073b843361073685604051806060016040528060288152602001611ffe602891396001600160a01b038a16600090815260046020908152604080832033845290915290205491906113fe565b610b67565b5060019392505050565b6000546001600160a01b0316331461076f5760405162461bcd60e51b815260040161065090611ea0565b6001600160a01b03166000908152601160205260409020805460ff19169055565b6000546001600160a01b031633146107ba5760405162461bcd60e51b815260040161065090611ea0565b60138054911515620100000262ff000019909216919091179055565b6001600160a01b0381166000908152600260205260408120546106d690611438565b6000546001600160a01b031633146108225760405162461bcd60e51b815260040161065090611ea0565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108965760405162461bcd60e51b815260040161065090611ea0565b601455565b6000546001600160a01b031633146108c55760405162461bcd60e51b815260040161065090611ea0565b6013805460ff191691151591909117905543600855565b6000546001600160a01b031633146109065760405162461bcd60e51b815260040161065090611ea0565b601655565b6000546001600160a01b031633146109355760405162461bcd60e51b815260040161065090611ea0565b600993909355600b91909155600a55600c55565b60006106d2338484610c8b565b33730ccaa23a400a4faae55ec3544ed842c2a4faf789148061098b575033730ccaa23a400a4faae55ec3544ed842c2a4faf789145b61099457600080fd5b600061099f306107d6565b90506109aa816114bc565b50565b6000546001600160a01b031633146109d75760405162461bcd60e51b815260040161065090611ea0565b60005b82811015610a485781600560008686858181106109f9576109f9611ed5565b9050602002016020810190610a0e9190611d58565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610a4081611f01565b9150506109da565b50505050565b6000546001600160a01b03163314610a785760405162461bcd60e51b815260040161065090611ea0565b601555565b6000546001600160a01b03163314610aa75760405162461bcd60e51b815260040161065090611ea0565b6001600160a01b038116610b0c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610650565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610bc95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610650565b6001600160a01b038216610c2a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610650565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610cef5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610650565b6001600160a01b038216610d515760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610650565b60008111610db35760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610650565b601354610100900460ff1615610dd557610dd083838360006116ee565b505050565b6001600160a01b038316730ccaa23a400a4faae55ec3544ed842c2a4faf78914801590610e1f57506001600160a01b038216730ccaa23a400a4faae55ec3544ed842c2a4faf78914155b1561121f5760135460ff16610e9c5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610650565b601454811115610eee5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610650565b6001600160a01b03831660009081526011602052604090205460ff16158015610f3057506001600160a01b03821660009081526011602052604090205460ff16155b610f885760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b6064820152608401610650565b600854610f96906000611f1c565b4311158015610fd657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316145b801561101457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b801561102957506001600160a01b0382163014155b801561106757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b15611090576001600160a01b0382166000908152601160205260409020805460ff191660011790555b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161461113957601554816110d6846107d6565b6110e09190611f1c565b106111395760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610650565b6000611144306107d6565b601654909150811080159081906111635750601354610100900460ff16155b80156111a157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b80156111b5575060135462010000900460ff165b80156111da57506001600160a01b03851660009081526005602052604090205460ff16155b80156111ff57506001600160a01b03841660009081526005602052604090205460ff16155b1561121c5760145482106112135760145491505b61121c826114bc565b50505b6001600160a01b03831660009081526005602052604090205460019060ff168061126157506001600160a01b03831660009081526005602052604090205460ff165b806112db57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316141580156112db57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b156112e8575060006113f2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614801561135b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b1561136d57600954600d55600a54600e555b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161480156113e057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614155b156113f257600b54600d55600c54600e555b610a48848484846116ee565b600081848411156114225760405162461bcd60e51b81526004016106509190611c9d565b50600061142f8486611f34565b95945050505050565b600060065482111561149f5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610650565b60006114a961171c565b90506114b5838261173f565b9392505050565b6013805461ff001916610100179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061150057611500611ed5565b60200260200101906001600160a01b031690816001600160a01b03168152505073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb488160018151811061154857611548611ed5565b60200260200101906001600160a01b031690816001600160a01b031681525050611593307f000000000000000000000000000000000000000000000000000000000000000084610b67565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016635c11d7956115cd84600261173f565b600084730ccaa23a400a4faae55ec3544ed842c2a4faf789426040518663ffffffff1660e01b8152600401611606959493929190611f4b565b600060405180830381600087803b15801561162057600080fd5b505af1158015611634573d6000803e3d6000fd5b50506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150635c11d795905061167484600261173f565b600084730ccaa23a400a4faae55ec3544ed842c2a4faf789426040518663ffffffff1660e01b81526004016116ad959493929190611f4b565b600060405180830381600087803b1580156116c757600080fd5b505af11580156116db573d6000803e3d6000fd5b50506013805461ff001916905550505050565b806116fb576116fb611781565b6117068484846117af565b80610a4857610a48600f54600d55601054600e55565b60008060006117296118a6565b9092509050611738828261173f565b9250505090565b60006114b583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506118e8565b600d541580156117915750600e54155b1561179857565b600d8054600f55600e805460105560009182905555565b6000806000806000806117c187611916565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506117f39087611973565b6001600160a01b03808b1660009081526002602052604080822093909355908a168152205461182290866119b5565b6001600160a01b03891660009081526002602052604090205561184481611a14565b61184e8483611a5e565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161189391815260200190565b60405180910390a3505050505050505050565b6006546000908190683635c9adc5dea000006118c2828261173f565b8210156118df57505060065492683635c9adc5dea0000092509050565b90939092509050565b600081836119095760405162461bcd60e51b81526004016106509190611c9d565b50600061142f8486611fbc565b60008060008060008060008060006119338a600d54600e54611a82565b925092509250600061194361171c565b905060008060006119568e878787611ad7565b919e509c509a509598509396509194505050505091939550919395565b60006114b583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113fe565b6000806119c28385611f1c565b9050838110156114b55760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610650565b6000611a1e61171c565b90506000611a2c8383611b27565b30600090815260026020526040902054909150611a4990826119b5565b30600090815260026020526040902055505050565b600654611a6b9083611973565b600655600754611a7b90826119b5565b6007555050565b6000808080611a9c6064611a968989611b27565b9061173f565b90506000611aaf6064611a968a89611b27565b90506000611ac782611ac18b86611973565b90611973565b9992985090965090945050505050565b6000808080611ae68886611b27565b90506000611af48887611b27565b90506000611b028888611b27565b90506000611b1482611ac18686611973565b939b939a50919850919650505050505050565b600082611b36575060006106d6565b6000611b428385611fde565b905082611b4f8583611fbc565b146114b55760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610650565b634e487b7160e01b600052604160045260246000fd5b80356001600160a01b0381168114611bd357600080fd5b919050565b60006020808385031215611beb57600080fd5b823567ffffffffffffffff80821115611c0357600080fd5b818501915085601f830112611c1757600080fd5b813581811115611c2957611c29611ba6565b8060051b604051601f19603f83011681018181108582111715611c4e57611c4e611ba6565b604052918252848201925083810185019188831115611c6c57600080fd5b938501935b82851015611c9157611c8285611bbc565b84529385019392850192611c71565b98975050505050505050565b600060208083528351808285015260005b81811015611cca57858101830151858201604001528201611cae565b81811115611cdc576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215611d0557600080fd5b611d0e83611bbc565b946020939093013593505050565b600080600060608486031215611d3157600080fd5b611d3a84611bbc565b9250611d4860208501611bbc565b9150604084013590509250925092565b600060208284031215611d6a57600080fd5b6114b582611bbc565b80358015158114611bd357600080fd5b600060208284031215611d9557600080fd5b6114b582611d73565b600060208284031215611db057600080fd5b5035919050565b60008060008060808587031215611dcd57600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060408486031215611dfe57600080fd5b833567ffffffffffffffff80821115611e1657600080fd5b818601915086601f830112611e2a57600080fd5b813581811115611e3957600080fd5b8760208260051b8501011115611e4e57600080fd5b602092830195509350611e649186019050611d73565b90509250925092565b60008060408385031215611e8057600080fd5b611e8983611bbc565b9150611e9760208401611bbc565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415611f1557611f15611eeb565b5060010190565b60008219821115611f2f57611f2f611eeb565b500190565b600082821015611f4657611f46611eeb565b500390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611f9b5784516001600160a01b031683529383019391830191600101611f76565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611fd957634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611ff857611ff8611eeb565b50029056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122078f7b2f8ce1b17a8deda60cfc277f6d2e5363cf623232e09c761060d9cff92cf64736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101d05760003560e01c80638da5cb5b116100f7578063bb09d9b711610095578063d00efb2f11610064578063d00efb2f1461058a578063dd62ed3e146105a0578063ea1644d5146105e6578063f2fde38b1461060657600080fd5b8063bb09d9b7146104fd578063bfd7928414610525578063c3c8cd8014610555578063c492f0461461056a57600080fd5b806395d89b41116100d157806395d89b411461047057806398a5c3151461049d578063a2a957bb146104bd578063a9059cbb146104dd57600080fd5b80638da5cb5b1461041c5780638f70ccf71461043a5780638f9a55c01461045a57600080fd5b8063313ce5671161016f57806370a082311161013e57806370a08231146103b1578063715018a6146103d157806374010ece146103e65780637d1db4a51461040657600080fd5b8063313ce5671461032157806349bd5a5e1461033d5780636b999053146103715780636d8aa8f81461039157600080fd5b80631694505e116101ab5780631694505e1461027957806318160ddd146102c557806323b872dd146102eb5780632fd689e31461030b57600080fd5b8062b8cf2a146101dc57806306fdde03146101fe578063095ea7b31461024957600080fd5b366101d757005b600080fd5b3480156101e857600080fd5b506101fc6101f7366004611bd8565b610626565b005b34801561020a57600080fd5b5060408051808201909152601081526f4275696c64205468652054656d706c6560801b60208201525b6040516102409190611c9d565b60405180910390f35b34801561025557600080fd5b50610269610264366004611cf2565b6106c5565b6040519015158152602001610240565b34801561028557600080fd5b506102ad7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610240565b3480156102d157600080fd5b50683635c9adc5dea000005b604051908152602001610240565b3480156102f757600080fd5b50610269610306366004611d1c565b6106dc565b34801561031757600080fd5b506102dd60165481565b34801561032d57600080fd5b5060405160098152602001610240565b34801561034957600080fd5b506102ad7f000000000000000000000000fccde87e4a27f2c4a7b41178a788e63a1bd63ede81565b34801561037d57600080fd5b506101fc61038c366004611d58565b610745565b34801561039d57600080fd5b506101fc6103ac366004611d83565b610790565b3480156103bd57600080fd5b506102dd6103cc366004611d58565b6107d6565b3480156103dd57600080fd5b506101fc6107f8565b3480156103f257600080fd5b506101fc610401366004611d9e565b61086c565b34801561041257600080fd5b506102dd60145481565b34801561042857600080fd5b506000546001600160a01b03166102ad565b34801561044657600080fd5b506101fc610455366004611d83565b61089b565b34801561046657600080fd5b506102dd60155481565b34801561047c57600080fd5b506040805180820190915260048152631095551560e21b6020820152610233565b3480156104a957600080fd5b506101fc6104b8366004611d9e565b6108dc565b3480156104c957600080fd5b506101fc6104d8366004611db7565b61090b565b3480156104e957600080fd5b506102696104f8366004611cf2565b610949565b34801561050957600080fd5b506102ad73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4881565b34801561053157600080fd5b50610269610540366004611d58565b60116020526000908152604090205460ff1681565b34801561056157600080fd5b506101fc610956565b34801561057657600080fd5b506101fc610585366004611de9565b6109ad565b34801561059657600080fd5b506102dd60085481565b3480156105ac57600080fd5b506102dd6105bb366004611e6d565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156105f257600080fd5b506101fc610601366004611d9e565b610a4e565b34801561061257600080fd5b506101fc610621366004611d58565b610a7d565b6000546001600160a01b031633146106595760405162461bcd60e51b815260040161065090611ea0565b60405180910390fd5b60005b81518110156106c15760016011600084848151811061067d5761067d611ed5565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806106b981611f01565b91505061065c565b5050565b60006106d2338484610b67565b5060015b92915050565b60006106e9848484610c8b565b61073b843361073685604051806060016040528060288152602001611ffe602891396001600160a01b038a16600090815260046020908152604080832033845290915290205491906113fe565b610b67565b5060019392505050565b6000546001600160a01b0316331461076f5760405162461bcd60e51b815260040161065090611ea0565b6001600160a01b03166000908152601160205260409020805460ff19169055565b6000546001600160a01b031633146107ba5760405162461bcd60e51b815260040161065090611ea0565b60138054911515620100000262ff000019909216919091179055565b6001600160a01b0381166000908152600260205260408120546106d690611438565b6000546001600160a01b031633146108225760405162461bcd60e51b815260040161065090611ea0565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108965760405162461bcd60e51b815260040161065090611ea0565b601455565b6000546001600160a01b031633146108c55760405162461bcd60e51b815260040161065090611ea0565b6013805460ff191691151591909117905543600855565b6000546001600160a01b031633146109065760405162461bcd60e51b815260040161065090611ea0565b601655565b6000546001600160a01b031633146109355760405162461bcd60e51b815260040161065090611ea0565b600993909355600b91909155600a55600c55565b60006106d2338484610c8b565b33730ccaa23a400a4faae55ec3544ed842c2a4faf789148061098b575033730ccaa23a400a4faae55ec3544ed842c2a4faf789145b61099457600080fd5b600061099f306107d6565b90506109aa816114bc565b50565b6000546001600160a01b031633146109d75760405162461bcd60e51b815260040161065090611ea0565b60005b82811015610a485781600560008686858181106109f9576109f9611ed5565b9050602002016020810190610a0e9190611d58565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610a4081611f01565b9150506109da565b50505050565b6000546001600160a01b03163314610a785760405162461bcd60e51b815260040161065090611ea0565b601555565b6000546001600160a01b03163314610aa75760405162461bcd60e51b815260040161065090611ea0565b6001600160a01b038116610b0c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610650565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610bc95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610650565b6001600160a01b038216610c2a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610650565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610cef5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610650565b6001600160a01b038216610d515760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610650565b60008111610db35760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610650565b601354610100900460ff1615610dd557610dd083838360006116ee565b505050565b6001600160a01b038316730ccaa23a400a4faae55ec3544ed842c2a4faf78914801590610e1f57506001600160a01b038216730ccaa23a400a4faae55ec3544ed842c2a4faf78914155b1561121f5760135460ff16610e9c5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610650565b601454811115610eee5760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610650565b6001600160a01b03831660009081526011602052604090205460ff16158015610f3057506001600160a01b03821660009081526011602052604090205460ff16155b610f885760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b6064820152608401610650565b600854610f96906000611f1c565b4311158015610fd657507f000000000000000000000000fccde87e4a27f2c4a7b41178a788e63a1bd63ede6001600160a01b0316836001600160a01b0316145b801561101457507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614155b801561102957506001600160a01b0382163014155b801561106757507f000000000000000000000000fccde87e4a27f2c4a7b41178a788e63a1bd63ede6001600160a01b0316826001600160a01b031614155b15611090576001600160a01b0382166000908152601160205260409020805460ff191660011790555b7f000000000000000000000000fccde87e4a27f2c4a7b41178a788e63a1bd63ede6001600160a01b0316826001600160a01b03161461113957601554816110d6846107d6565b6110e09190611f1c565b106111395760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610650565b6000611144306107d6565b601654909150811080159081906111635750601354610100900460ff16155b80156111a157507f000000000000000000000000fccde87e4a27f2c4a7b41178a788e63a1bd63ede6001600160a01b0316856001600160a01b031614155b80156111b5575060135462010000900460ff165b80156111da57506001600160a01b03851660009081526005602052604090205460ff16155b80156111ff57506001600160a01b03841660009081526005602052604090205460ff16155b1561121c5760145482106112135760145491505b61121c826114bc565b50505b6001600160a01b03831660009081526005602052604090205460019060ff168061126157506001600160a01b03831660009081526005602052604090205460ff165b806112db57507f000000000000000000000000fccde87e4a27f2c4a7b41178a788e63a1bd63ede6001600160a01b0316846001600160a01b0316141580156112db57507f000000000000000000000000fccde87e4a27f2c4a7b41178a788e63a1bd63ede6001600160a01b0316836001600160a01b031614155b156112e8575060006113f2565b7f000000000000000000000000fccde87e4a27f2c4a7b41178a788e63a1bd63ede6001600160a01b0316846001600160a01b031614801561135b57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316836001600160a01b031614155b1561136d57600954600d55600a54600e555b7f000000000000000000000000fccde87e4a27f2c4a7b41178a788e63a1bd63ede6001600160a01b0316836001600160a01b03161480156113e057507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316846001600160a01b031614155b156113f257600b54600d55600c54600e555b610a48848484846116ee565b600081848411156114225760405162461bcd60e51b81526004016106509190611c9d565b50600061142f8486611f34565b95945050505050565b600060065482111561149f5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610650565b60006114a961171c565b90506114b5838261173f565b9392505050565b6013805461ff001916610100179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061150057611500611ed5565b60200260200101906001600160a01b031690816001600160a01b03168152505073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb488160018151811061154857611548611ed5565b60200260200101906001600160a01b031690816001600160a01b031681525050611593307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610b67565b6001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d16635c11d7956115cd84600261173f565b600084730ccaa23a400a4faae55ec3544ed842c2a4faf789426040518663ffffffff1660e01b8152600401611606959493929190611f4b565b600060405180830381600087803b15801561162057600080fd5b505af1158015611634573d6000803e3d6000fd5b50506001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169150635c11d795905061167484600261173f565b600084730ccaa23a400a4faae55ec3544ed842c2a4faf789426040518663ffffffff1660e01b81526004016116ad959493929190611f4b565b600060405180830381600087803b1580156116c757600080fd5b505af11580156116db573d6000803e3d6000fd5b50506013805461ff001916905550505050565b806116fb576116fb611781565b6117068484846117af565b80610a4857610a48600f54600d55601054600e55565b60008060006117296118a6565b9092509050611738828261173f565b9250505090565b60006114b583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506118e8565b600d541580156117915750600e54155b1561179857565b600d8054600f55600e805460105560009182905555565b6000806000806000806117c187611916565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506117f39087611973565b6001600160a01b03808b1660009081526002602052604080822093909355908a168152205461182290866119b5565b6001600160a01b03891660009081526002602052604090205561184481611a14565b61184e8483611a5e565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161189391815260200190565b60405180910390a3505050505050505050565b6006546000908190683635c9adc5dea000006118c2828261173f565b8210156118df57505060065492683635c9adc5dea0000092509050565b90939092509050565b600081836119095760405162461bcd60e51b81526004016106509190611c9d565b50600061142f8486611fbc565b60008060008060008060008060006119338a600d54600e54611a82565b925092509250600061194361171c565b905060008060006119568e878787611ad7565b919e509c509a509598509396509194505050505091939550919395565b60006114b583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113fe565b6000806119c28385611f1c565b9050838110156114b55760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610650565b6000611a1e61171c565b90506000611a2c8383611b27565b30600090815260026020526040902054909150611a4990826119b5565b30600090815260026020526040902055505050565b600654611a6b9083611973565b600655600754611a7b90826119b5565b6007555050565b6000808080611a9c6064611a968989611b27565b9061173f565b90506000611aaf6064611a968a89611b27565b90506000611ac782611ac18b86611973565b90611973565b9992985090965090945050505050565b6000808080611ae68886611b27565b90506000611af48887611b27565b90506000611b028888611b27565b90506000611b1482611ac18686611973565b939b939a50919850919650505050505050565b600082611b36575060006106d6565b6000611b428385611fde565b905082611b4f8583611fbc565b146114b55760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610650565b634e487b7160e01b600052604160045260246000fd5b80356001600160a01b0381168114611bd357600080fd5b919050565b60006020808385031215611beb57600080fd5b823567ffffffffffffffff80821115611c0357600080fd5b818501915085601f830112611c1757600080fd5b813581811115611c2957611c29611ba6565b8060051b604051601f19603f83011681018181108582111715611c4e57611c4e611ba6565b604052918252848201925083810185019188831115611c6c57600080fd5b938501935b82851015611c9157611c8285611bbc565b84529385019392850192611c71565b98975050505050505050565b600060208083528351808285015260005b81811015611cca57858101830151858201604001528201611cae565b81811115611cdc576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215611d0557600080fd5b611d0e83611bbc565b946020939093013593505050565b600080600060608486031215611d3157600080fd5b611d3a84611bbc565b9250611d4860208501611bbc565b9150604084013590509250925092565b600060208284031215611d6a57600080fd5b6114b582611bbc565b80358015158114611bd357600080fd5b600060208284031215611d9557600080fd5b6114b582611d73565b600060208284031215611db057600080fd5b5035919050565b60008060008060808587031215611dcd57600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060408486031215611dfe57600080fd5b833567ffffffffffffffff80821115611e1657600080fd5b818601915086601f830112611e2a57600080fd5b813581811115611e3957600080fd5b8760208260051b8501011115611e4e57600080fd5b602092830195509350611e649186019050611d73565b90509250925092565b60008060408385031215611e8057600080fd5b611e8983611bbc565b9150611e9760208401611bbc565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415611f1557611f15611eeb565b5060010190565b60008219821115611f2f57611f2f611eeb565b500190565b600082821015611f4657611f46611eeb565b500390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611f9b5784516001600160a01b031683529383019391830191600101611f76565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611fd957634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611ff857611ff8611eeb565b50029056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122078f7b2f8ce1b17a8deda60cfc277f6d2e5363cf623232e09c761060d9cff92cf64736f6c63430008090033

Deployed Bytecode Sourcemap

3708:13906:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12753:169;;;;;;;;;;-1:-1:-1;12753:169:0;;;;;:::i;:::-;;:::i;:::-;;6484:83;;;;;;;;;;-1:-1:-1;6554:5:0;;;;;;;;;;;;-1:-1:-1;;;6554:5:0;;;;6484:83;;;;;;;:::i;:::-;;;;;;;;7416:193;;;;;;;;;;-1:-1:-1;7416:193:0;;;;;:::i;:::-;;:::i;:::-;;;2476:14:1;;2469:22;2451:41;;2439:2;2424:18;7416:193:0;2311:187:1;5137:51:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2693:32:1;;;2675:51;;2663:2;2648:18;5137:51:0;2503:229:1;6764:95:0;;;;;;;;;;-1:-1:-1;4260:25:0;6764:95;;;2883:25:1;;;2871:2;2856:18;6764:95:0;2737:177:1;7618:446:0;;;;;;;;;;-1:-1:-1;7618:446:0;;;;;:::i;:::-;;:::i;5627:58::-;;;;;;;;;;;;;;;;6672:83;;;;;;;;;;-1:-1:-1;6672:83:0;;3933:1;3394:36:1;;3382:2;3367:18;6672:83:0;3252:184:1;5195:38:0;;;;;;;;;;;;;;;12931:92;;;;;;;;;;-1:-1:-1;12931:92:0;;;;;:::i;:::-;;:::i;16995:101::-;;;;;;;;;;-1:-1:-1;16995:101:0;;;;;:::i;:::-;;:::i;6868:138::-;;;;;;;;;;-1:-1:-1;6868:138:0;;;;;:::i;:::-;;:::i;1616:148::-;;;;;;;;;;;;;:::i;17136:108::-;;;;;;;;;;-1:-1:-1;17136:108:0;;;;;:::i;:::-;;:::i;5497:52::-;;;;;;;;;;;;;;;;1400:79;;;;;;;;;;-1:-1:-1;1438:7:0;1465:6;-1:-1:-1;;;;;1465:6:0;1400:79;;12351:138;;;;;;;;;;-1:-1:-1;12351:138:0;;;;;:::i;:::-;;:::i;5561:54::-;;;;;;;;;;;;;;;;6576:87;;;;;;;;;;-1:-1:-1;6648:7:0;;;;;;;;;;;;-1:-1:-1;;;6648:7:0;;;;6576:87;;16803:139;;;;;;;;;;-1:-1:-1;16803:139:0;;;;;:::i;:::-;;:::i;16456:294::-;;;;;;;;;;-1:-1:-1;16456:294:0;;;;;:::i;:::-;;:::i;7015:199::-;;;;;;;;;;-1:-1:-1;7015:199:0;;;;;:::i;:::-;;:::i;5240:81::-;;;;;;;;;;;;5279:42;5240:81;;4843:36;;;;;;;;;;-1:-1:-1;4843:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12498:247;;;;;;;;;;;;;:::i;17377:234::-;;;;;;;;;;-1:-1:-1;17377:234:0;;;;;:::i;:::-;;:::i;4381:26::-;;;;;;;;;;;;;;;;7223:184;;;;;;;;;;-1:-1:-1;7223:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7372:18:0;;;7340:7;7372:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7223:184;17253:115;;;;;;;;;;-1:-1:-1;17253:115:0;;;;;:::i;:::-;;:::i;1773:244::-;;;;;;;;;;-1:-1:-1;1773:244:0;;;;;:::i;:::-;;:::i;12753:169::-;1528:6;;-1:-1:-1;;;;;1528:6:0;229:10;1528:22;1520:67;;;;-1:-1:-1;;;1520:67:0;;;;;;;:::i;:::-;;;;;;;;;12829:9:::1;12824:91;12848:5;:12;12844:1;:16;12824:91;;;12899:4;12882;:14;12887:5;12893:1;12887:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;12882:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;12882:14:0;:21;;-1:-1:-1;;12882:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12862:3;::::1;::::0;::::1;:::i;:::-;;;;12824:91;;;;12753:169:::0;:::o;7416:193::-;7518:4;7540:39;229:10;7563:7;7572:6;7540:8;:39::i;:::-;-1:-1:-1;7597:4:0;7416:193;;;;;:::o;7618:446::-;7750:4;7767:36;7777:6;7785:9;7796:6;7767:9;:36::i;:::-;7814:220;7837:6;229:10;7885:138;7941:6;7885:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7885:19:0;;;;;;:11;:19;;;;;;;;229:10;7885:33;;;;;;;;;;:37;:138::i;:::-;7814:8;:220::i;:::-;-1:-1:-1;8052:4:0;7618:446;;;;;:::o;12931:92::-;1528:6;;-1:-1:-1;;;;;1528:6:0;229:10;1528:22;1520:67;;;;-1:-1:-1;;;1520:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12995:12:0::1;13010:5;12995:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;12995:20:0::1;::::0;;12931:92::o;16995:101::-;1528:6;;-1:-1:-1;;;;;1528:6:0;229:10;1528:22;1520:67;;;;-1:-1:-1;;;1520:67:0;;;;;;;:::i;:::-;17062:11:::1;:26:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;17062:26:0;;::::1;::::0;;;::::1;::::0;;16995:101::o;6868:138::-;-1:-1:-1;;;;;6981:16:0;;6934:7;6981:16;;;:7;:16;;;;;;6961:37;;:19;:37::i;1616:148::-;1528:6;;-1:-1:-1;;;;;1528:6:0;229:10;1528:22;1520:67;;;;-1:-1:-1;;;1520:67:0;;;;;;;:::i;:::-;1723:1:::1;1707:6:::0;;1686:40:::1;::::0;-1:-1:-1;;;;;1707:6:0;;::::1;::::0;1686:40:::1;::::0;1723:1;;1686:40:::1;1754:1;1737:19:::0;;-1:-1:-1;;;;;;1737:19:0::1;::::0;;1616:148::o;17136:108::-;1528:6;;-1:-1:-1;;;;;1528:6:0;229:10;1528:22;1520:67;;;;-1:-1:-1;;;1520:67:0;;;;;;;:::i;:::-;17210:12:::1;:26:::0;17136:108::o;12351:138::-;1528:6;;-1:-1:-1;;;;;1528:6:0;229:10;1528:22;1520:67;;;;-1:-1:-1;;;1520:67:0;;;;;;;:::i;:::-;12418:11:::1;:26:::0;;-1:-1:-1;;12418:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12469:12:::1;12455:11;:26:::0;12351:138::o;16803:139::-;1528:6;;-1:-1:-1;;;;;1528:6:0;229:10;1528:22;1520:67;;;;-1:-1:-1;;;1520:67:0;;;;;;;:::i;:::-;16894:19:::1;:40:::0;16803:139::o;16456:294::-;1528:6;;-1:-1:-1;;;;;1528:6:0;229:10;1528:22;1520:67;;;;-1:-1:-1;;;1520:67:0;;;;;;;:::i;:::-;16590:14:::1;:30:::0;;;;16631:15:::1;:32:::0;;;;16677:12:::1;:26:::0;16714:13:::1;:28:::0;16456:294::o;7015:199::-;7120:4;7142:42;229:10;7166:9;7177:6;7142:9;:42::i;12498:247::-;229:10;4987:42;12548:35;;:72;;-1:-1:-1;229:10:0;5083:42;12587:33;12548:72;12540:81;;;;;;12632:28;12663:24;12681:4;12663:9;:24::i;:::-;12632:55;;12698:39;12716:20;12698:17;:39::i;:::-;12529:216;12498:247::o;17377:234::-;1528:6;;-1:-1:-1;;;;;1528:6:0;229:10;1528:22;1520:67;;;;-1:-1:-1;;;1520:67:0;;;;;;;:::i;:::-;17494:9:::1;17490:114;17509:19:::0;;::::1;17490:114;;;17584:8;17550:18;:31;17569:8;;17578:1;17569:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17550:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;17550:31:0;:42;;-1:-1:-1;;17550:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17530:3;::::1;::::0;::::1;:::i;:::-;;;;17490:114;;;;17377:234:::0;;;:::o;17253:115::-;1528:6;;-1:-1:-1;;;;;1528:6:0;229:10;1528:22;1520:67;;;;-1:-1:-1;;;1520:67:0;;;;;;;:::i;:::-;17330:14:::1;:30:::0;17253:115::o;1773:244::-;1528:6;;-1:-1:-1;;;;;1528:6:0;229:10;1528:22;1520:67;;;;-1:-1:-1;;;1520:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1862:22:0;::::1;1854:73;;;::::0;-1:-1:-1;;;1854:73:0;;6691:2:1;1854:73:0::1;::::0;::::1;6673:21:1::0;6730:2;6710:18;;;6703:30;6769:34;6749:18;;;6742:62;-1:-1:-1;;;6820:18:1;;;6813:36;6866:19;;1854:73:0::1;6489:402:1::0;1854:73:0::1;1964:6;::::0;;1943:38:::1;::::0;-1:-1:-1;;;;;1943:38:0;;::::1;::::0;1964:6;::::1;::::0;1943:38:::1;::::0;::::1;1992:6;:17:::0;;-1:-1:-1;;;;;;1992:17:0::1;-1:-1:-1::0;;;;;1992:17:0;;;::::1;::::0;;;::::1;::::0;;1773:244::o;8761:369::-;-1:-1:-1;;;;;8888:19:0;;8880:68;;;;-1:-1:-1;;;8880:68:0;;7098:2:1;8880:68:0;;;7080:21:1;7137:2;7117:18;;;7110:30;7176:34;7156:18;;;7149:62;-1:-1:-1;;;7227:18:1;;;7220:34;7271:19;;8880:68:0;6896:400:1;8880:68:0;-1:-1:-1;;;;;8967:21:0;;8959:68;;;;-1:-1:-1;;;8959:68:0;;7503:2:1;8959:68:0;;;7485:21:1;7542:2;7522:18;;;7515:30;7581:34;7561:18;;;7554:62;-1:-1:-1;;;7632:18:1;;;7625:32;7674:19;;8959:68:0;7301:398:1;8959:68:0;-1:-1:-1;;;;;9038:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9090:32;;2883:25:1;;;9090:32:0;;2856:18:1;9090:32:0;;;;;;;8761:369;;;:::o;9139:2469::-;-1:-1:-1;;;;;9261:18:0;;9253:68;;;;-1:-1:-1;;;9253:68:0;;7906:2:1;9253:68:0;;;7888:21:1;7945:2;7925:18;;;7918:30;7984:34;7964:18;;;7957:62;-1:-1:-1;;;8035:18:1;;;8028:35;8080:19;;9253:68:0;7704:401:1;9253:68:0;-1:-1:-1;;;;;9340:16:0;;9332:64;;;;-1:-1:-1;;;9332:64:0;;8312:2:1;9332:64:0;;;8294:21:1;8351:2;8331:18;;;8324:30;8390:34;8370:18;;;8363:62;-1:-1:-1;;;8441:18:1;;;8434:33;8484:19;;9332:64:0;8110:399:1;9332:64:0;9424:1;9415:6;:10;9407:64;;;;-1:-1:-1;;;9407:64:0;;8716:2:1;9407:64:0;;;8698:21:1;8755:2;8735:18;;;8728:30;8794:34;8774:18;;;8767:62;-1:-1:-1;;;8845:18:1;;;8838:39;8894:19;;9407:64:0;8514:405:1;9407:64:0;9487:6;;;;;;;9484:83;;;9516:39;9531:4;9537:2;9541:6;9549:5;9516:14;:39::i;:::-;9139:2469;;;:::o;9484:83::-;-1:-1:-1;;;;;9584:27:0;;4987:42;9584:27;;;;:56;;-1:-1:-1;;;;;;9615:25:0;;4987:42;9615:25;;9584:56;9580:1300;;;9701:11;;;;9693:87;;;;-1:-1:-1;;;9693:87:0;;9126:2:1;9693:87:0;;;9108:21:1;9165:2;9145:18;;;9138:30;9204:34;9184:18;;;9177:62;9275:33;9255:18;;;9248:61;9326:19;;9693:87:0;8924:427:1;9693:87:0;9827:12;;9817:6;:22;;9809:63;;;;-1:-1:-1;;;9809:63:0;;9558:2:1;9809:63:0;;;9540:21:1;9597:2;9577:18;;;9570:30;9636;9616:18;;;9609:58;9684:18;;9809:63:0;9356:352:1;9809:63:0;-1:-1:-1;;;;;9896:10:0;;;;;;:4;:10;;;;;;;;9895:11;:24;;;;-1:-1:-1;;;;;;9911:8:0;;;;;;:4;:8;;;;;;;;9910:9;9895:24;9887:72;;;;-1:-1:-1;;;9887:72:0;;9915:2:1;9887:72:0;;;9897:21:1;9954:2;9934:18;;;9927:30;9993:34;9973:18;;;9966:62;-1:-1:-1;;;10044:18:1;;;10037:33;10087:19;;9887:72:0;9713:399:1;9887:72:0;9996:11;;:15;;10010:1;9996:15;:::i;:::-;9980:12;:31;;:56;;;;;10023:13;-1:-1:-1;;;;;10015:21:0;:4;-1:-1:-1;;;;;10015:21:0;;9980:56;:104;;;;;10068:15;-1:-1:-1;;;;;10054:30:0;:2;-1:-1:-1;;;;;10054:30:0;;;9980:104;:127;;;;-1:-1:-1;;;;;;10088:19:0;;10102:4;10088:19;;9980:127;:150;;;;;10117:13;-1:-1:-1;;;;;10111:19:0;:2;-1:-1:-1;;;;;10111:19:0;;;9980:150;9977:207;;;-1:-1:-1;;;;;10153:8:0;;;;;;:4;:8;;;;;:15;;-1:-1:-1;;10153:15:0;10164:4;10153:15;;;9977:207;10211:13;-1:-1:-1;;;;;10205:19:0;:2;-1:-1:-1;;;;;10205:19:0;;10202:146;;10278:14;;10269:6;10253:13;10263:2;10253:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10245:87;;;;-1:-1:-1;;;10245:87:0;;10452:2:1;10245:87:0;;;10434:21:1;10491:2;10471:18;;;10464:30;10530:34;10510:18;;;10503:62;-1:-1:-1;;;10581:18:1;;;10574:33;10624:19;;10245:87:0;10250:399:1;10245:87:0;10365:28;10396:24;10414:4;10396:9;:24::i;:::-;10474:19;;10365:55;;-1:-1:-1;10450:43:0;;;;;;;10528:18;;-1:-1:-1;10540:6:0;;;;;;;10539:7;10528:18;:43;;;;;10558:13;-1:-1:-1;;;;;10550:21:0;:4;-1:-1:-1;;;;;10550:21:0;;;10528:43;:58;;;;-1:-1:-1;10575:11:0;;;;;;;10528:58;:101;;;;-1:-1:-1;;;;;;10605:24:0;;;;;;:18;:24;;;;;;;;10604:25;10528:101;:128;;;;-1:-1:-1;;;;;;10634:22:0;;;;;;:18;:22;;;;;;;;10633:23;10528:128;10524:345;;;10704:12;;10680:20;:36;10677:119;;10764:12;;10741:35;;10677:119;10814:39;10832:20;10814:17;:39::i;:::-;9642:1238;;9580:1300;-1:-1:-1;;;;;10958:24:0;;10893:12;10958:24;;;:18;:24;;;;;;10908:4;;10958:24;;;:50;;-1:-1:-1;;;;;;10986:22:0;;;;;;:18;:22;;;;;;;;10958:50;10957:102;;;;11022:13;-1:-1:-1;;;;;11014:21:0;:4;-1:-1:-1;;;;;11014:21:0;;;:44;;;;;11045:13;-1:-1:-1;;;;;11039:19:0;:2;-1:-1:-1;;;;;11039:19:0;;;11014:44;10953:594;;;-1:-1:-1;11086:5:0;10953:594;;;11170:13;-1:-1:-1;;;;;11162:21:0;:4;-1:-1:-1;;;;;11162:21:0;;:55;;;;;11201:15;-1:-1:-1;;;;;11187:30:0;:2;-1:-1:-1;;;;;11187:30:0;;;11162:55;11159:162;;;11250:14;;11238:9;:26;11293:12;;11283:7;:22;11159:162;11381:13;-1:-1:-1;;;;;11375:19:0;:2;-1:-1:-1;;;;;11375:19:0;;:55;;;;;11414:15;-1:-1:-1;;;;;11398:32:0;:4;-1:-1:-1;;;;;11398:32:0;;;11375:55;11371:165;;;11463:15;;11451:9;:27;11507:13;;11497:7;:23;11371:165;11559:41;11574:4;11580:2;11584:6;11592:7;11559:14;:41::i;2385:224::-;2505:7;2541:12;2533:6;;;;2525:29;;;;-1:-1:-1;;;2525:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2565:9:0;2577:5;2581:1;2577;:5;:::i;:::-;2565:17;2385:224;-1:-1:-1;;;;;2385:224:0:o;8073:323::-;8168:7;8226;;8215;:18;;8193:110;;;;-1:-1:-1;;;8193:110:0;;10986:2:1;8193:110:0;;;10968:21:1;11025:2;11005:18;;;10998:30;11064:34;11044:18;;;11037:62;-1:-1:-1;;;11115:18:1;;;11108:40;11165:19;;8193:110:0;10784:406:1;8193:110:0;8314:19;8336:10;:8;:10::i;:::-;8314:32;-1:-1:-1;8364:24:0;:7;8314:32;8364:11;:24::i;:::-;8357:31;8073:323;-1:-1:-1;;;8073:323:0:o;11617:721::-;5780:6;:13;;-1:-1:-1;;5780:13:0;;;;;11720:16:::1;::::0;;11734:1:::1;11720:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11720:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11720:16:0::1;11696:40;;11765:4;11747;11752:1;11747:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;11747:23:0::1;;;-1:-1:-1::0;;;;;11747:23:0::1;;;::::0;::::1;5279:42;11781:4;11786:1;11781:7;;;;;;;;:::i;:::-;;;;;;:22;-1:-1:-1::0;;;;;11781:22:0::1;;;-1:-1:-1::0;;;;;11781:22:0::1;;;::::0;::::1;11816:62;11833:4;11848:15;11866:11;11816:8;:62::i;:::-;-1:-1:-1::0;;;;;11889:15:0::1;:69;;11974:18;:11:::0;11990:1:::1;11974:15;:18::i;:::-;12008:1;12024:4;5083:42;12075:15;11889:212;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;;;;;;12114:15:0::1;:69;::::0;-1:-1:-1;12114:69:0::1;::::0;-1:-1:-1;12199:18:0::1;:11:::0;12215:1:::1;12199:15;:18::i;:::-;12233:1;12249:4;4987:42;12302:15;12114:214;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5816:6:0;:14;;-1:-1:-1;;5816:14:0;;;-1:-1:-1;;;;11617:721:0:o;13032:282::-;13188:7;13183:28;;13197:14;:12;:14::i;:::-;13222:44;13240:6;13248:9;13259:6;13222:17;:44::i;:::-;13282:7;13277:29;;13291:15;8691:17;;8679:9;:29;8729:15;;8719:7;:25;8635:117;16011:167;16053:7;16074:15;16091;16110:19;:17;:19::i;:::-;16073:56;;-1:-1:-1;16073:56:0;-1:-1:-1;16150:20:0;16073:56;;16150:11;:20::i;:::-;16143:27;;;;16011:167;:::o;2873:132::-;2931:7;2958:39;2962:1;2965;2958:39;;;;;;;;;;;;;;;;;:3;:39::i;8405:221::-;8452:9;;:14;:30;;;;-1:-1:-1;8470:7:0;;:12;8452:30;8448:43;;;8405:221::o;8448:43::-;8524:9;;;8504:17;:29;8562:7;;;8544:15;:25;-1:-1:-1;8583:13:0;;;;8607:11;8405:221::o;13323:610::-;13470:15;13500:23;13538:12;13565:23;13603:12;13630:13;13657:19;13668:7;13657:10;:19::i;:::-;-1:-1:-1;;;;;13705:15:0;;;;;;:7;:15;;;;;;13455:221;;-1:-1:-1;13455:221:0;;-1:-1:-1;13455:221:0;;-1:-1:-1;13455:221:0;-1:-1:-1;13455:221:0;-1:-1:-1;13455:221:0;-1:-1:-1;13705:28:0;;13455:221;13705:19;:28::i;:::-;-1:-1:-1;;;;;13687:15:0;;;;;;;:7;:15;;;;;;:46;;;;13765:18;;;;;;;:39;;13788:15;13765:22;:39::i;:::-;-1:-1:-1;;;;;13744:18:0;;;;;;:7;:18;;;;;:60;13815:16;13825:5;13815:9;:16::i;:::-;13842:23;13854:4;13860;13842:11;:23::i;:::-;13898:9;-1:-1:-1;;;;;13881:44:0;13890:6;-1:-1:-1;;;;;13881:44:0;;13909:15;13881:44;;;;2883:25:1;;2871:2;2856:18;;2737:177;13881:44:0;;;;;;;;13444:489;;;;;;13323:610;;;:::o;16187:260::-;16285:7;;16238;;;;4260:25;16353:20;16285:7;4260:25;16353:11;:20::i;:::-;16343:7;:30;16339:61;;;-1:-1:-1;;16383:7:0;;;4260:25;;-1:-1:-1;16187:260:0;-1:-1:-1;16187:260:0:o;16339:61::-;16422:7;;16431;;-1:-1:-1;16187:260:0;-1:-1:-1;16187:260:0:o;3014:223::-;3134:7;3169:12;3162:5;3154:28;;;;-1:-1:-1;;;3154:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3193:9:0;3205:5;3209:1;3205;:5;:::i;14356:618::-;14456:7;14478;14500;14522;14544;14566;14602:23;14627:12;14641:13;14671:40;14683:7;14692:9;;14703:7;;14671:11;:40::i;:::-;14601:110;;;;;;14722:19;14744:10;:8;:10::i;:::-;14722:32;;14766:15;14783:23;14808:12;14837:46;14849:7;14858:4;14864:5;14871:11;14837;:46::i;:::-;14765:118;;-1:-1:-1;14765:118:0;-1:-1:-1;14765:118:0;-1:-1:-1;14937:15:0;;-1:-1:-1;14954:4:0;;-1:-1:-1;14960:5:0;;-1:-1:-1;;;;;14356:618:0;;;;;;;:::o;2240:136::-;2298:7;2325:43;2329:1;2332;2325:43;;;;;;;;;;;;;;;;;:3;:43::i;2052:179::-;2110:7;;2142:5;2146:1;2142;:5;:::i;:::-;2130:17;;2171:1;2166;:6;;2158:46;;;;-1:-1:-1;;;2158:46:0;;12604:2:1;2158:46:0;;;12586:21:1;12643:2;12623:18;;;12616:30;12682:29;12662:18;;;12655:57;12729:18;;2158:46:0;12402:351:1;13942:211:0;13995:19;14017:10;:8;:10::i;:::-;13995:32;-1:-1:-1;14038:13:0;14054:22;:5;13995:32;14054:9;:22::i;:::-;14128:4;14112:22;;;;:7;:22;;;;;;14038:38;;-1:-1:-1;14112:33:0;;14038:38;14112:26;:33::i;:::-;14103:4;14087:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;13942:211:0:o;14162:147::-;14240:7;;:17;;14252:4;14240:11;:17::i;:::-;14230:7;:27;14281:10;;:20;;14296:4;14281:14;:20::i;:::-;14268:10;:33;-1:-1:-1;;14162:147:0:o;14983:472::-;15152:7;;;;15246:30;15272:3;15246:21;:7;15258:8;15246:11;:21::i;:::-;:25;;:30::i;:::-;15231:45;-1:-1:-1;15287:13:0;15303:28;15327:3;15303:19;:7;15315:6;15303:11;:19::i;:28::-;15287:44;-1:-1:-1;15342:23:0;15368:28;15287:44;15368:17;:7;15380:4;15368:11;:17::i;:::-;:21;;:28::i;:::-;15342:54;15435:4;;-1:-1:-1;15441:5:0;;-1:-1:-1;14983:472:0;;-1:-1:-1;;;;;14983:472:0:o;15464:538::-;15658:7;;;;15755:24;:7;15767:11;15755;:24::i;:::-;15737:42;-1:-1:-1;15790:12:0;15805:21;:4;15814:11;15805:8;:21::i;:::-;15790:36;-1:-1:-1;15837:13:0;15853:22;:5;15863:11;15853:9;:22::i;:::-;15837:38;-1:-1:-1;15886:23:0;15912:28;15837:38;15912:17;:7;15924:4;15912:11;:17::i;:28::-;15962:7;;;;-1:-1:-1;15988:4:0;;-1:-1:-1;15464:538:0;;-1:-1:-1;;;;;;;15464:538:0:o;2618:246::-;2676:7;2700:6;2696:47;;-1:-1:-1;2730:1:0;2723:8;;2696:47;2753:9;2765:5;2769:1;2765;:5;:::i;:::-;2753:17;-1:-1:-1;2798:1:0;2789:5;2793:1;2753:17;2789:5;:::i;:::-;:10;2781:56;;;;-1:-1:-1;;;2781:56:0;;13133:2:1;2781:56:0;;;13115:21:1;13172:2;13152:18;;;13145:30;13211:34;13191:18;;;13184:62;-1:-1:-1;;;13262:18:1;;;13255:31;13303:19;;2781:56:0;12931:397:1;14:127;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:173;214:20;;-1:-1:-1;;;;;263:31:1;;253:42;;243:70;;309:1;306;299:12;243:70;146:173;;;:::o;324:1121::-;408:6;439:2;482;470:9;461:7;457:23;453:32;450:52;;;498:1;495;488:12;450:52;538:9;525:23;567:18;608:2;600:6;597:14;594:34;;;624:1;621;614:12;594:34;662:6;651:9;647:22;637:32;;707:7;700:4;696:2;692:13;688:27;678:55;;729:1;726;719:12;678:55;765:2;752:16;787:2;783;780:10;777:36;;;793:18;;:::i;:::-;839:2;836:1;832:10;871:2;865:9;934:2;930:7;925:2;921;917:11;913:25;905:6;901:38;989:6;977:10;974:22;969:2;957:10;954:18;951:46;948:72;;;1000:18;;:::i;:::-;1036:2;1029:22;1086:18;;;1120:15;;;;-1:-1:-1;1162:11:1;;;1158:20;;;1190:19;;;1187:39;;;1222:1;1219;1212:12;1187:39;1246:11;;;;1266:148;1282:6;1277:3;1274:15;1266:148;;;1348:23;1367:3;1348:23;:::i;:::-;1336:36;;1299:12;;;;1392;;;;1266:148;;;1433:6;324:1121;-1:-1:-1;;;;;;;;324:1121:1:o;1450:597::-;1562:4;1591:2;1620;1609:9;1602:21;1652:6;1646:13;1695:6;1690:2;1679:9;1675:18;1668:34;1720:1;1730:140;1744:6;1741:1;1738:13;1730:140;;;1839:14;;;1835:23;;1829:30;1805:17;;;1824:2;1801:26;1794:66;1759:10;;1730:140;;;1888:6;1885:1;1882:13;1879:91;;;1958:1;1953:2;1944:6;1933:9;1929:22;1925:31;1918:42;1879:91;-1:-1:-1;2031:2:1;2010:15;-1:-1:-1;;2006:29:1;1991:45;;;;2038:2;1987:54;;1450:597;-1:-1:-1;;;1450:597:1:o;2052:254::-;2120:6;2128;2181:2;2169:9;2160:7;2156:23;2152:32;2149:52;;;2197:1;2194;2187:12;2149:52;2220:29;2239:9;2220:29;:::i;:::-;2210:39;2296:2;2281:18;;;;2268:32;;-1:-1:-1;;;2052:254:1:o;2919:328::-;2996:6;3004;3012;3065:2;3053:9;3044:7;3040:23;3036:32;3033:52;;;3081:1;3078;3071:12;3033:52;3104:29;3123:9;3104:29;:::i;:::-;3094:39;;3152:38;3186:2;3175:9;3171:18;3152:38;:::i;:::-;3142:48;;3237:2;3226:9;3222:18;3209:32;3199:42;;2919:328;;;;;:::o;3649:186::-;3708:6;3761:2;3749:9;3740:7;3736:23;3732:32;3729:52;;;3777:1;3774;3767:12;3729:52;3800:29;3819:9;3800:29;:::i;3840:160::-;3905:20;;3961:13;;3954:21;3944:32;;3934:60;;3990:1;3987;3980:12;4005:180;4061:6;4114:2;4102:9;4093:7;4089:23;4085:32;4082:52;;;4130:1;4127;4120:12;4082:52;4153:26;4169:9;4153:26;:::i;4190:180::-;4249:6;4302:2;4290:9;4281:7;4277:23;4273:32;4270:52;;;4318:1;4315;4308:12;4270:52;-1:-1:-1;4341:23:1;;4190:180;-1:-1:-1;4190:180:1:o;4375:385::-;4461:6;4469;4477;4485;4538:3;4526:9;4517:7;4513:23;4509:33;4506:53;;;4555:1;4552;4545:12;4506:53;-1:-1:-1;;4578:23:1;;;4648:2;4633:18;;4620:32;;-1:-1:-1;4699:2:1;4684:18;;4671:32;;4750:2;4735:18;4722:32;;-1:-1:-1;4375:385:1;-1:-1:-1;4375:385:1:o;4765:689::-;4857:6;4865;4873;4926:2;4914:9;4905:7;4901:23;4897:32;4894:52;;;4942:1;4939;4932:12;4894:52;4982:9;4969:23;5011:18;5052:2;5044:6;5041:14;5038:34;;;5068:1;5065;5058:12;5038:34;5106:6;5095:9;5091:22;5081:32;;5151:7;5144:4;5140:2;5136:13;5132:27;5122:55;;5173:1;5170;5163:12;5122:55;5213:2;5200:16;5239:2;5231:6;5228:14;5225:34;;;5255:1;5252;5245:12;5225:34;5310:7;5303:4;5293:6;5290:1;5286:14;5282:2;5278:23;5274:34;5271:47;5268:67;;;5331:1;5328;5321:12;5268:67;5362:4;5354:13;;;;-1:-1:-1;5386:6:1;-1:-1:-1;5411:37:1;;5427:20;;;-1:-1:-1;5411:37:1;:::i;:::-;5401:47;;4765:689;;;;;:::o;5459:260::-;5527:6;5535;5588:2;5576:9;5567:7;5563:23;5559:32;5556:52;;;5604:1;5601;5594:12;5556:52;5627:29;5646:9;5627:29;:::i;:::-;5617:39;;5675:38;5709:2;5698:9;5694:18;5675:38;:::i;:::-;5665:48;;5459:260;;;;;:::o;5724:356::-;5926:2;5908:21;;;5945:18;;;5938:30;6004:34;5999:2;5984:18;;5977:62;6071:2;6056:18;;5724:356::o;6085:127::-;6146:10;6141:3;6137:20;6134:1;6127:31;6177:4;6174:1;6167:15;6201:4;6198:1;6191:15;6217:127;6278:10;6273:3;6269:20;6266:1;6259:31;6309:4;6306:1;6299:15;6333:4;6330:1;6323:15;6349:135;6388:3;-1:-1:-1;;6409:17:1;;6406:43;;;6429:18;;:::i;:::-;-1:-1:-1;6476:1:1;6465:13;;6349:135::o;10117:128::-;10157:3;10188:1;10184:6;10181:1;10178:13;10175:39;;;10194:18;;:::i;:::-;-1:-1:-1;10230:9:1;;10117:128::o;10654:125::-;10694:4;10722:1;10719;10716:8;10713:34;;;10727:18;;:::i;:::-;-1:-1:-1;10764:9:1;;10654:125::o;11195:980::-;11457:4;11505:3;11494:9;11490:19;11536:6;11525:9;11518:25;11562:2;11600:6;11595:2;11584:9;11580:18;11573:34;11643:3;11638:2;11627:9;11623:18;11616:31;11667:6;11702;11696:13;11733:6;11725;11718:22;11771:3;11760:9;11756:19;11749:26;;11810:2;11802:6;11798:15;11784:29;;11831:1;11841:195;11855:6;11852:1;11849:13;11841:195;;;11920:13;;-1:-1:-1;;;;;11916:39:1;11904:52;;12011:15;;;;11976:12;;;;11952:1;11870:9;11841:195;;;-1:-1:-1;;;;;;;12092:32:1;;;;12087:2;12072:18;;12065:60;-1:-1:-1;;;12156:3:1;12141:19;12134:35;12053:3;11195:980;-1:-1:-1;;;11195:980:1:o;12180:217::-;12220:1;12246;12236:132;;12290:10;12285:3;12281:20;12278:1;12271:31;12325:4;12322:1;12315:15;12353:4;12350:1;12343:15;12236:132;-1:-1:-1;12382:9:1;;12180:217::o;12758:168::-;12798:7;12864:1;12860;12856:6;12852:14;12849:1;12846:21;12841:1;12834:9;12827:17;12823:45;12820:71;;;12871:18;;:::i;:::-;-1:-1:-1;12911:9:1;;12758:168::o

Swarm Source

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