ETH Price: $3,431.51 (+3.97%)

Token

frogby (frogby)
 

Overview

Max Total Supply

420,690,000,000 frogby

Holders

176

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0 frogby

Value
$0.00
0x2a14724b295319d9a418d728f9b18cee5ea90f32
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:
frogby

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-07-31
*/

/*

frogby - frogby

Frogby is a little known original piece of art made by Matt Furie in 2005.
One of the earliest frogs actually given a name – securing it a spot in Furie Hall of Fame.

TG: https://t.me/frogbyerc

Twitter: https://x.com/frogbyerc

Website: https://frogby.vip

*/


// SPDX-License-Identifier: UNLICENSE

pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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

}

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

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

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

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

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

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

    uint256 private _initialBuyTax=21;
    uint256 private _initialSellTax=21;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;
    uint256 private _reduceBuyTaxAt=21;
    uint256 private _reduceSellTaxAt=21;
    uint256 private _preventSwapBefore=23;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 420690000000 * 10**_decimals;
    string private constant _name = unicode"frogby";
    string private constant _symbol = unicode"frogby";
    uint256 public _maxTxAmount = _tTotal;
    uint256 public _maxWalletSize = _tTotal;
    uint256 private _initMaxWalletAndTx = 9675870000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 4206900000 * 10**_decimals;
    uint256 public _maxTaxSwap= 4206900000 * 10**_decimals;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;
    event MaxTxAmountUpdated(uint _maxTxAmount);

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

            taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                _buyCount++;
            }

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

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

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


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

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

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

    function addLimit() external onlyOwner{
        _maxTxAmount = _initMaxWalletAndTx;
        _maxWalletSize = _initMaxWalletAndTx;
        emit MaxTxAmountUpdated(_initMaxWalletAndTx);
    }

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

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

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

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

    function openTrading() external payable onlyOwner() {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
    }
    
    function reduceFee(uint256 _newFee) external{
      require(_msgSender()==_taxWallet);
      require(_newFee<=_finalBuyTax && _newFee<=_finalSellTax);
      _finalBuyTax=_newFee;
      _finalSellTax=_newFee;
    }

    receive() external payable {}

    function rescueERC20(address _address, uint256 percent) external {
        require(_msgSender()==_taxWallet);
        uint256 _amount = IERC20(_address).balanceOf(address(this)).mul(percent).div(100);
        IERC20(_address).transfer(_taxWallet, _amount);
    }

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

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":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBotp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"delBotp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimitp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052601560065560156007555f6008555f6009556015600a556015600b556017600c555f600d556009600a61003791906105be565b6461f313f8806100479190610608565b600e556009600a61005891906105be565b6461f313f8806100689190610608565b600f556009600a61007991906105be565b640240ba0f306100899190610608565b6010556009600a61009a91906105be565b63fac033206100a99190610608565b6011556009600a6100ba91906105be565b63fac033206100c99190610608565b6012555f601460156101000a81548160ff0219169083151502179055505f601460166101000a81548160ff0219169083151502179055505f6015555f601655348015610113575f80fd5b505f61012361041f60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506101cd61041f60201b60201c565b60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a61021a91906105be565b6461f313f88061022a9190610608565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f61027e61042660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6103f591906105be565b6461f313f8806104059190610608565b6040516104129190610658565b60405180910390a3610671565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156104cf578086048111156104ab576104aa61044d565b5b60018516156104ba5780820291505b80810290506104c88561047a565b945061048f565b94509492505050565b5f826104e757600190506105a2565b816104f4575f90506105a2565b816001811461050a576002811461051457610543565b60019150506105a2565b60ff8411156105265761052561044d565b5b8360020a91508482111561053d5761053c61044d565b5b506105a2565b5060208310610133831016604e8410600b84101617156105785782820a9050838111156105735761057261044d565b5b6105a2565b6105858484846001610486565b9250905081840481111561059c5761059b61044d565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6105c8826105a9565b91506105d3836105b2565b92506106007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846104d8565b905092915050565b5f610612826105a9565b915061061d836105a9565b925082820261062b816105a9565b915082820484148315176106425761064161044d565b5b5092915050565b610652816105a9565b82525050565b5f60208201905061066b5f830184610649565b92915050565b61391f8061067e5f395ff3fe608060405260043610610169575f3560e01c80637d1db4a5116100d0578063a9059cbb11610089578063dd62ed3e11610063578063dd62ed3e146104cc578063dfa2f6f114610508578063ec1f3f6314610530578063f2fde38b1461055857610170565b8063a9059cbb1461045c578063bf474bed14610498578063c9567bf9146104c257610170565b80637d1db4a5146103645780638cd4426d1461038e5780638da5cb5b146103b65780638f9a55c0146103e0578063914137001461040a57806395d89b411461043257610170565b8063313ce56711610122578063313ce567146102805780633a9e962a146102aa5780633bbac579146102c057806351bc3c85146102fc57806370a0823114610312578063715018a61461034e57610170565b806306fdde0314610174578063095ea7b31461019e5780630faee56f146101da57806318160ddd146102045780632241bdc41461022e57806323b872dd1461024457610170565b3661017057005b5f80fd5b34801561017f575f80fd5b50610188610580565b6040516101959190612827565b60405180910390f35b3480156101a9575f80fd5b506101c460048036038101906101bf91906128e5565b6105bd565b6040516101d1919061293d565b60405180910390f35b3480156101e5575f80fd5b506101ee6105da565b6040516101fb9190612965565b60405180910390f35b34801561020f575f80fd5b506102186105e0565b6040516102259190612965565b60405180910390f35b348015610239575f80fd5b50610242610604565b005b34801561024f575f80fd5b5061026a6004803603810190610265919061297e565b610736565b604051610277919061293d565b60405180910390f35b34801561028b575f80fd5b5061029461080a565b6040516102a191906129e9565b60405180910390f35b3480156102b5575f80fd5b506102be610812565b005b3480156102cb575f80fd5b506102e660048036038101906102e19190612a02565b6108f3565b6040516102f3919061293d565b60405180910390f35b348015610307575f80fd5b50610310610945565b005b34801561031d575f80fd5b5061033860048036038101906103339190612a02565b6109f4565b6040516103459190612965565b60405180910390f35b348015610359575f80fd5b50610362610a3a565b005b34801561036f575f80fd5b50610378610b88565b6040516103859190612965565b60405180910390f35b348015610399575f80fd5b506103b460048036038101906103af91906128e5565b610b8e565b005b3480156103c1575f80fd5b506103ca610d2f565b6040516103d79190612a3c565b60405180910390f35b3480156103eb575f80fd5b506103f4610d56565b6040516104019190612965565b60405180910390f35b348015610415575f80fd5b50610430600480360381019061042b9190612b95565b610d5c565b005b34801561043d575f80fd5b50610446610e7a565b6040516104539190612827565b60405180910390f35b348015610467575f80fd5b50610482600480360381019061047d91906128e5565b610eb7565b60405161048f919061293d565b60405180910390f35b3480156104a3575f80fd5b506104ac610ed4565b6040516104b99190612965565b60405180910390f35b6104ca610eda565b005b3480156104d7575f80fd5b506104f260048036038101906104ed9190612bdc565b6113fa565b6040516104ff9190612965565b60405180910390f35b348015610513575f80fd5b5061052e60048036038101906105299190612b95565b61147c565b005b34801561053b575f80fd5b5061055660048036038101906105519190612c1a565b61159b565b005b348015610563575f80fd5b5061057e60048036038101906105799190612a02565b611627565b005b60606040518060400160405280600681526020017f66726f6762790000000000000000000000000000000000000000000000000000815250905090565b5f6105d06105c9611776565b848461177d565b6001905092915050565b60125481565b5f6009600a6105ef9190612da1565b6461f313f8806105ff9190612deb565b905090565b61060c611776565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610698576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068f90612e76565b60405180910390fd5b6009600a6106a69190612da1565b6461f313f8806106b69190612deb565b600e819055506009600a6106ca9190612da1565b6461f313f8806106da9190612deb565b600f819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a61070f9190612da1565b6461f313f88061071f9190612deb565b60405161072c9190612965565b60405180910390a1565b5f610742848484611940565b6107ff8461074e611776565b6107fa856040518060600160405280602881526020016138c26028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6107b1611776565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122a39092919063ffffffff16565b61177d565b600190509392505050565b5f6009905090565b61081a611776565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089d90612e76565b60405180910390fd5b601054600e81905550601054600f819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6010546040516108e99190612965565b60405180910390a1565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610985611776565b73ffffffffffffffffffffffffffffffffffffffff16146109a4575f80fd5b5f6109ae306109f4565b90505f811180156109cb5750601460169054906101000a900460ff165b156109da576109d981612305565b5b5f4790505f8111156109f0576109ef81612570565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610a42611776565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ace576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac590612e76565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600e5481565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bce611776565b73ffffffffffffffffffffffffffffffffffffffff1614610bed575f80fd5b5f610c8b6064610c7d848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c309190612a3c565b602060405180830381865afa158015610c4b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c6f9190612ea8565b6125d890919063ffffffff16565b61264f90919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610ce9929190612f2e565b6020604051808303815f875af1158015610d05573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d299190612f7f565b50505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b610d64611776565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de790612e76565b60405180910390fd5b5f5b8151811015610e76575f60045f848481518110610e1257610e11612faa565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610df2565b5050565b60606040518060400160405280600681526020017f66726f6762790000000000000000000000000000000000000000000000000000815250905090565b5f610eca610ec3611776565b8484611940565b6001905092915050565b60115481565b610ee2611776565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6590612e76565b60405180910390fd5b60148054906101000a900460ff1615610fbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb390613021565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506110593060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6110449190612da1565b6461f313f8806110549190612deb565b61177d565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e79190613053565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561116d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111919190613053565b6040518363ffffffff1660e01b81526004016111ae92919061307e565b6020604051808303815f875af11580156111ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111ee9190613053565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430611275306109f4565b5f8061127f610d2f565b426040518863ffffffff1660e01b81526004016112a1969594939291906130de565b60606040518083038185885af11580156112bd573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112e2919061313d565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161138292919061318d565b6020604051808303815f875af115801561139e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113c29190612f7f565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611484611776565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611510576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150790612e76565b60405180910390fd5b5f5b815181101561159757600160045f84848151811061153357611532612faa565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611512565b5050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115db611776565b73ffffffffffffffffffffffffffffffffffffffff16146115fa575f80fd5b600854811115801561160e57506009548111155b611616575f80fd5b806008819055508060098190555050565b61162f611776565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b290612e76565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e290613224565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611859576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611850906132b2565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119339190612965565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a590613340565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a13906133ce565b60405180910390fd5b5f8111611a5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a559061345c565b60405180910390fd5b5f611a67610d2f565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611ad55750611aa5610d2f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b2e575060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ff35760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611bd1575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611bd9575f80fd5b611c156064611c07600a54600d5411611bf457600654611bf8565b6008545b856125d890919063ffffffff16565b61264f90919063ffffffff16565b905060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611cc0575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d13575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611dcd57600e54821115611d5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d54906134c4565b60405180910390fd5b600f5482611d6a856109f4565b611d7491906134e2565b1115611db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dac9061355f565b60405180910390fd5b600d5f815480929190611dc79061357d565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611e5557503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611e9957611e966064611e88600b54600d5411611e7557600754611e79565b6009545b856125d890919063ffffffff16565b61264f90919063ffffffff16565b90505b5f611ea3306109f4565b9050601460159054906101000a900460ff16158015611f0e575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611f265750601460169054906101000a900460ff165b8015611f33575060115481115b8015611f425750600c54600d54115b15611ff157601654431115611f59575f6015819055505b600360155410611f9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f959061360e565b60405180910390fd5b611fbb611fb684611fb184601254612698565b612698565b612305565b5f4790505f811115611fd157611fd047612570565b5b60155f815480929190611fe39061357d565b919050555043601681905550505b505b5f8111156120f25761204b8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126b090919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120e99190612965565b60405180910390a35b6121428260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461270d90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506121e5612199828461270d90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126b090919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612288848661270d90919063ffffffff16565b6040516122959190612965565b60405180910390a350505050565b5f8383111582906122ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e19190612827565b60405180910390fd5b505f83856122f8919061362c565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561233c5761233b612a59565b5b60405190808252806020026020018201604052801561236a5781602001602082028036833780820191505090505b50905030815f8151811061238157612380612faa565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612425573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124499190613053565b8160018151811061245d5761245c612faa565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124c33060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461177d565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612525959493929190613716565b5f604051808303815f87803b15801561253c575f80fd5b505af115801561254e573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156125d4573d5f803e3d5ffd5b5050565b5f8083036125e8575f9050612649565b5f82846125f59190612deb565b9050828482612604919061379b565b14612644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263b9061383b565b60405180910390fd5b809150505b92915050565b5f61269083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612756565b905092915050565b5f8183116126a657826126a8565b815b905092915050565b5f8082846126be91906134e2565b905083811015612703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fa906138a3565b60405180910390fd5b8091505092915050565b5f61274e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122a3565b905092915050565b5f808311829061279c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127939190612827565b60405180910390fd5b505f83856127aa919061379b565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6127f9826127b7565b61280381856127c1565b93506128138185602086016127d1565b61281c816127df565b840191505092915050565b5f6020820190508181035f83015261283f81846127ef565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61288182612858565b9050919050565b61289181612877565b811461289b575f80fd5b50565b5f813590506128ac81612888565b92915050565b5f819050919050565b6128c4816128b2565b81146128ce575f80fd5b50565b5f813590506128df816128bb565b92915050565b5f80604083850312156128fb576128fa612850565b5b5f6129088582860161289e565b9250506020612919858286016128d1565b9150509250929050565b5f8115159050919050565b61293781612923565b82525050565b5f6020820190506129505f83018461292e565b92915050565b61295f816128b2565b82525050565b5f6020820190506129785f830184612956565b92915050565b5f805f6060848603121561299557612994612850565b5b5f6129a28682870161289e565b93505060206129b38682870161289e565b92505060406129c4868287016128d1565b9150509250925092565b5f60ff82169050919050565b6129e3816129ce565b82525050565b5f6020820190506129fc5f8301846129da565b92915050565b5f60208284031215612a1757612a16612850565b5b5f612a248482850161289e565b91505092915050565b612a3681612877565b82525050565b5f602082019050612a4f5f830184612a2d565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612a8f826127df565b810181811067ffffffffffffffff82111715612aae57612aad612a59565b5b80604052505050565b5f612ac0612847565b9050612acc8282612a86565b919050565b5f67ffffffffffffffff821115612aeb57612aea612a59565b5b602082029050602081019050919050565b5f80fd5b5f612b12612b0d84612ad1565b612ab7565b90508083825260208201905060208402830185811115612b3557612b34612afc565b5b835b81811015612b5e5780612b4a888261289e565b845260208401935050602081019050612b37565b5050509392505050565b5f82601f830112612b7c57612b7b612a55565b5b8135612b8c848260208601612b00565b91505092915050565b5f60208284031215612baa57612ba9612850565b5b5f82013567ffffffffffffffff811115612bc757612bc6612854565b5b612bd384828501612b68565b91505092915050565b5f8060408385031215612bf257612bf1612850565b5b5f612bff8582860161289e565b9250506020612c108582860161289e565b9150509250929050565b5f60208284031215612c2f57612c2e612850565b5b5f612c3c848285016128d1565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612cc757808604811115612ca357612ca2612c45565b5b6001851615612cb25780820291505b8081029050612cc085612c72565b9450612c87565b94509492505050565b5f82612cdf5760019050612d9a565b81612cec575f9050612d9a565b8160018114612d025760028114612d0c57612d3b565b6001915050612d9a565b60ff841115612d1e57612d1d612c45565b5b8360020a915084821115612d3557612d34612c45565b5b50612d9a565b5060208310610133831016604e8410600b8410161715612d705782820a905083811115612d6b57612d6a612c45565b5b612d9a565b612d7d8484846001612c7e565b92509050818404811115612d9457612d93612c45565b5b81810290505b9392505050565b5f612dab826128b2565b9150612db6836129ce565b9250612de37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612cd0565b905092915050565b5f612df5826128b2565b9150612e00836128b2565b9250828202612e0e816128b2565b91508282048414831517612e2557612e24612c45565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612e606020836127c1565b9150612e6b82612e2c565b602082019050919050565b5f6020820190508181035f830152612e8d81612e54565b9050919050565b5f81519050612ea2816128bb565b92915050565b5f60208284031215612ebd57612ebc612850565b5b5f612eca84828501612e94565b91505092915050565b5f819050919050565b5f612ef6612ef1612eec84612858565b612ed3565b612858565b9050919050565b5f612f0782612edc565b9050919050565b5f612f1882612efd565b9050919050565b612f2881612f0e565b82525050565b5f604082019050612f415f830185612f1f565b612f4e6020830184612956565b9392505050565b612f5e81612923565b8114612f68575f80fd5b50565b5f81519050612f7981612f55565b92915050565b5f60208284031215612f9457612f93612850565b5b5f612fa184828501612f6b565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61300b6017836127c1565b915061301682612fd7565b602082019050919050565b5f6020820190508181035f83015261303881612fff565b9050919050565b5f8151905061304d81612888565b92915050565b5f6020828403121561306857613067612850565b5b5f6130758482850161303f565b91505092915050565b5f6040820190506130915f830185612a2d565b61309e6020830184612a2d565b9392505050565b5f819050919050565b5f6130c86130c36130be846130a5565b612ed3565b6128b2565b9050919050565b6130d8816130ae565b82525050565b5f60c0820190506130f15f830189612a2d565b6130fe6020830188612956565b61310b60408301876130cf565b61311860608301866130cf565b6131256080830185612a2d565b61313260a0830184612956565b979650505050505050565b5f805f6060848603121561315457613153612850565b5b5f61316186828701612e94565b935050602061317286828701612e94565b925050604061318386828701612e94565b9150509250925092565b5f6040820190506131a05f830185612a2d565b6131ad6020830184612956565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61320e6024836127c1565b9150613219826131b4565b604082019050919050565b5f6020820190508181035f83015261323b81613202565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61329c6022836127c1565b91506132a782613242565b604082019050919050565b5f6020820190508181035f8301526132c981613290565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61332a6025836127c1565b9150613335826132d0565b604082019050919050565b5f6020820190508181035f8301526133578161331e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6133b86023836127c1565b91506133c38261335e565b604082019050919050565b5f6020820190508181035f8301526133e5816133ac565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6134466029836127c1565b9150613451826133ec565b604082019050919050565b5f6020820190508181035f8301526134738161343a565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6134ae6019836127c1565b91506134b98261347a565b602082019050919050565b5f6020820190508181035f8301526134db816134a2565b9050919050565b5f6134ec826128b2565b91506134f7836128b2565b925082820190508082111561350f5761350e612c45565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613549601a836127c1565b915061355482613515565b602082019050919050565b5f6020820190508181035f8301526135768161353d565b9050919050565b5f613587826128b2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135b9576135b8612c45565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f6135f86017836127c1565b9150613603826135c4565b602082019050919050565b5f6020820190508181035f830152613625816135ec565b9050919050565b5f613636826128b2565b9150613641836128b2565b925082820390508181111561365957613658612c45565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61369181612877565b82525050565b5f6136a28383613688565b60208301905092915050565b5f602082019050919050565b5f6136c48261365f565b6136ce8185613669565b93506136d983613679565b805f5b838110156137095781516136f08882613697565b97506136fb836136ae565b9250506001810190506136dc565b5085935050505092915050565b5f60a0820190506137295f830188612956565b61373660208301876130cf565b818103604083015261374881866136ba565b90506137576060830185612a2d565b6137646080830184612956565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6137a5826128b2565b91506137b0836128b2565b9250826137c0576137bf61376e565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6138256021836127c1565b9150613830826137cb565b604082019050919050565b5f6020820190508181035f83015261385281613819565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61388d601b836127c1565b915061389882613859565b602082019050919050565b5f6020820190508181035f8301526138ba81613881565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220700533fac6e201f116096fb3f7d5db236bb5391983f4934d5f0421bac1c55eb464736f6c634300081a0033

Deployed Bytecode

0x608060405260043610610169575f3560e01c80637d1db4a5116100d0578063a9059cbb11610089578063dd62ed3e11610063578063dd62ed3e146104cc578063dfa2f6f114610508578063ec1f3f6314610530578063f2fde38b1461055857610170565b8063a9059cbb1461045c578063bf474bed14610498578063c9567bf9146104c257610170565b80637d1db4a5146103645780638cd4426d1461038e5780638da5cb5b146103b65780638f9a55c0146103e0578063914137001461040a57806395d89b411461043257610170565b8063313ce56711610122578063313ce567146102805780633a9e962a146102aa5780633bbac579146102c057806351bc3c85146102fc57806370a0823114610312578063715018a61461034e57610170565b806306fdde0314610174578063095ea7b31461019e5780630faee56f146101da57806318160ddd146102045780632241bdc41461022e57806323b872dd1461024457610170565b3661017057005b5f80fd5b34801561017f575f80fd5b50610188610580565b6040516101959190612827565b60405180910390f35b3480156101a9575f80fd5b506101c460048036038101906101bf91906128e5565b6105bd565b6040516101d1919061293d565b60405180910390f35b3480156101e5575f80fd5b506101ee6105da565b6040516101fb9190612965565b60405180910390f35b34801561020f575f80fd5b506102186105e0565b6040516102259190612965565b60405180910390f35b348015610239575f80fd5b50610242610604565b005b34801561024f575f80fd5b5061026a6004803603810190610265919061297e565b610736565b604051610277919061293d565b60405180910390f35b34801561028b575f80fd5b5061029461080a565b6040516102a191906129e9565b60405180910390f35b3480156102b5575f80fd5b506102be610812565b005b3480156102cb575f80fd5b506102e660048036038101906102e19190612a02565b6108f3565b6040516102f3919061293d565b60405180910390f35b348015610307575f80fd5b50610310610945565b005b34801561031d575f80fd5b5061033860048036038101906103339190612a02565b6109f4565b6040516103459190612965565b60405180910390f35b348015610359575f80fd5b50610362610a3a565b005b34801561036f575f80fd5b50610378610b88565b6040516103859190612965565b60405180910390f35b348015610399575f80fd5b506103b460048036038101906103af91906128e5565b610b8e565b005b3480156103c1575f80fd5b506103ca610d2f565b6040516103d79190612a3c565b60405180910390f35b3480156103eb575f80fd5b506103f4610d56565b6040516104019190612965565b60405180910390f35b348015610415575f80fd5b50610430600480360381019061042b9190612b95565b610d5c565b005b34801561043d575f80fd5b50610446610e7a565b6040516104539190612827565b60405180910390f35b348015610467575f80fd5b50610482600480360381019061047d91906128e5565b610eb7565b60405161048f919061293d565b60405180910390f35b3480156104a3575f80fd5b506104ac610ed4565b6040516104b99190612965565b60405180910390f35b6104ca610eda565b005b3480156104d7575f80fd5b506104f260048036038101906104ed9190612bdc565b6113fa565b6040516104ff9190612965565b60405180910390f35b348015610513575f80fd5b5061052e60048036038101906105299190612b95565b61147c565b005b34801561053b575f80fd5b5061055660048036038101906105519190612c1a565b61159b565b005b348015610563575f80fd5b5061057e60048036038101906105799190612a02565b611627565b005b60606040518060400160405280600681526020017f66726f6762790000000000000000000000000000000000000000000000000000815250905090565b5f6105d06105c9611776565b848461177d565b6001905092915050565b60125481565b5f6009600a6105ef9190612da1565b6461f313f8806105ff9190612deb565b905090565b61060c611776565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610698576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068f90612e76565b60405180910390fd5b6009600a6106a69190612da1565b6461f313f8806106b69190612deb565b600e819055506009600a6106ca9190612da1565b6461f313f8806106da9190612deb565b600f819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a61070f9190612da1565b6461f313f88061071f9190612deb565b60405161072c9190612965565b60405180910390a1565b5f610742848484611940565b6107ff8461074e611776565b6107fa856040518060600160405280602881526020016138c26028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6107b1611776565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122a39092919063ffffffff16565b61177d565b600190509392505050565b5f6009905090565b61081a611776565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089d90612e76565b60405180910390fd5b601054600e81905550601054600f819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6010546040516108e99190612965565b60405180910390a1565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610985611776565b73ffffffffffffffffffffffffffffffffffffffff16146109a4575f80fd5b5f6109ae306109f4565b90505f811180156109cb5750601460169054906101000a900460ff165b156109da576109d981612305565b5b5f4790505f8111156109f0576109ef81612570565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610a42611776565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ace576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac590612e76565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600e5481565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bce611776565b73ffffffffffffffffffffffffffffffffffffffff1614610bed575f80fd5b5f610c8b6064610c7d848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c309190612a3c565b602060405180830381865afa158015610c4b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c6f9190612ea8565b6125d890919063ffffffff16565b61264f90919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610ce9929190612f2e565b6020604051808303815f875af1158015610d05573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d299190612f7f565b50505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b610d64611776565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de790612e76565b60405180910390fd5b5f5b8151811015610e76575f60045f848481518110610e1257610e11612faa565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610df2565b5050565b60606040518060400160405280600681526020017f66726f6762790000000000000000000000000000000000000000000000000000815250905090565b5f610eca610ec3611776565b8484611940565b6001905092915050565b60115481565b610ee2611776565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6590612e76565b60405180910390fd5b60148054906101000a900460ff1615610fbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb390613021565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506110593060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6110449190612da1565b6461f313f8806110549190612deb565b61177d565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e79190613053565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561116d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111919190613053565b6040518363ffffffff1660e01b81526004016111ae92919061307e565b6020604051808303815f875af11580156111ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111ee9190613053565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430611275306109f4565b5f8061127f610d2f565b426040518863ffffffff1660e01b81526004016112a1969594939291906130de565b60606040518083038185885af11580156112bd573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112e2919061313d565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161138292919061318d565b6020604051808303815f875af115801561139e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113c29190612f7f565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611484611776565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611510576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150790612e76565b60405180910390fd5b5f5b815181101561159757600160045f84848151811061153357611532612faa565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611512565b5050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115db611776565b73ffffffffffffffffffffffffffffffffffffffff16146115fa575f80fd5b600854811115801561160e57506009548111155b611616575f80fd5b806008819055508060098190555050565b61162f611776565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b290612e76565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e290613224565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611859576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611850906132b2565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119339190612965565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a590613340565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a13906133ce565b60405180910390fd5b5f8111611a5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a559061345c565b60405180910390fd5b5f611a67610d2f565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611ad55750611aa5610d2f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b2e575060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ff35760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611bd1575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611bd9575f80fd5b611c156064611c07600a54600d5411611bf457600654611bf8565b6008545b856125d890919063ffffffff16565b61264f90919063ffffffff16565b905060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611cc0575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d13575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611dcd57600e54821115611d5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d54906134c4565b60405180910390fd5b600f5482611d6a856109f4565b611d7491906134e2565b1115611db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dac9061355f565b60405180910390fd5b600d5f815480929190611dc79061357d565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611e5557503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611e9957611e966064611e88600b54600d5411611e7557600754611e79565b6009545b856125d890919063ffffffff16565b61264f90919063ffffffff16565b90505b5f611ea3306109f4565b9050601460159054906101000a900460ff16158015611f0e575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611f265750601460169054906101000a900460ff165b8015611f33575060115481115b8015611f425750600c54600d54115b15611ff157601654431115611f59575f6015819055505b600360155410611f9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f959061360e565b60405180910390fd5b611fbb611fb684611fb184601254612698565b612698565b612305565b5f4790505f811115611fd157611fd047612570565b5b60155f815480929190611fe39061357d565b919050555043601681905550505b505b5f8111156120f25761204b8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126b090919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120e99190612965565b60405180910390a35b6121428260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461270d90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506121e5612199828461270d90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126b090919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612288848661270d90919063ffffffff16565b6040516122959190612965565b60405180910390a350505050565b5f8383111582906122ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e19190612827565b60405180910390fd5b505f83856122f8919061362c565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561233c5761233b612a59565b5b60405190808252806020026020018201604052801561236a5781602001602082028036833780820191505090505b50905030815f8151811061238157612380612faa565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612425573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124499190613053565b8160018151811061245d5761245c612faa565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124c33060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461177d565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612525959493929190613716565b5f604051808303815f87803b15801561253c575f80fd5b505af115801561254e573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156125d4573d5f803e3d5ffd5b5050565b5f8083036125e8575f9050612649565b5f82846125f59190612deb565b9050828482612604919061379b565b14612644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263b9061383b565b60405180910390fd5b809150505b92915050565b5f61269083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612756565b905092915050565b5f8183116126a657826126a8565b815b905092915050565b5f8082846126be91906134e2565b905083811015612703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fa906138a3565b60405180910390fd5b8091505092915050565b5f61274e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122a3565b905092915050565b5f808311829061279c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127939190612827565b60405180910390fd5b505f83856127aa919061379b565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6127f9826127b7565b61280381856127c1565b93506128138185602086016127d1565b61281c816127df565b840191505092915050565b5f6020820190508181035f83015261283f81846127ef565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61288182612858565b9050919050565b61289181612877565b811461289b575f80fd5b50565b5f813590506128ac81612888565b92915050565b5f819050919050565b6128c4816128b2565b81146128ce575f80fd5b50565b5f813590506128df816128bb565b92915050565b5f80604083850312156128fb576128fa612850565b5b5f6129088582860161289e565b9250506020612919858286016128d1565b9150509250929050565b5f8115159050919050565b61293781612923565b82525050565b5f6020820190506129505f83018461292e565b92915050565b61295f816128b2565b82525050565b5f6020820190506129785f830184612956565b92915050565b5f805f6060848603121561299557612994612850565b5b5f6129a28682870161289e565b93505060206129b38682870161289e565b92505060406129c4868287016128d1565b9150509250925092565b5f60ff82169050919050565b6129e3816129ce565b82525050565b5f6020820190506129fc5f8301846129da565b92915050565b5f60208284031215612a1757612a16612850565b5b5f612a248482850161289e565b91505092915050565b612a3681612877565b82525050565b5f602082019050612a4f5f830184612a2d565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612a8f826127df565b810181811067ffffffffffffffff82111715612aae57612aad612a59565b5b80604052505050565b5f612ac0612847565b9050612acc8282612a86565b919050565b5f67ffffffffffffffff821115612aeb57612aea612a59565b5b602082029050602081019050919050565b5f80fd5b5f612b12612b0d84612ad1565b612ab7565b90508083825260208201905060208402830185811115612b3557612b34612afc565b5b835b81811015612b5e5780612b4a888261289e565b845260208401935050602081019050612b37565b5050509392505050565b5f82601f830112612b7c57612b7b612a55565b5b8135612b8c848260208601612b00565b91505092915050565b5f60208284031215612baa57612ba9612850565b5b5f82013567ffffffffffffffff811115612bc757612bc6612854565b5b612bd384828501612b68565b91505092915050565b5f8060408385031215612bf257612bf1612850565b5b5f612bff8582860161289e565b9250506020612c108582860161289e565b9150509250929050565b5f60208284031215612c2f57612c2e612850565b5b5f612c3c848285016128d1565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612cc757808604811115612ca357612ca2612c45565b5b6001851615612cb25780820291505b8081029050612cc085612c72565b9450612c87565b94509492505050565b5f82612cdf5760019050612d9a565b81612cec575f9050612d9a565b8160018114612d025760028114612d0c57612d3b565b6001915050612d9a565b60ff841115612d1e57612d1d612c45565b5b8360020a915084821115612d3557612d34612c45565b5b50612d9a565b5060208310610133831016604e8410600b8410161715612d705782820a905083811115612d6b57612d6a612c45565b5b612d9a565b612d7d8484846001612c7e565b92509050818404811115612d9457612d93612c45565b5b81810290505b9392505050565b5f612dab826128b2565b9150612db6836129ce565b9250612de37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612cd0565b905092915050565b5f612df5826128b2565b9150612e00836128b2565b9250828202612e0e816128b2565b91508282048414831517612e2557612e24612c45565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612e606020836127c1565b9150612e6b82612e2c565b602082019050919050565b5f6020820190508181035f830152612e8d81612e54565b9050919050565b5f81519050612ea2816128bb565b92915050565b5f60208284031215612ebd57612ebc612850565b5b5f612eca84828501612e94565b91505092915050565b5f819050919050565b5f612ef6612ef1612eec84612858565b612ed3565b612858565b9050919050565b5f612f0782612edc565b9050919050565b5f612f1882612efd565b9050919050565b612f2881612f0e565b82525050565b5f604082019050612f415f830185612f1f565b612f4e6020830184612956565b9392505050565b612f5e81612923565b8114612f68575f80fd5b50565b5f81519050612f7981612f55565b92915050565b5f60208284031215612f9457612f93612850565b5b5f612fa184828501612f6b565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61300b6017836127c1565b915061301682612fd7565b602082019050919050565b5f6020820190508181035f83015261303881612fff565b9050919050565b5f8151905061304d81612888565b92915050565b5f6020828403121561306857613067612850565b5b5f6130758482850161303f565b91505092915050565b5f6040820190506130915f830185612a2d565b61309e6020830184612a2d565b9392505050565b5f819050919050565b5f6130c86130c36130be846130a5565b612ed3565b6128b2565b9050919050565b6130d8816130ae565b82525050565b5f60c0820190506130f15f830189612a2d565b6130fe6020830188612956565b61310b60408301876130cf565b61311860608301866130cf565b6131256080830185612a2d565b61313260a0830184612956565b979650505050505050565b5f805f6060848603121561315457613153612850565b5b5f61316186828701612e94565b935050602061317286828701612e94565b925050604061318386828701612e94565b9150509250925092565b5f6040820190506131a05f830185612a2d565b6131ad6020830184612956565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61320e6024836127c1565b9150613219826131b4565b604082019050919050565b5f6020820190508181035f83015261323b81613202565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61329c6022836127c1565b91506132a782613242565b604082019050919050565b5f6020820190508181035f8301526132c981613290565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61332a6025836127c1565b9150613335826132d0565b604082019050919050565b5f6020820190508181035f8301526133578161331e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6133b86023836127c1565b91506133c38261335e565b604082019050919050565b5f6020820190508181035f8301526133e5816133ac565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6134466029836127c1565b9150613451826133ec565b604082019050919050565b5f6020820190508181035f8301526134738161343a565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6134ae6019836127c1565b91506134b98261347a565b602082019050919050565b5f6020820190508181035f8301526134db816134a2565b9050919050565b5f6134ec826128b2565b91506134f7836128b2565b925082820190508082111561350f5761350e612c45565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613549601a836127c1565b915061355482613515565b602082019050919050565b5f6020820190508181035f8301526135768161353d565b9050919050565b5f613587826128b2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135b9576135b8612c45565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f6135f86017836127c1565b9150613603826135c4565b602082019050919050565b5f6020820190508181035f830152613625816135ec565b9050919050565b5f613636826128b2565b9150613641836128b2565b925082820390508181111561365957613658612c45565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61369181612877565b82525050565b5f6136a28383613688565b60208301905092915050565b5f602082019050919050565b5f6136c48261365f565b6136ce8185613669565b93506136d983613679565b805f5b838110156137095781516136f08882613697565b97506136fb836136ae565b9250506001810190506136dc565b5085935050505092915050565b5f60a0820190506137295f830188612956565b61373660208301876130cf565b818103604083015261374881866136ba565b90506137576060830185612a2d565b6137646080830184612956565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6137a5826128b2565b91506137b0836128b2565b9250826137c0576137bf61376e565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6138256021836127c1565b9150613830826137cb565b604082019050919050565b5f6020820190508181035f83015261385281613819565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61388d601b836127c1565b915061389882613859565b602082019050919050565b5f6020820190508181035f8301526138ba81613881565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220700533fac6e201f116096fb3f7d5db236bb5391983f4934d5f0421bac1c55eb464736f6c634300081a0033

Deployed Bytecode Sourcemap

3948:8899:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5887:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6720:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5078:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6164:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10362:161;;;;;;;;;;;;;:::i;:::-;;6889:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6073:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10531:193;;;;;;;;;;;;;:::i;:::-;;11174:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12481:363;;;;;;;;;;;;;:::i;:::-;;6267:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2863:148;;;;;;;;;;;;;:::i;:::-;;4850:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12207:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2649:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4894:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11004:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5978:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6394:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5011:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11265:667;;;:::i;:::-;;6569:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10832:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11944:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3019:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5887:83;5924:13;5957:5;;;;;;;;;;;;;;;;;5950:12;;5887:83;:::o;6720:161::-;6795:4;6812:39;6821:12;:10;:12::i;:::-;6835:7;6844:6;6812:8;:39::i;:::-;6869:4;6862:11;;6720:161;;;;:::o;5078:54::-;;;;:::o;6164:95::-;6217:7;4662:1;4720:2;:13;;;;:::i;:::-;4705:12;:28;;;;:::i;:::-;6237:14;;6164:95;:::o;10362:161::-;2786:12;:10;:12::i;:::-;2776:22;;:6;;;;;;;;;;:22;;;2768:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4662:1:::1;4720:2;:13;;;;:::i;:::-;4705:12;:28;;;;:::i;:::-;10415:12;:22;;;;4662:1;4720:2;:13;;;;:::i;:::-;4705:12;:28;;;;:::i;:::-;10448:14;:24;;;;10488:27;4662:1;4720:2;:13;;;;:::i;:::-;4705:12;:28;;;;:::i;:::-;10488:27;;;;;;:::i;:::-;;;;;;;;10362:161::o:0;6889:313::-;6987:4;7004:36;7014:6;7022:9;7033:6;7004:9;:36::i;:::-;7051:121;7060:6;7068:12;:10;:12::i;:::-;7082:89;7120:6;7082:89;;;;;;;;;;;;;;;;;:11;:19;7094:6;7082:19;;;;;;;;;;;;;;;:33;7102:12;:10;:12::i;:::-;7082:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7051:8;:121::i;:::-;7190:4;7183:11;;6889:313;;;;;:::o;6073:83::-;6114:5;4662:1;6132:16;;6073:83;:::o;10531:193::-;2786:12;:10;:12::i;:::-;2776:22;;:6;;;;;;;;;;:22;;;2768:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10595:19:::1;;10580:12;:34;;;;10642:19;;10625:14;:36;;;;10677:39;10696:19;;10677:39;;;;;;:::i;:::-;;;;;;;;10531:193::o:0;11174:83::-;11221:4;11242;:7;11247:1;11242:7;;;;;;;;;;;;;;;;;;;;;;;;;11235:14;;11174:83;;;:::o;12481:363::-;12545:10;;;;;;;;;;;12531:24;;:12;:10;:12::i;:::-;:24;;;12523:33;;;;;;12567:20;12588:24;12606:4;12588:9;:24::i;:::-;12567:45;;12639:1;12626:12;:14;:29;;;;;12644:11;;;;;;;;;;;12626:29;12623:88;;;12669:30;12686:12;12669:16;:30::i;:::-;12623:88;12721:18;12740:21;12721:40;;12786:1;12775:10;:12;12772:65;;;12801:24;12814:10;12801:12;:24::i;:::-;12772:65;12512:332;;12481:363::o;6267:119::-;6333:7;6360:9;:18;6370:7;6360:18;;;;;;;;;;;;;;;;6353:25;;6267:119;;;:::o;2863:148::-;2786:12;:10;:12::i;:::-;2776:22;;:6;;;;;;;;;;:22;;;2768:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2970:1:::1;2933:40;;2954:6;::::0;::::1;;;;;;;;2933:40;;;;;;;;;;;;3001:1;2984:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2863:148::o:0;4850:37::-;;;;:::o;12207:266::-;12305:10;;;;;;;;;;;12291:24;;:12;:10;:12::i;:::-;:24;;;12283:33;;;;;;12327:15;12345:63;12404:3;12345:54;12391:7;12352:8;12345:26;;;12380:4;12345:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;:54;;;;:::i;:::-;:58;;:63;;;;:::i;:::-;12327:81;;12426:8;12419:25;;;12445:10;;;;;;;;;;;12457:7;12419:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12272:201;12207:266;;:::o;2649:79::-;2687:7;2714:6;;;;;;;;;;;2707:13;;2649:79;:::o;4894:39::-;;;;:::o;11004:162::-;2786:12;:10;:12::i;:::-;2776:22;;:6;;;;;;;;;;:22;;;2768:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11077:6:::1;11072:87;11093:6;:13;11089:1;:17;11072:87;;;11144:5;11126:4;:15;11131:6;11138:1;11131:9;;;;;;;;:::i;:::-;;;;;;;;11126:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;11108:3;;;;;;;11072:87;;;;11004:162:::0;:::o;5978:87::-;6017:13;6050:7;;;;;;;;;;;;;;;;;6043:14;;5978:87;:::o;6394:167::-;6472:4;6489:42;6499:12;:10;:12::i;:::-;6513:9;6524:6;6489:9;:42::i;:::-;6549:4;6542:11;;6394:167;;;;:::o;5011:60::-;;;;:::o;11265:667::-;2786:12;:10;:12::i;:::-;2776:22;;:6;;;;;;;;;;:22;;;2768:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11337:11:::1;::::0;::::1;;;;;;;;11336:12;11328:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11423:42;11386:15;;:80;;;;;;;;;;;;;;;;;;11477:58;11494:4;11509:15;;;;;;;;;;;4662:1;4720:2;:13;;;;:::i;:::-;4705:12;:28;;;;:::i;:::-;11477:8;:58::i;:::-;11580:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11562:55;;;11626:4;11633:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11562:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11546:13;;:110;;;;;;;;;;;;;;;;;;11667:15;;;;;;;;;;;:31;;;11706:9;11725:4;11731:24;11749:4;11731:9;:24::i;:::-;11756:1;11758::::0;11760:7:::1;:5;:7::i;:::-;11768:15;11667:117;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11802:13;;;;;;;;;;;11795:29;;;11833:15;;;;;;;;;;;11851:14;11795:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11891:4;11877:11;;:18;;;;;;;;;;;;;;;;;;11920:4;11906:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;11265:667::o:0;6569:143::-;6650:7;6677:11;:18;6689:5;6677:18;;;;;;;;;;;;;;;:27;6696:7;6677:27;;;;;;;;;;;;;;;;6670:34;;6569:143;;;;:::o;10832:164::-;2786:12;:10;:12::i;:::-;2776:22;;:6;;;;;;;;;;:22;;;2768:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10906:6:::1;10901:88;10922:5;:12;10918:1;:16;10901:88;;;10973:4;10956;:14;10961:5;10967:1;10961:8;;;;;;;;:::i;:::-;;;;;;;;10956:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;10936:3;;;;;;;10901:88;;;;10832:164:::0;:::o;11944:218::-;12019:10;;;;;;;;;;;12005:24;;:12;:10;:12::i;:::-;:24;;;11997:33;;;;;;12056:12;;12047:7;:21;;:47;;;;;12081:13;;12072:7;:22;;12047:47;12039:56;;;;;;12117:7;12104:12;:20;;;;12147:7;12133:13;:21;;;;11944:218;:::o;3019:160::-;2786:12;:10;:12::i;:::-;2776:22;;:6;;;;;;;;;;:22;;;2768:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3134:8:::1;3105:38;;3126:6;::::0;::::1;;;;;;;;3105:38;;;;;;;;;;;;3163:8;3154:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3019:160:::0;:::o;404:98::-;457:7;484:10;477:17;;404:98;:::o;7210:335::-;7320:1;7303:19;;:5;:19;;;7295:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7401:1;7382:21;;:7;:21;;;7374:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7483:6;7453:11;:18;7465:5;7453:18;;;;;;;;;;;;;;;:27;7472:7;7453:27;;;;;;;;;;;;;;;:36;;;;7521:7;7505:32;;7514:5;7505:32;;;7530:6;7505:32;;;;;;:::i;:::-;;;;;;;;7210:335;;;:::o;7553:2202::-;7657:1;7641:18;;:4;:18;;;7633:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7734:1;7720:16;;:2;:16;;;7712:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7804:1;7795:6;:10;7787:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7862:17;7904:7;:5;:7::i;:::-;7896:15;;:4;:15;;;;:32;;;;;7921:7;:5;:7::i;:::-;7915:13;;:2;:13;;;;7896:32;:52;;;;;7938:10;;;;;;;;;;;7932:16;;:2;:16;;;;7896:52;7892:1507;;;7974:4;:10;7979:4;7974:10;;;;;;;;;;;;;;;;;;;;;;;;;7973:11;:24;;;;;7989:4;:8;7994:2;7989:8;;;;;;;;;;;;;;;;;;;;;;;;;7988:9;7973:24;7965:33;;;;;;8027:76;8099:3;8027:67;8049:15;;8039:9;;:25;8038:55;;8079:14;;8038:55;;;8066:12;;8038:55;8027:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;8015:88;;8132:13;;;;;;;;;;;8124:21;;:4;:21;;;:55;;;;;8163:15;;;;;;;;;;;8149:30;;:2;:30;;;;8124:55;:83;;;;;8185:18;:22;8204:2;8185:22;;;;;;;;;;;;;;;;;;;;;;;;;8183:24;8124:83;8120:313;;;8247:12;;8237:6;:22;;8229:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8342:14;;8332:6;8316:13;8326:2;8316:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8308:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8406:9;;:11;;;;;;;;;:::i;:::-;;;;;;8120:313;8458:13;;;;;;;;;;;8452:19;;:2;:19;;;:43;;;;;8490:4;8475:20;;:4;:20;;;;8452:43;8449:174;;;8528:79;8603:3;8528:70;8550:16;;8540:9;;:26;8539:58;;8582:15;;8539:58;;;8568:13;;8539:58;8528:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;8516:91;;8449:174;8639:28;8670:24;8688:4;8670:9;:24::i;:::-;8639:55;;8714:6;;;;;;;;;;;8713:7;:30;;;;;8730:13;;;;;;;;;;;8724:19;;:2;:19;;;8713:30;:45;;;;;8747:11;;;;;;;;;;;8713:45;:89;;;;;8785:17;;8762:20;:40;8713:89;:123;;;;;8818:18;;8806:9;;:30;8713:123;8709:679;;;8876:13;;8861:12;:28;8857:90;;;8926:1;8914:9;:13;;;;8857:90;8985:1;8973:9;;:13;8965:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;9033:69;9050:51;9054:6;9062:38;9066:20;9088:11;;9062:3;:38::i;:::-;9050:3;:51::i;:::-;9033:16;:69::i;:::-;9121:26;9150:21;9121:50;;9215:1;9194:18;:22;9190:106;;;9241:35;9254:21;9241:12;:35::i;:::-;9190:106;9314:9;;:11;;;;;;;;;:::i;:::-;;;;;;9360:12;9344:13;:28;;;;8838:550;8709:679;7950:1449;7892:1507;9424:1;9414:9;:11;9411:161;;;9464:39;9493:9;9464;:24;9482:4;9464:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9439:9;:24;9457:4;9439:24;;;;;;;;;;;;;;;:64;;;;9544:4;9521:39;;9530:4;9521:39;;;9550:9;9521:39;;;;;;:::i;:::-;;;;;;;;9411:161;9598:27;9618:6;9598:9;:15;9608:4;9598:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9582:9;:15;9592:4;9582:15;;;;;;;;;;;;;;;:43;;;;9650:40;9668:21;9679:9;9668:6;:10;;:21;;;;:::i;:::-;9650:9;:13;9660:2;9650:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;9636:9;:13;9646:2;9636:13;;;;;;;;;;;;;;;:54;;;;9721:2;9706:41;;9715:4;9706:41;;;9725:21;9736:9;9725:6;:10;;:21;;;;:::i;:::-;9706:41;;;;;;:::i;:::-;;;;;;;;7622:2133;7553:2202;;;:::o;1541:190::-;1627:7;1660:1;1655;:6;;1663:12;1647:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1687:9;1703:1;1699;:5;;;;:::i;:::-;1687:17;;1722:1;1715:8;;;1541:190;;;;;:::o;9871:483::-;5503:4;5494:6;;:13;;;;;;;;;;;;;;;;;;9949:21:::1;9987:1;9973:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9949:40;;10018:4;10000;10005:1;10000:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10044:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10034:4;10039:1;10034:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10077:62;10094:4;10109:15;;;;;;;;;;;10127:11;10077:8;:62::i;:::-;10150:15;;;;;;;;;;;:66;;;10231:11;10257:1;10273:4;10300;10320:15;10150:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9938:416;5539:5:::0;5530:6;;:14;;;;;;;;;;;;;;;;;;9871:483;:::o;10732:92::-;10789:10;;;;;;;;;;;:19;;:27;10809:6;10789:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10732:92;:::o;1739:246::-;1797:7;1826:1;1821;:6;1817:47;;1851:1;1844:8;;;;1817:47;1874:9;1890:1;1886;:5;;;;:::i;:::-;1874:17;;1919:1;1914;1910;:5;;;;:::i;:::-;:10;1902:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1976:1;1969:8;;;1739:246;;;;;:::o;1993:132::-;2051:7;2078:39;2082:1;2085;2078:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2071:46;;1993:132;;;;:::o;9765:98::-;9822:7;9849:1;9847;:3;9846:9;;9854:1;9846:9;;;9852:1;9846:9;9839:16;;9765:98;;;;:::o;1210:179::-;1268:7;1288:9;1304:1;1300;:5;;;;:::i;:::-;1288:17;;1329:1;1324;:6;;1316:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1380:1;1373:8;;;1210:179;;;;:::o;1397:136::-;1455:7;1482:43;1486:1;1489;1482:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1475:50;;1397:136;;;;:::o;2133:189::-;2219:7;2251:1;2247;:5;2254:12;2239:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2278:9;2294:1;2290;:5;;;;:::i;:::-;2278:17;;2313:1;2306:8;;;2133:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1242:75::-;1275:6;1308:2;1302:9;1292:19;;1242:75;:::o;1323:117::-;1432:1;1429;1422:12;1446:117;1555:1;1552;1545:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:329::-;4805:6;4854:2;4842:9;4833:7;4829:23;4825:32;4822:119;;;4860:79;;:::i;:::-;4822:119;4980:1;5005:53;5050:7;5041:6;5030:9;5026:22;5005:53;:::i;:::-;4995:63;;4951:117;4746:329;;;;:::o;5081:118::-;5168:24;5186:5;5168:24;:::i;:::-;5163:3;5156:37;5081:118;;:::o;5205:222::-;5298:4;5336:2;5325:9;5321:18;5313:26;;5349:71;5417:1;5406:9;5402:17;5393:6;5349:71;:::i;:::-;5205:222;;;;:::o;5433:117::-;5542:1;5539;5532:12;5556:180;5604:77;5601:1;5594:88;5701:4;5698:1;5691:15;5725:4;5722:1;5715:15;5742:281;5825:27;5847:4;5825:27;:::i;:::-;5817:6;5813:40;5955:6;5943:10;5940:22;5919:18;5907:10;5904:34;5901:62;5898:88;;;5966:18;;:::i;:::-;5898:88;6006:10;6002:2;5995:22;5785:238;5742:281;;:::o;6029:129::-;6063:6;6090:20;;:::i;:::-;6080:30;;6119:33;6147:4;6139:6;6119:33;:::i;:::-;6029:129;;;:::o;6164:311::-;6241:4;6331:18;6323:6;6320:30;6317:56;;;6353:18;;:::i;:::-;6317:56;6403:4;6395:6;6391:17;6383:25;;6463:4;6457;6453:15;6445:23;;6164:311;;;:::o;6481:117::-;6590:1;6587;6580:12;6621:710;6717:5;6742:81;6758:64;6815:6;6758:64;:::i;:::-;6742:81;:::i;:::-;6733:90;;6843:5;6872:6;6865:5;6858:21;6906:4;6899:5;6895:16;6888:23;;6959:4;6951:6;6947:17;6939:6;6935:30;6988:3;6980:6;6977:15;6974:122;;;7007:79;;:::i;:::-;6974:122;7122:6;7105:220;7139:6;7134:3;7131:15;7105:220;;;7214:3;7243:37;7276:3;7264:10;7243:37;:::i;:::-;7238:3;7231:50;7310:4;7305:3;7301:14;7294:21;;7181:144;7165:4;7160:3;7156:14;7149:21;;7105:220;;;7109:21;6723:608;;6621:710;;;;;:::o;7354:370::-;7425:5;7474:3;7467:4;7459:6;7455:17;7451:27;7441:122;;7482:79;;:::i;:::-;7441:122;7599:6;7586:20;7624:94;7714:3;7706:6;7699:4;7691:6;7687:17;7624:94;:::i;:::-;7615:103;;7431:293;7354:370;;;;:::o;7730:539::-;7814:6;7863:2;7851:9;7842:7;7838:23;7834:32;7831:119;;;7869:79;;:::i;:::-;7831:119;8017:1;8006:9;8002:17;7989:31;8047:18;8039:6;8036:30;8033:117;;;8069:79;;:::i;:::-;8033:117;8174:78;8244:7;8235:6;8224:9;8220:22;8174:78;:::i;:::-;8164:88;;7960:302;7730:539;;;;:::o;8275:474::-;8343:6;8351;8400:2;8388:9;8379:7;8375:23;8371:32;8368:119;;;8406:79;;:::i;:::-;8368:119;8526:1;8551:53;8596:7;8587:6;8576:9;8572:22;8551:53;:::i;:::-;8541:63;;8497:117;8653:2;8679:53;8724:7;8715:6;8704:9;8700:22;8679:53;:::i;:::-;8669:63;;8624:118;8275:474;;;;;:::o;8755:329::-;8814:6;8863:2;8851:9;8842:7;8838:23;8834:32;8831:119;;;8869:79;;:::i;:::-;8831:119;8989:1;9014:53;9059:7;9050:6;9039:9;9035:22;9014:53;:::i;:::-;9004:63;;8960:117;8755:329;;;;:::o;9090:180::-;9138:77;9135:1;9128:88;9235:4;9232:1;9225:15;9259:4;9256:1;9249:15;9276:102;9318:8;9365:5;9362:1;9358:13;9337:34;;9276:102;;;:::o;9384:848::-;9445:5;9452:4;9476:6;9467:15;;9500:5;9491:14;;9514:712;9535:1;9525:8;9522:15;9514:712;;;9630:4;9625:3;9621:14;9615:4;9612:24;9609:50;;;9639:18;;:::i;:::-;9609:50;9689:1;9679:8;9675:16;9672:451;;;10104:4;10097:5;10093:16;10084:25;;9672:451;10154:4;10148;10144:15;10136:23;;10184:32;10207:8;10184:32;:::i;:::-;10172:44;;9514:712;;;9384:848;;;;;;;:::o;10238:1073::-;10292:5;10483:8;10473:40;;10504:1;10495:10;;10506:5;;10473:40;10532:4;10522:36;;10549:1;10540:10;;10551:5;;10522:36;10618:4;10666:1;10661:27;;;;10702:1;10697:191;;;;10611:277;;10661:27;10679:1;10670:10;;10681:5;;;10697:191;10742:3;10732:8;10729:17;10726:43;;;10749:18;;:::i;:::-;10726:43;10798:8;10795:1;10791:16;10782:25;;10833:3;10826:5;10823:14;10820:40;;;10840:18;;:::i;:::-;10820:40;10873:5;;;10611:277;;10997:2;10987:8;10984:16;10978:3;10972:4;10969:13;10965:36;10947:2;10937:8;10934:16;10929:2;10923:4;10920:12;10916:35;10900:111;10897:246;;;11053:8;11047:4;11043:19;11034:28;;11088:3;11081:5;11078:14;11075:40;;;11095:18;;:::i;:::-;11075:40;11128:5;;10897:246;11168:42;11206:3;11196:8;11190:4;11187:1;11168:42;:::i;:::-;11153:57;;;;11242:4;11237:3;11233:14;11226:5;11223:25;11220:51;;;11251:18;;:::i;:::-;11220:51;11300:4;11293:5;11289:16;11280:25;;10238:1073;;;;;;:::o;11317:281::-;11375:5;11399:23;11417:4;11399:23;:::i;:::-;11391:31;;11443:25;11459:8;11443:25;:::i;:::-;11431:37;;11487:104;11524:66;11514:8;11508:4;11487:104;:::i;:::-;11478:113;;11317:281;;;;:::o;11604:410::-;11644:7;11667:20;11685:1;11667:20;:::i;:::-;11662:25;;11701:20;11719:1;11701:20;:::i;:::-;11696:25;;11756:1;11753;11749:9;11778:30;11796:11;11778:30;:::i;:::-;11767:41;;11957:1;11948:7;11944:15;11941:1;11938:22;11918:1;11911:9;11891:83;11868:139;;11987:18;;:::i;:::-;11868:139;11652:362;11604:410;;;;:::o;12020:182::-;12160:34;12156:1;12148:6;12144:14;12137:58;12020:182;:::o;12208:366::-;12350:3;12371:67;12435:2;12430:3;12371:67;:::i;:::-;12364:74;;12447:93;12536:3;12447:93;:::i;:::-;12565:2;12560:3;12556:12;12549:19;;12208:366;;;:::o;12580:419::-;12746:4;12784:2;12773:9;12769:18;12761:26;;12833:9;12827:4;12823:20;12819:1;12808:9;12804:17;12797:47;12861:131;12987:4;12861:131;:::i;:::-;12853:139;;12580:419;;;:::o;13005:143::-;13062:5;13093:6;13087:13;13078:22;;13109:33;13136:5;13109:33;:::i;:::-;13005:143;;;;:::o;13154:351::-;13224:6;13273:2;13261:9;13252:7;13248:23;13244:32;13241:119;;;13279:79;;:::i;:::-;13241:119;13399:1;13424:64;13480:7;13471:6;13460:9;13456:22;13424:64;:::i;:::-;13414:74;;13370:128;13154:351;;;;:::o;13511:60::-;13539:3;13560:5;13553:12;;13511:60;;;:::o;13577:142::-;13627:9;13660:53;13678:34;13687:24;13705:5;13687:24;:::i;:::-;13678:34;:::i;:::-;13660:53;:::i;:::-;13647:66;;13577:142;;;:::o;13725:126::-;13775:9;13808:37;13839:5;13808:37;:::i;:::-;13795:50;;13725:126;;;:::o;13857:134::-;13915:9;13948:37;13979:5;13948:37;:::i;:::-;13935:50;;13857:134;;;:::o;13997:147::-;14092:45;14131:5;14092:45;:::i;:::-;14087:3;14080:58;13997:147;;:::o;14150:348::-;14279:4;14317:2;14306:9;14302:18;14294:26;;14330:79;14406:1;14395:9;14391:17;14382:6;14330:79;:::i;:::-;14419:72;14487:2;14476:9;14472:18;14463:6;14419:72;:::i;:::-;14150:348;;;;;:::o;14504:116::-;14574:21;14589:5;14574:21;:::i;:::-;14567:5;14564:32;14554:60;;14610:1;14607;14600:12;14554:60;14504:116;:::o;14626:137::-;14680:5;14711:6;14705:13;14696:22;;14727:30;14751:5;14727:30;:::i;:::-;14626:137;;;;:::o;14769:345::-;14836:6;14885:2;14873:9;14864:7;14860:23;14856:32;14853:119;;;14891:79;;:::i;:::-;14853:119;15011:1;15036:61;15089:7;15080:6;15069:9;15065:22;15036:61;:::i;:::-;15026:71;;14982:125;14769:345;;;;:::o;15120:180::-;15168:77;15165:1;15158:88;15265:4;15262:1;15255:15;15289:4;15286:1;15279:15;15306:173;15446:25;15442:1;15434:6;15430:14;15423:49;15306:173;:::o;15485:366::-;15627:3;15648:67;15712:2;15707:3;15648:67;:::i;:::-;15641:74;;15724:93;15813:3;15724:93;:::i;:::-;15842:2;15837:3;15833:12;15826:19;;15485:366;;;:::o;15857:419::-;16023:4;16061:2;16050:9;16046:18;16038:26;;16110:9;16104:4;16100:20;16096:1;16085:9;16081:17;16074:47;16138:131;16264:4;16138:131;:::i;:::-;16130:139;;15857:419;;;:::o;16282:143::-;16339:5;16370:6;16364:13;16355:22;;16386:33;16413:5;16386:33;:::i;:::-;16282:143;;;;:::o;16431:351::-;16501:6;16550:2;16538:9;16529:7;16525:23;16521:32;16518:119;;;16556:79;;:::i;:::-;16518:119;16676:1;16701:64;16757:7;16748:6;16737:9;16733:22;16701:64;:::i;:::-;16691:74;;16647:128;16431:351;;;;:::o;16788:332::-;16909:4;16947:2;16936:9;16932:18;16924:26;;16960:71;17028:1;17017:9;17013:17;17004:6;16960:71;:::i;:::-;17041:72;17109:2;17098:9;17094:18;17085:6;17041:72;:::i;:::-;16788:332;;;;;:::o;17126:85::-;17171:7;17200:5;17189:16;;17126:85;;;:::o;17217:158::-;17275:9;17308:61;17326:42;17335:32;17361:5;17335:32;:::i;:::-;17326:42;:::i;:::-;17308:61;:::i;:::-;17295:74;;17217:158;;;:::o;17381:147::-;17476:45;17515:5;17476:45;:::i;:::-;17471:3;17464:58;17381:147;;:::o;17534:807::-;17783:4;17821:3;17810:9;17806:19;17798:27;;17835:71;17903:1;17892:9;17888:17;17879:6;17835:71;:::i;:::-;17916:72;17984:2;17973:9;17969:18;17960:6;17916:72;:::i;:::-;17998:80;18074:2;18063:9;18059:18;18050:6;17998:80;:::i;:::-;18088;18164:2;18153:9;18149:18;18140:6;18088:80;:::i;:::-;18178:73;18246:3;18235:9;18231:19;18222:6;18178:73;:::i;:::-;18261;18329:3;18318:9;18314:19;18305:6;18261:73;:::i;:::-;17534:807;;;;;;;;;:::o;18347:663::-;18435:6;18443;18451;18500:2;18488:9;18479:7;18475:23;18471:32;18468:119;;;18506:79;;:::i;:::-;18468:119;18626:1;18651:64;18707:7;18698:6;18687:9;18683:22;18651:64;:::i;:::-;18641:74;;18597:128;18764:2;18790:64;18846:7;18837:6;18826:9;18822:22;18790:64;:::i;:::-;18780:74;;18735:129;18903:2;18929:64;18985:7;18976:6;18965:9;18961:22;18929:64;:::i;:::-;18919:74;;18874:129;18347:663;;;;;:::o;19016:332::-;19137:4;19175:2;19164:9;19160:18;19152:26;;19188:71;19256:1;19245:9;19241:17;19232:6;19188:71;:::i;:::-;19269:72;19337:2;19326:9;19322:18;19313:6;19269:72;:::i;:::-;19016:332;;;;;:::o;19354:223::-;19494:34;19490:1;19482:6;19478:14;19471:58;19563:6;19558:2;19550:6;19546:15;19539:31;19354:223;:::o;19583:366::-;19725:3;19746:67;19810:2;19805:3;19746:67;:::i;:::-;19739:74;;19822:93;19911:3;19822:93;:::i;:::-;19940:2;19935:3;19931:12;19924:19;;19583:366;;;:::o;19955:419::-;20121:4;20159:2;20148:9;20144:18;20136:26;;20208:9;20202:4;20198:20;20194:1;20183:9;20179:17;20172:47;20236:131;20362:4;20236:131;:::i;:::-;20228:139;;19955:419;;;:::o;20380:221::-;20520:34;20516:1;20508:6;20504:14;20497:58;20589:4;20584:2;20576:6;20572:15;20565:29;20380:221;:::o;20607:366::-;20749:3;20770:67;20834:2;20829:3;20770:67;:::i;:::-;20763:74;;20846:93;20935:3;20846:93;:::i;:::-;20964:2;20959:3;20955:12;20948:19;;20607:366;;;:::o;20979:419::-;21145:4;21183:2;21172:9;21168:18;21160:26;;21232:9;21226:4;21222:20;21218:1;21207:9;21203:17;21196:47;21260:131;21386:4;21260:131;:::i;:::-;21252:139;;20979:419;;;:::o;21404:224::-;21544:34;21540:1;21532:6;21528:14;21521:58;21613:7;21608:2;21600:6;21596:15;21589:32;21404:224;:::o;21634:366::-;21776:3;21797:67;21861:2;21856:3;21797:67;:::i;:::-;21790:74;;21873:93;21962:3;21873:93;:::i;:::-;21991:2;21986:3;21982:12;21975:19;;21634:366;;;:::o;22006:419::-;22172:4;22210:2;22199:9;22195:18;22187:26;;22259:9;22253:4;22249:20;22245:1;22234:9;22230:17;22223:47;22287:131;22413:4;22287:131;:::i;:::-;22279:139;;22006:419;;;:::o;22431:222::-;22571:34;22567:1;22559:6;22555:14;22548:58;22640:5;22635:2;22627:6;22623:15;22616:30;22431:222;:::o;22659:366::-;22801:3;22822:67;22886:2;22881:3;22822:67;:::i;:::-;22815:74;;22898:93;22987:3;22898:93;:::i;:::-;23016:2;23011:3;23007:12;23000:19;;22659:366;;;:::o;23031:419::-;23197:4;23235:2;23224:9;23220:18;23212:26;;23284:9;23278:4;23274:20;23270:1;23259:9;23255:17;23248:47;23312:131;23438:4;23312:131;:::i;:::-;23304:139;;23031:419;;;:::o;23456:228::-;23596:34;23592:1;23584:6;23580:14;23573:58;23665:11;23660:2;23652:6;23648:15;23641:36;23456:228;:::o;23690:366::-;23832:3;23853:67;23917:2;23912:3;23853:67;:::i;:::-;23846:74;;23929:93;24018:3;23929:93;:::i;:::-;24047:2;24042:3;24038:12;24031:19;;23690:366;;;:::o;24062:419::-;24228:4;24266:2;24255:9;24251:18;24243:26;;24315:9;24309:4;24305:20;24301:1;24290:9;24286:17;24279:47;24343:131;24469:4;24343:131;:::i;:::-;24335:139;;24062:419;;;:::o;24487:175::-;24627:27;24623:1;24615:6;24611:14;24604:51;24487:175;:::o;24668:366::-;24810:3;24831:67;24895:2;24890:3;24831:67;:::i;:::-;24824:74;;24907:93;24996:3;24907:93;:::i;:::-;25025:2;25020:3;25016:12;25009:19;;24668:366;;;:::o;25040:419::-;25206:4;25244:2;25233:9;25229:18;25221:26;;25293:9;25287:4;25283:20;25279:1;25268:9;25264:17;25257:47;25321:131;25447:4;25321:131;:::i;:::-;25313:139;;25040:419;;;:::o;25465:191::-;25505:3;25524:20;25542:1;25524:20;:::i;:::-;25519:25;;25558:20;25576:1;25558:20;:::i;:::-;25553:25;;25601:1;25598;25594:9;25587:16;;25622:3;25619:1;25616:10;25613:36;;;25629:18;;:::i;:::-;25613:36;25465:191;;;;:::o;25662:176::-;25802:28;25798:1;25790:6;25786:14;25779:52;25662:176;:::o;25844:366::-;25986:3;26007:67;26071:2;26066:3;26007:67;:::i;:::-;26000:74;;26083:93;26172:3;26083:93;:::i;:::-;26201:2;26196:3;26192:12;26185:19;;25844:366;;;:::o;26216:419::-;26382:4;26420:2;26409:9;26405:18;26397:26;;26469:9;26463:4;26459:20;26455:1;26444:9;26440:17;26433:47;26497:131;26623:4;26497:131;:::i;:::-;26489:139;;26216:419;;;:::o;26641:233::-;26680:3;26703:24;26721:5;26703:24;:::i;:::-;26694:33;;26749:66;26742:5;26739:77;26736:103;;26819:18;;:::i;:::-;26736:103;26866:1;26859:5;26855:13;26848:20;;26641:233;;;:::o;26880:173::-;27020:25;27016:1;27008:6;27004:14;26997:49;26880:173;:::o;27059:366::-;27201:3;27222:67;27286:2;27281:3;27222:67;:::i;:::-;27215:74;;27298:93;27387:3;27298:93;:::i;:::-;27416:2;27411:3;27407:12;27400:19;;27059:366;;;:::o;27431:419::-;27597:4;27635:2;27624:9;27620:18;27612:26;;27684:9;27678:4;27674:20;27670:1;27659:9;27655:17;27648:47;27712:131;27838:4;27712:131;:::i;:::-;27704:139;;27431:419;;;:::o;27856:194::-;27896:4;27916:20;27934:1;27916:20;:::i;:::-;27911:25;;27950:20;27968:1;27950:20;:::i;:::-;27945:25;;27994:1;27991;27987:9;27979:17;;28018:1;28012:4;28009:11;28006:37;;;28023:18;;:::i;:::-;28006:37;27856:194;;;;:::o;28056:114::-;28123:6;28157:5;28151:12;28141:22;;28056:114;;;:::o;28176:184::-;28275:11;28309:6;28304:3;28297:19;28349:4;28344:3;28340:14;28325:29;;28176:184;;;;:::o;28366:132::-;28433:4;28456:3;28448:11;;28486:4;28481:3;28477:14;28469:22;;28366:132;;;:::o;28504:108::-;28581:24;28599:5;28581:24;:::i;:::-;28576:3;28569:37;28504:108;;:::o;28618:179::-;28687:10;28708:46;28750:3;28742:6;28708:46;:::i;:::-;28786:4;28781:3;28777:14;28763:28;;28618:179;;;;:::o;28803:113::-;28873:4;28905;28900:3;28896:14;28888:22;;28803:113;;;:::o;28952:732::-;29071:3;29100:54;29148:5;29100:54;:::i;:::-;29170:86;29249:6;29244:3;29170:86;:::i;:::-;29163:93;;29280:56;29330:5;29280:56;:::i;:::-;29359:7;29390:1;29375:284;29400:6;29397:1;29394:13;29375:284;;;29476:6;29470:13;29503:63;29562:3;29547:13;29503:63;:::i;:::-;29496:70;;29589:60;29642:6;29589:60;:::i;:::-;29579:70;;29435:224;29422:1;29419;29415:9;29410:14;;29375:284;;;29379:14;29675:3;29668:10;;29076:608;;;28952:732;;;;:::o;29690:831::-;29953:4;29991:3;29980:9;29976:19;29968:27;;30005:71;30073:1;30062:9;30058:17;30049:6;30005:71;:::i;:::-;30086:80;30162:2;30151:9;30147:18;30138:6;30086:80;:::i;:::-;30213:9;30207:4;30203:20;30198:2;30187:9;30183:18;30176:48;30241:108;30344:4;30335:6;30241:108;:::i;:::-;30233:116;;30359:72;30427:2;30416:9;30412:18;30403:6;30359:72;:::i;:::-;30441:73;30509:3;30498:9;30494:19;30485:6;30441:73;:::i;:::-;29690:831;;;;;;;;:::o;30527:180::-;30575:77;30572:1;30565:88;30672:4;30669:1;30662:15;30696:4;30693:1;30686:15;30713:185;30753:1;30770:20;30788:1;30770:20;:::i;:::-;30765:25;;30804:20;30822:1;30804:20;:::i;:::-;30799:25;;30843:1;30833:35;;30848:18;;:::i;:::-;30833:35;30890:1;30887;30883:9;30878:14;;30713:185;;;;:::o;30904:220::-;31044:34;31040:1;31032:6;31028:14;31021:58;31113:3;31108:2;31100:6;31096:15;31089:28;30904:220;:::o;31130:366::-;31272:3;31293:67;31357:2;31352:3;31293:67;:::i;:::-;31286:74;;31369:93;31458:3;31369:93;:::i;:::-;31487:2;31482:3;31478:12;31471:19;;31130:366;;;:::o;31502:419::-;31668:4;31706:2;31695:9;31691:18;31683:26;;31755:9;31749:4;31745:20;31741:1;31730:9;31726:17;31719:47;31783:131;31909:4;31783:131;:::i;:::-;31775:139;;31502:419;;;:::o;31927:177::-;32067:29;32063:1;32055:6;32051:14;32044:53;31927:177;:::o;32110:366::-;32252:3;32273:67;32337:2;32332:3;32273:67;:::i;:::-;32266:74;;32349:93;32438:3;32349:93;:::i;:::-;32467:2;32462:3;32458:12;32451:19;;32110:366;;;:::o;32482:419::-;32648:4;32686:2;32675:9;32671:18;32663:26;;32735:9;32729:4;32725:20;32721:1;32710:9;32706:17;32699:47;32763:131;32889:4;32763:131;:::i;:::-;32755:139;;32482:419;;;:::o

Swarm Source

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