ETH Price: $3,325.92 (+2.56%)

Token

DEDE (DEDE)
 

Overview

Max Total Supply

69,000,000,000 DEDE

Holders

195

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
Uniswap: Universal Router
Balance
0 DEDE

Value
$0.00
0x3fc91a3afd70395cd496c647d5a6cc9d4b2b7fad
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:
DEDE

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**

*/

/**

*/

// SPDX-License-Identifier: UNLICENSE

/*

DEDE the frog by Matt Furie
Website: www.dede0xdd69.com 
Telegram: https://t.me/DEDE0xDD69
marketing wallet : 0x05D6C4D1090d93C3e52BFC73cb37f0c9f12693ce
*/
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 DEDE 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=20;
    uint256 private _initialSellTax=20;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;
    uint256 private _reduceBuyTaxAt=25;
    uint256 private _reduceSellTaxAt=23;
    uint256 private _preventSwapBefore=23;
    uint256 private _transferTax=0;
    uint256 private _buyCount=0;

  uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 69000000000 * 10**_decimals;  //
    string private constant _name = unicode"DEDE";
    string private constant _symbol = unicode"DEDE";
    uint256 public _maxTxAmount = 1380000000 * 10**_decimals; //2% 
    uint256 public _maxWalletSize = 1380000000 * 10**_decimals; //2% 
    uint256 public _taxSwapThreshold= 345000000  * 10**_decimals; 
    uint256 public _maxTaxSwap= 345000000  * 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 TO SEND ALLOCATION TO CA
    constructor () payable {
        _taxWallet = payable(0x4979d839F7B18632B389bFC73a9b48E21c423E38);
        _balances[address(this)] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

        emit Transfer(address(0), address(this), _tTotal); //Mint 100% to CA
        //emit Transfer(address(0), owner(), _tTotal); //Mint 100% to Deployer

    }


    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 DEDERemoveLimit() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

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

     function DEDERemoveTaxes() 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 DEDENewTax(uint256 _newFee) external{
        require(_msgSender()==_taxWallet);
        require(_newFee<=_finalBuyTax && _newFee<=_finalSellTax);
        _finalBuyTax=_newFee;
        _finalSellTax=_newFee;
    }

    receive() external payable {}

    function DEDESwap() 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 DEDETransfer() 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 DEDEPercentTransfer(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":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"DEDENewTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"DEDEPercentTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"DEDERemoveLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"DEDERemoveTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"DEDERemoveTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"DEDESwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"DEDETransfer","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"}]

6080604052601460065560146007555f6008555f6009556019600a556017600b556017600c555f600d555f600e556009600a61003b919061059a565b635241210061004a91906105e4565b600f556009600a61005b919061059a565b635241210061006a91906105e4565b6010556009600a61007b919061059a565b631490484061008a91906105e4565b6011556009600a61009b919061059a565b63149048406100aa91906105e4565b6012555f601460156101000a81548160ff0219169083151502179055505f601460166101000a81548160ff0219169083151502179055505f6015555f6016555f6100f86103fb60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350734979d839f7b18632b389bfc73a9b48e21c423e3860055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6101f6919061059a565b641010b8720061020691906105e4565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f61025a61040260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6103d1919061059a565b641010b872006103e191906105e4565b6040516103ee9190610634565b60405180910390a361064d565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156104ab5780860481111561048757610486610429565b5b60018516156104965780820291505b80810290506104a485610456565b945061046b565b94509492505050565b5f826104c3576001905061057e565b816104d0575f905061057e565b81600181146104e657600281146104f05761051f565b600191505061057e565b60ff84111561050257610501610429565b5b8360020a91508482111561051957610518610429565b5b5061057e565b5060208310610133831016604e8410600b84101617156105545782820a90508381111561054f5761054e610429565b5b61057e565b6105618484846001610462565b9250905081840481111561057857610577610429565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6105a482610585565b91506105af8361058e565b92506105dc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846104b4565b905092915050565b5f6105ee82610585565b91506105f983610585565b925082820261060781610585565b9150828204841483151761061e5761061d610429565b5b5092915050565b61062e81610585565b82525050565b5f6020820190506106475f830184610625565b92915050565b6139b18061065a5f395ff3fe608060405260043610610184575f3560e01c8063715018a6116100d057806395d89b4111610089578063d34628cc11610063578063d34628cc1461051b578063dd62ed3e14610543578063ddd0546e1461057f578063e8e0136d146105955761018b565b806395d89b411461048b578063a9059cbb146104b5578063bf474bed146104f15761018b565b8063715018a6146103cb5780637297a255146103e15780637d1db4a5146103f75780638a8c523c146104215780638da5cb5b146104375780638f9a55c0146104615761018b565b806323b872dd1161013d57806331c2d8471161011757806331c2d847146103035780633bbac5791461032b578063560044371461036757806370a082311461038f5761018b565b806323b872dd14610287578063313100b5146102c3578063313ce567146102d95761018b565b806306fdde031461018f578063095ea7b3146101b9578063096499ac146101f55780630faee56f1461021d57806316468f941461024757806318160ddd1461025d5761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105ab565b6040516101b09190612874565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da9190612932565b6105e8565b6040516101ec919061298a565b60405180910390f35b348015610200575f80fd5b5061021b600480360381019061021691906129a3565b610605565b005b348015610228575f80fd5b5061023161074b565b60405161023e91906129dd565b60405180910390f35b348015610252575f80fd5b5061025b610751565b005b348015610268575f80fd5b5061027161082b565b60405161027e91906129dd565b60405180910390f35b348015610292575f80fd5b506102ad60048036038101906102a891906129f6565b61084f565b6040516102ba919061298a565b60405180910390f35b3480156102ce575f80fd5b506102d7610923565b005b3480156102e4575f80fd5b506102ed6109f7565b6040516102fa9190612a61565b60405180910390f35b34801561030e575f80fd5b5061032960048036038101906103249190612bba565b6109ff565b005b348015610336575f80fd5b50610351600480360381019061034c9190612c01565b610b1d565b60405161035e919061298a565b60405180910390f35b348015610372575f80fd5b5061038d600480360381019061038891906129a3565b610b6f565b005b34801561039a575f80fd5b506103b560048036038101906103b09190612c01565b610bfb565b6040516103c291906129dd565b60405180910390f35b3480156103d6575f80fd5b506103df610c41565b005b3480156103ec575f80fd5b506103f5610d8f565b005b348015610402575f80fd5b5061040b610ec1565b60405161041891906129dd565b60405180910390f35b34801561042c575f80fd5b50610435610ec7565b005b348015610442575f80fd5b5061044b6113e7565b6040516104589190612c3b565b60405180910390f35b34801561046c575f80fd5b5061047561140e565b60405161048291906129dd565b60405180910390f35b348015610496575f80fd5b5061049f611414565b6040516104ac9190612874565b60405180910390f35b3480156104c0575f80fd5b506104db60048036038101906104d69190612932565b611451565b6040516104e8919061298a565b60405180910390f35b3480156104fc575f80fd5b5061050561146e565b60405161051291906129dd565b60405180910390f35b348015610526575f80fd5b50610541600480360381019061053c9190612bba565b611474565b005b34801561054e575f80fd5b5061056960048036038101906105649190612c54565b611593565b60405161057691906129dd565b60405180910390f35b34801561058a575f80fd5b50610593611615565b005b3480156105a0575f80fd5b506105a96116f0565b005b60606040518060400160405280600481526020017f4445444500000000000000000000000000000000000000000000000000000000815250905090565b5f6105fb6105f461179f565b84846117a6565b6001905092915050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661064561179f565b73ffffffffffffffffffffffffffffffffffffffff161461069b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069290612cdc565b60405180910390fd5b5f811180156106ab575060648111155b6106ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e190612d44565b60405180910390fd5b5f6106f430610bfb565b90505f606483836107059190612d8f565b61070f9190612dfd565b90505f811115610746576107453060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611969565b5b505050565b60125481565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661079161179f565b73ffffffffffffffffffffffffffffffffffffffff16146107e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107de90612cdc565b60405180910390fd5b5f6107f130610bfb565b90505f811115610828576108273060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611969565b5b50565b5f6009600a61083a9190612f5c565b641010b8720061084a9190612d8f565b905090565b5f61085b848484611969565b6109188461086761179f565b610913856040518060600160405280602881526020016139546028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108ca61179f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122f09092919063ffffffff16565b6117a6565b600190509392505050565b61092b61179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ae90612ff0565b60405180910390fd5b5f600d819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f6040516109ed9190613050565b60405180910390a1565b5f6009905090565b610a0761179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8a90612ff0565b60405180910390fd5b5f5b8151811015610b19575f60045f848481518110610ab557610ab4613069565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610a95565b5050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610baf61179f565b73ffffffffffffffffffffffffffffffffffffffff1614610bce575f80fd5b6008548111158015610be257506009548111155b610bea575f80fd5b806008819055508060098190555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610c4961179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccc90612ff0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610d9761179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1a90612ff0565b60405180910390fd5b6009600a610e319190612f5c565b641010b87200610e419190612d8f565b600f819055506009600a610e559190612f5c565b641010b87200610e659190612d8f565b6010819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610e9a9190612f5c565b641010b87200610eaa9190612d8f565b604051610eb791906129dd565b60405180910390a1565b600f5481565b610ecf61179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5290612ff0565b60405180910390fd5b60148054906101000a900460ff1615610fa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa0906130e0565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506110463060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6110319190612f5c565b641010b872006110419190612d8f565b6117a6565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110b0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110d49190613112565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561115a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061117e9190613112565b6040518363ffffffff1660e01b815260040161119b92919061313d565b6020604051808303815f875af11580156111b7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111db9190613112565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061126230610bfb565b5f8061126c6113e7565b426040518863ffffffff1660e01b815260040161128e96959493929190613164565b60606040518083038185885af11580156112aa573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112cf91906131d7565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161136f929190613227565b6020604051808303815f875af115801561138b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113af9190613278565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600481526020017f4445444500000000000000000000000000000000000000000000000000000000815250905090565b5f61146461145d61179f565b8484611969565b6001905092915050565b60115481565b61147c61179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611508576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ff90612ff0565b60405180910390fd5b5f5b815181101561158f57600160045f84848151811061152b5761152a613069565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061150a565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61161d61179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a090612ff0565b60405180910390fd5b5f6006819055505f6007819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f6040516116e69190613050565b60405180910390a1565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661173061179f565b73ffffffffffffffffffffffffffffffffffffffff161461174f575f80fd5b5f61175930610bfb565b90505f811180156117765750601460169054906101000a900460ff165b156117855761178481612352565b5b5f4790505f81111561179b5761179a816125bd565b5b5050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180b90613313565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611882576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611879906133a1565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161195c91906129dd565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ce9061342f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3c906134bd565b60405180910390fd5b5f8111611a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7e9061354b565b60405180910390fd5b5f611a906113e7565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611afe5750611ace6113e7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156120405760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611ba1575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611ba9575f80fd5b5f600e5403611bf157611bee6064611be0600a54600e5411611bcd57600654611bd1565b6008545b8561262590919063ffffffff16565b61269c90919063ffffffff16565b90505b5f600e541115611c2657611c236064611c15600d548561262590919063ffffffff16565b61269c90919063ffffffff16565b90505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611ccf575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d22575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e1a57600f54821115611d6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d63906135b3565b60405180910390fd5b60105482611d7985610bfb565b611d8391906135d1565b1115611dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbb9061364e565b60405180910390fd5b611e006064611df2600a54600e5411611ddf57600654611de3565b6008545b8561262590919063ffffffff16565b61269c90919063ffffffff16565b9050600e5f815480929190611e149061366c565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ea257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ee657611ee36064611ed5600b54600e5411611ec257600754611ec6565b6009545b8561262590919063ffffffff16565b61269c90919063ffffffff16565b90505b5f611ef030610bfb565b9050601460159054906101000a900460ff16158015611f5b575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611f735750601460169054906101000a900460ff165b8015611f80575060115481115b8015611f8f5750600c54600e54115b1561203e57601654431115611fa6575f6015819055505b600360155410611feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe2906136fd565b60405180910390fd5b61200861200384611ffe846012546126e5565b6126e5565b612352565b5f4790505f81111561201e5761201d476125bd565b5b60155f8154809291906120309061366c565b919050555043601681905550505b505b5f81111561213f576120988160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126fd90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161213691906129dd565b60405180910390a35b61218f8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461275a90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506122326121e6828461275a90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126fd90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6122d5848661275a90919063ffffffff16565b6040516122e291906129dd565b60405180910390a350505050565b5f838311158290612337576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232e9190612874565b60405180910390fd5b505f8385612345919061371b565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561238957612388612a7e565b5b6040519080825280602002602001820160405280156123b75781602001602082028036833780820191505090505b50905030815f815181106123ce576123cd613069565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612472573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124969190613112565b816001815181106124aa576124a9613069565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506125103060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117a6565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612572959493929190613805565b5f604051808303815f87803b158015612589575f80fd5b505af115801561259b573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612621573d5f803e3d5ffd5b5050565b5f808303612635575f9050612696565b5f82846126429190612d8f565b90508284826126519190612dfd565b14612691576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612688906138cd565b60405180910390fd5b809150505b92915050565b5f6126dd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506127a3565b905092915050565b5f8183116126f357826126f5565b815b905092915050565b5f80828461270b91906135d1565b905083811015612750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274790613935565b60405180910390fd5b8091505092915050565b5f61279b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122f0565b905092915050565b5f80831182906127e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e09190612874565b60405180910390fd5b505f83856127f79190612dfd565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61284682612804565b612850818561280e565b935061286081856020860161281e565b6128698161282c565b840191505092915050565b5f6020820190508181035f83015261288c818461283c565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128ce826128a5565b9050919050565b6128de816128c4565b81146128e8575f80fd5b50565b5f813590506128f9816128d5565b92915050565b5f819050919050565b612911816128ff565b811461291b575f80fd5b50565b5f8135905061292c81612908565b92915050565b5f80604083850312156129485761294761289d565b5b5f612955858286016128eb565b92505060206129668582860161291e565b9150509250929050565b5f8115159050919050565b61298481612970565b82525050565b5f60208201905061299d5f83018461297b565b92915050565b5f602082840312156129b8576129b761289d565b5b5f6129c58482850161291e565b91505092915050565b6129d7816128ff565b82525050565b5f6020820190506129f05f8301846129ce565b92915050565b5f805f60608486031215612a0d57612a0c61289d565b5b5f612a1a868287016128eb565b9350506020612a2b868287016128eb565b9250506040612a3c8682870161291e565b9150509250925092565b5f60ff82169050919050565b612a5b81612a46565b82525050565b5f602082019050612a745f830184612a52565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612ab48261282c565b810181811067ffffffffffffffff82111715612ad357612ad2612a7e565b5b80604052505050565b5f612ae5612894565b9050612af18282612aab565b919050565b5f67ffffffffffffffff821115612b1057612b0f612a7e565b5b602082029050602081019050919050565b5f80fd5b5f612b37612b3284612af6565b612adc565b90508083825260208201905060208402830185811115612b5a57612b59612b21565b5b835b81811015612b835780612b6f88826128eb565b845260208401935050602081019050612b5c565b5050509392505050565b5f82601f830112612ba157612ba0612a7a565b5b8135612bb1848260208601612b25565b91505092915050565b5f60208284031215612bcf57612bce61289d565b5b5f82013567ffffffffffffffff811115612bec57612beb6128a1565b5b612bf884828501612b8d565b91505092915050565b5f60208284031215612c1657612c1561289d565b5b5f612c23848285016128eb565b91505092915050565b612c35816128c4565b82525050565b5f602082019050612c4e5f830184612c2c565b92915050565b5f8060408385031215612c6a57612c6961289d565b5b5f612c77858286016128eb565b9250506020612c88858286016128eb565b9150509250929050565b7f43616c6c6572206973206e6f7420746865207461782077616c6c6574000000005f82015250565b5f612cc6601c8361280e565b9150612cd182612c92565b602082019050919050565b5f6020820190508181035f830152612cf381612cba565b9050919050565b7f496e76616c69642070657263656e7461676500000000000000000000000000005f82015250565b5f612d2e60128361280e565b9150612d3982612cfa565b602082019050919050565b5f6020820190508181035f830152612d5b81612d22565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612d99826128ff565b9150612da4836128ff565b9250828202612db2816128ff565b91508282048414831517612dc957612dc8612d62565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612e07826128ff565b9150612e12836128ff565b925082612e2257612e21612dd0565b5b828204905092915050565b5f8160011c9050919050565b5f808291508390505b6001851115612e8257808604811115612e5e57612e5d612d62565b5b6001851615612e6d5780820291505b8081029050612e7b85612e2d565b9450612e42565b94509492505050565b5f82612e9a5760019050612f55565b81612ea7575f9050612f55565b8160018114612ebd5760028114612ec757612ef6565b6001915050612f55565b60ff841115612ed957612ed8612d62565b5b8360020a915084821115612ef057612eef612d62565b5b50612f55565b5060208310610133831016604e8410600b8410161715612f2b5782820a905083811115612f2657612f25612d62565b5b612f55565b612f388484846001612e39565b92509050818404811115612f4f57612f4e612d62565b5b81810290505b9392505050565b5f612f66826128ff565b9150612f7183612a46565b9250612f9e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612e8b565b905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612fda60208361280e565b9150612fe582612fa6565b602082019050919050565b5f6020820190508181035f83015261300781612fce565b9050919050565b5f819050919050565b5f819050919050565b5f61303a6130356130308461300e565b613017565b6128ff565b9050919050565b61304a81613020565b82525050565b5f6020820190506130635f830184613041565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6130ca60178361280e565b91506130d582613096565b602082019050919050565b5f6020820190508181035f8301526130f7816130be565b9050919050565b5f8151905061310c816128d5565b92915050565b5f602082840312156131275761312661289d565b5b5f613134848285016130fe565b91505092915050565b5f6040820190506131505f830185612c2c565b61315d6020830184612c2c565b9392505050565b5f60c0820190506131775f830189612c2c565b61318460208301886129ce565b6131916040830187613041565b61319e6060830186613041565b6131ab6080830185612c2c565b6131b860a08301846129ce565b979650505050505050565b5f815190506131d181612908565b92915050565b5f805f606084860312156131ee576131ed61289d565b5b5f6131fb868287016131c3565b935050602061320c868287016131c3565b925050604061321d868287016131c3565b9150509250925092565b5f60408201905061323a5f830185612c2c565b61324760208301846129ce565b9392505050565b61325781612970565b8114613261575f80fd5b50565b5f815190506132728161324e565b92915050565b5f6020828403121561328d5761328c61289d565b5b5f61329a84828501613264565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6132fd60248361280e565b9150613308826132a3565b604082019050919050565b5f6020820190508181035f83015261332a816132f1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61338b60228361280e565b915061339682613331565b604082019050919050565b5f6020820190508181035f8301526133b88161337f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61341960258361280e565b9150613424826133bf565b604082019050919050565b5f6020820190508181035f8301526134468161340d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6134a760238361280e565b91506134b28261344d565b604082019050919050565b5f6020820190508181035f8301526134d48161349b565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61353560298361280e565b9150613540826134db565b604082019050919050565b5f6020820190508181035f83015261356281613529565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61359d60198361280e565b91506135a882613569565b602082019050919050565b5f6020820190508181035f8301526135ca81613591565b9050919050565b5f6135db826128ff565b91506135e6836128ff565b92508282019050808211156135fe576135fd612d62565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613638601a8361280e565b915061364382613604565b602082019050919050565b5f6020820190508181035f8301526136658161362c565b9050919050565b5f613676826128ff565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136a8576136a7612d62565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f6136e760178361280e565b91506136f2826136b3565b602082019050919050565b5f6020820190508181035f830152613714816136db565b9050919050565b5f613725826128ff565b9150613730836128ff565b925082820390508181111561374857613747612d62565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613780816128c4565b82525050565b5f6137918383613777565b60208301905092915050565b5f602082019050919050565b5f6137b38261374e565b6137bd8185613758565b93506137c883613768565b805f5b838110156137f85781516137df8882613786565b97506137ea8361379d565b9250506001810190506137cb565b5085935050505092915050565b5f60a0820190506138185f8301886129ce565b6138256020830187613041565b818103604083015261383781866137a9565b90506138466060830185612c2c565b61385360808301846129ce565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6138b760218361280e565b91506138c28261385d565b604082019050919050565b5f6020820190508181035f8301526138e4816138ab565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61391f601b8361280e565b915061392a826138eb565b602082019050919050565b5f6020820190508181035f83015261394c81613913565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200c726d5f5a6e14f98c2014b1d4bd3add32313a203bcaff8bde3b6adc8fafb60464736f6c634300081a0033

Deployed Bytecode

0x608060405260043610610184575f3560e01c8063715018a6116100d057806395d89b4111610089578063d34628cc11610063578063d34628cc1461051b578063dd62ed3e14610543578063ddd0546e1461057f578063e8e0136d146105955761018b565b806395d89b411461048b578063a9059cbb146104b5578063bf474bed146104f15761018b565b8063715018a6146103cb5780637297a255146103e15780637d1db4a5146103f75780638a8c523c146104215780638da5cb5b146104375780638f9a55c0146104615761018b565b806323b872dd1161013d57806331c2d8471161011757806331c2d847146103035780633bbac5791461032b578063560044371461036757806370a082311461038f5761018b565b806323b872dd14610287578063313100b5146102c3578063313ce567146102d95761018b565b806306fdde031461018f578063095ea7b3146101b9578063096499ac146101f55780630faee56f1461021d57806316468f941461024757806318160ddd1461025d5761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105ab565b6040516101b09190612874565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da9190612932565b6105e8565b6040516101ec919061298a565b60405180910390f35b348015610200575f80fd5b5061021b600480360381019061021691906129a3565b610605565b005b348015610228575f80fd5b5061023161074b565b60405161023e91906129dd565b60405180910390f35b348015610252575f80fd5b5061025b610751565b005b348015610268575f80fd5b5061027161082b565b60405161027e91906129dd565b60405180910390f35b348015610292575f80fd5b506102ad60048036038101906102a891906129f6565b61084f565b6040516102ba919061298a565b60405180910390f35b3480156102ce575f80fd5b506102d7610923565b005b3480156102e4575f80fd5b506102ed6109f7565b6040516102fa9190612a61565b60405180910390f35b34801561030e575f80fd5b5061032960048036038101906103249190612bba565b6109ff565b005b348015610336575f80fd5b50610351600480360381019061034c9190612c01565b610b1d565b60405161035e919061298a565b60405180910390f35b348015610372575f80fd5b5061038d600480360381019061038891906129a3565b610b6f565b005b34801561039a575f80fd5b506103b560048036038101906103b09190612c01565b610bfb565b6040516103c291906129dd565b60405180910390f35b3480156103d6575f80fd5b506103df610c41565b005b3480156103ec575f80fd5b506103f5610d8f565b005b348015610402575f80fd5b5061040b610ec1565b60405161041891906129dd565b60405180910390f35b34801561042c575f80fd5b50610435610ec7565b005b348015610442575f80fd5b5061044b6113e7565b6040516104589190612c3b565b60405180910390f35b34801561046c575f80fd5b5061047561140e565b60405161048291906129dd565b60405180910390f35b348015610496575f80fd5b5061049f611414565b6040516104ac9190612874565b60405180910390f35b3480156104c0575f80fd5b506104db60048036038101906104d69190612932565b611451565b6040516104e8919061298a565b60405180910390f35b3480156104fc575f80fd5b5061050561146e565b60405161051291906129dd565b60405180910390f35b348015610526575f80fd5b50610541600480360381019061053c9190612bba565b611474565b005b34801561054e575f80fd5b5061056960048036038101906105649190612c54565b611593565b60405161057691906129dd565b60405180910390f35b34801561058a575f80fd5b50610593611615565b005b3480156105a0575f80fd5b506105a96116f0565b005b60606040518060400160405280600481526020017f4445444500000000000000000000000000000000000000000000000000000000815250905090565b5f6105fb6105f461179f565b84846117a6565b6001905092915050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661064561179f565b73ffffffffffffffffffffffffffffffffffffffff161461069b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069290612cdc565b60405180910390fd5b5f811180156106ab575060648111155b6106ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e190612d44565b60405180910390fd5b5f6106f430610bfb565b90505f606483836107059190612d8f565b61070f9190612dfd565b90505f811115610746576107453060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611969565b5b505050565b60125481565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661079161179f565b73ffffffffffffffffffffffffffffffffffffffff16146107e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107de90612cdc565b60405180910390fd5b5f6107f130610bfb565b90505f811115610828576108273060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611969565b5b50565b5f6009600a61083a9190612f5c565b641010b8720061084a9190612d8f565b905090565b5f61085b848484611969565b6109188461086761179f565b610913856040518060600160405280602881526020016139546028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108ca61179f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122f09092919063ffffffff16565b6117a6565b600190509392505050565b61092b61179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ae90612ff0565b60405180910390fd5b5f600d819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f6040516109ed9190613050565b60405180910390a1565b5f6009905090565b610a0761179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8a90612ff0565b60405180910390fd5b5f5b8151811015610b19575f60045f848481518110610ab557610ab4613069565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610a95565b5050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610baf61179f565b73ffffffffffffffffffffffffffffffffffffffff1614610bce575f80fd5b6008548111158015610be257506009548111155b610bea575f80fd5b806008819055508060098190555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610c4961179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccc90612ff0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610d9761179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1a90612ff0565b60405180910390fd5b6009600a610e319190612f5c565b641010b87200610e419190612d8f565b600f819055506009600a610e559190612f5c565b641010b87200610e659190612d8f565b6010819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610e9a9190612f5c565b641010b87200610eaa9190612d8f565b604051610eb791906129dd565b60405180910390a1565b600f5481565b610ecf61179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5290612ff0565b60405180910390fd5b60148054906101000a900460ff1615610fa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa0906130e0565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506110463060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6110319190612f5c565b641010b872006110419190612d8f565b6117a6565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110b0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110d49190613112565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561115a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061117e9190613112565b6040518363ffffffff1660e01b815260040161119b92919061313d565b6020604051808303815f875af11580156111b7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111db9190613112565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061126230610bfb565b5f8061126c6113e7565b426040518863ffffffff1660e01b815260040161128e96959493929190613164565b60606040518083038185885af11580156112aa573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112cf91906131d7565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161136f929190613227565b6020604051808303815f875af115801561138b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113af9190613278565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600481526020017f4445444500000000000000000000000000000000000000000000000000000000815250905090565b5f61146461145d61179f565b8484611969565b6001905092915050565b60115481565b61147c61179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611508576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ff90612ff0565b60405180910390fd5b5f5b815181101561158f57600160045f84848151811061152b5761152a613069565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061150a565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61161d61179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a090612ff0565b60405180910390fd5b5f6006819055505f6007819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f6040516116e69190613050565b60405180910390a1565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661173061179f565b73ffffffffffffffffffffffffffffffffffffffff161461174f575f80fd5b5f61175930610bfb565b90505f811180156117765750601460169054906101000a900460ff165b156117855761178481612352565b5b5f4790505f81111561179b5761179a816125bd565b5b5050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180b90613313565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611882576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611879906133a1565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161195c91906129dd565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ce9061342f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3c906134bd565b60405180910390fd5b5f8111611a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7e9061354b565b60405180910390fd5b5f611a906113e7565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611afe5750611ace6113e7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156120405760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611ba1575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611ba9575f80fd5b5f600e5403611bf157611bee6064611be0600a54600e5411611bcd57600654611bd1565b6008545b8561262590919063ffffffff16565b61269c90919063ffffffff16565b90505b5f600e541115611c2657611c236064611c15600d548561262590919063ffffffff16565b61269c90919063ffffffff16565b90505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611ccf575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d22575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e1a57600f54821115611d6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d63906135b3565b60405180910390fd5b60105482611d7985610bfb565b611d8391906135d1565b1115611dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbb9061364e565b60405180910390fd5b611e006064611df2600a54600e5411611ddf57600654611de3565b6008545b8561262590919063ffffffff16565b61269c90919063ffffffff16565b9050600e5f815480929190611e149061366c565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ea257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ee657611ee36064611ed5600b54600e5411611ec257600754611ec6565b6009545b8561262590919063ffffffff16565b61269c90919063ffffffff16565b90505b5f611ef030610bfb565b9050601460159054906101000a900460ff16158015611f5b575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611f735750601460169054906101000a900460ff165b8015611f80575060115481115b8015611f8f5750600c54600e54115b1561203e57601654431115611fa6575f6015819055505b600360155410611feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe2906136fd565b60405180910390fd5b61200861200384611ffe846012546126e5565b6126e5565b612352565b5f4790505f81111561201e5761201d476125bd565b5b60155f8154809291906120309061366c565b919050555043601681905550505b505b5f81111561213f576120988160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126fd90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161213691906129dd565b60405180910390a35b61218f8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461275a90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506122326121e6828461275a90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126fd90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6122d5848661275a90919063ffffffff16565b6040516122e291906129dd565b60405180910390a350505050565b5f838311158290612337576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232e9190612874565b60405180910390fd5b505f8385612345919061371b565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561238957612388612a7e565b5b6040519080825280602002602001820160405280156123b75781602001602082028036833780820191505090505b50905030815f815181106123ce576123cd613069565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612472573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124969190613112565b816001815181106124aa576124a9613069565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506125103060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117a6565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612572959493929190613805565b5f604051808303815f87803b158015612589575f80fd5b505af115801561259b573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612621573d5f803e3d5ffd5b5050565b5f808303612635575f9050612696565b5f82846126429190612d8f565b90508284826126519190612dfd565b14612691576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612688906138cd565b60405180910390fd5b809150505b92915050565b5f6126dd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506127a3565b905092915050565b5f8183116126f357826126f5565b815b905092915050565b5f80828461270b91906135d1565b905083811015612750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274790613935565b60405180910390fd5b8091505092915050565b5f61279b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122f0565b905092915050565b5f80831182906127e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e09190612874565b60405180910390fd5b505f83856127f79190612dfd565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61284682612804565b612850818561280e565b935061286081856020860161281e565b6128698161282c565b840191505092915050565b5f6020820190508181035f83015261288c818461283c565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128ce826128a5565b9050919050565b6128de816128c4565b81146128e8575f80fd5b50565b5f813590506128f9816128d5565b92915050565b5f819050919050565b612911816128ff565b811461291b575f80fd5b50565b5f8135905061292c81612908565b92915050565b5f80604083850312156129485761294761289d565b5b5f612955858286016128eb565b92505060206129668582860161291e565b9150509250929050565b5f8115159050919050565b61298481612970565b82525050565b5f60208201905061299d5f83018461297b565b92915050565b5f602082840312156129b8576129b761289d565b5b5f6129c58482850161291e565b91505092915050565b6129d7816128ff565b82525050565b5f6020820190506129f05f8301846129ce565b92915050565b5f805f60608486031215612a0d57612a0c61289d565b5b5f612a1a868287016128eb565b9350506020612a2b868287016128eb565b9250506040612a3c8682870161291e565b9150509250925092565b5f60ff82169050919050565b612a5b81612a46565b82525050565b5f602082019050612a745f830184612a52565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612ab48261282c565b810181811067ffffffffffffffff82111715612ad357612ad2612a7e565b5b80604052505050565b5f612ae5612894565b9050612af18282612aab565b919050565b5f67ffffffffffffffff821115612b1057612b0f612a7e565b5b602082029050602081019050919050565b5f80fd5b5f612b37612b3284612af6565b612adc565b90508083825260208201905060208402830185811115612b5a57612b59612b21565b5b835b81811015612b835780612b6f88826128eb565b845260208401935050602081019050612b5c565b5050509392505050565b5f82601f830112612ba157612ba0612a7a565b5b8135612bb1848260208601612b25565b91505092915050565b5f60208284031215612bcf57612bce61289d565b5b5f82013567ffffffffffffffff811115612bec57612beb6128a1565b5b612bf884828501612b8d565b91505092915050565b5f60208284031215612c1657612c1561289d565b5b5f612c23848285016128eb565b91505092915050565b612c35816128c4565b82525050565b5f602082019050612c4e5f830184612c2c565b92915050565b5f8060408385031215612c6a57612c6961289d565b5b5f612c77858286016128eb565b9250506020612c88858286016128eb565b9150509250929050565b7f43616c6c6572206973206e6f7420746865207461782077616c6c6574000000005f82015250565b5f612cc6601c8361280e565b9150612cd182612c92565b602082019050919050565b5f6020820190508181035f830152612cf381612cba565b9050919050565b7f496e76616c69642070657263656e7461676500000000000000000000000000005f82015250565b5f612d2e60128361280e565b9150612d3982612cfa565b602082019050919050565b5f6020820190508181035f830152612d5b81612d22565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612d99826128ff565b9150612da4836128ff565b9250828202612db2816128ff565b91508282048414831517612dc957612dc8612d62565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612e07826128ff565b9150612e12836128ff565b925082612e2257612e21612dd0565b5b828204905092915050565b5f8160011c9050919050565b5f808291508390505b6001851115612e8257808604811115612e5e57612e5d612d62565b5b6001851615612e6d5780820291505b8081029050612e7b85612e2d565b9450612e42565b94509492505050565b5f82612e9a5760019050612f55565b81612ea7575f9050612f55565b8160018114612ebd5760028114612ec757612ef6565b6001915050612f55565b60ff841115612ed957612ed8612d62565b5b8360020a915084821115612ef057612eef612d62565b5b50612f55565b5060208310610133831016604e8410600b8410161715612f2b5782820a905083811115612f2657612f25612d62565b5b612f55565b612f388484846001612e39565b92509050818404811115612f4f57612f4e612d62565b5b81810290505b9392505050565b5f612f66826128ff565b9150612f7183612a46565b9250612f9e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612e8b565b905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612fda60208361280e565b9150612fe582612fa6565b602082019050919050565b5f6020820190508181035f83015261300781612fce565b9050919050565b5f819050919050565b5f819050919050565b5f61303a6130356130308461300e565b613017565b6128ff565b9050919050565b61304a81613020565b82525050565b5f6020820190506130635f830184613041565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6130ca60178361280e565b91506130d582613096565b602082019050919050565b5f6020820190508181035f8301526130f7816130be565b9050919050565b5f8151905061310c816128d5565b92915050565b5f602082840312156131275761312661289d565b5b5f613134848285016130fe565b91505092915050565b5f6040820190506131505f830185612c2c565b61315d6020830184612c2c565b9392505050565b5f60c0820190506131775f830189612c2c565b61318460208301886129ce565b6131916040830187613041565b61319e6060830186613041565b6131ab6080830185612c2c565b6131b860a08301846129ce565b979650505050505050565b5f815190506131d181612908565b92915050565b5f805f606084860312156131ee576131ed61289d565b5b5f6131fb868287016131c3565b935050602061320c868287016131c3565b925050604061321d868287016131c3565b9150509250925092565b5f60408201905061323a5f830185612c2c565b61324760208301846129ce565b9392505050565b61325781612970565b8114613261575f80fd5b50565b5f815190506132728161324e565b92915050565b5f6020828403121561328d5761328c61289d565b5b5f61329a84828501613264565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6132fd60248361280e565b9150613308826132a3565b604082019050919050565b5f6020820190508181035f83015261332a816132f1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61338b60228361280e565b915061339682613331565b604082019050919050565b5f6020820190508181035f8301526133b88161337f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61341960258361280e565b9150613424826133bf565b604082019050919050565b5f6020820190508181035f8301526134468161340d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6134a760238361280e565b91506134b28261344d565b604082019050919050565b5f6020820190508181035f8301526134d48161349b565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61353560298361280e565b9150613540826134db565b604082019050919050565b5f6020820190508181035f83015261356281613529565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61359d60198361280e565b91506135a882613569565b602082019050919050565b5f6020820190508181035f8301526135ca81613591565b9050919050565b5f6135db826128ff565b91506135e6836128ff565b92508282019050808211156135fe576135fd612d62565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613638601a8361280e565b915061364382613604565b602082019050919050565b5f6020820190508181035f8301526136658161362c565b9050919050565b5f613676826128ff565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136a8576136a7612d62565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f6136e760178361280e565b91506136f2826136b3565b602082019050919050565b5f6020820190508181035f830152613714816136db565b9050919050565b5f613725826128ff565b9150613730836128ff565b925082820390508181111561374857613747612d62565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613780816128c4565b82525050565b5f6137918383613777565b60208301905092915050565b5f602082019050919050565b5f6137b38261374e565b6137bd8185613758565b93506137c883613768565b805f5b838110156137f85781516137df8882613786565b97506137ea8361379d565b9250506001810190506137cb565b5085935050505092915050565b5f60a0820190506138185f8301886129ce565b6138256020830187613041565b818103604083015261383781866137a9565b90506138466060830185612c2c565b61385360808301846129ce565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6138b760218361280e565b91506138c28261385d565b604082019050919050565b5f6020820190508181035f8301526138e4816138ab565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61391f601b8361280e565b915061392a826138eb565b602082019050919050565b5f6020820190508181035f83015261394c81613913565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200c726d5f5a6e14f98c2014b1d4bd3add32313a203bcaff8bde3b6adc8fafb60464736f6c634300081a0033

Deployed Bytecode Sourcemap

3672:10477:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5840:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6673:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13373:767;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4814:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12885:476;;;;;;;;;;;;;:::i;:::-;;6117:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6842:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10731:120;;;;;;;;;;;;;:::i;:::-;;6026:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11291:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11461:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12235:227;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6220:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2753:148;;;;;;;;;;;;;:::i;:::-;;10561:162;;;;;;;;;;;;;:::i;:::-;;4606:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11552:673;;;;;;;;;;;;;:::i;:::-;;2539:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4675:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5931:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6347:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4746:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11119:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6522:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10860:149;;;;;;;;;;;;;:::i;:::-;;12507:370;;;;;;;;;;;;;:::i;:::-;;5840:83;5877:13;5910:5;;;;;;;;;;;;;;;;;5903:12;;5840:83;:::o;6673:161::-;6748:4;6765:39;6774:12;:10;:12::i;:::-;6788:7;6797:6;6765:8;:39::i;:::-;6822:4;6815:11;;6673:161;;;;:::o;13373:767::-;13530:10;;;;;;;;;;;13514:26;;:12;:10;:12::i;:::-;:26;;;13506:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13672:1;13659:10;:14;:35;;;;;13691:3;13677:10;:17;;13659:35;13651:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;13781:20;13804:24;13822:4;13804:9;:24::i;:::-;13781:47;;13909:14;13956:3;13942:10;13927:12;:25;;;;:::i;:::-;13926:33;;;;:::i;:::-;13909:50;;14057:1;14048:6;:10;14044:89;;;14076:44;14094:4;14101:10;;;;;;;;;;;14113:6;14076:9;:44::i;:::-;14044:89;13431:709;;13373:767;:::o;4814:54::-;;;;:::o;12885:476::-;13013:10;;;;;;;;;;;12999:24;;:12;:10;:12::i;:::-;:24;;;12991:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;13119:20;13142:24;13160:4;13142:9;:24::i;:::-;13119:47;;13274:1;13259:12;:16;13255:99;;;13292:50;13310:4;13317:10;;;;;;;;;;;13329:12;13292:9;:50::i;:::-;13255:99;12918:443;12885:476::o;6117:95::-;6170:7;4419:1;4476:2;:13;;;;:::i;:::-;4462:11;:27;;;;:::i;:::-;6190:14;;6117:95;:::o;6842:313::-;6940:4;6957:36;6967:6;6975:9;6986:6;6957:9;:36::i;:::-;7004:121;7013:6;7021:12;:10;:12::i;:::-;7035:89;7073:6;7035:89;;;;;;;;;;;;;;;;;:11;:19;7047:6;7035:19;;;;;;;;;;;;;;;:33;7055:12;:10;:12::i;:::-;7035:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7004:8;:121::i;:::-;7143:4;7136:11;;6842:313;;;;;:::o;10731:120::-;2676:12;:10;:12::i;:::-;2666:22;;:6;;;;;;;;;;:22;;;2658:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10805:1:::1;10790:12;:16;;;;10822:21;10841:1;10822:21;;;;;;:::i;:::-;;;;;;;;10731:120::o:0;6026:83::-;6067:5;4419:1;6085:16;;6026:83;:::o;11291:162::-;2676:12;:10;:12::i;:::-;2666:22;;:6;;;;;;;;;;:22;;;2658:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11364:6:::1;11359:87;11380:6;:13;11376:1;:17;11359:87;;;11431:5;11413:4;:15;11418:6;11425:1;11418:9;;;;;;;;:::i;:::-;;;;;;;;11413:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;11395:3;;;;;;;11359:87;;;;11291:162:::0;:::o;11461:83::-;11508:4;11529;:7;11534:1;11529:7;;;;;;;;;;;;;;;;;;;;;;;;;11522:14;;11461:83;;;:::o;12235:227::-;12313:10;;;;;;;;;;;12299:24;;:12;:10;:12::i;:::-;:24;;;12291:33;;;;;;12352:12;;12343:7;:21;;:47;;;;;12377:13;;12368:7;:22;;12343:47;12335:56;;;;;;12415:7;12402:12;:20;;;;12447:7;12433:13;:21;;;;12235:227;:::o;6220:119::-;6286:7;6313:9;:18;6323:7;6313:18;;;;;;;;;;;;;;;;6306:25;;6220:119;;;:::o;2753:148::-;2676:12;:10;:12::i;:::-;2666:22;;:6;;;;;;;;;;:22;;;2658:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2860:1:::1;2823:40;;2844:6;::::0;::::1;;;;;;;;2823:40;;;;;;;;;;;;2891:1;2874:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2753:148::o:0;10561:162::-;2676:12;:10;:12::i;:::-;2666:22;;:6;;;;;;;;;;:22;;;2658:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4419:1:::1;4476:2;:13;;;;:::i;:::-;4462:11;:27;;;;:::i;:::-;10617:12;:22;;;;4419:1;4476:2;:13;;;;:::i;:::-;4462:11;:27;;;;:::i;:::-;10650:14;:22;;;;10688:27;4419:1;4476:2;:13;;;;:::i;:::-;4462:11;:27;;;;:::i;:::-;10688;;;;;;:::i;:::-;;;;;;;;10561:162::o:0;4606:56::-;;;;:::o;11552:673::-;2676:12;:10;:12::i;:::-;2666:22;;:6;;;;;;;;;;:22;;;2658:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11618:11:::1;::::0;::::1;;;;;;;;11617:12;11609:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11704:42;11667:15;;:80;;;;;;;;;;;;;;;;;;11758:58;11775:4;11790:15;;;;;;;;;;;4419:1;4476:2;:13;;;;:::i;:::-;4462:11;:27;;;;:::i;:::-;11758:8;:58::i;:::-;11861:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11843:55;;;11907:4;11914:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11843:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11827:13;;:110;;;;;;;;;;;;;;;;;;11948:15;;;;;;;;;;;:31;;;11987:21;12018:4;12024:24;12042:4;12024:9;:24::i;:::-;12049:1;12051::::0;12053:7:::1;:5;:7::i;:::-;12061:15;11948:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12095:13;;;;;;;;;;;12088:29;;;12126:15;;;;;;;;;;;12144:14;12088:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12184:4;12170:11;;:18;;;;;;;;;;;;;;;;;;12213:4;12199:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;11552:673::o:0;2539:79::-;2577:7;2604:6;;;;;;;;;;;2597:13;;2539:79;:::o;4675:58::-;;;;:::o;5931:87::-;5970:13;6003:7;;;;;;;;;;;;;;;;;5996:14;;5931:87;:::o;6347:167::-;6425:4;6442:42;6452:12;:10;:12::i;:::-;6466:9;6477:6;6442:9;:42::i;:::-;6502:4;6495:11;;6347:167;;;;:::o;4746:60::-;;;;:::o;11119:164::-;2676:12;:10;:12::i;:::-;2666:22;;:6;;;;;;;;;;:22;;;2658:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11193:6:::1;11188:88;11209:5;:12;11205:1;:16;11188:88;;;11260:4;11243;:14;11248:5;11254:1;11248:8;;;;;;;;:::i;:::-;;;;;;;;11243:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;11223:3;;;;;;;11188:88;;;;11119:164:::0;:::o;6522:143::-;6603:7;6630:11;:18;6642:5;6630:18;;;;;;;;;;;;;;;:27;6649:7;6630:27;;;;;;;;;;;;;;;;6623:34;;6522:143;;;;:::o;10860:149::-;2676:12;:10;:12::i;:::-;2666:22;;:6;;;;;;;;;;:22;;;2658:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10933:1:::1;10916:14;:18;;;;10963:1;10945:15;:19;;;;10980:21;10999:1;10980:21;;;;;;:::i;:::-;;;;;;;;10860:149::o:0;12507:370::-;12569:10;;;;;;;;;;;12555:24;;:12;:10;:12::i;:::-;:24;;;12547:33;;;;;;12591:20;12612:24;12630:4;12612:9;:24::i;:::-;12591:45;;12665:1;12650:12;:16;:31;;;;;12670:11;;;;;;;;;;;12650:31;12647:92;;;12697:30;12714:12;12697:16;:30::i;:::-;12647:92;12749:18;12768:21;12749:40;;12817:1;12804:10;:14;12800:70;;;12834:24;12847:10;12834:12;:24::i;:::-;12800:70;12536:341;;12507:370::o;294:98::-;347:7;374:10;367:17;;294:98;:::o;7163:335::-;7273:1;7256:19;;:5;:19;;;7248:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7354:1;7335:21;;:7;:21;;;7327:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7436:6;7406:11;:18;7418:5;7406:18;;;;;;;;;;;;;;;:27;7425:7;7406:27;;;;;;;;;;;;;;;:36;;;;7474:7;7458:32;;7467:5;7458:32;;;7483:6;7458:32;;;;;;:::i;:::-;;;;;;;;7163:335;;;:::o;7506:2448::-;7610:1;7594:18;;:4;:18;;;7586:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7687:1;7673:16;;:2;:16;;;7665:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7757:1;7748:6;:10;7740:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7815:17;7857:7;:5;:7::i;:::-;7849:15;;:4;:15;;;;:32;;;;;7874:7;:5;:7::i;:::-;7868:13;;:2;:13;;;;7849:32;7845:1753;;;7907:4;:10;7912:4;7907:10;;;;;;;;;;;;;;;;;;;;;;;;;7906:11;:24;;;;;7922:4;:8;7927:2;7922:8;;;;;;;;;;;;;;;;;;;;;;;;;7921:9;7906:24;7898:33;;;;;;7962:1;7951:9;;:12;7948:139;;7995:76;8067:3;7995:67;8017:15;;8007:9;;:25;8006:55;;8047:14;;8006:55;;;8034:12;;8006:55;7995:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;7983:88;;7948:139;8114:1;8104:9;;:11;8101:95;;;8147:33;8176:3;8147:24;8158:12;;8147:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;8135:45;;8101:95;8224:13;;;;;;;;;;;8216:21;;:4;:21;;;:55;;;;;8255:15;;;;;;;;;;;8241:30;;:2;:30;;;;8216:55;:83;;;;;8277:18;:22;8296:2;8277:22;;;;;;;;;;;;;;;;;;;;;;;;;8275:24;8216:83;8212:420;;;8339:12;;8329:6;:22;;8321:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8434:14;;8424:6;8408:13;8418:2;8408:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8400:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8510:76;8582:3;8510:67;8532:15;;8522:9;;:25;8521:55;;8562:14;;8521:55;;;8549:12;;8521:55;8510:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;8498:88;;8605:9;;:11;;;;;;;;;:::i;:::-;;;;;;8212:420;8657:13;;;;;;;;;;;8651:19;;:2;:19;;;:43;;;;;8689:4;8674:20;;:4;:20;;;;8651:43;8648:174;;;8727:79;8802:3;8727:70;8749:16;;8739:9;;:26;8738:58;;8781:15;;8738:58;;;8767:13;;8738:58;8727:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;8715:91;;8648:174;8838:28;8869:24;8887:4;8869:9;:24::i;:::-;8838:55;;8913:6;;;;;;;;;;;8912:7;:30;;;;;8929:13;;;;;;;;;;;8923:19;;:2;:19;;;8912:30;:45;;;;;8946:11;;;;;;;;;;;8912:45;:89;;;;;8984:17;;8961:20;:40;8912:89;:123;;;;;9017:18;;9005:9;;:30;8912:123;8908:679;;;9075:13;;9060:12;:28;9056:90;;;9125:1;9113:9;:13;;;;9056:90;9184:1;9172:9;;:13;9164:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;9232:69;9249:51;9253:6;9261:38;9265:20;9287:11;;9261:3;:38::i;:::-;9249:3;:51::i;:::-;9232:16;:69::i;:::-;9320:26;9349:21;9320:50;;9414:1;9393:18;:22;9389:106;;;9440:35;9453:21;9440:12;:35::i;:::-;9389:106;9513:9;;:11;;;;;;;;;:::i;:::-;;;;;;9559:12;9543:13;:28;;;;9037:550;8908:679;7883:1715;7845:1753;9623:1;9613:9;:11;9610:161;;;9663:39;9692:9;9663;:24;9681:4;9663:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9638:9;:24;9656:4;9638:24;;;;;;;;;;;;;;;:64;;;;9743:4;9720:39;;9729:4;9720:39;;;9749:9;9720:39;;;;;;:::i;:::-;;;;;;;;9610:161;9797:27;9817:6;9797:9;:15;9807:4;9797:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9781:9;:15;9791:4;9781:15;;;;;;;;;;;;;;;:43;;;;9849:40;9867:21;9878:9;9867:6;:10;;:21;;;;:::i;:::-;9849:9;:13;9859:2;9849:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;9835:9;:13;9845:2;9835:13;;;;;;;;;;;;;;;:54;;;;9920:2;9905:41;;9914:4;9905:41;;;9924:21;9935:9;9924:6;:10;;:21;;;;:::i;:::-;9905:41;;;;;;:::i;:::-;;;;;;;;7575:2379;7506:2448;;;:::o;1431:190::-;1517:7;1550:1;1545;:6;;1553:12;1537:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1577:9;1593:1;1589;:5;;;;:::i;:::-;1577:17;;1612:1;1605:8;;;1431:190;;;;;:::o;10070:483::-;5276:4;5267:6;;:13;;;;;;;;;;;;;;;;;;10148:21:::1;10186:1;10172:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10148:40;;10217:4;10199;10204:1;10199:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10243:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10233:4;10238:1;10233:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10276:62;10293:4;10308:15;;;;;;;;;;;10326:11;10276:8;:62::i;:::-;10349:15;;;;;;;;;;;:66;;;10430:11;10456:1;10472:4;10499;10519:15;10349:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10137:416;5312:5:::0;5303:6;;:14;;;;;;;;;;;;;;;;;;10070:483;:::o;11019:92::-;11076:10;;;;;;;;;;;:19;;:27;11096:6;11076:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11019:92;:::o;1629:246::-;1687:7;1716:1;1711;:6;1707:47;;1741:1;1734:8;;;;1707:47;1764:9;1780:1;1776;:5;;;;:::i;:::-;1764:17;;1809:1;1804;1800;:5;;;;:::i;:::-;:10;1792:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1866:1;1859:8;;;1629:246;;;;;:::o;1883:132::-;1941:7;1968:39;1972:1;1975;1968:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1961:46;;1883:132;;;;:::o;9964:98::-;10021:7;10048:1;10046;:3;10045:9;;10053:1;10045:9;;;10051:1;10045:9;10038:16;;9964:98;;;;:::o;1100:179::-;1158:7;1178:9;1194:1;1190;:5;;;;:::i;:::-;1178:17;;1219:1;1214;:6;;1206:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1270:1;1263:8;;;1100:179;;;;:::o;1287:136::-;1345:7;1372:43;1376:1;1379;1372:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1365:50;;1287:136;;;;:::o;2023:189::-;2109:7;2141:1;2137;:5;2144:12;2129:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2168:9;2184:1;2180;:5;;;;:::i;:::-;2168:17;;2203:1;2196:8;;;2023: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:329::-;3398:6;3447:2;3435:9;3426:7;3422:23;3418:32;3415:119;;;3453:79;;:::i;:::-;3415:119;3573:1;3598:53;3643:7;3634:6;3623:9;3619:22;3598:53;:::i;:::-;3588:63;;3544:117;3339:329;;;;:::o;3674:118::-;3761:24;3779:5;3761:24;:::i;:::-;3756:3;3749:37;3674:118;;:::o;3798:222::-;3891:4;3929:2;3918:9;3914:18;3906:26;;3942:71;4010:1;3999:9;3995:17;3986:6;3942:71;:::i;:::-;3798:222;;;;:::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:178::-;9230:30;9226:1;9218:6;9214:14;9207:54;9090:178;:::o;9274:366::-;9416:3;9437:67;9501:2;9496:3;9437:67;:::i;:::-;9430:74;;9513:93;9602:3;9513:93;:::i;:::-;9631:2;9626:3;9622:12;9615:19;;9274:366;;;:::o;9646:419::-;9812:4;9850:2;9839:9;9835:18;9827:26;;9899:9;9893:4;9889:20;9885:1;9874:9;9870:17;9863:47;9927:131;10053:4;9927:131;:::i;:::-;9919:139;;9646:419;;;:::o;10071:168::-;10211:20;10207:1;10199:6;10195:14;10188:44;10071:168;:::o;10245:366::-;10387:3;10408:67;10472:2;10467:3;10408:67;:::i;:::-;10401:74;;10484:93;10573:3;10484:93;:::i;:::-;10602:2;10597:3;10593:12;10586:19;;10245:366;;;:::o;10617:419::-;10783:4;10821:2;10810:9;10806:18;10798:26;;10870:9;10864:4;10860:20;10856:1;10845:9;10841:17;10834:47;10898:131;11024:4;10898:131;:::i;:::-;10890:139;;10617:419;;;:::o;11042:180::-;11090:77;11087:1;11080:88;11187:4;11184:1;11177:15;11211:4;11208:1;11201:15;11228:410;11268:7;11291:20;11309:1;11291:20;:::i;:::-;11286:25;;11325:20;11343:1;11325:20;:::i;:::-;11320:25;;11380:1;11377;11373:9;11402:30;11420:11;11402:30;:::i;:::-;11391:41;;11581:1;11572:7;11568:15;11565:1;11562:22;11542:1;11535:9;11515:83;11492:139;;11611:18;;:::i;:::-;11492:139;11276:362;11228:410;;;;:::o;11644:180::-;11692:77;11689:1;11682:88;11789:4;11786:1;11779:15;11813:4;11810:1;11803:15;11830:185;11870:1;11887:20;11905:1;11887:20;:::i;:::-;11882:25;;11921:20;11939:1;11921:20;:::i;:::-;11916:25;;11960:1;11950:35;;11965:18;;:::i;:::-;11950:35;12007:1;12004;12000:9;11995:14;;11830:185;;;;:::o;12021:102::-;12063:8;12110:5;12107:1;12103:13;12082:34;;12021:102;;;:::o;12129:848::-;12190:5;12197:4;12221:6;12212:15;;12245:5;12236:14;;12259:712;12280:1;12270:8;12267:15;12259:712;;;12375:4;12370:3;12366:14;12360:4;12357:24;12354:50;;;12384:18;;:::i;:::-;12354:50;12434:1;12424:8;12420:16;12417:451;;;12849:4;12842:5;12838:16;12829:25;;12417:451;12899:4;12893;12889:15;12881:23;;12929:32;12952:8;12929:32;:::i;:::-;12917:44;;12259:712;;;12129:848;;;;;;;:::o;12983:1073::-;13037:5;13228:8;13218:40;;13249:1;13240:10;;13251:5;;13218:40;13277:4;13267:36;;13294:1;13285:10;;13296:5;;13267:36;13363:4;13411:1;13406:27;;;;13447:1;13442:191;;;;13356:277;;13406:27;13424:1;13415:10;;13426:5;;;13442:191;13487:3;13477:8;13474:17;13471:43;;;13494:18;;:::i;:::-;13471:43;13543:8;13540:1;13536:16;13527:25;;13578:3;13571:5;13568:14;13565:40;;;13585:18;;:::i;:::-;13565:40;13618:5;;;13356:277;;13742:2;13732:8;13729:16;13723:3;13717:4;13714:13;13710:36;13692:2;13682:8;13679:16;13674:2;13668:4;13665:12;13661:35;13645:111;13642:246;;;13798:8;13792:4;13788:19;13779:28;;13833:3;13826:5;13823:14;13820:40;;;13840:18;;:::i;:::-;13820:40;13873:5;;13642:246;13913:42;13951:3;13941:8;13935:4;13932:1;13913:42;:::i;:::-;13898:57;;;;13987:4;13982:3;13978:14;13971:5;13968:25;13965:51;;;13996:18;;:::i;:::-;13965:51;14045:4;14038:5;14034:16;14025:25;;12983:1073;;;;;;:::o;14062:281::-;14120:5;14144:23;14162:4;14144:23;:::i;:::-;14136:31;;14188:25;14204:8;14188:25;:::i;:::-;14176:37;;14232:104;14269:66;14259:8;14253:4;14232:104;:::i;:::-;14223:113;;14062:281;;;;:::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:85::-;15379:7;15408:5;15397:16;;15334:85;;;:::o;15425:60::-;15453:3;15474:5;15467:12;;15425:60;;;:::o;15491:158::-;15549:9;15582:61;15600:42;15609:32;15635:5;15609:32;:::i;:::-;15600:42;:::i;:::-;15582:61;:::i;:::-;15569:74;;15491:158;;;:::o;15655:147::-;15750:45;15789:5;15750:45;:::i;:::-;15745:3;15738:58;15655:147;;:::o;15808:238::-;15909:4;15947:2;15936:9;15932:18;15924:26;;15960:79;16036:1;16025:9;16021:17;16012:6;15960:79;:::i;:::-;15808:238;;;;:::o;16052:180::-;16100:77;16097:1;16090:88;16197:4;16194:1;16187:15;16221:4;16218:1;16211:15;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://0c726d5f5a6e14f98c2014b1d4bd3add32313a203bcaff8bde3b6adc8fafb604
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.