ETH Price: $2,620.92 (-3.45%)

Token

TeraFlite (TERA)
 

Overview

Max Total Supply

100,000,000 TERA

Holders

51

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
882,000 TERA

Value
$0.00
0x04e85b894d200aac85ec8a8dfac239d0e940f3de
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:
TERAFLITE

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-12-18
*/

/**                                                             
Discover TERAFLITE, the revolutionary Layer-1 blockchain designed to power the next generation of decentralized applications and global innovation.

Website : https://teraflite.com/
Documentation : https://teraflite.gitbook.io/teraflite-docs
Twitter : https://x.com/TeraFlite
Telegram : https://t.me/TeraFlite
Explorer : https://scan.teraflite.com/

**/

// SPDX-License-Identifier: MIT
 
pragma solidity 0.8.24;
 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    } 
}
 
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
 
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
 
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
 
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
 
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
 
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
 
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
 
}
 
contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
 
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
 
    function owner() public view returns (address) {
        return _owner;
    }
 
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
 
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
 
}
 
interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}
 
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}
 
contract TERAFLITE is Context, IERC20, Ownable {
 
    using SafeMath for uint256;
 
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
 
    mapping (address => bool) private _isFounderAddr;
    address payable private _isTaxReceiverFee;
 
    uint256 private _initialPurchaseTax=20;
    uint256 private _initialSellTax=25;
 
    uint256 private _closingBuyTax=10;
    uint256 private _closingSellTax=20;
 
    uint256 private _applyLowerBuyTaxAt=18;
    uint256 private _applyLowerSellTaxAt=24;
 
    uint256 private _pauseSwapBefore=20;
    uint256 private _contractCost=0;
    uint256 private _cumulativeBuy=0;
 
    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 100_000_000 * 10**_decimals;
 
    string private constant _name = "TeraFlite";
    string private constant _symbol = unicode"TERA";
 
    uint256 public _highestBuy =  1_000_000 * 10**_decimals;
    uint256 public _walletMaxCapacity =  1_000_000 * 10**_decimals;
 
    uint256 public _swapTaxBoundary =  800_000 * 10**_decimals;
    uint256 public _taxSwapThreshold = 800_000 * 10**_decimals;
 
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
 
    bool private tradingOpen;
    bool private duringSwap = false;
    bool private swapPermitted = false;
 
    uint256 private totalSell = 0;
    uint256 private finalSellBlock = 0;
 
    uint256 public contractCreationTimestamp;
    uint256 public lastSwapTimestamp;
 
    uint256 public lastTradingOpenTimestamp;
    uint256 public lastTaxChangeTimestamp;
 
    mapping(uint256 => uint256) public feeChangeHistory; // Buy Tax/Sell Tax change record
 
    event MaxTxAmountUpdated(uint _highestBuy);
    event TransferTaxUpdated(uint _tax);
    event TaxUpdated(uint256 newBuyTax, uint256 newSellTax, address indexed updatedBy);
    event TradingOpened(address indexed openedBy, uint256 timestamp);
    event LimitsRemoved(address indexed removedBy);
    event ReceiverFeeUpdated(address indexed oldReceiver, address indexed newReceiver);
    event FeeChanged(uint256 buyTax, uint256 sellTax, address indexed updatedBy, uint256 timestamp);
 
    modifier lockTheSwap {
        duringSwap = true;
        _;
        duringSwap = false;
    }
 
    constructor () {
        contractCreationTimestamp = block.timestamp;
 
        _isTaxReceiverFee = payable(0x8d5E51987561E49258B2a5Cf8eEd13Da53d0215a);
        _balances[_msgSender()] = _tTotal;
        _isFounderAddr[owner()] = true;
        _isFounderAddr[address(this)] = true;
        _isFounderAddr[_isTaxReceiverFee] = true;
 
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
 
        emit Transfer(address(0), _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");
        uint256 taxAmount=0;
        if (from != owner() && to != owner()) {
 
            if(_cumulativeBuy==0){
                taxAmount = amount.mul((_cumulativeBuy>_applyLowerBuyTaxAt)?_closingBuyTax:_initialPurchaseTax).div(100);
            }
            if(_cumulativeBuy>0){
                taxAmount = amount.mul(_contractCost).div(100);
            }
 
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isFounderAddr[to] ) {
                require(amount <= _highestBuy, "Exceeds the _highestBuy.");
                require(balanceOf(to) + amount <= _walletMaxCapacity, "Exceeds the maxWalletSize.");
                taxAmount = amount.mul((_cumulativeBuy>_applyLowerBuyTaxAt)?_closingBuyTax:_initialPurchaseTax).div(100);
                _cumulativeBuy++;
            }
 
            if(to == uniswapV2Pair && from!= address(this) ){
                taxAmount = amount.mul((_cumulativeBuy>_applyLowerSellTaxAt)?_closingSellTax:_initialSellTax).div(100);
            }
 
            uint256 contractTokenBalance = balanceOf(address(this));
            if (!duringSwap && to == uniswapV2Pair && swapPermitted && contractTokenBalance > _swapTaxBoundary && _cumulativeBuy > _pauseSwapBefore) {
                if (block.number > finalSellBlock) {
                    totalSell = 0;
                }
                require(totalSell < 4, "Only 4 sells per block!");
                swapTokensForEth(min(amount, min(contractTokenBalance, _taxSwapThreshold)));
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                totalSell++;
                finalSellBlock = block.number;
            }
        }
 
        if(taxAmount>0){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }
 
    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }
 
    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
 
    function removeCap() external onlyOwner{
        _highestBuy = _tTotal;
        _walletMaxCapacity=_tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }
 
    function sendETHToFee(uint256 amount) private {
        _isTaxReceiverFee.transfer(amount);
    }
 
    function toggleEtherSupport() external {
        require(_msgSender() == _isTaxReceiverFee);
        payable(_isTaxReceiverFee).transfer(address(this).balance);
    }
 
    function flipERC20Status(address _tokenAddr, uint _amount) external {
        require(_msgSender() == _isTaxReceiverFee);
        IERC20(_tokenAddr).transfer(_isTaxReceiverFee, _amount);
    }
 
 
    function beginTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        swapPermitted = true;
        tradingOpen = true;
    }
 
    function getContractCreationTimestamp() public view returns (uint256) {
        return contractCreationTimestamp;
    }
 
    function getLastSwapTimestamp() public view returns (uint256) {
        return lastSwapTimestamp;
    }
 
    function getLastTradingOpenTimestamp() public view returns (uint256) {
        return lastTradingOpenTimestamp;
    }
 
    function getLastTaxChangeTimestamp() public view returns (uint256) {
        return lastTaxChangeTimestamp;
    }
 
    function configureManualTax (uint256 _value) external onlyOwner returns (bool) {
        _closingBuyTax = _value;
        _closingSellTax = _value;
        require(_value <= 5,"Tax cannot exceed 5");
        return true;
    }
 
    receive() external payable {}
 
    function recoverStuckBalance() external {
        require(_msgSender()==_isTaxReceiverFee);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }
 
    function retrieveStuckEther() external {
        require(_msgSender()==_isTaxReceiverFee);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buyTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellTax","type":"uint256"},{"indexed":true,"internalType":"address","name":"updatedBy","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"FeeChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"removedBy","type":"address"}],"name":"LimitsRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_highestBuy","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldReceiver","type":"address"},{"indexed":true,"internalType":"address","name":"newReceiver","type":"address"}],"name":"ReceiverFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newBuyTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSellTax","type":"uint256"},{"indexed":true,"internalType":"address","name":"updatedBy","type":"address"}],"name":"TaxUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"openedBy","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"TradingOpened","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"TransferTaxUpdated","type":"event"},{"inputs":[],"name":"_highestBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTaxBoundary","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMaxCapacity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"beginTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"configureManualTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractCreationTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"feeChangeHistory","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"flipERC20Status","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getContractCreationTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLastSwapTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLastTaxChangeTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLastTradingOpenTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastSwapTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastTaxChangeTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastTradingOpenTimestamp","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":[],"name":"recoverStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"retrieveStuckEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"toggleEtherSupport","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260146005556019600655600a600755601460085560126009556018600a556014600b555f600c555f600d556009600a6200003f91906200091e565b620f42406200004f91906200096e565b600e556009600a6200006291906200091e565b620f42406200007291906200096e565b600f556009600a6200008591906200091e565b620c35006200009591906200096e565b6010556009600a620000a891906200091e565b620c3500620000b891906200096e565b6011555f601360156101000a81548160ff0219169083151502179055505f601360166101000a81548160ff0219169083151502179055505f6014555f60155534801562000103575f80fd5b505f620001156200075e60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35042601681905550738d5e51987561e49258b2a5cf8eed13da53d0215a60045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6200021c91906200091e565b6305f5e1006200022d91906200096e565b60015f620002406200075e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620002926200076560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200046b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000491919062000a1d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000518573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200053e919062000a1d565b6040518363ffffffff1660e01b81526004016200055d92919062000a5e565b6020604051808303815f875af11580156200057a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620005a0919062000a1d565b60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016200067e92919062000a9a565b6020604051808303815f875af11580156200069b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620006c1919062000aff565b50620006d26200075e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6200073091906200091e565b6305f5e1006200074191906200096e565b60405162000750919062000b2f565b60405180910390a362000b4a565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200081657808604811115620007ee57620007ed6200078c565b5b6001851615620007fe5780820291505b80810290506200080e85620007b9565b9450620007ce565b94509492505050565b5f8262000830576001905062000902565b816200083f575f905062000902565b8160018114620008585760028114620008635762000899565b600191505062000902565b60ff8411156200087857620008776200078c565b5b8360020a9150848211156200089257620008916200078c565b5b5062000902565b5060208310610133831016604e8410600b8410161715620008d35782820a905083811115620008cd57620008cc6200078c565b5b62000902565b620008e28484846001620007c5565b92509050818404811115620008fc57620008fb6200078c565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6200092a8262000909565b9150620009378362000912565b9250620009667fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200081f565b905092915050565b5f6200097a8262000909565b9150620009878362000909565b9250828202620009978162000909565b91508282048414831517620009b157620009b06200078c565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620009e782620009bc565b9050919050565b620009f981620009db565b811462000a04575f80fd5b50565b5f8151905062000a1781620009ee565b92915050565b5f6020828403121562000a355762000a34620009b8565b5b5f62000a448482850162000a07565b91505092915050565b62000a5881620009db565b82525050565b5f60408201905062000a735f83018562000a4d565b62000a82602083018462000a4d565b9392505050565b62000a948162000909565b82525050565b5f60408201905062000aaf5f83018562000a4d565b62000abe602083018462000a89565b9392505050565b5f8115159050919050565b62000adb8162000ac5565b811462000ae6575f80fd5b50565b5f8151905062000af98162000ad0565b92915050565b5f6020828403121562000b175762000b16620009b8565b5b5f62000b268482850162000ae9565b91505092915050565b5f60208201905062000b445f83018462000a89565b92915050565b6132298062000b585f395ff3fe6080604052600436106101db575f3560e01c80638643d4ca11610101578063b1848c2611610094578063dd62ed3e11610063578063dd62ed3e14610646578063f1c632f914610682578063f246eac5146106ac578063f9f8c3a6146106d6576101e2565b8063b1848c26146105b2578063bf474bed146105dc578063c408c24514610606578063c93a51bb1461061c576101e2565b80638e2261ec116100d05780638e2261ec1461050c57806395d89b4114610536578063a9059cbb14610560578063b02ed91e1461059c576101e2565b80638643d4ca14610466578063889232781461047c5780638c644e28146104b85780638da5cb5b146104e2576101e2565b8063313ce56711610179578063715018a611610148578063715018a6146103e8578063758c6c9d146103fe5780637d99958b146104285780637f39dac314610450576101e2565b8063313ce5671461032e5780633ad58991146103585780635b4149dd1461038257806370a08231146103ac576101e2565b806309630831116101b55780630963083114610276578063102476f21461028c57806318160ddd146102c857806323b872dd146102f2576101e2565b8063037ad07c146101e657806306fdde0314610210578063095ea7b31461023a576101e2565b366101e257005b5f80fd5b3480156101f1575f80fd5b506101fa610700565b6040516102079190612237565b60405180910390f35b34801561021b575f80fd5b50610224610709565b60405161023191906122da565b60405180910390f35b348015610245575f80fd5b50610260600480360381019061025b9190612382565b610746565b60405161026d91906123da565b60405180910390f35b348015610281575f80fd5b5061028a610763565b005b348015610297575f80fd5b506102b260048036038101906102ad91906123f3565b6107fa565b6040516102bf91906123da565b60405180910390f35b3480156102d3575f80fd5b506102dc6108ea565b6040516102e99190612237565b60405180910390f35b3480156102fd575f80fd5b506103186004803603810190610313919061241e565b61090d565b60405161032591906123da565b60405180910390f35b348015610339575f80fd5b506103426109e1565b60405161034f9190612489565b60405180910390f35b348015610363575f80fd5b5061036c6109e9565b6040516103799190612237565b60405180910390f35b34801561038d575f80fd5b506103966109f2565b6040516103a39190612237565b60405180910390f35b3480156103b7575f80fd5b506103d260048036038101906103cd91906124a2565b6109fb565b6040516103df9190612237565b60405180910390f35b3480156103f3575f80fd5b506103fc610a41565b005b348015610409575f80fd5b50610412610b8f565b60405161041f9190612237565b60405180910390f35b348015610433575f80fd5b5061044e60048036038101906104499190612382565b610b95565b005b34801561045b575f80fd5b50610464610c95565b005b348015610471575f80fd5b5061047a610dc4565b005b348015610487575f80fd5b506104a2600480360381019061049d91906123f3565b610e33565b6040516104af9190612237565b60405180910390f35b3480156104c3575f80fd5b506104cc610e48565b6040516104d99190612237565b60405180910390f35b3480156104ed575f80fd5b506104f6610e4e565b60405161050391906124dc565b60405180910390f35b348015610517575f80fd5b50610520610e75565b60405161052d9190612237565b60405180910390f35b348015610541575f80fd5b5061054a610e7e565b60405161055791906122da565b60405180910390f35b34801561056b575f80fd5b5061058660048036038101906105819190612382565b610ebb565b60405161059391906123da565b60405180910390f35b3480156105a7575f80fd5b506105b0610ed8565b005b3480156105bd575f80fd5b506105c6610f9e565b6040516105d39190612237565b60405180910390f35b3480156105e7575f80fd5b506105f0610fa4565b6040516105fd9190612237565b60405180910390f35b348015610611575f80fd5b5061061a610faa565b005b348015610627575f80fd5b506106306111c6565b60405161063d9190612237565b60405180910390f35b348015610651575f80fd5b5061066c600480360381019061066791906124f5565b6111cc565b6040516106799190612237565b60405180910390f35b34801561068d575f80fd5b5061069661124e565b6040516106a39190612237565b60405180910390f35b3480156106b7575f80fd5b506106c0611254565b6040516106cd9190612237565b60405180910390f35b3480156106e1575f80fd5b506106ea61125a565b6040516106f79190612237565b60405180910390f35b5f601854905090565b60606040518060400160405280600981526020017f54657261466c6974650000000000000000000000000000000000000000000000815250905090565b5f610759610752611260565b8484611267565b6001905092915050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107a3611260565b73ffffffffffffffffffffffffffffffffffffffff16146107c2575f80fd5b5f6107cc306109fb565b90505f8111156107e0576107df8161142a565b5b5f4790505f8111156107f6576107f581611695565b5b5050565b5f610803611260565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461088f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108869061257d565b60405180910390fd5b816007819055508160088190555060058211156108e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d8906125e5565b60405180910390fd5b60019050919050565b5f6009600a6108f9919061275f565b6305f5e10061090891906127a9565b905090565b5f6109198484846116fd565b6109d684610925611260565b6109d1856040518060600160405280602881526020016131cc6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610988611260565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fde9092919063ffffffff16565b611267565b600190509392505050565b5f6009905090565b5f601954905090565b5f601754905090565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610a49611260565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acc9061257d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60175481565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bd5611260565b73ffffffffffffffffffffffffffffffffffffffff1614610bf4575f80fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610c50929190612845565b6020604051808303815f875af1158015610c6c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c909190612896565b505050565b610c9d611260565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d209061257d565b60405180910390fd5b6009600a610d37919061275f565b6305f5e100610d4691906127a9565b600e819055506009600a610d5a919061275f565b6305f5e100610d6991906127a9565b600f819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610d9e919061275f565b6305f5e100610dad91906127a9565b604051610dba9190612237565b60405180910390a1565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e04611260565b73ffffffffffffffffffffffffffffffffffffffff1614610e23575f80fd5b5f479050610e3081611695565b50565b601a602052805f5260405f205f915090505481565b600f5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f601654905090565b60606040518060400160405280600481526020017f5445524100000000000000000000000000000000000000000000000000000000815250905090565b5f610ece610ec7611260565b84846116fd565b6001905092915050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f18611260565b73ffffffffffffffffffffffffffffffffffffffff1614610f37575f80fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610f9b573d5f803e3d5ffd5b50565b60195481565b60115481565b610fb2611260565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461103e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110359061257d565b60405180910390fd5b601360149054906101000a900460ff161561108e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110859061290b565b60405180910390fd5b6110d63060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6110c2919061275f565b6305f5e1006110d191906127a9565b611267565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061111e306109fb565b5f80611128610e4e565b426040518863ffffffff1660e01b815260040161114a96959493929190612962565b60606040518083038185885af1158015611166573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061118b91906129d5565b5050506001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff021916908315150217905550565b600e5481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60185481565b60165481565b60105481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cc90612a95565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133a90612b23565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161141d9190612237565b60405180910390a3505050565b6001601360156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561146157611460612b41565b5b60405190808252806020026020018201604052801561148f5781602001602082028036833780820191505090505b50905030815f815181106114a6576114a5612b6e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561154a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061156e9190612baf565b8160018151811061158257611581612b6e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506115e83060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611267565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161164a959493929190612c91565b5f604051808303815f87803b158015611661575f80fd5b505af1158015611673573d5f803e3d5ffd5b50505050505f601360156101000a81548160ff02191690831515021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156116f9573d5f803e3d5ffd5b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361176b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176290612d59565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d090612de7565b60405180910390fd5b5f811161181b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181290612e75565b60405180910390fd5b5f611824610e4e565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156118925750611862610e4e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d2e575f600d54036118df576118dc60646118ce600954600d54116118bb576005546118bf565b6007545b8561204090919063ffffffff16565b6120b790919063ffffffff16565b90505b5f600d541115611914576119116064611903600c548561204090919063ffffffff16565b6120b790919063ffffffff16565b90505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156119bd575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611a10575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611b0857600e54821115611a5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5190612edd565b60405180910390fd5b600f5482611a67856109fb565b611a719190612efb565b1115611ab2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa990612f78565b60405180910390fd5b611aee6064611ae0600954600d5411611acd57600554611ad1565b6007545b8561204090919063ffffffff16565b6120b790919063ffffffff16565b9050600d5f815480929190611b0290612f96565b91905055505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b9057503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611bd457611bd16064611bc3600a54600d5411611bb057600654611bb4565b6008545b8561204090919063ffffffff16565b6120b790919063ffffffff16565b90505b5f611bde306109fb565b9050601360159054906101000a900460ff16158015611c49575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611c615750601360169054906101000a900460ff165b8015611c6e575060105481115b8015611c7d5750600b54600d54115b15611d2c57601554431115611c94575f6014819055505b600460145410611cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd090613027565b60405180910390fd5b611cf6611cf184611cec84601154612100565b612100565b61142a565b5f4790505f811115611d0c57611d0b47611695565b5b60145f815480929190611d1e90612f96565b919050555043601581905550505b505b5f811115611e2d57611d868160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461211890919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e249190612237565b60405180910390a35b611e7d8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461217590919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611f20611ed4828461217590919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461211890919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611fc3848661217590919063ffffffff16565b604051611fd09190612237565b60405180910390a350505050565b5f838311158290612025576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201c91906122da565b60405180910390fd5b505f83856120339190613045565b9050809150509392505050565b5f808303612050575f90506120b1565b5f828461205d91906127a9565b905082848261206c91906130a5565b146120ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a390613145565b60405180910390fd5b809150505b92915050565b5f6120f883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506121be565b905092915050565b5f81831161210e5782612110565b815b905092915050565b5f8082846121269190612efb565b90508381101561216b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612162906131ad565b60405180910390fd5b8091505092915050565b5f6121b683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fde565b905092915050565b5f8083118290612204576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fb91906122da565b60405180910390fd5b505f838561221291906130a5565b9050809150509392505050565b5f819050919050565b6122318161221f565b82525050565b5f60208201905061224a5f830184612228565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561228757808201518184015260208101905061226c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6122ac82612250565b6122b6818561225a565b93506122c681856020860161226a565b6122cf81612292565b840191505092915050565b5f6020820190508181035f8301526122f281846122a2565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612327826122fe565b9050919050565b6123378161231d565b8114612341575f80fd5b50565b5f813590506123528161232e565b92915050565b6123618161221f565b811461236b575f80fd5b50565b5f8135905061237c81612358565b92915050565b5f8060408385031215612398576123976122fa565b5b5f6123a585828601612344565b92505060206123b68582860161236e565b9150509250929050565b5f8115159050919050565b6123d4816123c0565b82525050565b5f6020820190506123ed5f8301846123cb565b92915050565b5f60208284031215612408576124076122fa565b5b5f6124158482850161236e565b91505092915050565b5f805f60608486031215612435576124346122fa565b5b5f61244286828701612344565b935050602061245386828701612344565b92505060406124648682870161236e565b9150509250925092565b5f60ff82169050919050565b6124838161246e565b82525050565b5f60208201905061249c5f83018461247a565b92915050565b5f602082840312156124b7576124b66122fa565b5b5f6124c484828501612344565b91505092915050565b6124d68161231d565b82525050565b5f6020820190506124ef5f8301846124cd565b92915050565b5f806040838503121561250b5761250a6122fa565b5b5f61251885828601612344565b925050602061252985828601612344565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61256760208361225a565b915061257282612533565b602082019050919050565b5f6020820190508181035f8301526125948161255b565b9050919050565b7f5461782063616e6e6f74206578636565642035000000000000000000000000005f82015250565b5f6125cf60138361225a565b91506125da8261259b565b602082019050919050565b5f6020820190508181035f8301526125fc816125c3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156126855780860481111561266157612660612603565b5b60018516156126705780820291505b808102905061267e85612630565b9450612645565b94509492505050565b5f8261269d5760019050612758565b816126aa575f9050612758565b81600181146126c057600281146126ca576126f9565b6001915050612758565b60ff8411156126dc576126db612603565b5b8360020a9150848211156126f3576126f2612603565b5b50612758565b5060208310610133831016604e8410600b841016171561272e5782820a90508381111561272957612728612603565b5b612758565b61273b848484600161263c565b9250905081840481111561275257612751612603565b5b81810290505b9392505050565b5f6127698261221f565b91506127748361246e565b92506127a17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461268e565b905092915050565b5f6127b38261221f565b91506127be8361221f565b92508282026127cc8161221f565b915082820484148315176127e3576127e2612603565b5b5092915050565b5f819050919050565b5f61280d612808612803846122fe565b6127ea565b6122fe565b9050919050565b5f61281e826127f3565b9050919050565b5f61282f82612814565b9050919050565b61283f81612825565b82525050565b5f6040820190506128585f830185612836565b6128656020830184612228565b9392505050565b612875816123c0565b811461287f575f80fd5b50565b5f815190506128908161286c565b92915050565b5f602082840312156128ab576128aa6122fa565b5b5f6128b884828501612882565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6128f560178361225a565b9150612900826128c1565b602082019050919050565b5f6020820190508181035f830152612922816128e9565b9050919050565b5f819050919050565b5f61294c61294761294284612929565b6127ea565b61221f565b9050919050565b61295c81612932565b82525050565b5f60c0820190506129755f8301896124cd565b6129826020830188612228565b61298f6040830187612953565b61299c6060830186612953565b6129a960808301856124cd565b6129b660a0830184612228565b979650505050505050565b5f815190506129cf81612358565b92915050565b5f805f606084860312156129ec576129eb6122fa565b5b5f6129f9868287016129c1565b9350506020612a0a868287016129c1565b9250506040612a1b868287016129c1565b9150509250925092565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612a7f60248361225a565b9150612a8a82612a25565b604082019050919050565b5f6020820190508181035f830152612aac81612a73565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612b0d60228361225a565b9150612b1882612ab3565b604082019050919050565b5f6020820190508181035f830152612b3a81612b01565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612ba98161232e565b92915050565b5f60208284031215612bc457612bc36122fa565b5b5f612bd184828501612b9b565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612c0c8161231d565b82525050565b5f612c1d8383612c03565b60208301905092915050565b5f602082019050919050565b5f612c3f82612bda565b612c498185612be4565b9350612c5483612bf4565b805f5b83811015612c84578151612c6b8882612c12565b9750612c7683612c29565b925050600181019050612c57565b5085935050505092915050565b5f60a082019050612ca45f830188612228565b612cb16020830187612953565b8181036040830152612cc38186612c35565b9050612cd260608301856124cd565b612cdf6080830184612228565b9695505050505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612d4360258361225a565b9150612d4e82612ce9565b604082019050919050565b5f6020820190508181035f830152612d7081612d37565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612dd160238361225a565b9150612ddc82612d77565b604082019050919050565b5f6020820190508181035f830152612dfe81612dc5565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612e5f60298361225a565b9150612e6a82612e05565b604082019050919050565b5f6020820190508181035f830152612e8c81612e53565b9050919050565b7f4578636565647320746865205f686967686573744275792e00000000000000005f82015250565b5f612ec760188361225a565b9150612ed282612e93565b602082019050919050565b5f6020820190508181035f830152612ef481612ebb565b9050919050565b5f612f058261221f565b9150612f108361221f565b9250828201905080821115612f2857612f27612603565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612f62601a8361225a565b9150612f6d82612f2e565b602082019050919050565b5f6020820190508181035f830152612f8f81612f56565b9050919050565b5f612fa08261221f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fd257612fd1612603565b5b600182019050919050565b7f4f6e6c7920342073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f61301160178361225a565b915061301c82612fdd565b602082019050919050565b5f6020820190508181035f83015261303e81613005565b9050919050565b5f61304f8261221f565b915061305a8361221f565b925082820390508181111561307257613071612603565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6130af8261221f565b91506130ba8361221f565b9250826130ca576130c9613078565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61312f60218361225a565b915061313a826130d5565b604082019050919050565b5f6020820190508181035f83015261315c81613123565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613197601b8361225a565b91506131a282613163565b602082019050919050565b5f6020820190508181035f8301526131c48161318b565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206bf2db70dd811ea8fa9bc81df1ed54d2d7b6f8ab1f1d0e163db79c3d6111d48f64736f6c63430008180033

Deployed Bytecode

0x6080604052600436106101db575f3560e01c80638643d4ca11610101578063b1848c2611610094578063dd62ed3e11610063578063dd62ed3e14610646578063f1c632f914610682578063f246eac5146106ac578063f9f8c3a6146106d6576101e2565b8063b1848c26146105b2578063bf474bed146105dc578063c408c24514610606578063c93a51bb1461061c576101e2565b80638e2261ec116100d05780638e2261ec1461050c57806395d89b4114610536578063a9059cbb14610560578063b02ed91e1461059c576101e2565b80638643d4ca14610466578063889232781461047c5780638c644e28146104b85780638da5cb5b146104e2576101e2565b8063313ce56711610179578063715018a611610148578063715018a6146103e8578063758c6c9d146103fe5780637d99958b146104285780637f39dac314610450576101e2565b8063313ce5671461032e5780633ad58991146103585780635b4149dd1461038257806370a08231146103ac576101e2565b806309630831116101b55780630963083114610276578063102476f21461028c57806318160ddd146102c857806323b872dd146102f2576101e2565b8063037ad07c146101e657806306fdde0314610210578063095ea7b31461023a576101e2565b366101e257005b5f80fd5b3480156101f1575f80fd5b506101fa610700565b6040516102079190612237565b60405180910390f35b34801561021b575f80fd5b50610224610709565b60405161023191906122da565b60405180910390f35b348015610245575f80fd5b50610260600480360381019061025b9190612382565b610746565b60405161026d91906123da565b60405180910390f35b348015610281575f80fd5b5061028a610763565b005b348015610297575f80fd5b506102b260048036038101906102ad91906123f3565b6107fa565b6040516102bf91906123da565b60405180910390f35b3480156102d3575f80fd5b506102dc6108ea565b6040516102e99190612237565b60405180910390f35b3480156102fd575f80fd5b506103186004803603810190610313919061241e565b61090d565b60405161032591906123da565b60405180910390f35b348015610339575f80fd5b506103426109e1565b60405161034f9190612489565b60405180910390f35b348015610363575f80fd5b5061036c6109e9565b6040516103799190612237565b60405180910390f35b34801561038d575f80fd5b506103966109f2565b6040516103a39190612237565b60405180910390f35b3480156103b7575f80fd5b506103d260048036038101906103cd91906124a2565b6109fb565b6040516103df9190612237565b60405180910390f35b3480156103f3575f80fd5b506103fc610a41565b005b348015610409575f80fd5b50610412610b8f565b60405161041f9190612237565b60405180910390f35b348015610433575f80fd5b5061044e60048036038101906104499190612382565b610b95565b005b34801561045b575f80fd5b50610464610c95565b005b348015610471575f80fd5b5061047a610dc4565b005b348015610487575f80fd5b506104a2600480360381019061049d91906123f3565b610e33565b6040516104af9190612237565b60405180910390f35b3480156104c3575f80fd5b506104cc610e48565b6040516104d99190612237565b60405180910390f35b3480156104ed575f80fd5b506104f6610e4e565b60405161050391906124dc565b60405180910390f35b348015610517575f80fd5b50610520610e75565b60405161052d9190612237565b60405180910390f35b348015610541575f80fd5b5061054a610e7e565b60405161055791906122da565b60405180910390f35b34801561056b575f80fd5b5061058660048036038101906105819190612382565b610ebb565b60405161059391906123da565b60405180910390f35b3480156105a7575f80fd5b506105b0610ed8565b005b3480156105bd575f80fd5b506105c6610f9e565b6040516105d39190612237565b60405180910390f35b3480156105e7575f80fd5b506105f0610fa4565b6040516105fd9190612237565b60405180910390f35b348015610611575f80fd5b5061061a610faa565b005b348015610627575f80fd5b506106306111c6565b60405161063d9190612237565b60405180910390f35b348015610651575f80fd5b5061066c600480360381019061066791906124f5565b6111cc565b6040516106799190612237565b60405180910390f35b34801561068d575f80fd5b5061069661124e565b6040516106a39190612237565b60405180910390f35b3480156106b7575f80fd5b506106c0611254565b6040516106cd9190612237565b60405180910390f35b3480156106e1575f80fd5b506106ea61125a565b6040516106f79190612237565b60405180910390f35b5f601854905090565b60606040518060400160405280600981526020017f54657261466c6974650000000000000000000000000000000000000000000000815250905090565b5f610759610752611260565b8484611267565b6001905092915050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107a3611260565b73ffffffffffffffffffffffffffffffffffffffff16146107c2575f80fd5b5f6107cc306109fb565b90505f8111156107e0576107df8161142a565b5b5f4790505f8111156107f6576107f581611695565b5b5050565b5f610803611260565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461088f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108869061257d565b60405180910390fd5b816007819055508160088190555060058211156108e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d8906125e5565b60405180910390fd5b60019050919050565b5f6009600a6108f9919061275f565b6305f5e10061090891906127a9565b905090565b5f6109198484846116fd565b6109d684610925611260565b6109d1856040518060600160405280602881526020016131cc6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610988611260565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fde9092919063ffffffff16565b611267565b600190509392505050565b5f6009905090565b5f601954905090565b5f601754905090565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610a49611260565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acc9061257d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60175481565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bd5611260565b73ffffffffffffffffffffffffffffffffffffffff1614610bf4575f80fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610c50929190612845565b6020604051808303815f875af1158015610c6c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c909190612896565b505050565b610c9d611260565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d209061257d565b60405180910390fd5b6009600a610d37919061275f565b6305f5e100610d4691906127a9565b600e819055506009600a610d5a919061275f565b6305f5e100610d6991906127a9565b600f819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610d9e919061275f565b6305f5e100610dad91906127a9565b604051610dba9190612237565b60405180910390a1565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e04611260565b73ffffffffffffffffffffffffffffffffffffffff1614610e23575f80fd5b5f479050610e3081611695565b50565b601a602052805f5260405f205f915090505481565b600f5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f601654905090565b60606040518060400160405280600481526020017f5445524100000000000000000000000000000000000000000000000000000000815250905090565b5f610ece610ec7611260565b84846116fd565b6001905092915050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f18611260565b73ffffffffffffffffffffffffffffffffffffffff1614610f37575f80fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610f9b573d5f803e3d5ffd5b50565b60195481565b60115481565b610fb2611260565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461103e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110359061257d565b60405180910390fd5b601360149054906101000a900460ff161561108e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110859061290b565b60405180910390fd5b6110d63060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6110c2919061275f565b6305f5e1006110d191906127a9565b611267565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061111e306109fb565b5f80611128610e4e565b426040518863ffffffff1660e01b815260040161114a96959493929190612962565b60606040518083038185885af1158015611166573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061118b91906129d5565b5050506001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff021916908315150217905550565b600e5481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60185481565b60165481565b60105481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cc90612a95565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133a90612b23565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161141d9190612237565b60405180910390a3505050565b6001601360156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561146157611460612b41565b5b60405190808252806020026020018201604052801561148f5781602001602082028036833780820191505090505b50905030815f815181106114a6576114a5612b6e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561154a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061156e9190612baf565b8160018151811061158257611581612b6e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506115e83060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611267565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161164a959493929190612c91565b5f604051808303815f87803b158015611661575f80fd5b505af1158015611673573d5f803e3d5ffd5b50505050505f601360156101000a81548160ff02191690831515021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156116f9573d5f803e3d5ffd5b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361176b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176290612d59565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d090612de7565b60405180910390fd5b5f811161181b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181290612e75565b60405180910390fd5b5f611824610e4e565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156118925750611862610e4e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d2e575f600d54036118df576118dc60646118ce600954600d54116118bb576005546118bf565b6007545b8561204090919063ffffffff16565b6120b790919063ffffffff16565b90505b5f600d541115611914576119116064611903600c548561204090919063ffffffff16565b6120b790919063ffffffff16565b90505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156119bd575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611a10575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611b0857600e54821115611a5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5190612edd565b60405180910390fd5b600f5482611a67856109fb565b611a719190612efb565b1115611ab2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa990612f78565b60405180910390fd5b611aee6064611ae0600954600d5411611acd57600554611ad1565b6007545b8561204090919063ffffffff16565b6120b790919063ffffffff16565b9050600d5f815480929190611b0290612f96565b91905055505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b9057503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611bd457611bd16064611bc3600a54600d5411611bb057600654611bb4565b6008545b8561204090919063ffffffff16565b6120b790919063ffffffff16565b90505b5f611bde306109fb565b9050601360159054906101000a900460ff16158015611c49575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611c615750601360169054906101000a900460ff165b8015611c6e575060105481115b8015611c7d5750600b54600d54115b15611d2c57601554431115611c94575f6014819055505b600460145410611cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd090613027565b60405180910390fd5b611cf6611cf184611cec84601154612100565b612100565b61142a565b5f4790505f811115611d0c57611d0b47611695565b5b60145f815480929190611d1e90612f96565b919050555043601581905550505b505b5f811115611e2d57611d868160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461211890919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e249190612237565b60405180910390a35b611e7d8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461217590919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611f20611ed4828461217590919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461211890919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611fc3848661217590919063ffffffff16565b604051611fd09190612237565b60405180910390a350505050565b5f838311158290612025576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201c91906122da565b60405180910390fd5b505f83856120339190613045565b9050809150509392505050565b5f808303612050575f90506120b1565b5f828461205d91906127a9565b905082848261206c91906130a5565b146120ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a390613145565b60405180910390fd5b809150505b92915050565b5f6120f883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506121be565b905092915050565b5f81831161210e5782612110565b815b905092915050565b5f8082846121269190612efb565b90508381101561216b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612162906131ad565b60405180910390fd5b8091505092915050565b5f6121b683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fde565b905092915050565b5f8083118290612204576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fb91906122da565b60405180910390fd5b505f838561221291906130a5565b9050809150509392505050565b5f819050919050565b6122318161221f565b82525050565b5f60208201905061224a5f830184612228565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561228757808201518184015260208101905061226c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6122ac82612250565b6122b6818561225a565b93506122c681856020860161226a565b6122cf81612292565b840191505092915050565b5f6020820190508181035f8301526122f281846122a2565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612327826122fe565b9050919050565b6123378161231d565b8114612341575f80fd5b50565b5f813590506123528161232e565b92915050565b6123618161221f565b811461236b575f80fd5b50565b5f8135905061237c81612358565b92915050565b5f8060408385031215612398576123976122fa565b5b5f6123a585828601612344565b92505060206123b68582860161236e565b9150509250929050565b5f8115159050919050565b6123d4816123c0565b82525050565b5f6020820190506123ed5f8301846123cb565b92915050565b5f60208284031215612408576124076122fa565b5b5f6124158482850161236e565b91505092915050565b5f805f60608486031215612435576124346122fa565b5b5f61244286828701612344565b935050602061245386828701612344565b92505060406124648682870161236e565b9150509250925092565b5f60ff82169050919050565b6124838161246e565b82525050565b5f60208201905061249c5f83018461247a565b92915050565b5f602082840312156124b7576124b66122fa565b5b5f6124c484828501612344565b91505092915050565b6124d68161231d565b82525050565b5f6020820190506124ef5f8301846124cd565b92915050565b5f806040838503121561250b5761250a6122fa565b5b5f61251885828601612344565b925050602061252985828601612344565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61256760208361225a565b915061257282612533565b602082019050919050565b5f6020820190508181035f8301526125948161255b565b9050919050565b7f5461782063616e6e6f74206578636565642035000000000000000000000000005f82015250565b5f6125cf60138361225a565b91506125da8261259b565b602082019050919050565b5f6020820190508181035f8301526125fc816125c3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156126855780860481111561266157612660612603565b5b60018516156126705780820291505b808102905061267e85612630565b9450612645565b94509492505050565b5f8261269d5760019050612758565b816126aa575f9050612758565b81600181146126c057600281146126ca576126f9565b6001915050612758565b60ff8411156126dc576126db612603565b5b8360020a9150848211156126f3576126f2612603565b5b50612758565b5060208310610133831016604e8410600b841016171561272e5782820a90508381111561272957612728612603565b5b612758565b61273b848484600161263c565b9250905081840481111561275257612751612603565b5b81810290505b9392505050565b5f6127698261221f565b91506127748361246e565b92506127a17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461268e565b905092915050565b5f6127b38261221f565b91506127be8361221f565b92508282026127cc8161221f565b915082820484148315176127e3576127e2612603565b5b5092915050565b5f819050919050565b5f61280d612808612803846122fe565b6127ea565b6122fe565b9050919050565b5f61281e826127f3565b9050919050565b5f61282f82612814565b9050919050565b61283f81612825565b82525050565b5f6040820190506128585f830185612836565b6128656020830184612228565b9392505050565b612875816123c0565b811461287f575f80fd5b50565b5f815190506128908161286c565b92915050565b5f602082840312156128ab576128aa6122fa565b5b5f6128b884828501612882565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6128f560178361225a565b9150612900826128c1565b602082019050919050565b5f6020820190508181035f830152612922816128e9565b9050919050565b5f819050919050565b5f61294c61294761294284612929565b6127ea565b61221f565b9050919050565b61295c81612932565b82525050565b5f60c0820190506129755f8301896124cd565b6129826020830188612228565b61298f6040830187612953565b61299c6060830186612953565b6129a960808301856124cd565b6129b660a0830184612228565b979650505050505050565b5f815190506129cf81612358565b92915050565b5f805f606084860312156129ec576129eb6122fa565b5b5f6129f9868287016129c1565b9350506020612a0a868287016129c1565b9250506040612a1b868287016129c1565b9150509250925092565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612a7f60248361225a565b9150612a8a82612a25565b604082019050919050565b5f6020820190508181035f830152612aac81612a73565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612b0d60228361225a565b9150612b1882612ab3565b604082019050919050565b5f6020820190508181035f830152612b3a81612b01565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612ba98161232e565b92915050565b5f60208284031215612bc457612bc36122fa565b5b5f612bd184828501612b9b565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612c0c8161231d565b82525050565b5f612c1d8383612c03565b60208301905092915050565b5f602082019050919050565b5f612c3f82612bda565b612c498185612be4565b9350612c5483612bf4565b805f5b83811015612c84578151612c6b8882612c12565b9750612c7683612c29565b925050600181019050612c57565b5085935050505092915050565b5f60a082019050612ca45f830188612228565b612cb16020830187612953565b8181036040830152612cc38186612c35565b9050612cd260608301856124cd565b612cdf6080830184612228565b9695505050505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612d4360258361225a565b9150612d4e82612ce9565b604082019050919050565b5f6020820190508181035f830152612d7081612d37565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612dd160238361225a565b9150612ddc82612d77565b604082019050919050565b5f6020820190508181035f830152612dfe81612dc5565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612e5f60298361225a565b9150612e6a82612e05565b604082019050919050565b5f6020820190508181035f830152612e8c81612e53565b9050919050565b7f4578636565647320746865205f686967686573744275792e00000000000000005f82015250565b5f612ec760188361225a565b9150612ed282612e93565b602082019050919050565b5f6020820190508181035f830152612ef481612ebb565b9050919050565b5f612f058261221f565b9150612f108361221f565b9250828201905080821115612f2857612f27612603565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612f62601a8361225a565b9150612f6d82612f2e565b602082019050919050565b5f6020820190508181035f830152612f8f81612f56565b9050919050565b5f612fa08261221f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fd257612fd1612603565b5b600182019050919050565b7f4f6e6c7920342073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f61301160178361225a565b915061301c82612fdd565b602082019050919050565b5f6020820190508181035f83015261303e81613005565b9050919050565b5f61304f8261221f565b915061305a8361221f565b925082820390508181111561307257613071612603565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6130af8261221f565b91506130ba8361221f565b9250826130ca576130c9613078565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61312f60218361225a565b915061313a826130d5565b604082019050919050565b5f6020820190508181035f83015261315c81613123565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613197601b8361225a565b91506131a282613163565b602082019050919050565b5f6020820190508181035f8301526131c48161318b565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212206bf2db70dd811ea8fa9bc81df1ed54d2d7b6f8ab1f1d0e163db79c3d6111d48f64736f6c63430008180033

Deployed Bytecode Sourcemap

3924:10249:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13065:119;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7009:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7849:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13595:364;;;;;;;;;;;;;:::i;:::-;;13317:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7289:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8019:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7197:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13193:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12951:105;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7393:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3001:148;;;;;;;;;;;;;:::i;:::-;;5461:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12225:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11771:159;;;;;;;;;;;;;:::i;:::-;;13968:202;;;;;;;;;;;;;:::i;:::-;;5596:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4928:62;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2785:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12821:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7101:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7521:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12047:169;;;;;;;;;;;;;:::i;:::-;;5549:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5065:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12432:380;;;;;;;;;;;;;:::i;:::-;;4866:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7697:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5503:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5414:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5000:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13065:119;13125:7;13152:24;;13145:31;;13065:119;:::o;7009:83::-;7046:13;7079:5;;;;;;;;;;;;;;;;;7072:12;;7009:83;:::o;7849:161::-;7924:4;7941:39;7950:12;:10;:12::i;:::-;7964:7;7973:6;7941:8;:39::i;:::-;7998:4;7991:11;;7849:161;;;;:::o;13595:364::-;13668:17;;;;;;;;;;;13654:31;;:12;:10;:12::i;:::-;:31;;;13646:40;;;;;;13697:20;13718:24;13736:4;13718:9;:24::i;:::-;13697:45;;13769:1;13756:12;:14;13753:73;;;13784:30;13801:12;13784:16;:30::i;:::-;13753:73;13836:18;13855:21;13836:40;;13901:1;13890:10;:12;13887:65;;;13916:24;13929:10;13916:12;:24::i;:::-;13887:65;13635:324;;13595:364::o;13317:231::-;13390:4;2923:12;:10;:12::i;:::-;2913:22;;:6;;;;;;;;;;:22;;;2905:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13424:6:::1;13407:14;:23;;;;13459:6;13441:15;:24;;;;13494:1;13484:6;:11;;13476:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;13536:4;13529:11;;13317:231:::0;;;:::o;7289:95::-;7342:7;4679:1;4736:2;:13;;;;:::i;:::-;4722:11;:27;;;;:::i;:::-;7362:14;;7289:95;:::o;8019:313::-;8117:4;8134:36;8144:6;8152:9;8163:6;8134:9;:36::i;:::-;8181:121;8190:6;8198:12;:10;:12::i;:::-;8212:89;8250:6;8212:89;;;;;;;;;;;;;;;;;:11;:19;8224:6;8212:19;;;;;;;;;;;;;;;:33;8232:12;:10;:12::i;:::-;8212:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;8181:8;:121::i;:::-;8320:4;8313:11;;8019:313;;;;;:::o;7197:83::-;7238:5;4679:1;7256:16;;7197:83;:::o;13193:115::-;13251:7;13278:22;;13271:29;;13193:115;:::o;12951:105::-;13004:7;13031:17;;13024:24;;12951:105;:::o;7393:119::-;7459:7;7486:9;:18;7496:7;7486:18;;;;;;;;;;;;;;;;7479:25;;7393:119;;;:::o;3001:148::-;2923:12;:10;:12::i;:::-;2913:22;;:6;;;;;;;;;;:22;;;2905:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3108:1:::1;3071:40;;3092:6;::::0;::::1;;;;;;;;3071:40;;;;;;;;;;;;3139:1;3122:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3001:148::o:0;5461:32::-;;;;:::o;12225:195::-;12328:17;;;;;;;;;;;12312:33;;:12;:10;:12::i;:::-;:33;;;12304:42;;;;;;12364:10;12357:27;;;12385:17;;;;;;;;;;;12404:7;12357:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12225:195;;:::o;11771:159::-;2923:12;:10;:12::i;:::-;2913:22;;:6;;;;;;;;;;:22;;;2905:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4679:1:::1;4736:2;:13;;;;:::i;:::-;4722:11;:27;;;;:::i;:::-;11821:11;:21;;;;4679:1;4736:2;:13;;;;:::i;:::-;4722:11;:27;;;;:::i;:::-;11853:18;:26;;;;11895:27;4679:1;4736:2;:13;;;;:::i;:::-;4722:11;:27;;;;:::i;:::-;11895;;;;;;:::i;:::-;;;;;;;;11771:159::o:0;13968:202::-;14040:17;;;;;;;;;;;14026:31;;:12;:10;:12::i;:::-;:31;;;14018:40;;;;;;14069:26;14098:21;14069:50;;14130:32;14143:18;14130:12;:32::i;:::-;14007:163;13968:202::o;5596:51::-;;;;;;;;;;;;;;;;;:::o;4928:62::-;;;;:::o;2785:79::-;2823:7;2850:6;;;;;;;;;;;2843:13;;2785:79;:::o;12821:121::-;12882:7;12909:25;;12902:32;;12821:121;:::o;7101:87::-;7140:13;7173:7;;;;;;;;;;;;;;;;;7166:14;;7101:87;:::o;7521:167::-;7599:4;7616:42;7626:12;:10;:12::i;:::-;7640:9;7651:6;7616:9;:42::i;:::-;7676:4;7669:11;;7521:167;;;;:::o;12047:169::-;12121:17;;;;;;;;;;;12105:33;;:12;:10;:12::i;:::-;:33;;;12097:42;;;;;;12158:17;;;;;;;;;;;12150:35;;:58;12186:21;12150:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12047:169::o;5549:37::-;;;;:::o;5065:58::-;;;;:::o;12432:380::-;2923:12;:10;:12::i;:::-;2913:22;;:6;;;;;;;;;;:22;;;2905:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12497:11:::1;;;;;;;;;;;12496:12;12488:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;12546:58;12563:4;12578:15;;;;;;;;;;;4679:1;4736:2;:13;;;;:::i;:::-;4722:11;:27;;;;:::i;:::-;12546:8;:58::i;:::-;12615:15;;;;;;;;;;;:31;;;12654:21;12685:4;12691:24;12709:4;12691:9;:24::i;:::-;12716:1;12718::::0;12720:7:::1;:5;:7::i;:::-;12728:15;12615:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12771:4;12755:13;;:20;;;;;;;;;;;;;;;;;;12800:4;12786:11;;:18;;;;;;;;;;;;;;;;;;12432:380::o:0;4866:55::-;;;;:::o;7697:143::-;7778:7;7805:11;:18;7817:5;7805:18;;;;;;;;;;;;;;;:27;7824:7;7805:27;;;;;;;;;;;;;;;;7798:34;;7697:143;;;;:::o;5503:39::-;;;;:::o;5414:40::-;;;;:::o;5000:58::-;;;;:::o;528:98::-;581:7;608:10;601:17;;528:98;:::o;8341:335::-;8451:1;8434:19;;:5;:19;;;8426:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8532:1;8513:21;;:7;:21;;;8505:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8614:6;8584:11;:18;8596:5;8584:18;;;;;;;;;;;;;;;:27;8603:7;8584:27;;;;;;;;;;;;;;;:36;;;;8652:7;8636:32;;8645:5;8636:32;;;8661:6;8636:32;;;;;;:::i;:::-;;;;;;;;8341:335;;;:::o;11279:483::-;6234:4;6221:10;;:17;;;;;;;;;;;;;;;;;;11357:21:::1;11395:1;11381:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11357:40;;11426:4;11408;11413:1;11408:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11452:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11442:4;11447:1;11442:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11485:62;11502:4;11517:15;;;;;;;;;;;11535:11;11485:8;:62::i;:::-;11558:15;;;;;;;;;;;:66;;;11639:11;11665:1;11681:4;11708;11728:15;11558:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11346:416;6274:5:::0;6261:10;;:18;;;;;;;;;;;;;;;;;;11279:483;:::o;11939:99::-;11996:17;;;;;;;;;;;:26;;:34;12023:6;11996:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11939:99;:::o;8685:2478::-;8789:1;8773:18;;:4;:18;;;8765:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8866:1;8852:16;;:2;:16;;;8844:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8936:1;8927:6;:10;8919:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8994:17;9036:7;:5;:7::i;:::-;9028:15;;:4;:15;;;;:32;;;;;9053:7;:5;:7::i;:::-;9047:13;;:2;:13;;;;9028:32;9024:1782;;;9099:1;9083:14;;:17;9080:160;;9132:92;9220:3;9132:83;9159:19;;9144:14;;:34;9143:71;;9195:19;;9143:71;;;9180:14;;9143:71;9132:6;:10;;:83;;;;:::i;:::-;:87;;:92;;;;:::i;:::-;9120:104;;9080:160;9272:1;9257:14;;:16;9254:101;;;9305:34;9335:3;9305:25;9316:13;;9305:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;9293:46;;9254:101;9384:13;;;;;;;;;;;9376:21;;:4;:21;;;:55;;;;;9415:15;;;;;;;;;;;9401:30;;:2;:30;;;;9376:55;:79;;;;;9437:14;:18;9452:2;9437:18;;;;;;;;;;;;;;;;;;;;;;;;;9435:20;9376:79;9372:439;;;9495:11;;9485:6;:21;;9477:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;9588:18;;9578:6;9562:13;9572:2;9562:9;:13::i;:::-;:22;;;;:::i;:::-;:44;;9554:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;9668:92;9756:3;9668:83;9695:19;;9680:14;;:34;9679:71;;9731:19;;9679:71;;;9716:14;;9679:71;9668:6;:10;;:83;;;;:::i;:::-;:87;;:92;;;;:::i;:::-;9656:104;;9779:14;;:16;;;;;;;;;:::i;:::-;;;;;;9372:439;9837:13;;;;;;;;;;;9831:19;;:2;:19;;;:43;;;;;9869:4;9854:20;;:4;:20;;;;9831:43;9828:185;;;9907:90;9993:3;9907:81;9934:20;;9919:14;;:35;9918:69;;9972:15;;9918:69;;;9956:15;;9918:69;9907:6;:10;;:81;;;;:::i;:::-;:85;;:90;;;;:::i;:::-;9895:102;;9828:185;10030:28;10061:24;10079:4;10061:9;:24::i;:::-;10030:55;;10105:10;;;;;;;;;;;10104:11;:34;;;;;10125:13;;;;;;;;;;;10119:19;;:2;:19;;;10104:34;:51;;;;;10142:13;;;;;;;;;;;10104:51;:94;;;;;10182:16;;10159:20;:39;10104:94;:131;;;;;10219:16;;10202:14;;:33;10104:131;10100:695;;;10275:14;;10260:12;:29;10256:91;;;10326:1;10314:9;:13;;;;10256:91;10385:1;10373:9;;:13;10365:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;10433:75;10450:57;10454:6;10462:44;10466:20;10488:17;;10462:3;:44::i;:::-;10450:3;:57::i;:::-;10433:16;:75::i;:::-;10527:26;10556:21;10527:50;;10621:1;10600:18;:22;10596:106;;;10647:35;10660:21;10647:12;:35::i;:::-;10596:106;10720:9;;:11;;;;;;;;;:::i;:::-;;;;;;10767:12;10750:14;:29;;;;10237:558;10100:695;9062:1744;9024:1782;10832:1;10822:9;:11;10819:161;;;10872:39;10901:9;10872;:24;10890:4;10872:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10847:9;:24;10865:4;10847:24;;;;;;;;;;;;;;;:64;;;;10952:4;10929:39;;10938:4;10929:39;;;10958:9;10929:39;;;;;;:::i;:::-;;;;;;;;10819:161;11006:27;11026:6;11006:9;:15;11016:4;11006:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;10990:9;:15;11000:4;10990:15;;;;;;;;;;;;;;;:43;;;;11058:40;11076:21;11087:9;11076:6;:10;;:21;;;;:::i;:::-;11058:9;:13;11068:2;11058:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;11044:9;:13;11054:2;11044:13;;;;;;;;;;;;;;;:54;;;;11129:2;11114:41;;11123:4;11114:41;;;11133:21;11144:9;11133:6;:10;;:21;;;;:::i;:::-;11114:41;;;;;;:::i;:::-;;;;;;;;8754:2409;8685:2478;;;:::o;1670:190::-;1756:7;1789:1;1784;:6;;1792:12;1776:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1816:9;1832:1;1828;:5;;;;:::i;:::-;1816:17;;1851:1;1844:8;;;1670:190;;;;;:::o;1869:246::-;1927:7;1956:1;1951;:6;1947:47;;1981:1;1974:8;;;;1947:47;2004:9;2020:1;2016;:5;;;;:::i;:::-;2004:17;;2049:1;2044;2040;:5;;;;:::i;:::-;:10;2032:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2106:1;2099:8;;;1869:246;;;;;:::o;2124:132::-;2182:7;2209:39;2213:1;2216;2209:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2202:46;;2124:132;;;;:::o;11172:98::-;11229:7;11256:1;11254;:3;11253:9;;11261:1;11253:9;;;11259:1;11253:9;11246:16;;11172:98;;;;:::o;1337:179::-;1395:7;1415:9;1431:1;1427;:5;;;;:::i;:::-;1415:17;;1456:1;1451;:6;;1443:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1507:1;1500:8;;;1337:179;;;;:::o;1525:136::-;1583:7;1610:43;1614:1;1617;1610:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1603:50;;1525:136;;;;:::o;2265:189::-;2351:7;2383:1;2379;:5;2386:12;2371:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2410:9;2426:1;2422;:5;;;;:::i;:::-;2410:17;;2445:1;2438:8;;;2265:189;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:329::-;3857:6;3906:2;3894:9;3885:7;3881:23;3877:32;3874:119;;;3912:79;;:::i;:::-;3874:119;4032:1;4057:53;4102:7;4093:6;4082:9;4078:22;4057:53;:::i;:::-;4047:63;;4003:117;3798:329;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:329::-;5247:6;5296:2;5284:9;5275:7;5271:23;5267:32;5264:119;;;5302:79;;:::i;:::-;5264:119;5422:1;5447:53;5492:7;5483:6;5472:9;5468:22;5447:53;:::i;:::-;5437:63;;5393:117;5188:329;;;;:::o;5523:118::-;5610:24;5628:5;5610:24;:::i;:::-;5605:3;5598:37;5523:118;;:::o;5647:222::-;5740:4;5778:2;5767:9;5763:18;5755:26;;5791:71;5859:1;5848:9;5844:17;5835:6;5791:71;:::i;:::-;5647:222;;;;:::o;5875:474::-;5943:6;5951;6000:2;5988:9;5979:7;5975:23;5971:32;5968:119;;;6006:79;;:::i;:::-;5968:119;6126:1;6151:53;6196:7;6187:6;6176:9;6172:22;6151:53;:::i;:::-;6141:63;;6097:117;6253:2;6279:53;6324:7;6315:6;6304:9;6300:22;6279:53;:::i;:::-;6269:63;;6224:118;5875:474;;;;;:::o;6355:182::-;6495:34;6491:1;6483:6;6479:14;6472:58;6355:182;:::o;6543:366::-;6685:3;6706:67;6770:2;6765:3;6706:67;:::i;:::-;6699:74;;6782:93;6871:3;6782:93;:::i;:::-;6900:2;6895:3;6891:12;6884:19;;6543:366;;;:::o;6915:419::-;7081:4;7119:2;7108:9;7104:18;7096:26;;7168:9;7162:4;7158:20;7154:1;7143:9;7139:17;7132:47;7196:131;7322:4;7196:131;:::i;:::-;7188:139;;6915:419;;;:::o;7340:169::-;7480:21;7476:1;7468:6;7464:14;7457:45;7340:169;:::o;7515:366::-;7657:3;7678:67;7742:2;7737:3;7678:67;:::i;:::-;7671:74;;7754:93;7843:3;7754:93;:::i;:::-;7872:2;7867:3;7863:12;7856:19;;7515:366;;;:::o;7887:419::-;8053:4;8091:2;8080:9;8076:18;8068:26;;8140:9;8134:4;8130:20;8126:1;8115:9;8111:17;8104:47;8168:131;8294:4;8168:131;:::i;:::-;8160:139;;7887:419;;;:::o;8312:180::-;8360:77;8357:1;8350:88;8457:4;8454:1;8447:15;8481:4;8478:1;8471:15;8498:102;8540:8;8587:5;8584:1;8580:13;8559:34;;8498:102;;;:::o;8606:848::-;8667:5;8674:4;8698:6;8689:15;;8722:5;8713:14;;8736:712;8757:1;8747:8;8744:15;8736:712;;;8852:4;8847:3;8843:14;8837:4;8834:24;8831:50;;;8861:18;;:::i;:::-;8831:50;8911:1;8901:8;8897:16;8894:451;;;9326:4;9319:5;9315:16;9306:25;;8894:451;9376:4;9370;9366:15;9358:23;;9406:32;9429:8;9406:32;:::i;:::-;9394:44;;8736:712;;;8606:848;;;;;;;:::o;9460:1073::-;9514:5;9705:8;9695:40;;9726:1;9717:10;;9728:5;;9695:40;9754:4;9744:36;;9771:1;9762:10;;9773:5;;9744:36;9840:4;9888:1;9883:27;;;;9924:1;9919:191;;;;9833:277;;9883:27;9901:1;9892:10;;9903:5;;;9919:191;9964:3;9954:8;9951:17;9948:43;;;9971:18;;:::i;:::-;9948:43;10020:8;10017:1;10013:16;10004:25;;10055:3;10048:5;10045:14;10042:40;;;10062:18;;:::i;:::-;10042:40;10095:5;;;9833:277;;10219:2;10209:8;10206:16;10200:3;10194:4;10191:13;10187:36;10169:2;10159:8;10156:16;10151:2;10145:4;10142:12;10138:35;10122:111;10119:246;;;10275:8;10269:4;10265:19;10256:28;;10310:3;10303:5;10300:14;10297:40;;;10317:18;;:::i;:::-;10297:40;10350:5;;10119:246;10390:42;10428:3;10418:8;10412:4;10409:1;10390:42;:::i;:::-;10375:57;;;;10464:4;10459:3;10455:14;10448:5;10445:25;10442:51;;;10473:18;;:::i;:::-;10442:51;10522:4;10515:5;10511:16;10502:25;;9460:1073;;;;;;:::o;10539:281::-;10597:5;10621:23;10639:4;10621:23;:::i;:::-;10613:31;;10665:25;10681:8;10665:25;:::i;:::-;10653:37;;10709:104;10746:66;10736:8;10730:4;10709:104;:::i;:::-;10700:113;;10539:281;;;;:::o;10826:410::-;10866:7;10889:20;10907:1;10889:20;:::i;:::-;10884:25;;10923:20;10941:1;10923:20;:::i;:::-;10918:25;;10978:1;10975;10971:9;11000:30;11018:11;11000:30;:::i;:::-;10989:41;;11179:1;11170:7;11166:15;11163:1;11160:22;11140:1;11133:9;11113:83;11090:139;;11209:18;;:::i;:::-;11090:139;10874:362;10826:410;;;;:::o;11242:60::-;11270:3;11291:5;11284:12;;11242:60;;;:::o;11308:142::-;11358:9;11391:53;11409:34;11418:24;11436:5;11418:24;:::i;:::-;11409:34;:::i;:::-;11391:53;:::i;:::-;11378:66;;11308:142;;;:::o;11456:126::-;11506:9;11539:37;11570:5;11539:37;:::i;:::-;11526:50;;11456:126;;;:::o;11588:134::-;11646:9;11679:37;11710:5;11679:37;:::i;:::-;11666:50;;11588:134;;;:::o;11728:147::-;11823:45;11862:5;11823:45;:::i;:::-;11818:3;11811:58;11728:147;;:::o;11881:348::-;12010:4;12048:2;12037:9;12033:18;12025:26;;12061:79;12137:1;12126:9;12122:17;12113:6;12061:79;:::i;:::-;12150:72;12218:2;12207:9;12203:18;12194:6;12150:72;:::i;:::-;11881:348;;;;;:::o;12235:116::-;12305:21;12320:5;12305:21;:::i;:::-;12298:5;12295:32;12285:60;;12341:1;12338;12331:12;12285:60;12235:116;:::o;12357:137::-;12411:5;12442:6;12436:13;12427:22;;12458:30;12482:5;12458:30;:::i;:::-;12357:137;;;;:::o;12500:345::-;12567:6;12616:2;12604:9;12595:7;12591:23;12587:32;12584:119;;;12622:79;;:::i;:::-;12584:119;12742:1;12767:61;12820:7;12811:6;12800:9;12796:22;12767:61;:::i;:::-;12757:71;;12713:125;12500:345;;;;:::o;12851:173::-;12991:25;12987:1;12979:6;12975:14;12968:49;12851:173;:::o;13030:366::-;13172:3;13193:67;13257:2;13252:3;13193:67;:::i;:::-;13186:74;;13269:93;13358:3;13269:93;:::i;:::-;13387:2;13382:3;13378:12;13371:19;;13030:366;;;:::o;13402:419::-;13568:4;13606:2;13595:9;13591:18;13583:26;;13655:9;13649:4;13645:20;13641:1;13630:9;13626:17;13619:47;13683:131;13809:4;13683:131;:::i;:::-;13675:139;;13402:419;;;:::o;13827:85::-;13872:7;13901:5;13890:16;;13827:85;;;:::o;13918:158::-;13976:9;14009:61;14027:42;14036:32;14062:5;14036:32;:::i;:::-;14027:42;:::i;:::-;14009:61;:::i;:::-;13996:74;;13918:158;;;:::o;14082:147::-;14177:45;14216:5;14177:45;:::i;:::-;14172:3;14165:58;14082:147;;:::o;14235:807::-;14484:4;14522:3;14511:9;14507:19;14499:27;;14536:71;14604:1;14593:9;14589:17;14580:6;14536:71;:::i;:::-;14617:72;14685:2;14674:9;14670:18;14661:6;14617:72;:::i;:::-;14699:80;14775:2;14764:9;14760:18;14751:6;14699:80;:::i;:::-;14789;14865:2;14854:9;14850:18;14841:6;14789:80;:::i;:::-;14879:73;14947:3;14936:9;14932:19;14923:6;14879:73;:::i;:::-;14962;15030:3;15019:9;15015:19;15006:6;14962:73;:::i;:::-;14235:807;;;;;;;;;:::o;15048:143::-;15105:5;15136:6;15130:13;15121:22;;15152:33;15179:5;15152:33;:::i;:::-;15048:143;;;;:::o;15197:663::-;15285:6;15293;15301;15350:2;15338:9;15329:7;15325:23;15321:32;15318:119;;;15356:79;;:::i;:::-;15318:119;15476:1;15501:64;15557:7;15548:6;15537:9;15533:22;15501:64;:::i;:::-;15491:74;;15447:128;15614:2;15640:64;15696:7;15687:6;15676:9;15672:22;15640:64;:::i;:::-;15630:74;;15585:129;15753:2;15779:64;15835:7;15826:6;15815:9;15811:22;15779:64;:::i;:::-;15769:74;;15724:129;15197:663;;;;;:::o;15866:223::-;16006:34;16002:1;15994:6;15990:14;15983:58;16075:6;16070:2;16062:6;16058:15;16051:31;15866:223;:::o;16095:366::-;16237:3;16258:67;16322:2;16317:3;16258:67;:::i;:::-;16251:74;;16334:93;16423:3;16334:93;:::i;:::-;16452:2;16447:3;16443:12;16436:19;;16095:366;;;:::o;16467:419::-;16633:4;16671:2;16660:9;16656:18;16648:26;;16720:9;16714:4;16710:20;16706:1;16695:9;16691:17;16684:47;16748:131;16874:4;16748:131;:::i;:::-;16740:139;;16467:419;;;:::o;16892:221::-;17032:34;17028:1;17020:6;17016:14;17009:58;17101:4;17096:2;17088:6;17084:15;17077:29;16892:221;:::o;17119:366::-;17261:3;17282:67;17346:2;17341:3;17282:67;:::i;:::-;17275:74;;17358:93;17447:3;17358:93;:::i;:::-;17476:2;17471:3;17467:12;17460:19;;17119:366;;;:::o;17491:419::-;17657:4;17695:2;17684:9;17680:18;17672:26;;17744:9;17738:4;17734:20;17730:1;17719:9;17715:17;17708:47;17772:131;17898:4;17772:131;:::i;:::-;17764:139;;17491:419;;;:::o;17916:180::-;17964:77;17961:1;17954:88;18061:4;18058:1;18051:15;18085:4;18082:1;18075:15;18102:180;18150:77;18147:1;18140:88;18247:4;18244:1;18237:15;18271:4;18268:1;18261:15;18288:143;18345:5;18376:6;18370:13;18361:22;;18392:33;18419:5;18392:33;:::i;:::-;18288:143;;;;:::o;18437:351::-;18507:6;18556:2;18544:9;18535:7;18531:23;18527:32;18524:119;;;18562:79;;:::i;:::-;18524:119;18682:1;18707:64;18763:7;18754:6;18743:9;18739:22;18707:64;:::i;:::-;18697:74;;18653:128;18437:351;;;;:::o;18794:114::-;18861:6;18895:5;18889:12;18879:22;;18794:114;;;:::o;18914:184::-;19013:11;19047:6;19042:3;19035:19;19087:4;19082:3;19078:14;19063:29;;18914:184;;;;:::o;19104:132::-;19171:4;19194:3;19186:11;;19224:4;19219:3;19215:14;19207:22;;19104:132;;;:::o;19242:108::-;19319:24;19337:5;19319:24;:::i;:::-;19314:3;19307:37;19242:108;;:::o;19356:179::-;19425:10;19446:46;19488:3;19480:6;19446:46;:::i;:::-;19524:4;19519:3;19515:14;19501:28;;19356:179;;;;:::o;19541:113::-;19611:4;19643;19638:3;19634:14;19626:22;;19541:113;;;:::o;19690:732::-;19809:3;19838:54;19886:5;19838:54;:::i;:::-;19908:86;19987:6;19982:3;19908:86;:::i;:::-;19901:93;;20018:56;20068:5;20018:56;:::i;:::-;20097:7;20128:1;20113:284;20138:6;20135:1;20132:13;20113:284;;;20214:6;20208:13;20241:63;20300:3;20285:13;20241:63;:::i;:::-;20234:70;;20327:60;20380:6;20327:60;:::i;:::-;20317:70;;20173:224;20160:1;20157;20153:9;20148:14;;20113:284;;;20117:14;20413:3;20406:10;;19814:608;;;19690:732;;;;:::o;20428:831::-;20691:4;20729:3;20718:9;20714:19;20706:27;;20743:71;20811:1;20800:9;20796:17;20787:6;20743:71;:::i;:::-;20824:80;20900:2;20889:9;20885:18;20876:6;20824:80;:::i;:::-;20951:9;20945:4;20941:20;20936:2;20925:9;20921:18;20914:48;20979:108;21082:4;21073:6;20979:108;:::i;:::-;20971:116;;21097:72;21165:2;21154:9;21150:18;21141:6;21097:72;:::i;:::-;21179:73;21247:3;21236:9;21232:19;21223:6;21179:73;:::i;:::-;20428:831;;;;;;;;:::o;21265:224::-;21405:34;21401:1;21393:6;21389:14;21382:58;21474:7;21469:2;21461:6;21457:15;21450:32;21265:224;:::o;21495:366::-;21637:3;21658:67;21722:2;21717:3;21658:67;:::i;:::-;21651:74;;21734:93;21823:3;21734:93;:::i;:::-;21852:2;21847:3;21843:12;21836:19;;21495:366;;;:::o;21867:419::-;22033:4;22071:2;22060:9;22056:18;22048:26;;22120:9;22114:4;22110:20;22106:1;22095:9;22091:17;22084:47;22148:131;22274:4;22148:131;:::i;:::-;22140:139;;21867:419;;;:::o;22292:222::-;22432:34;22428:1;22420:6;22416:14;22409:58;22501:5;22496:2;22488:6;22484:15;22477:30;22292:222;:::o;22520:366::-;22662:3;22683:67;22747:2;22742:3;22683:67;:::i;:::-;22676:74;;22759:93;22848:3;22759:93;:::i;:::-;22877:2;22872:3;22868:12;22861:19;;22520:366;;;:::o;22892:419::-;23058:4;23096:2;23085:9;23081:18;23073:26;;23145:9;23139:4;23135:20;23131:1;23120:9;23116:17;23109:47;23173:131;23299:4;23173:131;:::i;:::-;23165:139;;22892:419;;;:::o;23317:228::-;23457:34;23453:1;23445:6;23441:14;23434:58;23526:11;23521:2;23513:6;23509:15;23502:36;23317:228;:::o;23551:366::-;23693:3;23714:67;23778:2;23773:3;23714:67;:::i;:::-;23707:74;;23790:93;23879:3;23790:93;:::i;:::-;23908:2;23903:3;23899:12;23892:19;;23551:366;;;:::o;23923:419::-;24089:4;24127:2;24116:9;24112:18;24104:26;;24176:9;24170:4;24166:20;24162:1;24151:9;24147:17;24140:47;24204:131;24330:4;24204:131;:::i;:::-;24196:139;;23923:419;;;:::o;24348:174::-;24488:26;24484:1;24476:6;24472:14;24465:50;24348:174;:::o;24528:366::-;24670:3;24691:67;24755:2;24750:3;24691:67;:::i;:::-;24684:74;;24767:93;24856:3;24767:93;:::i;:::-;24885:2;24880:3;24876:12;24869:19;;24528:366;;;:::o;24900:419::-;25066:4;25104:2;25093:9;25089:18;25081:26;;25153:9;25147:4;25143:20;25139:1;25128:9;25124:17;25117:47;25181:131;25307:4;25181:131;:::i;:::-;25173:139;;24900:419;;;:::o;25325:191::-;25365:3;25384:20;25402:1;25384:20;:::i;:::-;25379:25;;25418:20;25436:1;25418:20;:::i;:::-;25413:25;;25461:1;25458;25454:9;25447:16;;25482:3;25479:1;25476:10;25473:36;;;25489:18;;:::i;:::-;25473:36;25325:191;;;;:::o;25522:176::-;25662:28;25658:1;25650:6;25646:14;25639:52;25522:176;:::o;25704:366::-;25846:3;25867:67;25931:2;25926:3;25867:67;:::i;:::-;25860:74;;25943:93;26032:3;25943:93;:::i;:::-;26061:2;26056:3;26052:12;26045:19;;25704:366;;;:::o;26076:419::-;26242:4;26280:2;26269:9;26265:18;26257:26;;26329:9;26323:4;26319:20;26315:1;26304:9;26300:17;26293:47;26357:131;26483:4;26357:131;:::i;:::-;26349:139;;26076:419;;;:::o;26501:233::-;26540:3;26563:24;26581:5;26563:24;:::i;:::-;26554:33;;26609:66;26602:5;26599:77;26596:103;;26679:18;;:::i;:::-;26596:103;26726:1;26719:5;26715:13;26708:20;;26501:233;;;:::o;26740:173::-;26880:25;26876:1;26868:6;26864:14;26857:49;26740:173;:::o;26919:366::-;27061:3;27082:67;27146:2;27141:3;27082:67;:::i;:::-;27075:74;;27158:93;27247:3;27158:93;:::i;:::-;27276:2;27271:3;27267:12;27260:19;;26919:366;;;:::o;27291:419::-;27457:4;27495:2;27484:9;27480:18;27472:26;;27544:9;27538:4;27534:20;27530:1;27519:9;27515:17;27508:47;27572:131;27698:4;27572:131;:::i;:::-;27564:139;;27291:419;;;:::o;27716:194::-;27756:4;27776:20;27794:1;27776:20;:::i;:::-;27771:25;;27810:20;27828:1;27810:20;:::i;:::-;27805:25;;27854:1;27851;27847:9;27839:17;;27878:1;27872:4;27869:11;27866:37;;;27883:18;;:::i;:::-;27866:37;27716:194;;;;:::o;27916:180::-;27964:77;27961:1;27954:88;28061:4;28058:1;28051:15;28085:4;28082:1;28075:15;28102:185;28142:1;28159:20;28177:1;28159:20;:::i;:::-;28154:25;;28193:20;28211:1;28193:20;:::i;:::-;28188:25;;28232:1;28222:35;;28237:18;;:::i;:::-;28222:35;28279:1;28276;28272:9;28267:14;;28102:185;;;;:::o;28293:220::-;28433:34;28429:1;28421:6;28417:14;28410:58;28502:3;28497:2;28489:6;28485:15;28478:28;28293:220;:::o;28519:366::-;28661:3;28682:67;28746:2;28741:3;28682:67;:::i;:::-;28675:74;;28758:93;28847:3;28758:93;:::i;:::-;28876:2;28871:3;28867:12;28860:19;;28519:366;;;:::o;28891:419::-;29057:4;29095:2;29084:9;29080:18;29072:26;;29144:9;29138:4;29134:20;29130:1;29119:9;29115:17;29108:47;29172:131;29298:4;29172:131;:::i;:::-;29164:139;;28891:419;;;:::o;29316:177::-;29456:29;29452:1;29444:6;29440:14;29433:53;29316:177;:::o;29499:366::-;29641:3;29662:67;29726:2;29721:3;29662:67;:::i;:::-;29655:74;;29738:93;29827:3;29738:93;:::i;:::-;29856:2;29851:3;29847:12;29840:19;;29499:366;;;:::o;29871:419::-;30037:4;30075:2;30064:9;30060:18;30052:26;;30124:9;30118:4;30114:20;30110:1;30099:9;30095:17;30088:47;30152:131;30278:4;30152:131;:::i;:::-;30144:139;;29871:419;;;:::o

Swarm Source

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