ETH Price: $2,490.93 (-1.30%)
Gas: 0.62 Gwei

Token

Printer AI (PAI)
 

Overview

Max Total Supply

1,000,000 PAI

Holders

476

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
4,601.407246262 PAI

Value
$0.00
0x04f63c9d64e228076416bbbfe60ba3486a15bbda
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
PrinterAI

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-29
*/

// SPDX-License-Identifier: MIT
/**  
Printing More Than Tether
TG: https://t.me/PrinterAI
Twitter: https://twitter.com/printerai
*/
pragma solidity ^0.8.19;

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

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

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

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

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

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

contract PrinterAI is Context, IERC20, Ownable {

    using Address for address payable;

    IRouter public router;
    address public pair;
    
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => uint256) private _sniperWindowTime;
    mapping (address => bool) public _isExcludedFromFee;
    mapping (address => bool) public _isExcludedFromMaxBalance;

    uint8 private constant _decimals = 9; 
    uint256 private _tTotal = 1_000_000 * (10**_decimals);
    uint256 public swapThreshold = 5_000 * (10**_decimals); 
    uint256 public maxTxAmount = 20_000 * (10**_decimals);
    uint256 public maxWallet =  20_000 * (10**_decimals);
    
    uint8 public buyTax = 25;
    uint8 public sellTax = 50;

    string private constant _name = "Printer AI"; 
    string private constant _symbol = "PAI";

    address private constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address public marketingWallet = 0x06D35fd14cB1F80d085B33780F634c237921ba23;
    address public treasuryWallet = 0x265f05b5A1F083b337616d64f4B43f33CB7088C6;
    address public autoLPWallet = 0x06D35fd14cB1F80d085B33780F634c237921ba23;

    bool private swapping;
    modifier lockTheSwap {
        swapping = true;
        _;
        swapping = false;
    }

    uint256 private _snipeGenesisB;
    uint256 public snipersCaught;
    
    constructor () {
        _tOwned[_msgSender()] = _tTotal;
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router;
        pair = _pair;
        _approve(owner(), address(router), ~uint256(0));

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[marketingWallet] = true;
        _isExcludedFromFee[treasuryWallet] = true;
        _isExcludedFromFee[DEAD] = true;

        _isExcludedFromMaxBalance[owner()] = true;
        _isExcludedFromMaxBalance[address(this)] = true;
        _isExcludedFromMaxBalance[pair] = true;
        _isExcludedFromMaxBalance[marketingWallet] = true;
        _isExcludedFromMaxBalance[treasuryWallet] = true;
        _isExcludedFromMaxBalance[DEAD] = true;
        
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount);
        return true;
    }

    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 _sniperCheck(address from,address to, bool isBuy) internal{
        if(isBuy){
            if(block.number < _snipeGenesisB + 6){
                snipersCaught++;
                _sniperWindowTime[to] = block.timestamp + 3;
            }
        }else{
            if (isSniper(from))
                require(block.timestamp < _sniperWindowTime[from]);
        }
    }
    
    function _preTransferCheck(address from,address to,uint256 amount) internal {
        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");
        require(amount <= maxTxAmount || _isExcludedFromMaxBalance[from], "Transfer amount exceeds the maxTxAmount.");
        require(balanceOf(to) + amount <= maxWallet || _isExcludedFromMaxBalance[to], "Transfer amount exceeds the maxWallet.");
        if(from == owner() && to == pair && balanceOf(pair) == 0)
            _snipeGenesisB = block.number;
        if (balanceOf(address(this)) >= swapThreshold && !swapping && from != pair && from != owner() && to != owner())
            swapAndLiquify();
    }

    function _getValues(address from,address to, uint256 amount) private returns(uint256){
        uint256 taxedTokens = amount * buyTax / 100;
        if(to == pair)
            taxedTokens = amount * sellTax / 100;
        if (taxedTokens > 0){
            _tOwned[address(this)] += taxedTokens;
            emit Transfer (from, address(this), taxedTokens);
        }
        return (amount - taxedTokens);
    }
    
    function _transfer(address from,address to,uint256 amount) private {
        _preTransferCheck(from, to, amount);
        _tOwned[from] -= amount;
        uint256 transferAmount = amount;
        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            transferAmount = _getValues(from, to, amount);
            _sniperCheck(from,to,from == pair);
        }
        _tOwned[to] += transferAmount;
        emit Transfer(from, to, transferAmount);
    }

    function swapAndLiquify() private lockTheSwap{

        uint256 tokensForMarketing = swapThreshold * 40 / 100;
        uint256 tokensForTreasury = swapThreshold * 40 / 100;
        uint256 tokensForLiquidity = swapThreshold * 20 / 100;
        
        if(tokensForMarketing > 0){
            uint256 ethSwapped = swapTokensForETH(tokensForMarketing);
            if(ethSwapped > 0)
                payable(marketingWallet).transfer(ethSwapped);
        }

        if(tokensForTreasury > 0){
            uint256 ethSwapped = swapTokensForETH(tokensForTreasury);
            if(ethSwapped > 0)
                payable(treasuryWallet).transfer(ethSwapped);
        }

        if(tokensForLiquidity > 0){
            uint half = tokensForLiquidity / 2;
            uint otherHalf = tokensForLiquidity - half;
            uint balAutoLP = swapTokensForETH(half);
            if (balAutoLP > 0)
                addLiquidity(otherHalf, balAutoLP);
        }

        if (address(this).balance > 0)
            payable(marketingWallet).sendValue(address(this).balance);

    }

    function swapTokensForETH(uint256 tokenAmount) private returns (uint256) {
        uint256 initialBalance = address(this).balance;
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount);

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
        return (address(this).balance - initialBalance);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(router), tokenAmount);

        (,uint256 ethFromLiquidity,) = router.addLiquidityETH {value: ethAmount} (
            address(this),
            tokenAmount,
            0,
            0,
            autoLPWallet,
            block.timestamp
        );
        
        if (ethAmount - ethFromLiquidity > 0)
            payable(marketingWallet).sendValue (ethAmount - ethFromLiquidity);
    }

    receive() external payable {}
    
    function getBalances(address[] memory holders) public view returns(uint[] memory){
        uint length = holders.length;
        uint[] memory accountBalances = new uint[](length);
        for (uint i = 0; i < length; i++) {
            accountBalances[i] = balanceOf(holders[i]);
        }
        return accountBalances;
    }

    function isSniper(address holder) public view returns(bool){
        return _sniperWindowTime[holder] > 0 ? true : false;
    }

    function setContractLimits(uint256 maxTxAmountEXACT_ , uint256 maxWalletEXACT_) external onlyOwner{
        uint256 minimumAmount = 5_000 * (10**_decimals);
        require(maxTxAmountEXACT_ * (10**_decimals) >= minimumAmount, "Invalid Settings!");
        require(maxWalletEXACT_ * (10**_decimals) >= minimumAmount, "Invalid Settings!");
        maxTxAmount = maxTxAmountEXACT_ * (10**_decimals);
        maxWallet = maxWalletEXACT_ * (10**_decimals);
    }

    function setContractSettings(uint8 buyTax_ , uint8 sellTax_) external onlyOwner{
        require(buyTax_ <= 20 && sellTax_ <= 50, "Invalid Settings!");
        buyTax = buyTax_; 
        sellTax = sellTax_;
    }

    function manualSwap() external{
        require(msg.sender == marketingWallet);
        uint256 tokenBalance = balanceOf(address(this));
        if(tokenBalance > 0){
            uint256 ethSwapped = swapTokensForETH(tokenBalance);
            if(ethSwapped > 0)
                payable(marketingWallet).transfer(ethSwapped);
        }
        if (address(this).balance > 0)
            payable(marketingWallet).sendValue(address(this).balance);
    }


}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromMaxBalance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"autoLPWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"holders","type":"address[]"}],"name":"getBalances","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"isSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmountEXACT_","type":"uint256"},{"internalType":"uint256","name":"maxWalletEXACT_","type":"uint256"}],"name":"setContractLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buyTax_","type":"uint8"},{"internalType":"uint8","name":"sellTax_","type":"uint8"}],"name":"setContractSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipersCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526009600a62000014919062000e06565b620f424062000024919062000e57565b6008556009600a62000037919062000e06565b61138862000046919062000e57565b6009556009600a62000059919062000e06565b614e2062000068919062000e57565b600a556009600a6200007b919062000e06565b614e206200008a919062000e57565b600b556019600c60006101000a81548160ff021916908360ff1602179055506032600c60016101000a81548160ff021916908360ff1602179055507306d35fd14cb1f80d085b33780f634c237921ba23600c60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073265f05b5a1f083b337616d64f4b43f33cb7088c6600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507306d35fd14cb1f80d085b33780f634c237921ba23600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620001d157600080fd5b50620001f2620001e6620009a660201b60201c565b620009ae60201b60201c565b6008546003600062000209620009a660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d4919062000f0c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200033c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000362919062000f0c565b6040518363ffffffff1660e01b81526004016200038192919062000f4f565b6020604051808303816000875af1158015620003a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c7919062000f0c565b905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004916200045f62000a7260201b60201c565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660001962000a9b60201b60201c565b600160066000620004a762000a7260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000600c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016006600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000620006b462000a7260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000935620009a660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60085460405162000996919062000f8d565b60405180910390a35050620010eb565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000b0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b049062001031565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000b7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b7690620010c9565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000c5f919062000f8d565b60405180910390a3505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000cfa5780860481111562000cd25762000cd162000c6c565b5b600185161562000ce25780820291505b808102905062000cf28562000c9b565b945062000cb2565b94509492505050565b60008262000d15576001905062000de8565b8162000d25576000905062000de8565b816001811462000d3e576002811462000d495762000d7f565b600191505062000de8565b60ff84111562000d5e5762000d5d62000c6c565b5b8360020a91508482111562000d785762000d7762000c6c565b5b5062000de8565b5060208310610133831016604e8410600b841016171562000db95782820a90508381111562000db35762000db262000c6c565b5b62000de8565b62000dc8848484600162000ca8565b9250905081840481111562000de25762000de162000c6c565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000e138262000def565b915062000e208362000df9565b925062000e4f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000d03565b905092915050565b600062000e648262000def565b915062000e718362000def565b925082820262000e818162000def565b9150828204841483151762000e9b5762000e9a62000c6c565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ed48262000ea7565b9050919050565b62000ee68162000ec7565b811462000ef257600080fd5b50565b60008151905062000f068162000edb565b92915050565b60006020828403121562000f255762000f2462000ea2565b5b600062000f358482850162000ef5565b91505092915050565b62000f498162000ec7565b82525050565b600060408201905062000f66600083018562000f3e565b62000f75602083018462000f3e565b9392505050565b62000f878162000def565b82525050565b600060208201905062000fa4600083018462000f7c565b92915050565b600082825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006200101960248362000faa565b9150620010268262000fbb565b604082019050919050565b600060208201905081810360008301526200104c816200100a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000620010b160228362000faa565b9150620010be8262001053565b604082019050919050565b60006020820190508181036000830152620010e481620010a2565b9050919050565b61375180620010fb6000396000f3fe6080604052600436106101d15760003560e01c806375f0a874116100f7578063a9059cbb11610095578063e79d416011610064578063e79d4160146106b1578063f2fde38b146106dc578063f887ea4014610705578063f8b45b0514610730576101d8565b8063a9059cbb146105e3578063b45ad8ec14610620578063cc1776d314610649578063dd62ed3e14610674576101d8565b80638c0b5e22116100d15780638c0b5e22146105375780638da5cb5b1461056257806395d89b411461058d578063a8aa1b31146105b8576101d8565b806375f0a874146104a6578063768dc710146104d15780637fe74a131461050e576101d8565b80632d2ae1c11161016f57806351bc3c851161013e57806351bc3c851461041057806356d3b98f1461042757806370a0823114610452578063715018a61461048f576101d8565b80632d2ae1c114610352578063313ce5671461038f5780634626402b146103ba5780634f7041a5146103e5576101d8565b80630f3a325f116101ab5780630f3a325f1461027057806318160ddd146102ad57806323b872dd146102d857806328c61f4114610315576101d8565b80630445b667146101dd57806306fdde0314610208578063095ea7b314610233576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f261075b565b6040516101ff919061244a565b60405180910390f35b34801561021457600080fd5b5061021d610761565b60405161022a91906124f5565b60405180910390f35b34801561023f57600080fd5b5061025a600480360381019061025591906125b5565b61079e565b6040516102679190612610565b60405180910390f35b34801561027c57600080fd5b506102976004803603810190610292919061262b565b6107bc565b6040516102a49190612610565b60405180910390f35b3480156102b957600080fd5b506102c2610815565b6040516102cf919061244a565b60405180910390f35b3480156102e457600080fd5b506102ff60048036038101906102fa9190612658565b61081f565b60405161030c9190612610565b60405180910390f35b34801561032157600080fd5b5061033c6004803603810190610337919061262b565b6108d7565b6040516103499190612610565b60405180910390f35b34801561035e57600080fd5b50610379600480360381019061037491906127f3565b6108f7565b60405161038691906128fa565b60405180910390f35b34801561039b57600080fd5b506103a46109b7565b6040516103b19190612938565b60405180910390f35b3480156103c657600080fd5b506103cf6109c0565b6040516103dc9190612962565b60405180910390f35b3480156103f157600080fd5b506103fa6109e6565b6040516104079190612938565b60405180910390f35b34801561041c57600080fd5b506104256109f9565b005b34801561043357600080fd5b5061043c610b43565b6040516104499190612962565b60405180910390f35b34801561045e57600080fd5b506104796004803603810190610474919061262b565b610b69565b604051610486919061244a565b60405180910390f35b34801561049b57600080fd5b506104a4610bb2565b005b3480156104b257600080fd5b506104bb610c3a565b6040516104c89190612962565b60405180910390f35b3480156104dd57600080fd5b506104f860048036038101906104f3919061262b565b610c60565b6040516105059190612610565b60405180910390f35b34801561051a57600080fd5b50610535600480360381019061053091906129a9565b610c80565b005b34801561054357600080fd5b5061054c610d8d565b604051610559919061244a565b60405180910390f35b34801561056e57600080fd5b50610577610d93565b6040516105849190612962565b60405180910390f35b34801561059957600080fd5b506105a2610dbc565b6040516105af91906124f5565b60405180910390f35b3480156105c457600080fd5b506105cd610df9565b6040516105da9190612962565b60405180910390f35b3480156105ef57600080fd5b5061060a600480360381019061060591906125b5565b610e1f565b6040516106179190612610565b60405180910390f35b34801561062c57600080fd5b50610647600480360381019061064291906129e9565b610e3d565b005b34801561065557600080fd5b5061065e610fd1565b60405161066b9190612938565b60405180910390f35b34801561068057600080fd5b5061069b60048036038101906106969190612a29565b610fe4565b6040516106a8919061244a565b60405180910390f35b3480156106bd57600080fd5b506106c661106b565b6040516106d3919061244a565b60405180910390f35b3480156106e857600080fd5b5061070360048036038101906106fe919061262b565b611071565b005b34801561071157600080fd5b5061071a611168565b6040516107279190612ac8565b60405180910390f35b34801561073c57600080fd5b5061074561118e565b604051610752919061244a565b60405180910390f35b60095481565b60606040518060400160405280600a81526020017f5072696e74657220414900000000000000000000000000000000000000000000815250905090565b60006107b26107ab611194565b848461119c565b6001905092915050565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161080b57600061080e565b60015b9050919050565b6000600854905090565b600061082c848484611365565b6108cc84610838611194565b84600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610882611194565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108c79190612b12565b61119c565b600190509392505050565b60076020528060005260406000206000915054906101000a900460ff1681565b606060008251905060008167ffffffffffffffff81111561091b5761091a6126b0565b5b6040519080825280602002602001820160405280156109495781602001602082028036833780820191505090505b50905060005b828110156109ac5761097a85828151811061096d5761096c612b46565b5b6020026020010151610b69565b82828151811061098d5761098c612b46565b5b60200260200101818152505080806109a490612b75565b91505061094f565b508092505050919050565b60006009905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c60009054906101000a900460ff1681565b600c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a5357600080fd5b6000610a5e30610b69565b90506000811115610aeb576000610a748261159e565b90506000811115610ae957600c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610ae7573d6000803e3d6000fd5b505b505b6000471115610b4057610b3f47600c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117f890919063ffffffff16565b5b50565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610bba611194565b73ffffffffffffffffffffffffffffffffffffffff16610bd8610d93565b73ffffffffffffffffffffffffffffffffffffffff1614610c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2590612c09565b60405180910390fd5b610c3860006118ec565b565b600c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60066020528060005260406000206000915054906101000a900460ff1681565b610c88611194565b73ffffffffffffffffffffffffffffffffffffffff16610ca6610d93565b73ffffffffffffffffffffffffffffffffffffffff1614610cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf390612c09565b60405180910390fd5b60148260ff1611158015610d14575060328160ff1611155b610d53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4a90612c75565b60405180910390fd5b81600c60006101000a81548160ff021916908360ff16021790555080600c60016101000a81548160ff021916908360ff1602179055505050565b600a5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f5041490000000000000000000000000000000000000000000000000000000000815250905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610e33610e2c611194565b8484611365565b6001905092915050565b610e45611194565b73ffffffffffffffffffffffffffffffffffffffff16610e63610d93565b73ffffffffffffffffffffffffffffffffffffffff1614610eb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb090612c09565b60405180910390fd5b60006009600a610ec99190612dc8565b611388610ed69190612e13565b9050806009600a610ee79190612dc8565b84610ef29190612e13565b1015610f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2a90612c75565b60405180910390fd5b806009600a610f429190612dc8565b83610f4d9190612e13565b1015610f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8590612c75565b60405180910390fd5b6009600a610f9c9190612dc8565b83610fa79190612e13565b600a819055506009600a610fbb9190612dc8565b82610fc69190612e13565b600b81905550505050565b600c60019054906101000a900460ff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60105481565b611079611194565b73ffffffffffffffffffffffffffffffffffffffff16611097610d93565b73ffffffffffffffffffffffffffffffffffffffff16146110ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e490612c09565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361115c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115390612ec7565b60405180910390fd5b611165816118ec565b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361120b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120290612f59565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361127a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127190612feb565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611358919061244a565b60405180910390a3505050565b6113708383836119b0565b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113bf9190612b12565b925050819055506000819050600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561146f5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156114dd5761147f848484611dfa565b90506114dc8484600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614611f86565b5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461152c919061300b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611590919061244a565b60405180910390a350505050565b6000804790506000600267ffffffffffffffff8111156115c1576115c06126b0565b5b6040519080825280602002602001820160405280156115ef5781602001602082028036833780820191505090505b509050308160008151811061160757611606612b46565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d29190613054565b816001815181106116e6576116e5612b46565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061174d30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168661119c565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b81526004016117b195949392919061317a565b600060405180830381600087803b1580156117cb57600080fd5b505af11580156117df573d6000803e3d6000fd5b5050505081476117ef9190612b12565b92505050919050565b8047101561183b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183290613220565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405161186190613271565b60006040518083038185875af1925050503d806000811461189e576040519150601f19603f3d011682016040523d82523d6000602084013e6118a3565b606091505b50509050806118e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118de906132f8565b60405180910390fd5b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a169061338a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a859061341c565b60405180910390fd5b60008111611ad1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac8906134ae565b60405180910390fd5b600a5481111580611b2b5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6190613540565b60405180910390fd5b600b5481611b7784610b69565b611b81919061300b565b111580611bd75750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611c16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0d906135d2565b60405180910390fd5b611c1e610d93565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ca55750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8015611cdb57506000611cd9600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610b69565b145b15611ce85743600f819055505b600954611cf430610b69565b10158015611d0f5750600e60149054906101000a900460ff16155b8015611d695750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611da85750611d78610d93565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611de75750611db7610d93565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611df557611df4612070565b5b505050565b6000806064600c60009054906101000a900460ff1660ff1684611e1d9190612e13565b611e279190613621565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611eab576064600c60019054906101000a900460ff1660ff1684611e9e9190612e13565b611ea89190613621565b90505b6000811115611f705780600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f03919061300b565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f67919061244a565b60405180910390a35b8083611f7c9190612b12565b9150509392505050565b8015612010576006600f54611f9b919061300b565b43101561200b5760106000815480929190611fb590612b75565b9190505550600342611fc7919061300b565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61206b565b612019836107bc565b1561206a57600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054421061206957600080fd5b5b5b505050565b6001600e60146101000a81548160ff02191690831515021790555060006064602860095461209e9190612e13565b6120a89190613621565b90506000606460286009546120bd9190612e13565b6120c79190613621565b90506000606460146009546120dc9190612e13565b6120e69190613621565b905060008311156121735760006120fc8461159e565b9050600081111561217157600c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561216f573d6000803e3d6000fd5b505b505b60008211156121fe5760006121878361159e565b905060008111156121fc57600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156121fa573d6000803e3d6000fd5b505b505b600081111561224d5760006002826122169190613621565b9050600081836122269190612b12565b905060006122338361159e565b905060008111156122495761224882826122c2565b5b5050505b60004711156122a2576122a147600c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117f890919063ffffffff16565b5b5050506000600e60146101000a81548160ff021916908315150217905550565b6122ef30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461119c565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719833086600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161237a96959493929190613652565b60606040518083038185885af1158015612398573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906123bd91906136c8565b50915050600081836123cf9190612b12565b111561242c5761242b81836123e49190612b12565b600c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117f890919063ffffffff16565b5b505050565b6000819050919050565b61244481612431565b82525050565b600060208201905061245f600083018461243b565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561249f578082015181840152602081019050612484565b60008484015250505050565b6000601f19601f8301169050919050565b60006124c782612465565b6124d18185612470565b93506124e1818560208601612481565b6124ea816124ab565b840191505092915050565b6000602082019050818103600083015261250f81846124bc565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125568261252b565b9050919050565b6125668161254b565b811461257157600080fd5b50565b6000813590506125838161255d565b92915050565b61259281612431565b811461259d57600080fd5b50565b6000813590506125af81612589565b92915050565b600080604083850312156125cc576125cb612521565b5b60006125da85828601612574565b92505060206125eb858286016125a0565b9150509250929050565b60008115159050919050565b61260a816125f5565b82525050565b60006020820190506126256000830184612601565b92915050565b60006020828403121561264157612640612521565b5b600061264f84828501612574565b91505092915050565b60008060006060848603121561267157612670612521565b5b600061267f86828701612574565b935050602061269086828701612574565b92505060406126a1868287016125a0565b9150509250925092565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6126e8826124ab565b810181811067ffffffffffffffff82111715612707576127066126b0565b5b80604052505050565b600061271a612517565b905061272682826126df565b919050565b600067ffffffffffffffff821115612746576127456126b0565b5b602082029050602081019050919050565b600080fd5b600061276f61276a8461272b565b612710565b9050808382526020820190506020840283018581111561279257612791612757565b5b835b818110156127bb57806127a78882612574565b845260208401935050602081019050612794565b5050509392505050565b600082601f8301126127da576127d96126ab565b5b81356127ea84826020860161275c565b91505092915050565b60006020828403121561280957612808612521565b5b600082013567ffffffffffffffff81111561282757612826612526565b5b612833848285016127c5565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61287181612431565b82525050565b60006128838383612868565b60208301905092915050565b6000602082019050919050565b60006128a78261283c565b6128b18185612847565b93506128bc83612858565b8060005b838110156128ed5781516128d48882612877565b97506128df8361288f565b9250506001810190506128c0565b5085935050505092915050565b60006020820190508181036000830152612914818461289c565b905092915050565b600060ff82169050919050565b6129328161291c565b82525050565b600060208201905061294d6000830184612929565b92915050565b61295c8161254b565b82525050565b60006020820190506129776000830184612953565b92915050565b6129868161291c565b811461299157600080fd5b50565b6000813590506129a38161297d565b92915050565b600080604083850312156129c0576129bf612521565b5b60006129ce85828601612994565b92505060206129df85828601612994565b9150509250929050565b60008060408385031215612a00576129ff612521565b5b6000612a0e858286016125a0565b9250506020612a1f858286016125a0565b9150509250929050565b60008060408385031215612a4057612a3f612521565b5b6000612a4e85828601612574565b9250506020612a5f85828601612574565b9150509250929050565b6000819050919050565b6000612a8e612a89612a848461252b565b612a69565b61252b565b9050919050565b6000612aa082612a73565b9050919050565b6000612ab282612a95565b9050919050565b612ac281612aa7565b82525050565b6000602082019050612add6000830184612ab9565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612b1d82612431565b9150612b2883612431565b9250828203905081811115612b4057612b3f612ae3565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612b8082612431565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612bb257612bb1612ae3565b5b600182019050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612bf3602083612470565b9150612bfe82612bbd565b602082019050919050565b60006020820190508181036000830152612c2281612be6565b9050919050565b7f496e76616c69642053657474696e677321000000000000000000000000000000600082015250565b6000612c5f601183612470565b9150612c6a82612c29565b602082019050919050565b60006020820190508181036000830152612c8e81612c52565b9050919050565b60008160011c9050919050565b6000808291508390505b6001851115612cec57808604811115612cc857612cc7612ae3565b5b6001851615612cd75780820291505b8081029050612ce585612c95565b9450612cac565b94509492505050565b600082612d055760019050612dc1565b81612d135760009050612dc1565b8160018114612d295760028114612d3357612d62565b6001915050612dc1565b60ff841115612d4557612d44612ae3565b5b8360020a915084821115612d5c57612d5b612ae3565b5b50612dc1565b5060208310610133831016604e8410600b8410161715612d975782820a905083811115612d9257612d91612ae3565b5b612dc1565b612da48484846001612ca2565b92509050818404811115612dbb57612dba612ae3565b5b81810290505b9392505050565b6000612dd382612431565b9150612dde8361291c565b9250612e0b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612cf5565b905092915050565b6000612e1e82612431565b9150612e2983612431565b9250828202612e3781612431565b91508282048414831517612e4e57612e4d612ae3565b5b5092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612eb1602683612470565b9150612ebc82612e55565b604082019050919050565b60006020820190508181036000830152612ee081612ea4565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612f43602483612470565b9150612f4e82612ee7565b604082019050919050565b60006020820190508181036000830152612f7281612f36565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612fd5602283612470565b9150612fe082612f79565b604082019050919050565b6000602082019050818103600083015261300481612fc8565b9050919050565b600061301682612431565b915061302183612431565b925082820190508082111561303957613038612ae3565b5b92915050565b60008151905061304e8161255d565b92915050565b60006020828403121561306a57613069612521565b5b60006130788482850161303f565b91505092915050565b6000819050919050565b60006130a66130a161309c84613081565b612a69565b612431565b9050919050565b6130b68161308b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6130f18161254b565b82525050565b600061310383836130e8565b60208301905092915050565b6000602082019050919050565b6000613127826130bc565b61313181856130c7565b935061313c836130d8565b8060005b8381101561316d57815161315488826130f7565b975061315f8361310f565b925050600181019050613140565b5085935050505092915050565b600060a08201905061318f600083018861243b565b61319c60208301876130ad565b81810360408301526131ae818661311c565b90506131bd6060830185612953565b6131ca608083018461243b565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b600061320a601d83612470565b9150613215826131d4565b602082019050919050565b60006020820190508181036000830152613239816131fd565b9050919050565b600081905092915050565b50565b600061325b600083613240565b91506132668261324b565b600082019050919050565b600061327c8261324e565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b60006132e2603a83612470565b91506132ed82613286565b604082019050919050565b60006020820190508181036000830152613311816132d5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613374602583612470565b915061337f82613318565b604082019050919050565b600060208201905081810360008301526133a381613367565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613406602383612470565b9150613411826133aa565b604082019050919050565b60006020820190508181036000830152613435816133f9565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613498602983612470565b91506134a38261343c565b604082019050919050565b600060208201905081810360008301526134c78161348b565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b600061352a602883612470565b9150613535826134ce565b604082019050919050565b600060208201905081810360008301526135598161351d565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785760008201527f616c6c65742e0000000000000000000000000000000000000000000000000000602082015250565b60006135bc602683612470565b91506135c782613560565b604082019050919050565b600060208201905081810360008301526135eb816135af565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061362c82612431565b915061363783612431565b925082613647576136466135f2565b5b828204905092915050565b600060c0820190506136676000830189612953565b613674602083018861243b565b61368160408301876130ad565b61368e60608301866130ad565b61369b6080830185612953565b6136a860a083018461243b565b979650505050505050565b6000815190506136c281612589565b92915050565b6000806000606084860312156136e1576136e0612521565b5b60006136ef868287016136b3565b9350506020613700868287016136b3565b9250506040613711868287016136b3565b915050925092509256fea264697066735822122019b9a911329dca17bdf74deae44a2ba43efee53246c62bb4d7277bb4c9719fad64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101d15760003560e01c806375f0a874116100f7578063a9059cbb11610095578063e79d416011610064578063e79d4160146106b1578063f2fde38b146106dc578063f887ea4014610705578063f8b45b0514610730576101d8565b8063a9059cbb146105e3578063b45ad8ec14610620578063cc1776d314610649578063dd62ed3e14610674576101d8565b80638c0b5e22116100d15780638c0b5e22146105375780638da5cb5b1461056257806395d89b411461058d578063a8aa1b31146105b8576101d8565b806375f0a874146104a6578063768dc710146104d15780637fe74a131461050e576101d8565b80632d2ae1c11161016f57806351bc3c851161013e57806351bc3c851461041057806356d3b98f1461042757806370a0823114610452578063715018a61461048f576101d8565b80632d2ae1c114610352578063313ce5671461038f5780634626402b146103ba5780634f7041a5146103e5576101d8565b80630f3a325f116101ab5780630f3a325f1461027057806318160ddd146102ad57806323b872dd146102d857806328c61f4114610315576101d8565b80630445b667146101dd57806306fdde0314610208578063095ea7b314610233576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f261075b565b6040516101ff919061244a565b60405180910390f35b34801561021457600080fd5b5061021d610761565b60405161022a91906124f5565b60405180910390f35b34801561023f57600080fd5b5061025a600480360381019061025591906125b5565b61079e565b6040516102679190612610565b60405180910390f35b34801561027c57600080fd5b506102976004803603810190610292919061262b565b6107bc565b6040516102a49190612610565b60405180910390f35b3480156102b957600080fd5b506102c2610815565b6040516102cf919061244a565b60405180910390f35b3480156102e457600080fd5b506102ff60048036038101906102fa9190612658565b61081f565b60405161030c9190612610565b60405180910390f35b34801561032157600080fd5b5061033c6004803603810190610337919061262b565b6108d7565b6040516103499190612610565b60405180910390f35b34801561035e57600080fd5b50610379600480360381019061037491906127f3565b6108f7565b60405161038691906128fa565b60405180910390f35b34801561039b57600080fd5b506103a46109b7565b6040516103b19190612938565b60405180910390f35b3480156103c657600080fd5b506103cf6109c0565b6040516103dc9190612962565b60405180910390f35b3480156103f157600080fd5b506103fa6109e6565b6040516104079190612938565b60405180910390f35b34801561041c57600080fd5b506104256109f9565b005b34801561043357600080fd5b5061043c610b43565b6040516104499190612962565b60405180910390f35b34801561045e57600080fd5b506104796004803603810190610474919061262b565b610b69565b604051610486919061244a565b60405180910390f35b34801561049b57600080fd5b506104a4610bb2565b005b3480156104b257600080fd5b506104bb610c3a565b6040516104c89190612962565b60405180910390f35b3480156104dd57600080fd5b506104f860048036038101906104f3919061262b565b610c60565b6040516105059190612610565b60405180910390f35b34801561051a57600080fd5b50610535600480360381019061053091906129a9565b610c80565b005b34801561054357600080fd5b5061054c610d8d565b604051610559919061244a565b60405180910390f35b34801561056e57600080fd5b50610577610d93565b6040516105849190612962565b60405180910390f35b34801561059957600080fd5b506105a2610dbc565b6040516105af91906124f5565b60405180910390f35b3480156105c457600080fd5b506105cd610df9565b6040516105da9190612962565b60405180910390f35b3480156105ef57600080fd5b5061060a600480360381019061060591906125b5565b610e1f565b6040516106179190612610565b60405180910390f35b34801561062c57600080fd5b50610647600480360381019061064291906129e9565b610e3d565b005b34801561065557600080fd5b5061065e610fd1565b60405161066b9190612938565b60405180910390f35b34801561068057600080fd5b5061069b60048036038101906106969190612a29565b610fe4565b6040516106a8919061244a565b60405180910390f35b3480156106bd57600080fd5b506106c661106b565b6040516106d3919061244a565b60405180910390f35b3480156106e857600080fd5b5061070360048036038101906106fe919061262b565b611071565b005b34801561071157600080fd5b5061071a611168565b6040516107279190612ac8565b60405180910390f35b34801561073c57600080fd5b5061074561118e565b604051610752919061244a565b60405180910390f35b60095481565b60606040518060400160405280600a81526020017f5072696e74657220414900000000000000000000000000000000000000000000815250905090565b60006107b26107ab611194565b848461119c565b6001905092915050565b600080600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161080b57600061080e565b60015b9050919050565b6000600854905090565b600061082c848484611365565b6108cc84610838611194565b84600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610882611194565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108c79190612b12565b61119c565b600190509392505050565b60076020528060005260406000206000915054906101000a900460ff1681565b606060008251905060008167ffffffffffffffff81111561091b5761091a6126b0565b5b6040519080825280602002602001820160405280156109495781602001602082028036833780820191505090505b50905060005b828110156109ac5761097a85828151811061096d5761096c612b46565b5b6020026020010151610b69565b82828151811061098d5761098c612b46565b5b60200260200101818152505080806109a490612b75565b91505061094f565b508092505050919050565b60006009905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c60009054906101000a900460ff1681565b600c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a5357600080fd5b6000610a5e30610b69565b90506000811115610aeb576000610a748261159e565b90506000811115610ae957600c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610ae7573d6000803e3d6000fd5b505b505b6000471115610b4057610b3f47600c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117f890919063ffffffff16565b5b50565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610bba611194565b73ffffffffffffffffffffffffffffffffffffffff16610bd8610d93565b73ffffffffffffffffffffffffffffffffffffffff1614610c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2590612c09565b60405180910390fd5b610c3860006118ec565b565b600c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60066020528060005260406000206000915054906101000a900460ff1681565b610c88611194565b73ffffffffffffffffffffffffffffffffffffffff16610ca6610d93565b73ffffffffffffffffffffffffffffffffffffffff1614610cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf390612c09565b60405180910390fd5b60148260ff1611158015610d14575060328160ff1611155b610d53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4a90612c75565b60405180910390fd5b81600c60006101000a81548160ff021916908360ff16021790555080600c60016101000a81548160ff021916908360ff1602179055505050565b600a5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f5041490000000000000000000000000000000000000000000000000000000000815250905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610e33610e2c611194565b8484611365565b6001905092915050565b610e45611194565b73ffffffffffffffffffffffffffffffffffffffff16610e63610d93565b73ffffffffffffffffffffffffffffffffffffffff1614610eb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb090612c09565b60405180910390fd5b60006009600a610ec99190612dc8565b611388610ed69190612e13565b9050806009600a610ee79190612dc8565b84610ef29190612e13565b1015610f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2a90612c75565b60405180910390fd5b806009600a610f429190612dc8565b83610f4d9190612e13565b1015610f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8590612c75565b60405180910390fd5b6009600a610f9c9190612dc8565b83610fa79190612e13565b600a819055506009600a610fbb9190612dc8565b82610fc69190612e13565b600b81905550505050565b600c60019054906101000a900460ff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60105481565b611079611194565b73ffffffffffffffffffffffffffffffffffffffff16611097610d93565b73ffffffffffffffffffffffffffffffffffffffff16146110ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e490612c09565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361115c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115390612ec7565b60405180910390fd5b611165816118ec565b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361120b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120290612f59565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361127a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127190612feb565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611358919061244a565b60405180910390a3505050565b6113708383836119b0565b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113bf9190612b12565b925050819055506000819050600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561146f5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156114dd5761147f848484611dfa565b90506114dc8484600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614611f86565b5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461152c919061300b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611590919061244a565b60405180910390a350505050565b6000804790506000600267ffffffffffffffff8111156115c1576115c06126b0565b5b6040519080825280602002602001820160405280156115ef5781602001602082028036833780820191505090505b509050308160008151811061160757611606612b46565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d29190613054565b816001815181106116e6576116e5612b46565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061174d30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168661119c565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b81526004016117b195949392919061317a565b600060405180830381600087803b1580156117cb57600080fd5b505af11580156117df573d6000803e3d6000fd5b5050505081476117ef9190612b12565b92505050919050565b8047101561183b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183290613220565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405161186190613271565b60006040518083038185875af1925050503d806000811461189e576040519150601f19603f3d011682016040523d82523d6000602084013e6118a3565b606091505b50509050806118e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118de906132f8565b60405180910390fd5b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a169061338a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a859061341c565b60405180910390fd5b60008111611ad1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac8906134ae565b60405180910390fd5b600a5481111580611b2b5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6190613540565b60405180910390fd5b600b5481611b7784610b69565b611b81919061300b565b111580611bd75750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611c16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0d906135d2565b60405180910390fd5b611c1e610d93565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ca55750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8015611cdb57506000611cd9600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610b69565b145b15611ce85743600f819055505b600954611cf430610b69565b10158015611d0f5750600e60149054906101000a900460ff16155b8015611d695750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611da85750611d78610d93565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611de75750611db7610d93565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611df557611df4612070565b5b505050565b6000806064600c60009054906101000a900460ff1660ff1684611e1d9190612e13565b611e279190613621565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611eab576064600c60019054906101000a900460ff1660ff1684611e9e9190612e13565b611ea89190613621565b90505b6000811115611f705780600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f03919061300b565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f67919061244a565b60405180910390a35b8083611f7c9190612b12565b9150509392505050565b8015612010576006600f54611f9b919061300b565b43101561200b5760106000815480929190611fb590612b75565b9190505550600342611fc7919061300b565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61206b565b612019836107bc565b1561206a57600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054421061206957600080fd5b5b5b505050565b6001600e60146101000a81548160ff02191690831515021790555060006064602860095461209e9190612e13565b6120a89190613621565b90506000606460286009546120bd9190612e13565b6120c79190613621565b90506000606460146009546120dc9190612e13565b6120e69190613621565b905060008311156121735760006120fc8461159e565b9050600081111561217157600c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561216f573d6000803e3d6000fd5b505b505b60008211156121fe5760006121878361159e565b905060008111156121fc57600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156121fa573d6000803e3d6000fd5b505b505b600081111561224d5760006002826122169190613621565b9050600081836122269190612b12565b905060006122338361159e565b905060008111156122495761224882826122c2565b5b5050505b60004711156122a2576122a147600c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117f890919063ffffffff16565b5b5050506000600e60146101000a81548160ff021916908315150217905550565b6122ef30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461119c565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719833086600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161237a96959493929190613652565b60606040518083038185885af1158015612398573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906123bd91906136c8565b50915050600081836123cf9190612b12565b111561242c5761242b81836123e49190612b12565b600c60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117f890919063ffffffff16565b5b505050565b6000819050919050565b61244481612431565b82525050565b600060208201905061245f600083018461243b565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561249f578082015181840152602081019050612484565b60008484015250505050565b6000601f19601f8301169050919050565b60006124c782612465565b6124d18185612470565b93506124e1818560208601612481565b6124ea816124ab565b840191505092915050565b6000602082019050818103600083015261250f81846124bc565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125568261252b565b9050919050565b6125668161254b565b811461257157600080fd5b50565b6000813590506125838161255d565b92915050565b61259281612431565b811461259d57600080fd5b50565b6000813590506125af81612589565b92915050565b600080604083850312156125cc576125cb612521565b5b60006125da85828601612574565b92505060206125eb858286016125a0565b9150509250929050565b60008115159050919050565b61260a816125f5565b82525050565b60006020820190506126256000830184612601565b92915050565b60006020828403121561264157612640612521565b5b600061264f84828501612574565b91505092915050565b60008060006060848603121561267157612670612521565b5b600061267f86828701612574565b935050602061269086828701612574565b92505060406126a1868287016125a0565b9150509250925092565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6126e8826124ab565b810181811067ffffffffffffffff82111715612707576127066126b0565b5b80604052505050565b600061271a612517565b905061272682826126df565b919050565b600067ffffffffffffffff821115612746576127456126b0565b5b602082029050602081019050919050565b600080fd5b600061276f61276a8461272b565b612710565b9050808382526020820190506020840283018581111561279257612791612757565b5b835b818110156127bb57806127a78882612574565b845260208401935050602081019050612794565b5050509392505050565b600082601f8301126127da576127d96126ab565b5b81356127ea84826020860161275c565b91505092915050565b60006020828403121561280957612808612521565b5b600082013567ffffffffffffffff81111561282757612826612526565b5b612833848285016127c5565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61287181612431565b82525050565b60006128838383612868565b60208301905092915050565b6000602082019050919050565b60006128a78261283c565b6128b18185612847565b93506128bc83612858565b8060005b838110156128ed5781516128d48882612877565b97506128df8361288f565b9250506001810190506128c0565b5085935050505092915050565b60006020820190508181036000830152612914818461289c565b905092915050565b600060ff82169050919050565b6129328161291c565b82525050565b600060208201905061294d6000830184612929565b92915050565b61295c8161254b565b82525050565b60006020820190506129776000830184612953565b92915050565b6129868161291c565b811461299157600080fd5b50565b6000813590506129a38161297d565b92915050565b600080604083850312156129c0576129bf612521565b5b60006129ce85828601612994565b92505060206129df85828601612994565b9150509250929050565b60008060408385031215612a00576129ff612521565b5b6000612a0e858286016125a0565b9250506020612a1f858286016125a0565b9150509250929050565b60008060408385031215612a4057612a3f612521565b5b6000612a4e85828601612574565b9250506020612a5f85828601612574565b9150509250929050565b6000819050919050565b6000612a8e612a89612a848461252b565b612a69565b61252b565b9050919050565b6000612aa082612a73565b9050919050565b6000612ab282612a95565b9050919050565b612ac281612aa7565b82525050565b6000602082019050612add6000830184612ab9565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612b1d82612431565b9150612b2883612431565b9250828203905081811115612b4057612b3f612ae3565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612b8082612431565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612bb257612bb1612ae3565b5b600182019050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612bf3602083612470565b9150612bfe82612bbd565b602082019050919050565b60006020820190508181036000830152612c2281612be6565b9050919050565b7f496e76616c69642053657474696e677321000000000000000000000000000000600082015250565b6000612c5f601183612470565b9150612c6a82612c29565b602082019050919050565b60006020820190508181036000830152612c8e81612c52565b9050919050565b60008160011c9050919050565b6000808291508390505b6001851115612cec57808604811115612cc857612cc7612ae3565b5b6001851615612cd75780820291505b8081029050612ce585612c95565b9450612cac565b94509492505050565b600082612d055760019050612dc1565b81612d135760009050612dc1565b8160018114612d295760028114612d3357612d62565b6001915050612dc1565b60ff841115612d4557612d44612ae3565b5b8360020a915084821115612d5c57612d5b612ae3565b5b50612dc1565b5060208310610133831016604e8410600b8410161715612d975782820a905083811115612d9257612d91612ae3565b5b612dc1565b612da48484846001612ca2565b92509050818404811115612dbb57612dba612ae3565b5b81810290505b9392505050565b6000612dd382612431565b9150612dde8361291c565b9250612e0b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612cf5565b905092915050565b6000612e1e82612431565b9150612e2983612431565b9250828202612e3781612431565b91508282048414831517612e4e57612e4d612ae3565b5b5092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612eb1602683612470565b9150612ebc82612e55565b604082019050919050565b60006020820190508181036000830152612ee081612ea4565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612f43602483612470565b9150612f4e82612ee7565b604082019050919050565b60006020820190508181036000830152612f7281612f36565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612fd5602283612470565b9150612fe082612f79565b604082019050919050565b6000602082019050818103600083015261300481612fc8565b9050919050565b600061301682612431565b915061302183612431565b925082820190508082111561303957613038612ae3565b5b92915050565b60008151905061304e8161255d565b92915050565b60006020828403121561306a57613069612521565b5b60006130788482850161303f565b91505092915050565b6000819050919050565b60006130a66130a161309c84613081565b612a69565b612431565b9050919050565b6130b68161308b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6130f18161254b565b82525050565b600061310383836130e8565b60208301905092915050565b6000602082019050919050565b6000613127826130bc565b61313181856130c7565b935061313c836130d8565b8060005b8381101561316d57815161315488826130f7565b975061315f8361310f565b925050600181019050613140565b5085935050505092915050565b600060a08201905061318f600083018861243b565b61319c60208301876130ad565b81810360408301526131ae818661311c565b90506131bd6060830185612953565b6131ca608083018461243b565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b600061320a601d83612470565b9150613215826131d4565b602082019050919050565b60006020820190508181036000830152613239816131fd565b9050919050565b600081905092915050565b50565b600061325b600083613240565b91506132668261324b565b600082019050919050565b600061327c8261324e565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b60006132e2603a83612470565b91506132ed82613286565b604082019050919050565b60006020820190508181036000830152613311816132d5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613374602583612470565b915061337f82613318565b604082019050919050565b600060208201905081810360008301526133a381613367565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613406602383612470565b9150613411826133aa565b604082019050919050565b60006020820190508181036000830152613435816133f9565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613498602983612470565b91506134a38261343c565b604082019050919050565b600060208201905081810360008301526134c78161348b565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b600061352a602883612470565b9150613535826134ce565b604082019050919050565b600060208201905081810360008301526135598161351d565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785760008201527f616c6c65742e0000000000000000000000000000000000000000000000000000602082015250565b60006135bc602683612470565b91506135c782613560565b604082019050919050565b600060208201905081810360008301526135eb816135af565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061362c82612431565b915061363783612431565b925082613647576136466135f2565b5b828204905092915050565b600060c0820190506136676000830189612953565b613674602083018861243b565b61368160408301876130ad565b61368e60608301866130ad565b61369b6080830185612953565b6136a860a083018461243b565b979650505050505050565b6000815190506136c281612589565b92915050565b6000806000606084860312156136e1576136e0612521565b5b60006136ef868287016136b3565b9350506020613700868287016136b3565b9250506040613711868287016136b3565b915050925092509256fea264697066735822122019b9a911329dca17bdf74deae44a2ba43efee53246c62bb4d7277bb4c9719fad64736f6c63430008130033

Deployed Bytecode Sourcemap

3253:10134:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3828:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5713:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6544:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12086:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5990:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6713:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3657:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11743:335;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5899:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4343:74;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4015:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12919:461;;;;;;;;;;;;;:::i;:::-;;4424:72;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6093:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1244:94;;;;;;;;;;;;;:::i;:::-;;4261:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3599:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12695:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3890:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1021:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5804;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3379:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6218:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12223:464;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4046:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6393:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4672:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1346:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3351:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3950:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3828:54;;;;:::o;5713:83::-;5750:13;5783:5;;;;;;;;;;;;;;;;;5776:12;;5713:83;:::o;6544:161::-;6619:4;6636:39;6645:12;:10;:12::i;:::-;6659:7;6668:6;6636:8;:39::i;:::-;6693:4;6686:11;;6544:161;;;;:::o;12086:129::-;12140:4;12191:1;12163:17;:25;12181:6;12163:25;;;;;;;;;;;;;;;;:29;:44;;12202:5;12163:44;;;12195:4;12163:44;12156:51;;12086:129;;;:::o;5990:95::-;6043:7;6070;;6063:14;;5990:95;:::o;6713:266::-;6811:4;6828:36;6838:6;6846:9;6857:6;6828:9;:36::i;:::-;6875:74;6884:6;6892:12;:10;:12::i;:::-;6942:6;6906:11;:19;6918:6;6906:19;;;;;;;;;;;;;;;:33;6926:12;:10;:12::i;:::-;6906:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;6875:8;:74::i;:::-;6967:4;6960:11;;6713:266;;;;;:::o;3657:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;11743:335::-;11810:13;11835:11;11849:7;:14;11835:28;;11874:29;11917:6;11906:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11874:50;;11940:6;11935:103;11956:6;11952:1;:10;11935:103;;;12005:21;12015:7;12023:1;12015:10;;;;;;;;:::i;:::-;;;;;;;;12005:9;:21::i;:::-;11984:15;12000:1;11984:18;;;;;;;;:::i;:::-;;;;;;;:42;;;;;11964:3;;;;;:::i;:::-;;;;11935:103;;;;12055:15;12048:22;;;;11743:335;;;:::o;5899:83::-;5940:5;3759:1;5958:16;;5899:83;:::o;4343:74::-;;;;;;;;;;;;;:::o;4015:24::-;;;;;;;;;;;;;:::o;12919:461::-;12982:15;;;;;;;;;;;12968:29;;:10;:29;;;12960:38;;;;;;13009:20;13032:24;13050:4;13032:9;:24::i;:::-;13009:47;;13085:1;13070:12;:16;13067:194;;;13102:18;13123:30;13140:12;13123:16;:30::i;:::-;13102:51;;13184:1;13171:10;:14;13168:81;;;13212:15;;;;;;;;;;;13204:33;;:45;13238:10;13204:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13168:81;13087:174;13067:194;13299:1;13275:21;:25;13271:101;;;13315:57;13350:21;13323:15;;;;;;;;;;;13315:34;;;;:57;;;;:::i;:::-;13271:101;12949:431;12919:461::o;4424:72::-;;;;;;;;;;;;;:::o;6093:117::-;6159:7;6186;:16;6194:7;6186:16;;;;;;;;;;;;;;;;6179:23;;6093:117;;;:::o;1244:94::-;1167:12;:10;:12::i;:::-;1156:23;;:7;:5;:7::i;:::-;:23;;;1148:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1309:21:::1;1327:1;1309:9;:21::i;:::-;1244:94::o:0;4261:75::-;;;;;;;;;;;;;:::o;3599:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;12695:216::-;1167:12;:10;:12::i;:::-;1156:23;;:7;:5;:7::i;:::-;:23;;;1148:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12804:2:::1;12793:7;:13;;;;:31;;;;;12822:2;12810:8;:14;;;;12793:31;12785:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;12866:7;12857:6;;:16;;;;;;;;;;;;;;;;;;12895:8;12885:7;;:18;;;;;;;;;;;;;;;;;;12695:216:::0;;:::o;3890:53::-;;;;:::o;1021:87::-;1067:7;1094:6;;;;;;;;;;;1087:13;;1021:87;:::o;5804:::-;5843:13;5876:7;;;;;;;;;;;;;;;;;5869:14;;5804:87;:::o;3379:19::-;;;;;;;;;;;;;:::o;6218:167::-;6296:4;6313:42;6323:12;:10;:12::i;:::-;6337:9;6348:6;6313:9;:42::i;:::-;6373:4;6366:11;;6218:167;;;;:::o;12223:464::-;1167:12;:10;:12::i;:::-;1156:23;;:7;:5;:7::i;:::-;:23;;;1148:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12332:21:::1;3759:1;12365:2;:13;;;;:::i;:::-;12356:5;:23;;;;:::i;:::-;12332:47;;12437:13;3759:1;12419:2;:13;;;;:::i;:::-;12398:17;:35;;;;:::i;:::-;:52;;12390:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;12528:13;3759:1;12510:2;:13;;;;:::i;:::-;12491:15;:33;;;;:::i;:::-;:50;;12483:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;3759:1;12609:2;:13;;;;:::i;:::-;12588:17;:35;;;;:::i;:::-;12574:11;:49;;;;3759:1;12665:2;:13;;;;:::i;:::-;12646:15;:33;;;;:::i;:::-;12634:9;:45;;;;12321:366;12223:464:::0;;:::o;4046:25::-;;;;;;;;;;;;;:::o;6393:143::-;6474:7;6501:11;:18;6513:5;6501:18;;;;;;;;;;;;;;;:27;6520:7;6501:27;;;;;;;;;;;;;;;;6494:34;;6393:143;;;;:::o;4672:28::-;;;;:::o;1346:192::-;1167:12;:10;:12::i;:::-;1156:23;;:7;:5;:7::i;:::-;:23;;;1148:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1455:1:::1;1435:22;;:8;:22;;::::0;1427:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1511:19;1521:8;1511:9;:19::i;:::-;1346:192:::0;:::o;3351:21::-;;;;;;;;;;;;;:::o;3950:52::-;;;;:::o;546:115::-;599:15;642:10;627:26;;546:115;:::o;6987:335::-;7097:1;7080:19;;:5;:19;;;7072:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7178:1;7159:21;;:7;:21;;;7151:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7260:6;7230:11;:18;7242:5;7230:18;;;;;;;;;;;;;;;:27;7249:7;7230:27;;;;;;;;;;;;;;;:36;;;;7298:7;7282:32;;7291:5;7282:32;;;7307:6;7282:32;;;;;;:::i;:::-;;;;;;;;6987:335;;;:::o;8998:474::-;9076:35;9094:4;9100:2;9104:6;9076:17;:35::i;:::-;9139:6;9122:7;:13;9130:4;9122:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;9156:22;9181:6;9156:31;;9202:18;:24;9221:4;9202:24;;;;;;;;;;;;;;;;;;;;;;;;;9201:25;:52;;;;;9231:18;:22;9250:2;9231:22;;;;;;;;;;;;;;;;;;;;;;;;;9230:23;9201:52;9198:177;;;9286:28;9297:4;9303:2;9307:6;9286:10;:28::i;:::-;9269:45;;9329:34;9342:4;9347:2;9358:4;;;;;;;;;;;9350:12;;:4;:12;;;9329;:34::i;:::-;9198:177;9400:14;9385:7;:11;9393:2;9385:11;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;9445:2;9430:34;;9439:4;9430:34;;;9449:14;9430:34;;;;;;:::i;:::-;;;;;;;;9065:407;8998:474;;;:::o;10586:581::-;10650:7;10670:22;10695:21;10670:46;;10727:21;10765:1;10751:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10727:40;;10796:4;10778;10783:1;10778:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;10822:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10812:4;10817:1;10812:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;10848:53;10865:4;10880:6;;;;;;;;;;;10889:11;10848:8;:53::i;:::-;10914:6;;;;;;;;;;;:57;;;10986:11;11012:1;11028:4;11055;11075:15;10914:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11144:14;11120:21;:38;;;;:::i;:::-;11112:47;;;;10586:581;;;:::o;189:317::-;304:6;279:21;:31;;271:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;358:12;376:9;:14;;398:6;376:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;357:52;;;428:7;420:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;260:246;189:317;;:::o;1546:173::-;1602:16;1621:6;;;;;;;;;;;1602:25;;1647:8;1638:6;;:17;;;;;;;;;;;;;;;;;;1702:8;1671:40;;1692:8;1671:40;;;;;;;;;;;;1591:128;1546:173;:::o;7733:826::-;7844:1;7828:18;;:4;:18;;;7820:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7921:1;7907:16;;:2;:16;;;7899:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7991:1;7982:6;:10;7974:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8067:11;;8057:6;:21;;:56;;;;8082:25;:31;8108:4;8082:31;;;;;;;;;;;;;;;;;;;;;;;;;8057:56;8049:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;8203:9;;8193:6;8177:13;8187:2;8177:9;:13::i;:::-;:22;;;;:::i;:::-;:35;;:68;;;;8216:25;:29;8242:2;8216:29;;;;;;;;;;;;;;;;;;;;;;;;;8177:68;8169:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;8310:7;:5;:7::i;:::-;8302:15;;:4;:15;;;:29;;;;;8327:4;;;;;;;;;;;8321:10;;:2;:10;;;8302:29;:53;;;;;8354:1;8335:15;8345:4;;;;;;;;;;;8335:9;:15::i;:::-;:20;8302:53;8299:100;;;8387:12;8370:14;:29;;;;8299:100;8442:13;;8414:24;8432:4;8414:9;:24::i;:::-;:41;;:54;;;;;8460:8;;;;;;;;;;;8459:9;8414:54;:70;;;;;8480:4;;;;;;;;;;;8472:12;;:4;:12;;;;8414:70;:89;;;;;8496:7;:5;:7::i;:::-;8488:15;;:4;:15;;;;8414:89;:106;;;;;8513:7;:5;:7::i;:::-;8507:13;;:2;:13;;;;8414:106;8410:141;;;8535:16;:14;:16::i;:::-;8410:141;7733:826;;;:::o;8567:419::-;8644:7;8663:19;8703:3;8694:6;;;;;;;;;;;8685:15;;:6;:15;;;;:::i;:::-;:21;;;;:::i;:::-;8663:43;;8726:4;;;;;;;;;;;8720:10;;:2;:10;;;8717:64;;8778:3;8768:7;;;;;;;;;;;8759:16;;:6;:16;;;;:::i;:::-;:22;;;;:::i;:::-;8745:36;;8717:64;8810:1;8796:11;:15;8792:147;;;8853:11;8827:7;:22;8843:4;8827:22;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;8908:4;8884:43;;8894:4;8884:43;;;8915:11;8884:43;;;;;;:::i;:::-;;;;;;;;8792:147;8966:11;8957:6;:20;;;;:::i;:::-;8949:29;;;8567:419;;;;;:::o;7334:387::-;7415:5;7412:302;;;7471:1;7454:14;;:18;;;;:::i;:::-;7439:12;:33;7436:149;;;7492:13;;:15;;;;;;;;;:::i;:::-;;;;;;7568:1;7550:15;:19;;;;:::i;:::-;7526:17;:21;7544:2;7526:21;;;;;;;;;;;;;;;:43;;;;7436:149;7412:302;;;7619:14;7628:4;7619:8;:14::i;:::-;7615:87;;;7678:17;:23;7696:4;7678:23;;;;;;;;;;;;;;;;7660:15;:41;7652:50;;;;;;7615:87;7412:302;7334:387;;;:::o;9480:1098::-;4576:4;4565:8;;:15;;;;;;;;;;;;;;;;;;9538:26:::1;9588:3;9583:2;9567:13;;:18;;;;:::i;:::-;:24;;;;:::i;:::-;9538:53;;9602:25;9651:3;9646:2;9630:13;;:18;;;;:::i;:::-;:24;;;;:::i;:::-;9602:52;;9665:26;9715:3;9710:2;9694:13;;:18;;;;:::i;:::-;:24;;;;:::i;:::-;9665:53;;9763:1;9742:18;:22;9739:206;;;9780:18;9801:36;9818:18;9801:16;:36::i;:::-;9780:57;;9868:1;9855:10;:14;9852:81;;;9896:15;;;;;;;;;;;9888:33;;:45;9922:10;9888:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;9852:81;9765:180;9739:206;9980:1;9960:17;:21;9957:203;;;9997:18;10018:35;10035:17;10018:16;:35::i;:::-;9997:56;;10084:1;10071:10;:14;10068:80;;;10112:14;;;;;;;;;;;10104:32;;:44;10137:10;10104:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;10068:80;9982:178;9957:203;10196:1;10175:18;:22;10172:283;;;10213:9;10246:1;10225:18;:22;;;;:::i;:::-;10213:34;;10262:14;10300:4;10279:18;:25;;;;:::i;:::-;10262:42;;10319:14;10336:22;10353:4;10336:16;:22::i;:::-;10319:39;;10389:1;10377:9;:13;10373:70;;;10409:34;10422:9;10433;10409:12;:34::i;:::-;10373:70;10198:257;;;10172:283;10495:1;10471:21;:25;10467:101;;;10511:57;10546:21;10519:15;;;;;;;;;;;10511:34;;;;:57;;;;:::i;:::-;10467:101;9525:1053;;;4614:5:::0;4603:8;;:16;;;;;;;;;;;;;;;;;;9480:1098::o;11175:519::-;11256:53;11273:4;11288:6;;;;;;;;;;;11297:11;11256:8;:53::i;:::-;11324:24;11353:6;;;;;;;;;;;:22;;;11384:9;11418:4;11438:11;11464:1;11480;11496:12;;;;;;;;;;;11523:15;11353:196;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11322:227;;;;11605:1;11586:16;11574:9;:28;;;;:::i;:::-;:32;11570:116;;;11621:65;11669:16;11657:9;:28;;;;:::i;:::-;11629:15;;;;;;;;;;;11621:34;;;;:65;;;;:::i;:::-;11570:116;11245:449;11175:519;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1784:75::-;1817:6;1850:2;1844:9;1834:19;;1784:75;:::o;1865:117::-;1974:1;1971;1964:12;1988:117;2097:1;2094;2087:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:329::-;3857:6;3906:2;3894:9;3885:7;3881:23;3877:32;3874:119;;;3912:79;;:::i;:::-;3874:119;4032:1;4057:53;4102:7;4093:6;4082:9;4078:22;4057:53;:::i;:::-;4047:63;;4003:117;3798:329;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:117::-;4867:1;4864;4857:12;4881:180;4929:77;4926:1;4919:88;5026:4;5023:1;5016:15;5050:4;5047:1;5040:15;5067:281;5150:27;5172:4;5150:27;:::i;:::-;5142:6;5138:40;5280:6;5268:10;5265:22;5244:18;5232:10;5229:34;5226:62;5223:88;;;5291:18;;:::i;:::-;5223:88;5331:10;5327:2;5320:22;5110:238;5067:281;;:::o;5354:129::-;5388:6;5415:20;;:::i;:::-;5405:30;;5444:33;5472:4;5464:6;5444:33;:::i;:::-;5354:129;;;:::o;5489:311::-;5566:4;5656:18;5648:6;5645:30;5642:56;;;5678:18;;:::i;:::-;5642:56;5728:4;5720:6;5716:17;5708:25;;5788:4;5782;5778:15;5770:23;;5489:311;;;:::o;5806:117::-;5915:1;5912;5905:12;5946:710;6042:5;6067:81;6083:64;6140:6;6083:64;:::i;:::-;6067:81;:::i;:::-;6058:90;;6168:5;6197:6;6190:5;6183:21;6231:4;6224:5;6220:16;6213:23;;6284:4;6276:6;6272:17;6264:6;6260:30;6313:3;6305:6;6302:15;6299:122;;;6332:79;;:::i;:::-;6299:122;6447:6;6430:220;6464:6;6459:3;6456:15;6430:220;;;6539:3;6568:37;6601:3;6589:10;6568:37;:::i;:::-;6563:3;6556:50;6635:4;6630:3;6626:14;6619:21;;6506:144;6490:4;6485:3;6481:14;6474:21;;6430:220;;;6434:21;6048:608;;5946:710;;;;;:::o;6679:370::-;6750:5;6799:3;6792:4;6784:6;6780:17;6776:27;6766:122;;6807:79;;:::i;:::-;6766:122;6924:6;6911:20;6949:94;7039:3;7031:6;7024:4;7016:6;7012:17;6949:94;:::i;:::-;6940:103;;6756:293;6679:370;;;;:::o;7055:539::-;7139:6;7188:2;7176:9;7167:7;7163:23;7159:32;7156:119;;;7194:79;;:::i;:::-;7156:119;7342:1;7331:9;7327:17;7314:31;7372:18;7364:6;7361:30;7358:117;;;7394:79;;:::i;:::-;7358:117;7499:78;7569:7;7560:6;7549:9;7545:22;7499:78;:::i;:::-;7489:88;;7285:302;7055:539;;;;:::o;7600:114::-;7667:6;7701:5;7695:12;7685:22;;7600:114;;;:::o;7720:184::-;7819:11;7853:6;7848:3;7841:19;7893:4;7888:3;7884:14;7869:29;;7720:184;;;;:::o;7910:132::-;7977:4;8000:3;7992:11;;8030:4;8025:3;8021:14;8013:22;;7910:132;;;:::o;8048:108::-;8125:24;8143:5;8125:24;:::i;:::-;8120:3;8113:37;8048:108;;:::o;8162:179::-;8231:10;8252:46;8294:3;8286:6;8252:46;:::i;:::-;8330:4;8325:3;8321:14;8307:28;;8162:179;;;;:::o;8347:113::-;8417:4;8449;8444:3;8440:14;8432:22;;8347:113;;;:::o;8496:732::-;8615:3;8644:54;8692:5;8644:54;:::i;:::-;8714:86;8793:6;8788:3;8714:86;:::i;:::-;8707:93;;8824:56;8874:5;8824:56;:::i;:::-;8903:7;8934:1;8919:284;8944:6;8941:1;8938:13;8919:284;;;9020:6;9014:13;9047:63;9106:3;9091:13;9047:63;:::i;:::-;9040:70;;9133:60;9186:6;9133:60;:::i;:::-;9123:70;;8979:224;8966:1;8963;8959:9;8954:14;;8919:284;;;8923:14;9219:3;9212:10;;8620:608;;;8496:732;;;;:::o;9234:373::-;9377:4;9415:2;9404:9;9400:18;9392:26;;9464:9;9458:4;9454:20;9450:1;9439:9;9435:17;9428:47;9492:108;9595:4;9586:6;9492:108;:::i;:::-;9484:116;;9234:373;;;;:::o;9613:86::-;9648:7;9688:4;9681:5;9677:16;9666:27;;9613:86;;;:::o;9705:112::-;9788:22;9804:5;9788:22;:::i;:::-;9783:3;9776:35;9705:112;;:::o;9823:214::-;9912:4;9950:2;9939:9;9935:18;9927:26;;9963:67;10027:1;10016:9;10012:17;10003:6;9963:67;:::i;:::-;9823:214;;;;:::o;10043:118::-;10130:24;10148:5;10130:24;:::i;:::-;10125:3;10118:37;10043:118;;:::o;10167:222::-;10260:4;10298:2;10287:9;10283:18;10275:26;;10311:71;10379:1;10368:9;10364:17;10355:6;10311:71;:::i;:::-;10167:222;;;;:::o;10395:118::-;10466:22;10482:5;10466:22;:::i;:::-;10459:5;10456:33;10446:61;;10503:1;10500;10493:12;10446:61;10395:118;:::o;10519:135::-;10563:5;10601:6;10588:20;10579:29;;10617:31;10642:5;10617:31;:::i;:::-;10519:135;;;;:::o;10660:466::-;10724:6;10732;10781:2;10769:9;10760:7;10756:23;10752:32;10749:119;;;10787:79;;:::i;:::-;10749:119;10907:1;10932:51;10975:7;10966:6;10955:9;10951:22;10932:51;:::i;:::-;10922:61;;10878:115;11032:2;11058:51;11101:7;11092:6;11081:9;11077:22;11058:51;:::i;:::-;11048:61;;11003:116;10660:466;;;;;:::o;11132:474::-;11200:6;11208;11257:2;11245:9;11236:7;11232:23;11228:32;11225:119;;;11263:79;;:::i;:::-;11225:119;11383:1;11408:53;11453:7;11444:6;11433:9;11429:22;11408:53;:::i;:::-;11398:63;;11354:117;11510:2;11536:53;11581:7;11572:6;11561:9;11557:22;11536:53;:::i;:::-;11526:63;;11481:118;11132:474;;;;;:::o;11612:::-;11680:6;11688;11737:2;11725:9;11716:7;11712:23;11708:32;11705:119;;;11743:79;;:::i;:::-;11705:119;11863:1;11888:53;11933:7;11924:6;11913:9;11909:22;11888:53;:::i;:::-;11878:63;;11834:117;11990:2;12016:53;12061:7;12052:6;12041:9;12037:22;12016:53;:::i;:::-;12006:63;;11961:118;11612:474;;;;;:::o;12092:60::-;12120:3;12141:5;12134:12;;12092:60;;;:::o;12158:142::-;12208:9;12241:53;12259:34;12268:24;12286:5;12268:24;:::i;:::-;12259:34;:::i;:::-;12241:53;:::i;:::-;12228:66;;12158:142;;;:::o;12306:126::-;12356:9;12389:37;12420:5;12389:37;:::i;:::-;12376:50;;12306:126;;;:::o;12438:141::-;12503:9;12536:37;12567:5;12536:37;:::i;:::-;12523:50;;12438:141;;;:::o;12585:161::-;12687:52;12733:5;12687:52;:::i;:::-;12682:3;12675:65;12585:161;;:::o;12752:252::-;12860:4;12898:2;12887:9;12883:18;12875:26;;12911:86;12994:1;12983:9;12979:17;12970:6;12911:86;:::i;:::-;12752:252;;;;:::o;13010:180::-;13058:77;13055:1;13048:88;13155:4;13152:1;13145:15;13179:4;13176:1;13169:15;13196:194;13236:4;13256:20;13274:1;13256:20;:::i;:::-;13251:25;;13290:20;13308:1;13290:20;:::i;:::-;13285:25;;13334:1;13331;13327:9;13319:17;;13358:1;13352:4;13349:11;13346:37;;;13363:18;;:::i;:::-;13346:37;13196:194;;;;:::o;13396:180::-;13444:77;13441:1;13434:88;13541:4;13538:1;13531:15;13565:4;13562:1;13555:15;13582:233;13621:3;13644:24;13662:5;13644:24;:::i;:::-;13635:33;;13690:66;13683:5;13680:77;13677:103;;13760:18;;:::i;:::-;13677:103;13807:1;13800:5;13796:13;13789:20;;13582:233;;;:::o;13821:182::-;13961:34;13957:1;13949:6;13945:14;13938:58;13821:182;:::o;14009:366::-;14151:3;14172:67;14236:2;14231:3;14172:67;:::i;:::-;14165:74;;14248:93;14337:3;14248:93;:::i;:::-;14366:2;14361:3;14357:12;14350:19;;14009:366;;;:::o;14381:419::-;14547:4;14585:2;14574:9;14570:18;14562:26;;14634:9;14628:4;14624:20;14620:1;14609:9;14605:17;14598:47;14662:131;14788:4;14662:131;:::i;:::-;14654:139;;14381:419;;;:::o;14806:167::-;14946:19;14942:1;14934:6;14930:14;14923:43;14806:167;:::o;14979:366::-;15121:3;15142:67;15206:2;15201:3;15142:67;:::i;:::-;15135:74;;15218:93;15307:3;15218:93;:::i;:::-;15336:2;15331:3;15327:12;15320:19;;14979:366;;;:::o;15351:419::-;15517:4;15555:2;15544:9;15540:18;15532:26;;15604:9;15598:4;15594:20;15590:1;15579:9;15575:17;15568:47;15632:131;15758:4;15632:131;:::i;:::-;15624:139;;15351:419;;;:::o;15776:102::-;15818:8;15865:5;15862:1;15858:13;15837:34;;15776:102;;;:::o;15884:848::-;15945:5;15952:4;15976:6;15967:15;;16000:5;15991:14;;16014:712;16035:1;16025:8;16022:15;16014:712;;;16130:4;16125:3;16121:14;16115:4;16112:24;16109:50;;;16139:18;;:::i;:::-;16109:50;16189:1;16179:8;16175:16;16172:451;;;16604:4;16597:5;16593:16;16584:25;;16172:451;16654:4;16648;16644:15;16636:23;;16684:32;16707:8;16684:32;:::i;:::-;16672:44;;16014:712;;;15884:848;;;;;;;:::o;16738:1073::-;16792:5;16983:8;16973:40;;17004:1;16995:10;;17006:5;;16973:40;17032:4;17022:36;;17049:1;17040:10;;17051:5;;17022:36;17118:4;17166:1;17161:27;;;;17202:1;17197:191;;;;17111:277;;17161:27;17179:1;17170:10;;17181:5;;;17197:191;17242:3;17232:8;17229:17;17226:43;;;17249:18;;:::i;:::-;17226:43;17298:8;17295:1;17291:16;17282:25;;17333:3;17326:5;17323:14;17320:40;;;17340:18;;:::i;:::-;17320:40;17373:5;;;17111:277;;17497:2;17487:8;17484:16;17478:3;17472:4;17469:13;17465:36;17447:2;17437:8;17434:16;17429:2;17423:4;17420:12;17416:35;17400:111;17397:246;;;17553:8;17547:4;17543:19;17534:28;;17588:3;17581:5;17578:14;17575:40;;;17595:18;;:::i;:::-;17575:40;17628:5;;17397:246;17668:42;17706:3;17696:8;17690:4;17687:1;17668:42;:::i;:::-;17653:57;;;;17742:4;17737:3;17733:14;17726:5;17723:25;17720:51;;;17751:18;;:::i;:::-;17720:51;17800:4;17793:5;17789:16;17780:25;;16738:1073;;;;;;:::o;17817:281::-;17875:5;17899:23;17917:4;17899:23;:::i;:::-;17891:31;;17943:25;17959:8;17943:25;:::i;:::-;17931:37;;17987:104;18024:66;18014:8;18008:4;17987:104;:::i;:::-;17978:113;;17817:281;;;;:::o;18104:410::-;18144:7;18167:20;18185:1;18167:20;:::i;:::-;18162:25;;18201:20;18219:1;18201:20;:::i;:::-;18196:25;;18256:1;18253;18249:9;18278:30;18296:11;18278:30;:::i;:::-;18267:41;;18457:1;18448:7;18444:15;18441:1;18438:22;18418:1;18411:9;18391:83;18368:139;;18487:18;;:::i;:::-;18368:139;18152:362;18104:410;;;;:::o;18520:225::-;18660:34;18656:1;18648:6;18644:14;18637:58;18729:8;18724:2;18716:6;18712:15;18705:33;18520:225;:::o;18751:366::-;18893:3;18914:67;18978:2;18973:3;18914:67;:::i;:::-;18907:74;;18990:93;19079:3;18990:93;:::i;:::-;19108:2;19103:3;19099:12;19092:19;;18751:366;;;:::o;19123:419::-;19289:4;19327:2;19316:9;19312:18;19304:26;;19376:9;19370:4;19366:20;19362:1;19351:9;19347:17;19340:47;19404:131;19530:4;19404:131;:::i;:::-;19396:139;;19123:419;;;:::o;19548:223::-;19688:34;19684:1;19676:6;19672:14;19665:58;19757:6;19752:2;19744:6;19740:15;19733:31;19548:223;:::o;19777:366::-;19919:3;19940:67;20004:2;19999:3;19940:67;:::i;:::-;19933:74;;20016:93;20105:3;20016:93;:::i;:::-;20134:2;20129:3;20125:12;20118:19;;19777:366;;;:::o;20149:419::-;20315:4;20353:2;20342:9;20338:18;20330:26;;20402:9;20396:4;20392:20;20388:1;20377:9;20373:17;20366:47;20430:131;20556:4;20430:131;:::i;:::-;20422:139;;20149:419;;;:::o;20574:221::-;20714:34;20710:1;20702:6;20698:14;20691:58;20783:4;20778:2;20770:6;20766:15;20759:29;20574:221;:::o;20801:366::-;20943:3;20964:67;21028:2;21023:3;20964:67;:::i;:::-;20957:74;;21040:93;21129:3;21040:93;:::i;:::-;21158:2;21153:3;21149:12;21142:19;;20801:366;;;:::o;21173:419::-;21339:4;21377:2;21366:9;21362:18;21354:26;;21426:9;21420:4;21416:20;21412:1;21401:9;21397:17;21390:47;21454:131;21580:4;21454:131;:::i;:::-;21446:139;;21173:419;;;:::o;21598:191::-;21638:3;21657:20;21675:1;21657:20;:::i;:::-;21652:25;;21691:20;21709:1;21691:20;:::i;:::-;21686:25;;21734:1;21731;21727:9;21720:16;;21755:3;21752:1;21749:10;21746:36;;;21762:18;;:::i;:::-;21746:36;21598:191;;;;:::o;21795:143::-;21852:5;21883:6;21877:13;21868:22;;21899:33;21926:5;21899:33;:::i;:::-;21795:143;;;;:::o;21944:351::-;22014:6;22063:2;22051:9;22042:7;22038:23;22034:32;22031:119;;;22069:79;;:::i;:::-;22031:119;22189:1;22214:64;22270:7;22261:6;22250:9;22246:22;22214:64;:::i;:::-;22204:74;;22160:128;21944:351;;;;:::o;22301:85::-;22346:7;22375:5;22364:16;;22301:85;;;:::o;22392:158::-;22450:9;22483:61;22501:42;22510:32;22536:5;22510:32;:::i;:::-;22501:42;:::i;:::-;22483:61;:::i;:::-;22470:74;;22392:158;;;:::o;22556:147::-;22651:45;22690:5;22651:45;:::i;:::-;22646:3;22639:58;22556:147;;:::o;22709:114::-;22776:6;22810:5;22804:12;22794:22;;22709:114;;;:::o;22829:184::-;22928:11;22962:6;22957:3;22950:19;23002:4;22997:3;22993:14;22978:29;;22829:184;;;;:::o;23019:132::-;23086:4;23109:3;23101:11;;23139:4;23134:3;23130:14;23122:22;;23019:132;;;:::o;23157:108::-;23234:24;23252:5;23234:24;:::i;:::-;23229:3;23222:37;23157:108;;:::o;23271:179::-;23340:10;23361:46;23403:3;23395:6;23361:46;:::i;:::-;23439:4;23434:3;23430:14;23416:28;;23271:179;;;;:::o;23456:113::-;23526:4;23558;23553:3;23549:14;23541:22;;23456:113;;;:::o;23605:732::-;23724:3;23753:54;23801:5;23753:54;:::i;:::-;23823:86;23902:6;23897:3;23823:86;:::i;:::-;23816:93;;23933:56;23983:5;23933:56;:::i;:::-;24012:7;24043:1;24028:284;24053:6;24050:1;24047:13;24028:284;;;24129:6;24123:13;24156:63;24215:3;24200:13;24156:63;:::i;:::-;24149:70;;24242:60;24295:6;24242:60;:::i;:::-;24232:70;;24088:224;24075:1;24072;24068:9;24063:14;;24028:284;;;24032:14;24328:3;24321:10;;23729:608;;;23605:732;;;;:::o;24343:831::-;24606:4;24644:3;24633:9;24629:19;24621:27;;24658:71;24726:1;24715:9;24711:17;24702:6;24658:71;:::i;:::-;24739:80;24815:2;24804:9;24800:18;24791:6;24739:80;:::i;:::-;24866:9;24860:4;24856:20;24851:2;24840:9;24836:18;24829:48;24894:108;24997:4;24988:6;24894:108;:::i;:::-;24886:116;;25012:72;25080:2;25069:9;25065:18;25056:6;25012:72;:::i;:::-;25094:73;25162:3;25151:9;25147:19;25138:6;25094:73;:::i;:::-;24343:831;;;;;;;;:::o;25180:179::-;25320:31;25316:1;25308:6;25304:14;25297:55;25180:179;:::o;25365:366::-;25507:3;25528:67;25592:2;25587:3;25528:67;:::i;:::-;25521:74;;25604:93;25693:3;25604:93;:::i;:::-;25722:2;25717:3;25713:12;25706:19;;25365:366;;;:::o;25737:419::-;25903:4;25941:2;25930:9;25926:18;25918:26;;25990:9;25984:4;25980:20;25976:1;25965:9;25961:17;25954:47;26018:131;26144:4;26018:131;:::i;:::-;26010:139;;25737:419;;;:::o;26162:147::-;26263:11;26300:3;26285:18;;26162:147;;;;:::o;26315:114::-;;:::o;26435:398::-;26594:3;26615:83;26696:1;26691:3;26615:83;:::i;:::-;26608:90;;26707:93;26796:3;26707:93;:::i;:::-;26825:1;26820:3;26816:11;26809:18;;26435:398;;;:::o;26839:379::-;27023:3;27045:147;27188:3;27045:147;:::i;:::-;27038:154;;27209:3;27202:10;;26839:379;;;:::o;27224:245::-;27364:34;27360:1;27352:6;27348:14;27341:58;27433:28;27428:2;27420:6;27416:15;27409:53;27224:245;:::o;27475:366::-;27617:3;27638:67;27702:2;27697:3;27638:67;:::i;:::-;27631:74;;27714:93;27803:3;27714:93;:::i;:::-;27832:2;27827:3;27823:12;27816:19;;27475:366;;;:::o;27847:419::-;28013:4;28051:2;28040:9;28036:18;28028:26;;28100:9;28094:4;28090:20;28086:1;28075:9;28071:17;28064:47;28128:131;28254:4;28128:131;:::i;:::-;28120:139;;27847:419;;;:::o;28272:224::-;28412:34;28408:1;28400:6;28396:14;28389:58;28481:7;28476:2;28468:6;28464:15;28457:32;28272:224;:::o;28502:366::-;28644:3;28665:67;28729:2;28724:3;28665:67;:::i;:::-;28658:74;;28741:93;28830:3;28741:93;:::i;:::-;28859:2;28854:3;28850:12;28843:19;;28502:366;;;:::o;28874:419::-;29040:4;29078:2;29067:9;29063:18;29055:26;;29127:9;29121:4;29117:20;29113:1;29102:9;29098:17;29091:47;29155:131;29281:4;29155:131;:::i;:::-;29147:139;;28874:419;;;:::o;29299:222::-;29439:34;29435:1;29427:6;29423:14;29416:58;29508:5;29503:2;29495:6;29491:15;29484:30;29299:222;:::o;29527:366::-;29669:3;29690:67;29754:2;29749:3;29690:67;:::i;:::-;29683:74;;29766:93;29855:3;29766:93;:::i;:::-;29884:2;29879:3;29875:12;29868:19;;29527:366;;;:::o;29899:419::-;30065:4;30103:2;30092:9;30088:18;30080:26;;30152:9;30146:4;30142:20;30138:1;30127:9;30123:17;30116:47;30180:131;30306:4;30180:131;:::i;:::-;30172:139;;29899:419;;;:::o;30324:228::-;30464:34;30460:1;30452:6;30448:14;30441:58;30533:11;30528:2;30520:6;30516:15;30509:36;30324:228;:::o;30558:366::-;30700:3;30721:67;30785:2;30780:3;30721:67;:::i;:::-;30714:74;;30797:93;30886:3;30797:93;:::i;:::-;30915:2;30910:3;30906:12;30899:19;;30558:366;;;:::o;30930:419::-;31096:4;31134:2;31123:9;31119:18;31111:26;;31183:9;31177:4;31173:20;31169:1;31158:9;31154:17;31147:47;31211:131;31337:4;31211:131;:::i;:::-;31203:139;;30930:419;;;:::o;31355:227::-;31495:34;31491:1;31483:6;31479:14;31472:58;31564:10;31559:2;31551:6;31547:15;31540:35;31355:227;:::o;31588:366::-;31730:3;31751:67;31815:2;31810:3;31751:67;:::i;:::-;31744:74;;31827:93;31916:3;31827:93;:::i;:::-;31945:2;31940:3;31936:12;31929:19;;31588:366;;;:::o;31960:419::-;32126:4;32164:2;32153:9;32149:18;32141:26;;32213:9;32207:4;32203:20;32199:1;32188:9;32184:17;32177:47;32241:131;32367:4;32241:131;:::i;:::-;32233:139;;31960:419;;;:::o;32385:225::-;32525:34;32521:1;32513:6;32509:14;32502:58;32594:8;32589:2;32581:6;32577:15;32570:33;32385:225;:::o;32616:366::-;32758:3;32779:67;32843:2;32838:3;32779:67;:::i;:::-;32772:74;;32855:93;32944:3;32855:93;:::i;:::-;32973:2;32968:3;32964:12;32957:19;;32616:366;;;:::o;32988:419::-;33154:4;33192:2;33181:9;33177:18;33169:26;;33241:9;33235:4;33231:20;33227:1;33216:9;33212:17;33205:47;33269:131;33395:4;33269:131;:::i;:::-;33261:139;;32988:419;;;:::o;33413:180::-;33461:77;33458:1;33451:88;33558:4;33555:1;33548:15;33582:4;33579:1;33572:15;33599:185;33639:1;33656:20;33674:1;33656:20;:::i;:::-;33651:25;;33690:20;33708:1;33690:20;:::i;:::-;33685:25;;33729:1;33719:35;;33734:18;;:::i;:::-;33719:35;33776:1;33773;33769:9;33764:14;;33599:185;;;;:::o;33790:807::-;34039:4;34077:3;34066:9;34062:19;34054:27;;34091:71;34159:1;34148:9;34144:17;34135:6;34091:71;:::i;:::-;34172:72;34240:2;34229:9;34225:18;34216:6;34172:72;:::i;:::-;34254:80;34330:2;34319:9;34315:18;34306:6;34254:80;:::i;:::-;34344;34420:2;34409:9;34405:18;34396:6;34344:80;:::i;:::-;34434:73;34502:3;34491:9;34487:19;34478:6;34434:73;:::i;:::-;34517;34585:3;34574:9;34570:19;34561:6;34517:73;:::i;:::-;33790:807;;;;;;;;;:::o;34603:143::-;34660:5;34691:6;34685:13;34676:22;;34707:33;34734:5;34707:33;:::i;:::-;34603:143;;;;:::o;34752:663::-;34840:6;34848;34856;34905:2;34893:9;34884:7;34880:23;34876:32;34873:119;;;34911:79;;:::i;:::-;34873:119;35031:1;35056:64;35112:7;35103:6;35092:9;35088:22;35056:64;:::i;:::-;35046:74;;35002:128;35169:2;35195:64;35251:7;35242:6;35231:9;35227:22;35195:64;:::i;:::-;35185:74;;35140:129;35308:2;35334:64;35390:7;35381:6;35370:9;35366:22;35334:64;:::i;:::-;35324:74;;35279:129;34752:663;;;;;:::o

Swarm Source

ipfs://19b9a911329dca17bdf74deae44a2ba43efee53246c62bb4d7277bb4c9719fad
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.