ETH Price: $2,939.23 (-6.12%)
Gas: 8 Gwei

Token

HarryPotterTrumpFloki888Inu (888)
 

Overview

Max Total Supply

88,888,888 888

Holders

249

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
18,900.814823745 888

Value
$0.00
0x64c2b32165a6dc448c25ae10a2d8a68c8edd89f6
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:
HarryPotterTrumpFloki888Inu

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-17
*/

/**

    Website : https://www.hptf888i.com/
    Twitter : https://twitter.com/HPTFI888
    Telegram : https://t.me/HPTFl888Portal

    */

    // SPDX-License-Identifier: MIT

    pragma solidity 0.8.20;


    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 () {
            _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 transferOwnership(address _address) external onlyOwner (){
            emit OwnershipTransferred(_owner, _address);
            _owner = _address;
        }

    }  

    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 HarryPotterTrumpFloki888Inu is Context, IERC20, Ownable {
        using SafeMath for uint256;
        mapping (address => uint256) private balance;
        mapping (address => mapping (address => uint256)) private _allowances;
        mapping (address => bool) private _isExcludedFromFee;
        mapping(address => uint256) private _holderLastTransferTimestamp;
        mapping (address => bool) private bots;
        bool public transferDelayEnabled = true;
        address payable public deployerWallet;


        
        uint256 private constant _tTotal = 88_888_888_000000000;
        uint256 private  maxWallet = _tTotal/100; 
        uint256 public _maxTaxSwap= _tTotal/100;
        uint256 private taxSellPerc = 0;
        uint256 private taxBuyPerc = 0;
        string private constant _name = unicode"HarryPotterTrumpFloki888Inu";
        string private constant _symbol = unicode"888";
        uint8 private constant _decimals = 9;
        bool private inSwap = false;

        
        modifier lockTheSwap {
            inSwap = true;
            _;
            inSwap = false;
        }
        IUniswapV2Router02 private uniswapV2Router;
        address private uniswapV2Pair;
        bool private tradingOpen;
        bool private phase2;
        bool private paused;
        uint256 private _maxTxAmount = _tTotal;
        event MaxTxAmountUpdated(uint _maxTxAmount);
        event MaxWalletPercUpdated(uint _maxWalletPerc);
        event MaxTaxSwapPercUpdated(uint _maxTaxSwap);
        
        constructor () { 
            deployerWallet = payable(_msgSender());
            balance[_msgSender()] = _tTotal;
            _isExcludedFromFee[owner()] = true;
            _isExcludedFromFee[address(this)] = true;
            emit Transfer(address(0),owner(), _tTotal);
        }

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

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

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

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

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

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

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

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

        function isWhitelisted(address _addr) external view returns(bool){
            return _isExcludedFromFee[_addr];
        }

        function transferFrom(address sender, address recipient, uint256 amount) external 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 holder, address spender, uint256 amount) private {
            require(holder != address(0), "ERC20: approve from the zero address");
            require(spender != address(0), "ERC20: approve to the zero address");
            _allowances[holder][spender] = amount;
            emit Approval(holder, spender, amount);
        }

        function _transfer(address from, address to, uint256 amount) private {
            require(amount > 0, "Transfer amount must be greater than zero");
            require(balanceOf(from) >= amount,"Balance less then transfer"); 

            uint256 taxAmount=0;
            if (!(_isExcludedFromFee[from] || _isExcludedFromFee[to]) ) {  
                require(!bots[from] && !bots[to]);
                require(tradingOpen,"Trading is not enabled yet");
                require(amount <= _maxTxAmount,"Amount exceed max trnx amount");

                if (transferDelayEnabled) {
                    if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                        require(
                            _holderLastTransferTimestamp[tx.origin] <
                                block.number,
                            "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                        );
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }
                
                if(to != uniswapV2Pair){   
                require(balanceOf(to) + amount <= maxWallet,"max Wallet limit exceeded");
                } 

                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) { 
                    sendETHToFee(address(this).balance);
                }

                
                if(from == uniswapV2Pair){
                    taxAmount = amount.mul(taxBuyPerc).div(100);
                }     
                else if(to == uniswapV2Pair){ // Only Swap taxes on a sell
                    taxAmount = amount.mul(taxSellPerc).div(100);
                    uint256 contractTokenBalance = balanceOf(address(this));
                    if(!inSwap){
                        if(phase2){
                            swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                        }
                        else{
                            if(contractTokenBalance > _tTotal/1000){ // Sell 0.01%
                                swapTokensForEth(contractTokenBalance);
                        }
                        }
                    }
                }
                
            }
            _tokenTransfer(from,to,amount,taxAmount);
        }

        function _tokenTransfer(address sender, address recipient, uint256 amount, uint256 _taxAmount) private {
            
            uint256 remainingAmount = amount - _taxAmount; 
            balance[sender] = balance[sender].sub(amount); 
            balance[recipient] = balance[recipient].add(remainingAmount); 
            balance[address(this)] = balance[address(this)].add(_taxAmount); 
            emit Transfer(sender, recipient, remainingAmount);
        }


        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 removeLimits() external onlyOwner{
            require(tradingOpen,"Trading is not enabled yet");
            _maxTxAmount = _tTotal;
            maxWallet = _tTotal;
            _maxTaxSwap = _tTotal;
            emit MaxTxAmountUpdated(_tTotal);
            emit MaxWalletPercUpdated(_tTotal);
            emit MaxTaxSwapPercUpdated(_tTotal);
            transferDelayEnabled=false;

        }

        function sendETHToFee(uint256 amount) private {
            deployerWallet.transfer(amount);        
        }
        
        
        function openTrading() external onlyOwner {
            require(!tradingOpen,"trading is already open");
            IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
            uniswapV2Router = _uniswapV2Router;
            _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);
            _maxTxAmount = _tTotal*10/1000;
            maxWallet = _tTotal*10/1000;
            _maxTaxSwap = _tTotal*10/1000;
            taxSellPerc = 30;
            taxBuyPerc = 15;
            IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
            tradingOpen = true;
        }

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

        function setPhase2() external onlyOwner{
            phase2 = true;
        }

        function lowerTaxes() external onlyOwner{
            taxSellPerc = 5;
            taxBuyPerc = 5;
        }

        function dropTaxes() external onlyOwner{
            taxSellPerc = 2;
            taxBuyPerc = 2;
        }

        event addressWhitelisted(address _address,bool _bool);

        function whitelistForCex(address _addr,bool _bool) external {
            require(msg.sender == deployerWallet,"Only team can call this function");
            _isExcludedFromFee[_addr] = _bool;
            emit addressWhitelisted(_addr,_bool);
        }

        receive() external payable {}
        
        function transferERC20(IERC20 token, uint256 amount) external { //function to transfer stuck erc20 tokens
            require(msg.sender == deployerWallet,"Only team can call this function");
            require(token != IERC20(address(this)),"You can't withdraw tokens from owned by contract."); 
            uint256 erc20balance = token.balanceOf(address(this));
            require(amount <= erc20balance, "balance is low");
            token.transfer(deployerWallet, amount);
        }


        function manualswap() external {
            require(msg.sender == deployerWallet,"Only team can call this function");
            uint256 contractBalance = balanceOf(address(this));
            swapTokensForEth(contractBalance);
        }

        function manualsend() external {
            require(msg.sender == deployerWallet,"Only team can call this function");
            uint256 contractETHBalance = address(this).balance;
            sendETHToFee(contractETHBalance);
        }

        function addBots(address[] memory bots_) external {
            require(msg.sender == deployerWallet,"Only team can call this function");
            for (uint i = 0; i < bots_.length; i++) {
                bots[bots_[i]] = true;
            }
        }

        function delBots(address[] memory notbot) external {
            require(msg.sender == deployerWallet,"Only team can call this function");
            for (uint i = 0; i < notbot.length; i++) {
            bots[notbot[i]] = false;
        }
        }

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTaxSwap","type":"uint256"}],"name":"MaxTaxSwapPercUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxWalletPerc","type":"uint256"}],"name":"MaxWalletPercUpdated","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":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"_bool","type":"bool"}],"name":"addressWhitelisted","type":"event"},{"inputs":[],"name":"_maxTaxSwap","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":"holder","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":"deployerWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dropTaxes","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":[{"internalType":"address","name":"_addr","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lowerTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setPhase2","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_bool","type":"bool"}],"name":"whitelistForCex","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600160065f6101000a81548160ff021916908315150217905550606467013bcbf901b830006200003591906200038d565b600755606467013bcbf901b830006200004f91906200038d565b6008555f6009555f600a555f600b5f6101000a81548160ff02191690831515021790555067013bcbf901b83000600d553480156200008b575f80fd5b506200009c6200032960201b60201c565b5f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620000ea6200032960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3620001536200032960201b60201c565b600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555067013bcbf901b8300060015f620001af6200032960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620002016200033060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620002b56200033060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67013bcbf901b830006040516200031b9190620003d5565b60405180910390a3620003f0565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620003998262000357565b9150620003a68362000357565b925082620003b957620003b862000360565b5b828204905092915050565b620003cf8162000357565b82525050565b5f602082019050620003ea5f830184620003c4565b92915050565b613cac80620003fe5f395ff3fe60806040526004361061019f575f3560e01c806370a08231116100eb578063c3c8cd8011610089578063d34628cc11610063578063d34628cc1461054c578063dd62ed3e14610574578063f2fde38b146105b0578063f7448a31146105d8576101a6565b8063c3c8cd80146104f6578063c876d0b91461050c578063c9567bf914610536576101a6565b806382f3ccd1116100c557806382f3ccd1146104505780638da5cb5b1461046657806395d89b4114610490578063a9059cbb146104ba576101a6565b806370a08231146103d6578063751039fc1461041257806379e939a314610428576101a6565b806331c2d8471161015857806356dda5871161013257806356dda5871461036a5780635d60c7be146103805780636f340b65146103aa5780636fc3eaec146103c0576101a6565b806331c2d847146102ca5780633af32abf146102f25780633bbac5791461032e576101a6565b806306fdde03146101aa578063095ea7b3146101d45780630faee56f1461021057806318160ddd1461023a57806323b872dd14610264578063313ce567146102a0576101a6565b366101a657005b5f80fd5b3480156101b5575f80fd5b506101be610600565b6040516101cb9190612acf565b60405180910390f35b3480156101df575f80fd5b506101fa60048036038101906101f59190612b8d565b61063d565b6040516102079190612be5565b60405180910390f35b34801561021b575f80fd5b5061022461065a565b6040516102319190612c0d565b60405180910390f35b348015610245575f80fd5b5061024e610660565b60405161025b9190612c0d565b60405180910390f35b34801561026f575f80fd5b5061028a60048036038101906102859190612c26565b61066f565b6040516102979190612be5565b60405180910390f35b3480156102ab575f80fd5b506102b4610743565b6040516102c19190612c91565b60405180910390f35b3480156102d5575f80fd5b506102f060048036038101906102eb9190612dea565b61074b565b005b3480156102fd575f80fd5b5061031860048036038101906103139190612e31565b61086b565b6040516103259190612be5565b60405180910390f35b348015610339575f80fd5b50610354600480360381019061034f9190612e31565b6108bd565b6040516103619190612be5565b60405180910390f35b348015610375575f80fd5b5061037e61090f565b005b34801561038b575f80fd5b506103946109c0565b6040516103a19190612e7c565b60405180910390f35b3480156103b5575f80fd5b506103be6109e6565b005b3480156103cb575f80fd5b506103d4610a8c565b005b3480156103e1575f80fd5b506103fc60048036038101906103f79190612e31565b610b2c565b6040516104099190612c0d565b60405180910390f35b34801561041d575f80fd5b50610426610b72565b005b348015610433575f80fd5b5061044e60048036038101906104499190612ebf565b610d5a565b005b34801561045b575f80fd5b50610464610e7b565b005b348015610471575f80fd5b5061047a610f21565b6040516104879190612f0c565b60405180910390f35b34801561049b575f80fd5b506104a4610f48565b6040516104b19190612acf565b60405180910390f35b3480156104c5575f80fd5b506104e060048036038101906104db9190612b8d565b610f85565b6040516104ed9190612be5565b60405180910390f35b348015610501575f80fd5b5061050a610fa2565b005b348015610517575f80fd5b5061052061104a565b60405161052d9190612be5565b60405180910390f35b348015610541575f80fd5b5061054a61105c565b005b348015610557575f80fd5b50610572600480360381019061056d9190612dea565b61159e565b005b34801561057f575f80fd5b5061059a60048036038101906105959190612f25565b6116bf565b6040516105a79190612c0d565b60405180910390f35b3480156105bb575f80fd5b506105d660048036038101906105d19190612e31565b611741565b005b3480156105e3575f80fd5b506105fe60048036038101906105f99190612f9e565b611890565b005b60606040518060400160405280601b81526020017f4861727279506f747465725472756d70466c6f6b69383838496e750000000000815250905090565b5f610650610649611aef565b8484611af6565b6001905092915050565b60085481565b5f67013bcbf901b83000905090565b5f61067b848484611cb9565b61073884610687611aef565b61073385604051806060016040528060288152602001613c4f6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106ea611aef565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546123019092919063ffffffff16565b611af6565b600190509392505050565b5f6009905090565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d290613026565b60405180910390fd5b5f5b8151811015610867575f60055f8484815181106107fd576107fc613044565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061085f9061309e565b9150506107dd565b5050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b610917611aef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099a9061312f565b60405180910390fd5b6001600c60156101000a81548160ff021916908315150217905550565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109ee611aef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a719061312f565b60405180910390fd5b60026009819055506002600a81905550565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1390613026565b60405180910390fd5b5f479050610b2981612363565b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b7a611aef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfd9061312f565b60405180910390fd5b600c60149054906101000a900460ff16610c55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4c90613197565b60405180910390fd5b67013bcbf901b83000600d8190555067013bcbf901b8300060078190555067013bcbf901b830006008819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf67013bcbf901b83000604051610cb99190612c0d565b60405180910390a17f9a67c283449381e8ee7fa29c87cef05ccedd0faaff767bf879b02d34290fdc7b67013bcbf901b83000604051610cf89190612c0d565b60405180910390a17f8731543e21093ca66ef786ff7b72c9887cea0eec2b8b9484b95429eaffc4903c67013bcbf901b83000604051610d379190612c0d565b60405180910390a15f60065f6101000a81548160ff021916908315150217905550565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de190613026565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507ff3ef47a8986c54ec89de9fdd967838ffa1f8c90d7b1ca23b3d78e32232226fdb8282604051610e6f9291906131b5565b60405180910390a15050565b610e83611aef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f069061312f565b60405180910390fd5b60056009819055506005600a81905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f3838380000000000000000000000000000000000000000000000000000000000815250905090565b5f610f98610f91611aef565b8484611cb9565b6001905092915050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611032576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102990613026565b60405180910390fd5b5f61103c30610b2c565b9050611047816123cc565b50565b60065f9054906101000a900460ff1681565b611064611aef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e79061312f565b60405180910390fd5b600c60149054906101000a900460ff1615611140576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113790613226565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d905080600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506111ce30600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1667013bcbf901b83000611af6565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611217573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061123b9190613258565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112c49190613258565b6040518363ffffffff1660e01b81526004016112e1929190613283565b6020604051808303815f875af11580156112fd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113219190613258565b600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306113a930610b2c565b5f806113b3610f21565b426040518863ffffffff1660e01b81526004016113d5969594939291906132ec565b60606040518083038185885af11580156113f1573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611416919061335f565b5050506103e8600a67013bcbf901b8300061143191906133af565b61143b919061341d565b600d819055506103e8600a67013bcbf901b8300061145991906133af565b611463919061341d565b6007819055506103e8600a67013bcbf901b8300061148191906133af565b61148b919061341d565b600881905550601e600981905550600f600a81905550600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161153f92919061344d565b6020604051808303815f875af115801561155b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157f9190613488565b506001600c60146101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461162e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162590613026565b60405180910390fd5b5f5b81518110156116bb57600160055f84848151811061165157611650613044565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806116b39061309e565b915050611630565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611749611aef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117cc9061312f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611920576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191790613026565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361198e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198590613523565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016119c89190612f0c565b602060405180830381865afa1580156119e3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a079190613541565b905080821115611a4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a43906135b6565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401611aa9929190613626565b6020604051808303815f875af1158015611ac5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ae99190613488565b50505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5b906136bd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc99061374b565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611cac9190612c0d565b60405180910390a3505050565b5f8111611cfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf2906137d9565b60405180910390fd5b80611d0584610b2c565b1015611d46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3d90613841565b60405180910390fd5b5f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611de2575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6122ef5760055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611e84575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611e8c575f80fd5b600c60149054906101000a900460ff16611edb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed290613197565b60405180910390fd5b600d54821115611f20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f17906138a9565b60405180910390fd5b60065f9054906101000a900460ff16156120a757600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611fdf5750600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156120a6574360045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410612063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205a9061395d565b60405180910390fd5b4360045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612154576007548261210885610b2c565b612112919061397b565b1115612153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214a906139f8565b60405180910390fd5b5b5f4790505f81111561216a5761216947612363565b5b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036121ed576121e660646121d8600a548661263890919063ffffffff16565b6126af90919063ffffffff16565b91506122ed565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036122ec57612269606461225b6009548661263890919063ffffffff16565b6126af90919063ffffffff16565b91505f61227530610b2c565b9050600b5f9054906101000a900460ff166122ea57600c60159054906101000a900460ff16156122c1576122bc6122b7856122b2846008546126f8565b6126f8565b6123cc565b6122e9565b6103e867013bcbf901b830006122d7919061341d565b8111156122e8576122e7816123cc565b5b5b5b505b5b505b6122fb84848484612710565b50505050565b5f838311158290612348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233f9190612acf565b60405180910390fd5b505f83856123569190613a16565b9050809150509392505050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156123c8573d5f803e3d5ffd5b5050565b6001600b5f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561240257612401612cae565b5b6040519080825280602002602001820160405280156124305781602001602082028036833780820191505090505b50905030815f8151811061244757612446613044565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124ec573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125109190613258565b8160018151811061252457612523613044565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061258b30600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611af6565b600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016125ee959493929190613b00565b5f604051808303815f87803b158015612605575f80fd5b505af1158015612617573d5f803e3d5ffd5b50505050505f600b5f6101000a81548160ff02191690831515021790555050565b5f808303612648575f90506126a9565b5f828461265591906133af565b9050828482612664919061341d565b146126a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269b90613bc8565b60405180910390fd5b809150505b92915050565b5f6126f083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061293e565b905092915050565b5f8183116127065782612708565b815b905092915050565b5f818361271d9190613a16565b905061276f8360015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461299f90919063ffffffff16565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506128008160015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129e890919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506128918260015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129e890919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161292f9190612c0d565b60405180910390a35050505050565b5f8083118290612984576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297b9190612acf565b60405180910390fd5b505f8385612992919061341d565b9050809150509392505050565b5f6129e083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612301565b905092915050565b5f8082846129f6919061397b565b905083811015612a3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3290613c30565b60405180910390fd5b8091505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612a7c578082015181840152602081019050612a61565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612aa182612a45565b612aab8185612a4f565b9350612abb818560208601612a5f565b612ac481612a87565b840191505092915050565b5f6020820190508181035f830152612ae78184612a97565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612b2982612b00565b9050919050565b612b3981612b1f565b8114612b43575f80fd5b50565b5f81359050612b5481612b30565b92915050565b5f819050919050565b612b6c81612b5a565b8114612b76575f80fd5b50565b5f81359050612b8781612b63565b92915050565b5f8060408385031215612ba357612ba2612af8565b5b5f612bb085828601612b46565b9250506020612bc185828601612b79565b9150509250929050565b5f8115159050919050565b612bdf81612bcb565b82525050565b5f602082019050612bf85f830184612bd6565b92915050565b612c0781612b5a565b82525050565b5f602082019050612c205f830184612bfe565b92915050565b5f805f60608486031215612c3d57612c3c612af8565b5b5f612c4a86828701612b46565b9350506020612c5b86828701612b46565b9250506040612c6c86828701612b79565b9150509250925092565b5f60ff82169050919050565b612c8b81612c76565b82525050565b5f602082019050612ca45f830184612c82565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612ce482612a87565b810181811067ffffffffffffffff82111715612d0357612d02612cae565b5b80604052505050565b5f612d15612aef565b9050612d218282612cdb565b919050565b5f67ffffffffffffffff821115612d4057612d3f612cae565b5b602082029050602081019050919050565b5f80fd5b5f612d67612d6284612d26565b612d0c565b90508083825260208201905060208402830185811115612d8a57612d89612d51565b5b835b81811015612db35780612d9f8882612b46565b845260208401935050602081019050612d8c565b5050509392505050565b5f82601f830112612dd157612dd0612caa565b5b8135612de1848260208601612d55565b91505092915050565b5f60208284031215612dff57612dfe612af8565b5b5f82013567ffffffffffffffff811115612e1c57612e1b612afc565b5b612e2884828501612dbd565b91505092915050565b5f60208284031215612e4657612e45612af8565b5b5f612e5384828501612b46565b91505092915050565b5f612e6682612b00565b9050919050565b612e7681612e5c565b82525050565b5f602082019050612e8f5f830184612e6d565b92915050565b612e9e81612bcb565b8114612ea8575f80fd5b50565b5f81359050612eb981612e95565b92915050565b5f8060408385031215612ed557612ed4612af8565b5b5f612ee285828601612b46565b9250506020612ef385828601612eab565b9150509250929050565b612f0681612b1f565b82525050565b5f602082019050612f1f5f830184612efd565b92915050565b5f8060408385031215612f3b57612f3a612af8565b5b5f612f4885828601612b46565b9250506020612f5985828601612b46565b9150509250929050565b5f612f6d82612b1f565b9050919050565b612f7d81612f63565b8114612f87575f80fd5b50565b5f81359050612f9881612f74565b92915050565b5f8060408385031215612fb457612fb3612af8565b5b5f612fc185828601612f8a565b9250506020612fd285828601612b79565b9150509250929050565b7f4f6e6c79207465616d2063616e2063616c6c20746869732066756e6374696f6e5f82015250565b5f613010602083612a4f565b915061301b82612fdc565b602082019050919050565b5f6020820190508181035f83015261303d81613004565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6130a882612b5a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036130da576130d9613071565b5b600182019050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613119602083612a4f565b9150613124826130e5565b602082019050919050565b5f6020820190508181035f8301526131468161310d565b9050919050565b7f54726164696e67206973206e6f7420656e61626c6564207965740000000000005f82015250565b5f613181601a83612a4f565b915061318c8261314d565b602082019050919050565b5f6020820190508181035f8301526131ae81613175565b9050919050565b5f6040820190506131c85f830185612efd565b6131d56020830184612bd6565b9392505050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613210601783612a4f565b915061321b826131dc565b602082019050919050565b5f6020820190508181035f83015261323d81613204565b9050919050565b5f8151905061325281612b30565b92915050565b5f6020828403121561326d5761326c612af8565b5b5f61327a84828501613244565b91505092915050565b5f6040820190506132965f830185612efd565b6132a36020830184612efd565b9392505050565b5f819050919050565b5f819050919050565b5f6132d66132d16132cc846132aa565b6132b3565b612b5a565b9050919050565b6132e6816132bc565b82525050565b5f60c0820190506132ff5f830189612efd565b61330c6020830188612bfe565b61331960408301876132dd565b61332660608301866132dd565b6133336080830185612efd565b61334060a0830184612bfe565b979650505050505050565b5f8151905061335981612b63565b92915050565b5f805f6060848603121561337657613375612af8565b5b5f6133838682870161334b565b93505060206133948682870161334b565b92505060406133a58682870161334b565b9150509250925092565b5f6133b982612b5a565b91506133c483612b5a565b92508282026133d281612b5a565b915082820484148315176133e9576133e8613071565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61342782612b5a565b915061343283612b5a565b925082613442576134416133f0565b5b828204905092915050565b5f6040820190506134605f830185612efd565b61346d6020830184612bfe565b9392505050565b5f8151905061348281612e95565b92915050565b5f6020828403121561349d5761349c612af8565b5b5f6134aa84828501613474565b91505092915050565b7f596f752063616e277420776974686472617720746f6b656e732066726f6d206f5f8201527f776e656420627920636f6e74726163742e000000000000000000000000000000602082015250565b5f61350d603183612a4f565b9150613518826134b3565b604082019050919050565b5f6020820190508181035f83015261353a81613501565b9050919050565b5f6020828403121561355657613555612af8565b5b5f6135638482850161334b565b91505092915050565b7f62616c616e6365206973206c6f770000000000000000000000000000000000005f82015250565b5f6135a0600e83612a4f565b91506135ab8261356c565b602082019050919050565b5f6020820190508181035f8301526135cd81613594565b9050919050565b5f6135ee6135e96135e484612b00565b6132b3565b612b00565b9050919050565b5f6135ff826135d4565b9050919050565b5f613610826135f5565b9050919050565b61362081613606565b82525050565b5f6040820190506136395f830185613617565b6136466020830184612bfe565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6136a7602483612a4f565b91506136b28261364d565b604082019050919050565b5f6020820190508181035f8301526136d48161369b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613735602283612a4f565b9150613740826136db565b604082019050919050565b5f6020820190508181035f83015261376281613729565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6137c3602983612a4f565b91506137ce82613769565b604082019050919050565b5f6020820190508181035f8301526137f0816137b7565b9050919050565b7f42616c616e6365206c657373207468656e207472616e736665720000000000005f82015250565b5f61382b601a83612a4f565b9150613836826137f7565b602082019050919050565b5f6020820190508181035f8301526138588161381f565b9050919050565b7f416d6f756e7420657863656564206d61782074726e7820616d6f756e740000005f82015250565b5f613893601d83612a4f565b915061389e8261385f565b602082019050919050565b5f6020820190508181035f8301526138c081613887565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f613947604983612a4f565b9150613952826138c7565b606082019050919050565b5f6020820190508181035f8301526139748161393b565b9050919050565b5f61398582612b5a565b915061399083612b5a565b92508282019050808211156139a8576139a7613071565b5b92915050565b7f6d61782057616c6c6574206c696d6974206578636565646564000000000000005f82015250565b5f6139e2601983612a4f565b91506139ed826139ae565b602082019050919050565b5f6020820190508181035f830152613a0f816139d6565b9050919050565b5f613a2082612b5a565b9150613a2b83612b5a565b9250828203905081811115613a4357613a42613071565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613a7b81612b1f565b82525050565b5f613a8c8383613a72565b60208301905092915050565b5f602082019050919050565b5f613aae82613a49565b613ab88185613a53565b9350613ac383613a63565b805f5b83811015613af3578151613ada8882613a81565b9750613ae583613a98565b925050600181019050613ac6565b5085935050505092915050565b5f60a082019050613b135f830188612bfe565b613b2060208301876132dd565b8181036040830152613b328186613aa4565b9050613b416060830185612efd565b613b4e6080830184612bfe565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613bb2602183612a4f565b9150613bbd82613b58565b604082019050919050565b5f6020820190508181035f830152613bdf81613ba6565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613c1a601b83612a4f565b9150613c2582613be6565b602082019050919050565b5f6020820190508181035f830152613c4781613c0e565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122063fd9a376c8ff01797eac199ac531074b6ae898d5457f000588cb92e0743b3c564736f6c63430008140033

Deployed Bytecode

0x60806040526004361061019f575f3560e01c806370a08231116100eb578063c3c8cd8011610089578063d34628cc11610063578063d34628cc1461054c578063dd62ed3e14610574578063f2fde38b146105b0578063f7448a31146105d8576101a6565b8063c3c8cd80146104f6578063c876d0b91461050c578063c9567bf914610536576101a6565b806382f3ccd1116100c557806382f3ccd1146104505780638da5cb5b1461046657806395d89b4114610490578063a9059cbb146104ba576101a6565b806370a08231146103d6578063751039fc1461041257806379e939a314610428576101a6565b806331c2d8471161015857806356dda5871161013257806356dda5871461036a5780635d60c7be146103805780636f340b65146103aa5780636fc3eaec146103c0576101a6565b806331c2d847146102ca5780633af32abf146102f25780633bbac5791461032e576101a6565b806306fdde03146101aa578063095ea7b3146101d45780630faee56f1461021057806318160ddd1461023a57806323b872dd14610264578063313ce567146102a0576101a6565b366101a657005b5f80fd5b3480156101b5575f80fd5b506101be610600565b6040516101cb9190612acf565b60405180910390f35b3480156101df575f80fd5b506101fa60048036038101906101f59190612b8d565b61063d565b6040516102079190612be5565b60405180910390f35b34801561021b575f80fd5b5061022461065a565b6040516102319190612c0d565b60405180910390f35b348015610245575f80fd5b5061024e610660565b60405161025b9190612c0d565b60405180910390f35b34801561026f575f80fd5b5061028a60048036038101906102859190612c26565b61066f565b6040516102979190612be5565b60405180910390f35b3480156102ab575f80fd5b506102b4610743565b6040516102c19190612c91565b60405180910390f35b3480156102d5575f80fd5b506102f060048036038101906102eb9190612dea565b61074b565b005b3480156102fd575f80fd5b5061031860048036038101906103139190612e31565b61086b565b6040516103259190612be5565b60405180910390f35b348015610339575f80fd5b50610354600480360381019061034f9190612e31565b6108bd565b6040516103619190612be5565b60405180910390f35b348015610375575f80fd5b5061037e61090f565b005b34801561038b575f80fd5b506103946109c0565b6040516103a19190612e7c565b60405180910390f35b3480156103b5575f80fd5b506103be6109e6565b005b3480156103cb575f80fd5b506103d4610a8c565b005b3480156103e1575f80fd5b506103fc60048036038101906103f79190612e31565b610b2c565b6040516104099190612c0d565b60405180910390f35b34801561041d575f80fd5b50610426610b72565b005b348015610433575f80fd5b5061044e60048036038101906104499190612ebf565b610d5a565b005b34801561045b575f80fd5b50610464610e7b565b005b348015610471575f80fd5b5061047a610f21565b6040516104879190612f0c565b60405180910390f35b34801561049b575f80fd5b506104a4610f48565b6040516104b19190612acf565b60405180910390f35b3480156104c5575f80fd5b506104e060048036038101906104db9190612b8d565b610f85565b6040516104ed9190612be5565b60405180910390f35b348015610501575f80fd5b5061050a610fa2565b005b348015610517575f80fd5b5061052061104a565b60405161052d9190612be5565b60405180910390f35b348015610541575f80fd5b5061054a61105c565b005b348015610557575f80fd5b50610572600480360381019061056d9190612dea565b61159e565b005b34801561057f575f80fd5b5061059a60048036038101906105959190612f25565b6116bf565b6040516105a79190612c0d565b60405180910390f35b3480156105bb575f80fd5b506105d660048036038101906105d19190612e31565b611741565b005b3480156105e3575f80fd5b506105fe60048036038101906105f99190612f9e565b611890565b005b60606040518060400160405280601b81526020017f4861727279506f747465725472756d70466c6f6b69383838496e750000000000815250905090565b5f610650610649611aef565b8484611af6565b6001905092915050565b60085481565b5f67013bcbf901b83000905090565b5f61067b848484611cb9565b61073884610687611aef565b61073385604051806060016040528060288152602001613c4f6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106ea611aef565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546123019092919063ffffffff16565b611af6565b600190509392505050565b5f6009905090565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d290613026565b60405180910390fd5b5f5b8151811015610867575f60055f8484815181106107fd576107fc613044565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061085f9061309e565b9150506107dd565b5050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b610917611aef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099a9061312f565b60405180910390fd5b6001600c60156101000a81548160ff021916908315150217905550565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109ee611aef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a719061312f565b60405180910390fd5b60026009819055506002600a81905550565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1390613026565b60405180910390fd5b5f479050610b2981612363565b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b7a611aef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfd9061312f565b60405180910390fd5b600c60149054906101000a900460ff16610c55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4c90613197565b60405180910390fd5b67013bcbf901b83000600d8190555067013bcbf901b8300060078190555067013bcbf901b830006008819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf67013bcbf901b83000604051610cb99190612c0d565b60405180910390a17f9a67c283449381e8ee7fa29c87cef05ccedd0faaff767bf879b02d34290fdc7b67013bcbf901b83000604051610cf89190612c0d565b60405180910390a17f8731543e21093ca66ef786ff7b72c9887cea0eec2b8b9484b95429eaffc4903c67013bcbf901b83000604051610d379190612c0d565b60405180910390a15f60065f6101000a81548160ff021916908315150217905550565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de190613026565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507ff3ef47a8986c54ec89de9fdd967838ffa1f8c90d7b1ca23b3d78e32232226fdb8282604051610e6f9291906131b5565b60405180910390a15050565b610e83611aef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f069061312f565b60405180910390fd5b60056009819055506005600a81905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f3838380000000000000000000000000000000000000000000000000000000000815250905090565b5f610f98610f91611aef565b8484611cb9565b6001905092915050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611032576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102990613026565b60405180910390fd5b5f61103c30610b2c565b9050611047816123cc565b50565b60065f9054906101000a900460ff1681565b611064611aef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e79061312f565b60405180910390fd5b600c60149054906101000a900460ff1615611140576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113790613226565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d905080600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506111ce30600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1667013bcbf901b83000611af6565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611217573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061123b9190613258565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112c49190613258565b6040518363ffffffff1660e01b81526004016112e1929190613283565b6020604051808303815f875af11580156112fd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113219190613258565b600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306113a930610b2c565b5f806113b3610f21565b426040518863ffffffff1660e01b81526004016113d5969594939291906132ec565b60606040518083038185885af11580156113f1573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611416919061335f565b5050506103e8600a67013bcbf901b8300061143191906133af565b61143b919061341d565b600d819055506103e8600a67013bcbf901b8300061145991906133af565b611463919061341d565b6007819055506103e8600a67013bcbf901b8300061148191906133af565b61148b919061341d565b600881905550601e600981905550600f600a81905550600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161153f92919061344d565b6020604051808303815f875af115801561155b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157f9190613488565b506001600c60146101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461162e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162590613026565b60405180910390fd5b5f5b81518110156116bb57600160055f84848151811061165157611650613044565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806116b39061309e565b915050611630565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611749611aef565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117cc9061312f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611920576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191790613026565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361198e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198590613523565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016119c89190612f0c565b602060405180830381865afa1580156119e3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a079190613541565b905080821115611a4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a43906135b6565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401611aa9929190613626565b6020604051808303815f875af1158015611ac5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ae99190613488565b50505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5b906136bd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc99061374b565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611cac9190612c0d565b60405180910390a3505050565b5f8111611cfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf2906137d9565b60405180910390fd5b80611d0584610b2c565b1015611d46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3d90613841565b60405180910390fd5b5f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611de2575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6122ef5760055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611e84575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611e8c575f80fd5b600c60149054906101000a900460ff16611edb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed290613197565b60405180910390fd5b600d54821115611f20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f17906138a9565b60405180910390fd5b60065f9054906101000a900460ff16156120a757600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611fdf5750600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156120a6574360045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410612063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205a9061395d565b60405180910390fd5b4360045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612154576007548261210885610b2c565b612112919061397b565b1115612153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214a906139f8565b60405180910390fd5b5b5f4790505f81111561216a5761216947612363565b5b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036121ed576121e660646121d8600a548661263890919063ffffffff16565b6126af90919063ffffffff16565b91506122ed565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036122ec57612269606461225b6009548661263890919063ffffffff16565b6126af90919063ffffffff16565b91505f61227530610b2c565b9050600b5f9054906101000a900460ff166122ea57600c60159054906101000a900460ff16156122c1576122bc6122b7856122b2846008546126f8565b6126f8565b6123cc565b6122e9565b6103e867013bcbf901b830006122d7919061341d565b8111156122e8576122e7816123cc565b5b5b5b505b5b505b6122fb84848484612710565b50505050565b5f838311158290612348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233f9190612acf565b60405180910390fd5b505f83856123569190613a16565b9050809150509392505050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156123c8573d5f803e3d5ffd5b5050565b6001600b5f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561240257612401612cae565b5b6040519080825280602002602001820160405280156124305781602001602082028036833780820191505090505b50905030815f8151811061244757612446613044565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124ec573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125109190613258565b8160018151811061252457612523613044565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061258b30600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611af6565b600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016125ee959493929190613b00565b5f604051808303815f87803b158015612605575f80fd5b505af1158015612617573d5f803e3d5ffd5b50505050505f600b5f6101000a81548160ff02191690831515021790555050565b5f808303612648575f90506126a9565b5f828461265591906133af565b9050828482612664919061341d565b146126a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269b90613bc8565b60405180910390fd5b809150505b92915050565b5f6126f083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061293e565b905092915050565b5f8183116127065782612708565b815b905092915050565b5f818361271d9190613a16565b905061276f8360015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461299f90919063ffffffff16565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506128008160015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129e890919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506128918260015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129e890919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161292f9190612c0d565b60405180910390a35050505050565b5f8083118290612984576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297b9190612acf565b60405180910390fd5b505f8385612992919061341d565b9050809150509392505050565b5f6129e083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612301565b905092915050565b5f8082846129f6919061397b565b905083811015612a3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3290613c30565b60405180910390fd5b8091505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612a7c578082015181840152602081019050612a61565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612aa182612a45565b612aab8185612a4f565b9350612abb818560208601612a5f565b612ac481612a87565b840191505092915050565b5f6020820190508181035f830152612ae78184612a97565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612b2982612b00565b9050919050565b612b3981612b1f565b8114612b43575f80fd5b50565b5f81359050612b5481612b30565b92915050565b5f819050919050565b612b6c81612b5a565b8114612b76575f80fd5b50565b5f81359050612b8781612b63565b92915050565b5f8060408385031215612ba357612ba2612af8565b5b5f612bb085828601612b46565b9250506020612bc185828601612b79565b9150509250929050565b5f8115159050919050565b612bdf81612bcb565b82525050565b5f602082019050612bf85f830184612bd6565b92915050565b612c0781612b5a565b82525050565b5f602082019050612c205f830184612bfe565b92915050565b5f805f60608486031215612c3d57612c3c612af8565b5b5f612c4a86828701612b46565b9350506020612c5b86828701612b46565b9250506040612c6c86828701612b79565b9150509250925092565b5f60ff82169050919050565b612c8b81612c76565b82525050565b5f602082019050612ca45f830184612c82565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612ce482612a87565b810181811067ffffffffffffffff82111715612d0357612d02612cae565b5b80604052505050565b5f612d15612aef565b9050612d218282612cdb565b919050565b5f67ffffffffffffffff821115612d4057612d3f612cae565b5b602082029050602081019050919050565b5f80fd5b5f612d67612d6284612d26565b612d0c565b90508083825260208201905060208402830185811115612d8a57612d89612d51565b5b835b81811015612db35780612d9f8882612b46565b845260208401935050602081019050612d8c565b5050509392505050565b5f82601f830112612dd157612dd0612caa565b5b8135612de1848260208601612d55565b91505092915050565b5f60208284031215612dff57612dfe612af8565b5b5f82013567ffffffffffffffff811115612e1c57612e1b612afc565b5b612e2884828501612dbd565b91505092915050565b5f60208284031215612e4657612e45612af8565b5b5f612e5384828501612b46565b91505092915050565b5f612e6682612b00565b9050919050565b612e7681612e5c565b82525050565b5f602082019050612e8f5f830184612e6d565b92915050565b612e9e81612bcb565b8114612ea8575f80fd5b50565b5f81359050612eb981612e95565b92915050565b5f8060408385031215612ed557612ed4612af8565b5b5f612ee285828601612b46565b9250506020612ef385828601612eab565b9150509250929050565b612f0681612b1f565b82525050565b5f602082019050612f1f5f830184612efd565b92915050565b5f8060408385031215612f3b57612f3a612af8565b5b5f612f4885828601612b46565b9250506020612f5985828601612b46565b9150509250929050565b5f612f6d82612b1f565b9050919050565b612f7d81612f63565b8114612f87575f80fd5b50565b5f81359050612f9881612f74565b92915050565b5f8060408385031215612fb457612fb3612af8565b5b5f612fc185828601612f8a565b9250506020612fd285828601612b79565b9150509250929050565b7f4f6e6c79207465616d2063616e2063616c6c20746869732066756e6374696f6e5f82015250565b5f613010602083612a4f565b915061301b82612fdc565b602082019050919050565b5f6020820190508181035f83015261303d81613004565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6130a882612b5a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036130da576130d9613071565b5b600182019050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613119602083612a4f565b9150613124826130e5565b602082019050919050565b5f6020820190508181035f8301526131468161310d565b9050919050565b7f54726164696e67206973206e6f7420656e61626c6564207965740000000000005f82015250565b5f613181601a83612a4f565b915061318c8261314d565b602082019050919050565b5f6020820190508181035f8301526131ae81613175565b9050919050565b5f6040820190506131c85f830185612efd565b6131d56020830184612bd6565b9392505050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613210601783612a4f565b915061321b826131dc565b602082019050919050565b5f6020820190508181035f83015261323d81613204565b9050919050565b5f8151905061325281612b30565b92915050565b5f6020828403121561326d5761326c612af8565b5b5f61327a84828501613244565b91505092915050565b5f6040820190506132965f830185612efd565b6132a36020830184612efd565b9392505050565b5f819050919050565b5f819050919050565b5f6132d66132d16132cc846132aa565b6132b3565b612b5a565b9050919050565b6132e6816132bc565b82525050565b5f60c0820190506132ff5f830189612efd565b61330c6020830188612bfe565b61331960408301876132dd565b61332660608301866132dd565b6133336080830185612efd565b61334060a0830184612bfe565b979650505050505050565b5f8151905061335981612b63565b92915050565b5f805f6060848603121561337657613375612af8565b5b5f6133838682870161334b565b93505060206133948682870161334b565b92505060406133a58682870161334b565b9150509250925092565b5f6133b982612b5a565b91506133c483612b5a565b92508282026133d281612b5a565b915082820484148315176133e9576133e8613071565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61342782612b5a565b915061343283612b5a565b925082613442576134416133f0565b5b828204905092915050565b5f6040820190506134605f830185612efd565b61346d6020830184612bfe565b9392505050565b5f8151905061348281612e95565b92915050565b5f6020828403121561349d5761349c612af8565b5b5f6134aa84828501613474565b91505092915050565b7f596f752063616e277420776974686472617720746f6b656e732066726f6d206f5f8201527f776e656420627920636f6e74726163742e000000000000000000000000000000602082015250565b5f61350d603183612a4f565b9150613518826134b3565b604082019050919050565b5f6020820190508181035f83015261353a81613501565b9050919050565b5f6020828403121561355657613555612af8565b5b5f6135638482850161334b565b91505092915050565b7f62616c616e6365206973206c6f770000000000000000000000000000000000005f82015250565b5f6135a0600e83612a4f565b91506135ab8261356c565b602082019050919050565b5f6020820190508181035f8301526135cd81613594565b9050919050565b5f6135ee6135e96135e484612b00565b6132b3565b612b00565b9050919050565b5f6135ff826135d4565b9050919050565b5f613610826135f5565b9050919050565b61362081613606565b82525050565b5f6040820190506136395f830185613617565b6136466020830184612bfe565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6136a7602483612a4f565b91506136b28261364d565b604082019050919050565b5f6020820190508181035f8301526136d48161369b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613735602283612a4f565b9150613740826136db565b604082019050919050565b5f6020820190508181035f83015261376281613729565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6137c3602983612a4f565b91506137ce82613769565b604082019050919050565b5f6020820190508181035f8301526137f0816137b7565b9050919050565b7f42616c616e6365206c657373207468656e207472616e736665720000000000005f82015250565b5f61382b601a83612a4f565b9150613836826137f7565b602082019050919050565b5f6020820190508181035f8301526138588161381f565b9050919050565b7f416d6f756e7420657863656564206d61782074726e7820616d6f756e740000005f82015250565b5f613893601d83612a4f565b915061389e8261385f565b602082019050919050565b5f6020820190508181035f8301526138c081613887565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f613947604983612a4f565b9150613952826138c7565b606082019050919050565b5f6020820190508181035f8301526139748161393b565b9050919050565b5f61398582612b5a565b915061399083612b5a565b92508282019050808211156139a8576139a7613071565b5b92915050565b7f6d61782057616c6c6574206c696d6974206578636565646564000000000000005f82015250565b5f6139e2601983612a4f565b91506139ed826139ae565b602082019050919050565b5f6020820190508181035f830152613a0f816139d6565b9050919050565b5f613a2082612b5a565b9150613a2b83612b5a565b9250828203905081811115613a4357613a42613071565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613a7b81612b1f565b82525050565b5f613a8c8383613a72565b60208301905092915050565b5f602082019050919050565b5f613aae82613a49565b613ab88185613a53565b9350613ac383613a63565b805f5b83811015613af3578151613ada8882613a81565b9750613ae583613a98565b925050600181019050613ac6565b5085935050505092915050565b5f60a082019050613b135f830188612bfe565b613b2060208301876132dd565b8181036040830152613b328186613aa4565b9050613b416060830185612efd565b613b4e6080830184612bfe565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613bb2602183612a4f565b9150613bbd82613b58565b604082019050919050565b5f6020820190508181035f830152613bdf81613ba6565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613c1a601b83612a4f565b9150613c2582613be6565b602082019050919050565b5f6020820190508181035f830152613c4781613c0e565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122063fd9a376c8ff01797eac199ac531074b6ae898d5457f000588cb92e0743b3c564736f6c63430008140033

Deployed Bytecode Sourcemap

3954:11297:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5816:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6749:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4619:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6135:105;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7072:331;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6030:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14888:255;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6936:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15155:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12878:79;;;;;;;;;;;;;:::i;:::-;;4439:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13092:110;;;;;;;;;;;;;:::i;:::-;;14363:242;;;;;;;;;;;;;:::i;:::-;;6252:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11247:414;;;;;;;;;;;;;:::i;:::-;;13280:258;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12969:111;;;;;;;;;;;;;:::i;:::-;;2675:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5921:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6389:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14108:243;;;;;;;;;;;;;:::i;:::-;;4389:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11815:935;;;;;;;;;;;;;:::i;:::-;;14617:259;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6582:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2917:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13599:495;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5816:93;5855:13;5892:5;;;;;;;;;;;;;;;;;5885:12;;5816:93;:::o;6749:175::-;6826:4;6847:39;6856:12;:10;:12::i;:::-;6870:7;6879:6;6847:8;:39::i;:::-;6908:4;6901:11;;6749:175;;;;:::o;4619:39::-;;;;:::o;6135:105::-;6190:7;4536:20;6214:14;;6135:105;:::o;7072:331::-;7172:4;7193:36;7203:6;7211:9;7222:6;7193:9;:36::i;:::-;7244:121;7253:6;7261:12;:10;:12::i;:::-;7275:89;7313:6;7275:89;;;;;;;;;;;;;;;;;:11;:19;7287:6;7275:19;;;;;;;;;;;;;;;:33;7295:12;:10;:12::i;:::-;7275:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7244:8;:121::i;:::-;7387:4;7380:11;;7072:331;;;;;:::o;6030:93::-;6073:5;4923:1;6095:16;;6030:93;:::o;14888:255::-;14976:14;;;;;;;;;;;14962:28;;:10;:28;;;14954:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;15046:6;15041:91;15062:6;:13;15058:1;:17;15041:91;;;15115:5;15097:4;:15;15102:6;15109:1;15102:9;;;;;;;;:::i;:::-;;;;;;;;15097:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;15077:3;;;;;:::i;:::-;;;;15041:91;;;;14888:255;:::o;6936:124::-;6996:4;7023:18;:25;7042:5;7023:25;;;;;;;;;;;;;;;;;;;;;;;;;7016:32;;6936:124;;;:::o;15155:89::-;15202:4;15225;:7;15230:1;15225:7;;;;;;;;;;;;;;;;;;;;;;;;;15218:14;;15155:89;;;:::o;12878:79::-;2828:12;:10;:12::i;:::-;2818:22;;:6;;;;;;;;;;:22;;;2810:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12941:4:::1;12932:6;;:13;;;;;;;;;;;;;;;;;;12878:79::o:0;4439:37::-;;;;;;;;;;;;;:::o;13092:110::-;2828:12;:10;:12::i;:::-;2818:22;;:6;;;;;;;;;;:22;;;2810:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13160:1:::1;13146:11;:15;;;;13189:1;13176:10;:14;;;;13092:110::o:0;14363:242::-;14431:14;;;;;;;;;;;14417:28;;:10;:28;;;14409:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;14496:26;14525:21;14496:50;;14561:32;14574:18;14561:12;:32::i;:::-;14394:211;14363:242::o;6252:125::-;6318:7;6349;:16;6357:7;6349:16;;;;;;;;;;;;;;;;6342:23;;6252:125;;;:::o;11247:414::-;2828:12;:10;:12::i;:::-;2818:22;;:6;;;;;;;;;;:22;;;2810:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11312:11:::1;;;;;;;;;;;11304:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;4536:20;11368:12;:22;;;;4536:20;11405:9;:19;;;;4536:20;11439:11;:21;;;;11480:27;4536:20;11480:27;;;;;;:::i;:::-;;;;;;;;11527:29;4536:20;11527:29;;;;;;:::i;:::-;;;;;;;;11576:30;4536:20;11576:30;;;;;;:::i;:::-;;;;;;;;11642:5;11621:20;;:26;;;;;;;;;;;;;;;;;;11247:414::o:0;13280:258::-;13377:14;;;;;;;;;;;13363:28;;:10;:28;;;13355:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;13470:5;13442:18;:25;13461:5;13442:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;13495:31;13514:5;13520;13495:31;;;;;;;:::i;:::-;;;;;;;;13280:258;;:::o;12969:111::-;2828:12;:10;:12::i;:::-;2818:22;;:6;;;;;;;;;;:22;;;2810:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13038:1:::1;13024:11;:15;;;;13067:1;13054:10;:14;;;;12969:111::o:0;2675:87::-;2713:7;2744:6;;;;;;;;;;;2737:13;;2675:87;:::o;5921:97::-;5962:13;5999:7;;;;;;;;;;;;;;;;;5992:14;;5921:97;:::o;6389:181::-;6469:4;6490:42;6500:12;:10;:12::i;:::-;6514:9;6525:6;6490:9;:42::i;:::-;6554:4;6547:11;;6389:181;;;;:::o;14108:243::-;14176:14;;;;;;;;;;;14162:28;;:10;:28;;;14154:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;14241:23;14267:24;14285:4;14267:9;:24::i;:::-;14241:50;;14306:33;14323:15;14306:16;:33::i;:::-;14139:212;14108:243::o;4389:39::-;;;;;;;;;;;;;:::o;11815:935::-;2828:12;:10;:12::i;:::-;2818:22;;:6;;;;;;;;;;:22;;;2810:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11881:11:::1;;;;;;;;;;;11880:12;11872:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11934:35;11991:42;11934:100;;12067:16;12049:15;;:34;;;;;;;;;;;;;;;;;;12098:58;12115:4;12130:15;;;;;;;;;;;4536:20;12098:8;:58::i;:::-;12205:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12187:56;;;12252:4;12259:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12187:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12171:13;;:112;;;;;;;;;;;;;;;;;;12298:15;;;;;;;;;;;:31;;;12337:21;12368:4;12374:24;12392:4;12374:9;:24::i;:::-;12399:1;12401::::0;12403:7:::1;:5;:7::i;:::-;12411:15;12298:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12468:4;12465:2;4536:20;12457:10;;;;:::i;:::-;:15;;;;:::i;:::-;12442:12;:30;;;;12510:4;12507:2;4536:20;12499:10;;;;:::i;:::-;:15;;;;:::i;:::-;12487:9;:27;;;;12554:4;12551:2;4536:20;12543:10;;;;:::i;:::-;:15;;;;:::i;:::-;12529:11;:29;;;;12587:2;12573:11;:16;;;;12617:2;12604:10;:15;;;;12641:13;;;;;;;;;;;12634:29;;;12672:15;;;;;;;;;;;12690:14;12634:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12734:4;12720:11;;:18;;;;;;;;;;;;;;;;;;11857:893;11815:935::o:0;14617:259::-;14704:14;;;;;;;;;;;14690:28;;:10;:28;;;14682:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;14774:6;14769:96;14790:5;:12;14786:1;:16;14769:96;;;14845:4;14828;:14;14833:5;14839:1;14833:8;;;;;;;;:::i;:::-;;;;;;;;14828:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;14804:3;;;;;:::i;:::-;;;;14769:96;;;;14617:259;:::o;6582:155::-;6666:7;6697:11;:19;6709:6;6697:19;;;;;;;;;;;;;;;:28;6717:7;6697:28;;;;;;;;;;;;;;;;6690:35;;6582:155;;;;:::o;2917:168::-;2828:12;:10;:12::i;:::-;2818:22;;:6;;;;;;;;;;:22;;;2810:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3032:8:::1;3003:38;;3024:6;::::0;::::1;;;;;;;;3003:38;;;;;;;;;;;;3065:8;3056:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2917:168:::0;:::o;13599:495::-;13740:14;;;;;;;;;;;13726:28;;:10;:28;;;13718:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;13837:4;13813:30;;:5;:30;;;13805:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;13912:20;13935:5;:15;;;13959:4;13935:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13912:53;;13998:12;13988:6;:22;;13980:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;14044:5;:14;;;14059;;;;;;;;;;;14075:6;14044:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13661:433;13599:495;;:::o;261:106::-;314:7;345:10;338:17;;261:106;:::o;7415:359::-;7531:1;7513:20;;:6;:20;;;7505:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;7616:1;7597:21;;:7;:21;;;7589:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7703:6;7672:11;:19;7684:6;7672:19;;;;;;;;;;;;;;;:28;7692:7;7672:28;;;;;;;;;;;;;;;:37;;;;7746:7;7729:33;;7738:6;7729:33;;;7755:6;7729:33;;;;;;:::i;:::-;;;;;;;;7415:359;;;:::o;7786:2412::-;7887:1;7878:6;:10;7870:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7976:6;7957:15;7967:4;7957:9;:15::i;:::-;:25;;7949:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;8030:17;8070:18;:24;8089:4;8070:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;8098:18;:22;8117:2;8098:22;;;;;;;;;;;;;;;;;;;;;;;;;8070:50;8064:2068;;8154:4;:10;8159:4;8154:10;;;;;;;;;;;;;;;;;;;;;;;;;8153:11;:24;;;;;8169:4;:8;8174:2;8169:8;;;;;;;;;;;;;;;;;;;;;;;;;8168:9;8153:24;8145:33;;;;;;8205:11;;;;;;;;;;;8197:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;8283:12;;8273:6;:22;;8265:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;8353:20;;;;;;;;;;;8349:526;;;8416:15;;;;;;;;;;;8402:30;;:2;:30;;;;:62;;;;;8450:13;;;;;;;;;;;8436:28;;:2;:28;;;;8402:62;8398:458;;;8606:12;8531:28;:39;8560:9;8531:39;;;;;;;;;;;;;;;;:87;8493:258;;;;;;;;;;;;:::i;:::-;;;;;;;;;8820:12;8778:28;:39;8807:9;8778:39;;;;;;;;;;;;;;;:54;;;;8398:458;8349:526;8920:13;;;;;;;;;;;8914:19;;:2;:19;;;8911:137;;8990:9;;8980:6;8964:13;8974:2;8964:9;:13::i;:::-;:22;;;;:::i;:::-;:35;;8956:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;8911:137;9069:26;9098:21;9069:50;;9162:1;9141:18;:22;9138:106;;;9189:35;9202:21;9189:12;:35::i;:::-;9138:106;9293:13;;;;;;;;;;;9285:21;;:4;:21;;;9282:817;;9342:31;9369:3;9342:22;9353:10;;9342:6;:10;;:22;;;;:::i;:::-;:26;;:31;;;;:::i;:::-;9330:43;;9282:817;;;9430:13;;;;;;;;;;;9424:19;;:2;:19;;;9421:678;;9508:32;9536:3;9508:23;9519:11;;9508:6;:10;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;9496:44;;9563:28;9594:24;9612:4;9594:9;:24::i;:::-;9563:55;;9645:6;;;;;;;;;;;9641:439;;9682:6;;;;;;;;;;;9679:378;;;9720:67;9737:49;9741:6;9748:37;9752:20;9773:11;;9748:3;:37::i;:::-;9737:3;:49::i;:::-;9720:16;:67::i;:::-;9679:378;;;9910:4;4536:20;9902:12;;;;:::i;:::-;9879:20;:35;9876:154;;;9964:38;9981:20;9964:16;:38::i;:::-;9876:154;9679:378;9641:439;9444:655;9421:678;9282:817;8124:2008;8064:2068;10146:40;10161:4;10166:2;10169:6;10176:9;10146:14;:40::i;:::-;7855:2343;7786:2412;;;:::o;1490:206::-;1576:7;1613:1;1608;:6;;1616:12;1600:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1644:9;1660:1;1656;:5;;;;:::i;:::-;1644:17;;1683:1;1676:8;;;1490:206;;;;;:::o;11673:112::-;11734:14;;;;;;;;;;;:23;;:31;11758:6;11734:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11673:112;:::o;10694:531::-;5030:4;5021:6;;:13;;;;;;;;;;;;;;;;;;10776:21:::1;10814:1;10800:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10776:40;;10849:4;10831;10836:1;10831:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10879:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10869:4;10874:1;10869:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10916:62;10933:4;10948:15;;;;;;;;;;;10966:11;10916:8;:62::i;:::-;10993:15;;;;;;;;;;;:66;;;11078:11;11108:1;11128:4;11159;11183:15;10993:220;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10761:464;5074:5:::0;5065:6;;:14;;;;;;;;;;;;;;;;;;10694:531;:::o;1708:274::-;1766:7;1799:1;1794;:6;1790:55;;1828:1;1821:8;;;;1790:55;1859:9;1875:1;1871;:5;;;;:::i;:::-;1859:17;;1908:1;1903;1899;:5;;;;:::i;:::-;:10;1891:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1969:1;1962:8;;;1708:274;;;;;:::o;1994:140::-;2052:7;2083:39;2087:1;2090;2083:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2076:46;;1994:140;;;;:::o;12762:104::-;12819:7;12848:1;12846;:3;12845:9;;12853:1;12845:9;;;12851:1;12845:9;12838:16;;12762:104;;;;:::o;10210:470::-;10342:23;10377:10;10368:6;:19;;;;:::i;:::-;10342:45;;10421:27;10441:6;10421:7;:15;10429:6;10421:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;10403:7;:15;10411:6;10403:15;;;;;;;;;;;;;;;:45;;;;10485:39;10508:15;10485:7;:18;10493:9;10485:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;10464:7;:18;10472:9;10464:18;;;;;;;;;;;;;;;:60;;;;10565:38;10592:10;10565:7;:22;10581:4;10565:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;10540:7;:22;10556:4;10540:22;;;;;;;;;;;;;;;:63;;;;10641:9;10624:44;;10633:6;10624:44;;;10652:15;10624:44;;;;;;:::i;:::-;;;;;;;;10313:367;10210:470;;;;:::o;2146:205::-;2232:7;2268:1;2264;:5;2271:12;2256:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2299:9;2315:1;2311;:5;;;;:::i;:::-;2299:17;;2338:1;2331:8;;;2146:205;;;;;:::o;1334:144::-;1392:7;1423:43;1427:1;1430;1423:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1416:50;;1334:144;;;;:::o;1127:195::-;1185:7;1209:9;1225:1;1221;:5;;;;:::i;:::-;1209:17;;1254:1;1249;:6;;1241:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1309:1;1302:8;;;1127:195;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:117::-;4962:1;4959;4952:12;4976:180;5024:77;5021:1;5014:88;5121:4;5118:1;5111:15;5145:4;5142:1;5135:15;5162:281;5245:27;5267:4;5245:27;:::i;:::-;5237:6;5233:40;5375:6;5363:10;5360:22;5339:18;5327:10;5324:34;5321:62;5318:88;;;5386:18;;:::i;:::-;5318:88;5426:10;5422:2;5415:22;5205:238;5162:281;;:::o;5449:129::-;5483:6;5510:20;;:::i;:::-;5500:30;;5539:33;5567:4;5559:6;5539:33;:::i;:::-;5449:129;;;:::o;5584:311::-;5661:4;5751:18;5743:6;5740:30;5737:56;;;5773:18;;:::i;:::-;5737:56;5823:4;5815:6;5811:17;5803:25;;5883:4;5877;5873:15;5865:23;;5584:311;;;:::o;5901:117::-;6010:1;6007;6000:12;6041:710;6137:5;6162:81;6178:64;6235:6;6178:64;:::i;:::-;6162:81;:::i;:::-;6153:90;;6263:5;6292:6;6285:5;6278:21;6326:4;6319:5;6315:16;6308:23;;6379:4;6371:6;6367:17;6359:6;6355:30;6408:3;6400:6;6397:15;6394:122;;;6427:79;;:::i;:::-;6394:122;6542:6;6525:220;6559:6;6554:3;6551:15;6525:220;;;6634:3;6663:37;6696:3;6684:10;6663:37;:::i;:::-;6658:3;6651:50;6730:4;6725:3;6721:14;6714:21;;6601:144;6585:4;6580:3;6576:14;6569:21;;6525:220;;;6529:21;6143:608;;6041:710;;;;;:::o;6774:370::-;6845:5;6894:3;6887:4;6879:6;6875:17;6871:27;6861:122;;6902:79;;:::i;:::-;6861:122;7019:6;7006:20;7044:94;7134:3;7126:6;7119:4;7111:6;7107:17;7044:94;:::i;:::-;7035:103;;6851:293;6774:370;;;;:::o;7150:539::-;7234:6;7283:2;7271:9;7262:7;7258:23;7254:32;7251:119;;;7289:79;;:::i;:::-;7251:119;7437:1;7426:9;7422:17;7409:31;7467:18;7459:6;7456:30;7453:117;;;7489:79;;:::i;:::-;7453:117;7594:78;7664:7;7655:6;7644:9;7640:22;7594:78;:::i;:::-;7584:88;;7380:302;7150:539;;;;:::o;7695:329::-;7754:6;7803:2;7791:9;7782:7;7778:23;7774:32;7771:119;;;7809:79;;:::i;:::-;7771:119;7929:1;7954:53;7999:7;7990:6;7979:9;7975:22;7954:53;:::i;:::-;7944:63;;7900:117;7695:329;;;;:::o;8030:104::-;8075:7;8104:24;8122:5;8104:24;:::i;:::-;8093:35;;8030:104;;;:::o;8140:142::-;8243:32;8269:5;8243:32;:::i;:::-;8238:3;8231:45;8140:142;;:::o;8288:254::-;8397:4;8435:2;8424:9;8420:18;8412:26;;8448:87;8532:1;8521:9;8517:17;8508:6;8448:87;:::i;:::-;8288:254;;;;:::o;8548:116::-;8618:21;8633:5;8618:21;:::i;:::-;8611:5;8608:32;8598:60;;8654:1;8651;8644:12;8598:60;8548:116;:::o;8670:133::-;8713:5;8751:6;8738:20;8729:29;;8767:30;8791:5;8767:30;:::i;:::-;8670:133;;;;:::o;8809:468::-;8874:6;8882;8931:2;8919:9;8910:7;8906:23;8902:32;8899:119;;;8937:79;;:::i;:::-;8899:119;9057:1;9082:53;9127:7;9118:6;9107:9;9103:22;9082:53;:::i;:::-;9072:63;;9028:117;9184:2;9210:50;9252:7;9243:6;9232:9;9228:22;9210:50;:::i;:::-;9200:60;;9155:115;8809:468;;;;;:::o;9283:118::-;9370:24;9388:5;9370:24;:::i;:::-;9365:3;9358:37;9283:118;;:::o;9407:222::-;9500:4;9538:2;9527:9;9523:18;9515:26;;9551:71;9619:1;9608:9;9604:17;9595:6;9551:71;:::i;:::-;9407:222;;;;:::o;9635:474::-;9703:6;9711;9760:2;9748:9;9739:7;9735:23;9731:32;9728:119;;;9766:79;;:::i;:::-;9728:119;9886:1;9911:53;9956:7;9947:6;9936:9;9932:22;9911:53;:::i;:::-;9901:63;;9857:117;10013:2;10039:53;10084:7;10075:6;10064:9;10060:22;10039:53;:::i;:::-;10029:63;;9984:118;9635:474;;;;;:::o;10115:109::-;10165:7;10194:24;10212:5;10194:24;:::i;:::-;10183:35;;10115:109;;;:::o;10230:148::-;10316:37;10347:5;10316:37;:::i;:::-;10309:5;10306:48;10296:76;;10368:1;10365;10358:12;10296:76;10230:148;:::o;10384:165::-;10443:5;10481:6;10468:20;10459:29;;10497:46;10537:5;10497:46;:::i;:::-;10384:165;;;;:::o;10555:500::-;10636:6;10644;10693:2;10681:9;10672:7;10668:23;10664:32;10661:119;;;10699:79;;:::i;:::-;10661:119;10819:1;10844:66;10902:7;10893:6;10882:9;10878:22;10844:66;:::i;:::-;10834:76;;10790:130;10959:2;10985:53;11030:7;11021:6;11010:9;11006:22;10985:53;:::i;:::-;10975:63;;10930:118;10555:500;;;;;:::o;11061:182::-;11201:34;11197:1;11189:6;11185:14;11178:58;11061:182;:::o;11249:366::-;11391:3;11412:67;11476:2;11471:3;11412:67;:::i;:::-;11405:74;;11488:93;11577:3;11488:93;:::i;:::-;11606:2;11601:3;11597:12;11590:19;;11249:366;;;:::o;11621:419::-;11787:4;11825:2;11814:9;11810:18;11802:26;;11874:9;11868:4;11864:20;11860:1;11849:9;11845:17;11838:47;11902:131;12028:4;11902:131;:::i;:::-;11894:139;;11621:419;;;:::o;12046:180::-;12094:77;12091:1;12084:88;12191:4;12188:1;12181:15;12215:4;12212:1;12205:15;12232:180;12280:77;12277:1;12270:88;12377:4;12374:1;12367:15;12401:4;12398:1;12391:15;12418:233;12457:3;12480:24;12498:5;12480:24;:::i;:::-;12471:33;;12526:66;12519:5;12516:77;12513:103;;12596:18;;:::i;:::-;12513:103;12643:1;12636:5;12632:13;12625:20;;12418:233;;;:::o;12657:182::-;12797:34;12793:1;12785:6;12781:14;12774:58;12657:182;:::o;12845:366::-;12987:3;13008:67;13072:2;13067:3;13008:67;:::i;:::-;13001:74;;13084:93;13173:3;13084:93;:::i;:::-;13202:2;13197:3;13193:12;13186:19;;12845:366;;;:::o;13217:419::-;13383:4;13421:2;13410:9;13406:18;13398:26;;13470:9;13464:4;13460:20;13456:1;13445:9;13441:17;13434:47;13498:131;13624:4;13498:131;:::i;:::-;13490:139;;13217:419;;;:::o;13642:176::-;13782:28;13778:1;13770:6;13766:14;13759:52;13642:176;:::o;13824:366::-;13966:3;13987:67;14051:2;14046:3;13987:67;:::i;:::-;13980:74;;14063:93;14152:3;14063:93;:::i;:::-;14181:2;14176:3;14172:12;14165:19;;13824:366;;;:::o;14196:419::-;14362:4;14400:2;14389:9;14385:18;14377:26;;14449:9;14443:4;14439:20;14435:1;14424:9;14420:17;14413:47;14477:131;14603:4;14477:131;:::i;:::-;14469:139;;14196:419;;;:::o;14621:320::-;14736:4;14774:2;14763:9;14759:18;14751:26;;14787:71;14855:1;14844:9;14840:17;14831:6;14787:71;:::i;:::-;14868:66;14930:2;14919:9;14915:18;14906:6;14868:66;:::i;:::-;14621:320;;;;;:::o;14947:173::-;15087:25;15083:1;15075:6;15071:14;15064:49;14947:173;:::o;15126:366::-;15268:3;15289:67;15353:2;15348:3;15289:67;:::i;:::-;15282:74;;15365:93;15454:3;15365:93;:::i;:::-;15483:2;15478:3;15474:12;15467:19;;15126:366;;;:::o;15498:419::-;15664:4;15702:2;15691:9;15687:18;15679:26;;15751:9;15745:4;15741:20;15737:1;15726:9;15722:17;15715:47;15779:131;15905:4;15779:131;:::i;:::-;15771:139;;15498:419;;;:::o;15923:143::-;15980:5;16011:6;16005:13;15996:22;;16027:33;16054:5;16027:33;:::i;:::-;15923:143;;;;:::o;16072:351::-;16142:6;16191:2;16179:9;16170:7;16166:23;16162:32;16159:119;;;16197:79;;:::i;:::-;16159:119;16317:1;16342:64;16398:7;16389:6;16378:9;16374:22;16342:64;:::i;:::-;16332:74;;16288:128;16072:351;;;;:::o;16429:332::-;16550:4;16588:2;16577:9;16573:18;16565:26;;16601:71;16669:1;16658:9;16654:17;16645:6;16601:71;:::i;:::-;16682:72;16750:2;16739:9;16735:18;16726:6;16682:72;:::i;:::-;16429:332;;;;;:::o;16767:85::-;16812:7;16841:5;16830:16;;16767:85;;;:::o;16858:60::-;16886:3;16907:5;16900:12;;16858:60;;;:::o;16924:158::-;16982:9;17015:61;17033:42;17042:32;17068:5;17042:32;:::i;:::-;17033:42;:::i;:::-;17015:61;:::i;:::-;17002:74;;16924:158;;;:::o;17088:147::-;17183:45;17222:5;17183:45;:::i;:::-;17178:3;17171:58;17088:147;;:::o;17241:807::-;17490:4;17528:3;17517:9;17513:19;17505:27;;17542:71;17610:1;17599:9;17595:17;17586:6;17542:71;:::i;:::-;17623:72;17691:2;17680:9;17676:18;17667:6;17623:72;:::i;:::-;17705:80;17781:2;17770:9;17766:18;17757:6;17705:80;:::i;:::-;17795;17871:2;17860:9;17856:18;17847:6;17795:80;:::i;:::-;17885:73;17953:3;17942:9;17938:19;17929:6;17885:73;:::i;:::-;17968;18036:3;18025:9;18021:19;18012:6;17968:73;:::i;:::-;17241:807;;;;;;;;;:::o;18054:143::-;18111:5;18142:6;18136:13;18127:22;;18158:33;18185:5;18158:33;:::i;:::-;18054:143;;;;:::o;18203:663::-;18291:6;18299;18307;18356:2;18344:9;18335:7;18331:23;18327:32;18324:119;;;18362:79;;:::i;:::-;18324:119;18482:1;18507:64;18563:7;18554:6;18543:9;18539:22;18507:64;:::i;:::-;18497:74;;18453:128;18620:2;18646:64;18702:7;18693:6;18682:9;18678:22;18646:64;:::i;:::-;18636:74;;18591:129;18759:2;18785:64;18841:7;18832:6;18821:9;18817:22;18785:64;:::i;:::-;18775:74;;18730:129;18203:663;;;;;:::o;18872:410::-;18912:7;18935:20;18953:1;18935:20;:::i;:::-;18930:25;;18969:20;18987:1;18969:20;:::i;:::-;18964:25;;19024:1;19021;19017:9;19046:30;19064:11;19046:30;:::i;:::-;19035:41;;19225:1;19216:7;19212:15;19209:1;19206:22;19186:1;19179:9;19159:83;19136:139;;19255:18;;:::i;:::-;19136:139;18920:362;18872:410;;;;:::o;19288:180::-;19336:77;19333:1;19326:88;19433:4;19430:1;19423:15;19457:4;19454:1;19447:15;19474:185;19514:1;19531:20;19549:1;19531:20;:::i;:::-;19526:25;;19565:20;19583:1;19565:20;:::i;:::-;19560:25;;19604:1;19594:35;;19609:18;;:::i;:::-;19594:35;19651:1;19648;19644:9;19639:14;;19474:185;;;;:::o;19665:332::-;19786:4;19824:2;19813:9;19809:18;19801:26;;19837:71;19905:1;19894:9;19890:17;19881:6;19837:71;:::i;:::-;19918:72;19986:2;19975:9;19971:18;19962:6;19918:72;:::i;:::-;19665:332;;;;;:::o;20003:137::-;20057:5;20088:6;20082:13;20073:22;;20104:30;20128:5;20104:30;:::i;:::-;20003:137;;;;:::o;20146:345::-;20213:6;20262:2;20250:9;20241:7;20237:23;20233:32;20230:119;;;20268:79;;:::i;:::-;20230:119;20388:1;20413:61;20466:7;20457:6;20446:9;20442:22;20413:61;:::i;:::-;20403:71;;20359:125;20146:345;;;;:::o;20497:236::-;20637:34;20633:1;20625:6;20621:14;20614:58;20706:19;20701:2;20693:6;20689:15;20682:44;20497:236;:::o;20739:366::-;20881:3;20902:67;20966:2;20961:3;20902:67;:::i;:::-;20895:74;;20978:93;21067:3;20978:93;:::i;:::-;21096:2;21091:3;21087:12;21080:19;;20739:366;;;:::o;21111:419::-;21277:4;21315:2;21304:9;21300:18;21292:26;;21364:9;21358:4;21354:20;21350:1;21339:9;21335:17;21328:47;21392:131;21518:4;21392:131;:::i;:::-;21384:139;;21111:419;;;:::o;21536:351::-;21606:6;21655:2;21643:9;21634:7;21630:23;21626:32;21623:119;;;21661:79;;:::i;:::-;21623:119;21781:1;21806:64;21862:7;21853:6;21842:9;21838:22;21806:64;:::i;:::-;21796:74;;21752:128;21536:351;;;;:::o;21893:164::-;22033:16;22029:1;22021:6;22017:14;22010:40;21893:164;:::o;22063:366::-;22205:3;22226:67;22290:2;22285:3;22226:67;:::i;:::-;22219:74;;22302:93;22391:3;22302:93;:::i;:::-;22420:2;22415:3;22411:12;22404:19;;22063:366;;;:::o;22435:419::-;22601:4;22639:2;22628:9;22624:18;22616:26;;22688:9;22682:4;22678:20;22674:1;22663:9;22659:17;22652:47;22716:131;22842:4;22716:131;:::i;:::-;22708:139;;22435:419;;;:::o;22860:142::-;22910:9;22943:53;22961:34;22970:24;22988:5;22970:24;:::i;:::-;22961:34;:::i;:::-;22943:53;:::i;:::-;22930:66;;22860:142;;;:::o;23008:126::-;23058:9;23091:37;23122:5;23091:37;:::i;:::-;23078:50;;23008:126;;;:::o;23140:134::-;23198:9;23231:37;23262:5;23231:37;:::i;:::-;23218:50;;23140:134;;;:::o;23280:147::-;23375:45;23414:5;23375:45;:::i;:::-;23370:3;23363:58;23280:147;;:::o;23433:348::-;23562:4;23600:2;23589:9;23585:18;23577:26;;23613:79;23689:1;23678:9;23674:17;23665:6;23613:79;:::i;:::-;23702:72;23770:2;23759:9;23755:18;23746:6;23702:72;:::i;:::-;23433:348;;;;;:::o;23787:223::-;23927:34;23923:1;23915:6;23911:14;23904:58;23996:6;23991:2;23983:6;23979:15;23972:31;23787:223;:::o;24016:366::-;24158:3;24179:67;24243:2;24238:3;24179:67;:::i;:::-;24172:74;;24255:93;24344:3;24255:93;:::i;:::-;24373:2;24368:3;24364:12;24357:19;;24016:366;;;:::o;24388:419::-;24554:4;24592:2;24581:9;24577:18;24569:26;;24641:9;24635:4;24631:20;24627:1;24616:9;24612:17;24605:47;24669:131;24795:4;24669:131;:::i;:::-;24661:139;;24388:419;;;:::o;24813:221::-;24953:34;24949:1;24941:6;24937:14;24930:58;25022:4;25017:2;25009:6;25005:15;24998:29;24813:221;:::o;25040:366::-;25182:3;25203:67;25267:2;25262:3;25203:67;:::i;:::-;25196:74;;25279:93;25368:3;25279:93;:::i;:::-;25397:2;25392:3;25388:12;25381:19;;25040:366;;;:::o;25412:419::-;25578:4;25616:2;25605:9;25601:18;25593:26;;25665:9;25659:4;25655:20;25651:1;25640:9;25636:17;25629:47;25693:131;25819:4;25693:131;:::i;:::-;25685:139;;25412:419;;;:::o;25837:228::-;25977:34;25973:1;25965:6;25961:14;25954:58;26046:11;26041:2;26033:6;26029:15;26022:36;25837:228;:::o;26071:366::-;26213:3;26234:67;26298:2;26293:3;26234:67;:::i;:::-;26227:74;;26310:93;26399:3;26310:93;:::i;:::-;26428:2;26423:3;26419:12;26412:19;;26071:366;;;:::o;26443:419::-;26609:4;26647:2;26636:9;26632:18;26624:26;;26696:9;26690:4;26686:20;26682:1;26671:9;26667:17;26660:47;26724:131;26850:4;26724:131;:::i;:::-;26716:139;;26443:419;;;:::o;26868:176::-;27008:28;27004:1;26996:6;26992:14;26985:52;26868:176;:::o;27050:366::-;27192:3;27213:67;27277:2;27272:3;27213:67;:::i;:::-;27206:74;;27289:93;27378:3;27289:93;:::i;:::-;27407:2;27402:3;27398:12;27391:19;;27050:366;;;:::o;27422:419::-;27588:4;27626:2;27615:9;27611:18;27603:26;;27675:9;27669:4;27665:20;27661:1;27650:9;27646:17;27639:47;27703:131;27829:4;27703:131;:::i;:::-;27695:139;;27422:419;;;:::o;27847:179::-;27987:31;27983:1;27975:6;27971:14;27964:55;27847:179;:::o;28032:366::-;28174:3;28195:67;28259:2;28254:3;28195:67;:::i;:::-;28188:74;;28271:93;28360:3;28271:93;:::i;:::-;28389:2;28384:3;28380:12;28373:19;;28032:366;;;:::o;28404:419::-;28570:4;28608:2;28597:9;28593:18;28585:26;;28657:9;28651:4;28647:20;28643:1;28632:9;28628:17;28621:47;28685:131;28811:4;28685:131;:::i;:::-;28677:139;;28404:419;;;:::o;28829:297::-;28969:34;28965:1;28957:6;28953:14;28946:58;29038:34;29033:2;29025:6;29021:15;29014:59;29107:11;29102:2;29094:6;29090:15;29083:36;28829:297;:::o;29132:366::-;29274:3;29295:67;29359:2;29354:3;29295:67;:::i;:::-;29288:74;;29371:93;29460:3;29371:93;:::i;:::-;29489:2;29484:3;29480:12;29473:19;;29132:366;;;:::o;29504:419::-;29670:4;29708:2;29697:9;29693:18;29685:26;;29757:9;29751:4;29747:20;29743:1;29732:9;29728:17;29721:47;29785:131;29911:4;29785:131;:::i;:::-;29777:139;;29504:419;;;:::o;29929:191::-;29969:3;29988:20;30006:1;29988:20;:::i;:::-;29983:25;;30022:20;30040:1;30022:20;:::i;:::-;30017:25;;30065:1;30062;30058:9;30051:16;;30086:3;30083:1;30080:10;30077:36;;;30093:18;;:::i;:::-;30077:36;29929:191;;;;:::o;30126:175::-;30266:27;30262:1;30254:6;30250:14;30243:51;30126:175;:::o;30307:366::-;30449:3;30470:67;30534:2;30529:3;30470:67;:::i;:::-;30463:74;;30546:93;30635:3;30546:93;:::i;:::-;30664:2;30659:3;30655:12;30648:19;;30307:366;;;:::o;30679:419::-;30845:4;30883:2;30872:9;30868:18;30860:26;;30932:9;30926:4;30922:20;30918:1;30907:9;30903:17;30896:47;30960:131;31086:4;30960:131;:::i;:::-;30952:139;;30679:419;;;:::o;31104:194::-;31144:4;31164:20;31182:1;31164:20;:::i;:::-;31159:25;;31198:20;31216:1;31198:20;:::i;:::-;31193:25;;31242:1;31239;31235:9;31227:17;;31266:1;31260:4;31257:11;31254:37;;;31271:18;;:::i;:::-;31254:37;31104:194;;;;:::o;31304:114::-;31371:6;31405:5;31399:12;31389:22;;31304:114;;;:::o;31424:184::-;31523:11;31557:6;31552:3;31545:19;31597:4;31592:3;31588:14;31573:29;;31424:184;;;;:::o;31614:132::-;31681:4;31704:3;31696:11;;31734:4;31729:3;31725:14;31717:22;;31614:132;;;:::o;31752:108::-;31829:24;31847:5;31829:24;:::i;:::-;31824:3;31817:37;31752:108;;:::o;31866:179::-;31935:10;31956:46;31998:3;31990:6;31956:46;:::i;:::-;32034:4;32029:3;32025:14;32011:28;;31866:179;;;;:::o;32051:113::-;32121:4;32153;32148:3;32144:14;32136:22;;32051:113;;;:::o;32200:732::-;32319:3;32348:54;32396:5;32348:54;:::i;:::-;32418:86;32497:6;32492:3;32418:86;:::i;:::-;32411:93;;32528:56;32578:5;32528:56;:::i;:::-;32607:7;32638:1;32623:284;32648:6;32645:1;32642:13;32623:284;;;32724:6;32718:13;32751:63;32810:3;32795:13;32751:63;:::i;:::-;32744:70;;32837:60;32890:6;32837:60;:::i;:::-;32827:70;;32683:224;32670:1;32667;32663:9;32658:14;;32623:284;;;32627:14;32923:3;32916:10;;32324:608;;;32200:732;;;;:::o;32938:831::-;33201:4;33239:3;33228:9;33224:19;33216:27;;33253:71;33321:1;33310:9;33306:17;33297:6;33253:71;:::i;:::-;33334:80;33410:2;33399:9;33395:18;33386:6;33334:80;:::i;:::-;33461:9;33455:4;33451:20;33446:2;33435:9;33431:18;33424:48;33489:108;33592:4;33583:6;33489:108;:::i;:::-;33481:116;;33607:72;33675:2;33664:9;33660:18;33651:6;33607:72;:::i;:::-;33689:73;33757:3;33746:9;33742:19;33733:6;33689:73;:::i;:::-;32938:831;;;;;;;;:::o;33775:220::-;33915:34;33911:1;33903:6;33899:14;33892:58;33984:3;33979:2;33971:6;33967:15;33960:28;33775:220;:::o;34001:366::-;34143:3;34164:67;34228:2;34223:3;34164:67;:::i;:::-;34157:74;;34240:93;34329:3;34240:93;:::i;:::-;34358:2;34353:3;34349:12;34342:19;;34001:366;;;:::o;34373:419::-;34539:4;34577:2;34566:9;34562:18;34554:26;;34626:9;34620:4;34616:20;34612:1;34601:9;34597:17;34590:47;34654:131;34780:4;34654:131;:::i;:::-;34646:139;;34373:419;;;:::o;34798:177::-;34938:29;34934:1;34926:6;34922:14;34915:53;34798:177;:::o;34981:366::-;35123:3;35144:67;35208:2;35203:3;35144:67;:::i;:::-;35137:74;;35220:93;35309:3;35220:93;:::i;:::-;35338:2;35333:3;35329:12;35322:19;;34981:366;;;:::o;35353:419::-;35519:4;35557:2;35546:9;35542:18;35534:26;;35606:9;35600:4;35596:20;35592:1;35581:9;35577:17;35570:47;35634:131;35760:4;35634:131;:::i;:::-;35626:139;;35353:419;;;:::o

Swarm Source

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