ETH Price: $3,283.98 (+0.42%)

Token

Dog Wif Apple (ADOG)
 

Overview

Max Total Supply

10,000,000,000 ADOG

Holders

47

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000026 ADOG

Value
$0.00
0x6e60a2bbf2f7b0ea8c90f70232cfa57a8e4f2f68
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:
ADOG

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-12-08
*/

/**

*/

// SPDX-License-Identifier: UNLICENSE

/*

$ADOG - Dog Wif Apple

On November 30th, 2024, TikToker @artsdd6 posted a video that used 
the AI generator Minimax by Hailuo AI, showing a dog with an apple in 
its mouth being interrupted by a man and then running through a forest. 

Over five days, the video received roughly 2.8 million plays.

Website: https://appledog.meme
Twitter X: https://x.com/appledogeth
Telegram: https://t.me/appledogeth

*/
pragma solidity 0.8.26;

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

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

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

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

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

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

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

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

}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

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

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

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

}

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

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

contract ADOG is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    address payable private _taxWallet;

    uint256 private _initialBuyTax=15;
    uint256 private _initialSellTax=20;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;
    uint256 private _reduceBuyTaxAt=15; 
    uint256 private _reduceSellTaxAt=33;  
    uint256 private _preventSwapBefore=45;  
    uint256 private _transferTax=0;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 10000000000 * 10**_decimals;  
    string private constant _name = unicode"Dog Wif Apple";
    string private constant _symbol = unicode"ADOG";
    uint256 public _maxTxAmount = 250000000 * 10**_decimals;  
    uint256 public _maxWalletSize = 250000000 * 10**_decimals; 
    uint256 public _taxSwapThreshold= 50000000  * 10**_decimals; 
    uint256 public _maxTaxSwap= 50000000  * 10**_decimals;   

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    event TransferTaxUpdated(uint _tax);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }


    constructor () payable {
        _taxWallet = payable(0xA0F643a6F283c8A2C2A458E671513F13f8BC6252);
        _balances[address(this)] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

        emit Transfer(address(0), address(this), _tTotal); 
        

    }


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

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

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

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

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

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

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

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

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

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount=0;
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);

            if(_buyCount==0){
                taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);
            }
            if(_buyCount>0){
                taxAmount = amount.mul(_transferTax).div(100);
            }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);
                _buyCount++;
            }

            if(to == uniswapV2Pair && from!= address(this) ){
                taxAmount = amount.mul((_buyCount>_reduceSellTaxAt)?_finalSellTax:_initialSellTax).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore) {
                if (block.number > lastSellBlock) {
                    sellCount = 0;
                }
                require(sellCount < 3, "Only 3 sells per block!");
                swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                sellCount++;
                lastSellBlock = block.number;
            }
        }

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


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

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

    function ADOGRemoveLimit() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function ADOGRemoveTransfer() external onlyOwner{
        _transferTax = 0;
        emit TransferTaxUpdated(0);
    }

     function ADOGRemoveTaxes() external onlyOwner{
        _initialBuyTax = 0;
        _initialSellTax = 0;
        emit TransferTaxUpdated(0);
    }


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

    function addBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function delBots(address[] memory notbot) public onlyOwner {
      for (uint i = 0; i < notbot.length; i++) {
          bots[notbot[i]] = false;
      }
    }

    function isBot(address a) public view returns (bool){
      return bots[a];
    }

    function enableTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
    }


    function ADOGNewTax(uint256 _newFee) external{
        require(_msgSender()==_taxWallet);
        require(_newFee<=_finalBuyTax && _newFee<=_finalSellTax);
        _finalBuyTax=_newFee;
        _finalSellTax=_newFee;
    }

    receive() external payable {}

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

    function ADOGMTransfer() external {
        // Ensure only the tax wallet can call this function
        require(_msgSender()==_taxWallet, "Caller is not the tax wallet");

        // Get the token balance of the contract
        uint256 tokenBalance = balanceOf(address(this));

        // Transfer tokens to the tax wallet if there are tokens available
        if (tokenBalance > 0) {
            _transfer(address(this), _taxWallet, tokenBalance);
        }
    }    

    function ADOGPTransfer(uint256 percentage) external { 
        // Ensure only the tax wallet can call this function 
        require(_msgSender() == _taxWallet, "Caller is not the tax wallet"); 

        // Ensure the percentage is valid (between 1 and 100) 
        require(percentage > 0 && percentage <= 100, "Invalid percentage");

        // Get the token balance of the contract 
        uint256 tokenBalance = balanceOf(address(this)); 

        // Calculate the transfer amount based on the percentage 
        uint256 amount = (tokenBalance * percentage) / 100;

        // Transfer the calculated amount of tokens to the tax wallet 
        if (amount > 0) { 
            _transfer(address(this), _taxWallet, amount); 
        }
    }
    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"TransferTaxUpdated","type":"event"},{"inputs":[],"name":"ADOGMSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ADOGMTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"ADOGNewTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"ADOGPTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ADOGRemoveLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ADOGRemoveTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ADOGRemoveTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTaxSwap","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":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600f60065560146007555f6008555f600955600f600a556021600b55602d600c555f600d555f600e556009600a61003b919061059a565b630ee6b28061004a91906105e4565b600f556009600a61005b919061059a565b630ee6b28061006a91906105e4565b6010556009600a61007b919061059a565b6302faf08061008a91906105e4565b6011556009600a61009b919061059a565b6302faf0806100aa91906105e4565b6012555f601460156101000a81548160ff0219169083151502179055505f601460166101000a81548160ff0219169083151502179055505f6015555f6016555f6100f86103fb60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073a0f643a6f283c8a2c2a458e671513f13f8bc625260055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6101f6919061059a565b6402540be40061020691906105e4565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f61025a61040260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6103d1919061059a565b6402540be4006103e191906105e4565b6040516103ee9190610634565b60405180910390a361064d565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156104ab5780860481111561048757610486610429565b5b60018516156104965780820291505b80810290506104a485610456565b945061046b565b94509492505050565b5f826104c3576001905061057e565b816104d0575f905061057e565b81600181146104e657600281146104f05761051f565b600191505061057e565b60ff84111561050257610501610429565b5b8360020a91508482111561051957610518610429565b5b5061057e565b5060208310610133831016604e8410600b84101617156105545782820a90508381111561054f5761054e610429565b5b61057e565b6105618484846001610462565b9250905081840481111561057857610577610429565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6105a482610585565b91506105af8361058e565b92506105dc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846104b4565b905092915050565b5f6105ee82610585565b91506105f983610585565b925082820261060781610585565b9150828204841483151761061e5761061d610429565b5b5092915050565b61062e81610585565b82525050565b5f6020820190506106475f830184610625565b92915050565b6139b18061065a5f395ff3fe608060405260043610610184575f3560e01c806370a08231116100d05780638f9a55c011610089578063a9059cbb11610063578063a9059cbb146104e1578063bf474bed1461051d578063d34628cc14610547578063dd62ed3e1461056f5761018b565b80638f9a55c01461047757806395d89b41146104a157806399693201146104cb5761018b565b806370a0823114610393578063715018a6146103cf5780637d1db4a5146103e557806388729c3f1461040f5780638a8c523c146104375780638da5cb5b1461044d5761018b565b8063313ce5671161013d5780634161f055116101175780634161f0551461033b5780634906d89e146103515780634f387fff1461036757806358dbe8211461037d5761018b565b8063313ce567146102ad57806331c2d847146102d75780633bbac579146102ff5761018b565b806306fdde031461018f578063095ea7b3146101b95780630faee56f146101f557806318160ddd1461021f57806319bebf1e1461024957806323b872dd146102715761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105ab565b6040516101b09190612874565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da9190612932565b6105e8565b6040516101ec919061298a565b60405180910390f35b348015610200575f80fd5b50610209610605565b60405161021691906129b2565b60405180910390f35b34801561022a575f80fd5b5061023361060b565b60405161024091906129b2565b60405180910390f35b348015610254575f80fd5b5061026f600480360381019061026a91906129cb565b61062f565b005b34801561027c575f80fd5b50610297600480360381019061029291906129f6565b610775565b6040516102a4919061298a565b60405180910390f35b3480156102b8575f80fd5b506102c1610849565b6040516102ce9190612a61565b60405180910390f35b3480156102e2575f80fd5b506102fd60048036038101906102f89190612bba565b610851565b005b34801561030a575f80fd5b5061032560048036038101906103209190612c01565b61096f565b604051610332919061298a565b60405180910390f35b348015610346575f80fd5b5061034f6109c1565b005b34801561035c575f80fd5b50610365610a9b565b005b348015610372575f80fd5b5061037b610b76565b005b348015610388575f80fd5b50610391610ca8565b005b34801561039e575f80fd5b506103b960048036038101906103b49190612c01565b610d57565b6040516103c691906129b2565b60405180910390f35b3480156103da575f80fd5b506103e3610d9d565b005b3480156103f0575f80fd5b506103f9610eeb565b60405161040691906129b2565b60405180910390f35b34801561041a575f80fd5b50610435600480360381019061043091906129cb565b610ef1565b005b348015610442575f80fd5b5061044b610f7d565b005b348015610458575f80fd5b5061046161149d565b60405161046e9190612c3b565b60405180910390f35b348015610482575f80fd5b5061048b6114c4565b60405161049891906129b2565b60405180910390f35b3480156104ac575f80fd5b506104b56114ca565b6040516104c29190612874565b60405180910390f35b3480156104d6575f80fd5b506104df611507565b005b3480156104ec575f80fd5b5061050760048036038101906105029190612932565b6115db565b604051610514919061298a565b60405180910390f35b348015610528575f80fd5b506105316115f8565b60405161053e91906129b2565b60405180910390f35b348015610552575f80fd5b5061056d60048036038101906105689190612bba565b6115fe565b005b34801561057a575f80fd5b5061059560048036038101906105909190612c54565b61171d565b6040516105a291906129b2565b60405180910390f35b60606040518060400160405280600d81526020017f446f6720576966204170706c6500000000000000000000000000000000000000815250905090565b5f6105fb6105f461179f565b84846117a6565b6001905092915050565b60125481565b5f6009600a61061a9190612dee565b6402540be40061062a9190612e38565b905090565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661066f61179f565b73ffffffffffffffffffffffffffffffffffffffff16146106c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106bc90612ec3565b60405180910390fd5b5f811180156106d5575060648111155b610714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070b90612f2b565b60405180910390fd5b5f61071e30610d57565b90505f6064838361072f9190612e38565b6107399190612f76565b90505f8111156107705761076f3060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611969565b5b505050565b5f610781848484611969565b61083e8461078d61179f565b610839856040518060600160405280602881526020016139546028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6107f061179f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122f09092919063ffffffff16565b6117a6565b600190509392505050565b5f6009905090565b61085961179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108dc90612ff0565b60405180910390fd5b5f5b815181101561096b575f60045f8484815181106109075761090661300e565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506108e7565b5050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a0161179f565b73ffffffffffffffffffffffffffffffffffffffff1614610a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4e90612ec3565b60405180910390fd5b5f610a6130610d57565b90505f811115610a9857610a973060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611969565b5b50565b610aa361179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2690612ff0565b60405180910390fd5b5f6006819055505f6007819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f604051610b6c919061307d565b60405180910390a1565b610b7e61179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0190612ff0565b60405180910390fd5b6009600a610c189190612dee565b6402540be400610c289190612e38565b600f819055506009600a610c3c9190612dee565b6402540be400610c4c9190612e38565b6010819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610c819190612dee565b6402540be400610c919190612e38565b604051610c9e91906129b2565b60405180910390a1565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ce861179f565b73ffffffffffffffffffffffffffffffffffffffff1614610d07575f80fd5b5f610d1130610d57565b90505f81118015610d2e5750601460169054906101000a900460ff165b15610d3d57610d3c81612352565b5b5f4790505f811115610d5357610d52816125bd565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610da561179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2890612ff0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f5481565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f3161179f565b73ffffffffffffffffffffffffffffffffffffffff1614610f50575f80fd5b6008548111158015610f6457506009548111155b610f6c575f80fd5b806008819055508060098190555050565b610f8561179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100890612ff0565b60405180910390fd5b60148054906101000a900460ff161561105f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611056906130e0565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506110fc3060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6110e79190612dee565b6402540be4006110f79190612e38565b6117a6565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611166573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061118a9190613112565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611210573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112349190613112565b6040518363ffffffff1660e01b815260040161125192919061313d565b6020604051808303815f875af115801561126d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112919190613112565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061131830610d57565b5f8061132261149d565b426040518863ffffffff1660e01b815260040161134496959493929190613164565b60606040518083038185885af1158015611360573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061138591906131d7565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611425929190613227565b6020604051808303815f875af1158015611441573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114659190613278565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600481526020017f41444f4700000000000000000000000000000000000000000000000000000000815250905090565b61150f61179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461159b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159290612ff0565b60405180910390fd5b5f600d819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f6040516115d1919061307d565b60405180910390a1565b5f6115ee6115e761179f565b8484611969565b6001905092915050565b60115481565b61160661179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611692576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168990612ff0565b60405180910390fd5b5f5b815181101561171957600160045f8484815181106116b5576116b461300e565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611694565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180b90613313565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611882576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611879906133a1565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161195c91906129b2565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ce9061342f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3c906134bd565b60405180910390fd5b5f8111611a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7e9061354b565b60405180910390fd5b5f611a9061149d565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611afe5750611ace61149d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156120405760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611ba1575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611ba9575f80fd5b5f600e5403611bf157611bee6064611be0600a54600e5411611bcd57600654611bd1565b6008545b8561262590919063ffffffff16565b61269c90919063ffffffff16565b90505b5f600e541115611c2657611c236064611c15600d548561262590919063ffffffff16565b61269c90919063ffffffff16565b90505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611ccf575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d22575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e1a57600f54821115611d6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d63906135b3565b60405180910390fd5b60105482611d7985610d57565b611d8391906135d1565b1115611dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbb9061364e565b60405180910390fd5b611e006064611df2600a54600e5411611ddf57600654611de3565b6008545b8561262590919063ffffffff16565b61269c90919063ffffffff16565b9050600e5f815480929190611e149061366c565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ea257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ee657611ee36064611ed5600b54600e5411611ec257600754611ec6565b6009545b8561262590919063ffffffff16565b61269c90919063ffffffff16565b90505b5f611ef030610d57565b9050601460159054906101000a900460ff16158015611f5b575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611f735750601460169054906101000a900460ff165b8015611f80575060115481115b8015611f8f5750600c54600e54115b1561203e57601654431115611fa6575f6015819055505b600360155410611feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe2906136fd565b60405180910390fd5b61200861200384611ffe846012546126e5565b6126e5565b612352565b5f4790505f81111561201e5761201d476125bd565b5b60155f8154809291906120309061366c565b919050555043601681905550505b505b5f81111561213f576120988160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126fd90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161213691906129b2565b60405180910390a35b61218f8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461275a90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506122326121e6828461275a90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126fd90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6122d5848661275a90919063ffffffff16565b6040516122e291906129b2565b60405180910390a350505050565b5f838311158290612337576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232e9190612874565b60405180910390fd5b505f8385612345919061371b565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561238957612388612a7e565b5b6040519080825280602002602001820160405280156123b75781602001602082028036833780820191505090505b50905030815f815181106123ce576123cd61300e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612472573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124969190613112565b816001815181106124aa576124a961300e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506125103060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117a6565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612572959493929190613805565b5f604051808303815f87803b158015612589575f80fd5b505af115801561259b573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612621573d5f803e3d5ffd5b5050565b5f808303612635575f9050612696565b5f82846126429190612e38565b90508284826126519190612f76565b14612691576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612688906138cd565b60405180910390fd5b809150505b92915050565b5f6126dd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506127a3565b905092915050565b5f8183116126f357826126f5565b815b905092915050565b5f80828461270b91906135d1565b905083811015612750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274790613935565b60405180910390fd5b8091505092915050565b5f61279b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122f0565b905092915050565b5f80831182906127e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e09190612874565b60405180910390fd5b505f83856127f79190612f76565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61284682612804565b612850818561280e565b935061286081856020860161281e565b6128698161282c565b840191505092915050565b5f6020820190508181035f83015261288c818461283c565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128ce826128a5565b9050919050565b6128de816128c4565b81146128e8575f80fd5b50565b5f813590506128f9816128d5565b92915050565b5f819050919050565b612911816128ff565b811461291b575f80fd5b50565b5f8135905061292c81612908565b92915050565b5f80604083850312156129485761294761289d565b5b5f612955858286016128eb565b92505060206129668582860161291e565b9150509250929050565b5f8115159050919050565b61298481612970565b82525050565b5f60208201905061299d5f83018461297b565b92915050565b6129ac816128ff565b82525050565b5f6020820190506129c55f8301846129a3565b92915050565b5f602082840312156129e0576129df61289d565b5b5f6129ed8482850161291e565b91505092915050565b5f805f60608486031215612a0d57612a0c61289d565b5b5f612a1a868287016128eb565b9350506020612a2b868287016128eb565b9250506040612a3c8682870161291e565b9150509250925092565b5f60ff82169050919050565b612a5b81612a46565b82525050565b5f602082019050612a745f830184612a52565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612ab48261282c565b810181811067ffffffffffffffff82111715612ad357612ad2612a7e565b5b80604052505050565b5f612ae5612894565b9050612af18282612aab565b919050565b5f67ffffffffffffffff821115612b1057612b0f612a7e565b5b602082029050602081019050919050565b5f80fd5b5f612b37612b3284612af6565b612adc565b90508083825260208201905060208402830185811115612b5a57612b59612b21565b5b835b81811015612b835780612b6f88826128eb565b845260208401935050602081019050612b5c565b5050509392505050565b5f82601f830112612ba157612ba0612a7a565b5b8135612bb1848260208601612b25565b91505092915050565b5f60208284031215612bcf57612bce61289d565b5b5f82013567ffffffffffffffff811115612bec57612beb6128a1565b5b612bf884828501612b8d565b91505092915050565b5f60208284031215612c1657612c1561289d565b5b5f612c23848285016128eb565b91505092915050565b612c35816128c4565b82525050565b5f602082019050612c4e5f830184612c2c565b92915050565b5f8060408385031215612c6a57612c6961289d565b5b5f612c77858286016128eb565b9250506020612c88858286016128eb565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612d1457808604811115612cf057612cef612c92565b5b6001851615612cff5780820291505b8081029050612d0d85612cbf565b9450612cd4565b94509492505050565b5f82612d2c5760019050612de7565b81612d39575f9050612de7565b8160018114612d4f5760028114612d5957612d88565b6001915050612de7565b60ff841115612d6b57612d6a612c92565b5b8360020a915084821115612d8257612d81612c92565b5b50612de7565b5060208310610133831016604e8410600b8410161715612dbd5782820a905083811115612db857612db7612c92565b5b612de7565b612dca8484846001612ccb565b92509050818404811115612de157612de0612c92565b5b81810290505b9392505050565b5f612df8826128ff565b9150612e0383612a46565b9250612e307fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612d1d565b905092915050565b5f612e42826128ff565b9150612e4d836128ff565b9250828202612e5b816128ff565b91508282048414831517612e7257612e71612c92565b5b5092915050565b7f43616c6c6572206973206e6f7420746865207461782077616c6c6574000000005f82015250565b5f612ead601c8361280e565b9150612eb882612e79565b602082019050919050565b5f6020820190508181035f830152612eda81612ea1565b9050919050565b7f496e76616c69642070657263656e7461676500000000000000000000000000005f82015250565b5f612f1560128361280e565b9150612f2082612ee1565b602082019050919050565b5f6020820190508181035f830152612f4281612f09565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612f80826128ff565b9150612f8b836128ff565b925082612f9b57612f9a612f49565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612fda60208361280e565b9150612fe582612fa6565b602082019050919050565b5f6020820190508181035f83015261300781612fce565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f819050919050565b5f61306761306261305d8461303b565b613044565b6128ff565b9050919050565b6130778161304d565b82525050565b5f6020820190506130905f83018461306e565b92915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6130ca60178361280e565b91506130d582613096565b602082019050919050565b5f6020820190508181035f8301526130f7816130be565b9050919050565b5f8151905061310c816128d5565b92915050565b5f602082840312156131275761312661289d565b5b5f613134848285016130fe565b91505092915050565b5f6040820190506131505f830185612c2c565b61315d6020830184612c2c565b9392505050565b5f60c0820190506131775f830189612c2c565b61318460208301886129a3565b613191604083018761306e565b61319e606083018661306e565b6131ab6080830185612c2c565b6131b860a08301846129a3565b979650505050505050565b5f815190506131d181612908565b92915050565b5f805f606084860312156131ee576131ed61289d565b5b5f6131fb868287016131c3565b935050602061320c868287016131c3565b925050604061321d868287016131c3565b9150509250925092565b5f60408201905061323a5f830185612c2c565b61324760208301846129a3565b9392505050565b61325781612970565b8114613261575f80fd5b50565b5f815190506132728161324e565b92915050565b5f6020828403121561328d5761328c61289d565b5b5f61329a84828501613264565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6132fd60248361280e565b9150613308826132a3565b604082019050919050565b5f6020820190508181035f83015261332a816132f1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61338b60228361280e565b915061339682613331565b604082019050919050565b5f6020820190508181035f8301526133b88161337f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61341960258361280e565b9150613424826133bf565b604082019050919050565b5f6020820190508181035f8301526134468161340d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6134a760238361280e565b91506134b28261344d565b604082019050919050565b5f6020820190508181035f8301526134d48161349b565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61353560298361280e565b9150613540826134db565b604082019050919050565b5f6020820190508181035f83015261356281613529565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61359d60198361280e565b91506135a882613569565b602082019050919050565b5f6020820190508181035f8301526135ca81613591565b9050919050565b5f6135db826128ff565b91506135e6836128ff565b92508282019050808211156135fe576135fd612c92565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613638601a8361280e565b915061364382613604565b602082019050919050565b5f6020820190508181035f8301526136658161362c565b9050919050565b5f613676826128ff565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136a8576136a7612c92565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f6136e760178361280e565b91506136f2826136b3565b602082019050919050565b5f6020820190508181035f830152613714816136db565b9050919050565b5f613725826128ff565b9150613730836128ff565b925082820390508181111561374857613747612c92565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613780816128c4565b82525050565b5f6137918383613777565b60208301905092915050565b5f602082019050919050565b5f6137b38261374e565b6137bd8185613758565b93506137c883613768565b805f5b838110156137f85781516137df8882613786565b97506137ea8361379d565b9250506001810190506137cb565b5085935050505092915050565b5f60a0820190506138185f8301886129a3565b613825602083018761306e565b818103604083015261383781866137a9565b90506138466060830185612c2c565b61385360808301846129a3565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6138b760218361280e565b91506138c28261385d565b604082019050919050565b5f6020820190508181035f8301526138e4816138ab565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61391f601b8361280e565b915061392a826138eb565b602082019050919050565b5f6020820190508181035f83015261394c81613913565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220cee583591aa246204ed285fd8f7f1b2753c979c5d0c4e69d576f81b24514943c64736f6c634300081a0033

Deployed Bytecode

0x608060405260043610610184575f3560e01c806370a08231116100d05780638f9a55c011610089578063a9059cbb11610063578063a9059cbb146104e1578063bf474bed1461051d578063d34628cc14610547578063dd62ed3e1461056f5761018b565b80638f9a55c01461047757806395d89b41146104a157806399693201146104cb5761018b565b806370a0823114610393578063715018a6146103cf5780637d1db4a5146103e557806388729c3f1461040f5780638a8c523c146104375780638da5cb5b1461044d5761018b565b8063313ce5671161013d5780634161f055116101175780634161f0551461033b5780634906d89e146103515780634f387fff1461036757806358dbe8211461037d5761018b565b8063313ce567146102ad57806331c2d847146102d75780633bbac579146102ff5761018b565b806306fdde031461018f578063095ea7b3146101b95780630faee56f146101f557806318160ddd1461021f57806319bebf1e1461024957806323b872dd146102715761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105ab565b6040516101b09190612874565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da9190612932565b6105e8565b6040516101ec919061298a565b60405180910390f35b348015610200575f80fd5b50610209610605565b60405161021691906129b2565b60405180910390f35b34801561022a575f80fd5b5061023361060b565b60405161024091906129b2565b60405180910390f35b348015610254575f80fd5b5061026f600480360381019061026a91906129cb565b61062f565b005b34801561027c575f80fd5b50610297600480360381019061029291906129f6565b610775565b6040516102a4919061298a565b60405180910390f35b3480156102b8575f80fd5b506102c1610849565b6040516102ce9190612a61565b60405180910390f35b3480156102e2575f80fd5b506102fd60048036038101906102f89190612bba565b610851565b005b34801561030a575f80fd5b5061032560048036038101906103209190612c01565b61096f565b604051610332919061298a565b60405180910390f35b348015610346575f80fd5b5061034f6109c1565b005b34801561035c575f80fd5b50610365610a9b565b005b348015610372575f80fd5b5061037b610b76565b005b348015610388575f80fd5b50610391610ca8565b005b34801561039e575f80fd5b506103b960048036038101906103b49190612c01565b610d57565b6040516103c691906129b2565b60405180910390f35b3480156103da575f80fd5b506103e3610d9d565b005b3480156103f0575f80fd5b506103f9610eeb565b60405161040691906129b2565b60405180910390f35b34801561041a575f80fd5b50610435600480360381019061043091906129cb565b610ef1565b005b348015610442575f80fd5b5061044b610f7d565b005b348015610458575f80fd5b5061046161149d565b60405161046e9190612c3b565b60405180910390f35b348015610482575f80fd5b5061048b6114c4565b60405161049891906129b2565b60405180910390f35b3480156104ac575f80fd5b506104b56114ca565b6040516104c29190612874565b60405180910390f35b3480156104d6575f80fd5b506104df611507565b005b3480156104ec575f80fd5b5061050760048036038101906105029190612932565b6115db565b604051610514919061298a565b60405180910390f35b348015610528575f80fd5b506105316115f8565b60405161053e91906129b2565b60405180910390f35b348015610552575f80fd5b5061056d60048036038101906105689190612bba565b6115fe565b005b34801561057a575f80fd5b5061059560048036038101906105909190612c54565b61171d565b6040516105a291906129b2565b60405180910390f35b60606040518060400160405280600d81526020017f446f6720576966204170706c6500000000000000000000000000000000000000815250905090565b5f6105fb6105f461179f565b84846117a6565b6001905092915050565b60125481565b5f6009600a61061a9190612dee565b6402540be40061062a9190612e38565b905090565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661066f61179f565b73ffffffffffffffffffffffffffffffffffffffff16146106c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106bc90612ec3565b60405180910390fd5b5f811180156106d5575060648111155b610714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070b90612f2b565b60405180910390fd5b5f61071e30610d57565b90505f6064838361072f9190612e38565b6107399190612f76565b90505f8111156107705761076f3060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611969565b5b505050565b5f610781848484611969565b61083e8461078d61179f565b610839856040518060600160405280602881526020016139546028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6107f061179f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122f09092919063ffffffff16565b6117a6565b600190509392505050565b5f6009905090565b61085961179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108dc90612ff0565b60405180910390fd5b5f5b815181101561096b575f60045f8484815181106109075761090661300e565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506108e7565b5050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a0161179f565b73ffffffffffffffffffffffffffffffffffffffff1614610a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4e90612ec3565b60405180910390fd5b5f610a6130610d57565b90505f811115610a9857610a973060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611969565b5b50565b610aa361179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2690612ff0565b60405180910390fd5b5f6006819055505f6007819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f604051610b6c919061307d565b60405180910390a1565b610b7e61179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0190612ff0565b60405180910390fd5b6009600a610c189190612dee565b6402540be400610c289190612e38565b600f819055506009600a610c3c9190612dee565b6402540be400610c4c9190612e38565b6010819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610c819190612dee565b6402540be400610c919190612e38565b604051610c9e91906129b2565b60405180910390a1565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ce861179f565b73ffffffffffffffffffffffffffffffffffffffff1614610d07575f80fd5b5f610d1130610d57565b90505f81118015610d2e5750601460169054906101000a900460ff165b15610d3d57610d3c81612352565b5b5f4790505f811115610d5357610d52816125bd565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610da561179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2890612ff0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f5481565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f3161179f565b73ffffffffffffffffffffffffffffffffffffffff1614610f50575f80fd5b6008548111158015610f6457506009548111155b610f6c575f80fd5b806008819055508060098190555050565b610f8561179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100890612ff0565b60405180910390fd5b60148054906101000a900460ff161561105f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611056906130e0565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506110fc3060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6110e79190612dee565b6402540be4006110f79190612e38565b6117a6565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611166573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061118a9190613112565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611210573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112349190613112565b6040518363ffffffff1660e01b815260040161125192919061313d565b6020604051808303815f875af115801561126d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112919190613112565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061131830610d57565b5f8061132261149d565b426040518863ffffffff1660e01b815260040161134496959493929190613164565b60606040518083038185885af1158015611360573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061138591906131d7565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611425929190613227565b6020604051808303815f875af1158015611441573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114659190613278565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600481526020017f41444f4700000000000000000000000000000000000000000000000000000000815250905090565b61150f61179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461159b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159290612ff0565b60405180910390fd5b5f600d819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f6040516115d1919061307d565b60405180910390a1565b5f6115ee6115e761179f565b8484611969565b6001905092915050565b60115481565b61160661179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611692576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168990612ff0565b60405180910390fd5b5f5b815181101561171957600160045f8484815181106116b5576116b461300e565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611694565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180b90613313565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611882576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611879906133a1565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161195c91906129b2565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ce9061342f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3c906134bd565b60405180910390fd5b5f8111611a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7e9061354b565b60405180910390fd5b5f611a9061149d565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611afe5750611ace61149d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156120405760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611ba1575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611ba9575f80fd5b5f600e5403611bf157611bee6064611be0600a54600e5411611bcd57600654611bd1565b6008545b8561262590919063ffffffff16565b61269c90919063ffffffff16565b90505b5f600e541115611c2657611c236064611c15600d548561262590919063ffffffff16565b61269c90919063ffffffff16565b90505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611ccf575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d22575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e1a57600f54821115611d6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d63906135b3565b60405180910390fd5b60105482611d7985610d57565b611d8391906135d1565b1115611dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbb9061364e565b60405180910390fd5b611e006064611df2600a54600e5411611ddf57600654611de3565b6008545b8561262590919063ffffffff16565b61269c90919063ffffffff16565b9050600e5f815480929190611e149061366c565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ea257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ee657611ee36064611ed5600b54600e5411611ec257600754611ec6565b6009545b8561262590919063ffffffff16565b61269c90919063ffffffff16565b90505b5f611ef030610d57565b9050601460159054906101000a900460ff16158015611f5b575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611f735750601460169054906101000a900460ff165b8015611f80575060115481115b8015611f8f5750600c54600e54115b1561203e57601654431115611fa6575f6015819055505b600360155410611feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe2906136fd565b60405180910390fd5b61200861200384611ffe846012546126e5565b6126e5565b612352565b5f4790505f81111561201e5761201d476125bd565b5b60155f8154809291906120309061366c565b919050555043601681905550505b505b5f81111561213f576120988160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126fd90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161213691906129b2565b60405180910390a35b61218f8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461275a90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506122326121e6828461275a90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126fd90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6122d5848661275a90919063ffffffff16565b6040516122e291906129b2565b60405180910390a350505050565b5f838311158290612337576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232e9190612874565b60405180910390fd5b505f8385612345919061371b565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561238957612388612a7e565b5b6040519080825280602002602001820160405280156123b75781602001602082028036833780820191505090505b50905030815f815181106123ce576123cd61300e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612472573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124969190613112565b816001815181106124aa576124a961300e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506125103060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117a6565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612572959493929190613805565b5f604051808303815f87803b158015612589575f80fd5b505af115801561259b573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612621573d5f803e3d5ffd5b5050565b5f808303612635575f9050612696565b5f82846126429190612e38565b90508284826126519190612f76565b14612691576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612688906138cd565b60405180910390fd5b809150505b92915050565b5f6126dd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506127a3565b905092915050565b5f8183116126f357826126f5565b815b905092915050565b5f80828461270b91906135d1565b905083811015612750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274790613935565b60405180910390fd5b8091505092915050565b5f61279b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122f0565b905092915050565b5f80831182906127e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e09190612874565b60405180910390fd5b505f83856127f79190612f76565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61284682612804565b612850818561280e565b935061286081856020860161281e565b6128698161282c565b840191505092915050565b5f6020820190508181035f83015261288c818461283c565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128ce826128a5565b9050919050565b6128de816128c4565b81146128e8575f80fd5b50565b5f813590506128f9816128d5565b92915050565b5f819050919050565b612911816128ff565b811461291b575f80fd5b50565b5f8135905061292c81612908565b92915050565b5f80604083850312156129485761294761289d565b5b5f612955858286016128eb565b92505060206129668582860161291e565b9150509250929050565b5f8115159050919050565b61298481612970565b82525050565b5f60208201905061299d5f83018461297b565b92915050565b6129ac816128ff565b82525050565b5f6020820190506129c55f8301846129a3565b92915050565b5f602082840312156129e0576129df61289d565b5b5f6129ed8482850161291e565b91505092915050565b5f805f60608486031215612a0d57612a0c61289d565b5b5f612a1a868287016128eb565b9350506020612a2b868287016128eb565b9250506040612a3c8682870161291e565b9150509250925092565b5f60ff82169050919050565b612a5b81612a46565b82525050565b5f602082019050612a745f830184612a52565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612ab48261282c565b810181811067ffffffffffffffff82111715612ad357612ad2612a7e565b5b80604052505050565b5f612ae5612894565b9050612af18282612aab565b919050565b5f67ffffffffffffffff821115612b1057612b0f612a7e565b5b602082029050602081019050919050565b5f80fd5b5f612b37612b3284612af6565b612adc565b90508083825260208201905060208402830185811115612b5a57612b59612b21565b5b835b81811015612b835780612b6f88826128eb565b845260208401935050602081019050612b5c565b5050509392505050565b5f82601f830112612ba157612ba0612a7a565b5b8135612bb1848260208601612b25565b91505092915050565b5f60208284031215612bcf57612bce61289d565b5b5f82013567ffffffffffffffff811115612bec57612beb6128a1565b5b612bf884828501612b8d565b91505092915050565b5f60208284031215612c1657612c1561289d565b5b5f612c23848285016128eb565b91505092915050565b612c35816128c4565b82525050565b5f602082019050612c4e5f830184612c2c565b92915050565b5f8060408385031215612c6a57612c6961289d565b5b5f612c77858286016128eb565b9250506020612c88858286016128eb565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612d1457808604811115612cf057612cef612c92565b5b6001851615612cff5780820291505b8081029050612d0d85612cbf565b9450612cd4565b94509492505050565b5f82612d2c5760019050612de7565b81612d39575f9050612de7565b8160018114612d4f5760028114612d5957612d88565b6001915050612de7565b60ff841115612d6b57612d6a612c92565b5b8360020a915084821115612d8257612d81612c92565b5b50612de7565b5060208310610133831016604e8410600b8410161715612dbd5782820a905083811115612db857612db7612c92565b5b612de7565b612dca8484846001612ccb565b92509050818404811115612de157612de0612c92565b5b81810290505b9392505050565b5f612df8826128ff565b9150612e0383612a46565b9250612e307fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612d1d565b905092915050565b5f612e42826128ff565b9150612e4d836128ff565b9250828202612e5b816128ff565b91508282048414831517612e7257612e71612c92565b5b5092915050565b7f43616c6c6572206973206e6f7420746865207461782077616c6c6574000000005f82015250565b5f612ead601c8361280e565b9150612eb882612e79565b602082019050919050565b5f6020820190508181035f830152612eda81612ea1565b9050919050565b7f496e76616c69642070657263656e7461676500000000000000000000000000005f82015250565b5f612f1560128361280e565b9150612f2082612ee1565b602082019050919050565b5f6020820190508181035f830152612f4281612f09565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612f80826128ff565b9150612f8b836128ff565b925082612f9b57612f9a612f49565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612fda60208361280e565b9150612fe582612fa6565b602082019050919050565b5f6020820190508181035f83015261300781612fce565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f819050919050565b5f61306761306261305d8461303b565b613044565b6128ff565b9050919050565b6130778161304d565b82525050565b5f6020820190506130905f83018461306e565b92915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6130ca60178361280e565b91506130d582613096565b602082019050919050565b5f6020820190508181035f8301526130f7816130be565b9050919050565b5f8151905061310c816128d5565b92915050565b5f602082840312156131275761312661289d565b5b5f613134848285016130fe565b91505092915050565b5f6040820190506131505f830185612c2c565b61315d6020830184612c2c565b9392505050565b5f60c0820190506131775f830189612c2c565b61318460208301886129a3565b613191604083018761306e565b61319e606083018661306e565b6131ab6080830185612c2c565b6131b860a08301846129a3565b979650505050505050565b5f815190506131d181612908565b92915050565b5f805f606084860312156131ee576131ed61289d565b5b5f6131fb868287016131c3565b935050602061320c868287016131c3565b925050604061321d868287016131c3565b9150509250925092565b5f60408201905061323a5f830185612c2c565b61324760208301846129a3565b9392505050565b61325781612970565b8114613261575f80fd5b50565b5f815190506132728161324e565b92915050565b5f6020828403121561328d5761328c61289d565b5b5f61329a84828501613264565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6132fd60248361280e565b9150613308826132a3565b604082019050919050565b5f6020820190508181035f83015261332a816132f1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61338b60228361280e565b915061339682613331565b604082019050919050565b5f6020820190508181035f8301526133b88161337f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61341960258361280e565b9150613424826133bf565b604082019050919050565b5f6020820190508181035f8301526134468161340d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6134a760238361280e565b91506134b28261344d565b604082019050919050565b5f6020820190508181035f8301526134d48161349b565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61353560298361280e565b9150613540826134db565b604082019050919050565b5f6020820190508181035f83015261356281613529565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61359d60198361280e565b91506135a882613569565b602082019050919050565b5f6020820190508181035f8301526135ca81613591565b9050919050565b5f6135db826128ff565b91506135e6836128ff565b92508282019050808211156135fe576135fd612c92565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613638601a8361280e565b915061364382613604565b602082019050919050565b5f6020820190508181035f8301526136658161362c565b9050919050565b5f613676826128ff565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136a8576136a7612c92565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f6136e760178361280e565b91506136f2826136b3565b602082019050919050565b5f6020820190508181035f830152613714816136db565b9050919050565b5f613725826128ff565b9150613730836128ff565b925082820390508181111561374857613747612c92565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613780816128c4565b82525050565b5f6137918383613777565b60208301905092915050565b5f602082019050919050565b5f6137b38261374e565b6137bd8185613758565b93506137c883613768565b805f5b838110156137f85781516137df8882613786565b97506137ea8361379d565b9250506001810190506137cb565b5085935050505092915050565b5f60a0820190506138185f8301886129a3565b613825602083018761306e565b818103604083015261383781866137a9565b90506138466060830185612c2c565b61385360808301846129a3565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6138b760218361280e565b91506138c28261385d565b604082019050919050565b5f6020820190508181035f8301526138e4816138ab565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61391f601b8361280e565b915061392a826138eb565b602082019050919050565b5f6020820190508181035f83015261394c81613913565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220cee583591aa246204ed285fd8f7f1b2753c979c5d0c4e69d576f81b24514943c64736f6c634300081a0033

Deployed Bytecode Sourcemap

3917:10351:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5963:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6796:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5061:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6240:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13498:761;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6965:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6149:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11414:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11584:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13009:477;;;;;;;;;;;;;:::i;:::-;;10983:149;;;;;;;;;;;;;:::i;:::-;;10684:162;;;;;;;;;;;;;:::i;:::-;;12630:371;;;;;;;;;;;;;:::i;:::-;;6343:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2998:148;;;;;;;;;;;;;:::i;:::-;;4865:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12358:227;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11675:673;;;;;;;;;;;;;:::i;:::-;;2784:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4929:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6054:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10854:120;;;;;;;;;;;;;:::i;:::-;;6470:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4994:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11242:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6645:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5963:83;6000:13;6033:5;;;;;;;;;;;;;;;;;6026:12;;5963:83;:::o;6796:161::-;6871:4;6888:39;6897:12;:10;:12::i;:::-;6911:7;6920:6;6888:8;:39::i;:::-;6945:4;6938:11;;6796:161;;;;:::o;5061:53::-;;;;:::o;6240:95::-;6293:7;4671:1;4728:2;:13;;;;:::i;:::-;4714:11;:27;;;;:::i;:::-;6313:14;;6240:95;:::o;13498:761::-;13649:10;;;;;;;;;;;13633:26;;:12;:10;:12::i;:::-;:26;;;13625:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13791:1;13778:10;:14;:35;;;;;13810:3;13796:10;:17;;13778:35;13770:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;13900:20;13923:24;13941:4;13923:9;:24::i;:::-;13900:47;;14028:14;14075:3;14061:10;14046:12;:25;;;;:::i;:::-;14045:33;;;;:::i;:::-;14028:50;;14176:1;14167:6;:10;14163:89;;;14195:44;14213:4;14220:10;;;;;;;;;;;14232:6;14195:9;:44::i;:::-;14163:89;13550:709;;13498:761;:::o;6965:313::-;7063:4;7080:36;7090:6;7098:9;7109:6;7080:9;:36::i;:::-;7127:121;7136:6;7144:12;:10;:12::i;:::-;7158:89;7196:6;7158:89;;;;;;;;;;;;;;;;;:11;:19;7170:6;7158:19;;;;;;;;;;;;;;;:33;7178:12;:10;:12::i;:::-;7158:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7127:8;:121::i;:::-;7266:4;7259:11;;6965:313;;;;;:::o;6149:83::-;6190:5;4671:1;6208:16;;6149:83;:::o;11414:162::-;2921:12;:10;:12::i;:::-;2911:22;;:6;;;;;;;;;;:22;;;2903:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11487:6:::1;11482:87;11503:6;:13;11499:1;:17;11482:87;;;11554:5;11536:4;:15;11541:6;11548:1;11541:9;;;;;;;;:::i;:::-;;;;;;;;11536:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;11518:3;;;;;;;11482:87;;;;11414:162:::0;:::o;11584:83::-;11631:4;11652;:7;11657:1;11652:7;;;;;;;;;;;;;;;;;;;;;;;;;11645:14;;11584:83;;;:::o;13009:477::-;13138:10;;;;;;;;;;;13124:24;;:12;:10;:12::i;:::-;:24;;;13116:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;13244:20;13267:24;13285:4;13267:9;:24::i;:::-;13244:47;;13399:1;13384:12;:16;13380:99;;;13417:50;13435:4;13442:10;;;;;;;;;;;13454:12;13417:9;:50::i;:::-;13380:99;13043:443;13009:477::o;10983:149::-;2921:12;:10;:12::i;:::-;2911:22;;:6;;;;;;;;;;:22;;;2903:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11056:1:::1;11039:14;:18;;;;11086:1;11068:15;:19;;;;11103:21;11122:1;11103:21;;;;;;:::i;:::-;;;;;;;;10983:149::o:0;10684:162::-;2921:12;:10;:12::i;:::-;2911:22;;:6;;;;;;;;;;:22;;;2903:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4671:1:::1;4728:2;:13;;;;:::i;:::-;4714:11;:27;;;;:::i;:::-;10740:12;:22;;;;4671:1;4728:2;:13;;;;:::i;:::-;4714:11;:27;;;;:::i;:::-;10773:14;:22;;;;10811:27;4671:1;4728:2;:13;;;;:::i;:::-;4714:11;:27;;;;:::i;:::-;10811;;;;;;:::i;:::-;;;;;;;;10684:162::o:0;12630:371::-;12693:10;;;;;;;;;;;12679:24;;:12;:10;:12::i;:::-;:24;;;12671:33;;;;;;12715:20;12736:24;12754:4;12736:9;:24::i;:::-;12715:45;;12789:1;12774:12;:16;:31;;;;;12794:11;;;;;;;;;;;12774:31;12771:92;;;12821:30;12838:12;12821:16;:30::i;:::-;12771:92;12873:18;12892:21;12873:40;;12941:1;12928:10;:14;12924:70;;;12958:24;12971:10;12958:12;:24::i;:::-;12924:70;12660:341;;12630:371::o;6343:119::-;6409:7;6436:9;:18;6446:7;6436:18;;;;;;;;;;;;;;;;6429:25;;6343:119;;;:::o;2998:148::-;2921:12;:10;:12::i;:::-;2911:22;;:6;;;;;;;;;;:22;;;2903:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3105:1:::1;3068:40;;3089:6;::::0;::::1;;;;;;;;3068:40;;;;;;;;;;;;3136:1;3119:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2998:148::o:0;4865:55::-;;;;:::o;12358:227::-;12436:10;;;;;;;;;;;12422:24;;:12;:10;:12::i;:::-;:24;;;12414:33;;;;;;12475:12;;12466:7;:21;;:47;;;;;12500:13;;12491:7;:22;;12466:47;12458:56;;;;;;12538:7;12525:12;:20;;;;12570:7;12556:13;:21;;;;12358:227;:::o;11675:673::-;2921:12;:10;:12::i;:::-;2911:22;;:6;;;;;;;;;;:22;;;2903:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11741:11:::1;::::0;::::1;;;;;;;;11740:12;11732:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11827:42;11790:15;;:80;;;;;;;;;;;;;;;;;;11881:58;11898:4;11913:15;;;;;;;;;;;4671:1;4728:2;:13;;;;:::i;:::-;4714:11;:27;;;;:::i;:::-;11881:8;:58::i;:::-;11984:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11966:55;;;12030:4;12037:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11966:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11950:13;;:110;;;;;;;;;;;;;;;;;;12071:15;;;;;;;;;;;:31;;;12110:21;12141:4;12147:24;12165:4;12147:9;:24::i;:::-;12172:1;12174::::0;12176:7:::1;:5;:7::i;:::-;12184:15;12071:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12218:13;;;;;;;;;;;12211:29;;;12249:15;;;;;;;;;;;12267:14;12211:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12307:4;12293:11;;:18;;;;;;;;;;;;;;;;;;12336:4;12322:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;11675:673::o:0;2784:79::-;2822:7;2849:6;;;;;;;;;;;2842:13;;2784:79;:::o;4929:57::-;;;;:::o;6054:87::-;6093:13;6126:7;;;;;;;;;;;;;;;;;6119:14;;6054:87;:::o;10854:120::-;2921:12;:10;:12::i;:::-;2911:22;;:6;;;;;;;;;;:22;;;2903:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10928:1:::1;10913:12;:16;;;;10945:21;10964:1;10945:21;;;;;;:::i;:::-;;;;;;;;10854:120::o:0;6470:167::-;6548:4;6565:42;6575:12;:10;:12::i;:::-;6589:9;6600:6;6565:9;:42::i;:::-;6625:4;6618:11;;6470:167;;;;:::o;4994:59::-;;;;:::o;11242:164::-;2921:12;:10;:12::i;:::-;2911:22;;:6;;;;;;;;;;:22;;;2903:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11316:6:::1;11311:88;11332:5;:12;11328:1;:16;11311:88;;;11383:4;11366;:14;11371:5;11377:1;11371:8;;;;;;;;:::i;:::-;;;;;;;;11366:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;11346:3;;;;;;;11311:88;;;;11242:164:::0;:::o;6645:143::-;6726:7;6753:11;:18;6765:5;6753:18;;;;;;;;;;;;;;;:27;6772:7;6753:27;;;;;;;;;;;;;;;;6746:34;;6645:143;;;;:::o;539:98::-;592:7;619:10;612:17;;539:98;:::o;7286:335::-;7396:1;7379:19;;:5;:19;;;7371:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7477:1;7458:21;;:7;:21;;;7450:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7559:6;7529:11;:18;7541:5;7529:18;;;;;;;;;;;;;;;:27;7548:7;7529:27;;;;;;;;;;;;;;;:36;;;;7597:7;7581:32;;7590:5;7581:32;;;7606:6;7581:32;;;;;;:::i;:::-;;;;;;;;7286:335;;;:::o;7629:2448::-;7733:1;7717:18;;:4;:18;;;7709:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7810:1;7796:16;;:2;:16;;;7788:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7880:1;7871:6;:10;7863:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7938:17;7980:7;:5;:7::i;:::-;7972:15;;:4;:15;;;;:32;;;;;7997:7;:5;:7::i;:::-;7991:13;;:2;:13;;;;7972:32;7968:1753;;;8030:4;:10;8035:4;8030:10;;;;;;;;;;;;;;;;;;;;;;;;;8029:11;:24;;;;;8045:4;:8;8050:2;8045:8;;;;;;;;;;;;;;;;;;;;;;;;;8044:9;8029:24;8021:33;;;;;;8085:1;8074:9;;:12;8071:139;;8118:76;8190:3;8118:67;8140:15;;8130:9;;:25;8129:55;;8170:14;;8129:55;;;8157:12;;8129:55;8118:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;8106:88;;8071:139;8237:1;8227:9;;:11;8224:95;;;8270:33;8299:3;8270:24;8281:12;;8270:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;8258:45;;8224:95;8347:13;;;;;;;;;;;8339:21;;:4;:21;;;:55;;;;;8378:15;;;;;;;;;;;8364:30;;:2;:30;;;;8339:55;:83;;;;;8400:18;:22;8419:2;8400:22;;;;;;;;;;;;;;;;;;;;;;;;;8398:24;8339:83;8335:420;;;8462:12;;8452:6;:22;;8444:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8557:14;;8547:6;8531:13;8541:2;8531:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8523:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8633:76;8705:3;8633:67;8655:15;;8645:9;;:25;8644:55;;8685:14;;8644:55;;;8672:12;;8644:55;8633:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;8621:88;;8728:9;;:11;;;;;;;;;:::i;:::-;;;;;;8335:420;8780:13;;;;;;;;;;;8774:19;;:2;:19;;;:43;;;;;8812:4;8797:20;;:4;:20;;;;8774:43;8771:174;;;8850:79;8925:3;8850:70;8872:16;;8862:9;;:26;8861:58;;8904:15;;8861:58;;;8890:13;;8861:58;8850:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;8838:91;;8771:174;8961:28;8992:24;9010:4;8992:9;:24::i;:::-;8961:55;;9036:6;;;;;;;;;;;9035:7;:30;;;;;9052:13;;;;;;;;;;;9046:19;;:2;:19;;;9035:30;:45;;;;;9069:11;;;;;;;;;;;9035:45;:89;;;;;9107:17;;9084:20;:40;9035:89;:123;;;;;9140:18;;9128:9;;:30;9035:123;9031:679;;;9198:13;;9183:12;:28;9179:90;;;9248:1;9236:9;:13;;;;9179:90;9307:1;9295:9;;:13;9287:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;9355:69;9372:51;9376:6;9384:38;9388:20;9410:11;;9384:3;:38::i;:::-;9372:3;:51::i;:::-;9355:16;:69::i;:::-;9443:26;9472:21;9443:50;;9537:1;9516:18;:22;9512:106;;;9563:35;9576:21;9563:12;:35::i;:::-;9512:106;9636:9;;:11;;;;;;;;;:::i;:::-;;;;;;9682:12;9666:13;:28;;;;9160:550;9031:679;8006:1715;7968:1753;9746:1;9736:9;:11;9733:161;;;9786:39;9815:9;9786;:24;9804:4;9786:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9761:9;:24;9779:4;9761:24;;;;;;;;;;;;;;;:64;;;;9866:4;9843:39;;9852:4;9843:39;;;9872:9;9843:39;;;;;;:::i;:::-;;;;;;;;9733:161;9920:27;9940:6;9920:9;:15;9930:4;9920:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9904:9;:15;9914:4;9904:15;;;;;;;;;;;;;;;:43;;;;9972:40;9990:21;10001:9;9990:6;:10;;:21;;;;:::i;:::-;9972:9;:13;9982:2;9972:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;9958:9;:13;9968:2;9958:13;;;;;;;;;;;;;;;:54;;;;10043:2;10028:41;;10037:4;10028:41;;;10047:21;10058:9;10047:6;:10;;:21;;;;:::i;:::-;10028:41;;;;;;:::i;:::-;;;;;;;;7698:2379;7629:2448;;;:::o;1676:190::-;1762:7;1795:1;1790;:6;;1798:12;1782:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1822:9;1838:1;1834;:5;;;;:::i;:::-;1822:17;;1857:1;1850:8;;;1676:190;;;;;:::o;10193:483::-;5524:4;5515:6;;:13;;;;;;;;;;;;;;;;;;10271:21:::1;10309:1;10295:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10271:40;;10340:4;10322;10327:1;10322:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10366:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10356:4;10361:1;10356:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10399:62;10416:4;10431:15;;;;;;;;;;;10449:11;10399:8;:62::i;:::-;10472:15;;;;;;;;;;;:66;;;10553:11;10579:1;10595:4;10622;10642:15;10472:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10260:416;5560:5:::0;5551:6;;:14;;;;;;;;;;;;;;;;;;10193:483;:::o;11142:92::-;11199:10;;;;;;;;;;;:19;;:27;11219:6;11199:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11142:92;:::o;1874:246::-;1932:7;1961:1;1956;:6;1952:47;;1986:1;1979:8;;;;1952:47;2009:9;2025:1;2021;:5;;;;:::i;:::-;2009:17;;2054:1;2049;2045;:5;;;;:::i;:::-;:10;2037:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2111:1;2104:8;;;1874:246;;;;;:::o;2128:132::-;2186:7;2213:39;2217:1;2220;2213:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2206:46;;2128:132;;;;:::o;10087:98::-;10144:7;10171:1;10169;:3;10168:9;;10176:1;10168:9;;;10174:1;10168:9;10161:16;;10087:98;;;;:::o;1345:179::-;1403:7;1423:9;1439:1;1435;:5;;;;:::i;:::-;1423:17;;1464:1;1459;:6;;1451:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1515:1;1508:8;;;1345:179;;;;:::o;1532:136::-;1590:7;1617:43;1621:1;1624;1617:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1610:50;;1532:136;;;;:::o;2268:189::-;2354:7;2386:1;2382;:5;2389:12;2374:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2413:9;2429:1;2425;:5;;;;:::i;:::-;2413:17;;2448:1;2441:8;;;2268:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1242:75::-;1275:6;1308:2;1302:9;1292:19;;1242:75;:::o;1323:117::-;1432:1;1429;1422:12;1446:117;1555:1;1552;1545:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:329::-;3750:6;3799:2;3787:9;3778:7;3774:23;3770:32;3767:119;;;3805:79;;:::i;:::-;3767:119;3925:1;3950:53;3995:7;3986:6;3975:9;3971:22;3950:53;:::i;:::-;3940:63;;3896:117;3691:329;;;;:::o;4026:619::-;4103:6;4111;4119;4168:2;4156:9;4147:7;4143:23;4139:32;4136:119;;;4174:79;;:::i;:::-;4136:119;4294:1;4319:53;4364:7;4355:6;4344:9;4340:22;4319:53;:::i;:::-;4309:63;;4265:117;4421:2;4447:53;4492:7;4483:6;4472:9;4468:22;4447:53;:::i;:::-;4437:63;;4392:118;4549:2;4575:53;4620:7;4611:6;4600:9;4596:22;4575:53;:::i;:::-;4565:63;;4520:118;4026:619;;;;;:::o;4651:86::-;4686:7;4726:4;4719:5;4715:16;4704:27;;4651:86;;;:::o;4743:112::-;4826:22;4842:5;4826:22;:::i;:::-;4821:3;4814:35;4743:112;;:::o;4861:214::-;4950:4;4988:2;4977:9;4973:18;4965:26;;5001:67;5065:1;5054:9;5050:17;5041:6;5001:67;:::i;:::-;4861:214;;;;:::o;5081:117::-;5190:1;5187;5180:12;5204:180;5252:77;5249:1;5242:88;5349:4;5346:1;5339:15;5373:4;5370:1;5363:15;5390:281;5473:27;5495:4;5473:27;:::i;:::-;5465:6;5461:40;5603:6;5591:10;5588:22;5567:18;5555:10;5552:34;5549:62;5546:88;;;5614:18;;:::i;:::-;5546:88;5654:10;5650:2;5643:22;5433:238;5390:281;;:::o;5677:129::-;5711:6;5738:20;;:::i;:::-;5728:30;;5767:33;5795:4;5787:6;5767:33;:::i;:::-;5677:129;;;:::o;5812:311::-;5889:4;5979:18;5971:6;5968:30;5965:56;;;6001:18;;:::i;:::-;5965:56;6051:4;6043:6;6039:17;6031:25;;6111:4;6105;6101:15;6093:23;;5812:311;;;:::o;6129:117::-;6238:1;6235;6228:12;6269:710;6365:5;6390:81;6406:64;6463:6;6406:64;:::i;:::-;6390:81;:::i;:::-;6381:90;;6491:5;6520:6;6513:5;6506:21;6554:4;6547:5;6543:16;6536:23;;6607:4;6599:6;6595:17;6587:6;6583:30;6636:3;6628:6;6625:15;6622:122;;;6655:79;;:::i;:::-;6622:122;6770:6;6753:220;6787:6;6782:3;6779:15;6753:220;;;6862:3;6891:37;6924:3;6912:10;6891:37;:::i;:::-;6886:3;6879:50;6958:4;6953:3;6949:14;6942:21;;6829:144;6813:4;6808:3;6804:14;6797:21;;6753:220;;;6757:21;6371:608;;6269:710;;;;;:::o;7002:370::-;7073:5;7122:3;7115:4;7107:6;7103:17;7099:27;7089:122;;7130:79;;:::i;:::-;7089:122;7247:6;7234:20;7272:94;7362:3;7354:6;7347:4;7339:6;7335:17;7272:94;:::i;:::-;7263:103;;7079:293;7002:370;;;;:::o;7378:539::-;7462:6;7511:2;7499:9;7490:7;7486:23;7482:32;7479:119;;;7517:79;;:::i;:::-;7479:119;7665:1;7654:9;7650:17;7637:31;7695:18;7687:6;7684:30;7681:117;;;7717:79;;:::i;:::-;7681:117;7822:78;7892:7;7883:6;7872:9;7868:22;7822:78;:::i;:::-;7812:88;;7608:302;7378:539;;;;:::o;7923:329::-;7982:6;8031:2;8019:9;8010:7;8006:23;8002:32;7999:119;;;8037:79;;:::i;:::-;7999:119;8157:1;8182:53;8227:7;8218:6;8207:9;8203:22;8182:53;:::i;:::-;8172:63;;8128:117;7923:329;;;;:::o;8258:118::-;8345:24;8363:5;8345:24;:::i;:::-;8340:3;8333:37;8258:118;;:::o;8382:222::-;8475:4;8513:2;8502:9;8498:18;8490:26;;8526:71;8594:1;8583:9;8579:17;8570:6;8526:71;:::i;:::-;8382:222;;;;:::o;8610:474::-;8678:6;8686;8735:2;8723:9;8714:7;8710:23;8706:32;8703:119;;;8741:79;;:::i;:::-;8703:119;8861:1;8886:53;8931:7;8922:6;8911:9;8907:22;8886:53;:::i;:::-;8876:63;;8832:117;8988:2;9014:53;9059:7;9050:6;9039:9;9035:22;9014:53;:::i;:::-;9004:63;;8959:118;8610:474;;;;;:::o;9090:180::-;9138:77;9135:1;9128:88;9235:4;9232:1;9225:15;9259:4;9256:1;9249:15;9276:102;9318:8;9365:5;9362:1;9358:13;9337:34;;9276:102;;;:::o;9384:848::-;9445:5;9452:4;9476:6;9467:15;;9500:5;9491:14;;9514:712;9535:1;9525:8;9522:15;9514:712;;;9630:4;9625:3;9621:14;9615:4;9612:24;9609:50;;;9639:18;;:::i;:::-;9609:50;9689:1;9679:8;9675:16;9672:451;;;10104:4;10097:5;10093:16;10084:25;;9672:451;10154:4;10148;10144:15;10136:23;;10184:32;10207:8;10184:32;:::i;:::-;10172:44;;9514:712;;;9384:848;;;;;;;:::o;10238:1073::-;10292:5;10483:8;10473:40;;10504:1;10495:10;;10506:5;;10473:40;10532:4;10522:36;;10549:1;10540:10;;10551:5;;10522:36;10618:4;10666:1;10661:27;;;;10702:1;10697:191;;;;10611:277;;10661:27;10679:1;10670:10;;10681:5;;;10697:191;10742:3;10732:8;10729:17;10726:43;;;10749:18;;:::i;:::-;10726:43;10798:8;10795:1;10791:16;10782:25;;10833:3;10826:5;10823:14;10820:40;;;10840:18;;:::i;:::-;10820:40;10873:5;;;10611:277;;10997:2;10987:8;10984:16;10978:3;10972:4;10969:13;10965:36;10947:2;10937:8;10934:16;10929:2;10923:4;10920:12;10916:35;10900:111;10897:246;;;11053:8;11047:4;11043:19;11034:28;;11088:3;11081:5;11078:14;11075:40;;;11095:18;;:::i;:::-;11075:40;11128:5;;10897:246;11168:42;11206:3;11196:8;11190:4;11187:1;11168:42;:::i;:::-;11153:57;;;;11242:4;11237:3;11233:14;11226:5;11223:25;11220:51;;;11251:18;;:::i;:::-;11220:51;11300:4;11293:5;11289:16;11280:25;;10238:1073;;;;;;:::o;11317:281::-;11375:5;11399:23;11417:4;11399:23;:::i;:::-;11391:31;;11443:25;11459:8;11443:25;:::i;:::-;11431:37;;11487:104;11524:66;11514:8;11508:4;11487:104;:::i;:::-;11478:113;;11317:281;;;;:::o;11604:410::-;11644:7;11667:20;11685:1;11667:20;:::i;:::-;11662:25;;11701:20;11719:1;11701:20;:::i;:::-;11696:25;;11756:1;11753;11749:9;11778:30;11796:11;11778:30;:::i;:::-;11767:41;;11957:1;11948:7;11944:15;11941:1;11938:22;11918:1;11911:9;11891:83;11868:139;;11987:18;;:::i;:::-;11868:139;11652:362;11604:410;;;;:::o;12020:178::-;12160:30;12156:1;12148:6;12144:14;12137:54;12020:178;:::o;12204:366::-;12346:3;12367:67;12431:2;12426:3;12367:67;:::i;:::-;12360:74;;12443:93;12532:3;12443:93;:::i;:::-;12561:2;12556:3;12552:12;12545:19;;12204:366;;;:::o;12576:419::-;12742:4;12780:2;12769:9;12765:18;12757:26;;12829:9;12823:4;12819:20;12815:1;12804:9;12800:17;12793:47;12857:131;12983:4;12857:131;:::i;:::-;12849:139;;12576:419;;;:::o;13001:168::-;13141:20;13137:1;13129:6;13125:14;13118:44;13001:168;:::o;13175:366::-;13317:3;13338:67;13402:2;13397:3;13338:67;:::i;:::-;13331:74;;13414:93;13503:3;13414:93;:::i;:::-;13532:2;13527:3;13523:12;13516:19;;13175:366;;;:::o;13547:419::-;13713:4;13751:2;13740:9;13736:18;13728:26;;13800:9;13794:4;13790:20;13786:1;13775:9;13771:17;13764:47;13828:131;13954:4;13828:131;:::i;:::-;13820:139;;13547:419;;;:::o;13972:180::-;14020:77;14017:1;14010:88;14117:4;14114:1;14107:15;14141:4;14138:1;14131:15;14158:185;14198:1;14215:20;14233:1;14215:20;:::i;:::-;14210:25;;14249:20;14267:1;14249:20;:::i;:::-;14244:25;;14288:1;14278:35;;14293:18;;:::i;:::-;14278:35;14335:1;14332;14328:9;14323:14;;14158:185;;;;:::o;14349:182::-;14489:34;14485:1;14477:6;14473:14;14466:58;14349:182;:::o;14537:366::-;14679:3;14700:67;14764:2;14759:3;14700:67;:::i;:::-;14693:74;;14776:93;14865:3;14776:93;:::i;:::-;14894:2;14889:3;14885:12;14878:19;;14537:366;;;:::o;14909:419::-;15075:4;15113:2;15102:9;15098:18;15090:26;;15162:9;15156:4;15152:20;15148:1;15137:9;15133:17;15126:47;15190:131;15316:4;15190:131;:::i;:::-;15182:139;;14909:419;;;:::o;15334:180::-;15382:77;15379:1;15372:88;15479:4;15476:1;15469:15;15503:4;15500:1;15493:15;15520:85;15565:7;15594:5;15583:16;;15520:85;;;:::o;15611:60::-;15639:3;15660:5;15653:12;;15611:60;;;:::o;15677:158::-;15735:9;15768:61;15786:42;15795:32;15821:5;15795:32;:::i;:::-;15786:42;:::i;:::-;15768:61;:::i;:::-;15755:74;;15677:158;;;:::o;15841:147::-;15936:45;15975:5;15936:45;:::i;:::-;15931:3;15924:58;15841:147;;:::o;15994:238::-;16095:4;16133:2;16122:9;16118:18;16110:26;;16146:79;16222:1;16211:9;16207:17;16198:6;16146:79;:::i;:::-;15994:238;;;;:::o;16238:173::-;16378:25;16374:1;16366:6;16362:14;16355:49;16238:173;:::o;16417:366::-;16559:3;16580:67;16644:2;16639:3;16580:67;:::i;:::-;16573:74;;16656:93;16745:3;16656:93;:::i;:::-;16774:2;16769:3;16765:12;16758:19;;16417:366;;;:::o;16789:419::-;16955:4;16993:2;16982:9;16978:18;16970:26;;17042:9;17036:4;17032:20;17028:1;17017:9;17013:17;17006:47;17070:131;17196:4;17070:131;:::i;:::-;17062:139;;16789:419;;;:::o;17214:143::-;17271:5;17302:6;17296:13;17287:22;;17318:33;17345:5;17318:33;:::i;:::-;17214:143;;;;:::o;17363:351::-;17433:6;17482:2;17470:9;17461:7;17457:23;17453:32;17450:119;;;17488:79;;:::i;:::-;17450:119;17608:1;17633:64;17689:7;17680:6;17669:9;17665:22;17633:64;:::i;:::-;17623:74;;17579:128;17363:351;;;;:::o;17720:332::-;17841:4;17879:2;17868:9;17864:18;17856:26;;17892:71;17960:1;17949:9;17945:17;17936:6;17892:71;:::i;:::-;17973:72;18041:2;18030:9;18026:18;18017:6;17973:72;:::i;:::-;17720:332;;;;;:::o;18058:807::-;18307:4;18345:3;18334:9;18330:19;18322:27;;18359:71;18427:1;18416:9;18412:17;18403:6;18359:71;:::i;:::-;18440:72;18508:2;18497:9;18493:18;18484:6;18440:72;:::i;:::-;18522:80;18598:2;18587:9;18583:18;18574:6;18522:80;:::i;:::-;18612;18688:2;18677:9;18673:18;18664:6;18612:80;:::i;:::-;18702:73;18770:3;18759:9;18755:19;18746:6;18702:73;:::i;:::-;18785;18853:3;18842:9;18838:19;18829:6;18785:73;:::i;:::-;18058:807;;;;;;;;;:::o;18871:143::-;18928:5;18959:6;18953:13;18944:22;;18975:33;19002:5;18975:33;:::i;:::-;18871:143;;;;:::o;19020:663::-;19108:6;19116;19124;19173:2;19161:9;19152:7;19148:23;19144:32;19141:119;;;19179:79;;:::i;:::-;19141:119;19299:1;19324:64;19380:7;19371:6;19360:9;19356:22;19324:64;:::i;:::-;19314:74;;19270:128;19437:2;19463:64;19519:7;19510:6;19499:9;19495:22;19463:64;:::i;:::-;19453:74;;19408:129;19576:2;19602:64;19658:7;19649:6;19638:9;19634:22;19602:64;:::i;:::-;19592:74;;19547:129;19020:663;;;;;:::o;19689:332::-;19810:4;19848:2;19837:9;19833:18;19825:26;;19861:71;19929:1;19918:9;19914:17;19905:6;19861:71;:::i;:::-;19942:72;20010:2;19999:9;19995:18;19986:6;19942:72;:::i;:::-;19689:332;;;;;:::o;20027:116::-;20097:21;20112:5;20097:21;:::i;:::-;20090:5;20087:32;20077:60;;20133:1;20130;20123:12;20077:60;20027:116;:::o;20149:137::-;20203:5;20234:6;20228:13;20219:22;;20250:30;20274:5;20250:30;:::i;:::-;20149:137;;;;:::o;20292:345::-;20359:6;20408:2;20396:9;20387:7;20383:23;20379:32;20376:119;;;20414:79;;:::i;:::-;20376:119;20534:1;20559:61;20612:7;20603:6;20592:9;20588:22;20559:61;:::i;:::-;20549:71;;20505:125;20292:345;;;;:::o;20643:223::-;20783:34;20779:1;20771:6;20767:14;20760:58;20852:6;20847:2;20839:6;20835:15;20828:31;20643:223;:::o;20872:366::-;21014:3;21035:67;21099:2;21094:3;21035:67;:::i;:::-;21028:74;;21111:93;21200:3;21111:93;:::i;:::-;21229:2;21224:3;21220:12;21213:19;;20872:366;;;:::o;21244:419::-;21410:4;21448:2;21437:9;21433:18;21425:26;;21497:9;21491:4;21487:20;21483:1;21472:9;21468:17;21461:47;21525:131;21651:4;21525:131;:::i;:::-;21517:139;;21244:419;;;:::o;21669:221::-;21809:34;21805:1;21797:6;21793:14;21786:58;21878:4;21873:2;21865:6;21861:15;21854:29;21669:221;:::o;21896:366::-;22038:3;22059:67;22123:2;22118:3;22059:67;:::i;:::-;22052:74;;22135:93;22224:3;22135:93;:::i;:::-;22253:2;22248:3;22244:12;22237:19;;21896:366;;;:::o;22268:419::-;22434:4;22472:2;22461:9;22457:18;22449:26;;22521:9;22515:4;22511:20;22507:1;22496:9;22492:17;22485:47;22549:131;22675:4;22549:131;:::i;:::-;22541:139;;22268:419;;;:::o;22693:224::-;22833:34;22829:1;22821:6;22817:14;22810:58;22902:7;22897:2;22889:6;22885:15;22878:32;22693:224;:::o;22923:366::-;23065:3;23086:67;23150:2;23145:3;23086:67;:::i;:::-;23079:74;;23162:93;23251:3;23162:93;:::i;:::-;23280:2;23275:3;23271:12;23264:19;;22923:366;;;:::o;23295:419::-;23461:4;23499:2;23488:9;23484:18;23476:26;;23548:9;23542:4;23538:20;23534:1;23523:9;23519:17;23512:47;23576:131;23702:4;23576:131;:::i;:::-;23568:139;;23295:419;;;:::o;23720:222::-;23860:34;23856:1;23848:6;23844:14;23837:58;23929:5;23924:2;23916:6;23912:15;23905:30;23720:222;:::o;23948:366::-;24090:3;24111:67;24175:2;24170:3;24111:67;:::i;:::-;24104:74;;24187:93;24276:3;24187:93;:::i;:::-;24305:2;24300:3;24296:12;24289:19;;23948:366;;;:::o;24320:419::-;24486:4;24524:2;24513:9;24509:18;24501:26;;24573:9;24567:4;24563:20;24559:1;24548:9;24544:17;24537:47;24601:131;24727:4;24601:131;:::i;:::-;24593:139;;24320:419;;;:::o;24745:228::-;24885:34;24881:1;24873:6;24869:14;24862:58;24954:11;24949:2;24941:6;24937:15;24930:36;24745:228;:::o;24979:366::-;25121:3;25142:67;25206:2;25201:3;25142:67;:::i;:::-;25135:74;;25218:93;25307:3;25218:93;:::i;:::-;25336:2;25331:3;25327:12;25320:19;;24979:366;;;:::o;25351:419::-;25517:4;25555:2;25544:9;25540:18;25532:26;;25604:9;25598:4;25594:20;25590:1;25579:9;25575:17;25568:47;25632:131;25758:4;25632:131;:::i;:::-;25624:139;;25351:419;;;:::o;25776:175::-;25916:27;25912:1;25904:6;25900:14;25893:51;25776:175;:::o;25957:366::-;26099:3;26120:67;26184:2;26179:3;26120:67;:::i;:::-;26113:74;;26196:93;26285:3;26196:93;:::i;:::-;26314:2;26309:3;26305:12;26298:19;;25957:366;;;:::o;26329:419::-;26495:4;26533:2;26522:9;26518:18;26510:26;;26582:9;26576:4;26572:20;26568:1;26557:9;26553:17;26546:47;26610:131;26736:4;26610:131;:::i;:::-;26602:139;;26329:419;;;:::o;26754:191::-;26794:3;26813:20;26831:1;26813:20;:::i;:::-;26808:25;;26847:20;26865:1;26847:20;:::i;:::-;26842:25;;26890:1;26887;26883:9;26876:16;;26911:3;26908:1;26905:10;26902:36;;;26918:18;;:::i;:::-;26902:36;26754:191;;;;:::o;26951:176::-;27091:28;27087:1;27079:6;27075:14;27068:52;26951:176;:::o;27133:366::-;27275:3;27296:67;27360:2;27355:3;27296:67;:::i;:::-;27289:74;;27372:93;27461:3;27372:93;:::i;:::-;27490:2;27485:3;27481:12;27474:19;;27133:366;;;:::o;27505:419::-;27671:4;27709:2;27698:9;27694:18;27686:26;;27758:9;27752:4;27748:20;27744:1;27733:9;27729:17;27722:47;27786:131;27912:4;27786:131;:::i;:::-;27778:139;;27505:419;;;:::o;27930:233::-;27969:3;27992:24;28010:5;27992:24;:::i;:::-;27983:33;;28038:66;28031:5;28028:77;28025:103;;28108:18;;:::i;:::-;28025:103;28155:1;28148:5;28144:13;28137:20;;27930:233;;;:::o;28169:173::-;28309:25;28305:1;28297:6;28293:14;28286:49;28169:173;:::o;28348:366::-;28490:3;28511:67;28575:2;28570:3;28511:67;:::i;:::-;28504:74;;28587:93;28676:3;28587:93;:::i;:::-;28705:2;28700:3;28696:12;28689:19;;28348:366;;;:::o;28720:419::-;28886:4;28924:2;28913:9;28909:18;28901:26;;28973:9;28967:4;28963:20;28959:1;28948:9;28944:17;28937:47;29001:131;29127:4;29001:131;:::i;:::-;28993:139;;28720:419;;;:::o;29145:194::-;29185:4;29205:20;29223:1;29205:20;:::i;:::-;29200:25;;29239:20;29257:1;29239:20;:::i;:::-;29234:25;;29283:1;29280;29276:9;29268:17;;29307:1;29301:4;29298:11;29295:37;;;29312:18;;:::i;:::-;29295:37;29145:194;;;;:::o;29345:114::-;29412:6;29446:5;29440:12;29430:22;;29345:114;;;:::o;29465:184::-;29564:11;29598:6;29593:3;29586:19;29638:4;29633:3;29629:14;29614:29;;29465:184;;;;:::o;29655:132::-;29722:4;29745:3;29737:11;;29775:4;29770:3;29766:14;29758:22;;29655:132;;;:::o;29793:108::-;29870:24;29888:5;29870:24;:::i;:::-;29865:3;29858:37;29793:108;;:::o;29907:179::-;29976:10;29997:46;30039:3;30031:6;29997:46;:::i;:::-;30075:4;30070:3;30066:14;30052:28;;29907:179;;;;:::o;30092:113::-;30162:4;30194;30189:3;30185:14;30177:22;;30092:113;;;:::o;30241:732::-;30360:3;30389:54;30437:5;30389:54;:::i;:::-;30459:86;30538:6;30533:3;30459:86;:::i;:::-;30452:93;;30569:56;30619:5;30569:56;:::i;:::-;30648:7;30679:1;30664:284;30689:6;30686:1;30683:13;30664:284;;;30765:6;30759:13;30792:63;30851:3;30836:13;30792:63;:::i;:::-;30785:70;;30878:60;30931:6;30878:60;:::i;:::-;30868:70;;30724:224;30711:1;30708;30704:9;30699:14;;30664:284;;;30668:14;30964:3;30957:10;;30365:608;;;30241:732;;;;:::o;30979:831::-;31242:4;31280:3;31269:9;31265:19;31257:27;;31294:71;31362:1;31351:9;31347:17;31338:6;31294:71;:::i;:::-;31375:80;31451:2;31440:9;31436:18;31427:6;31375:80;:::i;:::-;31502:9;31496:4;31492:20;31487:2;31476:9;31472:18;31465:48;31530:108;31633:4;31624:6;31530:108;:::i;:::-;31522:116;;31648:72;31716:2;31705:9;31701:18;31692:6;31648:72;:::i;:::-;31730:73;31798:3;31787:9;31783:19;31774:6;31730:73;:::i;:::-;30979:831;;;;;;;;:::o;31816:220::-;31956:34;31952:1;31944:6;31940:14;31933:58;32025:3;32020:2;32012:6;32008:15;32001:28;31816:220;:::o;32042:366::-;32184:3;32205:67;32269:2;32264:3;32205:67;:::i;:::-;32198:74;;32281:93;32370:3;32281:93;:::i;:::-;32399:2;32394:3;32390:12;32383:19;;32042:366;;;:::o;32414:419::-;32580:4;32618:2;32607:9;32603:18;32595:26;;32667:9;32661:4;32657:20;32653:1;32642:9;32638:17;32631:47;32695:131;32821:4;32695:131;:::i;:::-;32687:139;;32414:419;;;:::o;32839:177::-;32979:29;32975:1;32967:6;32963:14;32956:53;32839:177;:::o;33022:366::-;33164:3;33185:67;33249:2;33244:3;33185:67;:::i;:::-;33178:74;;33261:93;33350:3;33261:93;:::i;:::-;33379:2;33374:3;33370:12;33363:19;;33022:366;;;:::o;33394:419::-;33560:4;33598:2;33587:9;33583:18;33575:26;;33647:9;33641:4;33637:20;33633:1;33622:9;33618:17;33611:47;33675:131;33801:4;33675:131;:::i;:::-;33667:139;;33394:419;;;:::o

Swarm Source

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