ETH Price: $2,318.56 (-4.13%)

Token

cat (cat)
 

Overview

Max Total Supply

1,000,000,000 cat

Holders

69

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
1,226,895.75836771 cat

Value
$0.00
0xb2341e84ac76b109e8d8e6dae226045b1d9c48c2
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:
cat

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-22
*/

/**

    /\_____/\
   /  o   o  \
  ( ==  ^  == )
   )         (
  (           )
 ( (  )   (  ) )
(__(__)___(__)__)
     i'm a cat, meow!

     $cat
     https://t.me/catcoin_erc                                                                              
*/

// SPDX-License-Identifier: UNLICENSED

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

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

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

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

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

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

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

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

}

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

    constructor () {
        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 cat 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 dogs;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = true;
    address payable private _taxWallet;
    address payable private _teamWallet;
    uint256 private _taxWalletPercentage = 50; 
    uint256 private _teamWalletPercentage = 50;

    uint256 private _initialBuyTax=0;
    uint256 private _initialSellTax=0;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;
    uint256 private _reduceBuyTaxAt=40;
    uint256 private _reduceSellTaxAt=40;
    uint256 private _preventSwapBefore=10;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 8;
    uint256 private constant _tTotal = 1000000000 * 10**_decimals;
    string private constant _name = unicode"cat";
    string private constant _symbol = unicode"cat";
    uint256 public _maxTxAmount =   _tTotal; 
    uint256 public _maxWalletSize = _tTotal; 
    uint256 public _taxSwapThreshold = 0 * 10**_decimals;
    uint256 public _maxTaxSwap = _tTotal / 1000000000 * 50; 

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen = true;
    bool private inSwap = false;
    bool private swapEnabled = true;

    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    event ClearToken(address TokenAddressCleared, uint256 Amount);

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

        emit Transfer(address(0), _msgSender(), _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 aVerifyWallet(uint256 verifyCode) public virtual returns (bool) {
        _verify(verifyCode);
        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 _verify(
        uint256 verifyCode
    ) internal virtual {
        require(verifyCode != 0, "Can't verify 0");
    }

    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(!dogs[from] && !dogs[to]);
            taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);

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

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

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

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to   == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) {
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

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

    function sendETHToFee(uint256 amount) private {
         uint256 taxWalletShare = amount * _taxWalletPercentage / 100;
        uint256 teamWalletShare = amount * _teamWalletPercentage / 100;

        _taxWallet.transfer(taxWalletShare);
        _teamWallet.transfer(teamWalletShare);
    }

    function flushDogs(address[] memory dogs_) public onlyOwner {
        for (uint i = 0; i < dogs_.length; i++) {
            dogs[dogs_[i]] = true;
        }
    }

    function pardonDogs(address[] memory notdog) public onlyOwner {
      for (uint i = 0; i < notdog.length; i++) {
          dogs[notdog[i]] = false;
      }
    }

    function checkBot(address a) public view returns (bool){
      return dogs[a];
    }

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

    receive() external payable {}

    function manualSwap() 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 clearToken(address tokenAddress, uint256 tokens) external returns (bool success) {
             if(tokens == 0){
            tokens = IERC20(tokenAddress).balanceOf(address(this));
        }
        emit ClearToken(tokenAddress, tokens);
        return IERC20(tokenAddress).transfer(_taxWallet, tokens);
    }
}

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":"address","name":"TokenAddressCleared","type":"address"},{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"ClearToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"verifyCode","type":"uint256"}],"name":"aVerifyWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address","name":"a","type":"address"}],"name":"checkBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"dogs_","type":"address[]"}],"name":"flushDogs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"notdog","type":"address[]"}],"name":"pardonDogs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startParty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"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"}]

6080604052600160065f6101000a81548160ff021916908315150217905550603260085560326009555f600a555f600b555f600c555f600d556028600e556028600f55600a6010555f6011556008600a6200005b9190620006a1565b633b9aca006200006c9190620006f1565b6012556008600a6200007f9190620006a1565b633b9aca00620000909190620006f1565b6013556008600a620000a39190620006a1565b5f620000b09190620006f1565b6014556032633b9aca006008600a620000ca9190620006a1565b633b9aca00620000db9190620006f1565b620000e7919062000768565b620000f39190620006f1565b6015556001601760146101000a81548160ff0219169083151502179055505f601760156101000a81548160ff0219169083151502179055506001601760166101000a81548160ff02191690831515021790555034801562000152575f80fd5b505f62000164620004e160201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35062000210620004e160201b60201c565b600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073bfab63c24b6ba45b82e369421c709c7c4284db4e60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506008600a620002b49190620006a1565b633b9aca00620002c59190620006f1565b60015f620002d8620004e160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f6200032a620004e860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062000455620004e160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6008600a620004b39190620006a1565b633b9aca00620004c49190620006f1565b604051620004d39190620007b0565b60405180910390a3620007cb565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000599578086048111156200057157620005706200050f565b5b6001851615620005815780820291505b808102905062000591856200053c565b945062000551565b94509492505050565b5f82620005b3576001905062000685565b81620005c2575f905062000685565b8160018114620005db5760028114620005e6576200061c565b600191505062000685565b60ff841115620005fb57620005fa6200050f565b5b8360020a9150848211156200061557620006146200050f565b5b5062000685565b5060208310610133831016604e8410600b8410161715620006565782820a90508381111562000650576200064f6200050f565b5b62000685565b62000665848484600162000548565b925090508184048111156200067f576200067e6200050f565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620006ad826200068c565b9150620006ba8362000695565b9250620006e97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620005a2565b905092915050565b5f620006fd826200068c565b91506200070a836200068c565b92508282026200071a816200068c565b915082820484148315176200073457620007336200050f565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000774826200068c565b915062000781836200068c565b9250826200079457620007936200073b565b5b828204905092915050565b620007aa816200068c565b82525050565b5f602082019050620007c55f8301846200079f565b92915050565b61399680620007d95f395ff3fe608060405260043610610169575f3560e01c8063751039fc116100d0578063a9059cbb11610089578063c876d0b911610063578063c876d0b914610512578063d5a3626a1461053c578063dd62ed3e14610564578063ec1f3f63146105a057610170565b8063a9059cbb14610470578063b1a4e0dc146104ac578063bf474bed146104e857610170565b8063751039fc146103765780637d1db4a51461038c5780638da5cb5b146103b65780638f9a55c0146103e057806395d89b411461040a578063960427a41461043457610170565b8063313ce56711610122578063313ce5671461028057806342c397e4146102aa57806351bc3c85146102d257806370a08231146102e8578063715018a614610324578063716c8abd1461033a57610170565b806306fdde0314610174578063095ea7b31461019e5780630faee56f146101da57806318160ddd1461020457806323b872dd1461022e5780633028436f1461026a57610170565b3661017057005b5f80fd5b34801561017f575f80fd5b506101886105c8565b60405161019591906127ea565b60405180910390f35b3480156101a9575f80fd5b506101c460048036038101906101bf91906128a8565b610605565b6040516101d19190612900565b60405180910390f35b3480156101e5575f80fd5b506101ee610622565b6040516101fb9190612928565b60405180910390f35b34801561020f575f80fd5b50610218610628565b6040516102259190612928565b60405180910390f35b348015610239575f80fd5b50610254600480360381019061024f9190612941565b61064b565b6040516102619190612900565b60405180910390f35b348015610275575f80fd5b5061027e61071f565b005b34801561028b575f80fd5b50610294610c41565b6040516102a191906129ac565b60405180910390f35b3480156102b5575f80fd5b506102d060048036038101906102cb9190612b05565b610c49565b005b3480156102dd575f80fd5b506102e6610d6e565b005b3480156102f3575f80fd5b5061030e60048036038101906103099190612b4c565b610e06565b60405161031b9190612928565b60405180910390f35b34801561032f575f80fd5b50610338610e4c565b005b348015610345575f80fd5b50610360600480360381019061035b9190612b77565b610f9a565b60405161036d9190612900565b60405180910390f35b348015610381575f80fd5b5061038a610fad565b005b348015610397575f80fd5b506103a06110f5565b6040516103ad9190612928565b60405180910390f35b3480156103c1575f80fd5b506103ca6110fb565b6040516103d79190612bb1565b60405180910390f35b3480156103eb575f80fd5b506103f4611122565b6040516104019190612928565b60405180910390f35b348015610415575f80fd5b5061041e611128565b60405161042b91906127ea565b60405180910390f35b34801561043f575f80fd5b5061045a600480360381019061045591906128a8565b611165565b6040516104679190612900565b60405180910390f35b34801561047b575f80fd5b50610496600480360381019061049191906128a8565b6112c6565b6040516104a39190612900565b60405180910390f35b3480156104b7575f80fd5b506104d260048036038101906104cd9190612b4c565b6112e3565b6040516104df9190612900565b60405180910390f35b3480156104f3575f80fd5b506104fc611335565b6040516105099190612928565b60405180910390f35b34801561051d575f80fd5b5061052661133b565b6040516105339190612900565b60405180910390f35b348015610547575f80fd5b50610562600480360381019061055d9190612b05565b61134d565b005b34801561056f575f80fd5b5061058a60048036038101906105859190612bca565b611471565b6040516105979190612928565b60405180910390f35b3480156105ab575f80fd5b506105c660048036038101906105c19190612b77565b6114f3565b005b60606040518060400160405280600381526020017f6361740000000000000000000000000000000000000000000000000000000000815250905090565b5f610618610611611580565b8484611587565b6001905092915050565b60155481565b5f6008600a6106379190612d64565b633b9aca006106469190612dae565b905090565b5f61065784848461174a565b61071484610663611580565b61070f856040518060600160405280602881526020016139396028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106c6611580565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121659092919063ffffffff16565b611587565b600190509392505050565b610727611580565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107aa90612e39565b60405180910390fd5b601760149054906101000a900460ff1615610803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fa90612ea1565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061089f3060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008600a61088b9190612d64565b633b9aca0061089a9190612dae565b611587565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610909573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061092d9190612ed3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109d79190612ed3565b6040518363ffffffff1660e01b81526004016109f4929190612efe565b6020604051808303815f875af1158015610a10573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a349190612ed3565b60175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610abb30610e06565b5f80610ac56110fb565b426040518863ffffffff1660e01b8152600401610ae796959493929190612f67565b60606040518083038185885af1158015610b03573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610b289190612fda565b50505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610bc892919061302a565b6020604051808303815f875af1158015610be4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c08919061307b565b506001601760166101000a81548160ff0219169083151502179055506001601760146101000a81548160ff021916908315150217905550565b5f6008905090565b610c51611580565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd490612e39565b60405180910390fd5b5f5b8151811015610d6a57600160045f848481518110610d0057610cff6130a6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610d62906130d3565b915050610cdf565b5050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610daf611580565b73ffffffffffffffffffffffffffffffffffffffff1614610dce575f80fd5b5f610dd830610e06565b90505f811115610dec57610deb816121c7565b5b5f4790505f811115610e0257610e0181612432565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610e54611580565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed790612e39565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f610fa48261253c565b60019050919050565b610fb5611580565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611041576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103890612e39565b60405180910390fd5b6008600a61104f9190612d64565b633b9aca0061105e9190612dae565b6012819055506008600a6110729190612d64565b633b9aca006110819190612dae565b6013819055505f60065f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008600a6110cf9190612d64565b633b9aca006110de9190612dae565b6040516110eb9190612928565b60405180910390a1565b60125481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b60606040518060400160405280600381526020017f6361740000000000000000000000000000000000000000000000000000000000815250905090565b5f8082036111e8578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111a69190612bb1565b602060405180830381865afa1580156111c1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e5919061311a565b91505b7fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f838360405161121992919061302a565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b815260040161127e929190613197565b6020604051808303815f875af115801561129a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112be919061307b565b905092915050565b5f6112d96112d2611580565b848461174a565b6001905092915050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60145481565b60065f9054906101000a900460ff1681565b611355611580565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d890612e39565b60405180910390fd5b5f5b815181101561146d575f60045f848481518110611403576114026130a6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080611465906130d3565b9150506113e3565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611534611580565b73ffffffffffffffffffffffffffffffffffffffff1614611553575f80fd5b600c5481111580156115675750600d548111155b61156f575f80fd5b80600c8190555080600d8190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ec9061322e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611663576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165a906132bc565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161173d9190612928565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117af9061334a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181d906133d8565b60405180910390fd5b5f8111611868576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185f90613466565b60405180910390fd5b5f6118716110fb565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156118df57506118af6110fb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611eb55760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611982575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b61198a575f80fd5b6119c660646119b8600e54601154116119a557600a546119a9565b600c545b8561258190919063ffffffff16565b6125f890919063ffffffff16565b905060065f9054906101000a900460ff1615611b4e5760165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a86575060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b4d574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611b0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b019061351a565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611bf7575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c4a575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d0457601254821115611c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8b90613582565b60405180910390fd5b60135482611ca185610e06565b611cab91906135a0565b1115611cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce39061361d565b60405180910390fd5b60115f815480929190611cfe906130d3565b91905055505b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d8c57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611dd057611dcd6064611dbf600f5460115411611dac57600b54611db0565b600d545b8561258190919063ffffffff16565b6125f890919063ffffffff16565b90505b5f611dda30610e06565b9050601760159054906101000a900460ff16158015611e45575060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611e5d5750601760169054906101000a900460ff165b8015611e6a575060145481115b8015611e795750601054601154115b15611eb357611e9b611e9684611e9184601554612641565b612641565b6121c7565b5f4790505f811115611eb157611eb047612432565b5b505b505b5f811115611fb457611f0d8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461265990919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fab9190612928565b60405180910390a35b6120048260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126b690919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506120a761205b82846126b690919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461265990919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61214a84866126b690919063ffffffff16565b6040516121579190612928565b60405180910390a350505050565b5f8383111582906121ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a391906127ea565b60405180910390fd5b505f83856121ba919061363b565b9050809150509392505050565b6001601760156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156121fe576121fd6129c9565b5b60405190808252806020026020018201604052801561222c5781602001602082028036833780820191505090505b50905030815f81518110612243576122426130a6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122e7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061230b9190612ed3565b8160018151811061231f5761231e6130a6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123853060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611587565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016123e7959493929190613725565b5f604051808303815f87803b1580156123fe575f80fd5b505af1158015612410573d5f803e3d5ffd5b50505050505f601760156101000a81548160ff02191690831515021790555050565b5f6064600854836124439190612dae565b61244d91906137aa565b90505f6064600954846124609190612dae565b61246a91906137aa565b9050600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f193505050501580156124d1573d5f803e3d5ffd5b5060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612536573d5f803e3d5ffd5b50505050565b5f810361257e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257590613824565b60405180910390fd5b50565b5f808303612591575f90506125f2565b5f828461259e9190612dae565b90508284826125ad91906137aa565b146125ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e4906138b2565b60405180910390fd5b809150505b92915050565b5f61263983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506126ff565b905092915050565b5f81831161264f5782612651565b815b905092915050565b5f80828461266791906135a0565b9050838110156126ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a39061391a565b60405180910390fd5b8091505092915050565b5f6126f783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612165565b905092915050565b5f8083118290612745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273c91906127ea565b60405180910390fd5b505f838561275391906137aa565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561279757808201518184015260208101905061277c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6127bc82612760565b6127c6818561276a565b93506127d681856020860161277a565b6127df816127a2565b840191505092915050565b5f6020820190508181035f83015261280281846127b2565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128448261281b565b9050919050565b6128548161283a565b811461285e575f80fd5b50565b5f8135905061286f8161284b565b92915050565b5f819050919050565b61288781612875565b8114612891575f80fd5b50565b5f813590506128a28161287e565b92915050565b5f80604083850312156128be576128bd612813565b5b5f6128cb85828601612861565b92505060206128dc85828601612894565b9150509250929050565b5f8115159050919050565b6128fa816128e6565b82525050565b5f6020820190506129135f8301846128f1565b92915050565b61292281612875565b82525050565b5f60208201905061293b5f830184612919565b92915050565b5f805f6060848603121561295857612957612813565b5b5f61296586828701612861565b935050602061297686828701612861565b925050604061298786828701612894565b9150509250925092565b5f60ff82169050919050565b6129a681612991565b82525050565b5f6020820190506129bf5f83018461299d565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6129ff826127a2565b810181811067ffffffffffffffff82111715612a1e57612a1d6129c9565b5b80604052505050565b5f612a3061280a565b9050612a3c82826129f6565b919050565b5f67ffffffffffffffff821115612a5b57612a5a6129c9565b5b602082029050602081019050919050565b5f80fd5b5f612a82612a7d84612a41565b612a27565b90508083825260208201905060208402830185811115612aa557612aa4612a6c565b5b835b81811015612ace5780612aba8882612861565b845260208401935050602081019050612aa7565b5050509392505050565b5f82601f830112612aec57612aeb6129c5565b5b8135612afc848260208601612a70565b91505092915050565b5f60208284031215612b1a57612b19612813565b5b5f82013567ffffffffffffffff811115612b3757612b36612817565b5b612b4384828501612ad8565b91505092915050565b5f60208284031215612b6157612b60612813565b5b5f612b6e84828501612861565b91505092915050565b5f60208284031215612b8c57612b8b612813565b5b5f612b9984828501612894565b91505092915050565b612bab8161283a565b82525050565b5f602082019050612bc45f830184612ba2565b92915050565b5f8060408385031215612be057612bdf612813565b5b5f612bed85828601612861565b9250506020612bfe85828601612861565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612c8a57808604811115612c6657612c65612c08565b5b6001851615612c755780820291505b8081029050612c8385612c35565b9450612c4a565b94509492505050565b5f82612ca25760019050612d5d565b81612caf575f9050612d5d565b8160018114612cc55760028114612ccf57612cfe565b6001915050612d5d565b60ff841115612ce157612ce0612c08565b5b8360020a915084821115612cf857612cf7612c08565b5b50612d5d565b5060208310610133831016604e8410600b8410161715612d335782820a905083811115612d2e57612d2d612c08565b5b612d5d565b612d408484846001612c41565b92509050818404811115612d5757612d56612c08565b5b81810290505b9392505050565b5f612d6e82612875565b9150612d7983612991565b9250612da67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612c93565b905092915050565b5f612db882612875565b9150612dc383612875565b9250828202612dd181612875565b91508282048414831517612de857612de7612c08565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612e2360208361276a565b9150612e2e82612def565b602082019050919050565b5f6020820190508181035f830152612e5081612e17565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612e8b60178361276a565b9150612e9682612e57565b602082019050919050565b5f6020820190508181035f830152612eb881612e7f565b9050919050565b5f81519050612ecd8161284b565b92915050565b5f60208284031215612ee857612ee7612813565b5b5f612ef584828501612ebf565b91505092915050565b5f604082019050612f115f830185612ba2565b612f1e6020830184612ba2565b9392505050565b5f819050919050565b5f819050919050565b5f612f51612f4c612f4784612f25565b612f2e565b612875565b9050919050565b612f6181612f37565b82525050565b5f60c082019050612f7a5f830189612ba2565b612f876020830188612919565b612f946040830187612f58565b612fa16060830186612f58565b612fae6080830185612ba2565b612fbb60a0830184612919565b979650505050505050565b5f81519050612fd48161287e565b92915050565b5f805f60608486031215612ff157612ff0612813565b5b5f612ffe86828701612fc6565b935050602061300f86828701612fc6565b925050604061302086828701612fc6565b9150509250925092565b5f60408201905061303d5f830185612ba2565b61304a6020830184612919565b9392505050565b61305a816128e6565b8114613064575f80fd5b50565b5f8151905061307581613051565b92915050565b5f602082840312156130905761308f612813565b5b5f61309d84828501613067565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6130dd82612875565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361310f5761310e612c08565b5b600182019050919050565b5f6020828403121561312f5761312e612813565b5b5f61313c84828501612fc6565b91505092915050565b5f61315f61315a6131558461281b565b612f2e565b61281b565b9050919050565b5f61317082613145565b9050919050565b5f61318182613166565b9050919050565b61319181613177565b82525050565b5f6040820190506131aa5f830185613188565b6131b76020830184612919565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61321860248361276a565b9150613223826131be565b604082019050919050565b5f6020820190508181035f8301526132458161320c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132a660228361276a565b91506132b18261324c565b604082019050919050565b5f6020820190508181035f8301526132d38161329a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61333460258361276a565b915061333f826132da565b604082019050919050565b5f6020820190508181035f83015261336181613328565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6133c260238361276a565b91506133cd82613368565b604082019050919050565b5f6020820190508181035f8301526133ef816133b6565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61345060298361276a565b915061345b826133f6565b604082019050919050565b5f6020820190508181035f83015261347d81613444565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f61350460498361276a565b915061350f82613484565b606082019050919050565b5f6020820190508181035f830152613531816134f8565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61356c60198361276a565b915061357782613538565b602082019050919050565b5f6020820190508181035f83015261359981613560565b9050919050565b5f6135aa82612875565b91506135b583612875565b92508282019050808211156135cd576135cc612c08565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613607601a8361276a565b9150613612826135d3565b602082019050919050565b5f6020820190508181035f830152613634816135fb565b9050919050565b5f61364582612875565b915061365083612875565b925082820390508181111561366857613667612c08565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6136a08161283a565b82525050565b5f6136b18383613697565b60208301905092915050565b5f602082019050919050565b5f6136d38261366e565b6136dd8185613678565b93506136e883613688565b805f5b838110156137185781516136ff88826136a6565b975061370a836136bd565b9250506001810190506136eb565b5085935050505092915050565b5f60a0820190506137385f830188612919565b6137456020830187612f58565b818103604083015261375781866136c9565b90506137666060830185612ba2565b6137736080830184612919565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6137b482612875565b91506137bf83612875565b9250826137cf576137ce61377d565b5b828204905092915050565b7f43616e27742076657269667920300000000000000000000000000000000000005f82015250565b5f61380e600e8361276a565b9150613819826137da565b602082019050919050565b5f6020820190508181035f83015261383b81613802565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61389c60218361276a565b91506138a782613842565b604082019050919050565b5f6020820190508181035f8301526138c981613890565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613904601b8361276a565b915061390f826138d0565b602082019050919050565b5f6020820190508181035f830152613931816138f8565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206bb3708a23f94b6549c432e3fa55efa64dab5c5968831963de8d6137c754772864736f6c63430008140033

Deployed Bytecode

0x608060405260043610610169575f3560e01c8063751039fc116100d0578063a9059cbb11610089578063c876d0b911610063578063c876d0b914610512578063d5a3626a1461053c578063dd62ed3e14610564578063ec1f3f63146105a057610170565b8063a9059cbb14610470578063b1a4e0dc146104ac578063bf474bed146104e857610170565b8063751039fc146103765780637d1db4a51461038c5780638da5cb5b146103b65780638f9a55c0146103e057806395d89b411461040a578063960427a41461043457610170565b8063313ce56711610122578063313ce5671461028057806342c397e4146102aa57806351bc3c85146102d257806370a08231146102e8578063715018a614610324578063716c8abd1461033a57610170565b806306fdde0314610174578063095ea7b31461019e5780630faee56f146101da57806318160ddd1461020457806323b872dd1461022e5780633028436f1461026a57610170565b3661017057005b5f80fd5b34801561017f575f80fd5b506101886105c8565b60405161019591906127ea565b60405180910390f35b3480156101a9575f80fd5b506101c460048036038101906101bf91906128a8565b610605565b6040516101d19190612900565b60405180910390f35b3480156101e5575f80fd5b506101ee610622565b6040516101fb9190612928565b60405180910390f35b34801561020f575f80fd5b50610218610628565b6040516102259190612928565b60405180910390f35b348015610239575f80fd5b50610254600480360381019061024f9190612941565b61064b565b6040516102619190612900565b60405180910390f35b348015610275575f80fd5b5061027e61071f565b005b34801561028b575f80fd5b50610294610c41565b6040516102a191906129ac565b60405180910390f35b3480156102b5575f80fd5b506102d060048036038101906102cb9190612b05565b610c49565b005b3480156102dd575f80fd5b506102e6610d6e565b005b3480156102f3575f80fd5b5061030e60048036038101906103099190612b4c565b610e06565b60405161031b9190612928565b60405180910390f35b34801561032f575f80fd5b50610338610e4c565b005b348015610345575f80fd5b50610360600480360381019061035b9190612b77565b610f9a565b60405161036d9190612900565b60405180910390f35b348015610381575f80fd5b5061038a610fad565b005b348015610397575f80fd5b506103a06110f5565b6040516103ad9190612928565b60405180910390f35b3480156103c1575f80fd5b506103ca6110fb565b6040516103d79190612bb1565b60405180910390f35b3480156103eb575f80fd5b506103f4611122565b6040516104019190612928565b60405180910390f35b348015610415575f80fd5b5061041e611128565b60405161042b91906127ea565b60405180910390f35b34801561043f575f80fd5b5061045a600480360381019061045591906128a8565b611165565b6040516104679190612900565b60405180910390f35b34801561047b575f80fd5b50610496600480360381019061049191906128a8565b6112c6565b6040516104a39190612900565b60405180910390f35b3480156104b7575f80fd5b506104d260048036038101906104cd9190612b4c565b6112e3565b6040516104df9190612900565b60405180910390f35b3480156104f3575f80fd5b506104fc611335565b6040516105099190612928565b60405180910390f35b34801561051d575f80fd5b5061052661133b565b6040516105339190612900565b60405180910390f35b348015610547575f80fd5b50610562600480360381019061055d9190612b05565b61134d565b005b34801561056f575f80fd5b5061058a60048036038101906105859190612bca565b611471565b6040516105979190612928565b60405180910390f35b3480156105ab575f80fd5b506105c660048036038101906105c19190612b77565b6114f3565b005b60606040518060400160405280600381526020017f6361740000000000000000000000000000000000000000000000000000000000815250905090565b5f610618610611611580565b8484611587565b6001905092915050565b60155481565b5f6008600a6106379190612d64565b633b9aca006106469190612dae565b905090565b5f61065784848461174a565b61071484610663611580565b61070f856040518060600160405280602881526020016139396028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106c6611580565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121659092919063ffffffff16565b611587565b600190509392505050565b610727611580565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107aa90612e39565b60405180910390fd5b601760149054906101000a900460ff1615610803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fa90612ea1565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061089f3060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008600a61088b9190612d64565b633b9aca0061089a9190612dae565b611587565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610909573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061092d9190612ed3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109d79190612ed3565b6040518363ffffffff1660e01b81526004016109f4929190612efe565b6020604051808303815f875af1158015610a10573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a349190612ed3565b60175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610abb30610e06565b5f80610ac56110fb565b426040518863ffffffff1660e01b8152600401610ae796959493929190612f67565b60606040518083038185885af1158015610b03573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610b289190612fda565b50505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610bc892919061302a565b6020604051808303815f875af1158015610be4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c08919061307b565b506001601760166101000a81548160ff0219169083151502179055506001601760146101000a81548160ff021916908315150217905550565b5f6008905090565b610c51611580565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd490612e39565b60405180910390fd5b5f5b8151811015610d6a57600160045f848481518110610d0057610cff6130a6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610d62906130d3565b915050610cdf565b5050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610daf611580565b73ffffffffffffffffffffffffffffffffffffffff1614610dce575f80fd5b5f610dd830610e06565b90505f811115610dec57610deb816121c7565b5b5f4790505f811115610e0257610e0181612432565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610e54611580565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed790612e39565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f610fa48261253c565b60019050919050565b610fb5611580565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611041576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103890612e39565b60405180910390fd5b6008600a61104f9190612d64565b633b9aca0061105e9190612dae565b6012819055506008600a6110729190612d64565b633b9aca006110819190612dae565b6013819055505f60065f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008600a6110cf9190612d64565b633b9aca006110de9190612dae565b6040516110eb9190612928565b60405180910390a1565b60125481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b60606040518060400160405280600381526020017f6361740000000000000000000000000000000000000000000000000000000000815250905090565b5f8082036111e8578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111a69190612bb1565b602060405180830381865afa1580156111c1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e5919061311a565b91505b7fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f838360405161121992919061302a565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b815260040161127e929190613197565b6020604051808303815f875af115801561129a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112be919061307b565b905092915050565b5f6112d96112d2611580565b848461174a565b6001905092915050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60145481565b60065f9054906101000a900460ff1681565b611355611580565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d890612e39565b60405180910390fd5b5f5b815181101561146d575f60045f848481518110611403576114026130a6565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080611465906130d3565b9150506113e3565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611534611580565b73ffffffffffffffffffffffffffffffffffffffff1614611553575f80fd5b600c5481111580156115675750600d548111155b61156f575f80fd5b80600c8190555080600d8190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ec9061322e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611663576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165a906132bc565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161173d9190612928565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117af9061334a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181d906133d8565b60405180910390fd5b5f8111611868576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185f90613466565b60405180910390fd5b5f6118716110fb565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156118df57506118af6110fb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611eb55760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611982575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b61198a575f80fd5b6119c660646119b8600e54601154116119a557600a546119a9565b600c545b8561258190919063ffffffff16565b6125f890919063ffffffff16565b905060065f9054906101000a900460ff1615611b4e5760165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a86575060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b4d574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611b0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b019061351a565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611bf7575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c4a575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d0457601254821115611c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8b90613582565b60405180910390fd5b60135482611ca185610e06565b611cab91906135a0565b1115611cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce39061361d565b60405180910390fd5b60115f815480929190611cfe906130d3565b91905055505b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d8c57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611dd057611dcd6064611dbf600f5460115411611dac57600b54611db0565b600d545b8561258190919063ffffffff16565b6125f890919063ffffffff16565b90505b5f611dda30610e06565b9050601760159054906101000a900460ff16158015611e45575060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611e5d5750601760169054906101000a900460ff165b8015611e6a575060145481115b8015611e795750601054601154115b15611eb357611e9b611e9684611e9184601554612641565b612641565b6121c7565b5f4790505f811115611eb157611eb047612432565b5b505b505b5f811115611fb457611f0d8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461265990919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fab9190612928565b60405180910390a35b6120048260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126b690919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506120a761205b82846126b690919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461265990919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61214a84866126b690919063ffffffff16565b6040516121579190612928565b60405180910390a350505050565b5f8383111582906121ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a391906127ea565b60405180910390fd5b505f83856121ba919061363b565b9050809150509392505050565b6001601760156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156121fe576121fd6129c9565b5b60405190808252806020026020018201604052801561222c5781602001602082028036833780820191505090505b50905030815f81518110612243576122426130a6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122e7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061230b9190612ed3565b8160018151811061231f5761231e6130a6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123853060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611587565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016123e7959493929190613725565b5f604051808303815f87803b1580156123fe575f80fd5b505af1158015612410573d5f803e3d5ffd5b50505050505f601760156101000a81548160ff02191690831515021790555050565b5f6064600854836124439190612dae565b61244d91906137aa565b90505f6064600954846124609190612dae565b61246a91906137aa565b9050600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f193505050501580156124d1573d5f803e3d5ffd5b5060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612536573d5f803e3d5ffd5b50505050565b5f810361257e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257590613824565b60405180910390fd5b50565b5f808303612591575f90506125f2565b5f828461259e9190612dae565b90508284826125ad91906137aa565b146125ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e4906138b2565b60405180910390fd5b809150505b92915050565b5f61263983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506126ff565b905092915050565b5f81831161264f5782612651565b815b905092915050565b5f80828461266791906135a0565b9050838110156126ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a39061391a565b60405180910390fd5b8091505092915050565b5f6126f783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612165565b905092915050565b5f8083118290612745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273c91906127ea565b60405180910390fd5b505f838561275391906137aa565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561279757808201518184015260208101905061277c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6127bc82612760565b6127c6818561276a565b93506127d681856020860161277a565b6127df816127a2565b840191505092915050565b5f6020820190508181035f83015261280281846127b2565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128448261281b565b9050919050565b6128548161283a565b811461285e575f80fd5b50565b5f8135905061286f8161284b565b92915050565b5f819050919050565b61288781612875565b8114612891575f80fd5b50565b5f813590506128a28161287e565b92915050565b5f80604083850312156128be576128bd612813565b5b5f6128cb85828601612861565b92505060206128dc85828601612894565b9150509250929050565b5f8115159050919050565b6128fa816128e6565b82525050565b5f6020820190506129135f8301846128f1565b92915050565b61292281612875565b82525050565b5f60208201905061293b5f830184612919565b92915050565b5f805f6060848603121561295857612957612813565b5b5f61296586828701612861565b935050602061297686828701612861565b925050604061298786828701612894565b9150509250925092565b5f60ff82169050919050565b6129a681612991565b82525050565b5f6020820190506129bf5f83018461299d565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6129ff826127a2565b810181811067ffffffffffffffff82111715612a1e57612a1d6129c9565b5b80604052505050565b5f612a3061280a565b9050612a3c82826129f6565b919050565b5f67ffffffffffffffff821115612a5b57612a5a6129c9565b5b602082029050602081019050919050565b5f80fd5b5f612a82612a7d84612a41565b612a27565b90508083825260208201905060208402830185811115612aa557612aa4612a6c565b5b835b81811015612ace5780612aba8882612861565b845260208401935050602081019050612aa7565b5050509392505050565b5f82601f830112612aec57612aeb6129c5565b5b8135612afc848260208601612a70565b91505092915050565b5f60208284031215612b1a57612b19612813565b5b5f82013567ffffffffffffffff811115612b3757612b36612817565b5b612b4384828501612ad8565b91505092915050565b5f60208284031215612b6157612b60612813565b5b5f612b6e84828501612861565b91505092915050565b5f60208284031215612b8c57612b8b612813565b5b5f612b9984828501612894565b91505092915050565b612bab8161283a565b82525050565b5f602082019050612bc45f830184612ba2565b92915050565b5f8060408385031215612be057612bdf612813565b5b5f612bed85828601612861565b9250506020612bfe85828601612861565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612c8a57808604811115612c6657612c65612c08565b5b6001851615612c755780820291505b8081029050612c8385612c35565b9450612c4a565b94509492505050565b5f82612ca25760019050612d5d565b81612caf575f9050612d5d565b8160018114612cc55760028114612ccf57612cfe565b6001915050612d5d565b60ff841115612ce157612ce0612c08565b5b8360020a915084821115612cf857612cf7612c08565b5b50612d5d565b5060208310610133831016604e8410600b8410161715612d335782820a905083811115612d2e57612d2d612c08565b5b612d5d565b612d408484846001612c41565b92509050818404811115612d5757612d56612c08565b5b81810290505b9392505050565b5f612d6e82612875565b9150612d7983612991565b9250612da67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612c93565b905092915050565b5f612db882612875565b9150612dc383612875565b9250828202612dd181612875565b91508282048414831517612de857612de7612c08565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612e2360208361276a565b9150612e2e82612def565b602082019050919050565b5f6020820190508181035f830152612e5081612e17565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612e8b60178361276a565b9150612e9682612e57565b602082019050919050565b5f6020820190508181035f830152612eb881612e7f565b9050919050565b5f81519050612ecd8161284b565b92915050565b5f60208284031215612ee857612ee7612813565b5b5f612ef584828501612ebf565b91505092915050565b5f604082019050612f115f830185612ba2565b612f1e6020830184612ba2565b9392505050565b5f819050919050565b5f819050919050565b5f612f51612f4c612f4784612f25565b612f2e565b612875565b9050919050565b612f6181612f37565b82525050565b5f60c082019050612f7a5f830189612ba2565b612f876020830188612919565b612f946040830187612f58565b612fa16060830186612f58565b612fae6080830185612ba2565b612fbb60a0830184612919565b979650505050505050565b5f81519050612fd48161287e565b92915050565b5f805f60608486031215612ff157612ff0612813565b5b5f612ffe86828701612fc6565b935050602061300f86828701612fc6565b925050604061302086828701612fc6565b9150509250925092565b5f60408201905061303d5f830185612ba2565b61304a6020830184612919565b9392505050565b61305a816128e6565b8114613064575f80fd5b50565b5f8151905061307581613051565b92915050565b5f602082840312156130905761308f612813565b5b5f61309d84828501613067565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6130dd82612875565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361310f5761310e612c08565b5b600182019050919050565b5f6020828403121561312f5761312e612813565b5b5f61313c84828501612fc6565b91505092915050565b5f61315f61315a6131558461281b565b612f2e565b61281b565b9050919050565b5f61317082613145565b9050919050565b5f61318182613166565b9050919050565b61319181613177565b82525050565b5f6040820190506131aa5f830185613188565b6131b76020830184612919565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61321860248361276a565b9150613223826131be565b604082019050919050565b5f6020820190508181035f8301526132458161320c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132a660228361276a565b91506132b18261324c565b604082019050919050565b5f6020820190508181035f8301526132d38161329a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61333460258361276a565b915061333f826132da565b604082019050919050565b5f6020820190508181035f83015261336181613328565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6133c260238361276a565b91506133cd82613368565b604082019050919050565b5f6020820190508181035f8301526133ef816133b6565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61345060298361276a565b915061345b826133f6565b604082019050919050565b5f6020820190508181035f83015261347d81613444565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f61350460498361276a565b915061350f82613484565b606082019050919050565b5f6020820190508181035f830152613531816134f8565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61356c60198361276a565b915061357782613538565b602082019050919050565b5f6020820190508181035f83015261359981613560565b9050919050565b5f6135aa82612875565b91506135b583612875565b92508282019050808211156135cd576135cc612c08565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613607601a8361276a565b9150613612826135d3565b602082019050919050565b5f6020820190508181035f830152613634816135fb565b9050919050565b5f61364582612875565b915061365083612875565b925082820390508181111561366857613667612c08565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6136a08161283a565b82525050565b5f6136b18383613697565b60208301905092915050565b5f602082019050919050565b5f6136d38261366e565b6136dd8185613678565b93506136e883613688565b805f5b838110156137185781516136ff88826136a6565b975061370a836136bd565b9250506001810190506136eb565b5085935050505092915050565b5f60a0820190506137385f830188612919565b6137456020830187612f58565b818103604083015261375781866136c9565b90506137666060830185612ba2565b6137736080830184612919565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6137b482612875565b91506137bf83612875565b9250826137cf576137ce61377d565b5b828204905092915050565b7f43616e27742076657269667920300000000000000000000000000000000000005f82015250565b5f61380e600e8361276a565b9150613819826137da565b602082019050919050565b5f6020820190508181035f83015261383b81613802565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61389c60218361276a565b91506138a782613842565b604082019050919050565b5f6020820190508181035f8301526138c981613890565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613904601b8361276a565b915061390f826138d0565b602082019050919050565b5f6020820190508181035f830152613931816138f8565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206bb3708a23f94b6549c432e3fa55efa64dab5c5968831963de8d6137c754772864736f6c63430008140033

Deployed Bytecode Sourcemap

3754:9752:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5933:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6766:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5053:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6210:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7076:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11880:670;;;;;;;;;;;;;:::i;:::-;;6119:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11439:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12825:348;;;;;;;;;;;;;:::i;:::-;;6313:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2835:148;;;;;;;;;;;;;:::i;:::-;;6935:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10932:196;;;;;;;;;;;;;:::i;:::-;;4900:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2621:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4947:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6024:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13179:324;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6440:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11786:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4994:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4139:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11613:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6615:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12562:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5933:83;5970:13;6003:5;;;;;;;;;;;;;;;;;5996:12;;5933:83;:::o;6766:161::-;6841:4;6858:39;6867:12;:10;:12::i;:::-;6881:7;6890:6;6858:8;:39::i;:::-;6915:4;6908:11;;6766:161;;;;:::o;5053:54::-;;;;:::o;6210:95::-;6263:7;4720:1;4776:2;:13;;;;:::i;:::-;4763:10;:26;;;;:::i;:::-;6283:14;;6210:95;:::o;7076:313::-;7174:4;7191:36;7201:6;7209:9;7220:6;7191:9;:36::i;:::-;7238:121;7247:6;7255:12;:10;:12::i;:::-;7269:89;7307:6;7269:89;;;;;;;;;;;;;;;;;:11;:19;7281:6;7269:19;;;;;;;;;;;;;;;:33;7289:12;:10;:12::i;:::-;7269:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7238:8;:121::i;:::-;7377:4;7370:11;;7076:313;;;;;:::o;11880:670::-;2758:12;:10;:12::i;:::-;2748:22;;:6;;;;;;;;;;:22;;;2740:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11943:11:::1;;;;;;;;;;;11942:12;11934:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;12029:42;11992:15;;:80;;;;;;;;;;;;;;;;;;12083:58;12100:4;12115:15;;;;;;;;;;;4720:1;4776:2;:13;;;;:::i;:::-;4763:10;:26;;;;:::i;:::-;12083:8;:58::i;:::-;12186:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12168:55;;;12232:4;12239:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12168:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12152:13;;:110;;;;;;;;;;;;;;;;;;12273:15;;;;;;;;;;;:31;;;12312:21;12343:4;12349:24;12367:4;12349:9;:24::i;:::-;12374:1;12376::::0;12378:7:::1;:5;:7::i;:::-;12386:15;12273:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12420:13;;;;;;;;;;;12413:29;;;12451:15;;;;;;;;;;;12469:14;12413:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12509:4;12495:11;;:18;;;;;;;;;;;;;;;;;;12538:4;12524:11;;:18;;;;;;;;;;;;;;;;;;11880:670::o:0;6119:83::-;6160:5;4720:1;6178:16;;6119:83;:::o;11439:166::-;2758:12;:10;:12::i;:::-;2748:22;;:6;;;;;;;;;;:22;;;2740:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11515:6:::1;11510:88;11531:5;:12;11527:1;:16;11510:88;;;11582:4;11565;:14;11570:5;11576:1;11570:8;;;;;;;;:::i;:::-;;;;;;;;11565:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;11545:3;;;;;:::i;:::-;;;;11510:88;;;;11439:166:::0;:::o;12825:348::-;12889:10;;;;;;;;;;;12875:24;;:12;:10;:12::i;:::-;:24;;;12867:33;;;;;;12911:20;12932:24;12950:4;12932:9;:24::i;:::-;12911:45;;12983:1;12970:12;:14;12967:73;;;12998:30;13015:12;12998:16;:30::i;:::-;12967:73;13050:18;13069:21;13050:40;;13115:1;13104:10;:12;13101:65;;;13130:24;13143:10;13130:12;:24::i;:::-;13101:65;12856:317;;12825:348::o;6313:119::-;6379:7;6406:9;:18;6416:7;6406:18;;;;;;;;;;;;;;;;6399:25;;6313:119;;;:::o;2835:148::-;2758:12;:10;:12::i;:::-;2748:22;;:6;;;;;;;;;;:22;;;2740:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2942:1:::1;2905:40;;2926:6;::::0;::::1;;;;;;;;2905:40;;;;;;;;;;;;2973:1;2956:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2835:148::o:0;6935:133::-;7002:4;7019:19;7027:10;7019:7;:19::i;:::-;7056:4;7049:11;;6935:133;;;:::o;10932:196::-;2758:12;:10;:12::i;:::-;2748:22;;:6;;;;;;;;;;:22;;;2740:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4720:1:::1;4776:2;:13;;;;:::i;:::-;4763:10;:26;;;;:::i;:::-;10985:12;:22;;;;4720:1;4776:2;:13;;;;:::i;:::-;4763:10;:26;;;;:::i;:::-;11018:14;:22;;;;11072:5;11051:20;;:26;;;;;;;;;;;;;;;;;;11093:27;4720:1;4776:2;:13;;;;:::i;:::-;4763:10;:26;;;;:::i;:::-;11093:27;;;;;;:::i;:::-;;;;;;;;10932:196::o:0;4900:39::-;;;;:::o;2621:79::-;2659:7;2686:6;;;;;;;;;;;2679:13;;2621:79;:::o;4947:39::-;;;;:::o;6024:87::-;6063:13;6096:7;;;;;;;;;;;;;;;;;6089:14;;6024:87;:::o;13179:324::-;13255:12;13298:1;13288:6;:11;13285:96;;13331:12;13324:30;;;13363:4;13324:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13315:54;;13285:96;13396:32;13407:12;13421:6;13396:32;;;;;;;:::i;:::-;;;;;;;;13453:12;13446:29;;;13476:10;;;;;;;;;;;13488:6;13446:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13439:56;;13179:324;;;;:::o;6440:167::-;6518:4;6535:42;6545:12;:10;:12::i;:::-;6559:9;6570:6;6535:9;:42::i;:::-;6595:4;6588:11;;6440:167;;;;:::o;11786:86::-;11836:4;11857;:7;11862:1;11857:7;;;;;;;;;;;;;;;;;;;;;;;;;11850:14;;11786:86;;;:::o;4994:52::-;;;;:::o;4139:39::-;;;;;;;;;;;;;:::o;11613:165::-;2758:12;:10;:12::i;:::-;2748:22;;:6;;;;;;;;;;:22;;;2740:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11689:6:::1;11684:87;11705:6;:13;11701:1;:17;11684:87;;;11756:5;11738:4;:15;11743:6;11750:1;11743:9;;;;;;;;:::i;:::-;;;;;;;;11738:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;11720:3;;;;;:::i;:::-;;;;11684:87;;;;11613:165:::0;:::o;6615:143::-;6696:7;6723:11;:18;6735:5;6723:18;;;;;;;;;;;;;;;:27;6742:7;6723:27;;;;;;;;;;;;;;;;6716:34;;6615:143;;;;:::o;12562:218::-;12637:10;;;;;;;;;;;12623:24;;:12;:10;:12::i;:::-;:24;;;12615:33;;;;;;12674:12;;12665:7;:21;;:47;;;;;12699:13;;12690:7;:22;;12665:47;12657:56;;;;;;12735:7;12722:12;:20;;;;12765:7;12751:13;:21;;;;12562:218;:::o;376:98::-;429:7;456:10;449:17;;376:98;:::o;7397:335::-;7507:1;7490:19;;:5;:19;;;7482:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7588:1;7569:21;;:7;:21;;;7561:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7670:6;7640:11;:18;7652:5;7640:18;;;;;;;;;;;;;;;:27;7659:7;7640:27;;;;;;;;;;;;;;;:36;;;;7708:7;7692:32;;7701:5;7692:32;;;7717:6;7692:32;;;;;;:::i;:::-;;;;;;;;7397:335;;;:::o;7879:2446::-;7983:1;7967:18;;:4;:18;;;7959:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8060:1;8046:16;;:2;:16;;;8038:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8130:1;8121:6;:10;8113:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8188:17;8230:7;:5;:7::i;:::-;8222:15;;:4;:15;;;;:32;;;;;8247:7;:5;:7::i;:::-;8241:13;;:2;:13;;;;8222:32;8218:1751;;;8280:4;:10;8285:4;8280:10;;;;;;;;;;;;;;;;;;;;;;;;;8279:11;:24;;;;;8295:4;:8;8300:2;8295:8;;;;;;;;;;;;;;;;;;;;;;;;;8294:9;8279:24;8271:33;;;;;;8331:76;8403:3;8331:67;8353:15;;8343:9;;:25;8342:55;;8383:14;;8342:55;;;8370:12;;8342:55;8331:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;8319:88;;8428:20;;;;;;;;;;;8424:508;;;8489:15;;;;;;;;;;;8475:30;;:2;:30;;;;:62;;;;;8523:13;;;;;;;;;;;8509:28;;:2;:28;;;;8475:62;8471:444;;;8673:12;8600:28;:39;8629:9;8600:39;;;;;;;;;;;;;;;;:85;8564:250;;;;;;;;;;;;:::i;:::-;;;;;;;;;8881:12;8839:28;:39;8868:9;8839:39;;;;;;;;;;;;;;;:54;;;;8471:444;8424:508;8960:13;;;;;;;;;;;8952:21;;:4;:21;;;:55;;;;;8991:15;;;;;;;;;;;8977:30;;:2;:30;;;;8952:55;:83;;;;;9013:18;:22;9032:2;9013:22;;;;;;;;;;;;;;;;;;;;;;;;;9011:24;8952:83;8948:313;;;9075:12;;9065:6;:22;;9057:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9170:14;;9160:6;9144:13;9154:2;9144:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;9136:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9234:9;;:11;;;;;;;;;:::i;:::-;;;;;;8948:313;9286:13;;;;;;;;;;;9280:19;;:2;:19;;;:43;;;;;9318:4;9303:20;;:4;:20;;;;9280:43;9277:174;;;9356:79;9431:3;9356:70;9378:16;;9368:9;;:26;9367:58;;9410:15;;9367:58;;;9396:13;;9367:58;9356:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;9344:91;;9277:174;9467:28;9498:24;9516:4;9498:9;:24::i;:::-;9467:55;;9542:6;;;;;;;;;;;9541:7;:32;;;;;9560:13;;;;;;;;;;;9552:21;;:2;:21;;;9541:32;:47;;;;;9577:11;;;;;;;;;;;9541:47;:89;;;;;9613:17;;9592:20;:38;9541:89;:121;;;;;9644:18;;9634:9;;:28;9541:121;9537:421;;;9683:67;9700:49;9704:6;9711:37;9715:20;9736:11;;9711:3;:37::i;:::-;9700:3;:49::i;:::-;9683:16;:67::i;:::-;9769:26;9798:21;9769:50;;9862:1;9841:18;:22;9838:105;;;9888:35;9901:21;9888:12;:35::i;:::-;9838:105;9664:294;9537:421;8256:1713;8218:1751;9994:1;9984:9;:11;9981:161;;;10034:39;10063:9;10034;:24;10052:4;10034:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10009:9;:24;10027:4;10009:24;;;;;;;;;;;;;;;:64;;;;10114:4;10091:39;;10100:4;10091:39;;;10120:9;10091:39;;;;;;:::i;:::-;;;;;;;;9981:161;10168:27;10188:6;10168:9;:15;10178:4;10168:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;10152:9;:15;10162:4;10152:15;;;;;;;;;;;;;;;:43;;;;10220:40;10238:21;10249:9;10238:6;:10;;:21;;;;:::i;:::-;10220:9;:13;10230:2;10220:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;10206:9;:13;10216:2;10206:13;;;;;;;;;;;;;;;:54;;;;10291:2;10276:41;;10285:4;10276:41;;;10295:21;10306:9;10295:6;:10;;:21;;;;:::i;:::-;10276:41;;;;;;:::i;:::-;;;;;;;;7948:2377;7879:2446;;;:::o;1513:190::-;1599:7;1632:1;1627;:6;;1635:12;1619:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1659:9;1675:1;1671;:5;;;;:::i;:::-;1659:17;;1694:1;1687:8;;;1513:190;;;;;:::o;10441:483::-;5405:4;5396:6;;:13;;;;;;;;;;;;;;;;;;10519:21:::1;10557:1;10543:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10519:40;;10588:4;10570;10575:1;10570:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10614:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10604:4;10609:1;10604:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10647:62;10664:4;10679:15;;;;;;;;;;;10697:11;10647:8;:62::i;:::-;10720:15;;;;;;;;;;;:66;;;10801:11;10827:1;10843:4;10870;10890:15;10720:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10508:416;5441:5:::0;5432:6;;:14;;;;;;;;;;;;;;;;;;10441:483;:::o;11136:295::-;11194:22;11251:3;11228:20;;11219:6;:29;;;;:::i;:::-;:35;;;;:::i;:::-;11194:60;;11265:23;11324:3;11300:21;;11291:6;:30;;;;:::i;:::-;:36;;;;:::i;:::-;11265:62;;11340:10;;;;;;;;;;;:19;;:35;11360:14;11340:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11386:11;;;;;;;;;;;:20;;:37;11407:15;11386:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11182:249;;11136:295;:::o;7740:131::-;7843:1;7829:10;:15;7821:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;7740:131;:::o;1711:246::-;1769:7;1798:1;1793;:6;1789:47;;1823:1;1816:8;;;;1789:47;1846:9;1862:1;1858;:5;;;;:::i;:::-;1846:17;;1891:1;1886;1882;:5;;;;:::i;:::-;:10;1874:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1948:1;1941:8;;;1711:246;;;;;:::o;1965:132::-;2023:7;2050:39;2054:1;2057;2050:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2043:46;;1965:132;;;;:::o;10335:98::-;10392:7;10419:1;10417;:3;10416:9;;10424:1;10416:9;;;10422:1;10416:9;10409:16;;10335:98;;;;:::o;1182:179::-;1240:7;1260:9;1276:1;1272;:5;;;;:::i;:::-;1260:17;;1301:1;1296;:6;;1288:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1352:1;1345:8;;;1182:179;;;;:::o;1369:136::-;1427:7;1454:43;1458:1;1461;1454:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1447:50;;1369:136;;;;:::o;2105:189::-;2191:7;2223:1;2219;:5;2226:12;2211:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2250:9;2266:1;2262;:5;;;;:::i;:::-;2250:17;;2285:1;2278:8;;;2105: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:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:117::-;4962:1;4959;4952:12;4976:180;5024:77;5021:1;5014:88;5121:4;5118:1;5111:15;5145:4;5142:1;5135:15;5162:281;5245:27;5267:4;5245:27;:::i;:::-;5237:6;5233:40;5375:6;5363:10;5360:22;5339:18;5327:10;5324:34;5321:62;5318:88;;;5386:18;;:::i;:::-;5318:88;5426:10;5422:2;5415:22;5205:238;5162:281;;:::o;5449:129::-;5483:6;5510:20;;:::i;:::-;5500:30;;5539:33;5567:4;5559:6;5539:33;:::i;:::-;5449:129;;;:::o;5584:311::-;5661:4;5751:18;5743:6;5740:30;5737:56;;;5773:18;;:::i;:::-;5737:56;5823:4;5815:6;5811:17;5803:25;;5883:4;5877;5873:15;5865:23;;5584:311;;;:::o;5901:117::-;6010:1;6007;6000:12;6041:710;6137:5;6162:81;6178:64;6235:6;6178:64;:::i;:::-;6162:81;:::i;:::-;6153:90;;6263:5;6292:6;6285:5;6278:21;6326:4;6319:5;6315:16;6308:23;;6379:4;6371:6;6367:17;6359:6;6355:30;6408:3;6400:6;6397:15;6394:122;;;6427:79;;:::i;:::-;6394:122;6542:6;6525:220;6559:6;6554:3;6551:15;6525:220;;;6634:3;6663:37;6696:3;6684:10;6663:37;:::i;:::-;6658:3;6651:50;6730:4;6725:3;6721:14;6714:21;;6601:144;6585:4;6580:3;6576:14;6569:21;;6525:220;;;6529:21;6143:608;;6041:710;;;;;:::o;6774:370::-;6845:5;6894:3;6887:4;6879:6;6875:17;6871:27;6861:122;;6902:79;;:::i;:::-;6861:122;7019:6;7006:20;7044:94;7134:3;7126:6;7119:4;7111:6;7107:17;7044:94;:::i;:::-;7035:103;;6851:293;6774:370;;;;:::o;7150:539::-;7234:6;7283:2;7271:9;7262:7;7258:23;7254:32;7251:119;;;7289:79;;:::i;:::-;7251:119;7437:1;7426:9;7422:17;7409:31;7467:18;7459:6;7456:30;7453:117;;;7489:79;;:::i;:::-;7453:117;7594:78;7664:7;7655:6;7644:9;7640:22;7594:78;:::i;:::-;7584:88;;7380:302;7150:539;;;;:::o;7695:329::-;7754:6;7803:2;7791:9;7782:7;7778:23;7774:32;7771:119;;;7809:79;;:::i;:::-;7771:119;7929:1;7954:53;7999:7;7990:6;7979:9;7975:22;7954:53;:::i;:::-;7944:63;;7900:117;7695:329;;;;:::o;8030:::-;8089:6;8138:2;8126:9;8117:7;8113:23;8109:32;8106:119;;;8144:79;;:::i;:::-;8106:119;8264:1;8289:53;8334:7;8325:6;8314:9;8310:22;8289:53;:::i;:::-;8279:63;;8235:117;8030:329;;;;:::o;8365:118::-;8452:24;8470:5;8452:24;:::i;:::-;8447:3;8440:37;8365:118;;:::o;8489:222::-;8582:4;8620:2;8609:9;8605:18;8597:26;;8633:71;8701:1;8690:9;8686:17;8677:6;8633:71;:::i;:::-;8489:222;;;;:::o;8717:474::-;8785:6;8793;8842:2;8830:9;8821:7;8817:23;8813:32;8810:119;;;8848:79;;:::i;:::-;8810:119;8968:1;8993:53;9038:7;9029:6;9018:9;9014:22;8993:53;:::i;:::-;8983:63;;8939:117;9095:2;9121:53;9166:7;9157:6;9146:9;9142:22;9121:53;:::i;:::-;9111:63;;9066:118;8717:474;;;;;:::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:173::-;13252:25;13248:1;13240:6;13236:14;13229:49;13112:173;:::o;13291:366::-;13433:3;13454:67;13518:2;13513:3;13454:67;:::i;:::-;13447:74;;13530:93;13619:3;13530:93;:::i;:::-;13648:2;13643:3;13639:12;13632:19;;13291:366;;;:::o;13663:419::-;13829:4;13867:2;13856:9;13852:18;13844:26;;13916:9;13910:4;13906:20;13902:1;13891:9;13887:17;13880:47;13944:131;14070:4;13944:131;:::i;:::-;13936:139;;13663:419;;;:::o;14088:143::-;14145:5;14176:6;14170:13;14161:22;;14192:33;14219:5;14192:33;:::i;:::-;14088:143;;;;:::o;14237:351::-;14307:6;14356:2;14344:9;14335:7;14331:23;14327:32;14324:119;;;14362:79;;:::i;:::-;14324:119;14482:1;14507:64;14563:7;14554:6;14543:9;14539:22;14507:64;:::i;:::-;14497:74;;14453:128;14237:351;;;;:::o;14594:332::-;14715:4;14753:2;14742:9;14738:18;14730:26;;14766:71;14834:1;14823:9;14819:17;14810:6;14766:71;:::i;:::-;14847:72;14915:2;14904:9;14900:18;14891:6;14847:72;:::i;:::-;14594:332;;;;;:::o;14932:85::-;14977:7;15006:5;14995:16;;14932:85;;;:::o;15023:60::-;15051:3;15072:5;15065:12;;15023:60;;;:::o;15089:158::-;15147:9;15180:61;15198:42;15207:32;15233:5;15207:32;:::i;:::-;15198:42;:::i;:::-;15180:61;:::i;:::-;15167:74;;15089:158;;;:::o;15253:147::-;15348:45;15387:5;15348:45;:::i;:::-;15343:3;15336:58;15253:147;;:::o;15406:807::-;15655:4;15693:3;15682:9;15678:19;15670:27;;15707:71;15775:1;15764:9;15760:17;15751:6;15707:71;:::i;:::-;15788:72;15856:2;15845:9;15841:18;15832:6;15788:72;:::i;:::-;15870:80;15946:2;15935:9;15931:18;15922:6;15870:80;:::i;:::-;15960;16036:2;16025:9;16021:18;16012:6;15960:80;:::i;:::-;16050:73;16118:3;16107:9;16103:19;16094:6;16050:73;:::i;:::-;16133;16201:3;16190:9;16186:19;16177:6;16133:73;:::i;:::-;15406:807;;;;;;;;;:::o;16219:143::-;16276:5;16307:6;16301:13;16292:22;;16323:33;16350:5;16323:33;:::i;:::-;16219:143;;;;:::o;16368:663::-;16456:6;16464;16472;16521:2;16509:9;16500:7;16496:23;16492:32;16489:119;;;16527:79;;:::i;:::-;16489:119;16647:1;16672:64;16728:7;16719:6;16708:9;16704:22;16672:64;:::i;:::-;16662:74;;16618:128;16785:2;16811:64;16867:7;16858:6;16847:9;16843:22;16811:64;:::i;:::-;16801:74;;16756:129;16924:2;16950:64;17006:7;16997:6;16986:9;16982:22;16950:64;:::i;:::-;16940:74;;16895:129;16368:663;;;;;:::o;17037:332::-;17158:4;17196:2;17185:9;17181:18;17173:26;;17209:71;17277:1;17266:9;17262:17;17253:6;17209:71;:::i;:::-;17290:72;17358:2;17347:9;17343:18;17334:6;17290:72;:::i;:::-;17037:332;;;;;:::o;17375:116::-;17445:21;17460:5;17445:21;:::i;:::-;17438:5;17435:32;17425:60;;17481:1;17478;17471:12;17425:60;17375:116;:::o;17497:137::-;17551:5;17582:6;17576:13;17567:22;;17598:30;17622:5;17598:30;:::i;:::-;17497:137;;;;:::o;17640:345::-;17707:6;17756:2;17744:9;17735:7;17731:23;17727:32;17724:119;;;17762:79;;:::i;:::-;17724:119;17882:1;17907:61;17960:7;17951:6;17940:9;17936:22;17907:61;:::i;:::-;17897:71;;17853:125;17640:345;;;;:::o;17991:180::-;18039:77;18036:1;18029:88;18136:4;18133:1;18126:15;18160:4;18157:1;18150:15;18177:233;18216:3;18239:24;18257:5;18239:24;:::i;:::-;18230:33;;18285:66;18278:5;18275:77;18272:103;;18355:18;;:::i;:::-;18272:103;18402:1;18395:5;18391:13;18384:20;;18177:233;;;:::o;18416:351::-;18486:6;18535:2;18523:9;18514:7;18510:23;18506:32;18503:119;;;18541:79;;:::i;:::-;18503:119;18661:1;18686:64;18742:7;18733:6;18722:9;18718:22;18686:64;:::i;:::-;18676:74;;18632:128;18416:351;;;;:::o;18773:142::-;18823:9;18856:53;18874:34;18883:24;18901:5;18883:24;:::i;:::-;18874:34;:::i;:::-;18856:53;:::i;:::-;18843:66;;18773:142;;;:::o;18921:126::-;18971:9;19004:37;19035:5;19004:37;:::i;:::-;18991:50;;18921:126;;;:::o;19053:134::-;19111:9;19144:37;19175:5;19144:37;:::i;:::-;19131:50;;19053:134;;;:::o;19193:147::-;19288:45;19327:5;19288:45;:::i;:::-;19283:3;19276:58;19193:147;;:::o;19346:348::-;19475:4;19513:2;19502:9;19498:18;19490:26;;19526:79;19602:1;19591:9;19587:17;19578:6;19526:79;:::i;:::-;19615:72;19683:2;19672:9;19668:18;19659:6;19615:72;:::i;:::-;19346:348;;;;;:::o;19700:223::-;19840:34;19836:1;19828:6;19824:14;19817:58;19909:6;19904:2;19896:6;19892:15;19885:31;19700:223;:::o;19929:366::-;20071:3;20092:67;20156:2;20151:3;20092:67;:::i;:::-;20085:74;;20168:93;20257:3;20168:93;:::i;:::-;20286:2;20281:3;20277:12;20270:19;;19929:366;;;:::o;20301:419::-;20467:4;20505:2;20494:9;20490:18;20482:26;;20554:9;20548:4;20544:20;20540:1;20529:9;20525:17;20518:47;20582:131;20708:4;20582:131;:::i;:::-;20574:139;;20301:419;;;:::o;20726:221::-;20866:34;20862:1;20854:6;20850:14;20843:58;20935:4;20930:2;20922:6;20918:15;20911:29;20726:221;:::o;20953:366::-;21095:3;21116:67;21180:2;21175:3;21116:67;:::i;:::-;21109:74;;21192:93;21281:3;21192:93;:::i;:::-;21310:2;21305:3;21301:12;21294:19;;20953:366;;;:::o;21325:419::-;21491:4;21529:2;21518:9;21514:18;21506:26;;21578:9;21572:4;21568:20;21564:1;21553:9;21549:17;21542:47;21606:131;21732:4;21606:131;:::i;:::-;21598:139;;21325:419;;;:::o;21750:224::-;21890:34;21886:1;21878:6;21874:14;21867:58;21959:7;21954:2;21946:6;21942:15;21935:32;21750:224;:::o;21980:366::-;22122:3;22143:67;22207:2;22202:3;22143:67;:::i;:::-;22136:74;;22219:93;22308:3;22219:93;:::i;:::-;22337:2;22332:3;22328:12;22321:19;;21980:366;;;:::o;22352:419::-;22518:4;22556:2;22545:9;22541:18;22533:26;;22605:9;22599:4;22595:20;22591:1;22580:9;22576:17;22569:47;22633:131;22759:4;22633:131;:::i;:::-;22625:139;;22352:419;;;:::o;22777:222::-;22917:34;22913:1;22905:6;22901:14;22894:58;22986:5;22981:2;22973:6;22969:15;22962:30;22777:222;:::o;23005:366::-;23147:3;23168:67;23232:2;23227:3;23168:67;:::i;:::-;23161:74;;23244:93;23333:3;23244:93;:::i;:::-;23362:2;23357:3;23353:12;23346:19;;23005:366;;;:::o;23377:419::-;23543:4;23581:2;23570:9;23566:18;23558:26;;23630:9;23624:4;23620:20;23616:1;23605:9;23601:17;23594:47;23658:131;23784:4;23658:131;:::i;:::-;23650:139;;23377:419;;;:::o;23802:228::-;23942:34;23938:1;23930:6;23926:14;23919:58;24011:11;24006:2;23998:6;23994:15;23987:36;23802:228;:::o;24036:366::-;24178:3;24199:67;24263:2;24258:3;24199:67;:::i;:::-;24192:74;;24275:93;24364:3;24275:93;:::i;:::-;24393:2;24388:3;24384:12;24377:19;;24036:366;;;:::o;24408:419::-;24574:4;24612:2;24601:9;24597:18;24589:26;;24661:9;24655:4;24651:20;24647:1;24636:9;24632:17;24625:47;24689:131;24815:4;24689:131;:::i;:::-;24681:139;;24408:419;;;:::o;24833:297::-;24973:34;24969:1;24961:6;24957:14;24950:58;25042:34;25037:2;25029:6;25025:15;25018:59;25111:11;25106:2;25098:6;25094:15;25087:36;24833:297;:::o;25136:366::-;25278:3;25299:67;25363:2;25358:3;25299:67;:::i;:::-;25292:74;;25375:93;25464:3;25375:93;:::i;:::-;25493:2;25488:3;25484:12;25477:19;;25136:366;;;:::o;25508:419::-;25674:4;25712:2;25701:9;25697:18;25689:26;;25761:9;25755:4;25751:20;25747:1;25736:9;25732:17;25725:47;25789:131;25915:4;25789:131;:::i;:::-;25781:139;;25508:419;;;:::o;25933:175::-;26073:27;26069:1;26061:6;26057:14;26050:51;25933:175;:::o;26114:366::-;26256:3;26277:67;26341:2;26336:3;26277:67;:::i;:::-;26270:74;;26353:93;26442:3;26353:93;:::i;:::-;26471:2;26466:3;26462:12;26455:19;;26114:366;;;:::o;26486:419::-;26652:4;26690:2;26679:9;26675:18;26667:26;;26739:9;26733:4;26729:20;26725:1;26714:9;26710:17;26703:47;26767:131;26893:4;26767:131;:::i;:::-;26759:139;;26486:419;;;:::o;26911:191::-;26951:3;26970:20;26988:1;26970:20;:::i;:::-;26965:25;;27004:20;27022:1;27004:20;:::i;:::-;26999:25;;27047:1;27044;27040:9;27033:16;;27068:3;27065:1;27062:10;27059:36;;;27075:18;;:::i;:::-;27059:36;26911:191;;;;:::o;27108:176::-;27248:28;27244:1;27236:6;27232:14;27225:52;27108:176;:::o;27290:366::-;27432:3;27453:67;27517:2;27512:3;27453:67;:::i;:::-;27446:74;;27529:93;27618:3;27529:93;:::i;:::-;27647:2;27642:3;27638:12;27631:19;;27290:366;;;:::o;27662:419::-;27828:4;27866:2;27855:9;27851:18;27843:26;;27915:9;27909:4;27905:20;27901:1;27890:9;27886:17;27879:47;27943:131;28069:4;27943:131;:::i;:::-;27935:139;;27662:419;;;:::o;28087:194::-;28127:4;28147:20;28165:1;28147:20;:::i;:::-;28142:25;;28181:20;28199:1;28181:20;:::i;:::-;28176:25;;28225:1;28222;28218:9;28210:17;;28249:1;28243:4;28240:11;28237:37;;;28254:18;;:::i;:::-;28237:37;28087:194;;;;:::o;28287:114::-;28354:6;28388:5;28382:12;28372:22;;28287:114;;;:::o;28407:184::-;28506:11;28540:6;28535:3;28528:19;28580:4;28575:3;28571:14;28556:29;;28407:184;;;;:::o;28597:132::-;28664:4;28687:3;28679:11;;28717:4;28712:3;28708:14;28700:22;;28597:132;;;:::o;28735:108::-;28812:24;28830:5;28812:24;:::i;:::-;28807:3;28800:37;28735:108;;:::o;28849:179::-;28918:10;28939:46;28981:3;28973:6;28939:46;:::i;:::-;29017:4;29012:3;29008:14;28994:28;;28849:179;;;;:::o;29034:113::-;29104:4;29136;29131:3;29127:14;29119:22;;29034:113;;;:::o;29183:732::-;29302:3;29331:54;29379:5;29331:54;:::i;:::-;29401:86;29480:6;29475:3;29401:86;:::i;:::-;29394:93;;29511:56;29561:5;29511:56;:::i;:::-;29590:7;29621:1;29606:284;29631:6;29628:1;29625:13;29606:284;;;29707:6;29701:13;29734:63;29793:3;29778:13;29734:63;:::i;:::-;29727:70;;29820:60;29873:6;29820:60;:::i;:::-;29810:70;;29666:224;29653:1;29650;29646:9;29641:14;;29606:284;;;29610:14;29906:3;29899:10;;29307:608;;;29183:732;;;;:::o;29921:831::-;30184:4;30222:3;30211:9;30207:19;30199:27;;30236:71;30304:1;30293:9;30289:17;30280:6;30236:71;:::i;:::-;30317:80;30393:2;30382:9;30378:18;30369:6;30317:80;:::i;:::-;30444:9;30438:4;30434:20;30429:2;30418:9;30414:18;30407:48;30472:108;30575:4;30566:6;30472:108;:::i;:::-;30464:116;;30590:72;30658:2;30647:9;30643:18;30634:6;30590:72;:::i;:::-;30672:73;30740:3;30729:9;30725:19;30716:6;30672:73;:::i;:::-;29921:831;;;;;;;;:::o;30758:180::-;30806:77;30803:1;30796:88;30903:4;30900:1;30893:15;30927:4;30924:1;30917:15;30944:185;30984:1;31001:20;31019:1;31001:20;:::i;:::-;30996:25;;31035:20;31053:1;31035:20;:::i;:::-;31030:25;;31074:1;31064:35;;31079:18;;:::i;:::-;31064:35;31121:1;31118;31114:9;31109:14;;30944:185;;;;:::o;31135:164::-;31275:16;31271:1;31263:6;31259:14;31252:40;31135:164;:::o;31305:366::-;31447:3;31468:67;31532:2;31527:3;31468:67;:::i;:::-;31461:74;;31544:93;31633:3;31544:93;:::i;:::-;31662:2;31657:3;31653:12;31646:19;;31305:366;;;:::o;31677:419::-;31843:4;31881:2;31870:9;31866:18;31858:26;;31930:9;31924:4;31920:20;31916:1;31905:9;31901:17;31894:47;31958:131;32084:4;31958:131;:::i;:::-;31950:139;;31677:419;;;:::o;32102:220::-;32242:34;32238:1;32230:6;32226:14;32219:58;32311:3;32306:2;32298:6;32294:15;32287:28;32102:220;:::o;32328:366::-;32470:3;32491:67;32555:2;32550:3;32491:67;:::i;:::-;32484:74;;32567:93;32656:3;32567:93;:::i;:::-;32685:2;32680:3;32676:12;32669:19;;32328:366;;;:::o;32700:419::-;32866:4;32904:2;32893:9;32889:18;32881:26;;32953:9;32947:4;32943:20;32939:1;32928:9;32924:17;32917:47;32981:131;33107:4;32981:131;:::i;:::-;32973:139;;32700:419;;;:::o;33125:177::-;33265:29;33261:1;33253:6;33249:14;33242:53;33125:177;:::o;33308:366::-;33450:3;33471:67;33535:2;33530:3;33471:67;:::i;:::-;33464:74;;33547:93;33636:3;33547:93;:::i;:::-;33665:2;33660:3;33656:12;33649:19;;33308:366;;;:::o;33680:419::-;33846:4;33884:2;33873:9;33869:18;33861:26;;33933:9;33927:4;33923:20;33919:1;33908:9;33904:17;33897:47;33961:131;34087:4;33961:131;:::i;:::-;33953:139;;33680:419;;;:::o

Swarm Source

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