ETH Price: $3,518.42 (+0.51%)
Gas: 3 Gwei

Token

Kua Fu ($KFU)
 

Overview

Max Total Supply

1,000,000,000 $KFU

Holders

43

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
19,125,000 $KFU

Value
$0.00
0x463044920293c9b21d502578a0bdea049b777322
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:
KuaFu

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: Unlicensed
/* Kua Fu is a famous giant from Chinese mythology that chased the Sun only to die of dehydration before reaching his goal. His story is often told and teaches us to stay humble and not to overestimate our capabilities (夸父追日 kuā fù zhuī rì)
telegram  : https://t.me/KuaFuERC
Medium : https://kuafuerc.medium.com/
Website : https://kuafuerc.com
Twitter : https://twitter.com/KuaFuERC */
pragma solidity ^0.8.9;

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 swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract KuaFu is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "Kua Fu";
    string private constant _symbol = "$KFU";
    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 = 1000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 15;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 40;

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

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    address payable private _developmentAddress = payable(0xEe3496600F84a671483a76143bde47F5B4607F87);
    address payable private _marketingAddress = payable(0xEe3496600F84a671483a76143bde47F5B4607F87);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen = true;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = _tTotal;
    uint256 public _maxWalletSize = _tTotal*2/100;
    uint256 public _swapTokensAtAmount = _tTotal*4/1000;

    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), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = 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 (from != owner() && to != owner()) {

            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _swapTokensAtAmount*2)
            {
                contractTokenBalance = _swapTokensAtAmount*2;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 100000000000000000) {
                    sendETHToFee(contractETHBalance);
                }
            }
        }

        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 swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }

    function manualsend() external {
        sendETHToFee(address(this).balance);
    }

    function toggleSwap (bool _swapEnabled) external {
        swapEnabled = _swapEnabled;
    }

    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 setBuyAndSellFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
        require (_redisFeeOnBuy+_redisFeeOnSell+_taxFeeOnBuy+_taxFeeOnSell <= 100);
    }

    //Set maximum transaction
    function setMaxTransactionAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = _tTotal*maxTxAmount/100;
        require (_maxTxAmount >= _tTotal/100);
    }

    function setMaxWalletLimit(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = _tTotal*maxWalletSize/100;
         require (_maxWalletSize >= _tTotal/100);
    }

}

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":"_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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualsend","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":"setBuyAndSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTransactionAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletLimit","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":[],"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"}]

6080604052670de0b6b3a76400006000196200001c9190620006ed565b6000196200002b919062000754565b6006556000600855600f6009556000600a556028600b55600a54600c55600b54600d55600c54600e55600d54600f5573ee3496600f84a671483a76143bde47f5b4607f87601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073ee3496600f84a671483a76143bde47f5b4607f87601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601360146101000a81548160ff0219169083151502179055506000601360156101000a81548160ff0219169083151502179055506001601360166101000a81548160ff021916908315150217905550670de0b6b3a764000060145560646002670de0b6b3a76400006200017a91906200078f565b620001869190620007da565b6015556103e86004670de0b6b3a7640000620001a391906200078f565b620001af9190620007da565b601655348015620001bf57600080fd5b506000620001d26200068360201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460026000620002876200068360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200036b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039191906200087c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041f91906200087c565b6040518363ffffffff1660e01b81526004016200043e929190620008bf565b6020604051808303816000875af11580156200045e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200048491906200087c565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004da6200068b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200060d6200068360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620006749190620008fd565b60405180910390a3506200091a565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620006fa82620006b4565b91506200070783620006b4565b9250826200071a5762000719620006be565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200076182620006b4565b91506200076e83620006b4565b925082820390508181111562000789576200078862000725565b5b92915050565b60006200079c82620006b4565b9150620007a983620006b4565b9250828202620007b981620006b4565b91508282048414831517620007d357620007d262000725565b5b5092915050565b6000620007e782620006b4565b9150620007f483620006b4565b925082620008075762000806620006be565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008448262000817565b9050919050565b620008568162000837565b81146200086257600080fd5b50565b60008151905062000876816200084b565b92915050565b60006020828403121562000895576200089462000812565b5b6000620008a58482850162000865565b91505092915050565b620008b98162000837565b82525050565b6000604082019050620008d66000830185620008ae565b620008e56020830184620008ae565b9392505050565b620008f781620006b4565b82525050565b6000602082019050620009146000830184620008ec565b92915050565b613170806200092a6000396000f3fe6080604052600436106101395760003560e01c806370a08231116100ab5780638f9a55c01161006f5780638f9a55c0146103fd57806395d89b4114610428578063a9059cbb14610453578063c98c83ff14610490578063dd62ed3e146104b9578063f2fde38b146104f657610140565b806370a082311461032a578063715018a614610367578063728d41c91461037e5780637d1db4a5146103a75780638da5cb5b146103d257610140565b806323b872dd116100fd57806323b872dd1461022c5780632fd689e314610269578063313ce5671461029457806349bd5a5e146102bf5780636d8aa8f8146102ea5780636fc3eaec1461031357610140565b806306fdde0314610145578063095ea7b3146101705780631694505e146101ad57806318160ddd146101d85780631e293c101461020357610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a61051f565b604051610167919061230b565b60405180910390f35b34801561017c57600080fd5b50610197600480360381019061019291906123c6565b61055c565b6040516101a49190612421565b60405180910390f35b3480156101b957600080fd5b506101c261057a565b6040516101cf919061249b565b60405180910390f35b3480156101e457600080fd5b506101ed6105a0565b6040516101fa91906124c5565b60405180910390f35b34801561020f57600080fd5b5061022a600480360381019061022591906124e0565b6105b0565b005b34801561023857600080fd5b50610253600480360381019061024e919061250d565b610691565b6040516102609190612421565b60405180910390f35b34801561027557600080fd5b5061027e61076a565b60405161028b91906124c5565b60405180910390f35b3480156102a057600080fd5b506102a9610770565b6040516102b6919061257c565b60405180910390f35b3480156102cb57600080fd5b506102d4610779565b6040516102e191906125a6565b60405180910390f35b3480156102f657600080fd5b50610311600480360381019061030c91906125ed565b61079f565b005b34801561031f57600080fd5b506103286107bc565b005b34801561033657600080fd5b50610351600480360381019061034c919061261a565b6107c7565b60405161035e91906124c5565b60405180910390f35b34801561037357600080fd5b5061037c610818565b005b34801561038a57600080fd5b506103a560048036038101906103a091906124e0565b61096b565b005b3480156103b357600080fd5b506103bc610a4c565b6040516103c991906124c5565b60405180910390f35b3480156103de57600080fd5b506103e7610a52565b6040516103f491906125a6565b60405180910390f35b34801561040957600080fd5b50610412610a7b565b60405161041f91906124c5565b60405180910390f35b34801561043457600080fd5b5061043d610a81565b60405161044a919061230b565b60405180910390f35b34801561045f57600080fd5b5061047a600480360381019061047591906123c6565b610abe565b6040516104879190612421565b60405180910390f35b34801561049c57600080fd5b506104b760048036038101906104b29190612647565b610adc565b005b3480156104c557600080fd5b506104e060048036038101906104db91906126ae565b610bca565b6040516104ed91906124c5565b60405180910390f35b34801561050257600080fd5b5061051d6004803603810190610518919061261a565b610c51565b005b60606040518060400160405280600681526020017f4b75612046750000000000000000000000000000000000000000000000000000815250905090565b6000610570610569610e12565b8484610e1a565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b6105b8610e12565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063c9061273a565b60405180910390fd5b606481670de0b6b3a764000061065b9190612789565b61066591906127fa565b6014819055506064670de0b6b3a764000061068091906127fa565b601454101561068e57600080fd5b50565b600061069e848484610fe3565b61075f846106aa610e12565b61075a8560405180606001604052806028815260200161311360289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610710610e12565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117a49092919063ffffffff16565b610e1a565b600190509392505050565b60165481565b60006009905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b80601360166101000a81548160ff02191690831515021790555050565b6107c547611808565b565b6000610811600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611874565b9050919050565b610820610e12565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a49061273a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610973610e12565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f79061273a565b60405180910390fd5b606481670de0b6b3a7640000610a169190612789565b610a2091906127fa565b6015819055506064670de0b6b3a7640000610a3b91906127fa565b6015541015610a4957600080fd5b50565b60145481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60155481565b60606040518060400160405280600481526020017f244b465500000000000000000000000000000000000000000000000000000000815250905090565b6000610ad2610acb610e12565b8484610fe3565b6001905092915050565b610ae4610e12565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b689061273a565b60405180910390fd5b8360088190555082600a819055508160098190555080600b819055506064600b54600954600a54600854610ba5919061282b565b610baf919061282b565b610bb9919061282b565b1115610bc457600080fd5b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610c59610e12565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ce6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdd9061273a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4c906128d1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8090612963565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ef8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eef906129f5565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610fd691906124c5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611052576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104990612a87565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b890612b19565b60405180910390fd5b60008111611104576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fb90612bab565b60405180910390fd5b61110c610a52565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561117a575061114a610a52565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156114a357601360149054906101000a900460ff166112095761119b610a52565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ff90612c3d565b60405180910390fd5b5b60145481111561124e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124590612ca9565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146112fb57601554816112b0846107c7565b6112ba919061282b565b106112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f190612d3b565b60405180910390fd5b5b6000611306306107c7565b90506000601654821015905060026016546113219190612789565b82106113395760026016546113369190612789565b91505b8080156113535750601360159054906101000a900460ff16155b80156113ad5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156113c55750601360169054906101000a900460ff165b801561141b5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156114715750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156114a05761147f826118e2565b600047905067016345785d8a000081111561149e5761149d81611808565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061154a5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806115fd5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156115fc5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561160b5760009050611792565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156116b65750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156116ce57600854600c81905550600954600d819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156117795750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561179157600a54600c81905550600b54600d819055505b5b61179e84848484611b5b565b50505050565b60008383111582906117ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e3919061230b565b60405180910390fd5b50600083856117fb9190612d5b565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611870573d6000803e3d6000fd5b5050565b60006006548211156118bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b290612e01565b60405180910390fd5b60006118c5611b88565b90506118da8184611bb390919063ffffffff16565b915050919050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561191a57611919612e21565b5b6040519080825280602002602001820160405280156119485781602001602082028036833780820191505090505b50905030816000815181106119605761195f612e50565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2b9190612e94565b81600181518110611a3f57611a3e612e50565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611aa630601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610e1a565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611b0a959493929190612fba565b600060405180830381600087803b158015611b2457600080fd5b505af1158015611b38573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b80611b6957611b68611bfd565b5b611b74848484611c3a565b80611b8257611b81611e05565b5b50505050565b6000806000611b95611e19565b91509150611bac8183611bb390919063ffffffff16565b9250505090565b6000611bf583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e78565b905092915050565b6000600c54148015611c1157506000600d54145b611c3857600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080611c4c87611edb565b955095509550955095509550611caa86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f4390919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d3f85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f8d90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d8b81611feb565b611d9584836120a8565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611df291906124c5565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a76400009050611e4d670de0b6b3a7640000600654611bb390919063ffffffff16565b821015611e6b57600654670de0b6b3a7640000935093505050611e74565b81819350935050505b9091565b60008083118290611ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb6919061230b565b60405180910390fd5b5060008385611ece91906127fa565b9050809150509392505050565b6000806000806000806000806000611ef88a600c54600d546120e2565b9250925092506000611f08611b88565b90506000806000611f1b8e878787612178565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000611f8583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506117a4565b905092915050565b6000808284611f9c919061282b565b905083811015611fe1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd890613060565b60405180910390fd5b8091505092915050565b6000611ff5611b88565b9050600061200c828461220190919063ffffffff16565b905061206081600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f8d90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6120bd82600654611f4390919063ffffffff16565b6006819055506120d881600754611f8d90919063ffffffff16565b6007819055505050565b60008060008061210e6064612100888a61220190919063ffffffff16565b611bb390919063ffffffff16565b90506000612138606461212a888b61220190919063ffffffff16565b611bb390919063ffffffff16565b9050600061216182612153858c611f4390919063ffffffff16565b611f4390919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612191858961220190919063ffffffff16565b905060006121a8868961220190919063ffffffff16565b905060006121bf878961220190919063ffffffff16565b905060006121e8826121da8587611f4390919063ffffffff16565b611f4390919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083036122135760009050612275565b600082846122219190612789565b905082848261223091906127fa565b14612270576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612267906130f2565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156122b557808201518184015260208101905061229a565b60008484015250505050565b6000601f19601f8301169050919050565b60006122dd8261227b565b6122e78185612286565b93506122f7818560208601612297565b612300816122c1565b840191505092915050565b6000602082019050818103600083015261232581846122d2565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061235d82612332565b9050919050565b61236d81612352565b811461237857600080fd5b50565b60008135905061238a81612364565b92915050565b6000819050919050565b6123a381612390565b81146123ae57600080fd5b50565b6000813590506123c08161239a565b92915050565b600080604083850312156123dd576123dc61232d565b5b60006123eb8582860161237b565b92505060206123fc858286016123b1565b9150509250929050565b60008115159050919050565b61241b81612406565b82525050565b60006020820190506124366000830184612412565b92915050565b6000819050919050565b600061246161245c61245784612332565b61243c565b612332565b9050919050565b600061247382612446565b9050919050565b600061248582612468565b9050919050565b6124958161247a565b82525050565b60006020820190506124b0600083018461248c565b92915050565b6124bf81612390565b82525050565b60006020820190506124da60008301846124b6565b92915050565b6000602082840312156124f6576124f561232d565b5b6000612504848285016123b1565b91505092915050565b6000806000606084860312156125265761252561232d565b5b60006125348682870161237b565b93505060206125458682870161237b565b9250506040612556868287016123b1565b9150509250925092565b600060ff82169050919050565b61257681612560565b82525050565b6000602082019050612591600083018461256d565b92915050565b6125a081612352565b82525050565b60006020820190506125bb6000830184612597565b92915050565b6125ca81612406565b81146125d557600080fd5b50565b6000813590506125e7816125c1565b92915050565b6000602082840312156126035761260261232d565b5b6000612611848285016125d8565b91505092915050565b6000602082840312156126305761262f61232d565b5b600061263e8482850161237b565b91505092915050565b600080600080608085870312156126615761266061232d565b5b600061266f878288016123b1565b9450506020612680878288016123b1565b9350506040612691878288016123b1565b92505060606126a2878288016123b1565b91505092959194509250565b600080604083850312156126c5576126c461232d565b5b60006126d38582860161237b565b92505060206126e48582860161237b565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612724602083612286565b915061272f826126ee565b602082019050919050565b6000602082019050818103600083015261275381612717565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061279482612390565b915061279f83612390565b92508282026127ad81612390565b915082820484148315176127c4576127c361275a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061280582612390565b915061281083612390565b9250826128205761281f6127cb565b5b828204905092915050565b600061283682612390565b915061284183612390565b92508282019050808211156128595761285861275a565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006128bb602683612286565b91506128c68261285f565b604082019050919050565b600060208201905081810360008301526128ea816128ae565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061294d602483612286565b9150612958826128f1565b604082019050919050565b6000602082019050818103600083015261297c81612940565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006129df602283612286565b91506129ea82612983565b604082019050919050565b60006020820190508181036000830152612a0e816129d2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612a71602583612286565b9150612a7c82612a15565b604082019050919050565b60006020820190508181036000830152612aa081612a64565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612b03602383612286565b9150612b0e82612aa7565b604082019050919050565b60006020820190508181036000830152612b3281612af6565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612b95602983612286565b9150612ba082612b39565b604082019050919050565b60006020820190508181036000830152612bc481612b88565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000612c27603f83612286565b9150612c3282612bcb565b604082019050919050565b60006020820190508181036000830152612c5681612c1a565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000612c93601c83612286565b9150612c9e82612c5d565b602082019050919050565b60006020820190508181036000830152612cc281612c86565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000612d25602383612286565b9150612d3082612cc9565b604082019050919050565b60006020820190508181036000830152612d5481612d18565b9050919050565b6000612d6682612390565b9150612d7183612390565b9250828203905081811115612d8957612d8861275a565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000612deb602a83612286565b9150612df682612d8f565b604082019050919050565b60006020820190508181036000830152612e1a81612dde565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612e8e81612364565b92915050565b600060208284031215612eaa57612ea961232d565b5b6000612eb884828501612e7f565b91505092915050565b6000819050919050565b6000612ee6612ee1612edc84612ec1565b61243c565b612390565b9050919050565b612ef681612ecb565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612f3181612352565b82525050565b6000612f438383612f28565b60208301905092915050565b6000602082019050919050565b6000612f6782612efc565b612f718185612f07565b9350612f7c83612f18565b8060005b83811015612fad578151612f948882612f37565b9750612f9f83612f4f565b925050600181019050612f80565b5085935050505092915050565b600060a082019050612fcf60008301886124b6565b612fdc6020830187612eed565b8181036040830152612fee8186612f5c565b9050612ffd6060830185612597565b61300a60808301846124b6565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061304a601b83612286565b915061305582613014565b602082019050919050565b600060208201905081810360008301526130798161303d565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006130dc602183612286565b91506130e782613080565b604082019050919050565b6000602082019050818103600083015261310b816130cf565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122046b4112ebed609555281b4dc6b59812f1adc846f1b977fbbaaa9cb453cd1ff2a64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101395760003560e01c806370a08231116100ab5780638f9a55c01161006f5780638f9a55c0146103fd57806395d89b4114610428578063a9059cbb14610453578063c98c83ff14610490578063dd62ed3e146104b9578063f2fde38b146104f657610140565b806370a082311461032a578063715018a614610367578063728d41c91461037e5780637d1db4a5146103a75780638da5cb5b146103d257610140565b806323b872dd116100fd57806323b872dd1461022c5780632fd689e314610269578063313ce5671461029457806349bd5a5e146102bf5780636d8aa8f8146102ea5780636fc3eaec1461031357610140565b806306fdde0314610145578063095ea7b3146101705780631694505e146101ad57806318160ddd146101d85780631e293c101461020357610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a61051f565b604051610167919061230b565b60405180910390f35b34801561017c57600080fd5b50610197600480360381019061019291906123c6565b61055c565b6040516101a49190612421565b60405180910390f35b3480156101b957600080fd5b506101c261057a565b6040516101cf919061249b565b60405180910390f35b3480156101e457600080fd5b506101ed6105a0565b6040516101fa91906124c5565b60405180910390f35b34801561020f57600080fd5b5061022a600480360381019061022591906124e0565b6105b0565b005b34801561023857600080fd5b50610253600480360381019061024e919061250d565b610691565b6040516102609190612421565b60405180910390f35b34801561027557600080fd5b5061027e61076a565b60405161028b91906124c5565b60405180910390f35b3480156102a057600080fd5b506102a9610770565b6040516102b6919061257c565b60405180910390f35b3480156102cb57600080fd5b506102d4610779565b6040516102e191906125a6565b60405180910390f35b3480156102f657600080fd5b50610311600480360381019061030c91906125ed565b61079f565b005b34801561031f57600080fd5b506103286107bc565b005b34801561033657600080fd5b50610351600480360381019061034c919061261a565b6107c7565b60405161035e91906124c5565b60405180910390f35b34801561037357600080fd5b5061037c610818565b005b34801561038a57600080fd5b506103a560048036038101906103a091906124e0565b61096b565b005b3480156103b357600080fd5b506103bc610a4c565b6040516103c991906124c5565b60405180910390f35b3480156103de57600080fd5b506103e7610a52565b6040516103f491906125a6565b60405180910390f35b34801561040957600080fd5b50610412610a7b565b60405161041f91906124c5565b60405180910390f35b34801561043457600080fd5b5061043d610a81565b60405161044a919061230b565b60405180910390f35b34801561045f57600080fd5b5061047a600480360381019061047591906123c6565b610abe565b6040516104879190612421565b60405180910390f35b34801561049c57600080fd5b506104b760048036038101906104b29190612647565b610adc565b005b3480156104c557600080fd5b506104e060048036038101906104db91906126ae565b610bca565b6040516104ed91906124c5565b60405180910390f35b34801561050257600080fd5b5061051d6004803603810190610518919061261a565b610c51565b005b60606040518060400160405280600681526020017f4b75612046750000000000000000000000000000000000000000000000000000815250905090565b6000610570610569610e12565b8484610e1a565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b6105b8610e12565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063c9061273a565b60405180910390fd5b606481670de0b6b3a764000061065b9190612789565b61066591906127fa565b6014819055506064670de0b6b3a764000061068091906127fa565b601454101561068e57600080fd5b50565b600061069e848484610fe3565b61075f846106aa610e12565b61075a8560405180606001604052806028815260200161311360289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610710610e12565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117a49092919063ffffffff16565b610e1a565b600190509392505050565b60165481565b60006009905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b80601360166101000a81548160ff02191690831515021790555050565b6107c547611808565b565b6000610811600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611874565b9050919050565b610820610e12565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a49061273a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610973610e12565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f79061273a565b60405180910390fd5b606481670de0b6b3a7640000610a169190612789565b610a2091906127fa565b6015819055506064670de0b6b3a7640000610a3b91906127fa565b6015541015610a4957600080fd5b50565b60145481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60155481565b60606040518060400160405280600481526020017f244b465500000000000000000000000000000000000000000000000000000000815250905090565b6000610ad2610acb610e12565b8484610fe3565b6001905092915050565b610ae4610e12565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b689061273a565b60405180910390fd5b8360088190555082600a819055508160098190555080600b819055506064600b54600954600a54600854610ba5919061282b565b610baf919061282b565b610bb9919061282b565b1115610bc457600080fd5b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610c59610e12565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ce6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdd9061273a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4c906128d1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8090612963565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ef8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eef906129f5565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610fd691906124c5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611052576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104990612a87565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b890612b19565b60405180910390fd5b60008111611104576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fb90612bab565b60405180910390fd5b61110c610a52565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561117a575061114a610a52565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156114a357601360149054906101000a900460ff166112095761119b610a52565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ff90612c3d565b60405180910390fd5b5b60145481111561124e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124590612ca9565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146112fb57601554816112b0846107c7565b6112ba919061282b565b106112fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f190612d3b565b60405180910390fd5b5b6000611306306107c7565b90506000601654821015905060026016546113219190612789565b82106113395760026016546113369190612789565b91505b8080156113535750601360159054906101000a900460ff16155b80156113ad5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156113c55750601360169054906101000a900460ff165b801561141b5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156114715750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156114a05761147f826118e2565b600047905067016345785d8a000081111561149e5761149d81611808565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061154a5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806115fd5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156115fc5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561160b5760009050611792565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156116b65750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156116ce57600854600c81905550600954600d819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156117795750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561179157600a54600c81905550600b54600d819055505b5b61179e84848484611b5b565b50505050565b60008383111582906117ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e3919061230b565b60405180910390fd5b50600083856117fb9190612d5b565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611870573d6000803e3d6000fd5b5050565b60006006548211156118bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b290612e01565b60405180910390fd5b60006118c5611b88565b90506118da8184611bb390919063ffffffff16565b915050919050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561191a57611919612e21565b5b6040519080825280602002602001820160405280156119485781602001602082028036833780820191505090505b50905030816000815181106119605761195f612e50565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2b9190612e94565b81600181518110611a3f57611a3e612e50565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611aa630601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610e1a565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611b0a959493929190612fba565b600060405180830381600087803b158015611b2457600080fd5b505af1158015611b38573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b80611b6957611b68611bfd565b5b611b74848484611c3a565b80611b8257611b81611e05565b5b50505050565b6000806000611b95611e19565b91509150611bac8183611bb390919063ffffffff16565b9250505090565b6000611bf583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e78565b905092915050565b6000600c54148015611c1157506000600d54145b611c3857600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080611c4c87611edb565b955095509550955095509550611caa86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f4390919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d3f85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f8d90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d8b81611feb565b611d9584836120a8565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611df291906124c5565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a76400009050611e4d670de0b6b3a7640000600654611bb390919063ffffffff16565b821015611e6b57600654670de0b6b3a7640000935093505050611e74565b81819350935050505b9091565b60008083118290611ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb6919061230b565b60405180910390fd5b5060008385611ece91906127fa565b9050809150509392505050565b6000806000806000806000806000611ef88a600c54600d546120e2565b9250925092506000611f08611b88565b90506000806000611f1b8e878787612178565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000611f8583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506117a4565b905092915050565b6000808284611f9c919061282b565b905083811015611fe1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd890613060565b60405180910390fd5b8091505092915050565b6000611ff5611b88565b9050600061200c828461220190919063ffffffff16565b905061206081600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f8d90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6120bd82600654611f4390919063ffffffff16565b6006819055506120d881600754611f8d90919063ffffffff16565b6007819055505050565b60008060008061210e6064612100888a61220190919063ffffffff16565b611bb390919063ffffffff16565b90506000612138606461212a888b61220190919063ffffffff16565b611bb390919063ffffffff16565b9050600061216182612153858c611f4390919063ffffffff16565b611f4390919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612191858961220190919063ffffffff16565b905060006121a8868961220190919063ffffffff16565b905060006121bf878961220190919063ffffffff16565b905060006121e8826121da8587611f4390919063ffffffff16565b611f4390919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083036122135760009050612275565b600082846122219190612789565b905082848261223091906127fa565b14612270576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612267906130f2565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156122b557808201518184015260208101905061229a565b60008484015250505050565b6000601f19601f8301169050919050565b60006122dd8261227b565b6122e78185612286565b93506122f7818560208601612297565b612300816122c1565b840191505092915050565b6000602082019050818103600083015261232581846122d2565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061235d82612332565b9050919050565b61236d81612352565b811461237857600080fd5b50565b60008135905061238a81612364565b92915050565b6000819050919050565b6123a381612390565b81146123ae57600080fd5b50565b6000813590506123c08161239a565b92915050565b600080604083850312156123dd576123dc61232d565b5b60006123eb8582860161237b565b92505060206123fc858286016123b1565b9150509250929050565b60008115159050919050565b61241b81612406565b82525050565b60006020820190506124366000830184612412565b92915050565b6000819050919050565b600061246161245c61245784612332565b61243c565b612332565b9050919050565b600061247382612446565b9050919050565b600061248582612468565b9050919050565b6124958161247a565b82525050565b60006020820190506124b0600083018461248c565b92915050565b6124bf81612390565b82525050565b60006020820190506124da60008301846124b6565b92915050565b6000602082840312156124f6576124f561232d565b5b6000612504848285016123b1565b91505092915050565b6000806000606084860312156125265761252561232d565b5b60006125348682870161237b565b93505060206125458682870161237b565b9250506040612556868287016123b1565b9150509250925092565b600060ff82169050919050565b61257681612560565b82525050565b6000602082019050612591600083018461256d565b92915050565b6125a081612352565b82525050565b60006020820190506125bb6000830184612597565b92915050565b6125ca81612406565b81146125d557600080fd5b50565b6000813590506125e7816125c1565b92915050565b6000602082840312156126035761260261232d565b5b6000612611848285016125d8565b91505092915050565b6000602082840312156126305761262f61232d565b5b600061263e8482850161237b565b91505092915050565b600080600080608085870312156126615761266061232d565b5b600061266f878288016123b1565b9450506020612680878288016123b1565b9350506040612691878288016123b1565b92505060606126a2878288016123b1565b91505092959194509250565b600080604083850312156126c5576126c461232d565b5b60006126d38582860161237b565b92505060206126e48582860161237b565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612724602083612286565b915061272f826126ee565b602082019050919050565b6000602082019050818103600083015261275381612717565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061279482612390565b915061279f83612390565b92508282026127ad81612390565b915082820484148315176127c4576127c361275a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061280582612390565b915061281083612390565b9250826128205761281f6127cb565b5b828204905092915050565b600061283682612390565b915061284183612390565b92508282019050808211156128595761285861275a565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006128bb602683612286565b91506128c68261285f565b604082019050919050565b600060208201905081810360008301526128ea816128ae565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061294d602483612286565b9150612958826128f1565b604082019050919050565b6000602082019050818103600083015261297c81612940565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006129df602283612286565b91506129ea82612983565b604082019050919050565b60006020820190508181036000830152612a0e816129d2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612a71602583612286565b9150612a7c82612a15565b604082019050919050565b60006020820190508181036000830152612aa081612a64565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612b03602383612286565b9150612b0e82612aa7565b604082019050919050565b60006020820190508181036000830152612b3281612af6565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612b95602983612286565b9150612ba082612b39565b604082019050919050565b60006020820190508181036000830152612bc481612b88565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000612c27603f83612286565b9150612c3282612bcb565b604082019050919050565b60006020820190508181036000830152612c5681612c1a565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000612c93601c83612286565b9150612c9e82612c5d565b602082019050919050565b60006020820190508181036000830152612cc281612c86565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000612d25602383612286565b9150612d3082612cc9565b604082019050919050565b60006020820190508181036000830152612d5481612d18565b9050919050565b6000612d6682612390565b9150612d7183612390565b9250828203905081811115612d8957612d8861275a565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000612deb602a83612286565b9150612df682612d8f565b604082019050919050565b60006020820190508181036000830152612e1a81612dde565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612e8e81612364565b92915050565b600060208284031215612eaa57612ea961232d565b5b6000612eb884828501612e7f565b91505092915050565b6000819050919050565b6000612ee6612ee1612edc84612ec1565b61243c565b612390565b9050919050565b612ef681612ecb565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612f3181612352565b82525050565b6000612f438383612f28565b60208301905092915050565b6000602082019050919050565b6000612f6782612efc565b612f718185612f07565b9350612f7c83612f18565b8060005b83811015612fad578151612f948882612f37565b9750612f9f83612f4f565b925050600181019050612f80565b5085935050505092915050565b600060a082019050612fcf60008301886124b6565b612fdc6020830187612eed565b8181036040830152612fee8186612f5c565b9050612ffd6060830185612597565b61300a60808301846124b6565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061304a601b83612286565b915061305582613014565b602082019050919050565b600060208201905081810360008301526130798161303d565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006130dc602183612286565b91506130e782613080565b604082019050919050565b6000602082019050818103600083015261310b816130cf565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122046b4112ebed609555281b4dc6b59812f1adc846f1b977fbbaaa9cb453cd1ff2a64736f6c63430008110033

Deployed Bytecode Sourcemap

4471:12246:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6810:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7735:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5721:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7087:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16349:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7936:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6014:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6996:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5769:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12424:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12331:85;;;;;;;;;;;;;:::i;:::-;;7190:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1958:148;;;;;;;;;;;;;:::i;:::-;;16533:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5918:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1744:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5962:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6901:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7336:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15924:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7543:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2114:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6810:83;6847:13;6880:5;;;;;;;;;;;;;;;;;6873:12;;6810:83;:::o;7735:193::-;7837:4;7859:39;7868:12;:10;:12::i;:::-;7882:7;7891:6;7859:8;:39::i;:::-;7916:4;7909:11;;7735:193;;;;:::o;5721:41::-;;;;;;;;;;;;;:::o;7087:95::-;7140:7;5013:18;7160:14;;7087:95;:::o;16349:176::-;1881:12;:10;:12::i;:::-;1871:22;;:6;;;;;;;;;;:22;;;1863:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16466:3:::1;16454:11;5013:18;16446:19;;;;:::i;:::-;:23;;;;:::i;:::-;16431:12;:38;;;;16513:3;5013:18;16505:11;;;;:::i;:::-;16489:12;;:27;;16480:37;;;::::0;::::1;;16349:176:::0;:::o;7936:446::-;8068:4;8085:36;8095:6;8103:9;8114:6;8085:9;:36::i;:::-;8132:220;8155:6;8176:12;:10;:12::i;:::-;8203:138;8259:6;8203:138;;;;;;;;;;;;;;;;;:11;:19;8215:6;8203:19;;;;;;;;;;;;;;;:33;8223:12;:10;:12::i;:::-;8203:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8132:8;:220::i;:::-;8370:4;8363:11;;7936:446;;;;;:::o;6014:51::-;;;;:::o;6996:83::-;7037:5;4687:1;7055:16;;6996:83;:::o;5769:28::-;;;;;;;;;;;;;:::o;12424:94::-;12498:12;12484:11;;:26;;;;;;;;;;;;;;;;;;12424:94;:::o;12331:85::-;12373:35;12386:21;12373:12;:35::i;:::-;12331:85::o;7190:138::-;7256:7;7283:37;7303:7;:16;7311:7;7303:16;;;;;;;;;;;;;;;;7283:19;:37::i;:::-;7276:44;;7190:138;;;:::o;1958:148::-;1881:12;:10;:12::i;:::-;1871:22;;:6;;;;;;;;;;:22;;;1863:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2065:1:::1;2028:40;;2049:6;::::0;::::1;;;;;;;;2028:40;;;;;;;;;;;;2096:1;2079:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1958:148::o:0;16533:179::-;1881:12;:10;:12::i;:::-;1871:22;;:6;;;;;;;;;;:22;;;1863:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16650:3:::1;16636:13;5013:18;16628:21;;;;:::i;:::-;:25;;;;:::i;:::-;16611:14;:42;;;;16700:3;5013:18;16692:11;;;;:::i;:::-;16674:14;;:29;;16665:39;;;::::0;::::1;;16533:179:::0;:::o;5918:37::-;;;;:::o;1744:79::-;1782:7;1809:6;;;;;;;;;;;1802:13;;1744:79;:::o;5962:45::-;;;;:::o;6901:87::-;6940:13;6973:7;;;;;;;;;;;;;;;;;6966:14;;6901:87;:::o;7336:199::-;7441:4;7463:42;7473:12;:10;:12::i;:::-;7487:9;7498:6;7463:9;:42::i;:::-;7523:4;7516:11;;7336:199;;;;:::o;15924:386::-;1881:12;:10;:12::i;:::-;1871:22;;:6;;;;;;;;;;:22;;;1863:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16085:13:::1;16068:14;:30;;;;16127:14;16109:15;:32;;;;16167:11;16152:12;:26;;;;16205:12;16189:13;:28;;;;16298:3;16281:13;;16268:12;;16252:15;;16237:14;;:30;;;;:::i;:::-;:43;;;;:::i;:::-;:57;;;;:::i;:::-;:64;;16228:74;;;::::0;::::1;;15924:386:::0;;;;:::o;7543:184::-;7660:7;7692:11;:18;7704:5;7692:18;;;;;;;;;;;;;;;:27;7711:7;7692:27;;;;;;;;;;;;;;;;7685:34;;7543:184;;;;:::o;2114:244::-;1881:12;:10;:12::i;:::-;1871:22;;:6;;;;;;;;;;:22;;;1863:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2223:1:::1;2203:22;;:8;:22;;::::0;2195:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2313:8;2284:38;;2305:6;::::0;::::1;;;;;;;;2284:38;;;;;;;;;;;;2342:8;2333:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2114:244:::0;:::o;503:98::-;556:7;583:10;576:17;;503:98;:::o;9073:369::-;9217:1;9200:19;;:5;:19;;;9192:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9298:1;9279:21;;:7;:21;;;9271:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9380:6;9350:11;:18;9362:5;9350:18;;;;;;;;;;;;;;;:27;9369:7;9350:27;;;;;;;;;;;;;;;:36;;;;9418:7;9402:32;;9411:5;9402:32;;;9427:6;9402:32;;;;;;:::i;:::-;;;;;;;;9073:369;;;:::o;9450:2275::-;9588:1;9572:18;;:4;:18;;;9564:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9665:1;9651:16;;:2;:16;;;9643:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9735:1;9726:6;:10;9718:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9807:7;:5;:7::i;:::-;9799:15;;:4;:15;;;;:32;;;;;9824:7;:5;:7::i;:::-;9818:13;;:2;:13;;;;9799:32;9795:1204;;;9888:11;;;;;;;;;;;9883:144;;9936:7;:5;:7::i;:::-;9928:15;;:4;:15;;;9920:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9883:144;10061:12;;10051:6;:22;;10043:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10132:13;;;;;;;;;;;10126:19;;:2;:19;;;10123:146;;10199:14;;10190:6;10174:13;10184:2;10174:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10166:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10123:146;10285:28;10316:24;10334:4;10316:9;:24::i;:::-;10285:55;;10355:12;10394:19;;10370:20;:43;;10355:58;;10477:1;10457:19;;:21;;;;:::i;:::-;10433:20;:45;10430:142;;10555:1;10535:19;;:21;;;;:::i;:::-;10512:44;;10430:142;10592:7;:18;;;;;10604:6;;;;;;;;;;;10603:7;10592:18;:43;;;;;10622:13;;;;;;;;;;;10614:21;;:4;:21;;;;10592:43;:58;;;;;10639:11;;;;;;;;;;;10592:58;:87;;;;;10655:18;:24;10674:4;10655:24;;;;;;;;;;;;;;;;;;;;;;;;;10654:25;10592:87;:114;;;;;10684:18;:22;10703:2;10684:22;;;;;;;;;;;;;;;;;;;;;;;;;10683:23;10592:114;10588:400;;;10727:38;10744:20;10727:16;:38::i;:::-;10784:26;10813:21;10784:50;;10878:18;10857;:39;10853:120;;;10921:32;10934:18;10921:12;:32::i;:::-;10853:120;10708:280;10588:400;9833:1166;;9795:1204;11011:12;11026:4;11011:19;;11075:18;:24;11094:4;11075:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11103:18;:22;11122:2;11103:22;;;;;;;;;;;;;;;;;;;;;;;;;11075:50;11074:102;;;;11139:13;;;;;;;;;;;11131:21;;:4;:21;;;;:44;;;;;11162:13;;;;;;;;;;;11156:19;;:2;:19;;;;11131:44;11074:102;11070:594;;;11203:5;11193:15;;11070:594;;;11286:13;;;;;;;;;;;11278:21;;:4;:21;;;:55;;;;;11317:15;;;;;;;;;;;11303:30;;:2;:30;;;;11278:55;11275:162;;;11366:14;;11354:9;:26;;;;11409:12;;11399:7;:22;;;;11275:162;11496:13;;;;;;;;;;;11490:19;;:2;:19;;;:55;;;;;11529:15;;;;;;;;;;;11513:32;;:4;:32;;;;11490:55;11486:165;;;11578:15;;11566:9;:27;;;;11622:13;;11612:7;:23;;;;11486:165;11070:594;11676:41;11691:4;11697:2;11701:6;11709:7;11676:14;:41::i;:::-;9553:2172;9450:2275;;;:::o;2722:224::-;2842:7;2875:1;2870;:6;;2878:12;2862:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2902:9;2918:1;2914;:5;;;;:::i;:::-;2902:17;;2937:1;2930:8;;;2722:224;;;;;:::o;12224:99::-;12281:17;;;;;;;;;;;:26;;:34;12308:6;12281:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12224:99;:::o;8390:323::-;8485:7;8543;;8532;:18;;8510:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8631:19;8653:10;:8;:10::i;:::-;8631:32;;8681:24;8693:11;8681:7;:11;;:24;;;;:::i;:::-;8674:31;;;8390:323;;;:::o;11733:483::-;6168:4;6159:6;;:13;;;;;;;;;;;;;;;;;;11811:21:::1;11849:1;11835:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11811:40;;11880:4;11862;11867:1;11862:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11906:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11896:4;11901:1;11896:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11939:62;11956:4;11971:15;;;;;;;;;;;11989:11;11939:8;:62::i;:::-;12012:15;;;;;;;;;;;:66;;;12093:11;12119:1;12135:4;12162;12182:15;12012:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11800:416;6204:5:::0;6195:6;;:14;;;;;;;;;;;;;;;;;;11733:483;:::o;12526:282::-;12682:7;12677:28;;12691:14;:12;:14::i;:::-;12677:28;12716:44;12734:6;12742:9;12753:6;12716:17;:44::i;:::-;12776:7;12771:29;;12785:15;:13;:15::i;:::-;12771:29;12526:282;;;;:::o;15487:164::-;15529:7;15550:15;15567;15586:19;:17;:19::i;:::-;15549:56;;;;15623:20;15635:7;15623;:11;;:20;;;;:::i;:::-;15616:27;;;;15487:164;:::o;3208:132::-;3266:7;3293:39;3297:1;3300;3293:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3286:46;;3208:132;;;;:::o;8721:219::-;8781:1;8768:9;;:14;:30;;;;;8797:1;8786:7;;:12;8768:30;8800:7;8764:43;8839:9;;8819:17;:29;;;;8877:7;;8859:15;:25;;;;8909:1;8897:9;:13;;;;8931:1;8921:7;:11;;;;8721:219;:::o;12816:610::-;12963:15;12993:23;13031:12;13058:23;13096:12;13123:13;13150:19;13161:7;13150:10;:19::i;:::-;12948:221;;;;;;;;;;;;13198:28;13218:7;13198;:15;13206:6;13198:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13180:7;:15;13188:6;13180:15;;;;;;;;;;;;;;;:46;;;;13258:39;13281:15;13258:7;:18;13266:9;13258:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13237:7;:18;13245:9;13237:18;;;;;;;;;;;;;;;:60;;;;13308:16;13318:5;13308:9;:16::i;:::-;13335:23;13347:4;13353;13335:11;:23::i;:::-;13391:9;13374:44;;13383:6;13374:44;;;13402:15;13374:44;;;;;;:::i;:::-;;;;;;;;12937:489;;;;;;12816:610;;;:::o;8948:117::-;9004:17;;8992:9;:29;;;;9042:15;;9032:7;:25;;;;8948:117::o;15659:257::-;15710:7;15719;15739:15;15757:7;;15739:25;;15775:15;5013:18;15775:25;;15825:20;5013:18;15825:7;;:11;;:20;;;;:::i;:::-;15815:7;:30;15811:61;;;15855:7;;5013:18;15847:25;;;;;;;;15811:61;15891:7;15900;15883:25;;;;;;15659:257;;;:::o;3348:223::-;3468:7;3500:1;3496;:5;3503:12;3488:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3527:9;3543:1;3539;:5;;;;:::i;:::-;3527:17;;3562:1;3555:8;;;3348:223;;;;;:::o;13845:615::-;13945:7;13967;13989;14011;14033;14055;14091:23;14116:12;14130:13;14160:40;14172:7;14181:9;;14192:7;;14160:11;:40::i;:::-;14090:110;;;;;;14211:19;14233:10;:8;:10::i;:::-;14211:32;;14255:15;14272:23;14297:12;14326:46;14338:7;14347:4;14353:5;14360:11;14326;:46::i;:::-;14254:118;;;;;;14391:7;14400:15;14417:4;14423:15;14440:4;14446:5;14383:69;;;;;;;;;;;;;;;;;;;13845:615;;;;;;;:::o;2578:136::-;2636:7;2663:43;2667:1;2670;2663:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2656:50;;2578:136;;;;:::o;2391:179::-;2449:7;2469:9;2485:1;2481;:5;;;;:::i;:::-;2469:17;;2510:1;2505;:6;;2497:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2561:1;2554:8;;;2391:179;;;;:::o;13434:211::-;13487:19;13509:10;:8;:10::i;:::-;13487:32;;13530:13;13546:22;13556:11;13546:5;:9;;:22;;;;:::i;:::-;13530:38;;13604:33;13631:5;13604:7;:22;13620:4;13604:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13579:7;:22;13595:4;13579:22;;;;;;;;;;;;;;;:58;;;;13476:169;;13434:211;:::o;13653:147::-;13731:17;13743:4;13731:7;;:11;;:17;;;;:::i;:::-;13721:7;:27;;;;13772:20;13787:4;13772:10;;:14;;:20;;;;:::i;:::-;13759:10;:33;;;;13653:147;;:::o;14468:469::-;14637:7;14659;14681;14716:12;14731:30;14757:3;14731:21;14743:8;14731:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;14716:45;;14772:13;14788:28;14812:3;14788:19;14800:6;14788:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;14772:44;;14827:23;14853:28;14875:5;14853:17;14865:4;14853:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14827:54;;14900:15;14917:4;14923:5;14892:37;;;;;;;;;14468:469;;;;;;;:::o;14945:534::-;15139:7;15161;15183;15218:15;15236:24;15248:11;15236:7;:11;;:24;;;;:::i;:::-;15218:42;;15271:12;15286:21;15295:11;15286:4;:8;;:21;;;;:::i;:::-;15271:36;;15318:13;15334:22;15344:11;15334:5;:9;;:22;;;;:::i;:::-;15318:38;;15367:23;15393:28;15415:5;15393:17;15405:4;15393:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15367:54;;15440:7;15449:15;15466:4;15432:39;;;;;;;;;;14945:534;;;;;;;;:::o;2954:246::-;3012:7;3041:1;3036;:6;3032:47;;3066:1;3059:8;;;;3032:47;3089:9;3105:1;3101;:5;;;;:::i;:::-;3089:17;;3134:1;3129;3125;:5;;;;:::i;:::-;:10;3117:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3191:1;3184:8;;;2954:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:329::-;4830:6;4879:2;4867:9;4858:7;4854:23;4850:32;4847:119;;;4885:79;;:::i;:::-;4847:119;5005:1;5030:53;5075:7;5066:6;5055:9;5051:22;5030:53;:::i;:::-;5020:63;;4976:117;4771:329;;;;:::o;5106:619::-;5183:6;5191;5199;5248:2;5236:9;5227:7;5223:23;5219:32;5216:119;;;5254:79;;:::i;:::-;5216:119;5374:1;5399:53;5444:7;5435:6;5424:9;5420:22;5399:53;:::i;:::-;5389:63;;5345:117;5501:2;5527:53;5572:7;5563:6;5552:9;5548:22;5527:53;:::i;:::-;5517:63;;5472:118;5629:2;5655:53;5700:7;5691:6;5680:9;5676:22;5655:53;:::i;:::-;5645:63;;5600:118;5106:619;;;;;:::o;5731:86::-;5766:7;5806:4;5799:5;5795:16;5784:27;;5731:86;;;:::o;5823:112::-;5906:22;5922:5;5906:22;:::i;:::-;5901:3;5894:35;5823:112;;:::o;5941:214::-;6030:4;6068:2;6057:9;6053:18;6045:26;;6081:67;6145:1;6134:9;6130:17;6121:6;6081:67;:::i;:::-;5941:214;;;;:::o;6161:118::-;6248:24;6266:5;6248:24;:::i;:::-;6243:3;6236:37;6161:118;;:::o;6285:222::-;6378:4;6416:2;6405:9;6401:18;6393:26;;6429:71;6497:1;6486:9;6482:17;6473:6;6429:71;:::i;:::-;6285:222;;;;:::o;6513:116::-;6583:21;6598:5;6583:21;:::i;:::-;6576:5;6573:32;6563:60;;6619:1;6616;6609:12;6563:60;6513:116;:::o;6635:133::-;6678:5;6716:6;6703:20;6694:29;;6732:30;6756:5;6732:30;:::i;:::-;6635:133;;;;:::o;6774:323::-;6830:6;6879:2;6867:9;6858:7;6854:23;6850:32;6847:119;;;6885:79;;:::i;:::-;6847:119;7005:1;7030:50;7072:7;7063:6;7052:9;7048:22;7030:50;:::i;:::-;7020:60;;6976:114;6774:323;;;;:::o;7103:329::-;7162:6;7211:2;7199:9;7190:7;7186:23;7182:32;7179:119;;;7217:79;;:::i;:::-;7179:119;7337:1;7362:53;7407:7;7398:6;7387:9;7383:22;7362:53;:::i;:::-;7352:63;;7308:117;7103:329;;;;:::o;7438:765::-;7524:6;7532;7540;7548;7597:3;7585:9;7576:7;7572:23;7568:33;7565:120;;;7604:79;;:::i;:::-;7565:120;7724:1;7749:53;7794:7;7785:6;7774:9;7770:22;7749:53;:::i;:::-;7739:63;;7695:117;7851:2;7877:53;7922:7;7913:6;7902:9;7898:22;7877:53;:::i;:::-;7867:63;;7822:118;7979:2;8005:53;8050:7;8041:6;8030:9;8026:22;8005:53;:::i;:::-;7995:63;;7950:118;8107:2;8133:53;8178:7;8169:6;8158:9;8154:22;8133:53;:::i;:::-;8123:63;;8078:118;7438:765;;;;;;;:::o;8209:474::-;8277:6;8285;8334:2;8322:9;8313:7;8309:23;8305:32;8302:119;;;8340:79;;:::i;:::-;8302:119;8460:1;8485:53;8530:7;8521:6;8510:9;8506:22;8485:53;:::i;:::-;8475:63;;8431:117;8587:2;8613:53;8658:7;8649:6;8638:9;8634:22;8613:53;:::i;:::-;8603:63;;8558:118;8209:474;;;;;:::o;8689:182::-;8829:34;8825:1;8817:6;8813:14;8806:58;8689:182;:::o;8877:366::-;9019:3;9040:67;9104:2;9099:3;9040:67;:::i;:::-;9033:74;;9116:93;9205:3;9116:93;:::i;:::-;9234:2;9229:3;9225:12;9218:19;;8877:366;;;:::o;9249:419::-;9415:4;9453:2;9442:9;9438:18;9430:26;;9502:9;9496:4;9492:20;9488:1;9477:9;9473:17;9466:47;9530:131;9656:4;9530:131;:::i;:::-;9522:139;;9249:419;;;:::o;9674:180::-;9722:77;9719:1;9712:88;9819:4;9816:1;9809:15;9843:4;9840:1;9833:15;9860:410;9900:7;9923:20;9941:1;9923:20;:::i;:::-;9918:25;;9957:20;9975:1;9957:20;:::i;:::-;9952:25;;10012:1;10009;10005:9;10034:30;10052:11;10034:30;:::i;:::-;10023:41;;10213:1;10204:7;10200:15;10197:1;10194:22;10174:1;10167:9;10147:83;10124:139;;10243:18;;:::i;:::-;10124:139;9908:362;9860:410;;;;:::o;10276:180::-;10324:77;10321:1;10314:88;10421:4;10418:1;10411:15;10445:4;10442:1;10435:15;10462:185;10502:1;10519:20;10537:1;10519:20;:::i;:::-;10514:25;;10553:20;10571:1;10553:20;:::i;:::-;10548:25;;10592:1;10582:35;;10597:18;;:::i;:::-;10582:35;10639:1;10636;10632:9;10627:14;;10462:185;;;;:::o;10653:191::-;10693:3;10712:20;10730:1;10712:20;:::i;:::-;10707:25;;10746:20;10764:1;10746:20;:::i;:::-;10741:25;;10789:1;10786;10782:9;10775:16;;10810:3;10807:1;10804:10;10801:36;;;10817:18;;:::i;:::-;10801:36;10653:191;;;;:::o;10850:225::-;10990:34;10986:1;10978:6;10974:14;10967:58;11059:8;11054:2;11046:6;11042:15;11035:33;10850:225;:::o;11081:366::-;11223:3;11244:67;11308:2;11303:3;11244:67;:::i;:::-;11237:74;;11320:93;11409:3;11320:93;:::i;:::-;11438:2;11433:3;11429:12;11422:19;;11081:366;;;:::o;11453:419::-;11619:4;11657:2;11646:9;11642:18;11634:26;;11706:9;11700:4;11696:20;11692:1;11681:9;11677:17;11670:47;11734:131;11860:4;11734:131;:::i;:::-;11726:139;;11453:419;;;:::o;11878:223::-;12018:34;12014:1;12006:6;12002:14;11995:58;12087:6;12082:2;12074:6;12070:15;12063:31;11878:223;:::o;12107:366::-;12249:3;12270:67;12334:2;12329:3;12270:67;:::i;:::-;12263:74;;12346:93;12435:3;12346:93;:::i;:::-;12464:2;12459:3;12455:12;12448:19;;12107:366;;;:::o;12479:419::-;12645:4;12683:2;12672:9;12668:18;12660:26;;12732:9;12726:4;12722:20;12718:1;12707:9;12703:17;12696:47;12760:131;12886:4;12760:131;:::i;:::-;12752:139;;12479:419;;;:::o;12904:221::-;13044:34;13040:1;13032:6;13028:14;13021:58;13113:4;13108:2;13100:6;13096:15;13089:29;12904:221;:::o;13131:366::-;13273:3;13294:67;13358:2;13353:3;13294:67;:::i;:::-;13287:74;;13370:93;13459:3;13370:93;:::i;:::-;13488:2;13483:3;13479:12;13472:19;;13131:366;;;:::o;13503:419::-;13669:4;13707:2;13696:9;13692:18;13684:26;;13756:9;13750:4;13746:20;13742:1;13731:9;13727:17;13720:47;13784:131;13910:4;13784:131;:::i;:::-;13776:139;;13503:419;;;:::o;13928:224::-;14068:34;14064:1;14056:6;14052:14;14045:58;14137:7;14132:2;14124:6;14120:15;14113:32;13928:224;:::o;14158:366::-;14300:3;14321:67;14385:2;14380:3;14321:67;:::i;:::-;14314:74;;14397:93;14486:3;14397:93;:::i;:::-;14515:2;14510:3;14506:12;14499:19;;14158:366;;;:::o;14530:419::-;14696:4;14734:2;14723:9;14719:18;14711:26;;14783:9;14777:4;14773:20;14769:1;14758:9;14754:17;14747:47;14811:131;14937:4;14811:131;:::i;:::-;14803:139;;14530:419;;;:::o;14955:222::-;15095:34;15091:1;15083:6;15079:14;15072:58;15164:5;15159:2;15151:6;15147:15;15140:30;14955:222;:::o;15183:366::-;15325:3;15346:67;15410:2;15405:3;15346:67;:::i;:::-;15339:74;;15422:93;15511:3;15422:93;:::i;:::-;15540:2;15535:3;15531:12;15524:19;;15183:366;;;:::o;15555:419::-;15721:4;15759:2;15748:9;15744:18;15736:26;;15808:9;15802:4;15798:20;15794:1;15783:9;15779:17;15772:47;15836:131;15962:4;15836:131;:::i;:::-;15828:139;;15555:419;;;:::o;15980:228::-;16120:34;16116:1;16108:6;16104:14;16097:58;16189:11;16184:2;16176:6;16172:15;16165:36;15980:228;:::o;16214:366::-;16356:3;16377:67;16441:2;16436:3;16377:67;:::i;:::-;16370:74;;16453:93;16542:3;16453:93;:::i;:::-;16571:2;16566:3;16562:12;16555:19;;16214:366;;;:::o;16586:419::-;16752:4;16790:2;16779:9;16775:18;16767:26;;16839:9;16833:4;16829:20;16825:1;16814:9;16810:17;16803:47;16867:131;16993:4;16867:131;:::i;:::-;16859:139;;16586:419;;;:::o;17011:250::-;17151:34;17147:1;17139:6;17135:14;17128:58;17220:33;17215:2;17207:6;17203:15;17196:58;17011:250;:::o;17267:366::-;17409:3;17430:67;17494:2;17489:3;17430:67;:::i;:::-;17423:74;;17506:93;17595:3;17506:93;:::i;:::-;17624:2;17619:3;17615:12;17608:19;;17267:366;;;:::o;17639:419::-;17805:4;17843:2;17832:9;17828:18;17820:26;;17892:9;17886:4;17882:20;17878:1;17867:9;17863:17;17856:47;17920:131;18046:4;17920:131;:::i;:::-;17912:139;;17639:419;;;:::o;18064:178::-;18204:30;18200:1;18192:6;18188:14;18181:54;18064:178;:::o;18248:366::-;18390:3;18411:67;18475:2;18470:3;18411:67;:::i;:::-;18404:74;;18487:93;18576:3;18487:93;:::i;:::-;18605:2;18600:3;18596:12;18589:19;;18248:366;;;:::o;18620:419::-;18786:4;18824:2;18813:9;18809:18;18801:26;;18873:9;18867:4;18863:20;18859:1;18848:9;18844:17;18837:47;18901:131;19027:4;18901:131;:::i;:::-;18893:139;;18620:419;;;:::o;19045:222::-;19185:34;19181:1;19173:6;19169:14;19162:58;19254:5;19249:2;19241:6;19237:15;19230:30;19045:222;:::o;19273:366::-;19415:3;19436:67;19500:2;19495:3;19436:67;:::i;:::-;19429:74;;19512:93;19601:3;19512:93;:::i;:::-;19630:2;19625:3;19621:12;19614:19;;19273:366;;;:::o;19645:419::-;19811:4;19849:2;19838:9;19834:18;19826:26;;19898:9;19892:4;19888:20;19884:1;19873:9;19869:17;19862:47;19926:131;20052:4;19926:131;:::i;:::-;19918:139;;19645:419;;;:::o;20070:194::-;20110:4;20130:20;20148:1;20130:20;:::i;:::-;20125:25;;20164:20;20182:1;20164:20;:::i;:::-;20159:25;;20208:1;20205;20201:9;20193:17;;20232:1;20226:4;20223:11;20220:37;;;20237:18;;:::i;:::-;20220:37;20070:194;;;;:::o;20270:229::-;20410:34;20406:1;20398:6;20394:14;20387:58;20479:12;20474:2;20466:6;20462:15;20455:37;20270:229;:::o;20505:366::-;20647:3;20668:67;20732:2;20727:3;20668:67;:::i;:::-;20661:74;;20744:93;20833:3;20744:93;:::i;:::-;20862:2;20857:3;20853:12;20846:19;;20505:366;;;:::o;20877:419::-;21043:4;21081:2;21070:9;21066:18;21058:26;;21130:9;21124:4;21120:20;21116:1;21105:9;21101:17;21094:47;21158:131;21284:4;21158:131;:::i;:::-;21150:139;;20877:419;;;:::o;21302:180::-;21350:77;21347:1;21340:88;21447:4;21444:1;21437:15;21471:4;21468:1;21461:15;21488:180;21536:77;21533:1;21526:88;21633:4;21630:1;21623:15;21657:4;21654:1;21647:15;21674:143;21731:5;21762:6;21756:13;21747:22;;21778:33;21805:5;21778:33;:::i;:::-;21674:143;;;;:::o;21823:351::-;21893:6;21942:2;21930:9;21921:7;21917:23;21913:32;21910:119;;;21948:79;;:::i;:::-;21910:119;22068:1;22093:64;22149:7;22140:6;22129:9;22125:22;22093:64;:::i;:::-;22083:74;;22039:128;21823:351;;;;:::o;22180:85::-;22225:7;22254:5;22243:16;;22180:85;;;:::o;22271:158::-;22329:9;22362:61;22380:42;22389:32;22415:5;22389:32;:::i;:::-;22380:42;:::i;:::-;22362:61;:::i;:::-;22349:74;;22271:158;;;:::o;22435:147::-;22530:45;22569:5;22530:45;:::i;:::-;22525:3;22518:58;22435:147;;:::o;22588:114::-;22655:6;22689:5;22683:12;22673:22;;22588:114;;;:::o;22708:184::-;22807:11;22841:6;22836:3;22829:19;22881:4;22876:3;22872:14;22857:29;;22708:184;;;;:::o;22898:132::-;22965:4;22988:3;22980:11;;23018:4;23013:3;23009:14;23001:22;;22898:132;;;:::o;23036:108::-;23113:24;23131:5;23113:24;:::i;:::-;23108:3;23101:37;23036:108;;:::o;23150:179::-;23219:10;23240:46;23282:3;23274:6;23240:46;:::i;:::-;23318:4;23313:3;23309:14;23295:28;;23150:179;;;;:::o;23335:113::-;23405:4;23437;23432:3;23428:14;23420:22;;23335:113;;;:::o;23484:732::-;23603:3;23632:54;23680:5;23632:54;:::i;:::-;23702:86;23781:6;23776:3;23702:86;:::i;:::-;23695:93;;23812:56;23862:5;23812:56;:::i;:::-;23891:7;23922:1;23907:284;23932:6;23929:1;23926:13;23907:284;;;24008:6;24002:13;24035:63;24094:3;24079:13;24035:63;:::i;:::-;24028:70;;24121:60;24174:6;24121:60;:::i;:::-;24111:70;;23967:224;23954:1;23951;23947:9;23942:14;;23907:284;;;23911:14;24207:3;24200:10;;23608:608;;;23484:732;;;;:::o;24222:831::-;24485:4;24523:3;24512:9;24508:19;24500:27;;24537:71;24605:1;24594:9;24590:17;24581:6;24537:71;:::i;:::-;24618:80;24694:2;24683:9;24679:18;24670:6;24618:80;:::i;:::-;24745:9;24739:4;24735:20;24730:2;24719:9;24715:18;24708:48;24773:108;24876:4;24867:6;24773:108;:::i;:::-;24765:116;;24891:72;24959:2;24948:9;24944:18;24935:6;24891:72;:::i;:::-;24973:73;25041:3;25030:9;25026:19;25017:6;24973:73;:::i;:::-;24222:831;;;;;;;;:::o;25059:177::-;25199:29;25195:1;25187:6;25183:14;25176:53;25059:177;:::o;25242:366::-;25384:3;25405:67;25469:2;25464:3;25405:67;:::i;:::-;25398:74;;25481:93;25570:3;25481:93;:::i;:::-;25599:2;25594:3;25590:12;25583:19;;25242:366;;;:::o;25614:419::-;25780:4;25818:2;25807:9;25803:18;25795:26;;25867:9;25861:4;25857:20;25853:1;25842:9;25838:17;25831:47;25895:131;26021:4;25895:131;:::i;:::-;25887:139;;25614:419;;;:::o;26039:220::-;26179:34;26175:1;26167:6;26163:14;26156:58;26248:3;26243:2;26235:6;26231:15;26224:28;26039:220;:::o;26265:366::-;26407:3;26428:67;26492:2;26487:3;26428:67;:::i;:::-;26421:74;;26504:93;26593:3;26504:93;:::i;:::-;26622:2;26617:3;26613:12;26606:19;;26265:366;;;:::o;26637:419::-;26803:4;26841:2;26830:9;26826:18;26818:26;;26890:9;26884:4;26880:20;26876:1;26865:9;26861:17;26854:47;26918:131;27044:4;26918:131;:::i;:::-;26910:139;;26637:419;;;:::o

Swarm Source

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