ETH Price: $3,157.13 (+2.79%)
Gas: 1 Gwei

Token

Amaterasu ($OMIKAMI)
 

Overview

Max Total Supply

970,917,936.9052827 $OMIKAMI

Holders

31

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000100312 $OMIKAMI

Value
$0.00
0x9e97ce8924ac9b9a4e6e2d4509c8069a647f7edc
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:
Amaterasu

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**

https://medium.com/@AmaterasuETH/reborn-of-all-illuminating-light-amaterasu-on-ethereum-e0201d5e72b

*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.16;


library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {return a + b;}
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {return a - b;}
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {return a * b;}
    function div(uint256 a, uint256 b) internal pure returns (uint256) {return a / b;}
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {return a % b;}
    
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {uint256 c = a + b; if(c < a) return(false, 0); return(true, c);}}

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

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

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

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

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

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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);}

abstract contract Ownable {
    address internal owner;
    constructor(address _owner) {owner = _owner;}
    modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}
    function isOwner(address account) public view returns (bool) {return account == owner;}
    function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
    event OwnershipTransferred(address owner);
}

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

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
}

contract Amaterasu is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'Amaterasu';
    string private constant _symbol = '$OMIKAMI';
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 1 * 10**9 * (10 ** _decimals);
    uint256 private _maxTxAmountPercent = 200; // 10000;
    uint256 private _maxTransferPercent = 200;
    uint256 private _maxWalletPercent = 200;
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) private isBot;
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    uint256 private liquidityFee = 100;
    uint256 private marketingFee = 200;
    uint256 private developmentFee = 100;
    uint256 private burnFee = 100;
    uint256 private totalFee = 500;
    uint256 private sellFee = 1000;
    uint256 private transferFee = 0;
    uint256 private denominator = 10000;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping; 
    uint256 private swapThreshold = ( _totalSupply * 400 ) / 100000;
    uint256 private _minTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}

    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal constant development_receiver = 0xF0AB700E4a653dC204F6cCd6A4363e98447031Fb; 
    address internal constant marketing_receiver = 0x5aae07Ba8263631793aD5dCf1580384575aD6955;
    address internal constant liquidity_receiver = 0xF0AB700E4a653dC204F6cCd6A4363e98447031Fb;

    constructor() Ownable(msg.sender) {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router;
        pair = _pair;
        isFeeExempt[address(this)] = true;
        isFeeExempt[liquidity_receiver] = true;
        isFeeExempt[marketing_receiver] = true;
        isFeeExempt[msg.sender] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}
    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 startTrading() external onlyOwner {tradingAllowed = true;}
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function isCont(address addr) internal view returns (bool) {uint size; assembly { size := extcodesize(addr) } return size > 0; }
    function setisBot(address _address, bool _enabled) external onlyOwner {isBot[_address] = _enabled;}
    function setisExempt(address _address, bool _enabled) external onlyOwner {isFeeExempt[_address] = _enabled;}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function totalSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}
    function _maxWalletToken() public view returns (uint256) {return totalSupply() * _maxWalletPercent / denominator;}
    function _maxTxAmount() public view returns (uint256) {return totalSupply() * _maxTxAmountPercent / denominator;}
    function _maxTransferAmount() public view returns (uint256) {return totalSupply() * _maxTransferPercent / denominator;}

    function preTxCheck(address sender, address recipient, uint256 amount) internal view {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > uint256(0), "Transfer amount must be greater than zero");
        require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        preTxCheck(sender, recipient, amount);
        checkTradingAllowed(sender, recipient);
        checkMaxWallet(sender, recipient, amount); 
        swapbackCounters(sender, recipient);
        checkTxLimit(sender, recipient, amount); 
        swapBack(sender, recipient, amount);
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

    function setStructure(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _development, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity;
        marketingFee = _marketing;
        burnFee = _burn;
        developmentFee - _development;
        sellFee = _sell;
        transferFee = _trans;
        totalFee = _liquidity.add(_marketing).add(_burn).add(_development);
        require(totalFee <= denominator.div(5) && sellFee <= denominator.div(5), "totalFee and sellFee cannot be more than 20%");
    }

    function setParameters(uint256 _buy, uint256 _trans, uint256 _wallet) external onlyOwner {
        uint256 newTx = (totalSupply() * _buy) / 10000;
        uint256 newTransfer = (totalSupply() * _trans) / 10000;
        uint256 newWallet = (totalSupply() * _wallet) / 10000;
        _maxTxAmountPercent = _buy;
        _maxTransferPercent = _trans;
        _maxWalletPercent = _wallet;
        uint256 limit = totalSupply().mul(5).div(1000);
        require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%");
    }

    function checkTradingAllowed(address sender, address recipient) internal view {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "tradingAllowed");}
    }
    
    function checkMaxWallet(address sender, address recipient, uint256 amount) internal view {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)){
            require((_balances[recipient].add(amount)) <= _maxWalletToken(), "Exceeds maximum wallet amount.");}
    }

    function swapbackCounters(address sender, address recipient) internal {
        if(recipient == pair && !isFeeExempt[sender]){swapTimes += uint256(1);}
    }

    function checkTxLimit(address sender, address recipient, uint256 amount) internal view {
        if(sender != pair){require(amount <= _maxTransferAmount() || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");}
        require(amount <= _maxTxAmount() || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee)).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator);
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee);
        if(marketingAmt > 0){payable(marketing_receiver).transfer(marketingAmt);}
        uint256 remainingBalance = address(this).balance;
        if(remainingBalance > uint256(0)){payable(development_receiver).transfer(remainingBalance);}
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidity_receiver,
            block.timestamp);
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        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);
    }

    function shouldSwapBack(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= _minTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExempt[sender] && recipient == pair && swapTimes >= uint256(3) && aboveThreshold;
    }

    function swapBack(address sender, address recipient, uint256 amount) internal {
        if(shouldSwapBack(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
    }

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }

    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(isBot[sender] || isBot[recipient]){return denominator.sub(uint256(100));}
        if(recipient == pair){return sellFee;}
        if(sender == pair){return totalFee;}
        return transferFee;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(getTotalFee(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        if(burnFee > uint256(0)){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));}
        return amount.sub(feeAmount);} return amount;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance"));
        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);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTransferAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"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 payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526009600a6200001491906200070f565b633b9aca0062000025919062000760565b60015560c860025560c860035560c86004556000600a60146101000a81548160ff0219169083151502179055506064600b5560c8600c556064600d556064600e556101f4600f556103e860105560006011556127106012556001601360006101000a81548160ff021916908315150217905550620186a0610190600154620000ae919062000760565b620000ba9190620007f0565b601655620186a0600a600154620000d2919062000760565b620000de9190620007f0565b601755348015620000ee57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000198573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001be919062000892565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000226573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024c919062000892565b6040518363ffffffff1660e01b81526004016200026b929190620008d5565b6020604051808303816000875af11580156200028b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b1919062000892565b905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073f0ab700e4a653dc204f6ccd6a4363e98447031fb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000735aae07ba8263631793ad5dcf1580384575ad695573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600154600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60015460405162000565919062000913565b60405180910390a3505062000930565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200060357808604811115620005db57620005da62000575565b5b6001851615620005eb5780820291505b8081029050620005fb85620005a4565b9450620005bb565b94509492505050565b6000826200061e5760019050620006f1565b816200062e5760009050620006f1565b8160018114620006475760028114620006525762000688565b6001915050620006f1565b60ff84111562000667576200066662000575565b5b8360020a91508482111562000681576200068062000575565b5b50620006f1565b5060208310610133831016604e8410600b8410161715620006c25782820a905083811115620006bc57620006bb62000575565b5b620006f1565b620006d18484846001620005b1565b92509050818404811115620006eb57620006ea62000575565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200071c82620006f8565b9150620007298362000702565b9250620007587fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200060c565b905092915050565b60006200076d82620006f8565b91506200077a83620006f8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620007b657620007b562000575565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007fd82620006f8565b91506200080a83620006f8565b9250826200081d576200081c620007c1565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200085a826200082d565b9050919050565b6200086c816200084d565b81146200087857600080fd5b50565b6000815190506200088c8162000861565b92915050565b600060208284031215620008ab57620008aa62000828565b5b6000620008bb848285016200087b565b91505092915050565b620008cf816200084d565b82525050565b6000604082019050620008ec6000830185620008c4565b620008fb6020830184620008c4565b9392505050565b6200090d81620006f8565b82525050565b60006020820190506200092a600083018462000902565b92915050565b6134aa80620009406000396000f3fe6080604052600436106101395760003560e01c806370a08231116100ab5780638c41180e1161006f5780638c41180e1461043557806395d89b411461045e578063a8aa1b3114610489578063a9059cbb146104b4578063dd62ed3e146104f1578063f2fde38b1461052e57610140565b806370a082311461034e57806378109e541461038b5780637d1db4a5146103b657806384836778146103e1578063893d20e81461040a57610140565b8063293230b8116100fd578063293230b8146102405780632f54bf6e14610257578063313ce5671461029457806334c5d2ce146102bf5780633f4218e0146102e857806348ff2b8b1461032557610140565b806306fdde0314610145578063095ea7b31461017057806318160ddd146101ad5780631f976b7e146101d857806323b872dd1461020357610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a610557565b6040516101679190612552565b60405180910390f35b34801561017c57600080fd5b506101976004803603810190610192919061260d565b610594565b6040516101a49190612668565b60405180910390f35b3480156101b957600080fd5b506101c26105ab565b6040516101cf9190612692565b60405180910390f35b3480156101e457600080fd5b506101ed6105ec565b6040516101fa9190612692565b60405180910390f35b34801561020f57600080fd5b5061022a600480360381019061022591906126ad565b610615565b6040516102379190612668565b60405180910390f35b34801561024c57600080fd5b506102556106e0565b005b34801561026357600080fd5b5061027e60048036038101906102799190612700565b610745565b60405161028b9190612668565b60405180910390f35b3480156102a057600080fd5b506102a961079e565b6040516102b69190612749565b60405180910390f35b3480156102cb57600080fd5b506102e660048036038101906102e19190612764565b6107a7565b005b3480156102f457600080fd5b5061030f600480360381019061030a9190612700565b610907565b60405161031c9190612668565b60405180910390f35b34801561033157600080fd5b5061034c600480360381019061034791906127e3565b610927565b005b34801561035a57600080fd5b5061037560048036038101906103709190612700565b6109ca565b6040516103829190612692565b60405180910390f35b34801561039757600080fd5b506103a0610a13565b6040516103ad9190612692565b60405180910390f35b3480156103c257600080fd5b506103cb610a3c565b6040516103d89190612692565b60405180910390f35b3480156103ed57600080fd5b5061040860048036038101906104039190612823565b610a65565b005b34801561041657600080fd5b5061041f610ba1565b60405161042c91906128bf565b60405180910390f35b34801561044157600080fd5b5061045c600480360381019061045791906127e3565b610bca565b005b34801561046a57600080fd5b50610473610c6d565b6040516104809190612552565b60405180910390f35b34801561049557600080fd5b5061049e610caa565b6040516104ab91906128bf565b60405180910390f35b3480156104c057600080fd5b506104db60048036038101906104d6919061260d565b610cd0565b6040516104e89190612668565b60405180910390f35b3480156104fd57600080fd5b50610518600480360381019061051391906128da565b610ce7565b6040516105259190612692565b60405180910390f35b34801561053a57600080fd5b5061055560048036038101906105509190612958565b610d6e565b005b60606040518060400160405280600981526020017f416d617465726173750000000000000000000000000000000000000000000000815250905090565b60006105a1338484610e30565b6001905092915050565b60006105e76105ba60006109ca565b6105d96105c861dead6109ca565b600154610ff990919063ffffffff16565b610ff990919063ffffffff16565b905090565b60006012546003546105fc6105ab565b61060691906129b4565b6106109190612a3d565b905090565b600061062284848461100f565b6106d584336106d08560405180606001604052806028815260200161344d60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112089092919063ffffffff16565b610e30565b600190509392505050565b6106e933610745565b610728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071f90612aba565b60405180910390fd5b6001600a60146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b6107b033610745565b6107ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e690612aba565b60405180910390fd5b6000612710846107fd6105ab565b61080791906129b4565b6108119190612a3d565b90506000612710846108216105ab565b61082b91906129b4565b6108359190612a3d565b90506000612710846108456105ab565b61084f91906129b4565b6108599190612a3d565b905085600281905550846003819055508360048190555060006108a16103e861089360056108856105ab565b61125d90919063ffffffff16565b61127390919063ffffffff16565b90508084101580156108b35750808310155b80156108bf5750808210155b6108fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f590612b4c565b60405180910390fd5b50505050505050565b60076020528060005260406000206000915054906101000a900460ff1681565b61093033610745565b61096f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096690612aba565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601254600454610a236105ab565b610a2d91906129b4565b610a379190612a3d565b905090565b6000601254600254610a4c6105ab565b610a5691906129b4565b610a609190612a3d565b905090565b610a6e33610745565b610aad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa490612aba565b60405180910390fd5b85600b8190555084600c8190555083600e8190555082600d54610ad09190612b6c565b508160108190555080601181905550610b1683610b0886610afa898b61128990919063ffffffff16565b61128990919063ffffffff16565b61128990919063ffffffff16565b600f81905550610b32600560125461127390919063ffffffff16565b600f5411158015610b5a5750610b54600560125461127390919063ffffffff16565b60105411155b610b99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9090612c12565b60405180910390fd5b505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610bd333610745565b610c12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0990612aba565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60606040518060400160405280600881526020017f244f4d494b414d49000000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610cdd33848461100f565b6001905092915050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d7733610745565b610db6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dad90612aba565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610e259190612c91565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9690612d1e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0590612db0565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610fec9190612692565b60405180910390a3505050565b600081836110079190612b6c565b905092915050565b61101a83838361129f565b6110248383611410565b61102f83838361150d565b61103983836116eb565b6110448383836117b6565b61104f8383836119f5565b6110a181600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ff990919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006110f08484611a1e565b6110fa5781611106565b611105848484611acc565b5b905061115a81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461128990919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516111fa9190612692565b60405180910390a350505050565b6000838311158290611250576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112479190612552565b60405180910390fd5b5082840390509392505050565b6000818361126b91906129b4565b905092915050565b600081836112819190612a3d565b905092915050565b600081836112979190612dd0565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361130e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130590612e76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361137d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137490612f08565b60405180910390fd5b600081116113c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b790612f9a565b60405180910390fd5b6113c9836109ca565b81111561140b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114029061302c565b60405180910390fd5b505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156114b45750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561150957600a60149054906101000a900460ff16611508576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ff90613098565b60405180910390fd5b5b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115b15750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561160b5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611645575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156116e657611652610a13565b6116a482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461128990919063ffffffff16565b11156116e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116dc90613104565b60405180910390fd5b5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156117925750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156117b2576001601460008282546117aa9190612dd0565b925050819055505b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146118fe576118136105ec565b8111158061186a5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806118be5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6118fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f490613170565b60405180910390fd5b5b611906610a3c565b8111158061195d5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806119b15750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6119f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e790613170565b60405180910390fd5b505050565b611a00838383611c74565b15611a1957611a10601654611dad565b60006014819055505b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ac45750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080611ad98585611ffe565b1115611c69576000611b11611aee8686611ffe565b611b036012548661127390919063ffffffff16565b61125d90919063ffffffff16565b9050611b6581600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461128990919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c059190612692565b60405180910390a36000600e541115611c4e57611c4d3061dead611c48600e54611c3a6012548961127390919063ffffffff16565b61125d90919063ffffffff16565b61100f565b5b611c618184610ff990919063ffffffff16565b915050611c6d565b8190505b9392505050565b60008060175483101590506000601654611c8d306109ca565b10159050601560009054906101000a900460ff16158015611cba5750601360009054906101000a900460ff165b8015611cd25750600a60149054906101000a900460ff165b8015611cdb5750815b8015611d315750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d8a5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611d995750600360145410155b8015611da25750805b925050509392505050565b6001601560006101000a81548160ff0219169083151502179055506000611e1b6002611e0d600d54611dff600c54611df16001600b5461128990919063ffffffff16565b61128990919063ffffffff16565b61128990919063ffffffff16565b61125d90919063ffffffff16565b90506000611e4682611e38600b548661125d90919063ffffffff16565b61127390919063ffffffff16565b90506000611e5d8285610ff990919063ffffffff16565b90506000479050611e6d8261218d565b6000611e828247610ff990919063ffffffff16565b90506000611ead611e9e600b5488610ff990919063ffffffff16565b8361127390919063ffffffff16565b90506000611ec6600b548361125d90919063ffffffff16565b90506000811115611edc57611edb86826123d0565b5b6000611f06600c54611ef860028661125d90919063ffffffff16565b61125d90919063ffffffff16565b90506000811115611f6d57735aae07ba8263631793ad5dcf1580384575ad695573ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f6b573d6000803e3d6000fd5b505b60004790506000811115611fd75773f0ab700e4a653dc204f6ccd6a4363e98447031fb73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611fd5573d6000803e3d6000fd5b505b5050505050505050506000601560006101000a81548160ff02191690831515021790555050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120a15750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156120c3576120bc6064601254610ff990919063ffffffff16565b9050612187565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612122576010549050612187565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361218157600f549050612187565b60115490505b92915050565b6000600267ffffffffffffffff8111156121aa576121a9613190565b5b6040519080825280602002602001820160405280156121d85781602001602082028036833780820191505090505b50905030816000815181106121f0576121ef6131bf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612297573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122bb9190613203565b816001815181106122cf576122ce6131bf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061233630600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610e30565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161239a959493929190613329565b600060405180830381600087803b1580156123b457600080fd5b505af11580156123c8573d6000803e3d6000fd5b505050505050565b6123fd30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610e30565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008073f0ab700e4a653dc204f6ccd6a4363e98447031fb426040518863ffffffff1660e01b815260040161247896959493929190613383565b60606040518083038185885af1158015612496573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124bb91906133f9565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156124fc5780820151818401526020810190506124e1565b60008484015250505050565b6000601f19601f8301169050919050565b6000612524826124c2565b61252e81856124cd565b935061253e8185602086016124de565b61254781612508565b840191505092915050565b6000602082019050818103600083015261256c8184612519565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125a482612579565b9050919050565b6125b481612599565b81146125bf57600080fd5b50565b6000813590506125d1816125ab565b92915050565b6000819050919050565b6125ea816125d7565b81146125f557600080fd5b50565b600081359050612607816125e1565b92915050565b6000806040838503121561262457612623612574565b5b6000612632858286016125c2565b9250506020612643858286016125f8565b9150509250929050565b60008115159050919050565b6126628161264d565b82525050565b600060208201905061267d6000830184612659565b92915050565b61268c816125d7565b82525050565b60006020820190506126a76000830184612683565b92915050565b6000806000606084860312156126c6576126c5612574565b5b60006126d4868287016125c2565b93505060206126e5868287016125c2565b92505060406126f6868287016125f8565b9150509250925092565b60006020828403121561271657612715612574565b5b6000612724848285016125c2565b91505092915050565b600060ff82169050919050565b6127438161272d565b82525050565b600060208201905061275e600083018461273a565b92915050565b60008060006060848603121561277d5761277c612574565b5b600061278b868287016125f8565b935050602061279c868287016125f8565b92505060406127ad868287016125f8565b9150509250925092565b6127c08161264d565b81146127cb57600080fd5b50565b6000813590506127dd816127b7565b92915050565b600080604083850312156127fa576127f9612574565b5b6000612808858286016125c2565b9250506020612819858286016127ce565b9150509250929050565b60008060008060008060c087890312156128405761283f612574565b5b600061284e89828a016125f8565b965050602061285f89828a016125f8565b955050604061287089828a016125f8565b945050606061288189828a016125f8565b935050608061289289828a016125f8565b92505060a06128a389828a016125f8565b9150509295509295509295565b6128b981612599565b82525050565b60006020820190506128d460008301846128b0565b92915050565b600080604083850312156128f1576128f0612574565b5b60006128ff858286016125c2565b9250506020612910858286016125c2565b9150509250929050565b600061292582612579565b9050919050565b6129358161291a565b811461294057600080fd5b50565b6000813590506129528161292c565b92915050565b60006020828403121561296e5761296d612574565b5b600061297c84828501612943565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006129bf826125d7565b91506129ca836125d7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612a0357612a02612985565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612a48826125d7565b9150612a53836125d7565b925082612a6357612a62612a0e565b5b828204905092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612aa46006836124cd565b9150612aaf82612a6e565b602082019050919050565b60006020820190508181036000830152612ad381612a97565b9050919050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000612b36602e836124cd565b9150612b4182612ada565b604082019050919050565b60006020820190508181036000830152612b6581612b29565b9050919050565b6000612b77826125d7565b9150612b82836125d7565b9250828203905081811115612b9a57612b99612985565b5b92915050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60008201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b6000612bfc602c836124cd565b9150612c0782612ba0565b604082019050919050565b60006020820190508181036000830152612c2b81612bef565b9050919050565b6000819050919050565b6000612c57612c52612c4d84612579565b612c32565b612579565b9050919050565b6000612c6982612c3c565b9050919050565b6000612c7b82612c5e565b9050919050565b612c8b81612c70565b82525050565b6000602082019050612ca66000830184612c82565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612d086024836124cd565b9150612d1382612cac565b604082019050919050565b60006020820190508181036000830152612d3781612cfb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612d9a6022836124cd565b9150612da582612d3e565b604082019050919050565b60006020820190508181036000830152612dc981612d8d565b9050919050565b6000612ddb826125d7565b9150612de6836125d7565b9250828201905080821115612dfe57612dfd612985565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612e606025836124cd565b9150612e6b82612e04565b604082019050919050565b60006020820190508181036000830152612e8f81612e53565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612ef26023836124cd565b9150612efd82612e96565b604082019050919050565b60006020820190508181036000830152612f2181612ee5565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612f846029836124cd565b9150612f8f82612f28565b604082019050919050565b60006020820190508181036000830152612fb381612f77565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b60006130166031836124cd565b915061302182612fba565b604082019050919050565b6000602082019050818103600083015261304581613009565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b6000613082600e836124cd565b915061308d8261304c565b602082019050919050565b600060208201905081810360008301526130b181613075565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b60006130ee601e836124cd565b91506130f9826130b8565b602082019050919050565b6000602082019050818103600083015261311d816130e1565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b600061315a6011836124cd565b915061316582613124565b602082019050919050565b600060208201905081810360008301526131898161314d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506131fd816125ab565b92915050565b60006020828403121561321957613218612574565b5b6000613227848285016131ee565b91505092915050565b6000819050919050565b600061325561325061324b84613230565b612c32565b6125d7565b9050919050565b6132658161323a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6132a081612599565b82525050565b60006132b28383613297565b60208301905092915050565b6000602082019050919050565b60006132d68261326b565b6132e08185613276565b93506132eb83613287565b8060005b8381101561331c57815161330388826132a6565b975061330e836132be565b9250506001810190506132ef565b5085935050505092915050565b600060a08201905061333e6000830188612683565b61334b602083018761325c565b818103604083015261335d81866132cb565b905061336c60608301856128b0565b6133796080830184612683565b9695505050505050565b600060c08201905061339860008301896128b0565b6133a56020830188612683565b6133b2604083018761325c565b6133bf606083018661325c565b6133cc60808301856128b0565b6133d960a0830184612683565b979650505050505050565b6000815190506133f3816125e1565b92915050565b60008060006060848603121561341257613411612574565b5b6000613420868287016133e4565b9350506020613431868287016133e4565b9250506040613442868287016133e4565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ab533ff3cb07408b21ec6025e2364750c2b208ff52325ca6e441b8ba06b664c764736f6c63430008100033

Deployed Bytecode

0x6080604052600436106101395760003560e01c806370a08231116100ab5780638c41180e1161006f5780638c41180e1461043557806395d89b411461045e578063a8aa1b3114610489578063a9059cbb146104b4578063dd62ed3e146104f1578063f2fde38b1461052e57610140565b806370a082311461034e57806378109e541461038b5780637d1db4a5146103b657806384836778146103e1578063893d20e81461040a57610140565b8063293230b8116100fd578063293230b8146102405780632f54bf6e14610257578063313ce5671461029457806334c5d2ce146102bf5780633f4218e0146102e857806348ff2b8b1461032557610140565b806306fdde0314610145578063095ea7b31461017057806318160ddd146101ad5780631f976b7e146101d857806323b872dd1461020357610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a610557565b6040516101679190612552565b60405180910390f35b34801561017c57600080fd5b506101976004803603810190610192919061260d565b610594565b6040516101a49190612668565b60405180910390f35b3480156101b957600080fd5b506101c26105ab565b6040516101cf9190612692565b60405180910390f35b3480156101e457600080fd5b506101ed6105ec565b6040516101fa9190612692565b60405180910390f35b34801561020f57600080fd5b5061022a600480360381019061022591906126ad565b610615565b6040516102379190612668565b60405180910390f35b34801561024c57600080fd5b506102556106e0565b005b34801561026357600080fd5b5061027e60048036038101906102799190612700565b610745565b60405161028b9190612668565b60405180910390f35b3480156102a057600080fd5b506102a961079e565b6040516102b69190612749565b60405180910390f35b3480156102cb57600080fd5b506102e660048036038101906102e19190612764565b6107a7565b005b3480156102f457600080fd5b5061030f600480360381019061030a9190612700565b610907565b60405161031c9190612668565b60405180910390f35b34801561033157600080fd5b5061034c600480360381019061034791906127e3565b610927565b005b34801561035a57600080fd5b5061037560048036038101906103709190612700565b6109ca565b6040516103829190612692565b60405180910390f35b34801561039757600080fd5b506103a0610a13565b6040516103ad9190612692565b60405180910390f35b3480156103c257600080fd5b506103cb610a3c565b6040516103d89190612692565b60405180910390f35b3480156103ed57600080fd5b5061040860048036038101906104039190612823565b610a65565b005b34801561041657600080fd5b5061041f610ba1565b60405161042c91906128bf565b60405180910390f35b34801561044157600080fd5b5061045c600480360381019061045791906127e3565b610bca565b005b34801561046a57600080fd5b50610473610c6d565b6040516104809190612552565b60405180910390f35b34801561049557600080fd5b5061049e610caa565b6040516104ab91906128bf565b60405180910390f35b3480156104c057600080fd5b506104db60048036038101906104d6919061260d565b610cd0565b6040516104e89190612668565b60405180910390f35b3480156104fd57600080fd5b50610518600480360381019061051391906128da565b610ce7565b6040516105259190612692565b60405180910390f35b34801561053a57600080fd5b5061055560048036038101906105509190612958565b610d6e565b005b60606040518060400160405280600981526020017f416d617465726173750000000000000000000000000000000000000000000000815250905090565b60006105a1338484610e30565b6001905092915050565b60006105e76105ba60006109ca565b6105d96105c861dead6109ca565b600154610ff990919063ffffffff16565b610ff990919063ffffffff16565b905090565b60006012546003546105fc6105ab565b61060691906129b4565b6106109190612a3d565b905090565b600061062284848461100f565b6106d584336106d08560405180606001604052806028815260200161344d60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112089092919063ffffffff16565b610e30565b600190509392505050565b6106e933610745565b610728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071f90612aba565b60405180910390fd5b6001600a60146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b6107b033610745565b6107ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e690612aba565b60405180910390fd5b6000612710846107fd6105ab565b61080791906129b4565b6108119190612a3d565b90506000612710846108216105ab565b61082b91906129b4565b6108359190612a3d565b90506000612710846108456105ab565b61084f91906129b4565b6108599190612a3d565b905085600281905550846003819055508360048190555060006108a16103e861089360056108856105ab565b61125d90919063ffffffff16565b61127390919063ffffffff16565b90508084101580156108b35750808310155b80156108bf5750808210155b6108fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f590612b4c565b60405180910390fd5b50505050505050565b60076020528060005260406000206000915054906101000a900460ff1681565b61093033610745565b61096f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096690612aba565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601254600454610a236105ab565b610a2d91906129b4565b610a379190612a3d565b905090565b6000601254600254610a4c6105ab565b610a5691906129b4565b610a609190612a3d565b905090565b610a6e33610745565b610aad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa490612aba565b60405180910390fd5b85600b8190555084600c8190555083600e8190555082600d54610ad09190612b6c565b508160108190555080601181905550610b1683610b0886610afa898b61128990919063ffffffff16565b61128990919063ffffffff16565b61128990919063ffffffff16565b600f81905550610b32600560125461127390919063ffffffff16565b600f5411158015610b5a5750610b54600560125461127390919063ffffffff16565b60105411155b610b99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9090612c12565b60405180910390fd5b505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610bd333610745565b610c12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0990612aba565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60606040518060400160405280600881526020017f244f4d494b414d49000000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610cdd33848461100f565b6001905092915050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d7733610745565b610db6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dad90612aba565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610e259190612c91565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9690612d1e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0590612db0565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610fec9190612692565b60405180910390a3505050565b600081836110079190612b6c565b905092915050565b61101a83838361129f565b6110248383611410565b61102f83838361150d565b61103983836116eb565b6110448383836117b6565b61104f8383836119f5565b6110a181600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ff990919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006110f08484611a1e565b6110fa5781611106565b611105848484611acc565b5b905061115a81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461128990919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516111fa9190612692565b60405180910390a350505050565b6000838311158290611250576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112479190612552565b60405180910390fd5b5082840390509392505050565b6000818361126b91906129b4565b905092915050565b600081836112819190612a3d565b905092915050565b600081836112979190612dd0565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361130e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130590612e76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361137d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137490612f08565b60405180910390fd5b600081116113c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b790612f9a565b60405180910390fd5b6113c9836109ca565b81111561140b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114029061302c565b60405180910390fd5b505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156114b45750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561150957600a60149054906101000a900460ff16611508576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ff90613098565b60405180910390fd5b5b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115b15750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561160b5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611645575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156116e657611652610a13565b6116a482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461128990919063ffffffff16565b11156116e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116dc90613104565b60405180910390fd5b5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156117925750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156117b2576001601460008282546117aa9190612dd0565b925050819055505b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146118fe576118136105ec565b8111158061186a5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806118be5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6118fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f490613170565b60405180910390fd5b5b611906610a3c565b8111158061195d5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806119b15750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6119f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e790613170565b60405180910390fd5b505050565b611a00838383611c74565b15611a1957611a10601654611dad565b60006014819055505b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ac45750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080611ad98585611ffe565b1115611c69576000611b11611aee8686611ffe565b611b036012548661127390919063ffffffff16565b61125d90919063ffffffff16565b9050611b6581600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461128990919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c059190612692565b60405180910390a36000600e541115611c4e57611c4d3061dead611c48600e54611c3a6012548961127390919063ffffffff16565b61125d90919063ffffffff16565b61100f565b5b611c618184610ff990919063ffffffff16565b915050611c6d565b8190505b9392505050565b60008060175483101590506000601654611c8d306109ca565b10159050601560009054906101000a900460ff16158015611cba5750601360009054906101000a900460ff165b8015611cd25750600a60149054906101000a900460ff165b8015611cdb5750815b8015611d315750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d8a5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611d995750600360145410155b8015611da25750805b925050509392505050565b6001601560006101000a81548160ff0219169083151502179055506000611e1b6002611e0d600d54611dff600c54611df16001600b5461128990919063ffffffff16565b61128990919063ffffffff16565b61128990919063ffffffff16565b61125d90919063ffffffff16565b90506000611e4682611e38600b548661125d90919063ffffffff16565b61127390919063ffffffff16565b90506000611e5d8285610ff990919063ffffffff16565b90506000479050611e6d8261218d565b6000611e828247610ff990919063ffffffff16565b90506000611ead611e9e600b5488610ff990919063ffffffff16565b8361127390919063ffffffff16565b90506000611ec6600b548361125d90919063ffffffff16565b90506000811115611edc57611edb86826123d0565b5b6000611f06600c54611ef860028661125d90919063ffffffff16565b61125d90919063ffffffff16565b90506000811115611f6d57735aae07ba8263631793ad5dcf1580384575ad695573ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f6b573d6000803e3d6000fd5b505b60004790506000811115611fd75773f0ab700e4a653dc204f6ccd6a4363e98447031fb73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611fd5573d6000803e3d6000fd5b505b5050505050505050506000601560006101000a81548160ff02191690831515021790555050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120a15750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156120c3576120bc6064601254610ff990919063ffffffff16565b9050612187565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612122576010549050612187565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361218157600f549050612187565b60115490505b92915050565b6000600267ffffffffffffffff8111156121aa576121a9613190565b5b6040519080825280602002602001820160405280156121d85781602001602082028036833780820191505090505b50905030816000815181106121f0576121ef6131bf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612297573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122bb9190613203565b816001815181106122cf576122ce6131bf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061233630600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610e30565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161239a959493929190613329565b600060405180830381600087803b1580156123b457600080fd5b505af11580156123c8573d6000803e3d6000fd5b505050505050565b6123fd30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610e30565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008073f0ab700e4a653dc204f6ccd6a4363e98447031fb426040518863ffffffff1660e01b815260040161247896959493929190613383565b60606040518083038185885af1158015612496573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124bb91906133f9565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156124fc5780820151818401526020810190506124e1565b60008484015250505050565b6000601f19601f8301169050919050565b6000612524826124c2565b61252e81856124cd565b935061253e8185602086016124de565b61254781612508565b840191505092915050565b6000602082019050818103600083015261256c8184612519565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125a482612579565b9050919050565b6125b481612599565b81146125bf57600080fd5b50565b6000813590506125d1816125ab565b92915050565b6000819050919050565b6125ea816125d7565b81146125f557600080fd5b50565b600081359050612607816125e1565b92915050565b6000806040838503121561262457612623612574565b5b6000612632858286016125c2565b9250506020612643858286016125f8565b9150509250929050565b60008115159050919050565b6126628161264d565b82525050565b600060208201905061267d6000830184612659565b92915050565b61268c816125d7565b82525050565b60006020820190506126a76000830184612683565b92915050565b6000806000606084860312156126c6576126c5612574565b5b60006126d4868287016125c2565b93505060206126e5868287016125c2565b92505060406126f6868287016125f8565b9150509250925092565b60006020828403121561271657612715612574565b5b6000612724848285016125c2565b91505092915050565b600060ff82169050919050565b6127438161272d565b82525050565b600060208201905061275e600083018461273a565b92915050565b60008060006060848603121561277d5761277c612574565b5b600061278b868287016125f8565b935050602061279c868287016125f8565b92505060406127ad868287016125f8565b9150509250925092565b6127c08161264d565b81146127cb57600080fd5b50565b6000813590506127dd816127b7565b92915050565b600080604083850312156127fa576127f9612574565b5b6000612808858286016125c2565b9250506020612819858286016127ce565b9150509250929050565b60008060008060008060c087890312156128405761283f612574565b5b600061284e89828a016125f8565b965050602061285f89828a016125f8565b955050604061287089828a016125f8565b945050606061288189828a016125f8565b935050608061289289828a016125f8565b92505060a06128a389828a016125f8565b9150509295509295509295565b6128b981612599565b82525050565b60006020820190506128d460008301846128b0565b92915050565b600080604083850312156128f1576128f0612574565b5b60006128ff858286016125c2565b9250506020612910858286016125c2565b9150509250929050565b600061292582612579565b9050919050565b6129358161291a565b811461294057600080fd5b50565b6000813590506129528161292c565b92915050565b60006020828403121561296e5761296d612574565b5b600061297c84828501612943565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006129bf826125d7565b91506129ca836125d7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612a0357612a02612985565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612a48826125d7565b9150612a53836125d7565b925082612a6357612a62612a0e565b5b828204905092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612aa46006836124cd565b9150612aaf82612a6e565b602082019050919050565b60006020820190508181036000830152612ad381612a97565b9050919050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000612b36602e836124cd565b9150612b4182612ada565b604082019050919050565b60006020820190508181036000830152612b6581612b29565b9050919050565b6000612b77826125d7565b9150612b82836125d7565b9250828203905081811115612b9a57612b99612985565b5b92915050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60008201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b6000612bfc602c836124cd565b9150612c0782612ba0565b604082019050919050565b60006020820190508181036000830152612c2b81612bef565b9050919050565b6000819050919050565b6000612c57612c52612c4d84612579565b612c32565b612579565b9050919050565b6000612c6982612c3c565b9050919050565b6000612c7b82612c5e565b9050919050565b612c8b81612c70565b82525050565b6000602082019050612ca66000830184612c82565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612d086024836124cd565b9150612d1382612cac565b604082019050919050565b60006020820190508181036000830152612d3781612cfb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612d9a6022836124cd565b9150612da582612d3e565b604082019050919050565b60006020820190508181036000830152612dc981612d8d565b9050919050565b6000612ddb826125d7565b9150612de6836125d7565b9250828201905080821115612dfe57612dfd612985565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612e606025836124cd565b9150612e6b82612e04565b604082019050919050565b60006020820190508181036000830152612e8f81612e53565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612ef26023836124cd565b9150612efd82612e96565b604082019050919050565b60006020820190508181036000830152612f2181612ee5565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612f846029836124cd565b9150612f8f82612f28565b604082019050919050565b60006020820190508181036000830152612fb381612f77565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b60006130166031836124cd565b915061302182612fba565b604082019050919050565b6000602082019050818103600083015261304581613009565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b6000613082600e836124cd565b915061308d8261304c565b602082019050919050565b600060208201905081810360008301526130b181613075565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b60006130ee601e836124cd565b91506130f9826130b8565b602082019050919050565b6000602082019050818103600083015261311d816130e1565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b600061315a6011836124cd565b915061316582613124565b602082019050919050565b600060208201905081810360008301526131898161314d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506131fd816125ab565b92915050565b60006020828403121561321957613218612574565b5b6000613227848285016131ee565b91505092915050565b6000819050919050565b600061325561325061324b84613230565b612c32565b6125d7565b9050919050565b6132658161323a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6132a081612599565b82525050565b60006132b28383613297565b60208301905092915050565b6000602082019050919050565b60006132d68261326b565b6132e08185613276565b93506132eb83613287565b8060005b8381101561331c57815161330388826132a6565b975061330e836132be565b9250506001810190506132ef565b5085935050505092915050565b600060a08201905061333e6000830188612683565b61334b602083018761325c565b818103604083015261335d81866132cb565b905061336c60608301856128b0565b6133796080830184612683565b9695505050505050565b600060c08201905061339860008301896128b0565b6133a56020830188612683565b6133b2604083018761325c565b6133bf606083018661325c565b6133cc60808301856128b0565b6133d960a0830184612683565b979650505050505050565b6000815190506133f3816125e1565b92915050565b60008060006060848603121561341257613411612574565b5b6000613420868287016133e4565b9350506020613431868287016133e4565b9250506040613442868287016133e4565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ab533ff3cb07408b21ec6025e2364750c2b208ff52325ca6e441b8ba06b664c764736f6c63430008100033

Deployed Bytecode Sourcemap

4726:11653:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7075:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8195:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8334:132;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8711:119;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15722:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7298:67;;;;;;;;;;;;;:::i;:::-;;3106:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7225:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10547:584;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5288:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8081:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7455:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8472:114;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8592:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9979:560;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7371:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7976:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7148:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5406:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7564:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7709:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3199:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7075:67;7112:13;7135:5;;;;;;;;;;;;;;;;;7128:12;;7075:67;:::o;8195:133::-;8270:4;8277:37;8286:10;8298:7;8307:6;8277:8;:37::i;:::-;8322:4;8315:11;;8195:133;;;;:::o;8334:132::-;8387:7;8404:60;8442:21;8460:1;8442:9;:21::i;:::-;8404:33;8421:15;6130:42;8421:9;:15::i;:::-;8404:12;;:16;;:33;;;;:::i;:::-;:37;;:60;;;;:::i;:::-;8397:67;;8334:132;:::o;8711:119::-;8762:7;8817:11;;8795:19;;8779:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;8772:56;;8711:119;:::o;15722:309::-;15820:4;15837:36;15847:6;15855:9;15866:6;15837:9;:36::i;:::-;15884:117;15893:6;15901:10;15913:87;15949:6;15913:87;;;;;;;;;;;;;;;;;:11;:19;15925:6;15913:19;;;;;;;;;;;;;;;:31;15933:10;15913:31;;;;;;;;;;;;;;;;:35;;:87;;;;;:::i;:::-;15884:8;:117::i;:::-;16019:4;16012:11;;15722:309;;;;;:::o;7298:67::-;3065:19;3073:10;3065:7;:19::i;:::-;3057:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;7359:4:::1;7342:14;;:21;;;;;;;;;;;;;;;;;;7298:67::o:0;3106:87::-;3161:4;3186:5;;;;;;;;;;;3175:16;;:7;:16;;;3168:23;;3106:87;;;:::o;7225:67::-;7266:5;4940:1;7274:16;;7225:67;:::o;10547:584::-;3065:19;3073:10;3065:7;:19::i;:::-;3057:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10647:13:::1;10688:5;10680:4;10664:13;:11;:13::i;:::-;:20;;;;:::i;:::-;10663:30;;;;:::i;:::-;10647:46;;10704:19;10753:5;10743:6;10727:13;:11;:13::i;:::-;:22;;;;:::i;:::-;10726:32;;;;:::i;:::-;10704:54;;10769:17;10817:5;10806:7;10790:13;:11;:13::i;:::-;:23;;;;:::i;:::-;10789:33;;;;:::i;:::-;10769:53;;10855:4;10833:19;:26;;;;10892:6;10870:19;:28;;;;10929:7;10909:17;:27;;;;10947:13;10963:30;10988:4;10963:20;10981:1;10963:13;:11;:13::i;:::-;:17;;:20;;;;:::i;:::-;:24;;:30;;;;:::i;:::-;10947:46;;11021:5;11012;:14;;:38;;;;;11045:5;11030:11;:20;;11012:38;:60;;;;;11067:5;11054:9;:18;;11012:60;11004:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;10636:495;;;;10547:584:::0;;;:::o;5288:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;8081:108::-;3065:19;3073:10;3065:7;:19::i;:::-;3057:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8179:8:::1;8155:11;:21;8167:8;8155:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;8081:108:::0;;:::o;7455:103::-;7521:7;7538:9;:18;7548:7;7538:18;;;;;;;;;;;;;;;;7531:25;;7455:103;;;:::o;8472:114::-;8520:7;8573:11;;8553:17;;8537:13;:11;:13::i;:::-;:33;;;;:::i;:::-;:47;;;;:::i;:::-;8530:54;;8472:114;:::o;8592:113::-;8637:7;8692:11;;8670:19;;8654:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;8647:56;;8592:113;:::o;9979:560::-;3065:19;3073:10;3065:7;:19::i;:::-;3057:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10154:10:::1;10139:12;:25;;;;10190:10;10175:12;:25;;;;10221:5;10211:7;:15;;;;10254:12;10237:14;;:29;;;;:::i;:::-;;10287:5;10277:7;:15;;;;10317:6;10303:11;:20;;;;10345:55;10387:12;10345:37;10376:5;10345:26;10360:10;10345;:14;;:26;;;;:::i;:::-;:30;;:37;;;;:::i;:::-;:41;;:55;;;;:::i;:::-;10334:8;:66;;;;10431:18;10447:1;10431:11;;:15;;:18;;;;:::i;:::-;10419:8;;:30;;:63;;;;;10464:18;10480:1;10464:11;;:15;;:18;;;;:::i;:::-;10453:7;;:29;;10419:63;10411:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;9979:560:::0;;;;;;:::o;7371:78::-;7423:7;7441:5;;;;;;;;;;;7434:12;;7371:78;:::o;7976:99::-;3065:19;3073:10;3065:7;:19::i;:::-;3057:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8065:8:::1;8047:5;:15;8053:8;8047:15;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;7976:99:::0;;:::o;7148:71::-;7187:13;7210:7;;;;;;;;;;;;;;;;;7203:14;;7148:71;:::o;5406:19::-;;;;;;;;;;;;;:::o;7564:139::-;7642:4;7649:40;7659:10;7671:9;7682:6;7649:9;:40::i;:::-;7697:4;7690:11;;7564:139;;;;:::o;7709:127::-;7790:7;7807:11;:18;7819:5;7807:18;;;;;;;;;;;;;;;:27;7826:7;7807:27;;;;;;;;;;;;;;;;7800:34;;7709:127;;;;:::o;3199:111::-;3065:19;3073:10;3065:7;:19::i;:::-;3057:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3273:3:::1;3265:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3283:25;3304:3;3283:25;;;;;;:::i;:::-;;;;;;;;3199:111:::0;:::o;16039:335::-;16149:1;16132:19;;:5;:19;;;16124:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16230:1;16211:21;;:7;:21;;;16203:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16312:6;16282:11;:18;16294:5;16282:18;;;;;;;;;;;;;;;:27;16301:7;16282:27;;;;;;;;;;;;;;;:36;;;;16350:7;16334:32;;16343:5;16334:32;;;16359:6;16334:32;;;;;;:::i;:::-;;;;;;;;16039:335;;;:::o;292:82::-;350:7;371:1;367;:5;;;;:::i;:::-;360:12;;292:82;;;;:::o;9285:686::-;9374:37;9385:6;9393:9;9404:6;9374:10;:37::i;:::-;9422:38;9442:6;9450:9;9422:19;:38::i;:::-;9471:41;9486:6;9494:9;9505:6;9471:14;:41::i;:::-;9524:35;9541:6;9549:9;9524:16;:35::i;:::-;9570:39;9583:6;9591:9;9602:6;9570:12;:39::i;:::-;9621:35;9630:6;9638:9;9649:6;9621:8;:35::i;:::-;9687:29;9709:6;9687:9;:17;9697:6;9687:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;9667:9;:17;9677:6;9667:17;;;;;;;;;;;;;;;:49;;;;9727:22;9752:32;9766:6;9774:9;9752:13;:32::i;:::-;:78;;9824:6;9752:78;;;9787:34;9795:6;9803:9;9814:6;9787:7;:34::i;:::-;9752:78;9727:103;;9864:40;9889:14;9864:9;:20;9874:9;9864:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;9841:9;:20;9851:9;9841:20;;;;;;;;;;;;;;;:63;;;;9937:9;9920:43;;9929:6;9920:43;;;9948:14;9920:43;;;;;;:::i;:::-;;;;;;;;9363:608;9285:686;;;:::o;1505:162::-;1591:7;1634:1;1629;:6;;1637:12;1621:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1663:1;1659;:5;1652:12;;1505:162;;;;;:::o;380:82::-;438:7;459:1;455;:5;;;;:::i;:::-;448:12;;380:82;;;;:::o;468:::-;526:7;547:1;543;:5;;;;:::i;:::-;536:12;;468:82;;;;:::o;204:::-;262:7;283:1;279;:5;;;;:::i;:::-;272:12;;204:82;;;;:::o;8838:439::-;8960:1;8942:20;;:6;:20;;;8934:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9044:1;9023:23;;:9;:23;;;9015:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9122:1;9105:6;:19;9097:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9199:17;9209:6;9199:9;:17::i;:::-;9189:6;:27;;9181:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;8838:439;;;:::o;11139:191::-;11232:11;:19;11244:6;11232:19;;;;;;;;;;;;;;;;;;;;;;;;;11231:20;:47;;;;;11256:11;:22;11268:9;11256:22;;;;;;;;;;;;;;;;;;;;;;;;;11255:23;11231:47;11228:95;;;11288:14;;;;;;;;;;;11280:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;11228:95;11139:191;;:::o;11342:333::-;11446:11;:19;11458:6;11446:19;;;;;;;;;;;;;;;;;;;;;;;;;11445:20;:47;;;;;11470:11;:22;11482:9;11470:22;;;;;;;;;;;;;;;;;;;;;;;;;11469:23;11445:47;:77;;;;;11517:4;;;;;;;;;;;11496:26;;:9;:26;;;;11445:77;:107;;;;;6130:42;11526:26;;:9;:26;;;;11445:107;11442:226;;;11614:17;:15;:17::i;:::-;11577:32;11602:6;11577:9;:20;11587:9;11577:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;11576:55;;11568:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;11442:226;11342:333;;;:::o;11683:159::-;11780:4;;;;;;;;;;;11767:17;;:9;:17;;;:41;;;;;11789:11;:19;11801:6;11789:19;;;;;;;;;;;;;;;;;;;;;;;;;11788:20;11767:41;11764:71;;;11831:1;11810:9;;:23;;;;;;;:::i;:::-;;;;;;;;11764:71;11683:159;;:::o;11850:349::-;11961:4;;;;;;;;;;;11951:14;;:6;:14;;;11948:130;;11985:20;:18;:20::i;:::-;11975:6;:30;;:53;;;;12009:11;:19;12021:6;12009:19;;;;;;;;;;;;;;;;;;;;;;;;;11975:53;:79;;;;12032:11;:22;12044:9;12032:22;;;;;;;;;;;;;;;;;;;;;;;;;11975:79;11967:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;11948:130;12106:14;:12;:14::i;:::-;12096:6;:24;;:47;;;;12124:11;:19;12136:6;12124:19;;;;;;;;;;;;;;;;;;;;;;;;;12096:47;:73;;;;12147:11;:22;12159:9;12147:22;;;;;;;;;;;;;;;;;;;;;;;;;12096:73;12088:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;11850:349;;;:::o;14482:197::-;14574:41;14589:6;14597:9;14608:6;14574:14;:41::i;:::-;14571:101;;;14617:29;14632:13;;14617:14;:29::i;:::-;14668:1;14648:9;:22;;;;14571:101;14482:197;;;:::o;14687:160::-;14768:4;14793:11;:19;14805:6;14793:19;;;;;;;;;;;;;;;;;;;;;;;;;14792:20;:47;;;;;14817:11;:22;14829:9;14817:22;;;;;;;;;;;;;;;;;;;;;;;;;14816:23;14792:47;14785:54;;14687:160;;;;:::o;15168:546::-;15254:7;15310:1;15277:30;15289:6;15297:9;15277:11;:30::i;:::-;:34;15274:418;;;15323:17;15343:59;15371:30;15383:6;15391:9;15371:11;:30::i;:::-;15343:23;15354:11;;15343:6;:10;;:23;;;;:::i;:::-;:27;;:59;;;;:::i;:::-;15323:79;;15440:39;15469:9;15440;:24;15458:4;15440:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;15413:9;:24;15431:4;15413:24;;;;;;;;;;;;;;;:66;;;;15520:4;15495:42;;15504:6;15495:42;;;15527:9;15495:42;;;;;;:::i;:::-;;;;;;;;15569:1;15551:7;;:20;15548:104;;;15573:77;15591:4;6130:42;15613:36;15641:7;;15613:23;15624:11;;15613:6;:10;;:23;;;;:::i;:::-;:27;;:36;;;;:::i;:::-;15573:9;:77::i;:::-;15548:104;15669:21;15680:9;15669:6;:10;;:21;;;;:::i;:::-;15662:28;;;;;15274:418;15700:6;15693:13;;15168:546;;;;;;:::o;14074:400::-;14172:4;14189:13;14215:15;;14205:6;:25;;14189:41;;14241:19;14291:13;;14263:24;14281:4;14263:9;:24::i;:::-;:41;;14241:63;;14323:8;;;;;;;;;;;14322:9;:24;;;;;14335:11;;;;;;;;;;;14322:24;:42;;;;;14350:14;;;;;;;;;;;14322:42;:54;;;;;14368:8;14322:54;:78;;;;;14381:11;:19;14393:6;14381:19;;;;;;;;;;;;;;;;;;;;;;;;;14380:20;14322:78;:99;;;;;14417:4;;;;;;;;;;;14404:17;;:9;:17;;;14322:99;:126;;;;;14446:1;14425:9;;:23;;14322:126;:144;;;;;14452:14;14322:144;14315:151;;;;14074:400;;;;;:::o;12207:1066::-;6062:4;6051:8;;:15;;;;;;;;;;;;;;;;;;12278:20:::1;12301:66;12365:1;12302:57;12344:14;;12302:37;12326:12;;12302:19;12319:1;12302:12;;:16;;:19;;;;:::i;:::-;:23;;:37;;;;:::i;:::-;:41;;:57;;;;:::i;:::-;12301:63;;:66;;;;:::i;:::-;12278:89;;12378:32;12413:42;12442:12;12413:24;12424:12;;12413:6;:10;;:24;;;;:::i;:::-;:28;;:42;;;;:::i;:::-;12378:77;;12466:14;12483:36;12494:24;12483:6;:10;;:36;;;;:::i;:::-;12466:53;;12530:22;12555:21;12530:46;;12587:24;12604:6;12587:16;:24::i;:::-;12622:20;12645:41;12671:14;12645:21;:25;;:41;;;;:::i;:::-;12622:64;;12697:19;12718:48;12735:30;12752:12;;12735;:16;;:30;;;;:::i;:::-;12718:12;:16;;:48;;;;:::i;:::-;12697:69;;12777:29;12809;12825:12;;12809:11;:15;;:29;;;;:::i;:::-;12777:61;;12884:1;12852:21;:34;12849:103;;;12888:61;12901:24;12927:21;12888:12;:61::i;:::-;12849:103;12962:20;12985:36;13008:12;;12985:18;13001:1;12985:11;:15;;:18;;;;:::i;:::-;:22;;:36;;;;:::i;:::-;12962:59;;13050:1;13035:12;:16;13032:73;;;6325:42;13053:36;;:50;13090:12;13053:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;13032:73;13115:24;13142:21;13115:48;;13204:1;13177:16;:29;13174:92;;;6228:42;13208:38;;:56;13247:16;13208:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;13174:92;12267:1006;;;;;;;;;6082:5:::0;6071:8;;:16;;;;;;;;;;;;;;;;;;12207:1066;:::o;14855:305::-;14934:7;14957:5;:13;14963:6;14957:13;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;14974:5;:16;14980:9;14974:16;;;;;;;;;;;;;;;;;;;;;;;;;14957:33;14954:76;;;14999:29;15023:3;14999:11;;:15;;:29;;;;:::i;:::-;14992:36;;;;14954:76;15056:4;;;;;;;;;;;15043:17;;:9;:17;;;15040:38;;15069:7;;15062:14;;;;15040:38;15101:4;;;;;;;;;;;15091:14;;:6;:14;;;15088:36;;15114:8;;15107:15;;;;15088:36;15141:11;;15134:18;;14855:305;;;;;:::o;13632:434::-;13698:21;13736:1;13722:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13698:40;;13767:4;13749;13754:1;13749:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13793:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13783:4;13788:1;13783:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13817:53;13834:4;13849:6;;;;;;;;;;;13858:11;13817:8;:53::i;:::-;13881:6;;;;;;;;;;;:57;;;13953:11;13979:1;13995:4;14022;14042:15;13881:177;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13687:379;13632:434;:::o;13281:343::-;13362:53;13379:4;13394:6;;;;;;;;;;;13403:11;13362:8;:53::i;:::-;13426:6;;;;;;;;;;;:22;;;13456:9;13489:4;13509:11;13535:1;13551;6421:42;13600:15;13426:190;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13281:343;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:329::-;4482:6;4531:2;4519:9;4510:7;4506:23;4502:32;4499:119;;;4537:79;;:::i;:::-;4499:119;4657:1;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4628:117;4423:329;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:619::-;5265:6;5273;5281;5330:2;5318:9;5309:7;5305:23;5301:32;5298:119;;;5336:79;;:::i;:::-;5298:119;5456:1;5481:53;5526:7;5517:6;5506:9;5502:22;5481:53;:::i;:::-;5471:63;;5427:117;5583:2;5609:53;5654:7;5645:6;5634:9;5630:22;5609:53;:::i;:::-;5599:63;;5554:118;5711:2;5737:53;5782:7;5773:6;5762:9;5758:22;5737:53;:::i;:::-;5727:63;;5682:118;5188:619;;;;;:::o;5813:116::-;5883:21;5898:5;5883:21;:::i;:::-;5876:5;5873:32;5863:60;;5919:1;5916;5909:12;5863:60;5813:116;:::o;5935:133::-;5978:5;6016:6;6003:20;5994:29;;6032:30;6056:5;6032:30;:::i;:::-;5935:133;;;;:::o;6074:468::-;6139:6;6147;6196:2;6184:9;6175:7;6171:23;6167:32;6164:119;;;6202:79;;:::i;:::-;6164:119;6322:1;6347:53;6392:7;6383:6;6372:9;6368:22;6347:53;:::i;:::-;6337:63;;6293:117;6449:2;6475:50;6517:7;6508:6;6497:9;6493:22;6475:50;:::i;:::-;6465:60;;6420:115;6074:468;;;;;:::o;6548:1057::-;6652:6;6660;6668;6676;6684;6692;6741:3;6729:9;6720:7;6716:23;6712:33;6709:120;;;6748:79;;:::i;:::-;6709:120;6868:1;6893:53;6938:7;6929:6;6918:9;6914:22;6893:53;:::i;:::-;6883:63;;6839:117;6995:2;7021:53;7066:7;7057:6;7046:9;7042:22;7021:53;:::i;:::-;7011:63;;6966:118;7123:2;7149:53;7194:7;7185:6;7174:9;7170:22;7149:53;:::i;:::-;7139:63;;7094:118;7251:2;7277:53;7322:7;7313:6;7302:9;7298:22;7277:53;:::i;:::-;7267:63;;7222:118;7379:3;7406:53;7451:7;7442:6;7431:9;7427:22;7406:53;:::i;:::-;7396:63;;7350:119;7508:3;7535:53;7580:7;7571:6;7560:9;7556:22;7535:53;:::i;:::-;7525:63;;7479:119;6548:1057;;;;;;;;:::o;7611:118::-;7698:24;7716:5;7698:24;:::i;:::-;7693:3;7686:37;7611:118;;:::o;7735:222::-;7828:4;7866:2;7855:9;7851:18;7843:26;;7879:71;7947:1;7936:9;7932:17;7923:6;7879:71;:::i;:::-;7735:222;;;;:::o;7963:474::-;8031:6;8039;8088:2;8076:9;8067:7;8063:23;8059:32;8056:119;;;8094:79;;:::i;:::-;8056:119;8214:1;8239:53;8284:7;8275:6;8264:9;8260:22;8239:53;:::i;:::-;8229:63;;8185:117;8341:2;8367:53;8412:7;8403:6;8392:9;8388:22;8367:53;:::i;:::-;8357:63;;8312:118;7963:474;;;;;:::o;8443:104::-;8488:7;8517:24;8535:5;8517:24;:::i;:::-;8506:35;;8443:104;;;:::o;8553:138::-;8634:32;8660:5;8634:32;:::i;:::-;8627:5;8624:43;8614:71;;8681:1;8678;8671:12;8614:71;8553:138;:::o;8697:155::-;8751:5;8789:6;8776:20;8767:29;;8805:41;8840:5;8805:41;:::i;:::-;8697:155;;;;:::o;8858:345::-;8925:6;8974:2;8962:9;8953:7;8949:23;8945:32;8942:119;;;8980:79;;:::i;:::-;8942:119;9100:1;9125:61;9178:7;9169:6;9158:9;9154:22;9125:61;:::i;:::-;9115:71;;9071:125;8858:345;;;;:::o;9209:180::-;9257:77;9254:1;9247:88;9354:4;9351:1;9344:15;9378:4;9375:1;9368:15;9395:348;9435:7;9458:20;9476:1;9458:20;:::i;:::-;9453:25;;9492:20;9510:1;9492:20;:::i;:::-;9487:25;;9680:1;9612:66;9608:74;9605:1;9602:81;9597:1;9590:9;9583:17;9579:105;9576:131;;;9687:18;;:::i;:::-;9576:131;9735:1;9732;9728:9;9717:20;;9395:348;;;;:::o;9749:180::-;9797:77;9794:1;9787:88;9894:4;9891:1;9884:15;9918:4;9915:1;9908:15;9935:185;9975:1;9992:20;10010:1;9992:20;:::i;:::-;9987:25;;10026:20;10044:1;10026:20;:::i;:::-;10021:25;;10065:1;10055:35;;10070:18;;:::i;:::-;10055:35;10112:1;10109;10105:9;10100:14;;9935:185;;;;:::o;10126:156::-;10266:8;10262:1;10254:6;10250:14;10243:32;10126:156;:::o;10288:365::-;10430:3;10451:66;10515:1;10510:3;10451:66;:::i;:::-;10444:73;;10526:93;10615:3;10526:93;:::i;:::-;10644:2;10639:3;10635:12;10628:19;;10288:365;;;:::o;10659:419::-;10825:4;10863:2;10852:9;10848:18;10840:26;;10912:9;10906:4;10902:20;10898:1;10887:9;10883:17;10876:47;10940:131;11066:4;10940:131;:::i;:::-;10932:139;;10659:419;;;:::o;11084:233::-;11224:34;11220:1;11212:6;11208:14;11201:58;11293:16;11288:2;11280:6;11276:15;11269:41;11084:233;:::o;11323:366::-;11465:3;11486:67;11550:2;11545:3;11486:67;:::i;:::-;11479:74;;11562:93;11651:3;11562:93;:::i;:::-;11680:2;11675:3;11671:12;11664:19;;11323:366;;;:::o;11695:419::-;11861:4;11899:2;11888:9;11884:18;11876:26;;11948:9;11942:4;11938:20;11934:1;11923:9;11919:17;11912:47;11976:131;12102:4;11976:131;:::i;:::-;11968:139;;11695:419;;;:::o;12120:194::-;12160:4;12180:20;12198:1;12180:20;:::i;:::-;12175:25;;12214:20;12232:1;12214:20;:::i;:::-;12209:25;;12258:1;12255;12251:9;12243:17;;12282:1;12276:4;12273:11;12270:37;;;12287:18;;:::i;:::-;12270:37;12120:194;;;;:::o;12320:231::-;12460:34;12456:1;12448:6;12444:14;12437:58;12529:14;12524:2;12516:6;12512:15;12505:39;12320:231;:::o;12557:366::-;12699:3;12720:67;12784:2;12779:3;12720:67;:::i;:::-;12713:74;;12796:93;12885:3;12796:93;:::i;:::-;12914:2;12909:3;12905:12;12898:19;;12557:366;;;:::o;12929:419::-;13095:4;13133:2;13122:9;13118:18;13110:26;;13182:9;13176:4;13172:20;13168:1;13157:9;13153:17;13146:47;13210:131;13336:4;13210:131;:::i;:::-;13202:139;;12929:419;;;:::o;13354:60::-;13382:3;13403:5;13396:12;;13354:60;;;:::o;13420:142::-;13470:9;13503:53;13521:34;13530:24;13548:5;13530:24;:::i;:::-;13521:34;:::i;:::-;13503:53;:::i;:::-;13490:66;;13420:142;;;:::o;13568:126::-;13618:9;13651:37;13682:5;13651:37;:::i;:::-;13638:50;;13568:126;;;:::o;13700:134::-;13758:9;13791:37;13822:5;13791:37;:::i;:::-;13778:50;;13700:134;;;:::o;13840:147::-;13935:45;13974:5;13935:45;:::i;:::-;13930:3;13923:58;13840:147;;:::o;13993:238::-;14094:4;14132:2;14121:9;14117:18;14109:26;;14145:79;14221:1;14210:9;14206:17;14197:6;14145:79;:::i;:::-;13993:238;;;;:::o;14237:223::-;14377:34;14373:1;14365:6;14361:14;14354:58;14446:6;14441:2;14433:6;14429:15;14422:31;14237:223;:::o;14466:366::-;14608:3;14629:67;14693:2;14688:3;14629:67;:::i;:::-;14622:74;;14705:93;14794:3;14705:93;:::i;:::-;14823:2;14818:3;14814:12;14807:19;;14466:366;;;:::o;14838:419::-;15004:4;15042:2;15031:9;15027:18;15019:26;;15091:9;15085:4;15081:20;15077:1;15066:9;15062:17;15055:47;15119:131;15245:4;15119:131;:::i;:::-;15111:139;;14838:419;;;:::o;15263:221::-;15403:34;15399:1;15391:6;15387:14;15380:58;15472:4;15467:2;15459:6;15455:15;15448:29;15263:221;:::o;15490:366::-;15632:3;15653:67;15717:2;15712:3;15653:67;:::i;:::-;15646:74;;15729:93;15818:3;15729:93;:::i;:::-;15847:2;15842:3;15838:12;15831:19;;15490:366;;;:::o;15862:419::-;16028:4;16066:2;16055:9;16051:18;16043:26;;16115:9;16109:4;16105:20;16101:1;16090:9;16086:17;16079:47;16143:131;16269:4;16143:131;:::i;:::-;16135:139;;15862:419;;;:::o;16287:191::-;16327:3;16346:20;16364:1;16346:20;:::i;:::-;16341:25;;16380:20;16398:1;16380:20;:::i;:::-;16375:25;;16423:1;16420;16416:9;16409:16;;16444:3;16441:1;16438:10;16435:36;;;16451:18;;:::i;:::-;16435:36;16287:191;;;;:::o;16484:224::-;16624:34;16620:1;16612:6;16608:14;16601:58;16693:7;16688:2;16680:6;16676:15;16669:32;16484:224;:::o;16714:366::-;16856:3;16877:67;16941:2;16936:3;16877:67;:::i;:::-;16870:74;;16953:93;17042:3;16953:93;:::i;:::-;17071:2;17066:3;17062:12;17055:19;;16714:366;;;:::o;17086:419::-;17252:4;17290:2;17279:9;17275:18;17267:26;;17339:9;17333:4;17329:20;17325:1;17314:9;17310:17;17303:47;17367:131;17493:4;17367:131;:::i;:::-;17359:139;;17086:419;;;:::o;17511:222::-;17651:34;17647:1;17639:6;17635:14;17628:58;17720:5;17715:2;17707:6;17703:15;17696:30;17511:222;:::o;17739:366::-;17881:3;17902:67;17966:2;17961:3;17902:67;:::i;:::-;17895:74;;17978:93;18067:3;17978:93;:::i;:::-;18096:2;18091:3;18087:12;18080:19;;17739:366;;;:::o;18111:419::-;18277:4;18315:2;18304:9;18300:18;18292:26;;18364:9;18358:4;18354:20;18350:1;18339:9;18335:17;18328:47;18392:131;18518:4;18392:131;:::i;:::-;18384:139;;18111:419;;;:::o;18536:228::-;18676:34;18672:1;18664:6;18660:14;18653:58;18745:11;18740:2;18732:6;18728:15;18721:36;18536:228;:::o;18770:366::-;18912:3;18933:67;18997:2;18992:3;18933:67;:::i;:::-;18926:74;;19009:93;19098:3;19009:93;:::i;:::-;19127:2;19122:3;19118:12;19111:19;;18770:366;;;:::o;19142:419::-;19308:4;19346:2;19335:9;19331:18;19323:26;;19395:9;19389:4;19385:20;19381:1;19370:9;19366:17;19359:47;19423:131;19549:4;19423:131;:::i;:::-;19415:139;;19142:419;;;:::o;19567:236::-;19707:34;19703:1;19695:6;19691:14;19684:58;19776:19;19771:2;19763:6;19759:15;19752:44;19567:236;:::o;19809:366::-;19951:3;19972:67;20036:2;20031:3;19972:67;:::i;:::-;19965:74;;20048:93;20137:3;20048:93;:::i;:::-;20166:2;20161:3;20157:12;20150:19;;19809:366;;;:::o;20181:419::-;20347:4;20385:2;20374:9;20370:18;20362:26;;20434:9;20428:4;20424:20;20420:1;20409:9;20405:17;20398:47;20462:131;20588:4;20462:131;:::i;:::-;20454:139;;20181:419;;;:::o;20606:164::-;20746:16;20742:1;20734:6;20730:14;20723:40;20606:164;:::o;20776:366::-;20918:3;20939:67;21003:2;20998:3;20939:67;:::i;:::-;20932:74;;21015:93;21104:3;21015:93;:::i;:::-;21133:2;21128:3;21124:12;21117:19;;20776:366;;;:::o;21148:419::-;21314:4;21352:2;21341:9;21337:18;21329:26;;21401:9;21395:4;21391:20;21387:1;21376:9;21372:17;21365:47;21429:131;21555:4;21429:131;:::i;:::-;21421:139;;21148:419;;;:::o;21573:180::-;21713:32;21709:1;21701:6;21697:14;21690:56;21573:180;:::o;21759:366::-;21901:3;21922:67;21986:2;21981:3;21922:67;:::i;:::-;21915:74;;21998:93;22087:3;21998:93;:::i;:::-;22116:2;22111:3;22107:12;22100:19;;21759:366;;;:::o;22131:419::-;22297:4;22335:2;22324:9;22320:18;22312:26;;22384:9;22378:4;22374:20;22370:1;22359:9;22355:17;22348:47;22412:131;22538:4;22412:131;:::i;:::-;22404:139;;22131:419;;;:::o;22556:167::-;22696:19;22692:1;22684:6;22680:14;22673:43;22556:167;:::o;22729:366::-;22871:3;22892:67;22956:2;22951:3;22892:67;:::i;:::-;22885:74;;22968:93;23057:3;22968:93;:::i;:::-;23086:2;23081:3;23077:12;23070:19;;22729:366;;;:::o;23101:419::-;23267:4;23305:2;23294:9;23290:18;23282:26;;23354:9;23348:4;23344:20;23340:1;23329:9;23325:17;23318:47;23382:131;23508:4;23382:131;:::i;:::-;23374:139;;23101:419;;;:::o;23526:180::-;23574:77;23571:1;23564:88;23671:4;23668:1;23661:15;23695:4;23692:1;23685:15;23712:180;23760:77;23757:1;23750:88;23857:4;23854:1;23847:15;23881:4;23878:1;23871:15;23898:143;23955:5;23986:6;23980:13;23971:22;;24002:33;24029:5;24002:33;:::i;:::-;23898:143;;;;:::o;24047:351::-;24117:6;24166:2;24154:9;24145:7;24141:23;24137:32;24134:119;;;24172:79;;:::i;:::-;24134:119;24292:1;24317:64;24373:7;24364:6;24353:9;24349:22;24317:64;:::i;:::-;24307:74;;24263:128;24047:351;;;;:::o;24404:85::-;24449:7;24478:5;24467:16;;24404:85;;;:::o;24495:158::-;24553:9;24586:61;24604:42;24613:32;24639:5;24613:32;:::i;:::-;24604:42;:::i;:::-;24586:61;:::i;:::-;24573:74;;24495:158;;;:::o;24659:147::-;24754:45;24793:5;24754:45;:::i;:::-;24749:3;24742:58;24659:147;;:::o;24812:114::-;24879:6;24913:5;24907:12;24897:22;;24812:114;;;:::o;24932:184::-;25031:11;25065:6;25060:3;25053:19;25105:4;25100:3;25096:14;25081:29;;24932:184;;;;:::o;25122:132::-;25189:4;25212:3;25204:11;;25242:4;25237:3;25233:14;25225:22;;25122:132;;;:::o;25260:108::-;25337:24;25355:5;25337:24;:::i;:::-;25332:3;25325:37;25260:108;;:::o;25374:179::-;25443:10;25464:46;25506:3;25498:6;25464:46;:::i;:::-;25542:4;25537:3;25533:14;25519:28;;25374:179;;;;:::o;25559:113::-;25629:4;25661;25656:3;25652:14;25644:22;;25559:113;;;:::o;25708:732::-;25827:3;25856:54;25904:5;25856:54;:::i;:::-;25926:86;26005:6;26000:3;25926:86;:::i;:::-;25919:93;;26036:56;26086:5;26036:56;:::i;:::-;26115:7;26146:1;26131:284;26156:6;26153:1;26150:13;26131:284;;;26232:6;26226:13;26259:63;26318:3;26303:13;26259:63;:::i;:::-;26252:70;;26345:60;26398:6;26345:60;:::i;:::-;26335:70;;26191:224;26178:1;26175;26171:9;26166:14;;26131:284;;;26135:14;26431:3;26424:10;;25832:608;;;25708:732;;;;:::o;26446:831::-;26709:4;26747:3;26736:9;26732:19;26724:27;;26761:71;26829:1;26818:9;26814:17;26805:6;26761:71;:::i;:::-;26842:80;26918:2;26907:9;26903:18;26894:6;26842:80;:::i;:::-;26969:9;26963:4;26959:20;26954:2;26943:9;26939:18;26932:48;26997:108;27100:4;27091:6;26997:108;:::i;:::-;26989:116;;27115:72;27183:2;27172:9;27168:18;27159:6;27115:72;:::i;:::-;27197:73;27265:3;27254:9;27250:19;27241:6;27197:73;:::i;:::-;26446:831;;;;;;;;:::o;27283:807::-;27532:4;27570:3;27559:9;27555:19;27547:27;;27584:71;27652:1;27641:9;27637:17;27628:6;27584:71;:::i;:::-;27665:72;27733:2;27722:9;27718:18;27709:6;27665:72;:::i;:::-;27747:80;27823:2;27812:9;27808:18;27799:6;27747:80;:::i;:::-;27837;27913:2;27902:9;27898:18;27889:6;27837:80;:::i;:::-;27927:73;27995:3;27984:9;27980:19;27971:6;27927:73;:::i;:::-;28010;28078:3;28067:9;28063:19;28054:6;28010:73;:::i;:::-;27283:807;;;;;;;;;:::o;28096:143::-;28153:5;28184:6;28178:13;28169:22;;28200:33;28227:5;28200:33;:::i;:::-;28096:143;;;;:::o;28245:663::-;28333:6;28341;28349;28398:2;28386:9;28377:7;28373:23;28369:32;28366:119;;;28404:79;;:::i;:::-;28366:119;28524:1;28549:64;28605:7;28596:6;28585:9;28581:22;28549:64;:::i;:::-;28539:74;;28495:128;28662:2;28688:64;28744:7;28735:6;28724:9;28720:22;28688:64;:::i;:::-;28678:74;;28633:129;28801:2;28827:64;28883:7;28874:6;28863:9;28859:22;28827:64;:::i;:::-;28817:74;;28772:129;28245:663;;;;;:::o

Swarm Source

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