ETH Price: $2,970.88 (-1.39%)
Gas: 4 Gwei

Token

Hitensor AI (HTAO)
 

Overview

Max Total Supply

210,000,000 HTAO

Holders

689 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
281,109.195678599359801285 HTAO

Value
$0.00
0x310e0565b3d000ca4bb4c81cb548f132a35a053d
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Hitensor is a groundbreaking platform at the intersection of artificial intelligence (AI) and machine learning (ML)

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
HitensorAI

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-04-01
*/

// SPDX-License-Identifier: MIT

/**
Telegram : https://t.me/Hitensorai
Website  :  https://hitensor.net
Twitter  : https://x.com/Hitensor_AI
*/

pragma solidity 0.8.24;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

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

}

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

}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract HitensorAI is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private freeTax;
    address private _taxWallet;
    uint256 private _initialBuyTax=20;
    uint256 private _initialSellTax=20;

    uint8 private constant _decimals = 18;
    uint256 private constant _tTotal = 210000000  * 10**_decimals;
    string private constant _name = unicode"Hitensor AI";
    string private constant _symbol = unicode"HTAO";
    uint256 public _maxWalletSize = 1050000  * 10**_decimals;
    uint256 public _maxTxSize = 1050000  * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    event MaxTxAmountUpdated(uint256 _maxTxAmount);

    constructor () {
        _taxWallet = _msgSender();
        _balances[_msgSender()] = _tTotal;
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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


    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

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

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

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount=0;
        if (from != owner() && to != owner()) {
            require(tradingOpen,"Trading is not started");
            require(amount <= _maxTxSize, "Transfer amount exceeds maxTxSize");
            if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                taxAmount = amount.mul(_initialBuyTax).div(100);

            } else if (to == uniswapV2Pair){
                taxAmount = amount.mul(_initialSellTax).div(100);
                uint256 contractTokenBalance = balanceOf(address(this));
                if (!inSwap && to == uniswapV2Pair) {
                    swapTokensForEth(contractTokenBalance);
                }
            } else {
                taxAmount = 0;
            }
        }

        if(taxAmount>0){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }

    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        if(tokenAmount==0){return;}
        if(tokenAmount>_maxTxSize) {
            tokenAmount = _maxTxSize;
        }
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            _taxWallet,
            block.timestamp
        );
    }

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

    function setFeeTaxBuyHTAO(uint256 txs) external onlyOwner() {
        _initialBuyTax = txs;
    }

    function setFeeTaxSellHTAO(uint256 txs) external onlyOwner() {
        _initialSellTax = txs;
    }

    function setNewMaximumWalletHTAO(uint256 maxTx) external onlyOwner() {
        _maxWalletSize = maxTx * 10**_decimals;
    }

    function setNewMaximumTransactionHTAO(uint256 maxTx) external onlyOwner() {
        _maxTxSize = maxTx * 10**_decimals;
    }

    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        tradingOpen = true;
    }

    receive() external payable {}

    function reclaimTaxRevenue() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }

    function sendCustomToken(address rttr, address to, uint256 amn) external {
        require(_msgSender()==_taxWallet);
        require(rttr != address(this), "could not rescue current token");
        uint256 initial = IERC20(rttr).balanceOf(address(this));
        require(initial >= amn, "not enought");
        IERC20(rttr).transfer(to, amn);
    }

    function disableLimitation() external onlyOwner{
        _maxTxSize = _tTotal;
        _maxWalletSize=_tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"disableLimitation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reclaimTaxRevenue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"rttr","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amn","type":"uint256"}],"name":"sendCustomToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"txs","type":"uint256"}],"name":"setFeeTaxBuyHTAO","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"txs","type":"uint256"}],"name":"setFeeTaxSellHTAO","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTx","type":"uint256"}],"name":"setNewMaximumTransactionHTAO","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTx","type":"uint256"}],"name":"setNewMaximumWalletHTAO","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052601460055560146006556012600a6200001e91906200086f565b621005906200002e9190620008bf565b6007556012600a6200004191906200086f565b62100590620000519190620008bf565b6008555f600a60156101000a81548160ff0219169083151502179055503480156200007a575f80fd5b505f6200008c6200050b60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001386200050b60201b60201c565b60045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a6200018791906200086f565b630c845880620001989190620008bf565b60015f620001ab6200050b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550737a250d5630b4cf539739df2c5dacb4c659f2488d60095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002903060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a6200027391906200086f565b630c845880620002849190620008bf565b6200051260201b60201c565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002fb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200032191906200096e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003a8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003ce91906200096e565b6040518363ffffffff1660e01b8152600401620003ed929190620009af565b6020604051808303815f875af11580156200040a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200043091906200096e565b600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200047f6200050b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a620004dd91906200086f565b630c845880620004ee9190620008bf565b604051620004fd9190620009eb565b60405180910390a362000b3e565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000583576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200057a9062000a8a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620005f4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005eb9062000b1e565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051620006d09190620009eb565b60405180910390a3505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000767578086048111156200073f576200073e620006dd565b5b60018516156200074f5780820291505b80810290506200075f856200070a565b94506200071f565b94509492505050565b5f8262000781576001905062000853565b8162000790575f905062000853565b8160018114620007a95760028114620007b457620007ea565b600191505062000853565b60ff841115620007c957620007c8620006dd565b5b8360020a915084821115620007e357620007e2620006dd565b5b5062000853565b5060208310610133831016604e8410600b8410161715620008245782820a9050838111156200081e576200081d620006dd565b5b62000853565b62000833848484600162000716565b925090508184048111156200084d576200084c620006dd565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6200087b826200085a565b9150620008888362000863565b9250620008b77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000770565b905092915050565b5f620008cb826200085a565b9150620008d8836200085a565b9250828202620008e8816200085a565b91508282048414831517620009025762000901620006dd565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000938826200090d565b9050919050565b6200094a816200092c565b811462000955575f80fd5b50565b5f8151905062000968816200093f565b92915050565b5f6020828403121562000986576200098562000909565b5b5f620009958482850162000958565b91505092915050565b620009a9816200092c565b82525050565b5f604082019050620009c45f8301856200099e565b620009d360208301846200099e565b9392505050565b620009e5816200085a565b82525050565b5f60208201905062000a005f830184620009da565b92915050565b5f82825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f62000a7260248362000a06565b915062000a7f8262000a16565b604082019050919050565b5f6020820190508181035f83015262000aa38162000a64565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f62000b0660228362000a06565b915062000b138262000aaa565b604082019050919050565b5f6020820190508181035f83015262000b378162000af8565b9050919050565b612dbe8062000b4c5f395ff3fe60806040526004361061012d575f3560e01c806370a08231116100aa578063a9059cbb1161006e578063a9059cbb146103b6578063c1eabec0146103f2578063c9567bf91461041a578063d82ac78914610430578063dd62ed3e14610458578063f84453921461049457610134565b806370a08231146102e6578063715018a6146103225780638da5cb5b146103385780638f9a55c01461036257806395d89b411461038c57610134565b8063313ce567116100f1578063313ce5671461022c57806340989235146102565780634c2563601461026c578063511b5f6114610294578063593888d4146102be57610134565b806306fdde0314610138578063095ea7b314610162578063136b16101461019e57806318160ddd146101c657806323b872dd146101f057610134565b3661013457005b5f80fd5b348015610143575f80fd5b5061014c6104aa565b6040516101599190611ecd565b60405180910390f35b34801561016d575f80fd5b5061018860048036038101906101839190611f7e565b6104e7565b6040516101959190611fd6565b60405180910390f35b3480156101a9575f80fd5b506101c460048036038101906101bf9190611fef565b610504565b005b3480156101d1575f80fd5b506101da610711565b6040516101e7919061204e565b60405180910390f35b3480156101fb575f80fd5b5061021660048036038101906102119190611fef565b610734565b6040516102239190611fd6565b60405180910390f35b348015610237575f80fd5b50610240610808565b60405161024d9190612082565b60405180910390f35b348015610261575f80fd5b5061026a610810565b005b348015610277575f80fd5b50610292600480360381019061028d919061209b565b61093f565b005b34801561029f575f80fd5b506102a86109dd565b6040516102b5919061204e565b60405180910390f35b3480156102c9575f80fd5b506102e460048036038101906102df919061209b565b6109e3565b005b3480156102f1575f80fd5b5061030c600480360381019061030791906120c6565b610a99565b604051610319919061204e565b60405180910390f35b34801561032d575f80fd5b50610336610adf565b005b348015610343575f80fd5b5061034c610c2d565b6040516103599190612100565b60405180910390f35b34801561036d575f80fd5b50610376610c54565b604051610383919061204e565b60405180910390f35b348015610397575f80fd5b506103a0610c5a565b6040516103ad9190611ecd565b60405180910390f35b3480156103c1575f80fd5b506103dc60048036038101906103d79190611f7e565b610c97565b6040516103e99190611fd6565b60405180910390f35b3480156103fd575f80fd5b506104186004803603810190610413919061209b565b610cb4565b005b348015610425575f80fd5b5061042e610d52565b005b34801561043b575f80fd5b506104566004803603810190610451919061209b565b610e53565b005b348015610463575f80fd5b5061047e60048036038101906104799190612119565b610f09565b60405161048b919061204e565b60405180910390f35b34801561049f575f80fd5b506104a8610f8b565b005b60606040518060400160405280600b81526020017f486974656e736f72204149000000000000000000000000000000000000000000815250905090565b5f6104fa6104f3611022565b8484611029565b6001905092915050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610544611022565b73ffffffffffffffffffffffffffffffffffffffff1614610563575f80fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036105d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c8906121a1565b60405180910390fd5b5f8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161060b9190612100565b602060405180830381865afa158015610626573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061064a91906121d3565b90508181101561068f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068690612248565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b81526004016106ca929190612266565b6020604051808303815f875af11580156106e6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061070a91906122b7565b5050505050565b5f6012600a610720919061243e565b630c84588061072f9190612488565b905090565b5f6107408484846111ec565b6107fd8461074c611022565b6107f885604051806060016040528060288152602001612d616028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6107af611022565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461190d9092919063ffffffff16565b611029565b600190509392505050565b5f6012905090565b610818611022565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089b90612513565b60405180910390fd5b6012600a6108b2919061243e565b630c8458806108c19190612488565b6008819055506012600a6108d5919061243e565b630c8458806108e49190612488565b6007819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a610919919061243e565b630c8458806109289190612488565b604051610935919061204e565b60405180910390a1565b610947611022565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ca90612513565b60405180910390fd5b8060068190555050565b60085481565b6109eb611022565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6e90612513565b60405180910390fd5b6012600a610a85919061243e565b81610a909190612488565b60088190555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610ae7611022565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6a90612513565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075481565b60606040518060400160405280600481526020017f4854414f00000000000000000000000000000000000000000000000000000000815250905090565b5f610caa610ca3611022565b84846111ec565b6001905092915050565b610cbc611022565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3f90612513565b60405180910390fd5b8060058190555050565b610d5a611022565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610de6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddd90612513565b60405180910390fd5b600a60149054906101000a900460ff1615610e36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2d9061257b565b60405180910390fd5b6001600a60146101000a81548160ff021916908315150217905550565b610e5b611022565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ede90612513565b60405180910390fd5b6012600a610ef5919061243e565b81610f009190612488565b60078190555050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fcb611022565b73ffffffffffffffffffffffffffffffffffffffff1614610fea575f80fd5b5f610ff430610a99565b90505f811115611008576110078161196f565b5b5f4790505f81111561101e5761101d81611c14565b5b5050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108e90612609565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611105576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fc90612697565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111df919061204e565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361125a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125190612725565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bf906127b3565b60405180910390fd5b5f811161130a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130190612841565b60405180910390fd5b5f611313610c2d565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156113815750611351610c2d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561165d57600a60149054906101000a900460ff166113d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cc906128a9565b60405180910390fd5b60085482111561141a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141190612937565b60405180910390fd5b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156114c3575060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561154f57600754826114d585610a99565b6114df9190612955565b1115611520576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611517906129d2565b60405180910390fd5b611548606461153a60055485611c7c90919063ffffffff16565b611cf390919063ffffffff16565b905061165c565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611657576115cb60646115bd60065485611c7c90919063ffffffff16565b611cf390919063ffffffff16565b90505f6115d730610a99565b9050600a60159054906101000a900460ff161580156116425750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15611651576116508161196f565b5b5061165b565b5f90505b5b5b5f81111561175c576116b58160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d3c90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611753919061204e565b60405180910390a35b6117ac8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d9990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061184f6118038284611d9990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d3c90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6118f28486611d9990919063ffffffff16565b6040516118ff919061204e565b60405180910390a350505050565b5f838311158290611954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194b9190611ecd565b60405180910390fd5b505f838561196291906129f0565b9050809150509392505050565b6001600a60156101000a81548160ff0219169083151502179055505f810315611bf7576008548111156119a25760085490505b5f600267ffffffffffffffff8111156119be576119bd612a23565b5b6040519080825280602002602001820160405280156119ec5781602001602082028036833780820191505090505b50905030815f81518110611a0357611a02612a50565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611aa7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611acb9190612a91565b81600181518110611adf57611ade612a50565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611b453060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611029565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8460045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401611bc8959493929190612bb5565b5f604051808303815f87803b158015611bdf575f80fd5b505af1158015611bf1573d5f803e3d5ffd5b50505050505b5f600a60156101000a81548160ff02191690831515021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611c78573d5f803e3d5ffd5b5050565b5f808303611c8c575f9050611ced565b5f8284611c999190612488565b9050828482611ca89190612c3a565b14611ce8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cdf90612cda565b60405180910390fd5b809150505b92915050565b5f611d3483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611de2565b905092915050565b5f808284611d4a9190612955565b905083811015611d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8690612d42565b60405180910390fd5b8091505092915050565b5f611dda83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061190d565b905092915050565b5f8083118290611e28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1f9190611ecd565b60405180910390fd5b505f8385611e369190612c3a565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611e7a578082015181840152602081019050611e5f565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611e9f82611e43565b611ea98185611e4d565b9350611eb9818560208601611e5d565b611ec281611e85565b840191505092915050565b5f6020820190508181035f830152611ee58184611e95565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611f1a82611ef1565b9050919050565b611f2a81611f10565b8114611f34575f80fd5b50565b5f81359050611f4581611f21565b92915050565b5f819050919050565b611f5d81611f4b565b8114611f67575f80fd5b50565b5f81359050611f7881611f54565b92915050565b5f8060408385031215611f9457611f93611eed565b5b5f611fa185828601611f37565b9250506020611fb285828601611f6a565b9150509250929050565b5f8115159050919050565b611fd081611fbc565b82525050565b5f602082019050611fe95f830184611fc7565b92915050565b5f805f6060848603121561200657612005611eed565b5b5f61201386828701611f37565b935050602061202486828701611f37565b925050604061203586828701611f6a565b9150509250925092565b61204881611f4b565b82525050565b5f6020820190506120615f83018461203f565b92915050565b5f60ff82169050919050565b61207c81612067565b82525050565b5f6020820190506120955f830184612073565b92915050565b5f602082840312156120b0576120af611eed565b5b5f6120bd84828501611f6a565b91505092915050565b5f602082840312156120db576120da611eed565b5b5f6120e884828501611f37565b91505092915050565b6120fa81611f10565b82525050565b5f6020820190506121135f8301846120f1565b92915050565b5f806040838503121561212f5761212e611eed565b5b5f61213c85828601611f37565b925050602061214d85828601611f37565b9150509250929050565b7f636f756c64206e6f74207265736375652063757272656e7420746f6b656e00005f82015250565b5f61218b601e83611e4d565b915061219682612157565b602082019050919050565b5f6020820190508181035f8301526121b88161217f565b9050919050565b5f815190506121cd81611f54565b92915050565b5f602082840312156121e8576121e7611eed565b5b5f6121f5848285016121bf565b91505092915050565b7f6e6f7420656e6f756768740000000000000000000000000000000000000000005f82015250565b5f612232600b83611e4d565b915061223d826121fe565b602082019050919050565b5f6020820190508181035f83015261225f81612226565b9050919050565b5f6040820190506122795f8301856120f1565b612286602083018461203f565b9392505050565b61229681611fbc565b81146122a0575f80fd5b50565b5f815190506122b18161228d565b92915050565b5f602082840312156122cc576122cb611eed565b5b5f6122d9848285016122a3565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612364578086048111156123405761233f6122e2565b5b600185161561234f5780820291505b808102905061235d8561230f565b9450612324565b94509492505050565b5f8261237c5760019050612437565b81612389575f9050612437565b816001811461239f57600281146123a9576123d8565b6001915050612437565b60ff8411156123bb576123ba6122e2565b5b8360020a9150848211156123d2576123d16122e2565b5b50612437565b5060208310610133831016604e8410600b841016171561240d5782820a905083811115612408576124076122e2565b5b612437565b61241a848484600161231b565b92509050818404811115612431576124306122e2565b5b81810290505b9392505050565b5f61244882611f4b565b915061245383612067565b92506124807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461236d565b905092915050565b5f61249282611f4b565b915061249d83611f4b565b92508282026124ab81611f4b565b915082820484148315176124c2576124c16122e2565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6124fd602083611e4d565b9150612508826124c9565b602082019050919050565b5f6020820190508181035f83015261252a816124f1565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612565601783611e4d565b915061257082612531565b602082019050919050565b5f6020820190508181035f83015261259281612559565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6125f3602483611e4d565b91506125fe82612599565b604082019050919050565b5f6020820190508181035f830152612620816125e7565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612681602283611e4d565b915061268c82612627565b604082019050919050565b5f6020820190508181035f8301526126ae81612675565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61270f602583611e4d565b915061271a826126b5565b604082019050919050565b5f6020820190508181035f83015261273c81612703565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61279d602383611e4d565b91506127a882612743565b604082019050919050565b5f6020820190508181035f8301526127ca81612791565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61282b602983611e4d565b9150612836826127d1565b604082019050919050565b5f6020820190508181035f8301526128588161281f565b9050919050565b7f54726164696e67206973206e6f742073746172746564000000000000000000005f82015250565b5f612893601683611e4d565b915061289e8261285f565b602082019050919050565b5f6020820190508181035f8301526128c081612887565b9050919050565b7f5472616e7366657220616d6f756e742065786365656473206d6178547853697a5f8201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b5f612921602183611e4d565b915061292c826128c7565b604082019050919050565b5f6020820190508181035f83015261294e81612915565b9050919050565b5f61295f82611f4b565b915061296a83611f4b565b9250828201905080821115612982576129816122e2565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6129bc601a83611e4d565b91506129c782612988565b602082019050919050565b5f6020820190508181035f8301526129e9816129b0565b9050919050565b5f6129fa82611f4b565b9150612a0583611f4b565b9250828203905081811115612a1d57612a1c6122e2565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612a8b81611f21565b92915050565b5f60208284031215612aa657612aa5611eed565b5b5f612ab384828501612a7d565b91505092915050565b5f819050919050565b5f819050919050565b5f612ae8612ae3612ade84612abc565b612ac5565b611f4b565b9050919050565b612af881612ace565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612b3081611f10565b82525050565b5f612b418383612b27565b60208301905092915050565b5f602082019050919050565b5f612b6382612afe565b612b6d8185612b08565b9350612b7883612b18565b805f5b83811015612ba8578151612b8f8882612b36565b9750612b9a83612b4d565b925050600181019050612b7b565b5085935050505092915050565b5f60a082019050612bc85f83018861203f565b612bd56020830187612aef565b8181036040830152612be78186612b59565b9050612bf660608301856120f1565b612c03608083018461203f565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612c4482611f4b565b9150612c4f83611f4b565b925082612c5f57612c5e612c0d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f612cc4602183611e4d565b9150612ccf82612c6a565b604082019050919050565b5f6020820190508181035f830152612cf181612cb8565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f612d2c601b83611e4d565b9150612d3782612cf8565b602082019050919050565b5f6020820190508181035f830152612d5981612d20565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203f137cb59f53e8a0c4411dfe0b910f77bb3737fce462b8cab3d50f9fcbd0ae2464736f6c63430008180033

Deployed Bytecode

0x60806040526004361061012d575f3560e01c806370a08231116100aa578063a9059cbb1161006e578063a9059cbb146103b6578063c1eabec0146103f2578063c9567bf91461041a578063d82ac78914610430578063dd62ed3e14610458578063f84453921461049457610134565b806370a08231146102e6578063715018a6146103225780638da5cb5b146103385780638f9a55c01461036257806395d89b411461038c57610134565b8063313ce567116100f1578063313ce5671461022c57806340989235146102565780634c2563601461026c578063511b5f6114610294578063593888d4146102be57610134565b806306fdde0314610138578063095ea7b314610162578063136b16101461019e57806318160ddd146101c657806323b872dd146101f057610134565b3661013457005b5f80fd5b348015610143575f80fd5b5061014c6104aa565b6040516101599190611ecd565b60405180910390f35b34801561016d575f80fd5b5061018860048036038101906101839190611f7e565b6104e7565b6040516101959190611fd6565b60405180910390f35b3480156101a9575f80fd5b506101c460048036038101906101bf9190611fef565b610504565b005b3480156101d1575f80fd5b506101da610711565b6040516101e7919061204e565b60405180910390f35b3480156101fb575f80fd5b5061021660048036038101906102119190611fef565b610734565b6040516102239190611fd6565b60405180910390f35b348015610237575f80fd5b50610240610808565b60405161024d9190612082565b60405180910390f35b348015610261575f80fd5b5061026a610810565b005b348015610277575f80fd5b50610292600480360381019061028d919061209b565b61093f565b005b34801561029f575f80fd5b506102a86109dd565b6040516102b5919061204e565b60405180910390f35b3480156102c9575f80fd5b506102e460048036038101906102df919061209b565b6109e3565b005b3480156102f1575f80fd5b5061030c600480360381019061030791906120c6565b610a99565b604051610319919061204e565b60405180910390f35b34801561032d575f80fd5b50610336610adf565b005b348015610343575f80fd5b5061034c610c2d565b6040516103599190612100565b60405180910390f35b34801561036d575f80fd5b50610376610c54565b604051610383919061204e565b60405180910390f35b348015610397575f80fd5b506103a0610c5a565b6040516103ad9190611ecd565b60405180910390f35b3480156103c1575f80fd5b506103dc60048036038101906103d79190611f7e565b610c97565b6040516103e99190611fd6565b60405180910390f35b3480156103fd575f80fd5b506104186004803603810190610413919061209b565b610cb4565b005b348015610425575f80fd5b5061042e610d52565b005b34801561043b575f80fd5b506104566004803603810190610451919061209b565b610e53565b005b348015610463575f80fd5b5061047e60048036038101906104799190612119565b610f09565b60405161048b919061204e565b60405180910390f35b34801561049f575f80fd5b506104a8610f8b565b005b60606040518060400160405280600b81526020017f486974656e736f72204149000000000000000000000000000000000000000000815250905090565b5f6104fa6104f3611022565b8484611029565b6001905092915050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610544611022565b73ffffffffffffffffffffffffffffffffffffffff1614610563575f80fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036105d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c8906121a1565b60405180910390fd5b5f8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161060b9190612100565b602060405180830381865afa158015610626573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061064a91906121d3565b90508181101561068f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068690612248565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b81526004016106ca929190612266565b6020604051808303815f875af11580156106e6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061070a91906122b7565b5050505050565b5f6012600a610720919061243e565b630c84588061072f9190612488565b905090565b5f6107408484846111ec565b6107fd8461074c611022565b6107f885604051806060016040528060288152602001612d616028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6107af611022565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461190d9092919063ffffffff16565b611029565b600190509392505050565b5f6012905090565b610818611022565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089b90612513565b60405180910390fd5b6012600a6108b2919061243e565b630c8458806108c19190612488565b6008819055506012600a6108d5919061243e565b630c8458806108e49190612488565b6007819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a610919919061243e565b630c8458806109289190612488565b604051610935919061204e565b60405180910390a1565b610947611022565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ca90612513565b60405180910390fd5b8060068190555050565b60085481565b6109eb611022565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6e90612513565b60405180910390fd5b6012600a610a85919061243e565b81610a909190612488565b60088190555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610ae7611022565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6a90612513565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075481565b60606040518060400160405280600481526020017f4854414f00000000000000000000000000000000000000000000000000000000815250905090565b5f610caa610ca3611022565b84846111ec565b6001905092915050565b610cbc611022565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3f90612513565b60405180910390fd5b8060058190555050565b610d5a611022565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610de6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddd90612513565b60405180910390fd5b600a60149054906101000a900460ff1615610e36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2d9061257b565b60405180910390fd5b6001600a60146101000a81548160ff021916908315150217905550565b610e5b611022565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ede90612513565b60405180910390fd5b6012600a610ef5919061243e565b81610f009190612488565b60078190555050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610fcb611022565b73ffffffffffffffffffffffffffffffffffffffff1614610fea575f80fd5b5f610ff430610a99565b90505f811115611008576110078161196f565b5b5f4790505f81111561101e5761101d81611c14565b5b5050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108e90612609565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611105576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fc90612697565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111df919061204e565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361125a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125190612725565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bf906127b3565b60405180910390fd5b5f811161130a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130190612841565b60405180910390fd5b5f611313610c2d565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156113815750611351610c2d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561165d57600a60149054906101000a900460ff166113d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cc906128a9565b60405180910390fd5b60085482111561141a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141190612937565b60405180910390fd5b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156114c3575060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561154f57600754826114d585610a99565b6114df9190612955565b1115611520576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611517906129d2565b60405180910390fd5b611548606461153a60055485611c7c90919063ffffffff16565b611cf390919063ffffffff16565b905061165c565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611657576115cb60646115bd60065485611c7c90919063ffffffff16565b611cf390919063ffffffff16565b90505f6115d730610a99565b9050600a60159054906101000a900460ff161580156116425750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15611651576116508161196f565b5b5061165b565b5f90505b5b5b5f81111561175c576116b58160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d3c90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611753919061204e565b60405180910390a35b6117ac8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d9990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061184f6118038284611d9990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d3c90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6118f28486611d9990919063ffffffff16565b6040516118ff919061204e565b60405180910390a350505050565b5f838311158290611954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194b9190611ecd565b60405180910390fd5b505f838561196291906129f0565b9050809150509392505050565b6001600a60156101000a81548160ff0219169083151502179055505f810315611bf7576008548111156119a25760085490505b5f600267ffffffffffffffff8111156119be576119bd612a23565b5b6040519080825280602002602001820160405280156119ec5781602001602082028036833780820191505090505b50905030815f81518110611a0357611a02612a50565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611aa7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611acb9190612a91565b81600181518110611adf57611ade612a50565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611b453060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611029565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8460045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401611bc8959493929190612bb5565b5f604051808303815f87803b158015611bdf575f80fd5b505af1158015611bf1573d5f803e3d5ffd5b50505050505b5f600a60156101000a81548160ff02191690831515021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611c78573d5f803e3d5ffd5b5050565b5f808303611c8c575f9050611ced565b5f8284611c999190612488565b9050828482611ca89190612c3a565b14611ce8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cdf90612cda565b60405180910390fd5b809150505b92915050565b5f611d3483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611de2565b905092915050565b5f808284611d4a9190612955565b905083811015611d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8690612d42565b60405180910390fd5b8091505092915050565b5f611dda83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061190d565b905092915050565b5f8083118290611e28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1f9190611ecd565b60405180910390fd5b505f8385611e369190612c3a565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611e7a578082015181840152602081019050611e5f565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611e9f82611e43565b611ea98185611e4d565b9350611eb9818560208601611e5d565b611ec281611e85565b840191505092915050565b5f6020820190508181035f830152611ee58184611e95565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611f1a82611ef1565b9050919050565b611f2a81611f10565b8114611f34575f80fd5b50565b5f81359050611f4581611f21565b92915050565b5f819050919050565b611f5d81611f4b565b8114611f67575f80fd5b50565b5f81359050611f7881611f54565b92915050565b5f8060408385031215611f9457611f93611eed565b5b5f611fa185828601611f37565b9250506020611fb285828601611f6a565b9150509250929050565b5f8115159050919050565b611fd081611fbc565b82525050565b5f602082019050611fe95f830184611fc7565b92915050565b5f805f6060848603121561200657612005611eed565b5b5f61201386828701611f37565b935050602061202486828701611f37565b925050604061203586828701611f6a565b9150509250925092565b61204881611f4b565b82525050565b5f6020820190506120615f83018461203f565b92915050565b5f60ff82169050919050565b61207c81612067565b82525050565b5f6020820190506120955f830184612073565b92915050565b5f602082840312156120b0576120af611eed565b5b5f6120bd84828501611f6a565b91505092915050565b5f602082840312156120db576120da611eed565b5b5f6120e884828501611f37565b91505092915050565b6120fa81611f10565b82525050565b5f6020820190506121135f8301846120f1565b92915050565b5f806040838503121561212f5761212e611eed565b5b5f61213c85828601611f37565b925050602061214d85828601611f37565b9150509250929050565b7f636f756c64206e6f74207265736375652063757272656e7420746f6b656e00005f82015250565b5f61218b601e83611e4d565b915061219682612157565b602082019050919050565b5f6020820190508181035f8301526121b88161217f565b9050919050565b5f815190506121cd81611f54565b92915050565b5f602082840312156121e8576121e7611eed565b5b5f6121f5848285016121bf565b91505092915050565b7f6e6f7420656e6f756768740000000000000000000000000000000000000000005f82015250565b5f612232600b83611e4d565b915061223d826121fe565b602082019050919050565b5f6020820190508181035f83015261225f81612226565b9050919050565b5f6040820190506122795f8301856120f1565b612286602083018461203f565b9392505050565b61229681611fbc565b81146122a0575f80fd5b50565b5f815190506122b18161228d565b92915050565b5f602082840312156122cc576122cb611eed565b5b5f6122d9848285016122a3565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612364578086048111156123405761233f6122e2565b5b600185161561234f5780820291505b808102905061235d8561230f565b9450612324565b94509492505050565b5f8261237c5760019050612437565b81612389575f9050612437565b816001811461239f57600281146123a9576123d8565b6001915050612437565b60ff8411156123bb576123ba6122e2565b5b8360020a9150848211156123d2576123d16122e2565b5b50612437565b5060208310610133831016604e8410600b841016171561240d5782820a905083811115612408576124076122e2565b5b612437565b61241a848484600161231b565b92509050818404811115612431576124306122e2565b5b81810290505b9392505050565b5f61244882611f4b565b915061245383612067565b92506124807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461236d565b905092915050565b5f61249282611f4b565b915061249d83611f4b565b92508282026124ab81611f4b565b915082820484148315176124c2576124c16122e2565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6124fd602083611e4d565b9150612508826124c9565b602082019050919050565b5f6020820190508181035f83015261252a816124f1565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612565601783611e4d565b915061257082612531565b602082019050919050565b5f6020820190508181035f83015261259281612559565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6125f3602483611e4d565b91506125fe82612599565b604082019050919050565b5f6020820190508181035f830152612620816125e7565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612681602283611e4d565b915061268c82612627565b604082019050919050565b5f6020820190508181035f8301526126ae81612675565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61270f602583611e4d565b915061271a826126b5565b604082019050919050565b5f6020820190508181035f83015261273c81612703565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61279d602383611e4d565b91506127a882612743565b604082019050919050565b5f6020820190508181035f8301526127ca81612791565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61282b602983611e4d565b9150612836826127d1565b604082019050919050565b5f6020820190508181035f8301526128588161281f565b9050919050565b7f54726164696e67206973206e6f742073746172746564000000000000000000005f82015250565b5f612893601683611e4d565b915061289e8261285f565b602082019050919050565b5f6020820190508181035f8301526128c081612887565b9050919050565b7f5472616e7366657220616d6f756e742065786365656473206d6178547853697a5f8201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b5f612921602183611e4d565b915061292c826128c7565b604082019050919050565b5f6020820190508181035f83015261294e81612915565b9050919050565b5f61295f82611f4b565b915061296a83611f4b565b9250828201905080821115612982576129816122e2565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6129bc601a83611e4d565b91506129c782612988565b602082019050919050565b5f6020820190508181035f8301526129e9816129b0565b9050919050565b5f6129fa82611f4b565b9150612a0583611f4b565b9250828203905081811115612a1d57612a1c6122e2565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612a8b81611f21565b92915050565b5f60208284031215612aa657612aa5611eed565b5b5f612ab384828501612a7d565b91505092915050565b5f819050919050565b5f819050919050565b5f612ae8612ae3612ade84612abc565b612ac5565b611f4b565b9050919050565b612af881612ace565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612b3081611f10565b82525050565b5f612b418383612b27565b60208301905092915050565b5f602082019050919050565b5f612b6382612afe565b612b6d8185612b08565b9350612b7883612b18565b805f5b83811015612ba8578151612b8f8882612b36565b9750612b9a83612b4d565b925050600181019050612b7b565b5085935050505092915050565b5f60a082019050612bc85f83018861203f565b612bd56020830187612aef565b8181036040830152612be78186612b59565b9050612bf660608301856120f1565b612c03608083018461203f565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612c4482611f4b565b9150612c4f83611f4b565b925082612c5f57612c5e612c0d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f612cc4602183611e4d565b9150612ccf82612c6a565b604082019050919050565b5f6020820190508181035f830152612cf181612cb8565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f612d2c601b83611e4d565b9150612d3782612cf8565b602082019050919050565b5f6020820190508181035f830152612d5981612d20565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203f137cb59f53e8a0c4411dfe0b910f77bb3737fce462b8cab3d50f9fcbd0ae2464736f6c63430008180033

Deployed Bytecode Sourcemap

3592:7073:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5080:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5267:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10136:356;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5850:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5529:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5436:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10500:162;;;;;;;;;;;;;:::i;:::-;;9211:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4261:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9454:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5953:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2673:148;;;;;;;;;;;;;:::i;:::-;;2459:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4198:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5171:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6080:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9104:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9589:139;;;;;;;;;;;;;:::i;:::-;;9320:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6255:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9773:355;;;;;;;;;;;;;:::i;:::-;;5080:83;5117:13;5150:5;;;;;;;;;;;;;;;;;5143:12;;5080:83;:::o;5267:161::-;5342:4;5359:39;5368:12;:10;:12::i;:::-;5382:7;5391:6;5359:8;:39::i;:::-;5416:4;5409:11;;5267:161;;;;:::o;10136:356::-;10242:10;;;;;;;;;;;10228:24;;:12;:10;:12::i;:::-;:24;;;10220:33;;;;;;10288:4;10272:21;;:4;:21;;;10264:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10339:15;10364:4;10357:22;;;10388:4;10357:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10339:55;;10424:3;10413:7;:14;;10405:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10461:4;10454:21;;;10476:2;10480:3;10454:30;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10209:283;10136:356;;;:::o;5850:95::-;5903:7;4008:2;4065;:13;;;;:::i;:::-;4052:9;:26;;;;:::i;:::-;5923:14;;5850:95;:::o;5529:313::-;5627:4;5644:36;5654:6;5662:9;5673:6;5644:9;:36::i;:::-;5691:121;5700:6;5708:12;:10;:12::i;:::-;5722:89;5760:6;5722:89;;;;;;;;;;;;;;;;;:11;:19;5734:6;5722:19;;;;;;;;;;;;;;;:33;5742:12;:10;:12::i;:::-;5722:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;5691:8;:121::i;:::-;5830:4;5823:11;;5529:313;;;;;:::o;5436:83::-;5477:5;4008:2;5495:16;;5436:83;:::o;10500:162::-;2596:12;:10;:12::i;:::-;2586:22;;:6;;;;;;;;;;:22;;;2578:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4008:2:::1;4065;:13;;;;:::i;:::-;4052:9;:26;;;;:::i;:::-;10558:10;:20;;;;4008:2;4065;:13;;;;:::i;:::-;4052:9;:26;;;;:::i;:::-;10589:14;:22;;;;10627:27;4008:2;4065;:13;;;;:::i;:::-;4052:9;:26;;;;:::i;:::-;10627:27;;;;;;:::i;:::-;;;;;;;;10500:162::o:0;9211:101::-;2596:12;:10;:12::i;:::-;2586:22;;:6;;;;;;;;;;:22;;;2578:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9301:3:::1;9283:15;:21;;;;9211:101:::0;:::o;4261:52::-;;;;:::o;9454:127::-;2596:12;:10;:12::i;:::-;2586:22;;:6;;;;;;;;;;:22;;;2578:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4008:2:::1;9560;:13;;;;:::i;:::-;9552:5;:21;;;;:::i;:::-;9539:10;:34;;;;9454:127:::0;:::o;5953:119::-;6019:7;6046:9;:18;6056:7;6046:18;;;;;;;;;;;;;;;;6039:25;;5953:119;;;:::o;2673:148::-;2596:12;:10;:12::i;:::-;2586:22;;:6;;;;;;;;;;:22;;;2578:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2780:1:::1;2743:40;;2764:6;::::0;::::1;;;;;;;;2743:40;;;;;;;;;;;;2811:1;2794:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2673:148::o:0;2459:79::-;2497:7;2524:6;;;;;;;;;;;2517:13;;2459:79;:::o;4198:56::-;;;;:::o;5171:87::-;5210:13;5243:7;;;;;;;;;;;;;;;;;5236:14;;5171:87;:::o;6080:167::-;6158:4;6175:42;6185:12;:10;:12::i;:::-;6199:9;6210:6;6175:9;:42::i;:::-;6235:4;6228:11;;6080:167;;;;:::o;9104:99::-;2596:12;:10;:12::i;:::-;2586:22;;:6;;;;;;;;;;:22;;;2578:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9192:3:::1;9175:14;:20;;;;9104:99:::0;:::o;9589:139::-;2596:12;:10;:12::i;:::-;2586:22;;:6;;;;;;;;;;:22;;;2578:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9653:11:::1;;;;;;;;;;;9652:12;9644:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;9716:4;9702:11;;:18;;;;;;;;;;;;;;;;;;9589:139::o:0;9320:126::-;2596:12;:10;:12::i;:::-;2586:22;;:6;;;;;;;;;;:22;;;2578:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4008:2:::1;9425;:13;;;;:::i;:::-;9417:5;:21;;;;:::i;:::-;9400:14;:38;;;;9320:126:::0;:::o;6255:143::-;6336:7;6363:11;:18;6375:5;6363:18;;;;;;;;;;;;;;;:27;6382:7;6363:27;;;;;;;;;;;;;;;;6356:34;;6255:143;;;;:::o;9773:355::-;9844:10;;;;;;;;;;;9830:24;;:12;:10;:12::i;:::-;:24;;;9822:33;;;;;;9866:20;9887:24;9905:4;9887:9;:24::i;:::-;9866:45;;9938:1;9925:12;:14;9922:73;;;9953:30;9970:12;9953:16;:30::i;:::-;9922:73;10005:18;10024:21;10005:40;;10070:1;10059:10;:12;10056:65;;;10085:24;10098:10;10085:12;:24::i;:::-;10056:65;9811:317;;9773:355::o;214:98::-;267:7;294:10;287:17;;214:98;:::o;6406:335::-;6516:1;6499:19;;:5;:19;;;6491:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6597:1;6578:21;;:7;:21;;;6570:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6679:6;6649:11;:18;6661:5;6649:18;;;;;;;;;;;;;;;:27;6668:7;6649:27;;;;;;;;;;;;;;;:36;;;;6717:7;6701:32;;6710:5;6701:32;;;6726:6;6701:32;;;;;;:::i;:::-;;;;;;;;6406:335;;;:::o;6749:1519::-;6853:1;6837:18;;:4;:18;;;6829:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6930:1;6916:16;;:2;:16;;;6908:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7000:1;6991:6;:10;6983:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7058:17;7100:7;:5;:7::i;:::-;7092:15;;:4;:15;;;;:32;;;;;7117:7;:5;:7::i;:::-;7111:13;;:2;:13;;;;7092:32;7088:824;;;7149:11;;;;;;;;;;;7141:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;7219:10;;7209:6;:20;;7201:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;7294:13;;;;;;;;;;;7286:21;;:4;:21;;;:55;;;;;7325:15;;;;;;;;;;;7311:30;;:2;:30;;;;7286:55;7282:619;;;7396:14;;7386:6;7370:13;7380:2;7370:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;7362:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;7472:35;7503:3;7472:26;7483:14;;7472:6;:10;;:26;;;;:::i;:::-;:30;;:35;;;;:::i;:::-;7460:47;;7282:619;;;7541:13;;;;;;;;;;;7535:19;;:2;:19;;;7531:370;;7586:36;7618:3;7586:27;7597:15;;7586:6;:10;;:27;;;;:::i;:::-;:31;;:36;;;;:::i;:::-;7574:48;;7641:28;7672:24;7690:4;7672:9;:24::i;:::-;7641:55;;7720:6;;;;;;;;;;;7719:7;:30;;;;;7736:13;;;;;;;;;;;7730:19;;:2;:19;;;7719:30;7715:117;;;7774:38;7791:20;7774:16;:38::i;:::-;7715:117;7555:292;7531:370;;;7884:1;7872:13;;7531:370;7282:619;7088:824;7937:1;7927:9;:11;7924:161;;;7977:39;8006:9;7977;:24;7995:4;7977:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;7952:9;:24;7970:4;7952:24;;;;;;;;;;;;;;;:64;;;;8057:4;8034:39;;8043:4;8034:39;;;8063:9;8034:39;;;;;;:::i;:::-;;;;;;;;7924:161;8111:27;8131:6;8111:9;:15;8121:4;8111:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;8095:9;:15;8105:4;8095:15;;;;;;;;;;;;;;;:43;;;;8163:40;8181:21;8192:9;8181:6;:10;;:21;;;;:::i;:::-;8163:9;:13;8173:2;8163:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;8149:9;:13;8159:2;8149:13;;;;;;;;;;;;;;;:54;;;;8234:2;8219:41;;8228:4;8219:41;;;8238:21;8249:9;8238:6;:10;;:21;;;;:::i;:::-;8219:41;;;;;;:::i;:::-;;;;;;;;6818:1450;6749:1519;;;:::o;1351:190::-;1437:7;1470:1;1465;:6;;1473:12;1457:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1497:9;1513:1;1509;:5;;;;:::i;:::-;1497:17;;1532:1;1525:8;;;1351:190;;;;;:::o;8382:605::-;4515:4;4506:6;;:13;;;;;;;;;;;;;;;;;;8476:1:::1;8463:11;:14:::0;8460:27;8479:7:::1;8460:27;8512:10;;8500:11;:22;8497:78;;;8553:10;;8539:24;;8497:78;8585:21;8623:1;8609:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8585:40;;8654:4;8636;8641:1;8636:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;8680:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8670:4;8675:1;8670:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;8713:62;8730:4;8745:15;;;;;;;;;;;8763:11;8713:8;:62::i;:::-;8786:15;;;;;;;;;;;:66;;;8867:11;8893:1;8909:4;8928:10;;;;;;;;;;;8953:15;8786:193;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;8449:538;4530:1;4551:5:::0;4542:6;;:14;;;;;;;;;;;;;;;;;;8382:605;:::o;8995:101::-;9060:10;;;;;;;;;;;9052:28;;:36;9081:6;9052:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8995:101;:::o;1549:246::-;1607:7;1636:1;1631;:6;1627:47;;1661:1;1654:8;;;;1627:47;1684:9;1700:1;1696;:5;;;;:::i;:::-;1684:17;;1729:1;1724;1720;:5;;;;:::i;:::-;:10;1712:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1786:1;1779:8;;;1549:246;;;;;:::o;1803:132::-;1861:7;1888:39;1892:1;1895;1888:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1881:46;;1803:132;;;;:::o;1020:179::-;1078:7;1098:9;1114:1;1110;:5;;;;:::i;:::-;1098:17;;1139:1;1134;:6;;1126:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1190:1;1183:8;;;1020:179;;;;:::o;1207:136::-;1265:7;1292:43;1296:1;1299;1292:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1285:50;;1207:136;;;;:::o;1943:189::-;2029:7;2061:1;2057;:5;2064:12;2049:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2088:9;2104:1;2100;:5;;;;:::i;:::-;2088:17;;2123:1;2116:8;;;1943:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:619::-;3523:6;3531;3539;3588:2;3576:9;3567:7;3563:23;3559:32;3556:119;;;3594:79;;:::i;:::-;3556:119;3714:1;3739:53;3784:7;3775:6;3764:9;3760:22;3739:53;:::i;:::-;3729:63;;3685:117;3841:2;3867:53;3912:7;3903:6;3892:9;3888:22;3867:53;:::i;:::-;3857:63;;3812:118;3969:2;3995:53;4040:7;4031:6;4020:9;4016:22;3995:53;:::i;:::-;3985:63;;3940:118;3446:619;;;;;:::o;4071:118::-;4158:24;4176:5;4158:24;:::i;:::-;4153:3;4146:37;4071:118;;:::o;4195:222::-;4288:4;4326:2;4315:9;4311:18;4303:26;;4339:71;4407:1;4396:9;4392:17;4383:6;4339:71;:::i;:::-;4195:222;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:::-;5247:6;5296:2;5284:9;5275:7;5271:23;5267:32;5264:119;;;5302:79;;:::i;:::-;5264:119;5422:1;5447:53;5492:7;5483:6;5472:9;5468:22;5447:53;:::i;:::-;5437:63;;5393:117;5188:329;;;;:::o;5523:118::-;5610:24;5628:5;5610:24;:::i;:::-;5605:3;5598:37;5523:118;;:::o;5647:222::-;5740:4;5778:2;5767:9;5763:18;5755:26;;5791:71;5859:1;5848:9;5844:17;5835:6;5791:71;:::i;:::-;5647:222;;;;:::o;5875:474::-;5943:6;5951;6000:2;5988:9;5979:7;5975:23;5971:32;5968:119;;;6006:79;;:::i;:::-;5968:119;6126:1;6151:53;6196:7;6187:6;6176:9;6172:22;6151:53;:::i;:::-;6141:63;;6097:117;6253:2;6279:53;6324:7;6315:6;6304:9;6300:22;6279:53;:::i;:::-;6269:63;;6224:118;5875:474;;;;;:::o;6355:180::-;6495:32;6491:1;6483:6;6479:14;6472:56;6355:180;:::o;6541:366::-;6683:3;6704:67;6768:2;6763:3;6704:67;:::i;:::-;6697:74;;6780:93;6869:3;6780:93;:::i;:::-;6898:2;6893:3;6889:12;6882:19;;6541:366;;;:::o;6913:419::-;7079:4;7117:2;7106:9;7102:18;7094:26;;7166:9;7160:4;7156:20;7152:1;7141:9;7137:17;7130:47;7194:131;7320:4;7194:131;:::i;:::-;7186:139;;6913:419;;;:::o;7338:143::-;7395:5;7426:6;7420:13;7411:22;;7442:33;7469:5;7442:33;:::i;:::-;7338:143;;;;:::o;7487:351::-;7557:6;7606:2;7594:9;7585:7;7581:23;7577:32;7574:119;;;7612:79;;:::i;:::-;7574:119;7732:1;7757:64;7813:7;7804:6;7793:9;7789:22;7757:64;:::i;:::-;7747:74;;7703:128;7487:351;;;;:::o;7844:161::-;7984:13;7980:1;7972:6;7968:14;7961:37;7844:161;:::o;8011:366::-;8153:3;8174:67;8238:2;8233:3;8174:67;:::i;:::-;8167:74;;8250:93;8339:3;8250:93;:::i;:::-;8368:2;8363:3;8359:12;8352:19;;8011:366;;;:::o;8383:419::-;8549:4;8587:2;8576:9;8572:18;8564:26;;8636:9;8630:4;8626:20;8622:1;8611:9;8607:17;8600:47;8664:131;8790:4;8664:131;:::i;:::-;8656:139;;8383:419;;;:::o;8808:332::-;8929:4;8967:2;8956:9;8952:18;8944:26;;8980:71;9048:1;9037:9;9033:17;9024:6;8980:71;:::i;:::-;9061:72;9129:2;9118:9;9114:18;9105:6;9061:72;:::i;:::-;8808:332;;;;;:::o;9146:116::-;9216:21;9231:5;9216:21;:::i;:::-;9209:5;9206:32;9196:60;;9252:1;9249;9242:12;9196:60;9146:116;:::o;9268:137::-;9322:5;9353:6;9347:13;9338:22;;9369:30;9393:5;9369:30;:::i;:::-;9268:137;;;;:::o;9411:345::-;9478:6;9527:2;9515:9;9506:7;9502:23;9498:32;9495:119;;;9533:79;;:::i;:::-;9495:119;9653:1;9678:61;9731:7;9722:6;9711:9;9707:22;9678:61;:::i;:::-;9668:71;;9624:125;9411:345;;;;:::o;9762:180::-;9810:77;9807:1;9800:88;9907:4;9904:1;9897:15;9931:4;9928:1;9921:15;9948:102;9990:8;10037:5;10034:1;10030:13;10009:34;;9948:102;;;:::o;10056:848::-;10117:5;10124:4;10148:6;10139:15;;10172:5;10163:14;;10186:712;10207:1;10197:8;10194:15;10186:712;;;10302:4;10297:3;10293:14;10287:4;10284:24;10281:50;;;10311:18;;:::i;:::-;10281:50;10361:1;10351:8;10347:16;10344:451;;;10776:4;10769:5;10765:16;10756:25;;10344:451;10826:4;10820;10816:15;10808:23;;10856:32;10879:8;10856:32;:::i;:::-;10844:44;;10186:712;;;10056:848;;;;;;;:::o;10910:1073::-;10964:5;11155:8;11145:40;;11176:1;11167:10;;11178:5;;11145:40;11204:4;11194:36;;11221:1;11212:10;;11223:5;;11194:36;11290:4;11338:1;11333:27;;;;11374:1;11369:191;;;;11283:277;;11333:27;11351:1;11342:10;;11353:5;;;11369:191;11414:3;11404:8;11401:17;11398:43;;;11421:18;;:::i;:::-;11398:43;11470:8;11467:1;11463:16;11454:25;;11505:3;11498:5;11495:14;11492:40;;;11512:18;;:::i;:::-;11492:40;11545:5;;;11283:277;;11669:2;11659:8;11656:16;11650:3;11644:4;11641:13;11637:36;11619:2;11609:8;11606:16;11601:2;11595:4;11592:12;11588:35;11572:111;11569:246;;;11725:8;11719:4;11715:19;11706:28;;11760:3;11753:5;11750:14;11747:40;;;11767:18;;:::i;:::-;11747:40;11800:5;;11569:246;11840:42;11878:3;11868:8;11862:4;11859:1;11840:42;:::i;:::-;11825:57;;;;11914:4;11909:3;11905:14;11898:5;11895:25;11892:51;;;11923:18;;:::i;:::-;11892:51;11972:4;11965:5;11961:16;11952:25;;10910:1073;;;;;;:::o;11989:281::-;12047:5;12071:23;12089:4;12071:23;:::i;:::-;12063:31;;12115:25;12131:8;12115:25;:::i;:::-;12103:37;;12159:104;12196:66;12186:8;12180:4;12159:104;:::i;:::-;12150:113;;11989:281;;;;:::o;12276:410::-;12316:7;12339:20;12357:1;12339:20;:::i;:::-;12334:25;;12373:20;12391:1;12373:20;:::i;:::-;12368:25;;12428:1;12425;12421:9;12450:30;12468:11;12450:30;:::i;:::-;12439:41;;12629:1;12620:7;12616:15;12613:1;12610:22;12590:1;12583:9;12563:83;12540:139;;12659:18;;:::i;:::-;12540:139;12324:362;12276:410;;;;:::o;12692:182::-;12832:34;12828:1;12820:6;12816:14;12809:58;12692:182;:::o;12880:366::-;13022:3;13043:67;13107:2;13102:3;13043:67;:::i;:::-;13036:74;;13119:93;13208:3;13119:93;:::i;:::-;13237:2;13232:3;13228:12;13221:19;;12880:366;;;:::o;13252:419::-;13418:4;13456:2;13445:9;13441:18;13433:26;;13505:9;13499:4;13495:20;13491:1;13480:9;13476:17;13469:47;13533:131;13659:4;13533:131;:::i;:::-;13525:139;;13252:419;;;:::o;13677:173::-;13817:25;13813:1;13805:6;13801:14;13794:49;13677:173;:::o;13856:366::-;13998:3;14019:67;14083:2;14078:3;14019:67;:::i;:::-;14012:74;;14095:93;14184:3;14095:93;:::i;:::-;14213:2;14208:3;14204:12;14197:19;;13856:366;;;:::o;14228:419::-;14394:4;14432:2;14421:9;14417:18;14409:26;;14481:9;14475:4;14471:20;14467:1;14456:9;14452:17;14445:47;14509:131;14635:4;14509:131;:::i;:::-;14501:139;;14228:419;;;:::o;14653:223::-;14793:34;14789:1;14781:6;14777:14;14770:58;14862:6;14857:2;14849:6;14845:15;14838:31;14653:223;:::o;14882:366::-;15024:3;15045:67;15109:2;15104:3;15045:67;:::i;:::-;15038:74;;15121:93;15210:3;15121:93;:::i;:::-;15239:2;15234:3;15230:12;15223:19;;14882:366;;;:::o;15254:419::-;15420:4;15458:2;15447:9;15443:18;15435:26;;15507:9;15501:4;15497:20;15493:1;15482:9;15478:17;15471:47;15535:131;15661:4;15535:131;:::i;:::-;15527:139;;15254:419;;;:::o;15679:221::-;15819:34;15815:1;15807:6;15803:14;15796:58;15888:4;15883:2;15875:6;15871:15;15864:29;15679:221;:::o;15906:366::-;16048:3;16069:67;16133:2;16128:3;16069:67;:::i;:::-;16062:74;;16145:93;16234:3;16145:93;:::i;:::-;16263:2;16258:3;16254:12;16247:19;;15906:366;;;:::o;16278:419::-;16444:4;16482:2;16471:9;16467:18;16459:26;;16531:9;16525:4;16521:20;16517:1;16506:9;16502:17;16495:47;16559:131;16685:4;16559:131;:::i;:::-;16551:139;;16278:419;;;:::o;16703:224::-;16843:34;16839:1;16831:6;16827:14;16820:58;16912:7;16907:2;16899:6;16895:15;16888:32;16703:224;:::o;16933:366::-;17075:3;17096:67;17160:2;17155:3;17096:67;:::i;:::-;17089:74;;17172:93;17261:3;17172:93;:::i;:::-;17290:2;17285:3;17281:12;17274:19;;16933:366;;;:::o;17305:419::-;17471:4;17509:2;17498:9;17494:18;17486:26;;17558:9;17552:4;17548:20;17544:1;17533:9;17529:17;17522:47;17586:131;17712:4;17586:131;:::i;:::-;17578:139;;17305:419;;;:::o;17730:222::-;17870:34;17866:1;17858:6;17854:14;17847:58;17939:5;17934:2;17926:6;17922:15;17915:30;17730:222;:::o;17958:366::-;18100:3;18121:67;18185:2;18180:3;18121:67;:::i;:::-;18114:74;;18197:93;18286:3;18197:93;:::i;:::-;18315:2;18310:3;18306:12;18299:19;;17958:366;;;:::o;18330:419::-;18496:4;18534:2;18523:9;18519:18;18511:26;;18583:9;18577:4;18573:20;18569:1;18558:9;18554:17;18547:47;18611:131;18737:4;18611:131;:::i;:::-;18603:139;;18330:419;;;:::o;18755:228::-;18895:34;18891:1;18883:6;18879:14;18872:58;18964:11;18959:2;18951:6;18947:15;18940:36;18755:228;:::o;18989:366::-;19131:3;19152:67;19216:2;19211:3;19152:67;:::i;:::-;19145:74;;19228:93;19317:3;19228:93;:::i;:::-;19346:2;19341:3;19337:12;19330:19;;18989:366;;;:::o;19361:419::-;19527:4;19565:2;19554:9;19550:18;19542:26;;19614:9;19608:4;19604:20;19600:1;19589:9;19585:17;19578:47;19642:131;19768:4;19642:131;:::i;:::-;19634:139;;19361:419;;;:::o;19786:172::-;19926:24;19922:1;19914:6;19910:14;19903:48;19786:172;:::o;19964:366::-;20106:3;20127:67;20191:2;20186:3;20127:67;:::i;:::-;20120:74;;20203:93;20292:3;20203:93;:::i;:::-;20321:2;20316:3;20312:12;20305:19;;19964:366;;;:::o;20336:419::-;20502:4;20540:2;20529:9;20525:18;20517:26;;20589:9;20583:4;20579:20;20575:1;20564:9;20560:17;20553:47;20617:131;20743:4;20617:131;:::i;:::-;20609:139;;20336:419;;;:::o;20761:220::-;20901:34;20897:1;20889:6;20885:14;20878:58;20970:3;20965:2;20957:6;20953:15;20946:28;20761:220;:::o;20987:366::-;21129:3;21150:67;21214:2;21209:3;21150:67;:::i;:::-;21143:74;;21226:93;21315:3;21226:93;:::i;:::-;21344:2;21339:3;21335:12;21328:19;;20987:366;;;:::o;21359:419::-;21525:4;21563:2;21552:9;21548:18;21540:26;;21612:9;21606:4;21602:20;21598:1;21587:9;21583:17;21576:47;21640:131;21766:4;21640:131;:::i;:::-;21632:139;;21359:419;;;:::o;21784:191::-;21824:3;21843:20;21861:1;21843:20;:::i;:::-;21838:25;;21877:20;21895:1;21877:20;:::i;:::-;21872:25;;21920:1;21917;21913:9;21906:16;;21941:3;21938:1;21935:10;21932:36;;;21948:18;;:::i;:::-;21932:36;21784:191;;;;:::o;21981:176::-;22121:28;22117:1;22109:6;22105:14;22098:52;21981:176;:::o;22163:366::-;22305:3;22326:67;22390:2;22385:3;22326:67;:::i;:::-;22319:74;;22402:93;22491:3;22402:93;:::i;:::-;22520:2;22515:3;22511:12;22504:19;;22163:366;;;:::o;22535:419::-;22701:4;22739:2;22728:9;22724:18;22716:26;;22788:9;22782:4;22778:20;22774:1;22763:9;22759:17;22752:47;22816:131;22942:4;22816:131;:::i;:::-;22808:139;;22535:419;;;:::o;22960:194::-;23000:4;23020:20;23038:1;23020:20;:::i;:::-;23015:25;;23054:20;23072:1;23054:20;:::i;:::-;23049:25;;23098:1;23095;23091:9;23083:17;;23122:1;23116:4;23113:11;23110:37;;;23127:18;;:::i;:::-;23110:37;22960:194;;;;:::o;23160:180::-;23208:77;23205:1;23198:88;23305:4;23302:1;23295:15;23329:4;23326:1;23319:15;23346:180;23394:77;23391:1;23384:88;23491:4;23488:1;23481:15;23515:4;23512:1;23505:15;23532:143;23589:5;23620:6;23614:13;23605:22;;23636:33;23663:5;23636:33;:::i;:::-;23532:143;;;;:::o;23681:351::-;23751:6;23800:2;23788:9;23779:7;23775:23;23771:32;23768:119;;;23806:79;;:::i;:::-;23768:119;23926:1;23951:64;24007:7;23998:6;23987:9;23983:22;23951:64;:::i;:::-;23941:74;;23897:128;23681:351;;;;:::o;24038:85::-;24083:7;24112:5;24101:16;;24038:85;;;:::o;24129:60::-;24157:3;24178:5;24171:12;;24129:60;;;:::o;24195:158::-;24253:9;24286:61;24304:42;24313:32;24339:5;24313:32;:::i;:::-;24304:42;:::i;:::-;24286:61;:::i;:::-;24273:74;;24195:158;;;:::o;24359:147::-;24454:45;24493:5;24454:45;:::i;:::-;24449:3;24442:58;24359:147;;:::o;24512:114::-;24579:6;24613:5;24607:12;24597:22;;24512:114;;;:::o;24632:184::-;24731:11;24765:6;24760:3;24753:19;24805:4;24800:3;24796:14;24781:29;;24632:184;;;;:::o;24822:132::-;24889:4;24912:3;24904:11;;24942:4;24937:3;24933:14;24925:22;;24822:132;;;:::o;24960:108::-;25037:24;25055:5;25037:24;:::i;:::-;25032:3;25025:37;24960:108;;:::o;25074:179::-;25143:10;25164:46;25206:3;25198:6;25164:46;:::i;:::-;25242:4;25237:3;25233:14;25219:28;;25074:179;;;;:::o;25259:113::-;25329:4;25361;25356:3;25352:14;25344:22;;25259:113;;;:::o;25408:732::-;25527:3;25556:54;25604:5;25556:54;:::i;:::-;25626:86;25705:6;25700:3;25626:86;:::i;:::-;25619:93;;25736:56;25786:5;25736:56;:::i;:::-;25815:7;25846:1;25831:284;25856:6;25853:1;25850:13;25831:284;;;25932:6;25926:13;25959:63;26018:3;26003:13;25959:63;:::i;:::-;25952:70;;26045:60;26098:6;26045:60;:::i;:::-;26035:70;;25891:224;25878:1;25875;25871:9;25866:14;;25831:284;;;25835:14;26131:3;26124:10;;25532:608;;;25408:732;;;;:::o;26146:831::-;26409:4;26447:3;26436:9;26432:19;26424:27;;26461:71;26529:1;26518:9;26514:17;26505:6;26461:71;:::i;:::-;26542:80;26618:2;26607:9;26603:18;26594:6;26542:80;:::i;:::-;26669:9;26663:4;26659:20;26654:2;26643:9;26639:18;26632:48;26697:108;26800:4;26791:6;26697:108;:::i;:::-;26689:116;;26815:72;26883:2;26872:9;26868:18;26859:6;26815:72;:::i;:::-;26897:73;26965:3;26954:9;26950:19;26941:6;26897:73;:::i;:::-;26146:831;;;;;;;;:::o;26983:180::-;27031:77;27028:1;27021:88;27128:4;27125:1;27118:15;27152:4;27149:1;27142:15;27169:185;27209:1;27226:20;27244:1;27226:20;:::i;:::-;27221:25;;27260:20;27278:1;27260:20;:::i;:::-;27255:25;;27299:1;27289:35;;27304:18;;:::i;:::-;27289:35;27346:1;27343;27339:9;27334:14;;27169:185;;;;:::o;27360:220::-;27500:34;27496:1;27488:6;27484:14;27477:58;27569:3;27564:2;27556:6;27552:15;27545:28;27360:220;:::o;27586:366::-;27728:3;27749:67;27813:2;27808:3;27749:67;:::i;:::-;27742:74;;27825:93;27914:3;27825:93;:::i;:::-;27943:2;27938:3;27934:12;27927:19;;27586:366;;;:::o;27958:419::-;28124:4;28162:2;28151:9;28147:18;28139:26;;28211:9;28205:4;28201:20;28197:1;28186:9;28182:17;28175:47;28239:131;28365:4;28239:131;:::i;:::-;28231:139;;27958:419;;;:::o;28383:177::-;28523:29;28519:1;28511:6;28507:14;28500:53;28383:177;:::o;28566:366::-;28708:3;28729:67;28793:2;28788:3;28729:67;:::i;:::-;28722:74;;28805:93;28894:3;28805:93;:::i;:::-;28923:2;28918:3;28914:12;28907:19;;28566:366;;;:::o;28938:419::-;29104:4;29142:2;29131:9;29127:18;29119:26;;29191:9;29185:4;29181:20;29177:1;29166:9;29162:17;29155:47;29219:131;29345:4;29219:131;:::i;:::-;29211:139;;28938:419;;;:::o

Swarm Source

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