ETH Price: $3,297.86 (-2.69%)

Token

LayerUP (UP)
 

Overview

Max Total Supply

1,000,000,000 UP

Holders

1,457

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Bitfinex 20
Balance
3,000 UP

Value
$0.00
0x8103683202aa8da10536036edef04cdd865c225e
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:
LayerUP

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-11
*/

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

library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

library Address {
    function sendValue(address payable recipient, uint256 amount) internal returns(bool){
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        return success;
    }
}

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) internal _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    /*
    * @notice Creates new tokens and adds them to the specified account.
    * @dev The function creates a specified amount of tokens and adds them to the specified account, increasing the total supply accordingly.
    * @param account The account to which the tokens will be minted.
    * @param amount The amount of tokens to be minted.
    * @return It emits a Transfer event indicating the minting of tokens from the zero address to the specified account.
    */ 
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    /*
    * @notice Burns a specific amount of tokens from the specified account.
    * @dev The function reduces the balance of the specified account by the specified amount and decreases the total supply accordingly.
    * @param account The account from which the tokens will be burned.
    * @param amount The amount of tokens to be burned.
    * @return It emits a Transfer event indicating the burning of tokens from the account to the zero address.
    */ 
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }


    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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);
    }

    /*
    * @notice Hook that is called before transferring tokens.
    * @dev This function is called before transferring tokens from one account to another.
    * @param from The account from which the tokens are being transferred.
    * @param to The account to which the tokens are being transferred.
    * @param amount The amount of tokens being transferred.
    */ 
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}


contract LayerUP is ERC20, Ownable {
    using SafeMath for uint256;
    using Address for address payable;
    uint256 private  mintAmount = 50000 * 10**uint256(decimals());
    uint256 private constant mintETHAmount = 0.05 ether;
    bool public tradingEnabled = false;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isBot;


    constructor () ERC20("LayerUP", "UP") 
    {   
        _isExcludedFromFees[owner()] = true;
        _mint(owner(), 1e9 * (10 ** decimals()));
    }

    receive() external payable {}

    function swap() external payable {
        require(msg.value >= mintETHAmount, "Insufficient ETH sent");
        uint256 mintQuantity = msg.value.mul(mintAmount).div(mintETHAmount);
        require(_balances[owner()] >= mintQuantity, "Insufficient balance");
        _balances[msg.sender] = _balances[msg.sender].add(mintQuantity);
        _balances[owner()] = _balances[owner()].sub(mintQuantity);
        emit Transfer(owner(), msg.sender, mintQuantity);
    }

    function sendAirdrops(address[] memory recipients, uint256 amount) public onlyOwner{
        for (uint i = 0; i < recipients.length; i++) {
            super._transfer(msg.sender, recipients[i], amount);
        }
    }

    function claimStuckTokens(address token) external onlyOwner {
        require(token != address(this), "Owner cannot claim contract's balance of its own tokens");
        if (token == address(0x0)) {
            payable(msg.sender).sendValue(address(this).balance);
            return;
        }
        IERC20 ERC20token = IERC20(token);
        uint256 balance = ERC20token.balanceOf(address(this));
        ERC20token.transfer(msg.sender, balance);
    }

    function rescueETH(uint256 weiAmount) external onlyOwner{
        require(address(this).balance >= weiAmount, "insufficient ETH balance");
        payable(msg.sender).transfer(weiAmount);
    }

    function enableTrading() external onlyOwner{
        require(!tradingEnabled, "Trading already enabled.");
        tradingEnabled = true;
    }

    function setExcludedFromFees(address account, bool state) external onlyOwner{
        require(_isExcludedFromFees[account] != state, "Value already set");
        _isExcludedFromFees[account] = state;
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }

    function setAntibot(address account, bool state) external onlyOwner{
        require(_isBot[account] != state, "Value already set");
        _isBot[account] = state;
    }

     function bulkAntiBot(address[] memory accounts, bool state) external onlyOwner{
        for(uint256 i = 0; i < accounts.length; i++){
            _isBot[accounts[i]] = state;
        }
    }
    
    function isBot(address account) public view returns(bool){
        return _isBot[account];
    }
    
    function _transfer(address from,address to,uint256 amount) internal  override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(tradingEnabled || _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading not yet enabled!");
        require(!_isBot[from] && !_isBot[to], "You are a bot");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        super._transfer(from, to, amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkAntiBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sendAirdrops","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"setAntibot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000146200026d60201b60201c565b60ff16600a62000025919062000636565b61c350620000349190620007c4565b6006556000600760006101000a81548160ff0219169083151502179055503480156200005f57600080fd5b506040518060400160405280600781526020017f4c617965725550000000000000000000000000000000000000000000000000008152506040518060400160405280600281526020017f55500000000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000e49291906200042b565b508060049080519060200190620000fd9291906200042b565b5050506000620001126200027660201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600160086000620001c76200027e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620002676200022c6200027e60201b60201c565b6200023c6200026d60201b60201c565b600a6200024a919062000687565b633b9aca006200025b9190620007c4565b620002a860201b60201c565b620008dd565b60006012905090565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200031b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000312906200052e565b60405180910390fd5b6200032f600083836200042160201b60201c565b80600260008282546200034391906200057e565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200039a91906200057e565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000401919062000550565b60405180910390a36200041d600083836200042660201b60201c565b5050565b505050565b505050565b82805462000439906200083c565b90600052602060002090601f0160209004810192826200045d5760008555620004a9565b82601f106200047857805160ff1916838001178555620004a9565b82800160010185558215620004a9579182015b82811115620004a85782518255916020019190600101906200048b565b5b509050620004b89190620004bc565b5090565b5b80821115620004d7576000816000905550600101620004bd565b5090565b6000620004ea601f836200056d565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b620005288162000825565b82525050565b600060208201905081810360008301526200054981620004db565b9050919050565b60006020820190506200056760008301846200051d565b92915050565b600082825260208201905092915050565b60006200058b8262000825565b9150620005988362000825565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620005d057620005cf62000872565b5b828201905092915050565b6000808291508390505b60018511156200062d5780860481111562000605576200060462000872565b5b6001851615620006155780820291505b80810290506200062585620008d0565b9450620005e5565b94509492505050565b6000620006438262000825565b9150620006508362000825565b92506200067f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006d8565b905092915050565b6000620006948262000825565b9150620006a1836200082f565b9250620006d07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006d8565b905092915050565b600082620006ea5760019050620007bd565b81620006fa5760009050620007bd565b81600181146200071357600281146200071e5762000754565b6001915050620007bd565b60ff84111562000733576200073262000872565b5b8360020a9150848211156200074d576200074c62000872565b5b50620007bd565b5060208310610133831016604e8410600b84101617156200078e5782820a90508381111562000788576200078762000872565b5b620007bd565b6200079d8484846001620005db565b92509050818404811115620007b757620007b662000872565b5b81810290505b9392505050565b6000620007d18262000825565b9150620007de8362000825565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200081a576200081962000872565b5b828202905092915050565b6000819050919050565b600060ff82169050919050565b600060028204905060018216806200085557607f821691505b602082108114156200086c576200086b620008a1565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008160011c9050919050565b6134ae80620008ed6000396000f3fe60806040526004361061016a5760003560e01c80638119c065116100d1578063a9059cbb1161008a578063dd62ed3e11610064578063dd62ed3e1461053c578063e116554514610579578063f2fde38b146105a2578063f9d0831a146105cb57610171565b8063a9059cbb146104ad578063b26baf44146104ea578063b31470a41461051357610171565b80638119c065146103d05780638a8c523c146103da5780638da5cb5b146103f157806395d89b411461041c5780639e252f0014610447578063a457c2d71461047057610171565b80633bbac579116101235780633bbac579146102ae5780634ada218b146102eb5780634fbee19314610316578063590ffdce1461035357806370a082311461037c578063715018a6146103b957610171565b806306fdde0314610176578063095ea7b3146101a157806318160ddd146101de57806323b872dd14610209578063313ce56714610246578063395093511461027157610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105f4565b6040516101989190612e32565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c391906125fa565b610686565b6040516101d59190612e17565b60405180910390f35b3480156101ea57600080fd5b506101f36106a4565b6040516102009190613094565b60405180910390f35b34801561021557600080fd5b50610230600480360381019061022b919061256f565b6106ae565b60405161023d9190612e17565b60405180910390f35b34801561025257600080fd5b5061025b6107cd565b60405161026891906130af565b60405180910390f35b34801561027d57600080fd5b50610298600480360381019061029391906125fa565b6107d6565b6040516102a59190612e17565b60405180910390f35b3480156102ba57600080fd5b506102d560048036038101906102d0919061250a565b610882565b6040516102e29190612e17565b60405180910390f35b3480156102f757600080fd5b506103006108d8565b60405161030d9190612e17565b60405180910390f35b34801561032257600080fd5b5061033d6004803603810190610338919061250a565b6108eb565b60405161034a9190612e17565b60405180910390f35b34801561035f57600080fd5b5061037a600480360381019061037591906125be565b610941565b005b34801561038857600080fd5b506103a3600480360381019061039e919061250a565b610ac6565b6040516103b09190613094565b60405180910390f35b3480156103c557600080fd5b506103ce610b0e565b005b6103d8610c66565b005b3480156103e657600080fd5b506103ef610f0d565b005b3480156103fd57600080fd5b50610406611011565b6040516104139190612dd3565b60405180910390f35b34801561042857600080fd5b5061043161103b565b60405161043e9190612e32565b60405180910390f35b34801561045357600080fd5b5061046e60048036038101906104699190612707565b6110cd565b005b34801561047c57600080fd5b50610497600480360381019061049291906125fa565b6111f1565b6040516104a49190612e17565b60405180910390f35b3480156104b957600080fd5b506104d460048036038101906104cf91906125fa565b6112dc565b6040516104e19190612e17565b60405180910390f35b3480156104f657600080fd5b50610511600480360381019061050c919061268a565b6112fa565b005b34801561051f57600080fd5b5061053a60048036038101906105359190612636565b611400565b005b34801561054857600080fd5b50610563600480360381019061055e9190612533565b611552565b6040516105709190613094565b60405180910390f35b34801561058557600080fd5b506105a0600480360381019061059b91906125be565b6115d9565b005b3480156105ae57600080fd5b506105c960048036038101906105c4919061250a565b61175e565b005b3480156105d757600080fd5b506105f260048036038101906105ed919061250a565b611925565b005b606060038054610603906132eb565b80601f016020809104026020016040519081016040528092919081815260200182805461062f906132eb565b801561067c5780601f106106515761010080835404028352916020019161067c565b820191906000526020600020905b81548152906001019060200180831161065f57829003601f168201915b5050505050905090565b600061069a610693611bb5565b8484611bbd565b6001905092915050565b6000600254905090565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106fa611bb5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107b657828110156107a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079890612fb4565b60405180910390fd5b6107b5856107ad611bb5565b858403611bbd565b5b6107c1858585611d88565b60019150509392505050565b60006012905090565b60006108786107e3611bb5565b8484600160006107f1611bb5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610873919061314e565b611bbd565b6001905092915050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600760009054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610949611bb5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cf90612fd4565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415610a6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6290612e94565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b16611bb5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9c90612fd4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b66b1a2bc2ec50000341015610cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca790612eb4565b60405180910390fd5b6000610ce066b1a2bc2ec50000610cd26006543461206d90919063ffffffff16565b61208390919063ffffffff16565b905080600080610cee611011565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610d6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6190612f54565b60405180910390fd5b610dbb816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461209990919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e5581600080610e0c611011565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120af90919063ffffffff16565b600080610e60611011565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16610ebd611011565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610f029190613094565b60405180910390a350565b610f15611bb5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9b90612fd4565b60405180910390fd5b600760009054906101000a900460ff1615610ff4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610feb90612f14565b60405180910390fd5b6001600760006101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461104a906132eb565b80601f0160208091040260200160405190810160405280929190818152602001828054611076906132eb565b80156110c35780601f10611098576101008083540402835291602001916110c3565b820191906000526020600020905b8154815290600101906020018083116110a657829003601f168201915b5050505050905090565b6110d5611bb5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115b90612fd4565b60405180910390fd5b804710156111a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119e90612ff4565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156111ed573d6000803e3d6000fd5b5050565b60008060016000611200611bb5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156112bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b490613074565b60405180910390fd5b6112d16112c8611bb5565b85858403611bbd565b600191505092915050565b60006112f06112e9611bb5565b8484611d88565b6001905092915050565b611302611bb5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611391576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138890612fd4565b60405180910390fd5b60005b82518110156113fb576113e8338483815181106113da577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151846120c5565b80806113f39061331d565b915050611394565b505050565b611408611bb5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611497576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148e90612fd4565b60405180910390fd5b60005b825181101561154d5781600960008584815181106114e1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806115459061331d565b91505061149a565b505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6115e1611bb5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166790612fd4565b60405180910390fd5b801515600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415611703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fa90612e94565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611766611bb5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ec90612fd4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185c90612ed4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61192d611bb5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b390612fd4565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2290612f94565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a8f57611a89473373ffffffffffffffffffffffffffffffffffffffff1661234690919063ffffffff16565b50611bb2565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611acf9190612dd3565b60206040518083038186803b158015611ae757600080fd5b505afa158015611afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1f9190612730565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611b5c929190612dee565b602060405180830381600087803b158015611b7657600080fd5b505af1158015611b8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bae91906126de565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2490613034565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9490612ef4565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d7b9190613094565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611df8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611def90613014565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5f90612e54565b60405180910390fd5b600760009054906101000a900460ff1680611ecc5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611f205750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5690612e74565b60405180910390fd5b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120035750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612042576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203990613054565b60405180910390fd5b600081141561205c57612057838360006120c5565b612068565b6120678383836120c5565b5b505050565b6000818361207b91906131d5565b905092915050565b6000818361209191906131a4565b905092915050565b600081836120a7919061314e565b905092915050565b600081836120bd919061322f565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212c90613014565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219c90612e54565b60405180910390fd5b6121b0838383612401565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612236576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222d90612f34565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122c9919061314e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161232d9190613094565b60405180910390a3612340848484612406565b50505050565b60008147101561238b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238290612f74565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff16836040516123b190612dbe565b60006040518083038185875af1925050503d80600081146123ee576040519150601f19603f3d011682016040523d82523d6000602084013e6123f3565b606091505b505090508091505092915050565b505050565b505050565b600061241e612419846130fb565b6130ca565b9050808382526020820190508285602086028201111561243d57600080fd5b60005b8581101561246d57816124538882612477565b845260208401935060208301925050600181019050612440565b5050509392505050565b60008135905061248681613433565b92915050565b600082601f83011261249d57600080fd5b81356124ad84826020860161240b565b91505092915050565b6000813590506124c58161344a565b92915050565b6000815190506124da8161344a565b92915050565b6000813590506124ef81613461565b92915050565b60008151905061250481613461565b92915050565b60006020828403121561251c57600080fd5b600061252a84828501612477565b91505092915050565b6000806040838503121561254657600080fd5b600061255485828601612477565b925050602061256585828601612477565b9150509250929050565b60008060006060848603121561258457600080fd5b600061259286828701612477565b93505060206125a386828701612477565b92505060406125b4868287016124e0565b9150509250925092565b600080604083850312156125d157600080fd5b60006125df85828601612477565b92505060206125f0858286016124b6565b9150509250929050565b6000806040838503121561260d57600080fd5b600061261b85828601612477565b925050602061262c858286016124e0565b9150509250929050565b6000806040838503121561264957600080fd5b600083013567ffffffffffffffff81111561266357600080fd5b61266f8582860161248c565b9250506020612680858286016124b6565b9150509250929050565b6000806040838503121561269d57600080fd5b600083013567ffffffffffffffff8111156126b757600080fd5b6126c38582860161248c565b92505060206126d4858286016124e0565b9150509250929050565b6000602082840312156126f057600080fd5b60006126fe848285016124cb565b91505092915050565b60006020828403121561271957600080fd5b6000612727848285016124e0565b91505092915050565b60006020828403121561274257600080fd5b6000612750848285016124f5565b91505092915050565b61276281613263565b82525050565b61277181613275565b82525050565b600061278282613127565b61278c818561313d565b935061279c8185602086016132b8565b6127a581613422565b840191505092915050565b60006127bd60238361313d565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061282360188361313d565b91507f54726164696e67206e6f742079657420656e61626c65642100000000000000006000830152602082019050919050565b600061286360118361313d565b91507f56616c756520616c7265616479207365740000000000000000000000000000006000830152602082019050919050565b60006128a360158361313d565b91507f496e73756666696369656e74204554482073656e7400000000000000000000006000830152602082019050919050565b60006128e360268361313d565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061294960228361313d565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006129af60188361313d565b91507f54726164696e6720616c726561647920656e61626c65642e00000000000000006000830152602082019050919050565b60006129ef60268361313d565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612a5560148361313d565b91507f496e73756666696369656e742062616c616e63650000000000000000000000006000830152602082019050919050565b6000612a95601d8361313d565b91507f416464726573733a20696e73756666696369656e742062616c616e63650000006000830152602082019050919050565b6000612ad560378361313d565b91507f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160008301527f6c616e6365206f6620697473206f776e20746f6b656e730000000000000000006020830152604082019050919050565b6000612b3b60288361313d565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612ba160208361313d565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612be160188361313d565b91507f696e73756666696369656e74204554482062616c616e636500000000000000006000830152602082019050919050565b6000612c2160258361313d565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612c87600083613132565b9150600082019050919050565b6000612ca160248361313d565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612d07600d8361313d565b91507f596f7520617265206120626f74000000000000000000000000000000000000006000830152602082019050919050565b6000612d4760258361313d565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b612da9816132a1565b82525050565b612db8816132ab565b82525050565b6000612dc982612c7a565b9150819050919050565b6000602082019050612de86000830184612759565b92915050565b6000604082019050612e036000830185612759565b612e106020830184612da0565b9392505050565b6000602082019050612e2c6000830184612768565b92915050565b60006020820190508181036000830152612e4c8184612777565b905092915050565b60006020820190508181036000830152612e6d816127b0565b9050919050565b60006020820190508181036000830152612e8d81612816565b9050919050565b60006020820190508181036000830152612ead81612856565b9050919050565b60006020820190508181036000830152612ecd81612896565b9050919050565b60006020820190508181036000830152612eed816128d6565b9050919050565b60006020820190508181036000830152612f0d8161293c565b9050919050565b60006020820190508181036000830152612f2d816129a2565b9050919050565b60006020820190508181036000830152612f4d816129e2565b9050919050565b60006020820190508181036000830152612f6d81612a48565b9050919050565b60006020820190508181036000830152612f8d81612a88565b9050919050565b60006020820190508181036000830152612fad81612ac8565b9050919050565b60006020820190508181036000830152612fcd81612b2e565b9050919050565b60006020820190508181036000830152612fed81612b94565b9050919050565b6000602082019050818103600083015261300d81612bd4565b9050919050565b6000602082019050818103600083015261302d81612c14565b9050919050565b6000602082019050818103600083015261304d81612c94565b9050919050565b6000602082019050818103600083015261306d81612cfa565b9050919050565b6000602082019050818103600083015261308d81612d3a565b9050919050565b60006020820190506130a96000830184612da0565b92915050565b60006020820190506130c46000830184612daf565b92915050565b6000604051905081810181811067ffffffffffffffff821117156130f1576130f06133f3565b5b8060405250919050565b600067ffffffffffffffff821115613116576131156133f3565b5b602082029050602081019050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b6000613159826132a1565b9150613164836132a1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561319957613198613366565b5b828201905092915050565b60006131af826132a1565b91506131ba836132a1565b9250826131ca576131c9613395565b5b828204905092915050565b60006131e0826132a1565b91506131eb836132a1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561322457613223613366565b5b828202905092915050565b600061323a826132a1565b9150613245836132a1565b92508282101561325857613257613366565b5b828203905092915050565b600061326e82613281565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156132d65780820151818401526020810190506132bb565b838111156132e5576000848401525b50505050565b6000600282049050600182168061330357607f821691505b60208210811415613317576133166133c4565b5b50919050565b6000613328826132a1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561335b5761335a613366565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b61343c81613263565b811461344757600080fd5b50565b61345381613275565b811461345e57600080fd5b50565b61346a816132a1565b811461347557600080fd5b5056fea264697066735822122018d17ab04173fb9b9302f97bc1107da40585c080aab75602f22944a48e8df3f264736f6c63430008000033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c80638119c065116100d1578063a9059cbb1161008a578063dd62ed3e11610064578063dd62ed3e1461053c578063e116554514610579578063f2fde38b146105a2578063f9d0831a146105cb57610171565b8063a9059cbb146104ad578063b26baf44146104ea578063b31470a41461051357610171565b80638119c065146103d05780638a8c523c146103da5780638da5cb5b146103f157806395d89b411461041c5780639e252f0014610447578063a457c2d71461047057610171565b80633bbac579116101235780633bbac579146102ae5780634ada218b146102eb5780634fbee19314610316578063590ffdce1461035357806370a082311461037c578063715018a6146103b957610171565b806306fdde0314610176578063095ea7b3146101a157806318160ddd146101de57806323b872dd14610209578063313ce56714610246578063395093511461027157610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105f4565b6040516101989190612e32565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c391906125fa565b610686565b6040516101d59190612e17565b60405180910390f35b3480156101ea57600080fd5b506101f36106a4565b6040516102009190613094565b60405180910390f35b34801561021557600080fd5b50610230600480360381019061022b919061256f565b6106ae565b60405161023d9190612e17565b60405180910390f35b34801561025257600080fd5b5061025b6107cd565b60405161026891906130af565b60405180910390f35b34801561027d57600080fd5b50610298600480360381019061029391906125fa565b6107d6565b6040516102a59190612e17565b60405180910390f35b3480156102ba57600080fd5b506102d560048036038101906102d0919061250a565b610882565b6040516102e29190612e17565b60405180910390f35b3480156102f757600080fd5b506103006108d8565b60405161030d9190612e17565b60405180910390f35b34801561032257600080fd5b5061033d6004803603810190610338919061250a565b6108eb565b60405161034a9190612e17565b60405180910390f35b34801561035f57600080fd5b5061037a600480360381019061037591906125be565b610941565b005b34801561038857600080fd5b506103a3600480360381019061039e919061250a565b610ac6565b6040516103b09190613094565b60405180910390f35b3480156103c557600080fd5b506103ce610b0e565b005b6103d8610c66565b005b3480156103e657600080fd5b506103ef610f0d565b005b3480156103fd57600080fd5b50610406611011565b6040516104139190612dd3565b60405180910390f35b34801561042857600080fd5b5061043161103b565b60405161043e9190612e32565b60405180910390f35b34801561045357600080fd5b5061046e60048036038101906104699190612707565b6110cd565b005b34801561047c57600080fd5b50610497600480360381019061049291906125fa565b6111f1565b6040516104a49190612e17565b60405180910390f35b3480156104b957600080fd5b506104d460048036038101906104cf91906125fa565b6112dc565b6040516104e19190612e17565b60405180910390f35b3480156104f657600080fd5b50610511600480360381019061050c919061268a565b6112fa565b005b34801561051f57600080fd5b5061053a60048036038101906105359190612636565b611400565b005b34801561054857600080fd5b50610563600480360381019061055e9190612533565b611552565b6040516105709190613094565b60405180910390f35b34801561058557600080fd5b506105a0600480360381019061059b91906125be565b6115d9565b005b3480156105ae57600080fd5b506105c960048036038101906105c4919061250a565b61175e565b005b3480156105d757600080fd5b506105f260048036038101906105ed919061250a565b611925565b005b606060038054610603906132eb565b80601f016020809104026020016040519081016040528092919081815260200182805461062f906132eb565b801561067c5780601f106106515761010080835404028352916020019161067c565b820191906000526020600020905b81548152906001019060200180831161065f57829003601f168201915b5050505050905090565b600061069a610693611bb5565b8484611bbd565b6001905092915050565b6000600254905090565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106fa611bb5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107b657828110156107a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079890612fb4565b60405180910390fd5b6107b5856107ad611bb5565b858403611bbd565b5b6107c1858585611d88565b60019150509392505050565b60006012905090565b60006108786107e3611bb5565b8484600160006107f1611bb5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610873919061314e565b611bbd565b6001905092915050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600760009054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610949611bb5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cf90612fd4565b60405180910390fd5b801515600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415610a6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6290612e94565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b16611bb5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9c90612fd4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b66b1a2bc2ec50000341015610cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca790612eb4565b60405180910390fd5b6000610ce066b1a2bc2ec50000610cd26006543461206d90919063ffffffff16565b61208390919063ffffffff16565b905080600080610cee611011565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610d6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6190612f54565b60405180910390fd5b610dbb816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461209990919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e5581600080610e0c611011565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120af90919063ffffffff16565b600080610e60611011565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16610ebd611011565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610f029190613094565b60405180910390a350565b610f15611bb5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9b90612fd4565b60405180910390fd5b600760009054906101000a900460ff1615610ff4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610feb90612f14565b60405180910390fd5b6001600760006101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461104a906132eb565b80601f0160208091040260200160405190810160405280929190818152602001828054611076906132eb565b80156110c35780601f10611098576101008083540402835291602001916110c3565b820191906000526020600020905b8154815290600101906020018083116110a657829003601f168201915b5050505050905090565b6110d5611bb5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115b90612fd4565b60405180910390fd5b804710156111a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119e90612ff4565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156111ed573d6000803e3d6000fd5b5050565b60008060016000611200611bb5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156112bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b490613074565b60405180910390fd5b6112d16112c8611bb5565b85858403611bbd565b600191505092915050565b60006112f06112e9611bb5565b8484611d88565b6001905092915050565b611302611bb5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611391576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138890612fd4565b60405180910390fd5b60005b82518110156113fb576113e8338483815181106113da577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151846120c5565b80806113f39061331d565b915050611394565b505050565b611408611bb5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611497576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148e90612fd4565b60405180910390fd5b60005b825181101561154d5781600960008584815181106114e1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806115459061331d565b91505061149a565b505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6115e1611bb5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166790612fd4565b60405180910390fd5b801515600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415611703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fa90612e94565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611766611bb5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ec90612fd4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185c90612ed4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61192d611bb5565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b390612fd4565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2290612f94565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a8f57611a89473373ffffffffffffffffffffffffffffffffffffffff1661234690919063ffffffff16565b50611bb2565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611acf9190612dd3565b60206040518083038186803b158015611ae757600080fd5b505afa158015611afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1f9190612730565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611b5c929190612dee565b602060405180830381600087803b158015611b7657600080fd5b505af1158015611b8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bae91906126de565b5050505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2490613034565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9490612ef4565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d7b9190613094565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611df8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611def90613014565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5f90612e54565b60405180910390fd5b600760009054906101000a900460ff1680611ecc5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611f205750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5690612e74565b60405180910390fd5b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120035750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612042576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203990613054565b60405180910390fd5b600081141561205c57612057838360006120c5565b612068565b6120678383836120c5565b5b505050565b6000818361207b91906131d5565b905092915050565b6000818361209191906131a4565b905092915050565b600081836120a7919061314e565b905092915050565b600081836120bd919061322f565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212c90613014565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219c90612e54565b60405180910390fd5b6121b0838383612401565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612236576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222d90612f34565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122c9919061314e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161232d9190613094565b60405180910390a3612340848484612406565b50505050565b60008147101561238b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238290612f74565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff16836040516123b190612dbe565b60006040518083038185875af1925050503d80600081146123ee576040519150601f19603f3d011682016040523d82523d6000602084013e6123f3565b606091505b505090508091505092915050565b505050565b505050565b600061241e612419846130fb565b6130ca565b9050808382526020820190508285602086028201111561243d57600080fd5b60005b8581101561246d57816124538882612477565b845260208401935060208301925050600181019050612440565b5050509392505050565b60008135905061248681613433565b92915050565b600082601f83011261249d57600080fd5b81356124ad84826020860161240b565b91505092915050565b6000813590506124c58161344a565b92915050565b6000815190506124da8161344a565b92915050565b6000813590506124ef81613461565b92915050565b60008151905061250481613461565b92915050565b60006020828403121561251c57600080fd5b600061252a84828501612477565b91505092915050565b6000806040838503121561254657600080fd5b600061255485828601612477565b925050602061256585828601612477565b9150509250929050565b60008060006060848603121561258457600080fd5b600061259286828701612477565b93505060206125a386828701612477565b92505060406125b4868287016124e0565b9150509250925092565b600080604083850312156125d157600080fd5b60006125df85828601612477565b92505060206125f0858286016124b6565b9150509250929050565b6000806040838503121561260d57600080fd5b600061261b85828601612477565b925050602061262c858286016124e0565b9150509250929050565b6000806040838503121561264957600080fd5b600083013567ffffffffffffffff81111561266357600080fd5b61266f8582860161248c565b9250506020612680858286016124b6565b9150509250929050565b6000806040838503121561269d57600080fd5b600083013567ffffffffffffffff8111156126b757600080fd5b6126c38582860161248c565b92505060206126d4858286016124e0565b9150509250929050565b6000602082840312156126f057600080fd5b60006126fe848285016124cb565b91505092915050565b60006020828403121561271957600080fd5b6000612727848285016124e0565b91505092915050565b60006020828403121561274257600080fd5b6000612750848285016124f5565b91505092915050565b61276281613263565b82525050565b61277181613275565b82525050565b600061278282613127565b61278c818561313d565b935061279c8185602086016132b8565b6127a581613422565b840191505092915050565b60006127bd60238361313d565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061282360188361313d565b91507f54726164696e67206e6f742079657420656e61626c65642100000000000000006000830152602082019050919050565b600061286360118361313d565b91507f56616c756520616c7265616479207365740000000000000000000000000000006000830152602082019050919050565b60006128a360158361313d565b91507f496e73756666696369656e74204554482073656e7400000000000000000000006000830152602082019050919050565b60006128e360268361313d565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061294960228361313d565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006129af60188361313d565b91507f54726164696e6720616c726561647920656e61626c65642e00000000000000006000830152602082019050919050565b60006129ef60268361313d565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612a5560148361313d565b91507f496e73756666696369656e742062616c616e63650000000000000000000000006000830152602082019050919050565b6000612a95601d8361313d565b91507f416464726573733a20696e73756666696369656e742062616c616e63650000006000830152602082019050919050565b6000612ad560378361313d565b91507f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160008301527f6c616e6365206f6620697473206f776e20746f6b656e730000000000000000006020830152604082019050919050565b6000612b3b60288361313d565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612ba160208361313d565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612be160188361313d565b91507f696e73756666696369656e74204554482062616c616e636500000000000000006000830152602082019050919050565b6000612c2160258361313d565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612c87600083613132565b9150600082019050919050565b6000612ca160248361313d565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612d07600d8361313d565b91507f596f7520617265206120626f74000000000000000000000000000000000000006000830152602082019050919050565b6000612d4760258361313d565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b612da9816132a1565b82525050565b612db8816132ab565b82525050565b6000612dc982612c7a565b9150819050919050565b6000602082019050612de86000830184612759565b92915050565b6000604082019050612e036000830185612759565b612e106020830184612da0565b9392505050565b6000602082019050612e2c6000830184612768565b92915050565b60006020820190508181036000830152612e4c8184612777565b905092915050565b60006020820190508181036000830152612e6d816127b0565b9050919050565b60006020820190508181036000830152612e8d81612816565b9050919050565b60006020820190508181036000830152612ead81612856565b9050919050565b60006020820190508181036000830152612ecd81612896565b9050919050565b60006020820190508181036000830152612eed816128d6565b9050919050565b60006020820190508181036000830152612f0d8161293c565b9050919050565b60006020820190508181036000830152612f2d816129a2565b9050919050565b60006020820190508181036000830152612f4d816129e2565b9050919050565b60006020820190508181036000830152612f6d81612a48565b9050919050565b60006020820190508181036000830152612f8d81612a88565b9050919050565b60006020820190508181036000830152612fad81612ac8565b9050919050565b60006020820190508181036000830152612fcd81612b2e565b9050919050565b60006020820190508181036000830152612fed81612b94565b9050919050565b6000602082019050818103600083015261300d81612bd4565b9050919050565b6000602082019050818103600083015261302d81612c14565b9050919050565b6000602082019050818103600083015261304d81612c94565b9050919050565b6000602082019050818103600083015261306d81612cfa565b9050919050565b6000602082019050818103600083015261308d81612d3a565b9050919050565b60006020820190506130a96000830184612da0565b92915050565b60006020820190506130c46000830184612daf565b92915050565b6000604051905081810181811067ffffffffffffffff821117156130f1576130f06133f3565b5b8060405250919050565b600067ffffffffffffffff821115613116576131156133f3565b5b602082029050602081019050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b6000613159826132a1565b9150613164836132a1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561319957613198613366565b5b828201905092915050565b60006131af826132a1565b91506131ba836132a1565b9250826131ca576131c9613395565b5b828204905092915050565b60006131e0826132a1565b91506131eb836132a1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561322457613223613366565b5b828202905092915050565b600061323a826132a1565b9150613245836132a1565b92508282101561325857613257613366565b5b828203905092915050565b600061326e82613281565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156132d65780820151818401526020810190506132bb565b838111156132e5576000848401525b50505050565b6000600282049050600182168061330357607f821691505b60208210811415613317576133166133c4565b5b50919050565b6000613328826132a1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561335b5761335a613366565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b61343c81613263565b811461344757600080fd5b50565b61345381613275565b811461345e57600080fd5b50565b61346a816132a1565b811461347557600080fd5b5056fea264697066735822122018d17ab04173fb9b9302f97bc1107da40585c080aab75602f22944a48e8df3f264736f6c63430008000033

Deployed Bytecode Sourcemap

11496:3553:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5442:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6356:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5763:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6533:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5662:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7114:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14364:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11737:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13842:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13625:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5879:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4628:148;;;;;;;;;;;;;:::i;:::-;;12086:469;;;:::i;:::-;;13471:146;;;;;;;;;;;;;:::i;:::-;;4414:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5550:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13267:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7337:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6014:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12563:223;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14158:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6197:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13975:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4784:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12794:465;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5442:100;5496:13;5529:5;5522:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5442:100;:::o;6356:169::-;6439:4;6456:39;6465:12;:10;:12::i;:::-;6479:7;6488:6;6456:8;:39::i;:::-;6513:4;6506:11;;6356:169;;;;:::o;5763:108::-;5824:7;5851:12;;5844:19;;5763:108;:::o;6533:573::-;6673:4;6690:24;6717:11;:19;6729:6;6717:19;;;;;;;;;;;;;;;:33;6737:12;:10;:12::i;:::-;6717:33;;;;;;;;;;;;;;;;6690:60;;6785:17;6765:16;:37;6761:265;;6847:6;6827:16;:26;;6819:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;6942:57;6951:6;6959:12;:10;:12::i;:::-;6992:6;6973:16;:25;6942:8;:57::i;:::-;6761:265;7038:36;7048:6;7056:9;7067:6;7038:9;:36::i;:::-;7094:4;7087:11;;;6533:573;;;;;:::o;5662:93::-;5720:5;5745:2;5738:9;;5662:93;:::o;7114:215::-;7202:4;7219:80;7228:12;:10;:12::i;:::-;7242:7;7288:10;7251:11;:25;7263:12;:10;:12::i;:::-;7251:25;;;;;;;;;;;;;;;:34;7277:7;7251:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;7219:8;:80::i;:::-;7317:4;7310:11;;7114:215;;;;:::o;14364:98::-;14416:4;14439:6;:15;14446:7;14439:15;;;;;;;;;;;;;;;;;;;;;;;;;14432:22;;14364:98;;;:::o;11737:34::-;;;;;;;;;;;;;:::o;13842:125::-;13907:4;13931:19;:28;13951:7;13931:28;;;;;;;;;;;;;;;;;;;;;;;;;13924:35;;13842:125;;;:::o;13625:209::-;4551:12;:10;:12::i;:::-;4541:22;;:6;;;;;;;;;;;:22;;;4533:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13752:5:::1;13720:37;;:19;:28;13740:7;13720:28;;;;;;;;;;;;;;;;;;;;;;;;;:37;;;;13712:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13821:5;13790:19;:28;13810:7;13790:28;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;13625:209:::0;;:::o;5879:127::-;5953:7;5980:9;:18;5990:7;5980:18;;;;;;;;;;;;;;;;5973:25;;5879:127;;;:::o;4628:148::-;4551:12;:10;:12::i;:::-;4541:22;;:6;;;;;;;;;;;:22;;;4533:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4735:1:::1;4698:40;;4719:6;;;;;;;;;;;4698:40;;;;;;;;;;;;4766:1;4749:6;;:19;;;;;;;;;;;;;;;;;;4628:148::o:0;12086:469::-;11720:10;12138:9;:26;;12130:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;12201:20;12224:44;11720:10;12224:25;12238:10;;12224:9;:13;;:25;;;;:::i;:::-;:29;;:44;;;;:::i;:::-;12201:67;;12309:12;12287:9;:18;12297:7;:5;:7::i;:::-;12287:18;;;;;;;;;;;;;;;;:34;;12279:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12381:39;12407:12;12381:9;:21;12391:10;12381:21;;;;;;;;;;;;;;;;:25;;:39;;;;:::i;:::-;12357:9;:21;12367:10;12357:21;;;;;;;;;;;;;;;:63;;;;12452:36;12475:12;12452:9;:18;12462:7;:5;:7::i;:::-;12452:18;;;;;;;;;;;;;;;;:22;;:36;;;;:::i;:::-;12431:9;:18;12441:7;:5;:7::i;:::-;12431:18;;;;;;;;;;;;;;;:57;;;;12522:10;12504:43;;12513:7;:5;:7::i;:::-;12504:43;;;12534:12;12504:43;;;;;;:::i;:::-;;;;;;;;12086:469;:::o;13471:146::-;4551:12;:10;:12::i;:::-;4541:22;;:6;;;;;;;;;;;:22;;;4533:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13534:14:::1;;;;;;;;;;;13533:15;13525:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;13605:4;13588:14;;:21;;;;;;;;;;;;;;;;;;13471:146::o:0;4414:79::-;4452:7;4479:6;;;;;;;;;;;4472:13;;4414:79;:::o;5550:104::-;5606:13;5639:7;5632:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5550:104;:::o;13267:196::-;4551:12;:10;:12::i;:::-;4541:22;;:6;;;;;;;;;;;:22;;;4533:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13367:9:::1;13342:21;:34;;13334:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13424:10;13416:28;;:39;13445:9;13416:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;13267:196:::0;:::o;7337:413::-;7430:4;7447:24;7474:11;:25;7486:12;:10;:12::i;:::-;7474:25;;;;;;;;;;;;;;;:34;7500:7;7474:34;;;;;;;;;;;;;;;;7447:61;;7547:15;7527:16;:35;;7519:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;7640:67;7649:12;:10;:12::i;:::-;7663:7;7691:15;7672:16;:34;7640:8;:67::i;:::-;7738:4;7731:11;;;7337:413;;;;:::o;6014:175::-;6100:4;6117:42;6127:12;:10;:12::i;:::-;6141:9;6152:6;6117:9;:42::i;:::-;6177:4;6170:11;;6014:175;;;;:::o;12563:223::-;4551:12;:10;:12::i;:::-;4541:22;;:6;;;;;;;;;;;:22;;;4533:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12662:6:::1;12657:122;12678:10;:17;12674:1;:21;12657:122;;;12717:50;12733:10;12745;12756:1;12745:13;;;;;;;;;;;;;;;;;;;;;;12760:6;12717:15;:50::i;:::-;12697:3;;;;;:::i;:::-;;;;12657:122;;;;12563:223:::0;;:::o;14158:194::-;4551:12;:10;:12::i;:::-;4541:22;;:6;;;;;;;;;;;:22;;;4533:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14251:9:::1;14247:98;14270:8;:15;14266:1;:19;14247:98;;;14328:5;14306:6;:19;14313:8;14322:1;14313:11;;;;;;;;;;;;;;;;;;;;;;14306:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;14287:3;;;;;:::i;:::-;;;;14247:98;;;;14158:194:::0;;:::o;6197:151::-;6286:7;6313:11;:18;6325:5;6313:18;;;;;;;;;;;;;;;:27;6332:7;6313:27;;;;;;;;;;;;;;;;6306:34;;6197:151;;;;:::o;13975:174::-;4551:12;:10;:12::i;:::-;4541:22;;:6;;;;;;;;;;;:22;;;4533:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14080:5:::1;14061:24;;:6;:15;14068:7;14061:15;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;14053:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;14136:5;14118:6;:15;14125:7;14118:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;13975:174:::0;;:::o;4784:244::-;4551:12;:10;:12::i;:::-;4541:22;;:6;;;;;;;;;;;:22;;;4533:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4893:1:::1;4873:22;;:8;:22;;;;4865:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;4983:8;4954:38;;4975:6;;;;;;;;;;;4954:38;;;;;;;;;;;;5012:8;5003:6;;:17;;;;;;;;;;;;;;;;;;4784:244:::0;:::o;12794:465::-;4551:12;:10;:12::i;:::-;4541:22;;:6;;;;;;;;;;;:22;;;4533:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12890:4:::1;12873:22;;:5;:22;;;;12865:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;12987:3;12970:21;;:5;:21;;;12966:127;;;13008:52;13038:21;13016:10;13008:29;;;;:52;;;;:::i;:::-;;13075:7;;12966:127;13103:17;13130:5;13103:33;;13147:15;13165:10;:20;;;13194:4;13165:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13147:53;;13211:10;:19;;;13231:10;13243:7;13211:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4611:1;;;12794:465:::0;:::o;3737:98::-;3790:7;3817:10;3810:17;;3737:98;:::o;10461:380::-;10614:1;10597:19;;:5;:19;;;;10589:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10695:1;10676:21;;:7;:21;;;;10668:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10779:6;10749:11;:18;10761:5;10749:18;;;;;;;;;;;;;;;:27;10768:7;10749:27;;;;;;;;;;;;;;;:36;;;;10817:7;10801:32;;10810:5;10801:32;;;10826:6;10801:32;;;;;;:::i;:::-;;;;;;;;10461:380;;;:::o;14474:572::-;14587:1;14571:18;;:4;:18;;;;14563:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14664:1;14650:16;;:2;:16;;;;14642:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14725:14;;;;;;;;;;;:43;;;;14743:19;:25;14763:4;14743:25;;;;;;;;;;;;;;;;;;;;;;;;;14725:43;:70;;;;14772:19;:23;14792:2;14772:23;;;;;;;;;;;;;;;;;;;;;;;;;14725:70;14717:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;14844:6;:12;14851:4;14844:12;;;;;;;;;;;;;;;;;;;;;;;;;14843:13;:28;;;;;14861:6;:10;14868:2;14861:10;;;;;;;;;;;;;;;;;;;;;;;;;14860:11;14843:28;14835:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;14916:1;14906:6;:11;14902:93;;;14934:28;14950:4;14956:2;14960:1;14934:15;:28::i;:::-;14977:7;;14902:93;15005:33;15021:4;15027:2;15031:6;15005:15;:33::i;:::-;14474:572;;;;:::o;1412:98::-;1470:7;1501:1;1497;:5;;;;:::i;:::-;1490:12;;1412:98;;;;:::o;1518:::-;1576:7;1607:1;1603;:5;;;;:::i;:::-;1596:12;;1518:98;;;;:::o;1200:::-;1258:7;1289:1;1285;:5;;;;:::i;:::-;1278:12;;1200:98;;;;:::o;1306:::-;1364:7;1395:1;1391;:5;;;;:::i;:::-;1384:12;;1306:98;;;;:::o;7758:733::-;7916:1;7898:20;;:6;:20;;;;7890:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8000:1;7979:23;;:9;:23;;;;7971:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8055:47;8076:6;8084:9;8095:6;8055:20;:47::i;:::-;8115:21;8139:9;:17;8149:6;8139:17;;;;;;;;;;;;;;;;8115:41;;8192:6;8175:13;:23;;8167:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;8313:6;8297:13;:22;8277:9;:17;8287:6;8277:17;;;;;;;;;;;;;;;:42;;;;8365:6;8341:9;:20;8351:9;8341:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;8406:9;8389:35;;8398:6;8389:35;;;8417:6;8389:35;;;;;;:::i;:::-;;;;;;;;8437:46;8457:6;8465:9;8476:6;8437:19;:46::i;:::-;7758:733;;;;:::o;3431:266::-;3510:4;3559:6;3534:21;:31;;3526:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3613:12;3631:9;:14;;3653:6;3631:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3612:52;;;3682:7;3675:14;;;3431:266;;;;:::o;11230:125::-;;;;:::o;11363:124::-;;;;:::o;24:622:1:-;;145:80;160:64;217:6;160:64;:::i;:::-;145:80;:::i;:::-;136:89;;245:5;273:6;266:5;259:21;299:4;292:5;288:16;281:23;;324:6;374:3;366:4;358:6;354:17;349:3;345:27;342:36;339:2;;;391:1;388;381:12;339:2;419:1;404:236;429:6;426:1;423:13;404:236;;;496:3;524:37;557:3;545:10;524:37;:::i;:::-;519:3;512:50;591:4;586:3;582:14;575:21;;625:4;620:3;616:14;609:21;;464:176;451:1;448;444:9;439:14;;404:236;;;408:14;126:520;;;;;;;:::o;652:139::-;;736:6;723:20;714:29;;752:33;779:5;752:33;:::i;:::-;704:87;;;;:::o;814:303::-;;934:3;927:4;919:6;915:17;911:27;901:2;;952:1;949;942:12;901:2;992:6;979:20;1017:94;1107:3;1099:6;1092:4;1084:6;1080:17;1017:94;:::i;:::-;1008:103;;891:226;;;;;:::o;1123:133::-;;1204:6;1191:20;1182:29;;1220:30;1244:5;1220:30;:::i;:::-;1172:84;;;;:::o;1262:137::-;;1347:6;1341:13;1332:22;;1363:30;1387:5;1363:30;:::i;:::-;1322:77;;;;:::o;1405:139::-;;1489:6;1476:20;1467:29;;1505:33;1532:5;1505:33;:::i;:::-;1457:87;;;;:::o;1550:143::-;;1638:6;1632:13;1623:22;;1654:33;1681:5;1654:33;:::i;:::-;1613:80;;;;:::o;1699:262::-;;1807:2;1795:9;1786:7;1782:23;1778:32;1775:2;;;1823:1;1820;1813:12;1775:2;1866:1;1891:53;1936:7;1927:6;1916:9;1912:22;1891:53;:::i;:::-;1881:63;;1837:117;1765:196;;;;:::o;1967:407::-;;;2092:2;2080:9;2071:7;2067:23;2063:32;2060:2;;;2108:1;2105;2098:12;2060:2;2151:1;2176:53;2221:7;2212:6;2201:9;2197:22;2176:53;:::i;:::-;2166:63;;2122:117;2278:2;2304:53;2349:7;2340:6;2329:9;2325:22;2304:53;:::i;:::-;2294:63;;2249:118;2050:324;;;;;:::o;2380:552::-;;;;2522:2;2510:9;2501:7;2497:23;2493:32;2490:2;;;2538:1;2535;2528:12;2490:2;2581:1;2606:53;2651:7;2642:6;2631:9;2627:22;2606:53;:::i;:::-;2596:63;;2552:117;2708:2;2734:53;2779:7;2770:6;2759:9;2755:22;2734:53;:::i;:::-;2724:63;;2679:118;2836:2;2862:53;2907:7;2898:6;2887:9;2883:22;2862:53;:::i;:::-;2852:63;;2807:118;2480:452;;;;;:::o;2938:401::-;;;3060:2;3048:9;3039:7;3035:23;3031:32;3028:2;;;3076:1;3073;3066:12;3028:2;3119:1;3144:53;3189:7;3180:6;3169:9;3165:22;3144:53;:::i;:::-;3134:63;;3090:117;3246:2;3272:50;3314:7;3305:6;3294:9;3290:22;3272:50;:::i;:::-;3262:60;;3217:115;3018:321;;;;;:::o;3345:407::-;;;3470:2;3458:9;3449:7;3445:23;3441:32;3438:2;;;3486:1;3483;3476:12;3438:2;3529:1;3554:53;3599:7;3590:6;3579:9;3575:22;3554:53;:::i;:::-;3544:63;;3500:117;3656:2;3682:53;3727:7;3718:6;3707:9;3703:22;3682:53;:::i;:::-;3672:63;;3627:118;3428:324;;;;;:::o;3758:544::-;;;3905:2;3893:9;3884:7;3880:23;3876:32;3873:2;;;3921:1;3918;3911:12;3873:2;3992:1;3981:9;3977:17;3964:31;4022:18;4014:6;4011:30;4008:2;;;4054:1;4051;4044:12;4008:2;4082:78;4152:7;4143:6;4132:9;4128:22;4082:78;:::i;:::-;4072:88;;3935:235;4209:2;4235:50;4277:7;4268:6;4257:9;4253:22;4235:50;:::i;:::-;4225:60;;4180:115;3863:439;;;;;:::o;4308:550::-;;;4458:2;4446:9;4437:7;4433:23;4429:32;4426:2;;;4474:1;4471;4464:12;4426:2;4545:1;4534:9;4530:17;4517:31;4575:18;4567:6;4564:30;4561:2;;;4607:1;4604;4597:12;4561:2;4635:78;4705:7;4696:6;4685:9;4681:22;4635:78;:::i;:::-;4625:88;;4488:235;4762:2;4788:53;4833:7;4824:6;4813:9;4809:22;4788:53;:::i;:::-;4778:63;;4733:118;4416:442;;;;;:::o;4864:278::-;;4980:2;4968:9;4959:7;4955:23;4951:32;4948:2;;;4996:1;4993;4986:12;4948:2;5039:1;5064:61;5117:7;5108:6;5097:9;5093:22;5064:61;:::i;:::-;5054:71;;5010:125;4938:204;;;;:::o;5148:262::-;;5256:2;5244:9;5235:7;5231:23;5227:32;5224:2;;;5272:1;5269;5262:12;5224:2;5315:1;5340:53;5385:7;5376:6;5365:9;5361:22;5340:53;:::i;:::-;5330:63;;5286:117;5214:196;;;;:::o;5416:284::-;;5535:2;5523:9;5514:7;5510:23;5506:32;5503:2;;;5551:1;5548;5541:12;5503:2;5594:1;5619:64;5675:7;5666:6;5655:9;5651:22;5619:64;:::i;:::-;5609:74;;5565:128;5493:207;;;;:::o;5706:118::-;5793:24;5811:5;5793:24;:::i;:::-;5788:3;5781:37;5771:53;;:::o;5830:109::-;5911:21;5926:5;5911:21;:::i;:::-;5906:3;5899:34;5889:50;;:::o;5945:364::-;;6061:39;6094:5;6061:39;:::i;:::-;6116:71;6180:6;6175:3;6116:71;:::i;:::-;6109:78;;6196:52;6241:6;6236:3;6229:4;6222:5;6218:16;6196:52;:::i;:::-;6273:29;6295:6;6273:29;:::i;:::-;6268:3;6264:39;6257:46;;6037:272;;;;;:::o;6315:367::-;;6478:67;6542:2;6537:3;6478:67;:::i;:::-;6471:74;;6575:34;6571:1;6566:3;6562:11;6555:55;6641:5;6636:2;6631:3;6627:12;6620:27;6673:2;6668:3;6664:12;6657:19;;6461:221;;;:::o;6688:322::-;;6851:67;6915:2;6910:3;6851:67;:::i;:::-;6844:74;;6948:26;6944:1;6939:3;6935:11;6928:47;7001:2;6996:3;6992:12;6985:19;;6834:176;;;:::o;7016:315::-;;7179:67;7243:2;7238:3;7179:67;:::i;:::-;7172:74;;7276:19;7272:1;7267:3;7263:11;7256:40;7322:2;7317:3;7313:12;7306:19;;7162:169;;;:::o;7337:319::-;;7500:67;7564:2;7559:3;7500:67;:::i;:::-;7493:74;;7597:23;7593:1;7588:3;7584:11;7577:44;7647:2;7642:3;7638:12;7631:19;;7483:173;;;:::o;7662:370::-;;7825:67;7889:2;7884:3;7825:67;:::i;:::-;7818:74;;7922:34;7918:1;7913:3;7909:11;7902:55;7988:8;7983:2;7978:3;7974:12;7967:30;8023:2;8018:3;8014:12;8007:19;;7808:224;;;:::o;8038:366::-;;8201:67;8265:2;8260:3;8201:67;:::i;:::-;8194:74;;8298:34;8294:1;8289:3;8285:11;8278:55;8364:4;8359:2;8354:3;8350:12;8343:26;8395:2;8390:3;8386:12;8379:19;;8184:220;;;:::o;8410:322::-;;8573:67;8637:2;8632:3;8573:67;:::i;:::-;8566:74;;8670:26;8666:1;8661:3;8657:11;8650:47;8723:2;8718:3;8714:12;8707:19;;8556:176;;;:::o;8738:370::-;;8901:67;8965:2;8960:3;8901:67;:::i;:::-;8894:74;;8998:34;8994:1;8989:3;8985:11;8978:55;9064:8;9059:2;9054:3;9050:12;9043:30;9099:2;9094:3;9090:12;9083:19;;8884:224;;;:::o;9114:318::-;;9277:67;9341:2;9336:3;9277:67;:::i;:::-;9270:74;;9374:22;9370:1;9365:3;9361:11;9354:43;9423:2;9418:3;9414:12;9407:19;;9260:172;;;:::o;9438:327::-;;9601:67;9665:2;9660:3;9601:67;:::i;:::-;9594:74;;9698:31;9694:1;9689:3;9685:11;9678:52;9756:2;9751:3;9747:12;9740:19;;9584:181;;;:::o;9771:387::-;;9934:67;9998:2;9993:3;9934:67;:::i;:::-;9927:74;;10031:34;10027:1;10022:3;10018:11;10011:55;10097:25;10092:2;10087:3;10083:12;10076:47;10149:2;10144:3;10140:12;10133:19;;9917:241;;;:::o;10164:372::-;;10327:67;10391:2;10386:3;10327:67;:::i;:::-;10320:74;;10424:34;10420:1;10415:3;10411:11;10404:55;10490:10;10485:2;10480:3;10476:12;10469:32;10527:2;10522:3;10518:12;10511:19;;10310:226;;;:::o;10542:330::-;;10705:67;10769:2;10764:3;10705:67;:::i;:::-;10698:74;;10802:34;10798:1;10793:3;10789:11;10782:55;10863:2;10858:3;10854:12;10847:19;;10688:184;;;:::o;10878:322::-;;11041:67;11105:2;11100:3;11041:67;:::i;:::-;11034:74;;11138:26;11134:1;11129:3;11125:11;11118:47;11191:2;11186:3;11182:12;11175:19;;11024:176;;;:::o;11206:369::-;;11369:67;11433:2;11428:3;11369:67;:::i;:::-;11362:74;;11466:34;11462:1;11457:3;11453:11;11446:55;11532:7;11527:2;11522:3;11518:12;11511:29;11566:2;11561:3;11557:12;11550:19;;11352:223;;;:::o;11581:297::-;;11761:83;11842:1;11837:3;11761:83;:::i;:::-;11754:90;;11870:1;11865:3;11861:11;11854:18;;11744:134;;;:::o;11884:368::-;;12047:67;12111:2;12106:3;12047:67;:::i;:::-;12040:74;;12144:34;12140:1;12135:3;12131:11;12124:55;12210:6;12205:2;12200:3;12196:12;12189:28;12243:2;12238:3;12234:12;12227:19;;12030:222;;;:::o;12258:311::-;;12421:67;12485:2;12480:3;12421:67;:::i;:::-;12414:74;;12518:15;12514:1;12509:3;12505:11;12498:36;12560:2;12555:3;12551:12;12544:19;;12404:165;;;:::o;12575:369::-;;12738:67;12802:2;12797:3;12738:67;:::i;:::-;12731:74;;12835:34;12831:1;12826:3;12822:11;12815:55;12901:7;12896:2;12891:3;12887:12;12880:29;12935:2;12930:3;12926:12;12919:19;;12721:223;;;:::o;12950:118::-;13037:24;13055:5;13037:24;:::i;:::-;13032:3;13025:37;13015:53;;:::o;13074:112::-;13157:22;13173:5;13157:22;:::i;:::-;13152:3;13145:35;13135:51;;:::o;13192:379::-;;13398:147;13541:3;13398:147;:::i;:::-;13391:154;;13562:3;13555:10;;13380:191;;;:::o;13577:222::-;;13708:2;13697:9;13693:18;13685:26;;13721:71;13789:1;13778:9;13774:17;13765:6;13721:71;:::i;:::-;13675:124;;;;:::o;13805:332::-;;13964:2;13953:9;13949:18;13941:26;;13977:71;14045:1;14034:9;14030:17;14021:6;13977:71;:::i;:::-;14058:72;14126:2;14115:9;14111:18;14102:6;14058:72;:::i;:::-;13931:206;;;;;:::o;14143:210::-;;14268:2;14257:9;14253:18;14245:26;;14281:65;14343:1;14332:9;14328:17;14319:6;14281:65;:::i;:::-;14235:118;;;;:::o;14359:313::-;;14510:2;14499:9;14495:18;14487:26;;14559:9;14553:4;14549:20;14545:1;14534:9;14530:17;14523:47;14587:78;14660:4;14651:6;14587:78;:::i;:::-;14579:86;;14477:195;;;;:::o;14678:419::-;;14882:2;14871:9;14867:18;14859:26;;14931:9;14925:4;14921:20;14917:1;14906:9;14902:17;14895:47;14959:131;15085:4;14959:131;:::i;:::-;14951:139;;14849:248;;;:::o;15103:419::-;;15307:2;15296:9;15292:18;15284:26;;15356:9;15350:4;15346:20;15342:1;15331:9;15327:17;15320:47;15384:131;15510:4;15384:131;:::i;:::-;15376:139;;15274:248;;;:::o;15528:419::-;;15732:2;15721:9;15717:18;15709:26;;15781:9;15775:4;15771:20;15767:1;15756:9;15752:17;15745:47;15809:131;15935:4;15809:131;:::i;:::-;15801:139;;15699:248;;;:::o;15953:419::-;;16157:2;16146:9;16142:18;16134:26;;16206:9;16200:4;16196:20;16192:1;16181:9;16177:17;16170:47;16234:131;16360:4;16234:131;:::i;:::-;16226:139;;16124:248;;;:::o;16378:419::-;;16582:2;16571:9;16567:18;16559:26;;16631:9;16625:4;16621:20;16617:1;16606:9;16602:17;16595:47;16659:131;16785:4;16659:131;:::i;:::-;16651:139;;16549:248;;;:::o;16803:419::-;;17007:2;16996:9;16992:18;16984:26;;17056:9;17050:4;17046:20;17042:1;17031:9;17027:17;17020:47;17084:131;17210:4;17084:131;:::i;:::-;17076:139;;16974:248;;;:::o;17228:419::-;;17432:2;17421:9;17417:18;17409:26;;17481:9;17475:4;17471:20;17467:1;17456:9;17452:17;17445:47;17509:131;17635:4;17509:131;:::i;:::-;17501:139;;17399:248;;;:::o;17653:419::-;;17857:2;17846:9;17842:18;17834:26;;17906:9;17900:4;17896:20;17892:1;17881:9;17877:17;17870:47;17934:131;18060:4;17934:131;:::i;:::-;17926:139;;17824:248;;;:::o;18078:419::-;;18282:2;18271:9;18267:18;18259:26;;18331:9;18325:4;18321:20;18317:1;18306:9;18302:17;18295:47;18359:131;18485:4;18359:131;:::i;:::-;18351:139;;18249:248;;;:::o;18503:419::-;;18707:2;18696:9;18692:18;18684:26;;18756:9;18750:4;18746:20;18742:1;18731:9;18727:17;18720:47;18784:131;18910:4;18784:131;:::i;:::-;18776:139;;18674:248;;;:::o;18928:419::-;;19132:2;19121:9;19117:18;19109:26;;19181:9;19175:4;19171:20;19167:1;19156:9;19152:17;19145:47;19209:131;19335:4;19209:131;:::i;:::-;19201:139;;19099:248;;;:::o;19353:419::-;;19557:2;19546:9;19542:18;19534:26;;19606:9;19600:4;19596:20;19592:1;19581:9;19577:17;19570:47;19634:131;19760:4;19634:131;:::i;:::-;19626:139;;19524:248;;;:::o;19778:419::-;;19982:2;19971:9;19967:18;19959:26;;20031:9;20025:4;20021:20;20017:1;20006:9;20002:17;19995:47;20059:131;20185:4;20059:131;:::i;:::-;20051:139;;19949:248;;;:::o;20203:419::-;;20407:2;20396:9;20392:18;20384:26;;20456:9;20450:4;20446:20;20442:1;20431:9;20427:17;20420:47;20484:131;20610:4;20484:131;:::i;:::-;20476:139;;20374:248;;;:::o;20628:419::-;;20832:2;20821:9;20817:18;20809:26;;20881:9;20875:4;20871:20;20867:1;20856:9;20852:17;20845:47;20909:131;21035:4;20909:131;:::i;:::-;20901:139;;20799:248;;;:::o;21053:419::-;;21257:2;21246:9;21242:18;21234:26;;21306:9;21300:4;21296:20;21292:1;21281:9;21277:17;21270:47;21334:131;21460:4;21334:131;:::i;:::-;21326:139;;21224:248;;;:::o;21478:419::-;;21682:2;21671:9;21667:18;21659:26;;21731:9;21725:4;21721:20;21717:1;21706:9;21702:17;21695:47;21759:131;21885:4;21759:131;:::i;:::-;21751:139;;21649:248;;;:::o;21903:419::-;;22107:2;22096:9;22092:18;22084:26;;22156:9;22150:4;22146:20;22142:1;22131:9;22127:17;22120:47;22184:131;22310:4;22184:131;:::i;:::-;22176:139;;22074:248;;;:::o;22328:222::-;;22459:2;22448:9;22444:18;22436:26;;22472:71;22540:1;22529:9;22525:17;22516:6;22472:71;:::i;:::-;22426:124;;;;:::o;22556:214::-;;22683:2;22672:9;22668:18;22660:26;;22696:67;22760:1;22749:9;22745:17;22736:6;22696:67;:::i;:::-;22650:120;;;;:::o;22776:283::-;;22842:2;22836:9;22826:19;;22884:4;22876:6;22872:17;22991:6;22979:10;22976:22;22955:18;22943:10;22940:34;22937:62;22934:2;;;23002:18;;:::i;:::-;22934:2;23042:10;23038:2;23031:22;22816:243;;;;:::o;23065:311::-;;23232:18;23224:6;23221:30;23218:2;;;23254:18;;:::i;:::-;23218:2;23304:4;23296:6;23292:17;23284:25;;23364:4;23358;23354:15;23346:23;;23147:229;;;:::o;23382:99::-;;23468:5;23462:12;23452:22;;23441:40;;;:::o;23487:147::-;;23625:3;23610:18;;23600:34;;;;:::o;23640:169::-;;23758:6;23753:3;23746:19;23798:4;23793:3;23789:14;23774:29;;23736:73;;;;:::o;23815:305::-;;23874:20;23892:1;23874:20;:::i;:::-;23869:25;;23908:20;23926:1;23908:20;:::i;:::-;23903:25;;24062:1;23994:66;23990:74;23987:1;23984:81;23981:2;;;24068:18;;:::i;:::-;23981:2;24112:1;24109;24105:9;24098:16;;23859:261;;;;:::o;24126:185::-;;24183:20;24201:1;24183:20;:::i;:::-;24178:25;;24217:20;24235:1;24217:20;:::i;:::-;24212:25;;24256:1;24246:2;;24261:18;;:::i;:::-;24246:2;24303:1;24300;24296:9;24291:14;;24168:143;;;;:::o;24317:348::-;;24380:20;24398:1;24380:20;:::i;:::-;24375:25;;24414:20;24432:1;24414:20;:::i;:::-;24409:25;;24602:1;24534:66;24530:74;24527:1;24524:81;24519:1;24512:9;24505:17;24501:105;24498:2;;;24609:18;;:::i;:::-;24498:2;24657:1;24654;24650:9;24639:20;;24365:300;;;;:::o;24671:191::-;;24731:20;24749:1;24731:20;:::i;:::-;24726:25;;24765:20;24783:1;24765:20;:::i;:::-;24760:25;;24804:1;24801;24798:8;24795:2;;;24809:18;;:::i;:::-;24795:2;24854:1;24851;24847:9;24839:17;;24716:146;;;;:::o;24868:96::-;;24934:24;24952:5;24934:24;:::i;:::-;24923:35;;24913:51;;;:::o;24970:90::-;;25047:5;25040:13;25033:21;25022:32;;25012:48;;;:::o;25066:126::-;;25143:42;25136:5;25132:54;25121:65;;25111:81;;;:::o;25198:77::-;;25264:5;25253:16;;25243:32;;;:::o;25281:86::-;;25356:4;25349:5;25345:16;25334:27;;25324:43;;;:::o;25373:307::-;25441:1;25451:113;25465:6;25462:1;25459:13;25451:113;;;25550:1;25545:3;25541:11;25535:18;25531:1;25526:3;25522:11;25515:39;25487:2;25484:1;25480:10;25475:15;;25451:113;;;25582:6;25579:1;25576:13;25573:2;;;25662:1;25653:6;25648:3;25644:16;25637:27;25573:2;25422:258;;;;:::o;25686:320::-;;25767:1;25761:4;25757:12;25747:22;;25814:1;25808:4;25804:12;25835:18;25825:2;;25891:4;25883:6;25879:17;25869:27;;25825:2;25953;25945:6;25942:14;25922:18;25919:38;25916:2;;;25972:18;;:::i;:::-;25916:2;25737:269;;;;:::o;26012:233::-;;26074:24;26092:5;26074:24;:::i;:::-;26065:33;;26120:66;26113:5;26110:77;26107:2;;;26190:18;;:::i;:::-;26107:2;26237:1;26230:5;26226:13;26219:20;;26055:190;;;:::o;26251:180::-;26299:77;26296:1;26289:88;26396:4;26393:1;26386:15;26420:4;26417:1;26410:15;26437:180;26485:77;26482:1;26475:88;26582:4;26579:1;26572:15;26606:4;26603:1;26596:15;26623:180;26671:77;26668:1;26661:88;26768:4;26765:1;26758:15;26792:4;26789:1;26782:15;26809:180;26857:77;26854:1;26847:88;26954:4;26951:1;26944:15;26978:4;26975:1;26968:15;26995:102;;27087:2;27083:7;27078:2;27071:5;27067:14;27063:28;27053:38;;27043:54;;;:::o;27103:122::-;27176:24;27194:5;27176:24;:::i;:::-;27169:5;27166:35;27156:2;;27215:1;27212;27205:12;27156:2;27146:79;:::o;27231:116::-;27301:21;27316:5;27301:21;:::i;:::-;27294:5;27291:32;27281:2;;27337:1;27334;27327:12;27281:2;27271:76;:::o;27353:122::-;27426:24;27444:5;27426:24;:::i;:::-;27419:5;27416:35;27406:2;;27465:1;27462;27455:12;27406:2;27396:79;:::o

Swarm Source

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