ETH Price: $3,345.15 (-1.45%)

Token

Blewe (BLEWE)
 

Overview

Max Total Supply

420,690,000,000 BLEWE

Holders

361

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0 BLEWE

Value
$0.00
0x6f2a7407c40dd0caba19d99a74d833e594b2b003
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:
BLEWE

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-11-21
*/

/**

*/

// SPDX-License-Identifier: UNLICENSE

/*
BLEWE by Matt Furie
Website: https://www.blewe.vip/
Twitter X: https://x.com/BleweOfficial
Telegram: https://t.me/BleweOfficial

*/
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 BLEWE is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    address payable private _taxWallet;

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

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 420690000000 * 10**_decimals;  
    string private constant _name = unicode"Blewe";
    string private constant _symbol = unicode"BLEWE";
    uint256 public _maxTxAmount = 42069000000 * 10**_decimals;  
    uint256 public _maxWalletSize = 42069000000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 2103450000  * 10**_decimals;
    uint256 public _maxTaxSwap= 2103450000  * 10**_decimals;   

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


    constructor () payable {
        _taxWallet = payable(0xc888371DA0224d2ed1EA0BB5e379BC6A4f31BB9e);
        _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 BLEWERemoveLimit() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

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

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

    receive() external payable {}

    function BLEWESwap() 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 BLEWETransfer() 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 BLEWEPercentTransfer(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":"BLEWENewTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"BLEWEPercentTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"BLEWERemoveLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"BLEWERemoveTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"BLEWERemoveTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"BLEWESwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"BLEWETransfer","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"}]

6080604052600f60065560146007555f6008555f600955600f600a556017600b556019600c555f600d555f600e556009600a61003b919061059c565b6409cb81ff4061004b91906105e6565b600f556009600a61005c919061059c565b6409cb81ff4061006c91906105e6565b6010556009600a61007d919061059c565b637d60199061008c91906105e6565b6011556009600a61009d919061059c565b637d6019906100ac91906105e6565b6012555f601460156101000a81548160ff0219169083151502179055505f601460166101000a81548160ff0219169083151502179055505f6015555f6016555f6100fa6103fd60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073c888371da0224d2ed1ea0bb5e379bc6a4f31bb9e60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6101f8919061059c565b6461f313f88061020891906105e6565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f61025c61040460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6103d3919061059c565b6461f313f8806103e391906105e6565b6040516103f09190610636565b60405180910390a361064f565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156104ad578086048111156104895761048861042b565b5b60018516156104985780820291505b80810290506104a685610458565b945061046d565b94509492505050565b5f826104c55760019050610580565b816104d2575f9050610580565b81600181146104e857600281146104f257610521565b6001915050610580565b60ff8411156105045761050361042b565b5b8360020a91508482111561051b5761051a61042b565b5b50610580565b5060208310610133831016604e8410600b84101617156105565782820a9050838111156105515761055061042b565b5b610580565b6105638484846001610464565b9250905081840481111561057a5761057961042b565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6105a682610587565b91506105b183610590565b92506105de7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846104b6565b905092915050565b5f6105f082610587565b91506105fb83610587565b925082820261060981610587565b915082820484148315176106205761061f61042b565b5b5092915050565b61063081610587565b82525050565b5f6020820190506106495f830184610627565b92915050565b6139b18061065c5f395ff3fe608060405260043610610184575f3560e01c8063755be956116100d0578063a9059cbb11610089578063d34628cc11610063578063d34628cc14610509578063dd62ed3e14610531578063e5cb06b91461056d578063fe60e6a1146105835761018b565b8063a9059cbb1461048d578063aa1e27be146104c9578063bf474bed146104df5761018b565b8063755be956146103a75780637d1db4a5146103cf5780638a8c523c146103f95780638da5cb5b1461040f5780638f9a55c01461043957806395d89b41146104635761018b565b806331c2d8471161013d57806369d2f2931161011757806369d2f293146103295780636ac0ebf71461033f57806370a0823114610355578063715018a6146103915761018b565b806331c2d847146102af5780633bbac579146102d757806362232c76146103135761018b565b806306fdde031461018f578063095ea7b3146101b95780630faee56f146101f557806318160ddd1461021f57806323b872dd14610249578063313ce567146102855761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105ab565b6040516101b09190612874565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da9190612932565b6105e8565b6040516101ec919061298a565b60405180910390f35b348015610200575f80fd5b50610209610605565b60405161021691906129b2565b60405180910390f35b34801561022a575f80fd5b5061023361060b565b60405161024091906129b2565b60405180910390f35b348015610254575f80fd5b5061026f600480360381019061026a91906129cb565b61062f565b60405161027c919061298a565b60405180910390f35b348015610290575f80fd5b50610299610703565b6040516102a69190612a36565b60405180910390f35b3480156102ba575f80fd5b506102d560048036038101906102d09190612b8f565b61070b565b005b3480156102e2575f80fd5b506102fd60048036038101906102f89190612bd6565b610829565b60405161030a919061298a565b60405180910390f35b34801561031e575f80fd5b5061032761087b565b005b348015610334575f80fd5b5061033d610956565b005b34801561034a575f80fd5b50610353610a2a565b005b348015610360575f80fd5b5061037b60048036038101906103769190612bd6565b610b04565b60405161038891906129b2565b60405180910390f35b34801561039c575f80fd5b506103a5610b4a565b005b3480156103b2575f80fd5b506103cd60048036038101906103c89190612c01565b610c98565b005b3480156103da575f80fd5b506103e3610dde565b6040516103f091906129b2565b60405180910390f35b348015610404575f80fd5b5061040d610de4565b005b34801561041a575f80fd5b50610423611304565b6040516104309190612c3b565b60405180910390f35b348015610444575f80fd5b5061044d61132b565b60405161045a91906129b2565b60405180910390f35b34801561046e575f80fd5b50610477611331565b6040516104849190612874565b60405180910390f35b348015610498575f80fd5b506104b360048036038101906104ae9190612932565b61136e565b6040516104c0919061298a565b60405180910390f35b3480156104d4575f80fd5b506104dd61138b565b005b3480156104ea575f80fd5b506104f36114bd565b60405161050091906129b2565b60405180910390f35b348015610514575f80fd5b5061052f600480360381019061052a9190612b8f565b6114c3565b005b34801561053c575f80fd5b5061055760048036038101906105529190612c54565b6115e2565b60405161056491906129b2565b60405180910390f35b348015610578575f80fd5b50610581611664565b005b34801561058e575f80fd5b506105a960048036038101906105a49190612c01565b611713565b005b60606040518060400160405280600581526020017f426c657765000000000000000000000000000000000000000000000000000000815250905090565b5f6105fb6105f461179f565b84846117a6565b6001905092915050565b60125481565b5f6009600a61061a9190612dee565b6461f313f88061062a9190612e38565b905090565b5f61063b848484611969565b6106f88461064761179f565b6106f3856040518060600160405280602881526020016139546028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106aa61179f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122f09092919063ffffffff16565b6117a6565b600190509392505050565b5f6009905090565b61071361179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461079f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079690612ec3565b60405180910390fd5b5f5b8151811015610825575f60045f8484815181106107c1576107c0612ee1565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506107a1565b5050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b61088361179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461090f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090690612ec3565b60405180910390fd5b5f6006819055505f6007819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f60405161094c9190612f50565b60405180910390a1565b61095e61179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e190612ec3565b60405180910390fd5b5f600d819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f604051610a209190612f50565b60405180910390a1565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a6a61179f565b73ffffffffffffffffffffffffffffffffffffffff1614610ac0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab790612fb3565b60405180910390fd5b5f610aca30610b04565b90505f811115610b0157610b003060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611969565b5b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b5261179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd590612ec3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cd861179f565b73ffffffffffffffffffffffffffffffffffffffff1614610d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2590612fb3565b60405180910390fd5b5f81118015610d3e575060648111155b610d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d749061301b565b60405180910390fd5b5f610d8730610b04565b90505f60648383610d989190612e38565b610da29190613066565b90505f811115610dd957610dd83060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611969565b5b505050565b600f5481565b610dec61179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6f90612ec3565b60405180910390fd5b60148054906101000a900460ff1615610ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebd906130e0565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610f633060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610f4e9190612dee565b6461f313f880610f5e9190612e38565b6117a6565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fcd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff19190613112565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611077573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061109b9190613112565b6040518363ffffffff1660e01b81526004016110b892919061313d565b6020604051808303815f875af11580156110d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110f89190613112565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061117f30610b04565b5f80611189611304565b426040518863ffffffff1660e01b81526004016111ab96959493929190613164565b60606040518083038185885af11580156111c7573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906111ec91906131d7565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161128c929190613227565b6020604051808303815f875af11580156112a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112cc9190613278565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600581526020017f424c455745000000000000000000000000000000000000000000000000000000815250905090565b5f61138161137a61179f565b8484611969565b6001905092915050565b61139361179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461141f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141690612ec3565b60405180910390fd5b6009600a61142d9190612dee565b6461f313f88061143d9190612e38565b600f819055506009600a6114519190612dee565b6461f313f8806114619190612e38565b6010819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6114969190612dee565b6461f313f8806114a69190612e38565b6040516114b391906129b2565b60405180910390a1565b60115481565b6114cb61179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611557576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154e90612ec3565b60405180910390fd5b5f5b81518110156115de57600160045f84848151811061157a57611579612ee1565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611559565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116a461179f565b73ffffffffffffffffffffffffffffffffffffffff16146116c3575f80fd5b5f6116cd30610b04565b90505f811180156116ea5750601460169054906101000a900460ff165b156116f9576116f881612352565b5b5f4790505f81111561170f5761170e816125bd565b5b5050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661175361179f565b73ffffffffffffffffffffffffffffffffffffffff1614611772575f80fd5b600854811115801561178657506009548111155b61178e575f80fd5b806008819055508060098190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180b90613313565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611882576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611879906133a1565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161195c91906129b2565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ce9061342f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3c906134bd565b60405180910390fd5b5f8111611a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7e9061354b565b60405180910390fd5b5f611a90611304565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611afe5750611ace611304565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156120405760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611ba1575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611ba9575f80fd5b5f600e5403611bf157611bee6064611be0600a54600e5411611bcd57600654611bd1565b6008545b8561262590919063ffffffff16565b61269c90919063ffffffff16565b90505b5f600e541115611c2657611c236064611c15600d548561262590919063ffffffff16565b61269c90919063ffffffff16565b90505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611ccf575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d22575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e1a57600f54821115611d6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d63906135b3565b60405180910390fd5b60105482611d7985610b04565b611d8391906135d1565b1115611dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbb9061364e565b60405180910390fd5b611e006064611df2600a54600e5411611ddf57600654611de3565b6008545b8561262590919063ffffffff16565b61269c90919063ffffffff16565b9050600e5f815480929190611e149061366c565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ea257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ee657611ee36064611ed5600b54600e5411611ec257600754611ec6565b6009545b8561262590919063ffffffff16565b61269c90919063ffffffff16565b90505b5f611ef030610b04565b9050601460159054906101000a900460ff16158015611f5b575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611f735750601460169054906101000a900460ff165b8015611f80575060115481115b8015611f8f5750600c54600e54115b1561203e57601654431115611fa6575f6015819055505b600360155410611feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe2906136fd565b60405180910390fd5b61200861200384611ffe846012546126e5565b6126e5565b612352565b5f4790505f81111561201e5761201d476125bd565b5b60155f8154809291906120309061366c565b919050555043601681905550505b505b5f81111561213f576120988160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126fd90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161213691906129b2565b60405180910390a35b61218f8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461275a90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506122326121e6828461275a90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126fd90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6122d5848661275a90919063ffffffff16565b6040516122e291906129b2565b60405180910390a350505050565b5f838311158290612337576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232e9190612874565b60405180910390fd5b505f8385612345919061371b565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561238957612388612a53565b5b6040519080825280602002602001820160405280156123b75781602001602082028036833780820191505090505b50905030815f815181106123ce576123cd612ee1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612472573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124969190613112565b816001815181106124aa576124a9612ee1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506125103060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117a6565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612572959493929190613805565b5f604051808303815f87803b158015612589575f80fd5b505af115801561259b573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612621573d5f803e3d5ffd5b5050565b5f808303612635575f9050612696565b5f82846126429190612e38565b90508284826126519190613066565b14612691576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612688906138cd565b60405180910390fd5b809150505b92915050565b5f6126dd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506127a3565b905092915050565b5f8183116126f357826126f5565b815b905092915050565b5f80828461270b91906135d1565b905083811015612750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274790613935565b60405180910390fd5b8091505092915050565b5f61279b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122f0565b905092915050565b5f80831182906127e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e09190612874565b60405180910390fd5b505f83856127f79190613066565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61284682612804565b612850818561280e565b935061286081856020860161281e565b6128698161282c565b840191505092915050565b5f6020820190508181035f83015261288c818461283c565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128ce826128a5565b9050919050565b6128de816128c4565b81146128e8575f80fd5b50565b5f813590506128f9816128d5565b92915050565b5f819050919050565b612911816128ff565b811461291b575f80fd5b50565b5f8135905061292c81612908565b92915050565b5f80604083850312156129485761294761289d565b5b5f612955858286016128eb565b92505060206129668582860161291e565b9150509250929050565b5f8115159050919050565b61298481612970565b82525050565b5f60208201905061299d5f83018461297b565b92915050565b6129ac816128ff565b82525050565b5f6020820190506129c55f8301846129a3565b92915050565b5f805f606084860312156129e2576129e161289d565b5b5f6129ef868287016128eb565b9350506020612a00868287016128eb565b9250506040612a118682870161291e565b9150509250925092565b5f60ff82169050919050565b612a3081612a1b565b82525050565b5f602082019050612a495f830184612a27565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612a898261282c565b810181811067ffffffffffffffff82111715612aa857612aa7612a53565b5b80604052505050565b5f612aba612894565b9050612ac68282612a80565b919050565b5f67ffffffffffffffff821115612ae557612ae4612a53565b5b602082029050602081019050919050565b5f80fd5b5f612b0c612b0784612acb565b612ab1565b90508083825260208201905060208402830185811115612b2f57612b2e612af6565b5b835b81811015612b585780612b4488826128eb565b845260208401935050602081019050612b31565b5050509392505050565b5f82601f830112612b7657612b75612a4f565b5b8135612b86848260208601612afa565b91505092915050565b5f60208284031215612ba457612ba361289d565b5b5f82013567ffffffffffffffff811115612bc157612bc06128a1565b5b612bcd84828501612b62565b91505092915050565b5f60208284031215612beb57612bea61289d565b5b5f612bf8848285016128eb565b91505092915050565b5f60208284031215612c1657612c1561289d565b5b5f612c238482850161291e565b91505092915050565b612c35816128c4565b82525050565b5f602082019050612c4e5f830184612c2c565b92915050565b5f8060408385031215612c6a57612c6961289d565b5b5f612c77858286016128eb565b9250506020612c88858286016128eb565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612d1457808604811115612cf057612cef612c92565b5b6001851615612cff5780820291505b8081029050612d0d85612cbf565b9450612cd4565b94509492505050565b5f82612d2c5760019050612de7565b81612d39575f9050612de7565b8160018114612d4f5760028114612d5957612d88565b6001915050612de7565b60ff841115612d6b57612d6a612c92565b5b8360020a915084821115612d8257612d81612c92565b5b50612de7565b5060208310610133831016604e8410600b8410161715612dbd5782820a905083811115612db857612db7612c92565b5b612de7565b612dca8484846001612ccb565b92509050818404811115612de157612de0612c92565b5b81810290505b9392505050565b5f612df8826128ff565b9150612e0383612a1b565b9250612e307fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612d1d565b905092915050565b5f612e42826128ff565b9150612e4d836128ff565b9250828202612e5b816128ff565b91508282048414831517612e7257612e71612c92565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612ead60208361280e565b9150612eb882612e79565b602082019050919050565b5f6020820190508181035f830152612eda81612ea1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f819050919050565b5f612f3a612f35612f3084612f0e565b612f17565b6128ff565b9050919050565b612f4a81612f20565b82525050565b5f602082019050612f635f830184612f41565b92915050565b7f43616c6c6572206973206e6f7420746865207461782077616c6c6574000000005f82015250565b5f612f9d601c8361280e565b9150612fa882612f69565b602082019050919050565b5f6020820190508181035f830152612fca81612f91565b9050919050565b7f496e76616c69642070657263656e7461676500000000000000000000000000005f82015250565b5f61300560128361280e565b915061301082612fd1565b602082019050919050565b5f6020820190508181035f83015261303281612ff9565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613070826128ff565b915061307b836128ff565b92508261308b5761308a613039565b5b828204905092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6130ca60178361280e565b91506130d582613096565b602082019050919050565b5f6020820190508181035f8301526130f7816130be565b9050919050565b5f8151905061310c816128d5565b92915050565b5f602082840312156131275761312661289d565b5b5f613134848285016130fe565b91505092915050565b5f6040820190506131505f830185612c2c565b61315d6020830184612c2c565b9392505050565b5f60c0820190506131775f830189612c2c565b61318460208301886129a3565b6131916040830187612f41565b61319e6060830186612f41565b6131ab6080830185612c2c565b6131b860a08301846129a3565b979650505050505050565b5f815190506131d181612908565b92915050565b5f805f606084860312156131ee576131ed61289d565b5b5f6131fb868287016131c3565b935050602061320c868287016131c3565b925050604061321d868287016131c3565b9150509250925092565b5f60408201905061323a5f830185612c2c565b61324760208301846129a3565b9392505050565b61325781612970565b8114613261575f80fd5b50565b5f815190506132728161324e565b92915050565b5f6020828403121561328d5761328c61289d565b5b5f61329a84828501613264565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6132fd60248361280e565b9150613308826132a3565b604082019050919050565b5f6020820190508181035f83015261332a816132f1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61338b60228361280e565b915061339682613331565b604082019050919050565b5f6020820190508181035f8301526133b88161337f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61341960258361280e565b9150613424826133bf565b604082019050919050565b5f6020820190508181035f8301526134468161340d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6134a760238361280e565b91506134b28261344d565b604082019050919050565b5f6020820190508181035f8301526134d48161349b565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61353560298361280e565b9150613540826134db565b604082019050919050565b5f6020820190508181035f83015261356281613529565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61359d60198361280e565b91506135a882613569565b602082019050919050565b5f6020820190508181035f8301526135ca81613591565b9050919050565b5f6135db826128ff565b91506135e6836128ff565b92508282019050808211156135fe576135fd612c92565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613638601a8361280e565b915061364382613604565b602082019050919050565b5f6020820190508181035f8301526136658161362c565b9050919050565b5f613676826128ff565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136a8576136a7612c92565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f6136e760178361280e565b91506136f2826136b3565b602082019050919050565b5f6020820190508181035f830152613714816136db565b9050919050565b5f613725826128ff565b9150613730836128ff565b925082820390508181111561374857613747612c92565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613780816128c4565b82525050565b5f6137918383613777565b60208301905092915050565b5f602082019050919050565b5f6137b38261374e565b6137bd8185613758565b93506137c883613768565b805f5b838110156137f85781516137df8882613786565b97506137ea8361379d565b9250506001810190506137cb565b5085935050505092915050565b5f60a0820190506138185f8301886129a3565b6138256020830187612f41565b818103604083015261383781866137a9565b90506138466060830185612c2c565b61385360808301846129a3565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6138b760218361280e565b91506138c28261385d565b604082019050919050565b5f6020820190508181035f8301526138e4816138ab565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61391f601b8361280e565b915061392a826138eb565b602082019050919050565b5f6020820190508181035f83015261394c81613913565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220cbfb0533627a227d7324169e2622030a6900dd9ddd4613b38c9c93d5f09d816e64736f6c634300081a0033

Deployed Bytecode

0x608060405260043610610184575f3560e01c8063755be956116100d0578063a9059cbb11610089578063d34628cc11610063578063d34628cc14610509578063dd62ed3e14610531578063e5cb06b91461056d578063fe60e6a1146105835761018b565b8063a9059cbb1461048d578063aa1e27be146104c9578063bf474bed146104df5761018b565b8063755be956146103a75780637d1db4a5146103cf5780638a8c523c146103f95780638da5cb5b1461040f5780638f9a55c01461043957806395d89b41146104635761018b565b806331c2d8471161013d57806369d2f2931161011757806369d2f293146103295780636ac0ebf71461033f57806370a0823114610355578063715018a6146103915761018b565b806331c2d847146102af5780633bbac579146102d757806362232c76146103135761018b565b806306fdde031461018f578063095ea7b3146101b95780630faee56f146101f557806318160ddd1461021f57806323b872dd14610249578063313ce567146102855761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105ab565b6040516101b09190612874565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da9190612932565b6105e8565b6040516101ec919061298a565b60405180910390f35b348015610200575f80fd5b50610209610605565b60405161021691906129b2565b60405180910390f35b34801561022a575f80fd5b5061023361060b565b60405161024091906129b2565b60405180910390f35b348015610254575f80fd5b5061026f600480360381019061026a91906129cb565b61062f565b60405161027c919061298a565b60405180910390f35b348015610290575f80fd5b50610299610703565b6040516102a69190612a36565b60405180910390f35b3480156102ba575f80fd5b506102d560048036038101906102d09190612b8f565b61070b565b005b3480156102e2575f80fd5b506102fd60048036038101906102f89190612bd6565b610829565b60405161030a919061298a565b60405180910390f35b34801561031e575f80fd5b5061032761087b565b005b348015610334575f80fd5b5061033d610956565b005b34801561034a575f80fd5b50610353610a2a565b005b348015610360575f80fd5b5061037b60048036038101906103769190612bd6565b610b04565b60405161038891906129b2565b60405180910390f35b34801561039c575f80fd5b506103a5610b4a565b005b3480156103b2575f80fd5b506103cd60048036038101906103c89190612c01565b610c98565b005b3480156103da575f80fd5b506103e3610dde565b6040516103f091906129b2565b60405180910390f35b348015610404575f80fd5b5061040d610de4565b005b34801561041a575f80fd5b50610423611304565b6040516104309190612c3b565b60405180910390f35b348015610444575f80fd5b5061044d61132b565b60405161045a91906129b2565b60405180910390f35b34801561046e575f80fd5b50610477611331565b6040516104849190612874565b60405180910390f35b348015610498575f80fd5b506104b360048036038101906104ae9190612932565b61136e565b6040516104c0919061298a565b60405180910390f35b3480156104d4575f80fd5b506104dd61138b565b005b3480156104ea575f80fd5b506104f36114bd565b60405161050091906129b2565b60405180910390f35b348015610514575f80fd5b5061052f600480360381019061052a9190612b8f565b6114c3565b005b34801561053c575f80fd5b5061055760048036038101906105529190612c54565b6115e2565b60405161056491906129b2565b60405180910390f35b348015610578575f80fd5b50610581611664565b005b34801561058e575f80fd5b506105a960048036038101906105a49190612c01565b611713565b005b60606040518060400160405280600581526020017f426c657765000000000000000000000000000000000000000000000000000000815250905090565b5f6105fb6105f461179f565b84846117a6565b6001905092915050565b60125481565b5f6009600a61061a9190612dee565b6461f313f88061062a9190612e38565b905090565b5f61063b848484611969565b6106f88461064761179f565b6106f3856040518060600160405280602881526020016139546028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106aa61179f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122f09092919063ffffffff16565b6117a6565b600190509392505050565b5f6009905090565b61071361179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461079f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079690612ec3565b60405180910390fd5b5f5b8151811015610825575f60045f8484815181106107c1576107c0612ee1565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506107a1565b5050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b61088361179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461090f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090690612ec3565b60405180910390fd5b5f6006819055505f6007819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f60405161094c9190612f50565b60405180910390a1565b61095e61179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e190612ec3565b60405180910390fd5b5f600d819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f604051610a209190612f50565b60405180910390a1565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a6a61179f565b73ffffffffffffffffffffffffffffffffffffffff1614610ac0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab790612fb3565b60405180910390fd5b5f610aca30610b04565b90505f811115610b0157610b003060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611969565b5b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b5261179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd590612ec3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cd861179f565b73ffffffffffffffffffffffffffffffffffffffff1614610d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2590612fb3565b60405180910390fd5b5f81118015610d3e575060648111155b610d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d749061301b565b60405180910390fd5b5f610d8730610b04565b90505f60648383610d989190612e38565b610da29190613066565b90505f811115610dd957610dd83060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611969565b5b505050565b600f5481565b610dec61179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6f90612ec3565b60405180910390fd5b60148054906101000a900460ff1615610ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebd906130e0565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610f633060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610f4e9190612dee565b6461f313f880610f5e9190612e38565b6117a6565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fcd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff19190613112565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611077573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061109b9190613112565b6040518363ffffffff1660e01b81526004016110b892919061313d565b6020604051808303815f875af11580156110d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110f89190613112565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061117f30610b04565b5f80611189611304565b426040518863ffffffff1660e01b81526004016111ab96959493929190613164565b60606040518083038185885af11580156111c7573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906111ec91906131d7565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161128c929190613227565b6020604051808303815f875af11580156112a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112cc9190613278565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600581526020017f424c455745000000000000000000000000000000000000000000000000000000815250905090565b5f61138161137a61179f565b8484611969565b6001905092915050565b61139361179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461141f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141690612ec3565b60405180910390fd5b6009600a61142d9190612dee565b6461f313f88061143d9190612e38565b600f819055506009600a6114519190612dee565b6461f313f8806114619190612e38565b6010819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6114969190612dee565b6461f313f8806114a69190612e38565b6040516114b391906129b2565b60405180910390a1565b60115481565b6114cb61179f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611557576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154e90612ec3565b60405180910390fd5b5f5b81518110156115de57600160045f84848151811061157a57611579612ee1565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611559565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116a461179f565b73ffffffffffffffffffffffffffffffffffffffff16146116c3575f80fd5b5f6116cd30610b04565b90505f811180156116ea5750601460169054906101000a900460ff165b156116f9576116f881612352565b5b5f4790505f81111561170f5761170e816125bd565b5b5050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661175361179f565b73ffffffffffffffffffffffffffffffffffffffff1614611772575f80fd5b600854811115801561178657506009548111155b61178e575f80fd5b806008819055508060098190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180b90613313565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611882576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611879906133a1565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161195c91906129b2565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ce9061342f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3c906134bd565b60405180910390fd5b5f8111611a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7e9061354b565b60405180910390fd5b5f611a90611304565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611afe5750611ace611304565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156120405760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611ba1575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611ba9575f80fd5b5f600e5403611bf157611bee6064611be0600a54600e5411611bcd57600654611bd1565b6008545b8561262590919063ffffffff16565b61269c90919063ffffffff16565b90505b5f600e541115611c2657611c236064611c15600d548561262590919063ffffffff16565b61269c90919063ffffffff16565b90505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611ccf575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d22575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e1a57600f54821115611d6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d63906135b3565b60405180910390fd5b60105482611d7985610b04565b611d8391906135d1565b1115611dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbb9061364e565b60405180910390fd5b611e006064611df2600a54600e5411611ddf57600654611de3565b6008545b8561262590919063ffffffff16565b61269c90919063ffffffff16565b9050600e5f815480929190611e149061366c565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ea257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ee657611ee36064611ed5600b54600e5411611ec257600754611ec6565b6009545b8561262590919063ffffffff16565b61269c90919063ffffffff16565b90505b5f611ef030610b04565b9050601460159054906101000a900460ff16158015611f5b575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611f735750601460169054906101000a900460ff165b8015611f80575060115481115b8015611f8f5750600c54600e54115b1561203e57601654431115611fa6575f6015819055505b600360155410611feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe2906136fd565b60405180910390fd5b61200861200384611ffe846012546126e5565b6126e5565b612352565b5f4790505f81111561201e5761201d476125bd565b5b60155f8154809291906120309061366c565b919050555043601681905550505b505b5f81111561213f576120988160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126fd90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161213691906129b2565b60405180910390a35b61218f8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461275a90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506122326121e6828461275a90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126fd90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6122d5848661275a90919063ffffffff16565b6040516122e291906129b2565b60405180910390a350505050565b5f838311158290612337576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232e9190612874565b60405180910390fd5b505f8385612345919061371b565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561238957612388612a53565b5b6040519080825280602002602001820160405280156123b75781602001602082028036833780820191505090505b50905030815f815181106123ce576123cd612ee1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612472573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124969190613112565b816001815181106124aa576124a9612ee1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506125103060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117a6565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612572959493929190613805565b5f604051808303815f87803b158015612589575f80fd5b505af115801561259b573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612621573d5f803e3d5ffd5b5050565b5f808303612635575f9050612696565b5f82846126429190612e38565b90508284826126519190613066565b14612691576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612688906138cd565b60405180910390fd5b809150505b92915050565b5f6126dd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506127a3565b905092915050565b5f8183116126f357826126f5565b815b905092915050565b5f80828461270b91906135d1565b905083811015612750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274790613935565b60405180910390fd5b8091505092915050565b5f61279b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122f0565b905092915050565b5f80831182906127e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e09190612874565b60405180910390fd5b505f83856127f79190613066565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61284682612804565b612850818561280e565b935061286081856020860161281e565b6128698161282c565b840191505092915050565b5f6020820190508181035f83015261288c818461283c565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128ce826128a5565b9050919050565b6128de816128c4565b81146128e8575f80fd5b50565b5f813590506128f9816128d5565b92915050565b5f819050919050565b612911816128ff565b811461291b575f80fd5b50565b5f8135905061292c81612908565b92915050565b5f80604083850312156129485761294761289d565b5b5f612955858286016128eb565b92505060206129668582860161291e565b9150509250929050565b5f8115159050919050565b61298481612970565b82525050565b5f60208201905061299d5f83018461297b565b92915050565b6129ac816128ff565b82525050565b5f6020820190506129c55f8301846129a3565b92915050565b5f805f606084860312156129e2576129e161289d565b5b5f6129ef868287016128eb565b9350506020612a00868287016128eb565b9250506040612a118682870161291e565b9150509250925092565b5f60ff82169050919050565b612a3081612a1b565b82525050565b5f602082019050612a495f830184612a27565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612a898261282c565b810181811067ffffffffffffffff82111715612aa857612aa7612a53565b5b80604052505050565b5f612aba612894565b9050612ac68282612a80565b919050565b5f67ffffffffffffffff821115612ae557612ae4612a53565b5b602082029050602081019050919050565b5f80fd5b5f612b0c612b0784612acb565b612ab1565b90508083825260208201905060208402830185811115612b2f57612b2e612af6565b5b835b81811015612b585780612b4488826128eb565b845260208401935050602081019050612b31565b5050509392505050565b5f82601f830112612b7657612b75612a4f565b5b8135612b86848260208601612afa565b91505092915050565b5f60208284031215612ba457612ba361289d565b5b5f82013567ffffffffffffffff811115612bc157612bc06128a1565b5b612bcd84828501612b62565b91505092915050565b5f60208284031215612beb57612bea61289d565b5b5f612bf8848285016128eb565b91505092915050565b5f60208284031215612c1657612c1561289d565b5b5f612c238482850161291e565b91505092915050565b612c35816128c4565b82525050565b5f602082019050612c4e5f830184612c2c565b92915050565b5f8060408385031215612c6a57612c6961289d565b5b5f612c77858286016128eb565b9250506020612c88858286016128eb565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612d1457808604811115612cf057612cef612c92565b5b6001851615612cff5780820291505b8081029050612d0d85612cbf565b9450612cd4565b94509492505050565b5f82612d2c5760019050612de7565b81612d39575f9050612de7565b8160018114612d4f5760028114612d5957612d88565b6001915050612de7565b60ff841115612d6b57612d6a612c92565b5b8360020a915084821115612d8257612d81612c92565b5b50612de7565b5060208310610133831016604e8410600b8410161715612dbd5782820a905083811115612db857612db7612c92565b5b612de7565b612dca8484846001612ccb565b92509050818404811115612de157612de0612c92565b5b81810290505b9392505050565b5f612df8826128ff565b9150612e0383612a1b565b9250612e307fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612d1d565b905092915050565b5f612e42826128ff565b9150612e4d836128ff565b9250828202612e5b816128ff565b91508282048414831517612e7257612e71612c92565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612ead60208361280e565b9150612eb882612e79565b602082019050919050565b5f6020820190508181035f830152612eda81612ea1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f819050919050565b5f612f3a612f35612f3084612f0e565b612f17565b6128ff565b9050919050565b612f4a81612f20565b82525050565b5f602082019050612f635f830184612f41565b92915050565b7f43616c6c6572206973206e6f7420746865207461782077616c6c6574000000005f82015250565b5f612f9d601c8361280e565b9150612fa882612f69565b602082019050919050565b5f6020820190508181035f830152612fca81612f91565b9050919050565b7f496e76616c69642070657263656e7461676500000000000000000000000000005f82015250565b5f61300560128361280e565b915061301082612fd1565b602082019050919050565b5f6020820190508181035f83015261303281612ff9565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613070826128ff565b915061307b836128ff565b92508261308b5761308a613039565b5b828204905092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6130ca60178361280e565b91506130d582613096565b602082019050919050565b5f6020820190508181035f8301526130f7816130be565b9050919050565b5f8151905061310c816128d5565b92915050565b5f602082840312156131275761312661289d565b5b5f613134848285016130fe565b91505092915050565b5f6040820190506131505f830185612c2c565b61315d6020830184612c2c565b9392505050565b5f60c0820190506131775f830189612c2c565b61318460208301886129a3565b6131916040830187612f41565b61319e6060830186612f41565b6131ab6080830185612c2c565b6131b860a08301846129a3565b979650505050505050565b5f815190506131d181612908565b92915050565b5f805f606084860312156131ee576131ed61289d565b5b5f6131fb868287016131c3565b935050602061320c868287016131c3565b925050604061321d868287016131c3565b9150509250925092565b5f60408201905061323a5f830185612c2c565b61324760208301846129a3565b9392505050565b61325781612970565b8114613261575f80fd5b50565b5f815190506132728161324e565b92915050565b5f6020828403121561328d5761328c61289d565b5b5f61329a84828501613264565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6132fd60248361280e565b9150613308826132a3565b604082019050919050565b5f6020820190508181035f83015261332a816132f1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61338b60228361280e565b915061339682613331565b604082019050919050565b5f6020820190508181035f8301526133b88161337f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61341960258361280e565b9150613424826133bf565b604082019050919050565b5f6020820190508181035f8301526134468161340d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6134a760238361280e565b91506134b28261344d565b604082019050919050565b5f6020820190508181035f8301526134d48161349b565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61353560298361280e565b9150613540826134db565b604082019050919050565b5f6020820190508181035f83015261356281613529565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61359d60198361280e565b91506135a882613569565b602082019050919050565b5f6020820190508181035f8301526135ca81613591565b9050919050565b5f6135db826128ff565b91506135e6836128ff565b92508282019050808211156135fe576135fd612c92565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613638601a8361280e565b915061364382613604565b602082019050919050565b5f6020820190508181035f8301526136658161362c565b9050919050565b5f613676826128ff565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136a8576136a7612c92565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f6136e760178361280e565b91506136f2826136b3565b602082019050919050565b5f6020820190508181035f830152613714816136db565b9050919050565b5f613725826128ff565b9150613730836128ff565b925082820390508181111561374857613747612c92565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613780816128c4565b82525050565b5f6137918383613777565b60208301905092915050565b5f602082019050919050565b5f6137b38261374e565b6137bd8185613758565b93506137c883613768565b805f5b838110156137f85781516137df8882613786565b97506137ea8361379d565b9250506001810190506137cb565b5085935050505092915050565b5f60a0820190506138185f8301886129a3565b6138256020830187612f41565b818103604083015261383781866137a9565b90506138466060830185612c2c565b61385360808301846129a3565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6138b760218361280e565b91506138c28261385d565b604082019050919050565b5f6020820190508181035f8301526138e4816138ab565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61391f601b8361280e565b915061392a826138eb565b602082019050919050565b5f6020820190508181035f83015261394c81613913565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220cbfb0533627a227d7324169e2622030a6900dd9ddd4613b38c9c93d5f09d816e64736f6c634300081a0033

Deployed Bytecode Sourcemap

3634:10445:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5763:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6596:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4772:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6040:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6765:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5949:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11217:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11387:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10785:150;;;;;;;;;;;;;:::i;:::-;;10655:121;;;;;;;;;;;;;:::i;:::-;;12813:477;;;;;;;;;;;;;:::i;:::-;;6143:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2715:148;;;;;;;;;;;;;:::i;:::-;;13302:768;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4572:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11478:673;;;;;;;;;;;;;:::i;:::-;;2501:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4638:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5854:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6270:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10484:163;;;;;;;;;;;;;:::i;:::-;;4704:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11045:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6445:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12434:371;;;;;;;;;;;;;:::i;:::-;;12161:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5763:83;5800:13;5833:5;;;;;;;;;;;;;;;;;5826:12;;5763:83;:::o;6596:161::-;6671:4;6688:39;6697:12;:10;:12::i;:::-;6711:7;6720:6;6688:8;:39::i;:::-;6745:4;6738:11;;6596:161;;;;:::o;4772:55::-;;;;:::o;6040:95::-;6093:7;4384:1;4442:2;:13;;;;:::i;:::-;4427:12;:28;;;;:::i;:::-;6113:14;;6040:95;:::o;6765:313::-;6863:4;6880:36;6890:6;6898:9;6909:6;6880:9;:36::i;:::-;6927:121;6936:6;6944:12;:10;:12::i;:::-;6958:89;6996:6;6958:89;;;;;;;;;;;;;;;;;:11;:19;6970:6;6958:19;;;;;;;;;;;;;;;:33;6978:12;:10;:12::i;:::-;6958:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6927:8;:121::i;:::-;7066:4;7059:11;;6765:313;;;;;:::o;5949:83::-;5990:5;4384:1;6008:16;;5949:83;:::o;11217:162::-;2638:12;:10;:12::i;:::-;2628:22;;:6;;;;;;;;;;:22;;;2620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11290:6:::1;11285:87;11306:6;:13;11302:1;:17;11285:87;;;11357:5;11339:4;:15;11344:6;11351:1;11344:9;;;;;;;;:::i;:::-;;;;;;;;11339:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;11321:3;;;;;;;11285:87;;;;11217:162:::0;:::o;11387:83::-;11434:4;11455;:7;11460:1;11455:7;;;;;;;;;;;;;;;;;;;;;;;;;11448:14;;11387:83;;;:::o;10785:150::-;2638:12;:10;:12::i;:::-;2628:22;;:6;;;;;;;;;;:22;;;2620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10859:1:::1;10842:14;:18;;;;10889:1;10871:15;:19;;;;10906:21;10925:1;10906:21;;;;;;:::i;:::-;;;;;;;;10785:150::o:0;10655:121::-;2638:12;:10;:12::i;:::-;2628:22;;:6;;;;;;;;;;:22;;;2620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10730:1:::1;10715:12;:16;;;;10747:21;10766:1;10747:21;;;;;;:::i;:::-;;;;;;;;10655:121::o:0;12813:477::-;12942:10;;;;;;;;;;;12928:24;;:12;:10;:12::i;:::-;:24;;;12920:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;13048:20;13071:24;13089:4;13071:9;:24::i;:::-;13048:47;;13203:1;13188:12;:16;13184:99;;;13221:50;13239:4;13246:10;;;;;;;;;;;13258:12;13221:9;:50::i;:::-;13184:99;12847:443;12813:477::o;6143:119::-;6209:7;6236:9;:18;6246:7;6236:18;;;;;;;;;;;;;;;;6229:25;;6143:119;;;:::o;2715:148::-;2638:12;:10;:12::i;:::-;2628:22;;:6;;;;;;;;;;:22;;;2620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2822:1:::1;2785:40;;2806:6;::::0;::::1;;;;;;;;2785:40;;;;;;;;;;;;2853:1;2836:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2715:148::o:0;13302:768::-;13460:10;;;;;;;;;;;13444:26;;:12;:10;:12::i;:::-;:26;;;13436:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13602:1;13589:10;:14;:35;;;;;13621:3;13607:10;:17;;13589:35;13581:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;13711:20;13734:24;13752:4;13734:9;:24::i;:::-;13711:47;;13839:14;13886:3;13872:10;13857:12;:25;;;;:::i;:::-;13856:33;;;;:::i;:::-;13839:50;;13987:1;13978:6;:10;13974:89;;;14006:44;14024:4;14031:10;;;;;;;;;;;14043:6;14006:9;:44::i;:::-;13974:89;13361:709;;13302:768;:::o;4572:57::-;;;;:::o;11478:673::-;2638:12;:10;:12::i;:::-;2628:22;;:6;;;;;;;;;;:22;;;2620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11544:11:::1;::::0;::::1;;;;;;;;11543:12;11535:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11630:42;11593:15;;:80;;;;;;;;;;;;;;;;;;11684:58;11701:4;11716:15;;;;;;;;;;;4384:1;4442:2;:13;;;;:::i;:::-;4427:12;:28;;;;:::i;:::-;11684:8;:58::i;:::-;11787:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11769:55;;;11833:4;11840:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11769:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11753:13;;:110;;;;;;;;;;;;;;;;;;11874:15;;;;;;;;;;;:31;;;11913:21;11944:4;11950:24;11968:4;11950:9;:24::i;:::-;11975:1;11977::::0;11979:7:::1;:5;:7::i;:::-;11987:15;11874:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12021:13;;;;;;;;;;;12014:29;;;12052:15;;;;;;;;;;;12070:14;12014:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12110:4;12096:11;;:18;;;;;;;;;;;;;;;;;;12139:4;12125:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;11478:673::o:0;2501:79::-;2539:7;2566:6;;;;;;;;;;;2559:13;;2501:79;:::o;4638:59::-;;;;:::o;5854:87::-;5893:13;5926:7;;;;;;;;;;;;;;;;;5919:14;;5854:87;:::o;6270:167::-;6348:4;6365:42;6375:12;:10;:12::i;:::-;6389:9;6400:6;6365:9;:42::i;:::-;6425:4;6418:11;;6270:167;;;;:::o;10484:163::-;2638:12;:10;:12::i;:::-;2628:22;;:6;;;;;;;;;;:22;;;2620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4384:1:::1;4442:2;:13;;;;:::i;:::-;4427:12;:28;;;;:::i;:::-;10541:12;:22;;;;4384:1;4442:2;:13;;;;:::i;:::-;4427:12;:28;;;;:::i;:::-;10574:14;:22;;;;10612:27;4384:1;4442:2;:13;;;;:::i;:::-;4427:12;:28;;;;:::i;:::-;10612:27;;;;;;:::i;:::-;;;;;;;;10484:163::o:0;4704:61::-;;;;:::o;11045:164::-;2638:12;:10;:12::i;:::-;2628:22;;:6;;;;;;;;;;:22;;;2620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11119:6:::1;11114:88;11135:5;:12;11131:1;:16;11114:88;;;11186:4;11169;:14;11174:5;11180:1;11174:8;;;;;;;;:::i;:::-;;;;;;;;11169:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;11149:3;;;;;;;11114:88;;;;11045:164:::0;:::o;6445:143::-;6526:7;6553:11;:18;6565:5;6553:18;;;;;;;;;;;;;;;:27;6572:7;6553:27;;;;;;;;;;;;;;;;6546:34;;6445:143;;;;:::o;12434:371::-;12497:10;;;;;;;;;;;12483:24;;:12;:10;:12::i;:::-;:24;;;12475:33;;;;;;12519:20;12540:24;12558:4;12540:9;:24::i;:::-;12519:45;;12593:1;12578:12;:16;:31;;;;;12598:11;;;;;;;;;;;12578:31;12575:92;;;12625:30;12642:12;12625:16;:30::i;:::-;12575:92;12677:18;12696:21;12677:40;;12745:1;12732:10;:14;12728:70;;;12762:24;12775:10;12762:12;:24::i;:::-;12728:70;12464:341;;12434:371::o;12161:228::-;12240:10;;;;;;;;;;;12226:24;;:12;:10;:12::i;:::-;:24;;;12218:33;;;;;;12279:12;;12270:7;:21;;:47;;;;;12304:13;;12295:7;:22;;12270:47;12262:56;;;;;;12342:7;12329:12;:20;;;;12374:7;12360:13;:21;;;;12161:228;:::o;256:98::-;309:7;336:10;329:17;;256:98;:::o;7086:335::-;7196:1;7179:19;;:5;:19;;;7171:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7277:1;7258:21;;:7;:21;;;7250:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7359:6;7329:11;:18;7341:5;7329:18;;;;;;;;;;;;;;;:27;7348:7;7329:27;;;;;;;;;;;;;;;:36;;;;7397:7;7381:32;;7390:5;7381:32;;;7406:6;7381:32;;;;;;:::i;:::-;;;;;;;;7086:335;;;:::o;7429:2448::-;7533:1;7517:18;;:4;:18;;;7509:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7610:1;7596:16;;:2;:16;;;7588:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7680:1;7671:6;:10;7663:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7738:17;7780:7;:5;:7::i;:::-;7772:15;;:4;:15;;;;:32;;;;;7797:7;:5;:7::i;:::-;7791:13;;:2;:13;;;;7772:32;7768:1753;;;7830:4;:10;7835:4;7830:10;;;;;;;;;;;;;;;;;;;;;;;;;7829:11;:24;;;;;7845:4;:8;7850:2;7845:8;;;;;;;;;;;;;;;;;;;;;;;;;7844:9;7829:24;7821:33;;;;;;7885:1;7874:9;;:12;7871:139;;7918:76;7990:3;7918:67;7940:15;;7930:9;;:25;7929:55;;7970:14;;7929:55;;;7957:12;;7929:55;7918:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;7906:88;;7871:139;8037:1;8027:9;;:11;8024:95;;;8070:33;8099:3;8070:24;8081:12;;8070:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;8058:45;;8024:95;8147:13;;;;;;;;;;;8139:21;;:4;:21;;;:55;;;;;8178:15;;;;;;;;;;;8164:30;;:2;:30;;;;8139:55;:83;;;;;8200:18;:22;8219:2;8200:22;;;;;;;;;;;;;;;;;;;;;;;;;8198:24;8139:83;8135:420;;;8262:12;;8252:6;:22;;8244:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8357:14;;8347:6;8331:13;8341:2;8331:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8323:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8433:76;8505:3;8433:67;8455:15;;8445:9;;:25;8444:55;;8485:14;;8444:55;;;8472:12;;8444:55;8433:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;8421:88;;8528:9;;:11;;;;;;;;;:::i;:::-;;;;;;8135:420;8580:13;;;;;;;;;;;8574:19;;:2;:19;;;:43;;;;;8612:4;8597:20;;:4;:20;;;;8574:43;8571:174;;;8650:79;8725:3;8650:70;8672:16;;8662:9;;:26;8661:58;;8704:15;;8661:58;;;8690:13;;8661:58;8650:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;8638:91;;8571:174;8761:28;8792:24;8810:4;8792:9;:24::i;:::-;8761:55;;8836:6;;;;;;;;;;;8835:7;:30;;;;;8852:13;;;;;;;;;;;8846:19;;:2;:19;;;8835:30;:45;;;;;8869:11;;;;;;;;;;;8835:45;:89;;;;;8907:17;;8884:20;:40;8835:89;:123;;;;;8940:18;;8928:9;;:30;8835:123;8831:679;;;8998:13;;8983:12;:28;8979:90;;;9048:1;9036:9;:13;;;;8979:90;9107:1;9095:9;;:13;9087:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;9155:69;9172:51;9176:6;9184:38;9188:20;9210:11;;9184:3;:38::i;:::-;9172:3;:51::i;:::-;9155:16;:69::i;:::-;9243:26;9272:21;9243:50;;9337:1;9316:18;:22;9312:106;;;9363:35;9376:21;9363:12;:35::i;:::-;9312:106;9436:9;;:11;;;;;;;;;:::i;:::-;;;;;;9482:12;9466:13;:28;;;;8960:550;8831:679;7806:1715;7768:1753;9546:1;9536:9;:11;9533:161;;;9586:39;9615:9;9586;:24;9604:4;9586:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9561:9;:24;9579:4;9561:24;;;;;;;;;;;;;;;:64;;;;9666:4;9643:39;;9652:4;9643:39;;;9672:9;9643:39;;;;;;:::i;:::-;;;;;;;;9533:161;9720:27;9740:6;9720:9;:15;9730:4;9720:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9704:9;:15;9714:4;9704:15;;;;;;;;;;;;;;;:43;;;;9772:40;9790:21;9801:9;9790:6;:10;;:21;;;;:::i;:::-;9772:9;:13;9782:2;9772:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;9758:9;:13;9768:2;9758:13;;;;;;;;;;;;;;;:54;;;;9843:2;9828:41;;9837:4;9828:41;;;9847:21;9858:9;9847:6;:10;;:21;;;;:::i;:::-;9828:41;;;;;;:::i;:::-;;;;;;;;7498:2379;7429:2448;;;:::o;1393:190::-;1479:7;1512:1;1507;:6;;1515:12;1499:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1539:9;1555:1;1551;:5;;;;:::i;:::-;1539:17;;1574:1;1567:8;;;1393:190;;;;;:::o;9993:483::-;5237:4;5228:6;;:13;;;;;;;;;;;;;;;;;;10071:21:::1;10109:1;10095:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10071:40;;10140:4;10122;10127:1;10122:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10166:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10156:4;10161:1;10156:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10199:62;10216:4;10231:15;;;;;;;;;;;10249:11;10199:8;:62::i;:::-;10272:15;;;;;;;;;;;:66;;;10353:11;10379:1;10395:4;10422;10442:15;10272:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10060:416;5273:5:::0;5264:6;;:14;;;;;;;;;;;;;;;;;;9993:483;:::o;10945:92::-;11002:10;;;;;;;;;;;:19;;:27;11022:6;11002:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10945:92;:::o;1591:246::-;1649:7;1678:1;1673;:6;1669:47;;1703:1;1696:8;;;;1669:47;1726:9;1742:1;1738;:5;;;;:::i;:::-;1726:17;;1771:1;1766;1762;:5;;;;:::i;:::-;:10;1754:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1828:1;1821:8;;;1591:246;;;;;:::o;1845:132::-;1903:7;1930:39;1934:1;1937;1930:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1923:46;;1845:132;;;;:::o;9887:98::-;9944:7;9971:1;9969;:3;9968:9;;9976:1;9968:9;;;9974:1;9968:9;9961:16;;9887:98;;;;:::o;1062:179::-;1120:7;1140:9;1156:1;1152;:5;;;;:::i;:::-;1140:17;;1181:1;1176;:6;;1168:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1232:1;1225:8;;;1062:179;;;;:::o;1249:136::-;1307:7;1334:43;1338:1;1341;1334:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1327:50;;1249:136;;;;:::o;1985:189::-;2071:7;2103:1;2099;:5;2106:12;2091:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2130:9;2146:1;2142;:5;;;;:::i;:::-;2130:17;;2165:1;2158:8;;;1985:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1242:75::-;1275:6;1308:2;1302:9;1292:19;;1242:75;:::o;1323:117::-;1432:1;1429;1422:12;1446:117;1555:1;1552;1545:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:117::-;4855:1;4852;4845:12;4869:180;4917:77;4914:1;4907:88;5014:4;5011:1;5004:15;5038:4;5035:1;5028:15;5055:281;5138:27;5160:4;5138:27;:::i;:::-;5130:6;5126:40;5268:6;5256:10;5253:22;5232:18;5220:10;5217:34;5214:62;5211:88;;;5279:18;;:::i;:::-;5211:88;5319:10;5315:2;5308:22;5098:238;5055:281;;:::o;5342:129::-;5376:6;5403:20;;:::i;:::-;5393:30;;5432:33;5460:4;5452:6;5432:33;:::i;:::-;5342:129;;;:::o;5477:311::-;5554:4;5644:18;5636:6;5633:30;5630:56;;;5666:18;;:::i;:::-;5630:56;5716:4;5708:6;5704:17;5696:25;;5776:4;5770;5766:15;5758:23;;5477:311;;;:::o;5794:117::-;5903:1;5900;5893:12;5934:710;6030:5;6055:81;6071:64;6128:6;6071:64;:::i;:::-;6055:81;:::i;:::-;6046:90;;6156:5;6185:6;6178:5;6171:21;6219:4;6212:5;6208:16;6201:23;;6272:4;6264:6;6260:17;6252:6;6248:30;6301:3;6293:6;6290:15;6287:122;;;6320:79;;:::i;:::-;6287:122;6435:6;6418:220;6452:6;6447:3;6444:15;6418:220;;;6527:3;6556:37;6589:3;6577:10;6556:37;:::i;:::-;6551:3;6544:50;6623:4;6618:3;6614:14;6607:21;;6494:144;6478:4;6473:3;6469:14;6462:21;;6418:220;;;6422:21;6036:608;;5934:710;;;;;:::o;6667:370::-;6738:5;6787:3;6780:4;6772:6;6768:17;6764:27;6754:122;;6795:79;;:::i;:::-;6754:122;6912:6;6899:20;6937:94;7027:3;7019:6;7012:4;7004:6;7000:17;6937:94;:::i;:::-;6928:103;;6744:293;6667:370;;;;:::o;7043:539::-;7127:6;7176:2;7164:9;7155:7;7151:23;7147:32;7144:119;;;7182:79;;:::i;:::-;7144:119;7330:1;7319:9;7315:17;7302:31;7360:18;7352:6;7349:30;7346:117;;;7382:79;;:::i;:::-;7346:117;7487:78;7557:7;7548:6;7537:9;7533:22;7487:78;:::i;:::-;7477:88;;7273:302;7043:539;;;;:::o;7588:329::-;7647:6;7696:2;7684:9;7675:7;7671:23;7667:32;7664:119;;;7702:79;;:::i;:::-;7664:119;7822:1;7847:53;7892:7;7883:6;7872:9;7868:22;7847:53;:::i;:::-;7837:63;;7793:117;7588:329;;;;:::o;7923:::-;7982:6;8031:2;8019:9;8010:7;8006:23;8002:32;7999:119;;;8037:79;;:::i;:::-;7999:119;8157:1;8182:53;8227:7;8218:6;8207:9;8203:22;8182:53;:::i;:::-;8172:63;;8128:117;7923:329;;;;:::o;8258:118::-;8345:24;8363:5;8345:24;:::i;:::-;8340:3;8333:37;8258:118;;:::o;8382:222::-;8475:4;8513:2;8502:9;8498:18;8490:26;;8526:71;8594:1;8583:9;8579:17;8570:6;8526:71;:::i;:::-;8382:222;;;;:::o;8610:474::-;8678:6;8686;8735:2;8723:9;8714:7;8710:23;8706:32;8703:119;;;8741:79;;:::i;:::-;8703:119;8861:1;8886:53;8931:7;8922:6;8911:9;8907:22;8886:53;:::i;:::-;8876:63;;8832:117;8988:2;9014:53;9059:7;9050:6;9039:9;9035:22;9014:53;:::i;:::-;9004:63;;8959:118;8610:474;;;;;:::o;9090:180::-;9138:77;9135:1;9128:88;9235:4;9232:1;9225:15;9259:4;9256:1;9249:15;9276:102;9318:8;9365:5;9362:1;9358:13;9337:34;;9276:102;;;:::o;9384:848::-;9445:5;9452:4;9476:6;9467:15;;9500:5;9491:14;;9514:712;9535:1;9525:8;9522:15;9514:712;;;9630:4;9625:3;9621:14;9615:4;9612:24;9609:50;;;9639:18;;:::i;:::-;9609:50;9689:1;9679:8;9675:16;9672:451;;;10104:4;10097:5;10093:16;10084:25;;9672:451;10154:4;10148;10144:15;10136:23;;10184:32;10207:8;10184:32;:::i;:::-;10172:44;;9514:712;;;9384:848;;;;;;;:::o;10238:1073::-;10292:5;10483:8;10473:40;;10504:1;10495:10;;10506:5;;10473:40;10532:4;10522:36;;10549:1;10540:10;;10551:5;;10522:36;10618:4;10666:1;10661:27;;;;10702:1;10697:191;;;;10611:277;;10661:27;10679:1;10670:10;;10681:5;;;10697:191;10742:3;10732:8;10729:17;10726:43;;;10749:18;;:::i;:::-;10726:43;10798:8;10795:1;10791:16;10782:25;;10833:3;10826:5;10823:14;10820:40;;;10840:18;;:::i;:::-;10820:40;10873:5;;;10611:277;;10997:2;10987:8;10984:16;10978:3;10972:4;10969:13;10965:36;10947:2;10937:8;10934:16;10929:2;10923:4;10920:12;10916:35;10900:111;10897:246;;;11053:8;11047:4;11043:19;11034:28;;11088:3;11081:5;11078:14;11075:40;;;11095:18;;:::i;:::-;11075:40;11128:5;;10897:246;11168:42;11206:3;11196:8;11190:4;11187:1;11168:42;:::i;:::-;11153:57;;;;11242:4;11237:3;11233:14;11226:5;11223:25;11220:51;;;11251:18;;:::i;:::-;11220:51;11300:4;11293:5;11289:16;11280:25;;10238:1073;;;;;;:::o;11317:281::-;11375:5;11399:23;11417:4;11399:23;:::i;:::-;11391:31;;11443:25;11459:8;11443:25;:::i;:::-;11431:37;;11487:104;11524:66;11514:8;11508:4;11487:104;:::i;:::-;11478:113;;11317:281;;;;:::o;11604:410::-;11644:7;11667:20;11685:1;11667:20;:::i;:::-;11662:25;;11701:20;11719:1;11701:20;:::i;:::-;11696:25;;11756:1;11753;11749:9;11778:30;11796:11;11778:30;:::i;:::-;11767:41;;11957:1;11948:7;11944:15;11941:1;11938:22;11918:1;11911:9;11891:83;11868:139;;11987:18;;:::i;:::-;11868:139;11652:362;11604:410;;;;:::o;12020:182::-;12160:34;12156:1;12148:6;12144:14;12137:58;12020:182;:::o;12208:366::-;12350:3;12371:67;12435:2;12430:3;12371:67;:::i;:::-;12364:74;;12447:93;12536:3;12447:93;:::i;:::-;12565:2;12560:3;12556:12;12549:19;;12208:366;;;:::o;12580:419::-;12746:4;12784:2;12773:9;12769:18;12761:26;;12833:9;12827:4;12823:20;12819:1;12808:9;12804:17;12797:47;12861:131;12987:4;12861:131;:::i;:::-;12853:139;;12580:419;;;:::o;13005:180::-;13053:77;13050:1;13043:88;13150:4;13147:1;13140:15;13174:4;13171:1;13164:15;13191:85;13236:7;13265:5;13254:16;;13191:85;;;:::o;13282:60::-;13310:3;13331:5;13324:12;;13282:60;;;:::o;13348:158::-;13406:9;13439:61;13457:42;13466:32;13492:5;13466:32;:::i;:::-;13457:42;:::i;:::-;13439:61;:::i;:::-;13426:74;;13348:158;;;:::o;13512:147::-;13607:45;13646:5;13607:45;:::i;:::-;13602:3;13595:58;13512:147;;:::o;13665:238::-;13766:4;13804:2;13793:9;13789:18;13781:26;;13817:79;13893:1;13882:9;13878:17;13869:6;13817:79;:::i;:::-;13665:238;;;;:::o;13909:178::-;14049:30;14045:1;14037:6;14033:14;14026:54;13909:178;:::o;14093:366::-;14235:3;14256:67;14320:2;14315:3;14256:67;:::i;:::-;14249:74;;14332:93;14421:3;14332:93;:::i;:::-;14450:2;14445:3;14441:12;14434:19;;14093:366;;;:::o;14465:419::-;14631:4;14669:2;14658:9;14654:18;14646:26;;14718:9;14712:4;14708:20;14704:1;14693:9;14689:17;14682:47;14746:131;14872:4;14746:131;:::i;:::-;14738:139;;14465:419;;;:::o;14890:168::-;15030:20;15026:1;15018:6;15014:14;15007:44;14890:168;:::o;15064:366::-;15206:3;15227:67;15291:2;15286:3;15227:67;:::i;:::-;15220:74;;15303:93;15392:3;15303:93;:::i;:::-;15421:2;15416:3;15412:12;15405:19;;15064:366;;;:::o;15436:419::-;15602:4;15640:2;15629:9;15625:18;15617:26;;15689:9;15683:4;15679:20;15675:1;15664:9;15660:17;15653:47;15717:131;15843:4;15717:131;:::i;:::-;15709:139;;15436:419;;;:::o;15861:180::-;15909:77;15906:1;15899:88;16006:4;16003:1;15996:15;16030:4;16027:1;16020:15;16047:185;16087:1;16104:20;16122:1;16104:20;:::i;:::-;16099:25;;16138:20;16156:1;16138:20;:::i;:::-;16133:25;;16177:1;16167:35;;16182:18;;:::i;:::-;16167:35;16224:1;16221;16217:9;16212:14;;16047:185;;;;:::o;16238:173::-;16378:25;16374:1;16366:6;16362:14;16355:49;16238:173;:::o;16417:366::-;16559:3;16580:67;16644:2;16639:3;16580:67;:::i;:::-;16573:74;;16656:93;16745:3;16656:93;:::i;:::-;16774:2;16769:3;16765:12;16758:19;;16417:366;;;:::o;16789:419::-;16955:4;16993:2;16982:9;16978:18;16970:26;;17042:9;17036:4;17032:20;17028:1;17017:9;17013:17;17006:47;17070:131;17196:4;17070:131;:::i;:::-;17062:139;;16789:419;;;:::o;17214:143::-;17271:5;17302:6;17296:13;17287:22;;17318:33;17345:5;17318:33;:::i;:::-;17214:143;;;;:::o;17363:351::-;17433:6;17482:2;17470:9;17461:7;17457:23;17453:32;17450:119;;;17488:79;;:::i;:::-;17450:119;17608:1;17633:64;17689:7;17680:6;17669:9;17665:22;17633:64;:::i;:::-;17623:74;;17579:128;17363:351;;;;:::o;17720:332::-;17841:4;17879:2;17868:9;17864:18;17856:26;;17892:71;17960:1;17949:9;17945:17;17936:6;17892:71;:::i;:::-;17973:72;18041:2;18030:9;18026:18;18017:6;17973:72;:::i;:::-;17720:332;;;;;:::o;18058:807::-;18307:4;18345:3;18334:9;18330:19;18322:27;;18359:71;18427:1;18416:9;18412:17;18403:6;18359:71;:::i;:::-;18440:72;18508:2;18497:9;18493:18;18484:6;18440:72;:::i;:::-;18522:80;18598:2;18587:9;18583:18;18574:6;18522:80;:::i;:::-;18612;18688:2;18677:9;18673:18;18664:6;18612:80;:::i;:::-;18702:73;18770:3;18759:9;18755:19;18746:6;18702:73;:::i;:::-;18785;18853:3;18842:9;18838:19;18829:6;18785:73;:::i;:::-;18058:807;;;;;;;;;:::o;18871:143::-;18928:5;18959:6;18953:13;18944:22;;18975:33;19002:5;18975:33;:::i;:::-;18871:143;;;;:::o;19020:663::-;19108:6;19116;19124;19173:2;19161:9;19152:7;19148:23;19144:32;19141:119;;;19179:79;;:::i;:::-;19141:119;19299:1;19324:64;19380:7;19371:6;19360:9;19356:22;19324:64;:::i;:::-;19314:74;;19270:128;19437:2;19463:64;19519:7;19510:6;19499:9;19495:22;19463:64;:::i;:::-;19453:74;;19408:129;19576:2;19602:64;19658:7;19649:6;19638:9;19634:22;19602:64;:::i;:::-;19592:74;;19547:129;19020:663;;;;;:::o;19689:332::-;19810:4;19848:2;19837:9;19833:18;19825:26;;19861:71;19929:1;19918:9;19914:17;19905:6;19861:71;:::i;:::-;19942:72;20010:2;19999:9;19995:18;19986:6;19942:72;:::i;:::-;19689:332;;;;;:::o;20027:116::-;20097:21;20112:5;20097:21;:::i;:::-;20090:5;20087:32;20077:60;;20133:1;20130;20123:12;20077:60;20027:116;:::o;20149:137::-;20203:5;20234:6;20228:13;20219:22;;20250:30;20274:5;20250:30;:::i;:::-;20149:137;;;;:::o;20292:345::-;20359:6;20408:2;20396:9;20387:7;20383:23;20379:32;20376:119;;;20414:79;;:::i;:::-;20376:119;20534:1;20559:61;20612:7;20603:6;20592:9;20588:22;20559:61;:::i;:::-;20549:71;;20505:125;20292:345;;;;:::o;20643:223::-;20783:34;20779:1;20771:6;20767:14;20760:58;20852:6;20847:2;20839:6;20835:15;20828:31;20643:223;:::o;20872:366::-;21014:3;21035:67;21099:2;21094:3;21035:67;:::i;:::-;21028:74;;21111:93;21200:3;21111:93;:::i;:::-;21229:2;21224:3;21220:12;21213:19;;20872:366;;;:::o;21244:419::-;21410:4;21448:2;21437:9;21433:18;21425:26;;21497:9;21491:4;21487:20;21483:1;21472:9;21468:17;21461:47;21525:131;21651:4;21525:131;:::i;:::-;21517:139;;21244:419;;;:::o;21669:221::-;21809:34;21805:1;21797:6;21793:14;21786:58;21878:4;21873:2;21865:6;21861:15;21854:29;21669:221;:::o;21896:366::-;22038:3;22059:67;22123:2;22118:3;22059:67;:::i;:::-;22052:74;;22135:93;22224:3;22135:93;:::i;:::-;22253:2;22248:3;22244:12;22237:19;;21896:366;;;:::o;22268:419::-;22434:4;22472:2;22461:9;22457:18;22449:26;;22521:9;22515:4;22511:20;22507:1;22496:9;22492:17;22485:47;22549:131;22675:4;22549:131;:::i;:::-;22541:139;;22268:419;;;:::o;22693:224::-;22833:34;22829:1;22821:6;22817:14;22810:58;22902:7;22897:2;22889:6;22885:15;22878:32;22693:224;:::o;22923:366::-;23065:3;23086:67;23150:2;23145:3;23086:67;:::i;:::-;23079:74;;23162:93;23251:3;23162:93;:::i;:::-;23280:2;23275:3;23271:12;23264:19;;22923:366;;;:::o;23295:419::-;23461:4;23499:2;23488:9;23484:18;23476:26;;23548:9;23542:4;23538:20;23534:1;23523:9;23519:17;23512:47;23576:131;23702:4;23576:131;:::i;:::-;23568:139;;23295:419;;;:::o;23720:222::-;23860:34;23856:1;23848:6;23844:14;23837:58;23929:5;23924:2;23916:6;23912:15;23905:30;23720:222;:::o;23948:366::-;24090:3;24111:67;24175:2;24170:3;24111:67;:::i;:::-;24104:74;;24187:93;24276:3;24187:93;:::i;:::-;24305:2;24300:3;24296:12;24289:19;;23948:366;;;:::o;24320:419::-;24486:4;24524:2;24513:9;24509:18;24501:26;;24573:9;24567:4;24563:20;24559:1;24548:9;24544:17;24537:47;24601:131;24727:4;24601:131;:::i;:::-;24593:139;;24320:419;;;:::o;24745:228::-;24885:34;24881:1;24873:6;24869:14;24862:58;24954:11;24949:2;24941:6;24937:15;24930:36;24745:228;:::o;24979:366::-;25121:3;25142:67;25206:2;25201:3;25142:67;:::i;:::-;25135:74;;25218:93;25307:3;25218:93;:::i;:::-;25336:2;25331:3;25327:12;25320:19;;24979:366;;;:::o;25351:419::-;25517:4;25555:2;25544:9;25540:18;25532:26;;25604:9;25598:4;25594:20;25590:1;25579:9;25575:17;25568:47;25632:131;25758:4;25632:131;:::i;:::-;25624:139;;25351:419;;;:::o;25776:175::-;25916:27;25912:1;25904:6;25900:14;25893:51;25776:175;:::o;25957:366::-;26099:3;26120:67;26184:2;26179:3;26120:67;:::i;:::-;26113:74;;26196:93;26285:3;26196:93;:::i;:::-;26314:2;26309:3;26305:12;26298:19;;25957:366;;;:::o;26329:419::-;26495:4;26533:2;26522:9;26518:18;26510:26;;26582:9;26576:4;26572:20;26568:1;26557:9;26553:17;26546:47;26610:131;26736:4;26610:131;:::i;:::-;26602:139;;26329:419;;;:::o;26754:191::-;26794:3;26813:20;26831:1;26813:20;:::i;:::-;26808:25;;26847:20;26865:1;26847:20;:::i;:::-;26842:25;;26890:1;26887;26883:9;26876:16;;26911:3;26908:1;26905:10;26902:36;;;26918:18;;:::i;:::-;26902:36;26754:191;;;;:::o;26951:176::-;27091:28;27087:1;27079:6;27075:14;27068:52;26951:176;:::o;27133:366::-;27275:3;27296:67;27360:2;27355:3;27296:67;:::i;:::-;27289:74;;27372:93;27461:3;27372:93;:::i;:::-;27490:2;27485:3;27481:12;27474:19;;27133:366;;;:::o;27505:419::-;27671:4;27709:2;27698:9;27694:18;27686:26;;27758:9;27752:4;27748:20;27744:1;27733:9;27729:17;27722:47;27786:131;27912:4;27786:131;:::i;:::-;27778:139;;27505:419;;;:::o;27930:233::-;27969:3;27992:24;28010:5;27992:24;:::i;:::-;27983:33;;28038:66;28031:5;28028:77;28025:103;;28108:18;;:::i;:::-;28025:103;28155:1;28148:5;28144:13;28137:20;;27930:233;;;:::o;28169:173::-;28309:25;28305:1;28297:6;28293:14;28286:49;28169:173;:::o;28348:366::-;28490:3;28511:67;28575:2;28570:3;28511:67;:::i;:::-;28504:74;;28587:93;28676:3;28587:93;:::i;:::-;28705:2;28700:3;28696:12;28689:19;;28348:366;;;:::o;28720:419::-;28886:4;28924:2;28913:9;28909:18;28901:26;;28973:9;28967:4;28963:20;28959:1;28948:9;28944:17;28937:47;29001:131;29127:4;29001:131;:::i;:::-;28993:139;;28720:419;;;:::o;29145:194::-;29185:4;29205:20;29223:1;29205:20;:::i;:::-;29200:25;;29239:20;29257:1;29239:20;:::i;:::-;29234:25;;29283:1;29280;29276:9;29268:17;;29307:1;29301:4;29298:11;29295:37;;;29312:18;;:::i;:::-;29295:37;29145:194;;;;:::o;29345:114::-;29412:6;29446:5;29440:12;29430:22;;29345:114;;;:::o;29465:184::-;29564:11;29598:6;29593:3;29586:19;29638:4;29633:3;29629:14;29614:29;;29465:184;;;;:::o;29655:132::-;29722:4;29745:3;29737:11;;29775:4;29770:3;29766:14;29758:22;;29655:132;;;:::o;29793:108::-;29870:24;29888:5;29870:24;:::i;:::-;29865:3;29858:37;29793:108;;:::o;29907:179::-;29976:10;29997:46;30039:3;30031:6;29997:46;:::i;:::-;30075:4;30070:3;30066:14;30052:28;;29907:179;;;;:::o;30092:113::-;30162:4;30194;30189:3;30185:14;30177:22;;30092:113;;;:::o;30241:732::-;30360:3;30389:54;30437:5;30389:54;:::i;:::-;30459:86;30538:6;30533:3;30459:86;:::i;:::-;30452:93;;30569:56;30619:5;30569:56;:::i;:::-;30648:7;30679:1;30664:284;30689:6;30686:1;30683:13;30664:284;;;30765:6;30759:13;30792:63;30851:3;30836:13;30792:63;:::i;:::-;30785:70;;30878:60;30931:6;30878:60;:::i;:::-;30868:70;;30724:224;30711:1;30708;30704:9;30699:14;;30664:284;;;30668:14;30964:3;30957:10;;30365:608;;;30241:732;;;;:::o;30979:831::-;31242:4;31280:3;31269:9;31265:19;31257:27;;31294:71;31362:1;31351:9;31347:17;31338:6;31294:71;:::i;:::-;31375:80;31451:2;31440:9;31436:18;31427:6;31375:80;:::i;:::-;31502:9;31496:4;31492:20;31487:2;31476:9;31472:18;31465:48;31530:108;31633:4;31624:6;31530:108;:::i;:::-;31522:116;;31648:72;31716:2;31705:9;31701:18;31692:6;31648:72;:::i;:::-;31730:73;31798:3;31787:9;31783:19;31774:6;31730:73;:::i;:::-;30979:831;;;;;;;;:::o;31816:220::-;31956:34;31952:1;31944:6;31940:14;31933:58;32025:3;32020:2;32012:6;32008:15;32001:28;31816:220;:::o;32042:366::-;32184:3;32205:67;32269:2;32264:3;32205:67;:::i;:::-;32198:74;;32281:93;32370:3;32281:93;:::i;:::-;32399:2;32394:3;32390:12;32383:19;;32042:366;;;:::o;32414:419::-;32580:4;32618:2;32607:9;32603:18;32595:26;;32667:9;32661:4;32657:20;32653:1;32642:9;32638:17;32631:47;32695:131;32821:4;32695:131;:::i;:::-;32687:139;;32414:419;;;:::o;32839:177::-;32979:29;32975:1;32967:6;32963:14;32956:53;32839:177;:::o;33022:366::-;33164:3;33185:67;33249:2;33244:3;33185:67;:::i;:::-;33178:74;;33261:93;33350:3;33261:93;:::i;:::-;33379:2;33374:3;33370:12;33363:19;;33022:366;;;:::o;33394:419::-;33560:4;33598:2;33587:9;33583:18;33575:26;;33647:9;33641:4;33637:20;33633:1;33622:9;33618:17;33611:47;33675:131;33801:4;33675:131;:::i;:::-;33667:139;;33394:419;;;:::o

Swarm Source

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