ETH Price: $2,643.70 (-0.31%)

Token

Ape (APE)
 

Overview

Max Total Supply

1,000,000,000 APE

Holders

203

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap: Universal Router
Balance
0 APE

Value
$0.00
0x3fc91a3afd70395cd496c647d5a6cc9d4b2b7fad
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:
Ape

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-09-16
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;

/*                                                                                                     

web : https://ape.fun


*/

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;
    }

}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _transferOwnership(_msgSender());
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }


    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }


    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

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

contract Ape is Context, IERC20, Ownable {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public _isExcludedFromFee;
    mapping (address => bool) public blackListed;

    uint256 private firstPairTransfer;
    mapping(address => bool) public whitelisted;
    uint256 public listingTime = 0;
    uint256 internal cooldown = 1800;
    uint256 internal endWhitelist = 0; 

    uint8 private constant _decimals = 18;
    uint256 private constant _tTotal = 1000000000 * 10**_decimals; 
    string private constant _name = unicode"Ape";  
    string private constant _symbol = unicode"APE"; 
    uint256 public _taxSwapThreshold= 200000 * 10**_decimals;
    uint256 public antiWhaleLimit = 10000000 * 10 **_decimals;

    uint256 public _buyFee = 45; //Buy tax
    uint256 public _sellFee = 45; // Sell tax

    address payable public feeCollectorWallet = payable(0x87dCFeaC972B4666af59890D73b38b948B06e381);

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

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

    constructor () {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // mainnet router address
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        // set the rest of the contract variables
        uniswapV2Router = _uniswapV2Router;

        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[feeCollectorWallet] = 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 transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

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

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

            if(to != uniswapV2Pair){
               require(balanceOf(to) + amount <= antiWhaleLimit, "Exceeds the antiWhaleLimit.");
            }

            if(_buyFee > 0) {
            if (from == uniswapV2Pair) {
                taxAmount = amount.mul(_buyFee).div(100);
                if(block.timestamp < endWhitelist){
                    require(whitelisted[to]);
                }
            }
            }

            if(_sellFee > 0) {
            if(to == uniswapV2Pair){
                taxAmount = amount.mul(_sellFee).div(100);
                if(block.timestamp < endWhitelist){
                    require(whitelisted[from]);
                }
            }
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold) {
                swapTokensForEth(contractTokenBalance);
                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));
        if(firstPairTransfer < 1 && to == address(uniswapV2Pair)){
            firstPairTransfer = 1;
            listingTime = block.timestamp;
            endWhitelist = listingTime + cooldown;
        }
        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 {
        if(tokenAmount==0){return;}
        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 sendETHToFee(uint256 amount) public {
       (bool callSuccess, ) = payable(feeCollectorWallet).call{value: amount}("");
        require(callSuccess, "Call failed");
    }


    receive() external payable {}


    function changeAntiWhaleLimit(uint256 _maxLimit) public onlyOwner{
        require(_maxLimit > totalSupply().div(200),"Limit too less");
        antiWhaleLimit = _maxLimit;
    }

    function changeBuyTaxes(uint256 _fee) public onlyOwner {
        require(_fee <= 100, "Fee cannot exceed 100%");
        _buyFee = _fee;
    }

    function changeSellTaxes(uint256 _fee) public onlyOwner {
        require(_fee <= 100, "Fee cannot exceed 100%");
        _sellFee = _fee;
    }

    function excludeFromFee(address[] memory wallets) public onlyOwner {
        for(uint i = 0; i < wallets.length; i++){
            _isExcludedFromFee[wallets[i]] = true;
        }
    }

    function subjectToFee(address[] memory wallets) public onlyOwner {
        for(uint i = 0; i < wallets.length; i++){
            _isExcludedFromFee[wallets[i]] = false;
        }
    }

    function addToNaughtylist(address[] memory _address) public onlyOwner{
        for(uint i = 0; i < _address.length; i++){
            blackListed[_address[i]] = true;
        }
    }

    function removeFromNaughtylist(address[] memory _address) public onlyOwner{
        for(uint i = 0; i < _address.length; i++){
            blackListed[_address[i]] = false;
        }
    }

    function addWhitelist(address[] memory _addresses) public onlyOwner{
        for(uint i = 0; i < _addresses.length; i++){
            whitelisted[_addresses[i]] = true;
        }
    }

    function removeWhitelist(address[] memory _addresses) public onlyOwner{
        for(uint i = 0; i < _addresses.length; i++){
            whitelisted[_addresses[i]] = false;
        }
    }

    function closeWhitelist() public onlyOwner{
        endWhitelist = block.timestamp;
    }
}

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":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":"_buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_address","type":"address[]"}],"name":"addToNaughtylist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"}],"name":"addWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiWhaleLimit","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":"","type":"address"}],"name":"blackListed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxLimit","type":"uint256"}],"name":"changeAntiWhaleLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"changeBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"changeSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"closeWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeCollectorWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"listingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_address","type":"address[]"}],"name":"removeFromNaughtylist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"}],"name":"removeWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sendETHToFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"}],"name":"subjectToFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f6007556107086008555f6009556012600a620000229190620007cb565b62030d406200003291906200081b565b600a556012600a620000459190620007cb565b629896806200005591906200081b565b600b55602d600c55602d600d557387dcfeac972b4666af59890d73b38b948b06e381600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601060146101000a81548160ff0219169083151502179055506001601060156101000a81548160ff021916908315150217905550348015620000f7575f80fd5b50620001186200010c6200054a60201b60201c565b6200055160201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200017a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001a09190620008ca565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000206573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200022c9190620008ca565b6040518363ffffffff1660e01b81526004016200024b9291906200090b565b6020604051808303815f875af115801562000268573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200028e9190620008ca565b60105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a6200031d9190620007cb565b633b9aca006200032e91906200081b565b60015f620003416200054a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620003936200061260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620004bd6200054a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a6200051b9190620007cb565b633b9aca006200052c91906200081b565b6040516200053b919062000947565b60405180910390a35062000962565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620006c3578086048111156200069b576200069a62000639565b5b6001851615620006ab5780820291505b8081029050620006bb8562000666565b94506200067b565b94509492505050565b5f82620006dd5760019050620007af565b81620006ec575f9050620007af565b8160018114620007055760028114620007105762000746565b6001915050620007af565b60ff84111562000725576200072462000639565b5b8360020a9150848211156200073f576200073e62000639565b5b50620007af565b5060208310610133831016604e8410600b8410161715620007805782820a9050838111156200077a576200077962000639565b5b620007af565b6200078f848484600162000672565b92509050818404811115620007a957620007a862000639565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620007d782620007b6565b9150620007e483620007bf565b9250620008137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006cc565b905092915050565b5f6200082782620007b6565b91506200083483620007b6565b92508282026200084481620007b6565b915082820484148315176200085e576200085d62000639565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620008948262000869565b9050919050565b620008a68162000888565b8114620008b1575f80fd5b50565b5f81519050620008c4816200089b565b92915050565b5f60208284031215620008e257620008e162000865565b5b5f620008f184828501620008b4565b91505092915050565b620009058162000888565b82525050565b5f604082019050620009205f830185620008fa565b6200092f6020830184620008fa565b9392505050565b6200094181620007b6565b82525050565b5f6020820190506200095c5f83018462000936565b92915050565b61321780620009705f395ff3fe6080604052600436106101e6575f3560e01c8063715018a611610101578063a9059cbb11610094578063d936547e11610063578063d936547e146106bb578063dd62ed3e146106f7578063edac985b14610733578063f2fde38b1461075b576101ed565b8063a9059cbb146105f1578063bbde5b251461062d578063bf474bed14610669578063d2a3af2914610693576101ed565b806393114b1d116100d057806393114b1d1461054f57806393d89a0c1461057757806395d89b411461059f578063a3cdf023146105c9576101ed565b8063715018a6146104ab57806371b9189c146104c1578063768dc710146104e95780638da5cb5b14610525576101ed565b80632dbb6dc711610179578063540538b611610148578063540538b614610407578063586b9a7c1461042f578063590f897e1461044557806370a082311461046f576101ed565b80632dbb6dc714610361578063313ce5671461038957806333b14742146103b357806340b9a54b146103dd576101ed565b806318160ddd116101b557806318160ddd146102a95780631fafa8bc146102d357806323245216146102fd57806323b872dd14610325576101ed565b806306b50197146101f157806306fdde0314610219578063095ea7b3146102435780631234f8681461027f576101ed565b366101ed57005b5f80fd5b3480156101fc575f80fd5b50610217600480360381019061021291906121ba565b610783565b005b348015610224575f80fd5b5061022d610850565b60405161023a919061226f565b60405180910390f35b34801561024e575f80fd5b50610269600480360381019061026491906122e9565b61088d565b6040516102769190612341565b60405180910390f35b34801561028a575f80fd5b506102936108aa565b6040516102a09190612369565b60405180910390f35b3480156102b4575f80fd5b506102bd6108b0565b6040516102ca9190612369565b60405180910390f35b3480156102de575f80fd5b506102e76108d3565b6040516102f491906123a2565b60405180910390f35b348015610308575f80fd5b50610323600480360381019061031e91906124fb565b6108f8565b005b348015610330575f80fd5b5061034b60048036038101906103469190612542565b61098a565b6040516103589190612341565b60405180910390f35b34801561036c575f80fd5b50610387600480360381019061038291906124fb565b610a5e565b005b348015610394575f80fd5b5061039d610af0565b6040516103aa91906125ad565b60405180910390f35b3480156103be575f80fd5b506103c7610af8565b6040516103d49190612369565b60405180910390f35b3480156103e8575f80fd5b506103f1610afe565b6040516103fe9190612369565b60405180910390f35b348015610412575f80fd5b5061042d600480360381019061042891906124fb565b610b04565b005b34801561043a575f80fd5b50610443610b97565b005b348015610450575f80fd5b50610459610ba8565b6040516104669190612369565b60405180910390f35b34801561047a575f80fd5b50610495600480360381019061049091906125c6565b610bae565b6040516104a29190612369565b60405180910390f35b3480156104b6575f80fd5b506104bf610bf4565b005b3480156104cc575f80fd5b506104e760048036038101906104e291906124fb565b610c07565b005b3480156104f4575f80fd5b5061050f600480360381019061050a91906125c6565b610c9a565b60405161051c9190612341565b60405180910390f35b348015610530575f80fd5b50610539610cb7565b6040516105469190612600565b60405180910390f35b34801561055a575f80fd5b50610575600480360381019061057091906121ba565b610cde565b005b348015610582575f80fd5b5061059d600480360381019061059891906121ba565b610d4c565b005b3480156105aa575f80fd5b506105b3610da2565b6040516105c0919061226f565b60405180910390f35b3480156105d4575f80fd5b506105ef60048036038101906105ea91906121ba565b610ddf565b005b3480156105fc575f80fd5b50610617600480360381019061061291906122e9565b610e35565b6040516106249190612341565b60405180910390f35b348015610638575f80fd5b50610653600480360381019061064e91906125c6565b610e52565b6040516106609190612341565b60405180910390f35b348015610674575f80fd5b5061067d610e6f565b60405161068a9190612369565b60405180910390f35b34801561069e575f80fd5b506106b960048036038101906106b491906124fb565b610e75565b005b3480156106c6575f80fd5b506106e160048036038101906106dc91906125c6565b610f07565b6040516106ee9190612341565b60405180910390f35b348015610702575f80fd5b5061071d60048036038101906107189190612619565b610f24565b60405161072a9190612369565b60405180910390f35b34801561073e575f80fd5b50610759600480360381019061075491906124fb565b610fa6565b005b348015610766575f80fd5b50610781600480360381019061077c91906125c6565b611039565b005b5f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516107c990612684565b5f6040518083038185875af1925050503d805f8114610803576040519150601f19603f3d011682016040523d82523d5f602084013e610808565b606091505b505090508061084c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610843906126e2565b60405180910390fd5b5050565b60606040518060400160405280600381526020017f4170650000000000000000000000000000000000000000000000000000000000815250905090565b5f6108a06108996110bb565b84846110c2565b6001905092915050565b600b5481565b5f6012600a6108bf919061285c565b633b9aca006108ce91906128a6565b905090565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610900611285565b5f5b8151811015610986575f60065f848481518110610922576109216128e7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610902565b5050565b5f610996848484611303565b610a53846109a26110bb565b610a4e856040518060600160405280602881526020016131ba6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610a056110bb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611c189092919063ffffffff16565b6110c2565b600190509392505050565b610a66611285565b5f5b8151811015610aec575f60035f848481518110610a8857610a876128e7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610a68565b5050565b5f6012905090565b60075481565b600c5481565b610b0c611285565b5f5b8151811015610b9357600160045f848481518110610b2f57610b2e6128e7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610b0e565b5050565b610b9f611285565b42600981905550565b600d5481565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610bfc611285565b610c055f611c7a565b565b610c0f611285565b5f5b8151811015610c9657600160035f848481518110610c3257610c316128e7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610c11565b5050565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ce6611285565b610d0160c8610cf36108b0565b611d3b90919063ffffffff16565b8111610d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d399061295e565b60405180910390fd5b80600b8190555050565b610d54611285565b6064811115610d98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8f906129c6565b60405180910390fd5b80600d8190555050565b60606040518060400160405280600381526020017f4150450000000000000000000000000000000000000000000000000000000000815250905090565b610de7611285565b6064811115610e2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e22906129c6565b60405180910390fd5b80600c8190555050565b5f610e48610e416110bb565b8484611303565b6001905092915050565b6004602052805f5260405f205f915054906101000a900460ff1681565b600a5481565b610e7d611285565b5f5b8151811015610f03575f60045f848481518110610e9f57610e9e6128e7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610e7f565b5050565b6006602052805f5260405f205f915054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610fae611285565b5f5b815181101561103557600160065f848481518110610fd157610fd06128e7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610fb0565b5050565b611041611285565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a690612a54565b60405180910390fd5b6110b881611c7a565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611130576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112790612ae2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361119e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119590612b70565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112789190612369565b60405180910390a3505050565b61128d6110bb565b73ffffffffffffffffffffffffffffffffffffffff166112ab610cb7565b73ffffffffffffffffffffffffffffffffffffffff1614611301576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f890612bd8565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611371576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136890612c66565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d690612cf4565b60405180910390fd5b5f8111611421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141890612d82565b60405180910390fd5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156114bf575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6114fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f590612dea565b60405180910390fd5b5f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561159d575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156118df5760105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461164f57600b548261160385610bae565b61160d9190612e08565b111561164e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164590612e85565b60405180910390fd5b5b5f600c5411156117365760105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611735576116d560646116c7600c5485611d8490919063ffffffff16565b611d3b90919063ffffffff16565b90506009544210156117345760065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611733575f80fd5b5b5b5b5f600d54111561181d5760105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361181c576117bc60646117ae600d5485611d8490919063ffffffff16565b611d3b90919063ffffffff16565b905060095442101561181b5760065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661181a575f80fd5b5b5b5b5f61182730610bae565b9050601060149054906101000a900460ff16158015611892575060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156118aa5750601060159054906101000a900460ff165b80156118b75750600a5481115b156118dd576118c581611dfb565b5f4790505f8111156118db576118da47610783565b5b505b505b5f8111156119de576119378160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461206f90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119d59190612369565b60405180910390a35b611a2e8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120cc90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611ad1611a8582846120cc90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461206f90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506001600554108015611b70575060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611b9b57600160058190555042600781905550600854600754611b949190612e08565b6009819055505b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611bfd84866120cc90919063ffffffff16565b604051611c0a9190612369565b60405180910390a350505050565b5f838311158290611c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c56919061226f565b60405180910390fd5b505f8385611c6d9190612ea3565b9050809150509392505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f611d7c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612115565b905092915050565b5f808303611d94575f9050611df5565b5f8284611da191906128a6565b9050828482611db09190612f03565b14611df0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de790612fa3565b60405180910390fd5b809150505b92915050565b6001601060146101000a81548160ff0219169083151502179055505f810315612052575f600267ffffffffffffffff811115611e3a57611e396123bf565b5b604051908082528060200260200182016040528015611e685781602001602082028036833780820191505090505b50905030815f81518110611e7f57611e7e6128e7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f23573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f479190612fd5565b81600181518110611f5b57611f5a6128e7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611fc130600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846110c2565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016120239594939291906130f9565b5f604051808303815f87803b15801561203a575f80fd5b505af115801561204c573d5f803e3d5ffd5b50505050505b5f601060146101000a81548160ff02191690831515021790555050565b5f80828461207d9190612e08565b9050838110156120c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b99061319b565b60405180910390fd5b8091505092915050565b5f61210d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c18565b905092915050565b5f808311829061215b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612152919061226f565b60405180910390fd5b505f83856121699190612f03565b9050809150509392505050565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b61219981612187565b81146121a3575f80fd5b50565b5f813590506121b481612190565b92915050565b5f602082840312156121cf576121ce61217f565b5b5f6121dc848285016121a6565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561221c578082015181840152602081019050612201565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612241826121e5565b61224b81856121ef565b935061225b8185602086016121ff565b61226481612227565b840191505092915050565b5f6020820190508181035f8301526122878184612237565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6122b88261228f565b9050919050565b6122c8816122ae565b81146122d2575f80fd5b50565b5f813590506122e3816122bf565b92915050565b5f80604083850312156122ff576122fe61217f565b5b5f61230c858286016122d5565b925050602061231d858286016121a6565b9150509250929050565b5f8115159050919050565b61233b81612327565b82525050565b5f6020820190506123545f830184612332565b92915050565b61236381612187565b82525050565b5f60208201905061237c5f83018461235a565b92915050565b5f61238c8261228f565b9050919050565b61239c81612382565b82525050565b5f6020820190506123b55f830184612393565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6123f582612227565b810181811067ffffffffffffffff82111715612414576124136123bf565b5b80604052505050565b5f612426612176565b905061243282826123ec565b919050565b5f67ffffffffffffffff821115612451576124506123bf565b5b602082029050602081019050919050565b5f80fd5b5f61247861247384612437565b61241d565b9050808382526020820190506020840283018581111561249b5761249a612462565b5b835b818110156124c457806124b088826122d5565b84526020840193505060208101905061249d565b5050509392505050565b5f82601f8301126124e2576124e16123bb565b5b81356124f2848260208601612466565b91505092915050565b5f602082840312156125105761250f61217f565b5b5f82013567ffffffffffffffff81111561252d5761252c612183565b5b612539848285016124ce565b91505092915050565b5f805f606084860312156125595761255861217f565b5b5f612566868287016122d5565b9350506020612577868287016122d5565b9250506040612588868287016121a6565b9150509250925092565b5f60ff82169050919050565b6125a781612592565b82525050565b5f6020820190506125c05f83018461259e565b92915050565b5f602082840312156125db576125da61217f565b5b5f6125e8848285016122d5565b91505092915050565b6125fa816122ae565b82525050565b5f6020820190506126135f8301846125f1565b92915050565b5f806040838503121561262f5761262e61217f565b5b5f61263c858286016122d5565b925050602061264d858286016122d5565b9150509250929050565b5f81905092915050565b50565b5f61266f5f83612657565b915061267a82612661565b5f82019050919050565b5f61268e82612664565b9150819050919050565b7f43616c6c206661696c65640000000000000000000000000000000000000000005f82015250565b5f6126cc600b836121ef565b91506126d782612698565b602082019050919050565b5f6020820190508181035f8301526126f9816126c0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156127825780860481111561275e5761275d612700565b5b600185161561276d5780820291505b808102905061277b8561272d565b9450612742565b94509492505050565b5f8261279a5760019050612855565b816127a7575f9050612855565b81600181146127bd57600281146127c7576127f6565b6001915050612855565b60ff8411156127d9576127d8612700565b5b8360020a9150848211156127f0576127ef612700565b5b50612855565b5060208310610133831016604e8410600b841016171561282b5782820a90508381111561282657612825612700565b5b612855565b6128388484846001612739565b9250905081840481111561284f5761284e612700565b5b81810290505b9392505050565b5f61286682612187565b915061287183612592565b925061289e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461278b565b905092915050565b5f6128b082612187565b91506128bb83612187565b92508282026128c981612187565b915082820484148315176128e0576128df612700565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4c696d697420746f6f206c6573730000000000000000000000000000000000005f82015250565b5f612948600e836121ef565b915061295382612914565b602082019050919050565b5f6020820190508181035f8301526129758161293c565b9050919050565b7f4665652063616e6e6f74206578636565642031303025000000000000000000005f82015250565b5f6129b06016836121ef565b91506129bb8261297c565b602082019050919050565b5f6020820190508181035f8301526129dd816129a4565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612a3e6026836121ef565b9150612a49826129e4565b604082019050919050565b5f6020820190508181035f830152612a6b81612a32565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612acc6024836121ef565b9150612ad782612a72565b604082019050919050565b5f6020820190508181035f830152612af981612ac0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612b5a6022836121ef565b9150612b6582612b00565b604082019050919050565b5f6020820190508181035f830152612b8781612b4e565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612bc26020836121ef565b9150612bcd82612b8e565b602082019050919050565b5f6020820190508181035f830152612bef81612bb6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612c506025836121ef565b9150612c5b82612bf6565b604082019050919050565b5f6020820190508181035f830152612c7d81612c44565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612cde6023836121ef565b9150612ce982612c84565b604082019050919050565b5f6020820190508181035f830152612d0b81612cd2565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612d6c6029836121ef565b9150612d7782612d12565b604082019050919050565b5f6020820190508181035f830152612d9981612d60565b9050919050565b7f53656e646572206f7220526563697069656e7420426c61636b6c6973746564005f82015250565b5f612dd4601f836121ef565b9150612ddf82612da0565b602082019050919050565b5f6020820190508181035f830152612e0181612dc8565b9050919050565b5f612e1282612187565b9150612e1d83612187565b9250828201905080821115612e3557612e34612700565b5b92915050565b7f457863656564732074686520616e74695768616c654c696d69742e00000000005f82015250565b5f612e6f601b836121ef565b9150612e7a82612e3b565b602082019050919050565b5f6020820190508181035f830152612e9c81612e63565b9050919050565b5f612ead82612187565b9150612eb883612187565b9250828203905081811115612ed057612ecf612700565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612f0d82612187565b9150612f1883612187565b925082612f2857612f27612ed6565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f612f8d6021836121ef565b9150612f9882612f33565b604082019050919050565b5f6020820190508181035f830152612fba81612f81565b9050919050565b5f81519050612fcf816122bf565b92915050565b5f60208284031215612fea57612fe961217f565b5b5f612ff784828501612fc1565b91505092915050565b5f819050919050565b5f819050919050565b5f61302c61302761302284613000565b613009565b612187565b9050919050565b61303c81613012565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613074816122ae565b82525050565b5f613085838361306b565b60208301905092915050565b5f602082019050919050565b5f6130a782613042565b6130b1818561304c565b93506130bc8361305c565b805f5b838110156130ec5781516130d3888261307a565b97506130de83613091565b9250506001810190506130bf565b5085935050505092915050565b5f60a08201905061310c5f83018861235a565b6131196020830187613033565b818103604083015261312b818661309d565b905061313a60608301856125f1565b613147608083018461235a565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613185601b836121ef565b915061319082613151565b602082019050919050565b5f6020820190508181035f8301526131b281613179565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209dd8234bc22ab23f1e502c3f1f5118572df7412f5a61221dcf99fa78b0609f6864736f6c63430008180033

Deployed Bytecode

0x6080604052600436106101e6575f3560e01c8063715018a611610101578063a9059cbb11610094578063d936547e11610063578063d936547e146106bb578063dd62ed3e146106f7578063edac985b14610733578063f2fde38b1461075b576101ed565b8063a9059cbb146105f1578063bbde5b251461062d578063bf474bed14610669578063d2a3af2914610693576101ed565b806393114b1d116100d057806393114b1d1461054f57806393d89a0c1461057757806395d89b411461059f578063a3cdf023146105c9576101ed565b8063715018a6146104ab57806371b9189c146104c1578063768dc710146104e95780638da5cb5b14610525576101ed565b80632dbb6dc711610179578063540538b611610148578063540538b614610407578063586b9a7c1461042f578063590f897e1461044557806370a082311461046f576101ed565b80632dbb6dc714610361578063313ce5671461038957806333b14742146103b357806340b9a54b146103dd576101ed565b806318160ddd116101b557806318160ddd146102a95780631fafa8bc146102d357806323245216146102fd57806323b872dd14610325576101ed565b806306b50197146101f157806306fdde0314610219578063095ea7b3146102435780631234f8681461027f576101ed565b366101ed57005b5f80fd5b3480156101fc575f80fd5b50610217600480360381019061021291906121ba565b610783565b005b348015610224575f80fd5b5061022d610850565b60405161023a919061226f565b60405180910390f35b34801561024e575f80fd5b50610269600480360381019061026491906122e9565b61088d565b6040516102769190612341565b60405180910390f35b34801561028a575f80fd5b506102936108aa565b6040516102a09190612369565b60405180910390f35b3480156102b4575f80fd5b506102bd6108b0565b6040516102ca9190612369565b60405180910390f35b3480156102de575f80fd5b506102e76108d3565b6040516102f491906123a2565b60405180910390f35b348015610308575f80fd5b50610323600480360381019061031e91906124fb565b6108f8565b005b348015610330575f80fd5b5061034b60048036038101906103469190612542565b61098a565b6040516103589190612341565b60405180910390f35b34801561036c575f80fd5b50610387600480360381019061038291906124fb565b610a5e565b005b348015610394575f80fd5b5061039d610af0565b6040516103aa91906125ad565b60405180910390f35b3480156103be575f80fd5b506103c7610af8565b6040516103d49190612369565b60405180910390f35b3480156103e8575f80fd5b506103f1610afe565b6040516103fe9190612369565b60405180910390f35b348015610412575f80fd5b5061042d600480360381019061042891906124fb565b610b04565b005b34801561043a575f80fd5b50610443610b97565b005b348015610450575f80fd5b50610459610ba8565b6040516104669190612369565b60405180910390f35b34801561047a575f80fd5b50610495600480360381019061049091906125c6565b610bae565b6040516104a29190612369565b60405180910390f35b3480156104b6575f80fd5b506104bf610bf4565b005b3480156104cc575f80fd5b506104e760048036038101906104e291906124fb565b610c07565b005b3480156104f4575f80fd5b5061050f600480360381019061050a91906125c6565b610c9a565b60405161051c9190612341565b60405180910390f35b348015610530575f80fd5b50610539610cb7565b6040516105469190612600565b60405180910390f35b34801561055a575f80fd5b50610575600480360381019061057091906121ba565b610cde565b005b348015610582575f80fd5b5061059d600480360381019061059891906121ba565b610d4c565b005b3480156105aa575f80fd5b506105b3610da2565b6040516105c0919061226f565b60405180910390f35b3480156105d4575f80fd5b506105ef60048036038101906105ea91906121ba565b610ddf565b005b3480156105fc575f80fd5b50610617600480360381019061061291906122e9565b610e35565b6040516106249190612341565b60405180910390f35b348015610638575f80fd5b50610653600480360381019061064e91906125c6565b610e52565b6040516106609190612341565b60405180910390f35b348015610674575f80fd5b5061067d610e6f565b60405161068a9190612369565b60405180910390f35b34801561069e575f80fd5b506106b960048036038101906106b491906124fb565b610e75565b005b3480156106c6575f80fd5b506106e160048036038101906106dc91906125c6565b610f07565b6040516106ee9190612341565b60405180910390f35b348015610702575f80fd5b5061071d60048036038101906107189190612619565b610f24565b60405161072a9190612369565b60405180910390f35b34801561073e575f80fd5b50610759600480360381019061075491906124fb565b610fa6565b005b348015610766575f80fd5b50610781600480360381019061077c91906125c6565b611039565b005b5f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516107c990612684565b5f6040518083038185875af1925050503d805f8114610803576040519150601f19603f3d011682016040523d82523d5f602084013e610808565b606091505b505090508061084c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610843906126e2565b60405180910390fd5b5050565b60606040518060400160405280600381526020017f4170650000000000000000000000000000000000000000000000000000000000815250905090565b5f6108a06108996110bb565b84846110c2565b6001905092915050565b600b5481565b5f6012600a6108bf919061285c565b633b9aca006108ce91906128a6565b905090565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610900611285565b5f5b8151811015610986575f60065f848481518110610922576109216128e7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610902565b5050565b5f610996848484611303565b610a53846109a26110bb565b610a4e856040518060600160405280602881526020016131ba6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610a056110bb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611c189092919063ffffffff16565b6110c2565b600190509392505050565b610a66611285565b5f5b8151811015610aec575f60035f848481518110610a8857610a876128e7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610a68565b5050565b5f6012905090565b60075481565b600c5481565b610b0c611285565b5f5b8151811015610b9357600160045f848481518110610b2f57610b2e6128e7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610b0e565b5050565b610b9f611285565b42600981905550565b600d5481565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610bfc611285565b610c055f611c7a565b565b610c0f611285565b5f5b8151811015610c9657600160035f848481518110610c3257610c316128e7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610c11565b5050565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ce6611285565b610d0160c8610cf36108b0565b611d3b90919063ffffffff16565b8111610d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d399061295e565b60405180910390fd5b80600b8190555050565b610d54611285565b6064811115610d98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8f906129c6565b60405180910390fd5b80600d8190555050565b60606040518060400160405280600381526020017f4150450000000000000000000000000000000000000000000000000000000000815250905090565b610de7611285565b6064811115610e2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e22906129c6565b60405180910390fd5b80600c8190555050565b5f610e48610e416110bb565b8484611303565b6001905092915050565b6004602052805f5260405f205f915054906101000a900460ff1681565b600a5481565b610e7d611285565b5f5b8151811015610f03575f60045f848481518110610e9f57610e9e6128e7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610e7f565b5050565b6006602052805f5260405f205f915054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610fae611285565b5f5b815181101561103557600160065f848481518110610fd157610fd06128e7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610fb0565b5050565b611041611285565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a690612a54565b60405180910390fd5b6110b881611c7a565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611130576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112790612ae2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361119e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119590612b70565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112789190612369565b60405180910390a3505050565b61128d6110bb565b73ffffffffffffffffffffffffffffffffffffffff166112ab610cb7565b73ffffffffffffffffffffffffffffffffffffffff1614611301576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f890612bd8565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611371576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136890612c66565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d690612cf4565b60405180910390fd5b5f8111611421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141890612d82565b60405180910390fd5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156114bf575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6114fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f590612dea565b60405180910390fd5b5f60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561159d575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156118df5760105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461164f57600b548261160385610bae565b61160d9190612e08565b111561164e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164590612e85565b60405180910390fd5b5b5f600c5411156117365760105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611735576116d560646116c7600c5485611d8490919063ffffffff16565b611d3b90919063ffffffff16565b90506009544210156117345760065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611733575f80fd5b5b5b5b5f600d54111561181d5760105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361181c576117bc60646117ae600d5485611d8490919063ffffffff16565b611d3b90919063ffffffff16565b905060095442101561181b5760065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661181a575f80fd5b5b5b5b5f61182730610bae565b9050601060149054906101000a900460ff16158015611892575060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156118aa5750601060159054906101000a900460ff165b80156118b75750600a5481115b156118dd576118c581611dfb565b5f4790505f8111156118db576118da47610783565b5b505b505b5f8111156119de576119378160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461206f90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119d59190612369565b60405180910390a35b611a2e8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120cc90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611ad1611a8582846120cc90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461206f90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506001600554108015611b70575060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611b9b57600160058190555042600781905550600854600754611b949190612e08565b6009819055505b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611bfd84866120cc90919063ffffffff16565b604051611c0a9190612369565b60405180910390a350505050565b5f838311158290611c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c56919061226f565b60405180910390fd5b505f8385611c6d9190612ea3565b9050809150509392505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f611d7c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612115565b905092915050565b5f808303611d94575f9050611df5565b5f8284611da191906128a6565b9050828482611db09190612f03565b14611df0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de790612fa3565b60405180910390fd5b809150505b92915050565b6001601060146101000a81548160ff0219169083151502179055505f810315612052575f600267ffffffffffffffff811115611e3a57611e396123bf565b5b604051908082528060200260200182016040528015611e685781602001602082028036833780820191505090505b50905030815f81518110611e7f57611e7e6128e7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f23573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f479190612fd5565b81600181518110611f5b57611f5a6128e7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611fc130600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846110c2565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016120239594939291906130f9565b5f604051808303815f87803b15801561203a575f80fd5b505af115801561204c573d5f803e3d5ffd5b50505050505b5f601060146101000a81548160ff02191690831515021790555050565b5f80828461207d9190612e08565b9050838110156120c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b99061319b565b60405180910390fd5b8091505092915050565b5f61210d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c18565b905092915050565b5f808311829061215b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612152919061226f565b60405180910390fd5b505f83856121699190612f03565b9050809150509392505050565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b61219981612187565b81146121a3575f80fd5b50565b5f813590506121b481612190565b92915050565b5f602082840312156121cf576121ce61217f565b5b5f6121dc848285016121a6565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561221c578082015181840152602081019050612201565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612241826121e5565b61224b81856121ef565b935061225b8185602086016121ff565b61226481612227565b840191505092915050565b5f6020820190508181035f8301526122878184612237565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6122b88261228f565b9050919050565b6122c8816122ae565b81146122d2575f80fd5b50565b5f813590506122e3816122bf565b92915050565b5f80604083850312156122ff576122fe61217f565b5b5f61230c858286016122d5565b925050602061231d858286016121a6565b9150509250929050565b5f8115159050919050565b61233b81612327565b82525050565b5f6020820190506123545f830184612332565b92915050565b61236381612187565b82525050565b5f60208201905061237c5f83018461235a565b92915050565b5f61238c8261228f565b9050919050565b61239c81612382565b82525050565b5f6020820190506123b55f830184612393565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6123f582612227565b810181811067ffffffffffffffff82111715612414576124136123bf565b5b80604052505050565b5f612426612176565b905061243282826123ec565b919050565b5f67ffffffffffffffff821115612451576124506123bf565b5b602082029050602081019050919050565b5f80fd5b5f61247861247384612437565b61241d565b9050808382526020820190506020840283018581111561249b5761249a612462565b5b835b818110156124c457806124b088826122d5565b84526020840193505060208101905061249d565b5050509392505050565b5f82601f8301126124e2576124e16123bb565b5b81356124f2848260208601612466565b91505092915050565b5f602082840312156125105761250f61217f565b5b5f82013567ffffffffffffffff81111561252d5761252c612183565b5b612539848285016124ce565b91505092915050565b5f805f606084860312156125595761255861217f565b5b5f612566868287016122d5565b9350506020612577868287016122d5565b9250506040612588868287016121a6565b9150509250925092565b5f60ff82169050919050565b6125a781612592565b82525050565b5f6020820190506125c05f83018461259e565b92915050565b5f602082840312156125db576125da61217f565b5b5f6125e8848285016122d5565b91505092915050565b6125fa816122ae565b82525050565b5f6020820190506126135f8301846125f1565b92915050565b5f806040838503121561262f5761262e61217f565b5b5f61263c858286016122d5565b925050602061264d858286016122d5565b9150509250929050565b5f81905092915050565b50565b5f61266f5f83612657565b915061267a82612661565b5f82019050919050565b5f61268e82612664565b9150819050919050565b7f43616c6c206661696c65640000000000000000000000000000000000000000005f82015250565b5f6126cc600b836121ef565b91506126d782612698565b602082019050919050565b5f6020820190508181035f8301526126f9816126c0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156127825780860481111561275e5761275d612700565b5b600185161561276d5780820291505b808102905061277b8561272d565b9450612742565b94509492505050565b5f8261279a5760019050612855565b816127a7575f9050612855565b81600181146127bd57600281146127c7576127f6565b6001915050612855565b60ff8411156127d9576127d8612700565b5b8360020a9150848211156127f0576127ef612700565b5b50612855565b5060208310610133831016604e8410600b841016171561282b5782820a90508381111561282657612825612700565b5b612855565b6128388484846001612739565b9250905081840481111561284f5761284e612700565b5b81810290505b9392505050565b5f61286682612187565b915061287183612592565b925061289e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461278b565b905092915050565b5f6128b082612187565b91506128bb83612187565b92508282026128c981612187565b915082820484148315176128e0576128df612700565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4c696d697420746f6f206c6573730000000000000000000000000000000000005f82015250565b5f612948600e836121ef565b915061295382612914565b602082019050919050565b5f6020820190508181035f8301526129758161293c565b9050919050565b7f4665652063616e6e6f74206578636565642031303025000000000000000000005f82015250565b5f6129b06016836121ef565b91506129bb8261297c565b602082019050919050565b5f6020820190508181035f8301526129dd816129a4565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612a3e6026836121ef565b9150612a49826129e4565b604082019050919050565b5f6020820190508181035f830152612a6b81612a32565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612acc6024836121ef565b9150612ad782612a72565b604082019050919050565b5f6020820190508181035f830152612af981612ac0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612b5a6022836121ef565b9150612b6582612b00565b604082019050919050565b5f6020820190508181035f830152612b8781612b4e565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612bc26020836121ef565b9150612bcd82612b8e565b602082019050919050565b5f6020820190508181035f830152612bef81612bb6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612c506025836121ef565b9150612c5b82612bf6565b604082019050919050565b5f6020820190508181035f830152612c7d81612c44565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612cde6023836121ef565b9150612ce982612c84565b604082019050919050565b5f6020820190508181035f830152612d0b81612cd2565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612d6c6029836121ef565b9150612d7782612d12565b604082019050919050565b5f6020820190508181035f830152612d9981612d60565b9050919050565b7f53656e646572206f7220526563697069656e7420426c61636b6c6973746564005f82015250565b5f612dd4601f836121ef565b9150612ddf82612da0565b602082019050919050565b5f6020820190508181035f830152612e0181612dc8565b9050919050565b5f612e1282612187565b9150612e1d83612187565b9250828201905080821115612e3557612e34612700565b5b92915050565b7f457863656564732074686520616e74695768616c654c696d69742e00000000005f82015250565b5f612e6f601b836121ef565b9150612e7a82612e3b565b602082019050919050565b5f6020820190508181035f830152612e9c81612e63565b9050919050565b5f612ead82612187565b9150612eb883612187565b9250828203905081811115612ed057612ecf612700565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612f0d82612187565b9150612f1883612187565b925082612f2857612f27612ed6565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f612f8d6021836121ef565b9150612f9882612f33565b604082019050919050565b5f6020820190508181035f830152612fba81612f81565b9050919050565b5f81519050612fcf816122bf565b92915050565b5f60208284031215612fea57612fe961217f565b5b5f612ff784828501612fc1565b91505092915050565b5f819050919050565b5f819050919050565b5f61302c61302761302284613000565b613009565b612187565b9050919050565b61303c81613012565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613074816122ae565b82525050565b5f613085838361306b565b60208301905092915050565b5f602082019050919050565b5f6130a782613042565b6130b1818561304c565b93506130bc8361305c565b805f5b838110156130ec5781516130d3888261307a565b97506130de83613091565b9250506001810190506130bf565b5085935050505092915050565b5f60a08201905061310c5f83018861235a565b6131196020830187613033565b818103604083015261312b818661309d565b905061313a60608301856125f1565b613147608083018461235a565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613185601b836121ef565b915061319082613151565b602082019050919050565b5f6020820190508181035f8301526131b281613179565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209dd8234bc22ab23f1e502c3f1f5118572df7412f5a61221dcf99fa78b0609f6864736f6c63430008180033

Deployed Bytecode Sourcemap

3992:8544:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10530:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5989:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6822:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4807:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6266:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4966;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12242:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6991:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11456:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6175:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4405:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4873:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11652:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12442:91;;;;;;;;;;;;;:::i;:::-;;4917:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6369:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2710:103;;;;;;;;;;;;;:::i;:::-;;11259:189;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4204:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2473:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10762:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11104:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6080:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10951:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6496:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4262:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4744:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11846:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4355:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6671:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12046:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2823:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10530:183;10586:16;10616:18;;;;;;;;;;;10608:32;;10648:6;10608:51;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10585:74;;;10678:11;10670:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;10575:138;10530:183;:::o;5989:83::-;6026:13;6059:5;;;;;;;;;;;;;;;;;6052:12;;5989:83;:::o;6822:161::-;6897:4;6914:39;6923:12;:10;:12::i;:::-;6937:7;6946:6;6914:8;:39::i;:::-;6971:4;6964:11;;6822:161;;;;:::o;4807:57::-;;;;:::o;6266:95::-;6319:7;4559:2;4616;:13;;;;:::i;:::-;4603:10;:26;;;;:::i;:::-;6339:14;;6266:95;:::o;4966:::-;;;;;;;;;;;;;:::o;12242:192::-;2432:13;:11;:13::i;:::-;12327:6:::1;12323:104;12343:10;:17;12339:1;:21;12323:104;;;12410:5;12381:11;:26;12393:10;12404:1;12393:13;;;;;;;;:::i;:::-;;;;;;;;12381:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;12362:3;;;;;;;12323:104;;;;12242:192:::0;:::o;6991:313::-;7089:4;7106:36;7116:6;7124:9;7135:6;7106:9;:36::i;:::-;7153:121;7162:6;7170:12;:10;:12::i;:::-;7184:89;7222:6;7184:89;;;;;;;;;;;;;;;;;:11;:19;7196:6;7184:19;;;;;;;;;;;;;;;:33;7204:12;:10;:12::i;:::-;7184:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7153:8;:121::i;:::-;7292:4;7285:11;;6991:313;;;;;:::o;11456:188::-;2432:13;:11;:13::i;:::-;11536:6:::1;11532:105;11552:7;:14;11548:1;:18;11532:105;;;11620:5;11587:18;:30;11606:7;11614:1;11606:10;;;;;;;;:::i;:::-;;;;;;;;11587:30;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;11568:3;;;;;;;11532:105;;;;11456:188:::0;:::o;6175:83::-;6216:5;4559:2;6234:16;;6175:83;:::o;4405:30::-;;;;:::o;4873:27::-;;;;:::o;11652:186::-;2432:13;:11;:13::i;:::-;11736:6:::1;11732:99;11752:8;:15;11748:1;:19;11732:99;;;11815:4;11788:11;:24;11800:8;11809:1;11800:11;;;;;;;;:::i;:::-;;;;;;;;11788:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;11769:3;;;;;;;11732:99;;;;11652:186:::0;:::o;12442:91::-;2432:13;:11;:13::i;:::-;12510:15:::1;12495:12;:30;;;;12442:91::o:0;4917:28::-;;;;:::o;6369:119::-;6435:7;6462:9;:18;6472:7;6462:18;;;;;;;;;;;;;;;;6455:25;;6369:119;;;:::o;2710:103::-;2432:13;:11;:13::i;:::-;2775:30:::1;2802:1;2775:18;:30::i;:::-;2710:103::o:0;11259:189::-;2432:13;:11;:13::i;:::-;11341:6:::1;11337:104;11357:7;:14;11353:1;:18;11337:104;;;11425:4;11392:18;:30;11411:7;11419:1;11411:10;;;;;;;;:::i;:::-;;;;;;;;11392:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;11373:3;;;;;;;11337:104;;;;11259:189:::0;:::o;4204:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;2473:87::-;2519:7;2546:6;;;;;;;;;;;2539:13;;2473:87;:::o;10762:181::-;2432:13;:11;:13::i;:::-;10858:22:::1;10876:3;10858:13;:11;:13::i;:::-;:17;;:22;;;;:::i;:::-;10846:9;:34;10838:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;10926:9;10909:14;:26;;;;10762:181:::0;:::o;11104:147::-;2432:13;:11;:13::i;:::-;11187:3:::1;11179:4;:11;;11171:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;11239:4;11228:8;:15;;;;11104:147:::0;:::o;6080:87::-;6119:13;6152:7;;;;;;;;;;;;;;;;;6145:14;;6080:87;:::o;10951:145::-;2432:13;:11;:13::i;:::-;11033:3:::1;11025:4;:11;;11017:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;11084:4;11074:7;:14;;;;10951:145:::0;:::o;6496:167::-;6574:4;6591:42;6601:12;:10;:12::i;:::-;6615:9;6626:6;6591:9;:42::i;:::-;6651:4;6644:11;;6496:167;;;;:::o;4262:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;4744:56::-;;;;:::o;11846:192::-;2432:13;:11;:13::i;:::-;11935:6:::1;11931:100;11951:8;:15;11947:1;:19;11931:100;;;12014:5;11987:11;:24;11999:8;12008:1;11999:11;;;;;;;;:::i;:::-;;;;;;;;11987:24;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;11968:3;;;;;;;11931:100;;;;11846:192:::0;:::o;4355:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;6671:143::-;6752:7;6779:11;:18;6791:5;6779:18;;;;;;;;;;;;;;;:27;6798:7;6779:27;;;;;;;;;;;;;;;;6772:34;;6671:143;;;;:::o;12046:188::-;2432:13;:11;:13::i;:::-;12128:6:::1;12124:103;12144:10;:17;12140:1;:21;12124:103;;;12211:4;12182:11;:26;12194:10;12205:1;12194:13;;;;;;;;:::i;:::-;;;;;;;;12182:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;12163:3;;;;;;;12124:103;;;;12046:188:::0;:::o;2823:201::-;2432:13;:11;:13::i;:::-;2932:1:::1;2912:22;;:8;:22;;::::0;2904:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2988:28;3007:8;2988:18;:28::i;:::-;2823:201:::0;:::o;233:98::-;286:7;313:10;306:17;;233:98;:::o;7312:335::-;7422:1;7405:19;;:5;:19;;;7397:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7503:1;7484:21;;:7;:21;;;7476:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7585:6;7555:11;:18;7567:5;7555:18;;;;;;;;;;;;;;;:27;7574:7;7555:27;;;;;;;;;;;;;;;:36;;;;7623:7;7607:32;;7616:5;7607:32;;;7632:6;7607:32;;;;;;:::i;:::-;;;;;;;;7312:335;;;:::o;2568:132::-;2643:12;:10;:12::i;:::-;2632:23;;:7;:5;:7::i;:::-;:23;;;2624:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2568:132::o;7655:2231::-;7759:1;7743:18;;:4;:18;;;7735:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7836:1;7822:16;;:2;:16;;;7814:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7906:1;7897:6;:10;7889:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7973:11;:17;7985:4;7973:17;;;;;;;;;;;;;;;;;;;;;;;;;7972:18;:38;;;;;7995:11;:15;8007:2;7995:15;;;;;;;;;;;;;;;;;;;;;;;;;7994:16;7972:38;7964:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;8056:17;8091:18;:24;8110:4;8091:24;;;;;;;;;;;;;;;;;;;;;;;;;8090:25;:52;;;;;8120:18;:22;8139:2;8120:22;;;;;;;;;;;;;;;;;;;;;;;;;8119:23;8090:52;8086:1233;;;8170:13;;;;;;;;;;;8164:19;;:2;:19;;;8161:137;;8236:14;;8226:6;8210:13;8220:2;8210:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8202:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;8161:137;8327:1;8317:7;;:11;8314:267;;;8357:13;;;;;;;;;;;8349:21;;:4;:21;;;8345:221;;8403:28;8427:3;8403:19;8414:7;;8403:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;8391:40;;8471:12;;8453:15;:30;8450:101;;;8515:11;:15;8527:2;8515:15;;;;;;;;;;;;;;;;;;;;;;;;;8507:24;;;;;;8450:101;8345:221;8314:267;8611:1;8600:8;;:12;8597:267;;;8638:13;;;;;;;;;;;8632:19;;:2;:19;;;8629:220;;8683:29;8708:3;8683:20;8694:8;;8683:6;:10;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;8671:41;;8752:12;;8734:15;:30;8731:103;;;8796:11;:17;8808:4;8796:17;;;;;;;;;;;;;;;;;;;;;;;;;8788:26;;;;;;8731:103;8629:220;8597:267;8880:28;8911:24;8929:4;8911:9;:24::i;:::-;8880:55;;8955:6;;;;;;;;;;;8954:7;:30;;;;;8971:13;;;;;;;;;;;8965:19;;:2;:19;;;8954:30;:45;;;;;8988:11;;;;;;;;;;;8954:45;:87;;;;;9024:17;;9003:20;:38;8954:87;8950:358;;;9062:38;9079:20;9062:16;:38::i;:::-;9119:26;9148:21;9119:50;;9212:1;9191:18;:22;9188:105;;;9238:35;9251:21;9238:12;:35::i;:::-;9188:105;9043:265;8950:358;8144:1175;8086:1233;9344:1;9334:9;:11;9331:161;;;9384:39;9413:9;9384;:24;9402:4;9384:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9359:9;:24;9377:4;9359:24;;;;;;;;;;;;;;;:64;;;;9464:4;9441:39;;9450:4;9441:39;;;9470:9;9441:39;;;;;;:::i;:::-;;;;;;;;9331:161;9518:27;9538:6;9518:9;:15;9528:4;9518:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9502:9;:15;9512:4;9502:15;;;;;;;;;;;;;;;:43;;;;9570:40;9588:21;9599:9;9588:6;:10;;:21;;;;:::i;:::-;9570:9;:13;9580:2;9570:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;9556:9;:13;9566:2;9556:13;;;;;;;;;;;;;;;:54;;;;9644:1;9624:17;;:21;:53;;;;;9663:13;;;;;;;;;;;9649:28;;:2;:28;;;9624:53;9621:201;;;9713:1;9693:17;:21;;;;9743:15;9729:11;:29;;;;9802:8;;9788:11;;:22;;;;:::i;:::-;9773:12;:37;;;;9621:201;9852:2;9837:41;;9846:4;9837:41;;;9856:21;9867:9;9856:6;:10;;:21;;;;:::i;:::-;9837:41;;;;;;:::i;:::-;;;;;;;;7724:2162;7655:2231;;;:::o;1370:190::-;1456:7;1489:1;1484;:6;;1492:12;1476:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1516:9;1532:1;1528;:5;;;;:::i;:::-;1516:17;;1551:1;1544:8;;;1370:190;;;;;:::o;3032:191::-;3106:16;3125:6;;;;;;;;;;;3106:25;;3151:8;3142:6;;:17;;;;;;;;;;;;;;;;;;3206:8;3175:40;;3196:8;3175:40;;;;;;;;;;;;3095:128;3032:191;:::o;1822:132::-;1880:7;1907:39;1911:1;1914;1907:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1900:46;;1822:132;;;;:::o;1568:246::-;1626:7;1655:1;1650;:6;1646:47;;1680:1;1673:8;;;;1646:47;1703:9;1719:1;1715;:5;;;;:::i;:::-;1703:17;;1748:1;1743;1739;:5;;;;:::i;:::-;:10;1731:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1805:1;1798:8;;;1568:246;;;;;:::o;10002:520::-;5270:4;5261:6;;:13;;;;;;;;;;;;;;;;;;10096:1:::1;10083:11;:14:::0;10080:27;10099:7:::1;10080:27;10117:21;10155:1;10141:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10117:40;;10186:4;10168;10173:1;10168:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10212:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10202:4;10207:1;10202:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10245:62;10262:4;10277:15;;;;;;;;;;;10295:11;10245:8;:62::i;:::-;10318:15;;;;;;;;;;;:66;;;10399:11;10425:1;10441:4;10468;10488:15;10318:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10069:453;5285:1;5306:5:::0;5297:6;;:14;;;;;;;;;;;;;;;;;;10002:520;:::o;1039:179::-;1097:7;1117:9;1133:1;1129;:5;;;;:::i;:::-;1117:17;;1158:1;1153;:6;;1145:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1209:1;1202:8;;;1039:179;;;;:::o;1226:136::-;1284:7;1311:43;1315:1;1318;1311:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1304:50;;1226:136;;;;:::o;1962:189::-;2048:7;2080:1;2076;:5;2083:12;2068:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2107:9;2123:1;2119;:5;;;;:::i;:::-;2107:17;;2142:1;2135:8;;;1962:189;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:99::-;1077:6;1111:5;1105:12;1095:22;;1025:99;;;:::o;1130:169::-;1214:11;1248:6;1243:3;1236:19;1288:4;1283:3;1279:14;1264:29;;1130:169;;;;:::o;1305:246::-;1386:1;1396:113;1410:6;1407:1;1404:13;1396:113;;;1495:1;1490:3;1486:11;1480:18;1476:1;1471:3;1467:11;1460:39;1432:2;1429:1;1425:10;1420:15;;1396:113;;;1543:1;1534:6;1529:3;1525:16;1518:27;1367:184;1305:246;;;:::o;1557:102::-;1598:6;1649:2;1645:7;1640:2;1633:5;1629:14;1625:28;1615:38;;1557:102;;;:::o;1665:377::-;1753:3;1781:39;1814:5;1781:39;:::i;:::-;1836:71;1900:6;1895:3;1836:71;:::i;:::-;1829:78;;1916:65;1974:6;1969:3;1962:4;1955:5;1951:16;1916:65;:::i;:::-;2006:29;2028:6;2006:29;:::i;:::-;2001:3;1997:39;1990:46;;1757:285;1665:377;;;;:::o;2048:313::-;2161:4;2199:2;2188:9;2184:18;2176:26;;2248:9;2242:4;2238:20;2234:1;2223:9;2219:17;2212:47;2276:78;2349:4;2340:6;2276:78;:::i;:::-;2268:86;;2048:313;;;;:::o;2367:126::-;2404:7;2444:42;2437:5;2433:54;2422:65;;2367:126;;;:::o;2499:96::-;2536:7;2565:24;2583:5;2565:24;:::i;:::-;2554:35;;2499:96;;;:::o;2601:122::-;2674:24;2692:5;2674:24;:::i;:::-;2667:5;2664:35;2654:63;;2713:1;2710;2703:12;2654:63;2601:122;:::o;2729:139::-;2775:5;2813:6;2800:20;2791:29;;2829:33;2856:5;2829:33;:::i;:::-;2729:139;;;;:::o;2874:474::-;2942:6;2950;2999:2;2987:9;2978:7;2974:23;2970:32;2967:119;;;3005:79;;:::i;:::-;2967:119;3125:1;3150:53;3195:7;3186:6;3175:9;3171:22;3150:53;:::i;:::-;3140:63;;3096:117;3252:2;3278:53;3323:7;3314:6;3303:9;3299:22;3278:53;:::i;:::-;3268:63;;3223:118;2874:474;;;;;:::o;3354:90::-;3388:7;3431:5;3424:13;3417:21;3406:32;;3354:90;;;:::o;3450:109::-;3531:21;3546:5;3531:21;:::i;:::-;3526:3;3519:34;3450:109;;:::o;3565:210::-;3652:4;3690:2;3679:9;3675:18;3667:26;;3703:65;3765:1;3754:9;3750:17;3741:6;3703:65;:::i;:::-;3565:210;;;;:::o;3781:118::-;3868:24;3886:5;3868:24;:::i;:::-;3863:3;3856:37;3781:118;;:::o;3905:222::-;3998:4;4036:2;4025:9;4021:18;4013:26;;4049:71;4117:1;4106:9;4102:17;4093:6;4049:71;:::i;:::-;3905:222;;;;:::o;4133:104::-;4178:7;4207:24;4225:5;4207:24;:::i;:::-;4196:35;;4133:104;;;:::o;4243:142::-;4346:32;4372:5;4346:32;:::i;:::-;4341:3;4334:45;4243:142;;:::o;4391:254::-;4500:4;4538:2;4527:9;4523:18;4515:26;;4551:87;4635:1;4624:9;4620:17;4611:6;4551:87;:::i;:::-;4391:254;;;;:::o;4651:117::-;4760:1;4757;4750:12;4774:180;4822:77;4819:1;4812:88;4919:4;4916:1;4909:15;4943:4;4940:1;4933:15;4960:281;5043:27;5065:4;5043:27;:::i;:::-;5035:6;5031:40;5173:6;5161:10;5158:22;5137:18;5125:10;5122:34;5119:62;5116:88;;;5184:18;;:::i;:::-;5116:88;5224:10;5220:2;5213:22;5003:238;4960:281;;:::o;5247:129::-;5281:6;5308:20;;:::i;:::-;5298:30;;5337:33;5365:4;5357:6;5337:33;:::i;:::-;5247:129;;;:::o;5382:311::-;5459:4;5549:18;5541:6;5538:30;5535:56;;;5571:18;;:::i;:::-;5535:56;5621:4;5613:6;5609:17;5601:25;;5681:4;5675;5671:15;5663:23;;5382:311;;;:::o;5699:117::-;5808:1;5805;5798:12;5839:710;5935:5;5960:81;5976:64;6033:6;5976:64;:::i;:::-;5960:81;:::i;:::-;5951:90;;6061:5;6090:6;6083:5;6076:21;6124:4;6117:5;6113:16;6106:23;;6177:4;6169:6;6165:17;6157:6;6153:30;6206:3;6198:6;6195:15;6192:122;;;6225:79;;:::i;:::-;6192:122;6340:6;6323:220;6357:6;6352:3;6349:15;6323:220;;;6432:3;6461:37;6494:3;6482:10;6461:37;:::i;:::-;6456:3;6449:50;6528:4;6523:3;6519:14;6512:21;;6399:144;6383:4;6378:3;6374:14;6367:21;;6323:220;;;6327:21;5941:608;;5839:710;;;;;:::o;6572:370::-;6643:5;6692:3;6685:4;6677:6;6673:17;6669:27;6659:122;;6700:79;;:::i;:::-;6659:122;6817:6;6804:20;6842:94;6932:3;6924:6;6917:4;6909:6;6905:17;6842:94;:::i;:::-;6833:103;;6649:293;6572:370;;;;:::o;6948:539::-;7032:6;7081:2;7069:9;7060:7;7056:23;7052:32;7049:119;;;7087:79;;:::i;:::-;7049:119;7235:1;7224:9;7220:17;7207:31;7265:18;7257:6;7254:30;7251:117;;;7287:79;;:::i;:::-;7251:117;7392:78;7462:7;7453:6;7442:9;7438:22;7392:78;:::i;:::-;7382:88;;7178:302;6948:539;;;;:::o;7493:619::-;7570:6;7578;7586;7635:2;7623:9;7614:7;7610:23;7606:32;7603:119;;;7641:79;;:::i;:::-;7603:119;7761:1;7786:53;7831:7;7822:6;7811:9;7807:22;7786:53;:::i;:::-;7776:63;;7732:117;7888:2;7914:53;7959:7;7950:6;7939:9;7935:22;7914:53;:::i;:::-;7904:63;;7859:118;8016:2;8042:53;8087:7;8078:6;8067:9;8063:22;8042:53;:::i;:::-;8032:63;;7987:118;7493:619;;;;;:::o;8118:86::-;8153:7;8193:4;8186:5;8182:16;8171:27;;8118:86;;;:::o;8210:112::-;8293:22;8309:5;8293:22;:::i;:::-;8288:3;8281:35;8210:112;;:::o;8328:214::-;8417:4;8455:2;8444:9;8440:18;8432:26;;8468:67;8532:1;8521:9;8517:17;8508:6;8468:67;:::i;:::-;8328:214;;;;:::o;8548:329::-;8607:6;8656:2;8644:9;8635:7;8631:23;8627:32;8624:119;;;8662:79;;:::i;:::-;8624:119;8782:1;8807:53;8852:7;8843:6;8832:9;8828:22;8807:53;:::i;:::-;8797:63;;8753:117;8548:329;;;;:::o;8883:118::-;8970:24;8988:5;8970:24;:::i;:::-;8965:3;8958:37;8883:118;;:::o;9007:222::-;9100:4;9138:2;9127:9;9123:18;9115:26;;9151:71;9219:1;9208:9;9204:17;9195:6;9151:71;:::i;:::-;9007:222;;;;:::o;9235:474::-;9303:6;9311;9360:2;9348:9;9339:7;9335:23;9331:32;9328:119;;;9366:79;;:::i;:::-;9328:119;9486:1;9511:53;9556:7;9547:6;9536:9;9532:22;9511:53;:::i;:::-;9501:63;;9457:117;9613:2;9639:53;9684:7;9675:6;9664:9;9660:22;9639:53;:::i;:::-;9629:63;;9584:118;9235:474;;;;;:::o;9715:147::-;9816:11;9853:3;9838:18;;9715:147;;;;:::o;9868:114::-;;:::o;9988:398::-;10147:3;10168:83;10249:1;10244:3;10168:83;:::i;:::-;10161:90;;10260:93;10349:3;10260:93;:::i;:::-;10378:1;10373:3;10369:11;10362:18;;9988:398;;;:::o;10392:379::-;10576:3;10598:147;10741:3;10598:147;:::i;:::-;10591:154;;10762:3;10755:10;;10392:379;;;:::o;10777:161::-;10917:13;10913:1;10905:6;10901:14;10894:37;10777:161;:::o;10944:366::-;11086:3;11107:67;11171:2;11166:3;11107:67;:::i;:::-;11100:74;;11183:93;11272:3;11183:93;:::i;:::-;11301:2;11296:3;11292:12;11285:19;;10944:366;;;:::o;11316:419::-;11482:4;11520:2;11509:9;11505:18;11497:26;;11569:9;11563:4;11559:20;11555:1;11544:9;11540:17;11533:47;11597:131;11723:4;11597:131;:::i;:::-;11589:139;;11316:419;;;:::o;11741:180::-;11789:77;11786:1;11779:88;11886:4;11883:1;11876:15;11910:4;11907:1;11900:15;11927:102;11969:8;12016:5;12013:1;12009:13;11988:34;;11927:102;;;:::o;12035:848::-;12096:5;12103:4;12127:6;12118:15;;12151:5;12142:14;;12165:712;12186:1;12176:8;12173:15;12165:712;;;12281:4;12276:3;12272:14;12266:4;12263:24;12260:50;;;12290:18;;:::i;:::-;12260:50;12340:1;12330:8;12326:16;12323:451;;;12755:4;12748:5;12744:16;12735:25;;12323:451;12805:4;12799;12795:15;12787:23;;12835:32;12858:8;12835:32;:::i;:::-;12823:44;;12165:712;;;12035:848;;;;;;;:::o;12889:1073::-;12943:5;13134:8;13124:40;;13155:1;13146:10;;13157:5;;13124:40;13183:4;13173:36;;13200:1;13191:10;;13202:5;;13173:36;13269:4;13317:1;13312:27;;;;13353:1;13348:191;;;;13262:277;;13312:27;13330:1;13321:10;;13332:5;;;13348:191;13393:3;13383:8;13380:17;13377:43;;;13400:18;;:::i;:::-;13377:43;13449:8;13446:1;13442:16;13433:25;;13484:3;13477:5;13474:14;13471:40;;;13491:18;;:::i;:::-;13471:40;13524:5;;;13262:277;;13648:2;13638:8;13635:16;13629:3;13623:4;13620:13;13616:36;13598:2;13588:8;13585:16;13580:2;13574:4;13571:12;13567:35;13551:111;13548:246;;;13704:8;13698:4;13694:19;13685:28;;13739:3;13732:5;13729:14;13726:40;;;13746:18;;:::i;:::-;13726:40;13779:5;;13548:246;13819:42;13857:3;13847:8;13841:4;13838:1;13819:42;:::i;:::-;13804:57;;;;13893:4;13888:3;13884:14;13877:5;13874:25;13871:51;;;13902:18;;:::i;:::-;13871:51;13951:4;13944:5;13940:16;13931:25;;12889:1073;;;;;;:::o;13968:281::-;14026:5;14050:23;14068:4;14050:23;:::i;:::-;14042:31;;14094:25;14110:8;14094:25;:::i;:::-;14082:37;;14138:104;14175:66;14165:8;14159:4;14138:104;:::i;:::-;14129:113;;13968:281;;;;:::o;14255:410::-;14295:7;14318:20;14336:1;14318:20;:::i;:::-;14313:25;;14352:20;14370:1;14352:20;:::i;:::-;14347:25;;14407:1;14404;14400:9;14429:30;14447:11;14429:30;:::i;:::-;14418:41;;14608:1;14599:7;14595:15;14592:1;14589:22;14569:1;14562:9;14542:83;14519:139;;14638:18;;:::i;:::-;14519:139;14303:362;14255:410;;;;:::o;14671:180::-;14719:77;14716:1;14709:88;14816:4;14813:1;14806:15;14840:4;14837:1;14830:15;14857:164;14997:16;14993:1;14985:6;14981:14;14974:40;14857:164;:::o;15027:366::-;15169:3;15190:67;15254:2;15249:3;15190:67;:::i;:::-;15183:74;;15266:93;15355:3;15266:93;:::i;:::-;15384:2;15379:3;15375:12;15368:19;;15027:366;;;:::o;15399:419::-;15565:4;15603:2;15592:9;15588:18;15580:26;;15652:9;15646:4;15642:20;15638:1;15627:9;15623:17;15616:47;15680:131;15806:4;15680:131;:::i;:::-;15672:139;;15399:419;;;:::o;15824:172::-;15964:24;15960:1;15952:6;15948:14;15941:48;15824:172;:::o;16002:366::-;16144:3;16165:67;16229:2;16224:3;16165:67;:::i;:::-;16158:74;;16241:93;16330:3;16241:93;:::i;:::-;16359:2;16354:3;16350:12;16343:19;;16002:366;;;:::o;16374:419::-;16540:4;16578:2;16567:9;16563:18;16555:26;;16627:9;16621:4;16617:20;16613:1;16602:9;16598:17;16591:47;16655:131;16781:4;16655:131;:::i;:::-;16647:139;;16374:419;;;:::o;16799:225::-;16939:34;16935:1;16927:6;16923:14;16916:58;17008:8;17003:2;16995:6;16991:15;16984:33;16799:225;:::o;17030:366::-;17172:3;17193:67;17257:2;17252:3;17193:67;:::i;:::-;17186:74;;17269:93;17358:3;17269:93;:::i;:::-;17387:2;17382:3;17378:12;17371:19;;17030:366;;;:::o;17402:419::-;17568:4;17606:2;17595:9;17591:18;17583:26;;17655:9;17649:4;17645:20;17641:1;17630:9;17626:17;17619:47;17683:131;17809:4;17683:131;:::i;:::-;17675:139;;17402:419;;;:::o;17827:223::-;17967:34;17963:1;17955:6;17951:14;17944:58;18036:6;18031:2;18023:6;18019:15;18012:31;17827:223;:::o;18056:366::-;18198:3;18219:67;18283:2;18278:3;18219:67;:::i;:::-;18212:74;;18295:93;18384:3;18295:93;:::i;:::-;18413:2;18408:3;18404:12;18397:19;;18056:366;;;:::o;18428:419::-;18594:4;18632:2;18621:9;18617:18;18609:26;;18681:9;18675:4;18671:20;18667:1;18656:9;18652:17;18645:47;18709:131;18835:4;18709:131;:::i;:::-;18701:139;;18428:419;;;:::o;18853:221::-;18993:34;18989:1;18981:6;18977:14;18970:58;19062:4;19057:2;19049:6;19045:15;19038:29;18853:221;:::o;19080:366::-;19222:3;19243:67;19307:2;19302:3;19243:67;:::i;:::-;19236:74;;19319:93;19408:3;19319:93;:::i;:::-;19437:2;19432:3;19428:12;19421:19;;19080:366;;;:::o;19452:419::-;19618:4;19656:2;19645:9;19641:18;19633:26;;19705:9;19699:4;19695:20;19691:1;19680:9;19676:17;19669:47;19733:131;19859:4;19733:131;:::i;:::-;19725:139;;19452:419;;;:::o;19877:182::-;20017:34;20013:1;20005:6;20001:14;19994:58;19877:182;:::o;20065:366::-;20207:3;20228:67;20292:2;20287:3;20228:67;:::i;:::-;20221:74;;20304:93;20393:3;20304:93;:::i;:::-;20422:2;20417:3;20413:12;20406:19;;20065:366;;;:::o;20437:419::-;20603:4;20641:2;20630:9;20626:18;20618:26;;20690:9;20684:4;20680:20;20676:1;20665:9;20661:17;20654:47;20718:131;20844:4;20718:131;:::i;:::-;20710:139;;20437:419;;;:::o;20862:224::-;21002:34;20998:1;20990:6;20986:14;20979:58;21071:7;21066:2;21058:6;21054:15;21047:32;20862:224;:::o;21092:366::-;21234:3;21255:67;21319:2;21314:3;21255:67;:::i;:::-;21248:74;;21331:93;21420:3;21331:93;:::i;:::-;21449:2;21444:3;21440:12;21433:19;;21092:366;;;:::o;21464:419::-;21630:4;21668:2;21657:9;21653:18;21645:26;;21717:9;21711:4;21707:20;21703:1;21692:9;21688:17;21681:47;21745:131;21871:4;21745:131;:::i;:::-;21737:139;;21464:419;;;:::o;21889:222::-;22029:34;22025:1;22017:6;22013:14;22006:58;22098:5;22093:2;22085:6;22081:15;22074:30;21889:222;:::o;22117:366::-;22259:3;22280:67;22344:2;22339:3;22280:67;:::i;:::-;22273:74;;22356:93;22445:3;22356:93;:::i;:::-;22474:2;22469:3;22465:12;22458:19;;22117:366;;;:::o;22489:419::-;22655:4;22693:2;22682:9;22678:18;22670:26;;22742:9;22736:4;22732:20;22728:1;22717:9;22713:17;22706:47;22770:131;22896:4;22770:131;:::i;:::-;22762:139;;22489:419;;;:::o;22914:228::-;23054:34;23050:1;23042:6;23038:14;23031:58;23123:11;23118:2;23110:6;23106:15;23099:36;22914:228;:::o;23148:366::-;23290:3;23311:67;23375:2;23370:3;23311:67;:::i;:::-;23304:74;;23387:93;23476:3;23387:93;:::i;:::-;23505:2;23500:3;23496:12;23489:19;;23148:366;;;:::o;23520:419::-;23686:4;23724:2;23713:9;23709:18;23701:26;;23773:9;23767:4;23763:20;23759:1;23748:9;23744:17;23737:47;23801:131;23927:4;23801:131;:::i;:::-;23793:139;;23520:419;;;:::o;23945:181::-;24085:33;24081:1;24073:6;24069:14;24062:57;23945:181;:::o;24132:366::-;24274:3;24295:67;24359:2;24354:3;24295:67;:::i;:::-;24288:74;;24371:93;24460:3;24371:93;:::i;:::-;24489:2;24484:3;24480:12;24473:19;;24132:366;;;:::o;24504:419::-;24670:4;24708:2;24697:9;24693:18;24685:26;;24757:9;24751:4;24747:20;24743:1;24732:9;24728:17;24721:47;24785:131;24911:4;24785:131;:::i;:::-;24777:139;;24504:419;;;:::o;24929:191::-;24969:3;24988:20;25006:1;24988:20;:::i;:::-;24983:25;;25022:20;25040:1;25022:20;:::i;:::-;25017:25;;25065:1;25062;25058:9;25051:16;;25086:3;25083:1;25080:10;25077:36;;;25093:18;;:::i;:::-;25077:36;24929:191;;;;:::o;25126:177::-;25266:29;25262:1;25254:6;25250:14;25243:53;25126:177;:::o;25309:366::-;25451:3;25472:67;25536:2;25531:3;25472:67;:::i;:::-;25465:74;;25548:93;25637:3;25548:93;:::i;:::-;25666:2;25661:3;25657:12;25650:19;;25309:366;;;:::o;25681:419::-;25847:4;25885:2;25874:9;25870:18;25862:26;;25934:9;25928:4;25924:20;25920:1;25909:9;25905:17;25898:47;25962:131;26088:4;25962:131;:::i;:::-;25954:139;;25681:419;;;:::o;26106:194::-;26146:4;26166:20;26184:1;26166:20;:::i;:::-;26161:25;;26200:20;26218:1;26200:20;:::i;:::-;26195:25;;26244:1;26241;26237:9;26229:17;;26268:1;26262:4;26259:11;26256:37;;;26273:18;;:::i;:::-;26256:37;26106:194;;;;:::o;26306:180::-;26354:77;26351:1;26344:88;26451:4;26448:1;26441:15;26475:4;26472:1;26465:15;26492:185;26532:1;26549:20;26567:1;26549:20;:::i;:::-;26544:25;;26583:20;26601:1;26583:20;:::i;:::-;26578:25;;26622:1;26612:35;;26627:18;;:::i;:::-;26612:35;26669:1;26666;26662:9;26657:14;;26492:185;;;;:::o;26683:220::-;26823:34;26819:1;26811:6;26807:14;26800:58;26892:3;26887:2;26879:6;26875:15;26868:28;26683:220;:::o;26909:366::-;27051:3;27072:67;27136:2;27131:3;27072:67;:::i;:::-;27065:74;;27148:93;27237:3;27148:93;:::i;:::-;27266:2;27261:3;27257:12;27250:19;;26909:366;;;:::o;27281:419::-;27447:4;27485:2;27474:9;27470:18;27462:26;;27534:9;27528:4;27524:20;27520:1;27509:9;27505:17;27498:47;27562:131;27688:4;27562:131;:::i;:::-;27554:139;;27281:419;;;:::o;27706:143::-;27763:5;27794:6;27788:13;27779:22;;27810:33;27837:5;27810:33;:::i;:::-;27706:143;;;;:::o;27855:351::-;27925:6;27974:2;27962:9;27953:7;27949:23;27945:32;27942:119;;;27980:79;;:::i;:::-;27942:119;28100:1;28125:64;28181:7;28172:6;28161:9;28157:22;28125:64;:::i;:::-;28115:74;;28071:128;27855:351;;;;:::o;28212:85::-;28257:7;28286:5;28275:16;;28212:85;;;:::o;28303:60::-;28331:3;28352:5;28345:12;;28303:60;;;:::o;28369:158::-;28427:9;28460:61;28478:42;28487:32;28513:5;28487:32;:::i;:::-;28478:42;:::i;:::-;28460:61;:::i;:::-;28447:74;;28369:158;;;:::o;28533:147::-;28628:45;28667:5;28628:45;:::i;:::-;28623:3;28616:58;28533:147;;:::o;28686:114::-;28753:6;28787:5;28781:12;28771:22;;28686:114;;;:::o;28806:184::-;28905:11;28939:6;28934:3;28927:19;28979:4;28974:3;28970:14;28955:29;;28806:184;;;;:::o;28996:132::-;29063:4;29086:3;29078:11;;29116:4;29111:3;29107:14;29099:22;;28996:132;;;:::o;29134:108::-;29211:24;29229:5;29211:24;:::i;:::-;29206:3;29199:37;29134:108;;:::o;29248:179::-;29317:10;29338:46;29380:3;29372:6;29338:46;:::i;:::-;29416:4;29411:3;29407:14;29393:28;;29248:179;;;;:::o;29433:113::-;29503:4;29535;29530:3;29526:14;29518:22;;29433:113;;;:::o;29582:732::-;29701:3;29730:54;29778:5;29730:54;:::i;:::-;29800:86;29879:6;29874:3;29800:86;:::i;:::-;29793:93;;29910:56;29960:5;29910:56;:::i;:::-;29989:7;30020:1;30005:284;30030:6;30027:1;30024:13;30005:284;;;30106:6;30100:13;30133:63;30192:3;30177:13;30133:63;:::i;:::-;30126:70;;30219:60;30272:6;30219:60;:::i;:::-;30209:70;;30065:224;30052:1;30049;30045:9;30040:14;;30005:284;;;30009:14;30305:3;30298:10;;29706:608;;;29582:732;;;;:::o;30320:831::-;30583:4;30621:3;30610:9;30606:19;30598:27;;30635:71;30703:1;30692:9;30688:17;30679:6;30635:71;:::i;:::-;30716:80;30792:2;30781:9;30777:18;30768:6;30716:80;:::i;:::-;30843:9;30837:4;30833:20;30828:2;30817:9;30813:18;30806:48;30871:108;30974:4;30965:6;30871:108;:::i;:::-;30863:116;;30989:72;31057:2;31046:9;31042:18;31033:6;30989:72;:::i;:::-;31071:73;31139:3;31128:9;31124:19;31115:6;31071:73;:::i;:::-;30320:831;;;;;;;;:::o;31157:177::-;31297:29;31293:1;31285:6;31281:14;31274:53;31157:177;:::o;31340:366::-;31482:3;31503:67;31567:2;31562:3;31503:67;:::i;:::-;31496:74;;31579:93;31668:3;31579:93;:::i;:::-;31697:2;31692:3;31688:12;31681:19;;31340:366;;;:::o;31712:419::-;31878:4;31916:2;31905:9;31901:18;31893:26;;31965:9;31959:4;31955:20;31951:1;31940:9;31936:17;31929:47;31993:131;32119:4;31993:131;:::i;:::-;31985:139;;31712:419;;;:::o

Swarm Source

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