ETH Price: $3,406.30 (+2.59%)

Token

PoopCoin (Poop)
 

Overview

Max Total Supply

1,000,000,000 Poop

Holders

35

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000001 Poop

Value
$0.00
0x868a4e996fa50acd2c28090f20d2f99140c2d338
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:
PoopCoin

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

/*

PoopCoin - Poop

PoopCoin is on a mission to make the world cleaner, one dog poop at a time. Built on the idea that small actions can create big change.
Get $Poop rewards for every verified poop pickup!

https://t.me/poopcoinerc

https://x.com/PoopCoinErc

https://poopcoinerc.com/

*/



pragma solidity 0.8.23;

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

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

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

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

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

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

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

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

}

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

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

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

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

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

}

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

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

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

    uint256 private _initialBuyTax=20;
    uint256 private _initialSellTax=20;
    uint256 public _finalBuyTax=5;
    uint256 public _finalSellTax=5;
    uint256 private _reduceBuyTaxAt=5;
    uint256 private _reduceSellTaxAt=5;
    uint256 private _preventSwapBefore=10;
    uint256 public _transferTax=0;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1_000_000_000 * 10**_decimals;
    string private constant _name = unicode"PoopCoin";
    string private constant _symbol = unicode"Poop";
    uint256 public _maxTxAmount =  2 * (_tTotal/100);
    uint256 public _maxWalletSize =  2 * (_tTotal/100);
    uint256 private _taxSwapThreshold=  1 * (_tTotal/1000);
    uint256 private _maxTaxSwap= 1 * (_tTotal/100);
    
    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(0x6741eb566a832065a8c580D08aFf84fa628FeB30);
        _balances[address(this)] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

    function delBot(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");
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Router.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        swapEnabled = true;
        tradingOpen = true;
    }
    
    function reduceTax(uint256 _newTax) external{
      require(_msgSender()==_taxWallet);
      require(_newTax<=_finalBuyTax && _newTax<=_finalSellTax);
      _finalBuyTax=_newTax;
      _finalSellTax=_newTax;
    }

    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 manualUnclog() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }

    function manualSend() external {
        require(_msgSender()==_taxWallet);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
}

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":"_finalBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_finalSellTax","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":"_transferTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBot","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":"delBot","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":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualUnclog","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":"_newTax","type":"uint256"}],"name":"reduceTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimit","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"},{"stateMutability":"payable","type":"receive"}]

608060405260146006556014600755600560085560056009556005600a556005600b55600a600c555f600d555f600e5560646009600a6200004191906200096e565b633b9aca00620000529190620009be565b6200005e919062000a35565b60026200006c9190620009be565b600f5560646009600a6200008191906200096e565b633b9aca00620000929190620009be565b6200009e919062000a35565b6002620000ac9190620009be565b6010556103e86009600a620000c291906200096e565b633b9aca00620000d39190620009be565b620000df919062000a35565b6001620000ed9190620009be565b60115560646009600a6200010291906200096e565b633b9aca00620001139190620009be565b6200011f919062000a35565b60016200012d9190620009be565b6012555f601460156101000a81548160ff0219169083151502179055505f601460166101000a81548160ff0219169083151502179055505f6015555f60165534801562000178575f80fd5b505f6200018a620007ae60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350736741eb566a832065a8c580d08aff84fa628feb3060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6200028a91906200096e565b633b9aca006200029b9190620009be565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620002f1620007b560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004ca573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004f0919062000ad1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000577573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200059d919062000ad1565b6040518363ffffffff1660e01b8152600401620005bc92919062000b12565b6020604051808303815f875af1158015620005d9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620005ff919062000ad1565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401620006dd92919062000b4e565b6020604051808303815f875af1158015620006fa573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000720919062000bb3565b503073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6200078091906200096e565b633b9aca00620007919190620009be565b604051620007a0919062000be3565b60405180910390a362000bfe565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000866578086048111156200083e576200083d620007dc565b5b60018516156200084e5780820291505b80810290506200085e8562000809565b94506200081e565b94509492505050565b5f8262000880576001905062000952565b816200088f575f905062000952565b8160018114620008a85760028114620008b357620008e9565b600191505062000952565b60ff841115620008c857620008c7620007dc565b5b8360020a915084821115620008e257620008e1620007dc565b5b5062000952565b5060208310610133831016604e8410600b8410161715620009235782820a9050838111156200091d576200091c620007dc565b5b62000952565b62000932848484600162000815565b925090508184048111156200094c576200094b620007dc565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6200097a8262000959565b9150620009878362000962565b9250620009b67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200086f565b905092915050565b5f620009ca8262000959565b9150620009d78362000959565b9250828202620009e78162000959565b9150828204841483151762000a015762000a00620007dc565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000a418262000959565b915062000a4e8362000959565b92508262000a615762000a6062000a08565b5b828204905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000a9b8262000a70565b9050919050565b62000aad8162000a8f565b811462000ab8575f80fd5b50565b5f8151905062000acb8162000aa2565b92915050565b5f6020828403121562000ae95762000ae862000a6c565b5b5f62000af88482850162000abb565b91505092915050565b62000b0c8162000a8f565b82525050565b5f60408201905062000b275f83018562000b01565b62000b36602083018462000b01565b9392505050565b62000b488162000959565b82525050565b5f60408201905062000b635f83018562000b01565b62000b72602083018462000b3d565b9392505050565b5f8115159050919050565b62000b8f8162000b79565b811462000b9a575f80fd5b50565b5f8151905062000bad8162000b84565b92915050565b5f6020828403121562000bcb5762000bca62000a6c565b5b5f62000bda8482850162000b9d565b91505092915050565b5f60208201905062000bf85f83018462000b3d565b92915050565b6134338062000c0c5f395ff3fe608060405260043610610169575f3560e01c8063715018a6116100d0578063a9059cbb11610089578063c97c182111610063578063c97c1821146104e0578063dd62ed3e14610508578063ef98589414610544578063f42938901461056c57610170565b8063a9059cbb14610470578063baeb7a7d146104ac578063c9567bf9146104d657610170565b8063715018a61461038a5780637d1db4a5146103a05780638cd4426d146103ca5780638da5cb5b146103f25780638f9a55c01461041c57806395d89b411461044657610170565b8063313ce56711610122578063313ce5671461029257806338347fa4146102bc5780633bbac579146102d25780633ef947211461030e578063622565891461033857806370a082311461034e57610170565b806306fdde0314610174578063095ea7b31461019e57806317391e49146101da57806318160ddd1461020457806321bbcbb11461022e57806323b872dd1461025657610170565b3661017057005b5f80fd5b34801561017f575f80fd5b50610188610582565b6040516101959190612389565b60405180910390f35b3480156101a9575f80fd5b506101c460048036038101906101bf9190612447565b6105bf565b6040516101d1919061249f565b60405180910390f35b3480156101e5575f80fd5b506101ee6105dc565b6040516101fb91906124c7565b60405180910390f35b34801561020f575f80fd5b506102186105e2565b60405161022591906124c7565b60405180910390f35b348015610239575f80fd5b50610254600480360381019061024f9190612620565b610605565b005b348015610261575f80fd5b5061027c60048036038101906102779190612667565b610724565b604051610289919061249f565b60405180910390f35b34801561029d575f80fd5b506102a66107f8565b6040516102b391906126d2565b60405180910390f35b3480156102c7575f80fd5b506102d0610800565b005b3480156102dd575f80fd5b506102f860048036038101906102f391906126eb565b610897565b604051610305919061249f565b60405180910390f35b348015610319575f80fd5b506103226108e9565b60405161032f91906124c7565b60405180910390f35b348015610343575f80fd5b5061034c6108ef565b005b348015610359575f80fd5b50610374600480360381019061036f91906126eb565b610a1e565b60405161038191906124c7565b60405180910390f35b348015610395575f80fd5b5061039e610a64565b005b3480156103ab575f80fd5b506103b4610bb2565b6040516103c191906124c7565b60405180910390f35b3480156103d5575f80fd5b506103f060048036038101906103eb9190612447565b610bb8565b005b3480156103fd575f80fd5b50610406610d59565b6040516104139190612725565b60405180910390f35b348015610427575f80fd5b50610430610d80565b60405161043d91906124c7565b60405180910390f35b348015610451575f80fd5b5061045a610d86565b6040516104679190612389565b60405180910390f35b34801561047b575f80fd5b5061049660048036038101906104919190612447565b610dc3565b6040516104a3919061249f565b60405180910390f35b3480156104b7575f80fd5b506104c0610de0565b6040516104cd91906124c7565b60405180910390f35b6104de610de6565b005b3480156104eb575f80fd5b5061050660048036038101906105019190612620565b610fff565b005b348015610513575f80fd5b5061052e6004803603810190610529919061273e565b61111d565b60405161053b91906124c7565b60405180910390f35b34801561054f575f80fd5b5061056a6004803603810190610565919061277c565b61119f565b005b348015610577575f80fd5b5061058061122b565b005b60606040518060400160405280600881526020017f506f6f70436f696e000000000000000000000000000000000000000000000000815250905090565b5f6105d26105cb61129a565b84846112a1565b6001905092915050565b600d5481565b5f6009600a6105f19190612903565b633b9aca00610600919061294d565b905090565b61060d61129a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610699576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610690906129d8565b60405180910390fd5b5f5b815181101561072057600160045f8484815181106106bc576106bb6129f6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061069b565b5050565b5f610730848484611464565b6107ed8461073c61129a565b6107e8856040518060600160405280602881526020016133d66028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61079f61129a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611deb9092919063ffffffff16565b6112a1565b600190509392505050565b5f6009905090565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661084061129a565b73ffffffffffffffffffffffffffffffffffffffff161461085f575f80fd5b5f61086930610a1e565b90505f81111561087d5761087c81611e4d565b5b5f4790505f81111561089357610892816120b8565b5b5050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60095481565b6108f761129a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097a906129d8565b60405180910390fd5b6009600a6109919190612903565b633b9aca006109a0919061294d565b600f819055506009600a6109b49190612903565b633b9aca006109c3919061294d565b6010819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6109f89190612903565b633b9aca00610a07919061294d565b604051610a1491906124c7565b60405180910390a1565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610a6c61129a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aef906129d8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f5481565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bf861129a565b73ffffffffffffffffffffffffffffffffffffffff1614610c17575f80fd5b5f610cb56064610ca7848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c5a9190612725565b602060405180830381865afa158015610c75573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c999190612a37565b61212090919063ffffffff16565b61219790919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610d13929190612abd565b6020604051808303815f875af1158015610d2f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d539190612b0e565b50505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600481526020017f506f6f7000000000000000000000000000000000000000000000000000000000815250905090565b5f610dd6610dcf61129a565b8484611464565b6001905092915050565b60085481565b610dee61129a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e71906129d8565b60405180910390fd5b60148054906101000a900460ff1615610ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebf90612b83565b60405180910390fd5b610f103060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610efc9190612903565b633b9aca00610f0b919061294d565b6112a1565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430610f5830610a1e565b5f80610f62610d59565b426040518863ffffffff1660e01b8152600401610f8496959493929190612bda565b60606040518083038185885af1158015610fa0573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610fc59190612c39565b5050506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b61100761129a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108a906129d8565b60405180910390fd5b5f5b8151811015611119575f60045f8484815181106110b5576110b46129f6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611095565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111df61129a565b73ffffffffffffffffffffffffffffffffffffffff16146111fe575f80fd5b600854811115801561121257506009548111155b61121a575f80fd5b806008819055508060098190555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661126b61129a565b73ffffffffffffffffffffffffffffffffffffffff161461128a575f80fd5b5f479050611297816120b8565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361130f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130690612cf9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361137d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137490612d87565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161145791906124c7565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c990612e15565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611540576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153790612ea3565b60405180910390fd5b5f8111611582576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157990612f31565b60405180910390fd5b5f61158b610d59565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156115f957506115c9610d59565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b3b5760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561169c575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6116a4575f80fd5b5f600e54036116ec576116e960646116db600a54600e54116116c8576006546116cc565b6008545b8561212090919063ffffffff16565b61219790919063ffffffff16565b90505b5f600e5411156117215761171e6064611710600d548561212090919063ffffffff16565b61219790919063ffffffff16565b90505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156117ca575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561181d575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561191557600f54821115611867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185e90612f99565b60405180910390fd5b6010548261187485610a1e565b61187e9190612fb7565b11156118bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b690613034565b60405180910390fd5b6118fb60646118ed600a54600e54116118da576006546118de565b6008545b8561212090919063ffffffff16565b61219790919063ffffffff16565b9050600e5f81548092919061190f90613052565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561199d57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156119e1576119de60646119d0600b54600e54116119bd576007546119c1565b6009545b8561212090919063ffffffff16565b61219790919063ffffffff16565b90505b5f6119eb30610a1e565b9050601460159054906101000a900460ff16158015611a56575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611a6e5750601460169054906101000a900460ff165b8015611a7b575060115481115b8015611a8a5750600c54600e54115b15611b3957601654431115611aa1575f6015819055505b600360155410611ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611add906130e3565b60405180910390fd5b611b03611afe84611af9846012546121e0565b6121e0565b611e4d565b5f4790505f811115611b1957611b18476120b8565b5b60155f815480929190611b2b90613052565b919050555043601681905550505b505b5f811115611c3a57611b938160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121f890919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c3191906124c7565b60405180910390a35b611c8a8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461225590919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611d2d611ce1828461225590919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121f890919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611dd0848661225590919063ffffffff16565b604051611ddd91906124c7565b60405180910390a350505050565b5f838311158290611e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e299190612389565b60405180910390fd5b505f8385611e409190613101565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611e8457611e836124e4565b5b604051908082528060200260200182016040528015611eb25781602001602082028036833780820191505090505b50905030815f81518110611ec957611ec86129f6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f919190613148565b81600181518110611fa557611fa46129f6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061200b3060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846112a1565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161206d95949392919061322a565b5f604051808303815f87803b158015612084575f80fd5b505af1158015612096573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561211c573d5f803e3d5ffd5b5050565b5f808303612130575f9050612191565b5f828461213d919061294d565b905082848261214c91906132af565b1461218c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121839061334f565b60405180910390fd5b809150505b92915050565b5f6121d883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061229e565b905092915050565b5f8183116121ee57826121f0565b815b905092915050565b5f8082846122069190612fb7565b90508381101561224b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612242906133b7565b60405180910390fd5b8091505092915050565b5f61229683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611deb565b905092915050565b5f80831182906122e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122db9190612389565b60405180910390fd5b505f83856122f291906132af565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561233657808201518184015260208101905061231b565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61235b826122ff565b6123658185612309565b9350612375818560208601612319565b61237e81612341565b840191505092915050565b5f6020820190508181035f8301526123a18184612351565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6123e3826123ba565b9050919050565b6123f3816123d9565b81146123fd575f80fd5b50565b5f8135905061240e816123ea565b92915050565b5f819050919050565b61242681612414565b8114612430575f80fd5b50565b5f813590506124418161241d565b92915050565b5f806040838503121561245d5761245c6123b2565b5b5f61246a85828601612400565b925050602061247b85828601612433565b9150509250929050565b5f8115159050919050565b61249981612485565b82525050565b5f6020820190506124b25f830184612490565b92915050565b6124c181612414565b82525050565b5f6020820190506124da5f8301846124b8565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61251a82612341565b810181811067ffffffffffffffff82111715612539576125386124e4565b5b80604052505050565b5f61254b6123a9565b90506125578282612511565b919050565b5f67ffffffffffffffff821115612576576125756124e4565b5b602082029050602081019050919050565b5f80fd5b5f61259d6125988461255c565b612542565b905080838252602082019050602084028301858111156125c0576125bf612587565b5b835b818110156125e957806125d58882612400565b8452602084019350506020810190506125c2565b5050509392505050565b5f82601f830112612607576126066124e0565b5b813561261784826020860161258b565b91505092915050565b5f60208284031215612635576126346123b2565b5b5f82013567ffffffffffffffff811115612652576126516123b6565b5b61265e848285016125f3565b91505092915050565b5f805f6060848603121561267e5761267d6123b2565b5b5f61268b86828701612400565b935050602061269c86828701612400565b92505060406126ad86828701612433565b9150509250925092565b5f60ff82169050919050565b6126cc816126b7565b82525050565b5f6020820190506126e55f8301846126c3565b92915050565b5f60208284031215612700576126ff6123b2565b5b5f61270d84828501612400565b91505092915050565b61271f816123d9565b82525050565b5f6020820190506127385f830184612716565b92915050565b5f8060408385031215612754576127536123b2565b5b5f61276185828601612400565b925050602061277285828601612400565b9150509250929050565b5f60208284031215612791576127906123b2565b5b5f61279e84828501612433565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561282957808604811115612805576128046127a7565b5b60018516156128145780820291505b8081029050612822856127d4565b94506127e9565b94509492505050565b5f8261284157600190506128fc565b8161284e575f90506128fc565b8160018114612864576002811461286e5761289d565b60019150506128fc565b60ff8411156128805761287f6127a7565b5b8360020a915084821115612897576128966127a7565b5b506128fc565b5060208310610133831016604e8410600b84101617156128d25782820a9050838111156128cd576128cc6127a7565b5b6128fc565b6128df84848460016127e0565b925090508184048111156128f6576128f56127a7565b5b81810290505b9392505050565b5f61290d82612414565b9150612918836126b7565b92506129457fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612832565b905092915050565b5f61295782612414565b915061296283612414565b925082820261297081612414565b91508282048414831517612987576129866127a7565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6129c2602083612309565b91506129cd8261298e565b602082019050919050565b5f6020820190508181035f8301526129ef816129b6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612a318161241d565b92915050565b5f60208284031215612a4c57612a4b6123b2565b5b5f612a5984828501612a23565b91505092915050565b5f819050919050565b5f612a85612a80612a7b846123ba565b612a62565b6123ba565b9050919050565b5f612a9682612a6b565b9050919050565b5f612aa782612a8c565b9050919050565b612ab781612a9d565b82525050565b5f604082019050612ad05f830185612aae565b612add60208301846124b8565b9392505050565b612aed81612485565b8114612af7575f80fd5b50565b5f81519050612b0881612ae4565b92915050565b5f60208284031215612b2357612b226123b2565b5b5f612b3084828501612afa565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612b6d601783612309565b9150612b7882612b39565b602082019050919050565b5f6020820190508181035f830152612b9a81612b61565b9050919050565b5f819050919050565b5f612bc4612bbf612bba84612ba1565b612a62565b612414565b9050919050565b612bd481612baa565b82525050565b5f60c082019050612bed5f830189612716565b612bfa60208301886124b8565b612c076040830187612bcb565b612c146060830186612bcb565b612c216080830185612716565b612c2e60a08301846124b8565b979650505050505050565b5f805f60608486031215612c5057612c4f6123b2565b5b5f612c5d86828701612a23565b9350506020612c6e86828701612a23565b9250506040612c7f86828701612a23565b9150509250925092565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612ce3602483612309565b9150612cee82612c89565b604082019050919050565b5f6020820190508181035f830152612d1081612cd7565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612d71602283612309565b9150612d7c82612d17565b604082019050919050565b5f6020820190508181035f830152612d9e81612d65565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612dff602583612309565b9150612e0a82612da5565b604082019050919050565b5f6020820190508181035f830152612e2c81612df3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612e8d602383612309565b9150612e9882612e33565b604082019050919050565b5f6020820190508181035f830152612eba81612e81565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612f1b602983612309565b9150612f2682612ec1565b604082019050919050565b5f6020820190508181035f830152612f4881612f0f565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612f83601983612309565b9150612f8e82612f4f565b602082019050919050565b5f6020820190508181035f830152612fb081612f77565b9050919050565b5f612fc182612414565b9150612fcc83612414565b9250828201905080821115612fe457612fe36127a7565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f61301e601a83612309565b915061302982612fea565b602082019050919050565b5f6020820190508181035f83015261304b81613012565b9050919050565b5f61305c82612414565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361308e5761308d6127a7565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f6130cd601783612309565b91506130d882613099565b602082019050919050565b5f6020820190508181035f8301526130fa816130c1565b9050919050565b5f61310b82612414565b915061311683612414565b925082820390508181111561312e5761312d6127a7565b5b92915050565b5f81519050613142816123ea565b92915050565b5f6020828403121561315d5761315c6123b2565b5b5f61316a84828501613134565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6131a5816123d9565b82525050565b5f6131b6838361319c565b60208301905092915050565b5f602082019050919050565b5f6131d882613173565b6131e2818561317d565b93506131ed8361318d565b805f5b8381101561321d57815161320488826131ab565b975061320f836131c2565b9250506001810190506131f0565b5085935050505092915050565b5f60a08201905061323d5f8301886124b8565b61324a6020830187612bcb565b818103604083015261325c81866131ce565b905061326b6060830185612716565b61327860808301846124b8565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6132b982612414565b91506132c483612414565b9250826132d4576132d3613282565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613339602183612309565b9150613344826132df565b604082019050919050565b5f6020820190508181035f8301526133668161332d565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6133a1601b83612309565b91506133ac8261336d565b602082019050919050565b5f6020820190508181035f8301526133ce81613395565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202356a19fc4b6e9c3102eee3a67cabca42923f5b38cf1708e67fd2ba304fd467264736f6c63430008170033

Deployed Bytecode

0x608060405260043610610169575f3560e01c8063715018a6116100d0578063a9059cbb11610089578063c97c182111610063578063c97c1821146104e0578063dd62ed3e14610508578063ef98589414610544578063f42938901461056c57610170565b8063a9059cbb14610470578063baeb7a7d146104ac578063c9567bf9146104d657610170565b8063715018a61461038a5780637d1db4a5146103a05780638cd4426d146103ca5780638da5cb5b146103f25780638f9a55c01461041c57806395d89b411461044657610170565b8063313ce56711610122578063313ce5671461029257806338347fa4146102bc5780633bbac579146102d25780633ef947211461030e578063622565891461033857806370a082311461034e57610170565b806306fdde0314610174578063095ea7b31461019e57806317391e49146101da57806318160ddd1461020457806321bbcbb11461022e57806323b872dd1461025657610170565b3661017057005b5f80fd5b34801561017f575f80fd5b50610188610582565b6040516101959190612389565b60405180910390f35b3480156101a9575f80fd5b506101c460048036038101906101bf9190612447565b6105bf565b6040516101d1919061249f565b60405180910390f35b3480156101e5575f80fd5b506101ee6105dc565b6040516101fb91906124c7565b60405180910390f35b34801561020f575f80fd5b506102186105e2565b60405161022591906124c7565b60405180910390f35b348015610239575f80fd5b50610254600480360381019061024f9190612620565b610605565b005b348015610261575f80fd5b5061027c60048036038101906102779190612667565b610724565b604051610289919061249f565b60405180910390f35b34801561029d575f80fd5b506102a66107f8565b6040516102b391906126d2565b60405180910390f35b3480156102c7575f80fd5b506102d0610800565b005b3480156102dd575f80fd5b506102f860048036038101906102f391906126eb565b610897565b604051610305919061249f565b60405180910390f35b348015610319575f80fd5b506103226108e9565b60405161032f91906124c7565b60405180910390f35b348015610343575f80fd5b5061034c6108ef565b005b348015610359575f80fd5b50610374600480360381019061036f91906126eb565b610a1e565b60405161038191906124c7565b60405180910390f35b348015610395575f80fd5b5061039e610a64565b005b3480156103ab575f80fd5b506103b4610bb2565b6040516103c191906124c7565b60405180910390f35b3480156103d5575f80fd5b506103f060048036038101906103eb9190612447565b610bb8565b005b3480156103fd575f80fd5b50610406610d59565b6040516104139190612725565b60405180910390f35b348015610427575f80fd5b50610430610d80565b60405161043d91906124c7565b60405180910390f35b348015610451575f80fd5b5061045a610d86565b6040516104679190612389565b60405180910390f35b34801561047b575f80fd5b5061049660048036038101906104919190612447565b610dc3565b6040516104a3919061249f565b60405180910390f35b3480156104b7575f80fd5b506104c0610de0565b6040516104cd91906124c7565b60405180910390f35b6104de610de6565b005b3480156104eb575f80fd5b5061050660048036038101906105019190612620565b610fff565b005b348015610513575f80fd5b5061052e6004803603810190610529919061273e565b61111d565b60405161053b91906124c7565b60405180910390f35b34801561054f575f80fd5b5061056a6004803603810190610565919061277c565b61119f565b005b348015610577575f80fd5b5061058061122b565b005b60606040518060400160405280600881526020017f506f6f70436f696e000000000000000000000000000000000000000000000000815250905090565b5f6105d26105cb61129a565b84846112a1565b6001905092915050565b600d5481565b5f6009600a6105f19190612903565b633b9aca00610600919061294d565b905090565b61060d61129a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610699576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610690906129d8565b60405180910390fd5b5f5b815181101561072057600160045f8484815181106106bc576106bb6129f6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061069b565b5050565b5f610730848484611464565b6107ed8461073c61129a565b6107e8856040518060600160405280602881526020016133d66028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61079f61129a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611deb9092919063ffffffff16565b6112a1565b600190509392505050565b5f6009905090565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661084061129a565b73ffffffffffffffffffffffffffffffffffffffff161461085f575f80fd5b5f61086930610a1e565b90505f81111561087d5761087c81611e4d565b5b5f4790505f81111561089357610892816120b8565b5b5050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60095481565b6108f761129a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097a906129d8565b60405180910390fd5b6009600a6109919190612903565b633b9aca006109a0919061294d565b600f819055506009600a6109b49190612903565b633b9aca006109c3919061294d565b6010819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6109f89190612903565b633b9aca00610a07919061294d565b604051610a1491906124c7565b60405180910390a1565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610a6c61129a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aef906129d8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f5481565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bf861129a565b73ffffffffffffffffffffffffffffffffffffffff1614610c17575f80fd5b5f610cb56064610ca7848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c5a9190612725565b602060405180830381865afa158015610c75573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c999190612a37565b61212090919063ffffffff16565b61219790919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610d13929190612abd565b6020604051808303815f875af1158015610d2f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d539190612b0e565b50505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600481526020017f506f6f7000000000000000000000000000000000000000000000000000000000815250905090565b5f610dd6610dcf61129a565b8484611464565b6001905092915050565b60085481565b610dee61129a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e71906129d8565b60405180910390fd5b60148054906101000a900460ff1615610ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebf90612b83565b60405180910390fd5b610f103060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610efc9190612903565b633b9aca00610f0b919061294d565b6112a1565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430610f5830610a1e565b5f80610f62610d59565b426040518863ffffffff1660e01b8152600401610f8496959493929190612bda565b60606040518083038185885af1158015610fa0573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610fc59190612c39565b5050506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b61100761129a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108a906129d8565b60405180910390fd5b5f5b8151811015611119575f60045f8484815181106110b5576110b46129f6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611095565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111df61129a565b73ffffffffffffffffffffffffffffffffffffffff16146111fe575f80fd5b600854811115801561121257506009548111155b61121a575f80fd5b806008819055508060098190555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661126b61129a565b73ffffffffffffffffffffffffffffffffffffffff161461128a575f80fd5b5f479050611297816120b8565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361130f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130690612cf9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361137d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137490612d87565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161145791906124c7565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c990612e15565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611540576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153790612ea3565b60405180910390fd5b5f8111611582576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157990612f31565b60405180910390fd5b5f61158b610d59565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156115f957506115c9610d59565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b3b5760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561169c575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6116a4575f80fd5b5f600e54036116ec576116e960646116db600a54600e54116116c8576006546116cc565b6008545b8561212090919063ffffffff16565b61219790919063ffffffff16565b90505b5f600e5411156117215761171e6064611710600d548561212090919063ffffffff16565b61219790919063ffffffff16565b90505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156117ca575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561181d575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561191557600f54821115611867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185e90612f99565b60405180910390fd5b6010548261187485610a1e565b61187e9190612fb7565b11156118bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b690613034565b60405180910390fd5b6118fb60646118ed600a54600e54116118da576006546118de565b6008545b8561212090919063ffffffff16565b61219790919063ffffffff16565b9050600e5f81548092919061190f90613052565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561199d57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156119e1576119de60646119d0600b54600e54116119bd576007546119c1565b6009545b8561212090919063ffffffff16565b61219790919063ffffffff16565b90505b5f6119eb30610a1e565b9050601460159054906101000a900460ff16158015611a56575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611a6e5750601460169054906101000a900460ff165b8015611a7b575060115481115b8015611a8a5750600c54600e54115b15611b3957601654431115611aa1575f6015819055505b600360155410611ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611add906130e3565b60405180910390fd5b611b03611afe84611af9846012546121e0565b6121e0565b611e4d565b5f4790505f811115611b1957611b18476120b8565b5b60155f815480929190611b2b90613052565b919050555043601681905550505b505b5f811115611c3a57611b938160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121f890919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c3191906124c7565b60405180910390a35b611c8a8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461225590919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611d2d611ce1828461225590919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121f890919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611dd0848661225590919063ffffffff16565b604051611ddd91906124c7565b60405180910390a350505050565b5f838311158290611e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e299190612389565b60405180910390fd5b505f8385611e409190613101565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611e8457611e836124e4565b5b604051908082528060200260200182016040528015611eb25781602001602082028036833780820191505090505b50905030815f81518110611ec957611ec86129f6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f919190613148565b81600181518110611fa557611fa46129f6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061200b3060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846112a1565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161206d95949392919061322a565b5f604051808303815f87803b158015612084575f80fd5b505af1158015612096573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561211c573d5f803e3d5ffd5b5050565b5f808303612130575f9050612191565b5f828461213d919061294d565b905082848261214c91906132af565b1461218c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121839061334f565b60405180910390fd5b809150505b92915050565b5f6121d883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061229e565b905092915050565b5f8183116121ee57826121f0565b815b905092915050565b5f8082846122069190612fb7565b90508381101561224b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612242906133b7565b60405180910390fd5b8091505092915050565b5f61229683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611deb565b905092915050565b5f80831182906122e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122db9190612389565b60405180910390fd5b505f83856122f291906132af565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561233657808201518184015260208101905061231b565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61235b826122ff565b6123658185612309565b9350612375818560208601612319565b61237e81612341565b840191505092915050565b5f6020820190508181035f8301526123a18184612351565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6123e3826123ba565b9050919050565b6123f3816123d9565b81146123fd575f80fd5b50565b5f8135905061240e816123ea565b92915050565b5f819050919050565b61242681612414565b8114612430575f80fd5b50565b5f813590506124418161241d565b92915050565b5f806040838503121561245d5761245c6123b2565b5b5f61246a85828601612400565b925050602061247b85828601612433565b9150509250929050565b5f8115159050919050565b61249981612485565b82525050565b5f6020820190506124b25f830184612490565b92915050565b6124c181612414565b82525050565b5f6020820190506124da5f8301846124b8565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61251a82612341565b810181811067ffffffffffffffff82111715612539576125386124e4565b5b80604052505050565b5f61254b6123a9565b90506125578282612511565b919050565b5f67ffffffffffffffff821115612576576125756124e4565b5b602082029050602081019050919050565b5f80fd5b5f61259d6125988461255c565b612542565b905080838252602082019050602084028301858111156125c0576125bf612587565b5b835b818110156125e957806125d58882612400565b8452602084019350506020810190506125c2565b5050509392505050565b5f82601f830112612607576126066124e0565b5b813561261784826020860161258b565b91505092915050565b5f60208284031215612635576126346123b2565b5b5f82013567ffffffffffffffff811115612652576126516123b6565b5b61265e848285016125f3565b91505092915050565b5f805f6060848603121561267e5761267d6123b2565b5b5f61268b86828701612400565b935050602061269c86828701612400565b92505060406126ad86828701612433565b9150509250925092565b5f60ff82169050919050565b6126cc816126b7565b82525050565b5f6020820190506126e55f8301846126c3565b92915050565b5f60208284031215612700576126ff6123b2565b5b5f61270d84828501612400565b91505092915050565b61271f816123d9565b82525050565b5f6020820190506127385f830184612716565b92915050565b5f8060408385031215612754576127536123b2565b5b5f61276185828601612400565b925050602061277285828601612400565b9150509250929050565b5f60208284031215612791576127906123b2565b5b5f61279e84828501612433565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561282957808604811115612805576128046127a7565b5b60018516156128145780820291505b8081029050612822856127d4565b94506127e9565b94509492505050565b5f8261284157600190506128fc565b8161284e575f90506128fc565b8160018114612864576002811461286e5761289d565b60019150506128fc565b60ff8411156128805761287f6127a7565b5b8360020a915084821115612897576128966127a7565b5b506128fc565b5060208310610133831016604e8410600b84101617156128d25782820a9050838111156128cd576128cc6127a7565b5b6128fc565b6128df84848460016127e0565b925090508184048111156128f6576128f56127a7565b5b81810290505b9392505050565b5f61290d82612414565b9150612918836126b7565b92506129457fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612832565b905092915050565b5f61295782612414565b915061296283612414565b925082820261297081612414565b91508282048414831517612987576129866127a7565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6129c2602083612309565b91506129cd8261298e565b602082019050919050565b5f6020820190508181035f8301526129ef816129b6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612a318161241d565b92915050565b5f60208284031215612a4c57612a4b6123b2565b5b5f612a5984828501612a23565b91505092915050565b5f819050919050565b5f612a85612a80612a7b846123ba565b612a62565b6123ba565b9050919050565b5f612a9682612a6b565b9050919050565b5f612aa782612a8c565b9050919050565b612ab781612a9d565b82525050565b5f604082019050612ad05f830185612aae565b612add60208301846124b8565b9392505050565b612aed81612485565b8114612af7575f80fd5b50565b5f81519050612b0881612ae4565b92915050565b5f60208284031215612b2357612b226123b2565b5b5f612b3084828501612afa565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612b6d601783612309565b9150612b7882612b39565b602082019050919050565b5f6020820190508181035f830152612b9a81612b61565b9050919050565b5f819050919050565b5f612bc4612bbf612bba84612ba1565b612a62565b612414565b9050919050565b612bd481612baa565b82525050565b5f60c082019050612bed5f830189612716565b612bfa60208301886124b8565b612c076040830187612bcb565b612c146060830186612bcb565b612c216080830185612716565b612c2e60a08301846124b8565b979650505050505050565b5f805f60608486031215612c5057612c4f6123b2565b5b5f612c5d86828701612a23565b9350506020612c6e86828701612a23565b9250506040612c7f86828701612a23565b9150509250925092565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612ce3602483612309565b9150612cee82612c89565b604082019050919050565b5f6020820190508181035f830152612d1081612cd7565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612d71602283612309565b9150612d7c82612d17565b604082019050919050565b5f6020820190508181035f830152612d9e81612d65565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612dff602583612309565b9150612e0a82612da5565b604082019050919050565b5f6020820190508181035f830152612e2c81612df3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612e8d602383612309565b9150612e9882612e33565b604082019050919050565b5f6020820190508181035f830152612eba81612e81565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612f1b602983612309565b9150612f2682612ec1565b604082019050919050565b5f6020820190508181035f830152612f4881612f0f565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612f83601983612309565b9150612f8e82612f4f565b602082019050919050565b5f6020820190508181035f830152612fb081612f77565b9050919050565b5f612fc182612414565b9150612fcc83612414565b9250828201905080821115612fe457612fe36127a7565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f61301e601a83612309565b915061302982612fea565b602082019050919050565b5f6020820190508181035f83015261304b81613012565b9050919050565b5f61305c82612414565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361308e5761308d6127a7565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f6130cd601783612309565b91506130d882613099565b602082019050919050565b5f6020820190508181035f8301526130fa816130c1565b9050919050565b5f61310b82612414565b915061311683612414565b925082820390508181111561312e5761312d6127a7565b5b92915050565b5f81519050613142816123ea565b92915050565b5f6020828403121561315d5761315c6123b2565b5b5f61316a84828501613134565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6131a5816123d9565b82525050565b5f6131b6838361319c565b60208301905092915050565b5f602082019050919050565b5f6131d882613173565b6131e2818561317d565b93506131ed8361318d565b805f5b8381101561321d57815161320488826131ab565b975061320f836131c2565b9250506001810190506131f0565b5085935050505092915050565b5f60a08201905061323d5f8301886124b8565b61324a6020830187612bcb565b818103604083015261325c81866131ce565b905061326b6060830185612716565b61327860808301846124b8565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6132b982612414565b91506132c483612414565b9250826132d4576132d3613282565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613339602183612309565b9150613344826132df565b604082019050919050565b5f6020820190508181035f8301526133668161332d565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6133a1601b83612309565b91506133ac8261336d565b602082019050919050565b5f6020820190508181035f8301526133ce81613395565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202356a19fc4b6e9c3102eee3a67cabca42923f5b38cf1708e67fd2ba304fd467264736f6c63430008170033

Deployed Bytecode Sourcemap

3783:9125:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6020:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6853:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4424:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6297:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11007:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7022:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6206:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12360:350;;;;;;;;;;;;;:::i;:::-;;11347:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4262:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10741:158;;;;;;;;;;;;;:::i;:::-;;6400:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2864:148;;;;;;;;;;;;;:::i;:::-;;4720:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12086:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2650:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4775:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6111:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6527:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4226:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11438:373;;;:::i;:::-;;11178:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6702:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11823:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12718:187;;;;;;;;;;;;;:::i;:::-;;6020:83;6057:13;6090:5;;;;;;;;;;;;;;;;;6083:12;;6020:83;:::o;6853:161::-;6928:4;6945:39;6954:12;:10;:12::i;:::-;6968:7;6977:6;6945:8;:39::i;:::-;7002:4;6995:11;;6853:161;;;;:::o;4424:29::-;;;;:::o;6297:95::-;6350:7;4531:1;4590:2;:13;;;;:::i;:::-;4574;:29;;;;:::i;:::-;6370:14;;6297:95;:::o;11007:163::-;2787:12;:10;:12::i;:::-;2777:22;;:6;;;;;;;;;;:22;;;2769:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11080:6:::1;11075:88;11096:5;:12;11092:1;:16;11075:88;;;11147:4;11130;:14;11135:5;11141:1;11135:8;;;;;;;;:::i;:::-;;;;;;;;11130:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;11110:3;;;;;;;11075:88;;;;11007:163:::0;:::o;7022:313::-;7120:4;7137:36;7147:6;7155:9;7166:6;7137:9;:36::i;:::-;7184:121;7193:6;7201:12;:10;:12::i;:::-;7215:89;7253:6;7215:89;;;;;;;;;;;;;;;;;:11;:19;7227:6;7215:19;;;;;;;;;;;;;;;:33;7235:12;:10;:12::i;:::-;7215:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7184:8;:121::i;:::-;7323:4;7316:11;;7022:313;;;;;:::o;6206:83::-;6247:5;4531:1;6265:16;;6206:83;:::o;12360:350::-;12426:10;;;;;;;;;;;12412:24;;:12;:10;:12::i;:::-;:24;;;12404:33;;;;;;12448:20;12469:24;12487:4;12469:9;:24::i;:::-;12448:45;;12520:1;12507:12;:14;12504:73;;;12535:30;12552:12;12535:16;:30::i;:::-;12504:73;12587:18;12606:21;12587:40;;12652:1;12641:10;:12;12638:65;;;12667:24;12680:10;12667:12;:24::i;:::-;12638:65;12393:317;;12360:350::o;11347:83::-;11394:4;11415;:7;11420:1;11415:7;;;;;;;;;;;;;;;;;;;;;;;;;11408:14;;11347:83;;;:::o;4262:30::-;;;;:::o;10741:158::-;2787:12;:10;:12::i;:::-;2777:22;;:6;;;;;;;;;;:22;;;2769:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4531:1:::1;4590:2;:13;;;;:::i;:::-;4574;:29;;;;:::i;:::-;10793:12;:22;;;;4531:1;4590:2;:13;;;;:::i;:::-;4574;:29;;;;:::i;:::-;10826:14;:22;;;;10864:27;4531:1;4590:2;:13;;;;:::i;:::-;4574;:29;;;;:::i;:::-;10864:27;;;;;;:::i;:::-;;;;;;;;10741:158::o:0;6400:119::-;6466:7;6493:9;:18;6503:7;6493:18;;;;;;;;;;;;;;;;6486:25;;6400:119;;;:::o;2864:148::-;2787:12;:10;:12::i;:::-;2777:22;;:6;;;;;;;;;;:22;;;2769:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2971:1:::1;2934:40;;2955:6;::::0;::::1;;;;;;;;2934:40;;;;;;;;;;;;3002:1;2985:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2864:148::o:0;4720:48::-;;;;:::o;12086:266::-;12184:10;;;;;;;;;;;12170:24;;:12;:10;:12::i;:::-;:24;;;12162:33;;;;;;12206:15;12224:63;12283:3;12224:54;12270:7;12231:8;12224:26;;;12259:4;12224:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;:54;;;;:::i;:::-;:58;;:63;;;;:::i;:::-;12206:81;;12305:8;12298:25;;;12324:10;;;;;;;;;;;12336:7;12298:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12151:201;12086:266;;:::o;2650:79::-;2688:7;2715:6;;;;;;;;;;;2708:13;;2650:79;:::o;4775:50::-;;;;:::o;6111:87::-;6150:13;6183:7;;;;;;;;;;;;;;;;;6176:14;;6111:87;:::o;6527:167::-;6605:4;6622:42;6632:12;:10;:12::i;:::-;6646:9;6657:6;6622:9;:42::i;:::-;6682:4;6675:11;;6527:167;;;;:::o;4226:29::-;;;;:::o;11438:373::-;2787:12;:10;:12::i;:::-;2777:22;;:6;;;;;;;;;;:22;;;2769:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11510:11:::1;::::0;::::1;;;;;;;;11509:12;11501:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11559:58;11576:4;11591:15;;;;;;;;;;;4531:1;4590:2;:13;;;;:::i;:::-;4574;:29;;;;:::i;:::-;11559:8;:58::i;:::-;11628:15;;;;;;;;;;;:31;;;11667:9;11686:4;11692:24;11710:4;11692:9;:24::i;:::-;11717:1;11719::::0;11721:7:::1;:5;:7::i;:::-;11729:15;11628:117;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11770:4;11756:11;;:18;;;;;;;;;;;;;;;;;;11799:4;11785:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;11438:373::o:0;11178:161::-;2787:12;:10;:12::i;:::-;2777:22;;:6;;;;;;;;;;:22;;;2769:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11250:6:::1;11245:87;11266:6;:13;11262:1;:17;11245:87;;;11317:5;11299:4;:15;11304:6;11311:1;11304:9;;;;;;;;:::i;:::-;;;;;;;;11299:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;11281:3;;;;;;;11245:87;;;;11178:161:::0;:::o;6702:143::-;6783:7;6810:11;:18;6822:5;6810:18;;;;;;;;;;;;;;;:27;6829:7;6810:27;;;;;;;;;;;;;;;;6803:34;;6702:143;;;;:::o;11823:218::-;11898:10;;;;;;;;;;;11884:24;;:12;:10;:12::i;:::-;:24;;;11876:33;;;;;;11935:12;;11926:7;:21;;:47;;;;;11960:13;;11951:7;:22;;11926:47;11918:56;;;;;;11996:7;11983:12;:20;;;;12026:7;12012:13;:21;;;;11823:218;:::o;12718:187::-;12782:10;;;;;;;;;;;12768:24;;:12;:10;:12::i;:::-;:24;;;12760:33;;;;;;12804:26;12833:21;12804:50;;12865:32;12878:18;12865:12;:32::i;:::-;12749:156;12718:187::o;405:98::-;458:7;485:10;478:17;;405:98;:::o;7343:335::-;7453:1;7436:19;;:5;:19;;;7428:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7534:1;7515:21;;:7;:21;;;7507:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7616:6;7586:11;:18;7598:5;7586:18;;;;;;;;;;;;;;;:27;7605:7;7586:27;;;;;;;;;;;;;;;:36;;;;7654:7;7638:32;;7647:5;7638:32;;;7663:6;7638:32;;;;;;:::i;:::-;;;;;;;;7343:335;;;:::o;7686:2448::-;7790:1;7774:18;;:4;:18;;;7766:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7867:1;7853:16;;:2;:16;;;7845:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7937:1;7928:6;:10;7920:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7995:17;8037:7;:5;:7::i;:::-;8029:15;;:4;:15;;;;:32;;;;;8054:7;:5;:7::i;:::-;8048:13;;:2;:13;;;;8029:32;8025:1753;;;8087:4;:10;8092:4;8087:10;;;;;;;;;;;;;;;;;;;;;;;;;8086:11;:24;;;;;8102:4;:8;8107:2;8102:8;;;;;;;;;;;;;;;;;;;;;;;;;8101:9;8086:24;8078:33;;;;;;8142:1;8131:9;;:12;8128:139;;8175:76;8247:3;8175:67;8197:15;;8187:9;;:25;8186:55;;8227:14;;8186:55;;;8214:12;;8186:55;8175:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;8163:88;;8128:139;8294:1;8284:9;;:11;8281:95;;;8327:33;8356:3;8327:24;8338:12;;8327:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;8315:45;;8281:95;8404:13;;;;;;;;;;;8396:21;;:4;:21;;;:55;;;;;8435:15;;;;;;;;;;;8421:30;;:2;:30;;;;8396:55;:83;;;;;8457:18;:22;8476:2;8457:22;;;;;;;;;;;;;;;;;;;;;;;;;8455:24;8396:83;8392:420;;;8519:12;;8509:6;:22;;8501:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8614:14;;8604:6;8588:13;8598:2;8588:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8580:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8690:76;8762:3;8690:67;8712:15;;8702:9;;:25;8701:55;;8742:14;;8701:55;;;8729:12;;8701:55;8690:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;8678:88;;8785:9;;:11;;;;;;;;;:::i;:::-;;;;;;8392:420;8837:13;;;;;;;;;;;8831:19;;:2;:19;;;:43;;;;;8869:4;8854:20;;:4;:20;;;;8831:43;8828:174;;;8907:79;8982:3;8907:70;8929:16;;8919:9;;:26;8918:58;;8961:15;;8918:58;;;8947:13;;8918:58;8907:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;8895:91;;8828:174;9018:28;9049:24;9067:4;9049:9;:24::i;:::-;9018:55;;9093:6;;;;;;;;;;;9092:7;:30;;;;;9109:13;;;;;;;;;;;9103:19;;:2;:19;;;9092:30;:45;;;;;9126:11;;;;;;;;;;;9092:45;:89;;;;;9164:17;;9141:20;:40;9092:89;:123;;;;;9197:18;;9185:9;;:30;9092:123;9088:679;;;9255:13;;9240:12;:28;9236:90;;;9305:1;9293:9;:13;;;;9236:90;9364:1;9352:9;;:13;9344:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;9412:69;9429:51;9433:6;9441:38;9445:20;9467:11;;9441:3;:38::i;:::-;9429:3;:51::i;:::-;9412:16;:69::i;:::-;9500:26;9529:21;9500:50;;9594:1;9573:18;:22;9569:106;;;9620:35;9633:21;9620:12;:35::i;:::-;9569:106;9693:9;;:11;;;;;;;;;:::i;:::-;;;;;;9739:12;9723:13;:28;;;;9217:550;9088:679;8063:1715;8025:1753;9803:1;9793:9;:11;9790:161;;;9843:39;9872:9;9843;:24;9861:4;9843:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9818:9;:24;9836:4;9818:24;;;;;;;;;;;;;;;:64;;;;9923:4;9900:39;;9909:4;9900:39;;;9929:9;9900:39;;;;;;:::i;:::-;;;;;;;;9790:161;9977:27;9997:6;9977:9;:15;9987:4;9977:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9961:9;:15;9971:4;9961:15;;;;;;;;;;;;;;;:43;;;;10029:40;10047:21;10058:9;10047:6;:10;;:21;;;;:::i;:::-;10029:9;:13;10039:2;10029:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;10015:9;:13;10025:2;10015:13;;;;;;;;;;;;;;;:54;;;;10100:2;10085:41;;10094:4;10085:41;;;10104:21;10115:9;10104:6;:10;;:21;;;;:::i;:::-;10085:41;;;;;;:::i;:::-;;;;;;;;7755:2379;7686:2448;;;:::o;1542:190::-;1628:7;1661:1;1656;:6;;1664:12;1648:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1688:9;1704:1;1700;:5;;;;:::i;:::-;1688:17;;1723:1;1716:8;;;1542:190;;;;;:::o;10250:483::-;5310:4;5301:6;;:13;;;;;;;;;;;;;;;;;;10328:21:::1;10366:1;10352:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10328:40;;10397:4;10379;10384:1;10379:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10423:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10413:4;10418:1;10413:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10456:62;10473:4;10488:15;;;;;;;;;;;10506:11;10456:8;:62::i;:::-;10529:15;;;;;;;;;;;:66;;;10610:11;10636:1;10652:4;10679;10699:15;10529:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10317:416;5346:5:::0;5337:6;;:14;;;;;;;;;;;;;;;;;;10250:483;:::o;10907:92::-;10964:10;;;;;;;;;;;:19;;:27;10984:6;10964:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10907:92;:::o;1740:246::-;1798:7;1827:1;1822;:6;1818:47;;1852:1;1845:8;;;;1818:47;1875:9;1891:1;1887;:5;;;;:::i;:::-;1875:17;;1920:1;1915;1911;:5;;;;:::i;:::-;:10;1903:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1977:1;1970:8;;;1740:246;;;;;:::o;1994:132::-;2052:7;2079:39;2083:1;2086;2079:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2072:46;;1994:132;;;;:::o;10144:98::-;10201:7;10228:1;10226;:3;10225:9;;10233:1;10225:9;;;10231:1;10225:9;10218:16;;10144:98;;;;:::o;1211:179::-;1269:7;1289:9;1305:1;1301;:5;;;;:::i;:::-;1289:17;;1330:1;1325;:6;;1317:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1381:1;1374:8;;;1211:179;;;;:::o;1398:136::-;1456:7;1483:43;1487:1;1490;1483:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1476:50;;1398:136;;;;:::o;2134:189::-;2220:7;2252:1;2248;:5;2255:12;2240:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2279:9;2295:1;2291;:5;;;;:::i;:::-;2279:17;;2314:1;2307:8;;;2134: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:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:117::-;3907:1;3904;3897:12;3921:180;3969:77;3966:1;3959:88;4066:4;4063:1;4056:15;4090:4;4087:1;4080:15;4107:281;4190:27;4212:4;4190:27;:::i;:::-;4182:6;4178:40;4320:6;4308:10;4305:22;4284:18;4272:10;4269:34;4266:62;4263:88;;;4331:18;;:::i;:::-;4263:88;4371:10;4367:2;4360:22;4150:238;4107:281;;:::o;4394:129::-;4428:6;4455:20;;:::i;:::-;4445:30;;4484:33;4512:4;4504:6;4484:33;:::i;:::-;4394:129;;;:::o;4529:311::-;4606:4;4696:18;4688:6;4685:30;4682:56;;;4718:18;;:::i;:::-;4682:56;4768:4;4760:6;4756:17;4748:25;;4828:4;4822;4818:15;4810:23;;4529:311;;;:::o;4846:117::-;4955:1;4952;4945:12;4986:710;5082:5;5107:81;5123:64;5180:6;5123:64;:::i;:::-;5107:81;:::i;:::-;5098:90;;5208:5;5237:6;5230:5;5223:21;5271:4;5264:5;5260:16;5253:23;;5324:4;5316:6;5312:17;5304:6;5300:30;5353:3;5345:6;5342:15;5339:122;;;5372:79;;:::i;:::-;5339:122;5487:6;5470:220;5504:6;5499:3;5496:15;5470:220;;;5579:3;5608:37;5641:3;5629:10;5608:37;:::i;:::-;5603:3;5596:50;5675:4;5670:3;5666:14;5659:21;;5546:144;5530:4;5525:3;5521:14;5514:21;;5470:220;;;5474:21;5088:608;;4986:710;;;;;:::o;5719:370::-;5790:5;5839:3;5832:4;5824:6;5820:17;5816:27;5806:122;;5847:79;;:::i;:::-;5806:122;5964:6;5951:20;5989:94;6079:3;6071:6;6064:4;6056:6;6052:17;5989:94;:::i;:::-;5980:103;;5796:293;5719:370;;;;:::o;6095:539::-;6179:6;6228:2;6216:9;6207:7;6203:23;6199:32;6196:119;;;6234:79;;:::i;:::-;6196:119;6382:1;6371:9;6367:17;6354:31;6412:18;6404:6;6401:30;6398:117;;;6434:79;;:::i;:::-;6398:117;6539:78;6609:7;6600:6;6589:9;6585:22;6539:78;:::i;:::-;6529:88;;6325:302;6095:539;;;;:::o;6640:619::-;6717:6;6725;6733;6782:2;6770:9;6761:7;6757:23;6753:32;6750:119;;;6788:79;;:::i;:::-;6750:119;6908:1;6933:53;6978:7;6969:6;6958:9;6954:22;6933:53;:::i;:::-;6923:63;;6879:117;7035:2;7061:53;7106:7;7097:6;7086:9;7082:22;7061:53;:::i;:::-;7051:63;;7006:118;7163:2;7189:53;7234:7;7225:6;7214:9;7210:22;7189:53;:::i;:::-;7179:63;;7134:118;6640:619;;;;;:::o;7265:86::-;7300:7;7340:4;7333:5;7329:16;7318:27;;7265:86;;;:::o;7357:112::-;7440:22;7456:5;7440:22;:::i;:::-;7435:3;7428:35;7357:112;;:::o;7475:214::-;7564:4;7602:2;7591:9;7587:18;7579:26;;7615:67;7679:1;7668:9;7664:17;7655:6;7615:67;:::i;:::-;7475:214;;;;:::o;7695:329::-;7754:6;7803:2;7791:9;7782:7;7778:23;7774:32;7771:119;;;7809:79;;:::i;:::-;7771:119;7929:1;7954:53;7999:7;7990:6;7979:9;7975:22;7954:53;:::i;:::-;7944:63;;7900:117;7695:329;;;;:::o;8030:118::-;8117:24;8135:5;8117:24;:::i;:::-;8112:3;8105:37;8030:118;;:::o;8154:222::-;8247:4;8285:2;8274:9;8270:18;8262:26;;8298:71;8366:1;8355:9;8351:17;8342:6;8298:71;:::i;:::-;8154:222;;;;:::o;8382:474::-;8450:6;8458;8507:2;8495:9;8486:7;8482:23;8478:32;8475:119;;;8513:79;;:::i;:::-;8475:119;8633:1;8658:53;8703:7;8694:6;8683:9;8679:22;8658:53;:::i;:::-;8648:63;;8604:117;8760:2;8786:53;8831:7;8822:6;8811:9;8807:22;8786:53;:::i;:::-;8776:63;;8731:118;8382:474;;;;;:::o;8862:329::-;8921:6;8970:2;8958:9;8949:7;8945:23;8941:32;8938:119;;;8976:79;;:::i;:::-;8938:119;9096:1;9121:53;9166:7;9157:6;9146:9;9142:22;9121:53;:::i;:::-;9111:63;;9067:117;8862:329;;;;:::o;9197:180::-;9245:77;9242:1;9235:88;9342:4;9339:1;9332:15;9366:4;9363:1;9356:15;9383:102;9425:8;9472:5;9469:1;9465:13;9444:34;;9383:102;;;:::o;9491:848::-;9552:5;9559:4;9583:6;9574:15;;9607:5;9598:14;;9621:712;9642:1;9632:8;9629:15;9621:712;;;9737:4;9732:3;9728:14;9722:4;9719:24;9716:50;;;9746:18;;:::i;:::-;9716:50;9796:1;9786:8;9782:16;9779:451;;;10211:4;10204:5;10200:16;10191:25;;9779:451;10261:4;10255;10251:15;10243:23;;10291:32;10314:8;10291:32;:::i;:::-;10279:44;;9621:712;;;9491:848;;;;;;;:::o;10345:1073::-;10399:5;10590:8;10580:40;;10611:1;10602:10;;10613:5;;10580:40;10639:4;10629:36;;10656:1;10647:10;;10658:5;;10629:36;10725:4;10773:1;10768:27;;;;10809:1;10804:191;;;;10718:277;;10768:27;10786:1;10777:10;;10788:5;;;10804:191;10849:3;10839:8;10836:17;10833:43;;;10856:18;;:::i;:::-;10833:43;10905:8;10902:1;10898:16;10889:25;;10940:3;10933:5;10930:14;10927:40;;;10947:18;;:::i;:::-;10927:40;10980:5;;;10718:277;;11104:2;11094:8;11091:16;11085:3;11079:4;11076:13;11072:36;11054:2;11044:8;11041:16;11036:2;11030:4;11027:12;11023:35;11007:111;11004:246;;;11160:8;11154:4;11150:19;11141:28;;11195:3;11188:5;11185:14;11182:40;;;11202:18;;:::i;:::-;11182:40;11235:5;;11004:246;11275:42;11313:3;11303:8;11297:4;11294:1;11275:42;:::i;:::-;11260:57;;;;11349:4;11344:3;11340:14;11333:5;11330:25;11327:51;;;11358:18;;:::i;:::-;11327:51;11407:4;11400:5;11396:16;11387:25;;10345:1073;;;;;;:::o;11424:281::-;11482:5;11506:23;11524:4;11506:23;:::i;:::-;11498:31;;11550:25;11566:8;11550:25;:::i;:::-;11538:37;;11594:104;11631:66;11621:8;11615:4;11594:104;:::i;:::-;11585:113;;11424:281;;;;:::o;11711:410::-;11751:7;11774:20;11792:1;11774:20;:::i;:::-;11769:25;;11808:20;11826:1;11808:20;:::i;:::-;11803:25;;11863:1;11860;11856:9;11885:30;11903:11;11885:30;:::i;:::-;11874:41;;12064:1;12055:7;12051:15;12048:1;12045:22;12025:1;12018:9;11998:83;11975:139;;12094:18;;:::i;:::-;11975:139;11759:362;11711:410;;;;:::o;12127:182::-;12267:34;12263:1;12255:6;12251:14;12244:58;12127:182;:::o;12315:366::-;12457:3;12478:67;12542:2;12537:3;12478:67;:::i;:::-;12471:74;;12554:93;12643:3;12554:93;:::i;:::-;12672:2;12667:3;12663:12;12656:19;;12315:366;;;:::o;12687:419::-;12853:4;12891:2;12880:9;12876:18;12868:26;;12940:9;12934:4;12930:20;12926:1;12915:9;12911:17;12904:47;12968:131;13094:4;12968:131;:::i;:::-;12960:139;;12687:419;;;:::o;13112:180::-;13160:77;13157:1;13150:88;13257:4;13254:1;13247:15;13281:4;13278:1;13271:15;13298:143;13355:5;13386:6;13380:13;13371:22;;13402:33;13429:5;13402:33;:::i;:::-;13298:143;;;;:::o;13447:351::-;13517:6;13566:2;13554:9;13545:7;13541:23;13537:32;13534:119;;;13572:79;;:::i;:::-;13534:119;13692:1;13717:64;13773:7;13764:6;13753:9;13749:22;13717:64;:::i;:::-;13707:74;;13663:128;13447:351;;;;:::o;13804:60::-;13832:3;13853:5;13846:12;;13804:60;;;:::o;13870:142::-;13920:9;13953:53;13971:34;13980:24;13998:5;13980:24;:::i;:::-;13971:34;:::i;:::-;13953:53;:::i;:::-;13940:66;;13870:142;;;:::o;14018:126::-;14068:9;14101:37;14132:5;14101:37;:::i;:::-;14088:50;;14018:126;;;:::o;14150:134::-;14208:9;14241:37;14272:5;14241:37;:::i;:::-;14228:50;;14150:134;;;:::o;14290:147::-;14385:45;14424:5;14385:45;:::i;:::-;14380:3;14373:58;14290:147;;:::o;14443:348::-;14572:4;14610:2;14599:9;14595:18;14587:26;;14623:79;14699:1;14688:9;14684:17;14675:6;14623:79;:::i;:::-;14712:72;14780:2;14769:9;14765:18;14756:6;14712:72;:::i;:::-;14443:348;;;;;:::o;14797:116::-;14867:21;14882:5;14867:21;:::i;:::-;14860:5;14857:32;14847:60;;14903:1;14900;14893:12;14847:60;14797:116;:::o;14919:137::-;14973:5;15004:6;14998:13;14989:22;;15020:30;15044:5;15020:30;:::i;:::-;14919:137;;;;:::o;15062:345::-;15129:6;15178:2;15166:9;15157:7;15153:23;15149:32;15146:119;;;15184:79;;:::i;:::-;15146:119;15304:1;15329:61;15382:7;15373:6;15362:9;15358:22;15329:61;:::i;:::-;15319:71;;15275:125;15062:345;;;;:::o;15413:173::-;15553:25;15549:1;15541:6;15537:14;15530:49;15413:173;:::o;15592:366::-;15734:3;15755:67;15819:2;15814:3;15755:67;:::i;:::-;15748:74;;15831:93;15920:3;15831:93;:::i;:::-;15949:2;15944:3;15940:12;15933:19;;15592:366;;;:::o;15964:419::-;16130:4;16168:2;16157:9;16153:18;16145:26;;16217:9;16211:4;16207:20;16203:1;16192:9;16188:17;16181:47;16245:131;16371:4;16245:131;:::i;:::-;16237:139;;15964:419;;;:::o;16389:85::-;16434:7;16463:5;16452:16;;16389:85;;;:::o;16480:158::-;16538:9;16571:61;16589:42;16598:32;16624:5;16598:32;:::i;:::-;16589:42;:::i;:::-;16571:61;:::i;:::-;16558:74;;16480:158;;;:::o;16644:147::-;16739:45;16778:5;16739:45;:::i;:::-;16734:3;16727:58;16644:147;;:::o;16797:807::-;17046:4;17084:3;17073:9;17069:19;17061:27;;17098:71;17166:1;17155:9;17151:17;17142:6;17098:71;:::i;:::-;17179:72;17247:2;17236:9;17232:18;17223:6;17179:72;:::i;:::-;17261:80;17337:2;17326:9;17322:18;17313:6;17261:80;:::i;:::-;17351;17427:2;17416:9;17412:18;17403:6;17351:80;:::i;:::-;17441:73;17509:3;17498:9;17494:19;17485:6;17441:73;:::i;:::-;17524;17592:3;17581:9;17577:19;17568:6;17524:73;:::i;:::-;16797:807;;;;;;;;;:::o;17610:663::-;17698:6;17706;17714;17763:2;17751:9;17742:7;17738:23;17734:32;17731:119;;;17769:79;;:::i;:::-;17731:119;17889:1;17914:64;17970:7;17961:6;17950:9;17946:22;17914:64;:::i;:::-;17904:74;;17860:128;18027:2;18053:64;18109:7;18100:6;18089:9;18085:22;18053:64;:::i;:::-;18043:74;;17998:129;18166:2;18192:64;18248:7;18239:6;18228:9;18224:22;18192:64;:::i;:::-;18182:74;;18137:129;17610:663;;;;;:::o;18279:223::-;18419:34;18415:1;18407:6;18403:14;18396:58;18488:6;18483:2;18475:6;18471:15;18464:31;18279:223;:::o;18508:366::-;18650:3;18671:67;18735:2;18730:3;18671:67;:::i;:::-;18664:74;;18747:93;18836:3;18747:93;:::i;:::-;18865:2;18860:3;18856:12;18849:19;;18508:366;;;:::o;18880:419::-;19046:4;19084:2;19073:9;19069:18;19061:26;;19133:9;19127:4;19123:20;19119:1;19108:9;19104:17;19097:47;19161:131;19287:4;19161:131;:::i;:::-;19153:139;;18880:419;;;:::o;19305:221::-;19445:34;19441:1;19433:6;19429:14;19422:58;19514:4;19509:2;19501:6;19497:15;19490:29;19305:221;:::o;19532:366::-;19674:3;19695:67;19759:2;19754:3;19695:67;:::i;:::-;19688:74;;19771:93;19860:3;19771:93;:::i;:::-;19889:2;19884:3;19880:12;19873:19;;19532:366;;;:::o;19904:419::-;20070:4;20108:2;20097:9;20093:18;20085:26;;20157:9;20151:4;20147:20;20143:1;20132:9;20128:17;20121:47;20185:131;20311:4;20185:131;:::i;:::-;20177:139;;19904:419;;;:::o;20329:224::-;20469:34;20465:1;20457:6;20453:14;20446:58;20538:7;20533:2;20525:6;20521:15;20514:32;20329:224;:::o;20559:366::-;20701:3;20722:67;20786:2;20781:3;20722:67;:::i;:::-;20715:74;;20798:93;20887:3;20798:93;:::i;:::-;20916:2;20911:3;20907:12;20900:19;;20559:366;;;:::o;20931:419::-;21097:4;21135:2;21124:9;21120:18;21112:26;;21184:9;21178:4;21174:20;21170:1;21159:9;21155:17;21148:47;21212:131;21338:4;21212:131;:::i;:::-;21204:139;;20931:419;;;:::o;21356:222::-;21496:34;21492:1;21484:6;21480:14;21473:58;21565:5;21560:2;21552:6;21548:15;21541:30;21356:222;:::o;21584:366::-;21726:3;21747:67;21811:2;21806:3;21747:67;:::i;:::-;21740:74;;21823:93;21912:3;21823:93;:::i;:::-;21941:2;21936:3;21932:12;21925:19;;21584:366;;;:::o;21956:419::-;22122:4;22160:2;22149:9;22145:18;22137:26;;22209:9;22203:4;22199:20;22195:1;22184:9;22180:17;22173:47;22237:131;22363:4;22237:131;:::i;:::-;22229:139;;21956:419;;;:::o;22381:228::-;22521:34;22517:1;22509:6;22505:14;22498:58;22590:11;22585:2;22577:6;22573:15;22566:36;22381:228;:::o;22615:366::-;22757:3;22778:67;22842:2;22837:3;22778:67;:::i;:::-;22771:74;;22854:93;22943:3;22854:93;:::i;:::-;22972:2;22967:3;22963:12;22956:19;;22615:366;;;:::o;22987:419::-;23153:4;23191:2;23180:9;23176:18;23168:26;;23240:9;23234:4;23230:20;23226:1;23215:9;23211:17;23204:47;23268:131;23394:4;23268:131;:::i;:::-;23260:139;;22987:419;;;:::o;23412:175::-;23552:27;23548:1;23540:6;23536:14;23529:51;23412:175;:::o;23593:366::-;23735:3;23756:67;23820:2;23815:3;23756:67;:::i;:::-;23749:74;;23832:93;23921:3;23832:93;:::i;:::-;23950:2;23945:3;23941:12;23934:19;;23593:366;;;:::o;23965:419::-;24131:4;24169:2;24158:9;24154:18;24146:26;;24218:9;24212:4;24208:20;24204:1;24193:9;24189:17;24182:47;24246:131;24372:4;24246:131;:::i;:::-;24238:139;;23965:419;;;:::o;24390:191::-;24430:3;24449:20;24467:1;24449:20;:::i;:::-;24444:25;;24483:20;24501:1;24483:20;:::i;:::-;24478:25;;24526:1;24523;24519:9;24512:16;;24547:3;24544:1;24541:10;24538:36;;;24554:18;;:::i;:::-;24538:36;24390:191;;;;:::o;24587:176::-;24727:28;24723:1;24715:6;24711:14;24704:52;24587:176;:::o;24769:366::-;24911:3;24932:67;24996:2;24991:3;24932:67;:::i;:::-;24925:74;;25008:93;25097:3;25008:93;:::i;:::-;25126:2;25121:3;25117:12;25110:19;;24769:366;;;:::o;25141:419::-;25307:4;25345:2;25334:9;25330:18;25322:26;;25394:9;25388:4;25384:20;25380:1;25369:9;25365:17;25358:47;25422:131;25548:4;25422:131;:::i;:::-;25414:139;;25141:419;;;:::o;25566:233::-;25605:3;25628:24;25646:5;25628:24;:::i;:::-;25619:33;;25674:66;25667:5;25664:77;25661:103;;25744:18;;:::i;:::-;25661:103;25791:1;25784:5;25780:13;25773:20;;25566:233;;;:::o;25805:173::-;25945:25;25941:1;25933:6;25929:14;25922:49;25805:173;:::o;25984:366::-;26126:3;26147:67;26211:2;26206:3;26147:67;:::i;:::-;26140:74;;26223:93;26312:3;26223:93;:::i;:::-;26341:2;26336:3;26332:12;26325:19;;25984:366;;;:::o;26356:419::-;26522:4;26560:2;26549:9;26545:18;26537:26;;26609:9;26603:4;26599:20;26595:1;26584:9;26580:17;26573:47;26637:131;26763:4;26637:131;:::i;:::-;26629:139;;26356:419;;;:::o;26781:194::-;26821:4;26841:20;26859:1;26841:20;:::i;:::-;26836:25;;26875:20;26893:1;26875:20;:::i;:::-;26870:25;;26919:1;26916;26912:9;26904:17;;26943:1;26937:4;26934:11;26931:37;;;26948:18;;:::i;:::-;26931:37;26781:194;;;;:::o;26981:143::-;27038:5;27069:6;27063:13;27054:22;;27085:33;27112:5;27085:33;:::i;:::-;26981:143;;;;:::o;27130:351::-;27200:6;27249:2;27237:9;27228:7;27224:23;27220:32;27217:119;;;27255:79;;:::i;:::-;27217:119;27375:1;27400:64;27456:7;27447:6;27436:9;27432:22;27400:64;:::i;:::-;27390:74;;27346:128;27130:351;;;;:::o;27487:114::-;27554:6;27588:5;27582:12;27572:22;;27487:114;;;:::o;27607:184::-;27706:11;27740:6;27735:3;27728:19;27780:4;27775:3;27771:14;27756:29;;27607:184;;;;:::o;27797:132::-;27864:4;27887:3;27879:11;;27917:4;27912:3;27908:14;27900:22;;27797:132;;;:::o;27935:108::-;28012:24;28030:5;28012:24;:::i;:::-;28007:3;28000:37;27935:108;;:::o;28049:179::-;28118:10;28139:46;28181:3;28173:6;28139:46;:::i;:::-;28217:4;28212:3;28208:14;28194:28;;28049:179;;;;:::o;28234:113::-;28304:4;28336;28331:3;28327:14;28319:22;;28234:113;;;:::o;28383:732::-;28502:3;28531:54;28579:5;28531:54;:::i;:::-;28601:86;28680:6;28675:3;28601:86;:::i;:::-;28594:93;;28711:56;28761:5;28711:56;:::i;:::-;28790:7;28821:1;28806:284;28831:6;28828:1;28825:13;28806:284;;;28907:6;28901:13;28934:63;28993:3;28978:13;28934:63;:::i;:::-;28927:70;;29020:60;29073:6;29020:60;:::i;:::-;29010:70;;28866:224;28853:1;28850;28846:9;28841:14;;28806:284;;;28810:14;29106:3;29099:10;;28507:608;;;28383:732;;;;:::o;29121:831::-;29384:4;29422:3;29411:9;29407:19;29399:27;;29436:71;29504:1;29493:9;29489:17;29480:6;29436:71;:::i;:::-;29517:80;29593:2;29582:9;29578:18;29569:6;29517:80;:::i;:::-;29644:9;29638:4;29634:20;29629:2;29618:9;29614:18;29607:48;29672:108;29775:4;29766:6;29672:108;:::i;:::-;29664:116;;29790:72;29858:2;29847:9;29843:18;29834:6;29790:72;:::i;:::-;29872:73;29940:3;29929:9;29925:19;29916:6;29872:73;:::i;:::-;29121:831;;;;;;;;:::o;29958:180::-;30006:77;30003:1;29996:88;30103:4;30100:1;30093:15;30127:4;30124:1;30117:15;30144:185;30184:1;30201:20;30219:1;30201:20;:::i;:::-;30196:25;;30235:20;30253:1;30235:20;:::i;:::-;30230:25;;30274:1;30264:35;;30279:18;;:::i;:::-;30264:35;30321:1;30318;30314:9;30309:14;;30144:185;;;;:::o;30335:220::-;30475:34;30471:1;30463:6;30459:14;30452:58;30544:3;30539:2;30531:6;30527:15;30520:28;30335:220;:::o;30561:366::-;30703:3;30724:67;30788:2;30783:3;30724:67;:::i;:::-;30717:74;;30800:93;30889:3;30800:93;:::i;:::-;30918:2;30913:3;30909:12;30902:19;;30561:366;;;:::o;30933:419::-;31099:4;31137:2;31126:9;31122:18;31114:26;;31186:9;31180:4;31176:20;31172:1;31161:9;31157:17;31150:47;31214:131;31340:4;31214:131;:::i;:::-;31206:139;;30933:419;;;:::o;31358:177::-;31498:29;31494:1;31486:6;31482:14;31475:53;31358:177;:::o;31541:366::-;31683:3;31704:67;31768:2;31763:3;31704:67;:::i;:::-;31697:74;;31780:93;31869:3;31780:93;:::i;:::-;31898:2;31893:3;31889:12;31882:19;;31541:366;;;:::o;31913:419::-;32079:4;32117:2;32106:9;32102:18;32094:26;;32166:9;32160:4;32156:20;32152:1;32141:9;32137:17;32130:47;32194:131;32320:4;32194:131;:::i;:::-;32186:139;;31913:419;;;:::o

Swarm Source

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