ETH Price: $2,904.52 (-4.38%)
Gas: 5 Gwei

Token

Syrex (SRX)
 

Overview

Max Total Supply

100,000,000 SRX

Holders

654

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
13,047 SRX

Value
$0.00
0x1793a9d2752a0e65ea66e1d5f536d59717d622a4
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:
SYREX

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-12-09
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.10;

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

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

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
}

contract SYREX is Context, IERC20, Ownable {
    using SafeMath for uint256;
    
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isBot;

    uint256 private constant _MAX = ~uint256(0);
    uint256 private constant _tTotal = 1e8 * 10**9;
    uint256 private _rTotal = (_MAX - (_MAX % _tTotal));
    uint256 private _tFeeTotal;
    
    string private constant _name = "Syrex";
    string private constant _symbol = "SRX";
    
    uint private constant _decimals = 9;
    uint256 private _teamFee = 10;
    uint256 private _previousteamFee = _teamFee;

    address payable private _feeAddress;

    // Uniswap Pair
    IUniswapV2Router02 private _uniswapV2Router;
    address private _uniswapV2Pair;

    bool private _initialized = false;
    bool private _noTaxMode = false;
    bool private _inSwap = false;
    bool private _tradingOpen = false;
    uint256 private _launchTime;

    modifier lockTheSwap() {
        _inSwap = true;
        _;
        _inSwap = false;
    }

    modifier handleFees(bool takeFee) {
        if (!takeFee) _removeAllFees();
        _;
        if (!takeFee) _restoreAllFees();
    }
    
    constructor () {
        _rOwned[_msgSender()] = _rTotal;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[payable(0x000000000000000000000000000000000000dEaD)] = true;

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

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

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

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

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

    function balanceOf(address account) public view override returns (uint256) {
        return _tokenFromReflection(_rOwned[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 _tokenFromReflection(uint256 rAmount) private view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    function _removeAllFees() private {
        require(_teamFee > 0);

        _previousteamFee = _teamFee;
        _teamFee = 0;
    }
    
    function _restoreAllFees() private {
        _teamFee = _previousteamFee;
    }

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

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    
    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!_isBot[from], "Your address has been marked as a bot, please contact staff to appeal your case.");
        
        bool takeFee = false;
        if (
            !_isExcludedFromFee[from] 
            && !_isExcludedFromFee[to] 
            && !_noTaxMode 
            && (from == _uniswapV2Pair || to == _uniswapV2Pair)
        ) {
            require(_tradingOpen, 'Trading has not yet been opened.');
            takeFee = true;

            if (block.timestamp == _launchTime) _isBot[to] = true;

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!_inSwap && from != _uniswapV2Pair) {
                if (contractTokenBalance > 0) {
                    if (contractTokenBalance > balanceOf(_uniswapV2Pair).mul(5).div(100))
                        contractTokenBalance = balanceOf(_uniswapV2Pair).mul(5).div(100);
                    
                    _swapTokensForEth(contractTokenBalance);
                }
            }
        }
                
        _tokenTransfer(from, to, amount, takeFee);
    }

    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 _tokenTransfer(address sender, address recipient, uint256 tAmount, bool takeFee) private handleFees(takeFee) {
        (uint256 rAmount, uint256 rTransferAmount, uint256 tTransferAmount, uint256 tTeam) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 

        _takeTeam(tTeam);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tTeam) = _getTValues(tAmount, _teamFee);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount) = _getRValues(tAmount, tTeam, currentRate);
        return (rAmount, rTransferAmount, tTransferAmount, tTeam);
    }

    function _getTValues(uint256 tAmount, uint256 TeamFee) private pure returns (uint256, uint256) {
        uint256 tTeam = tAmount.mul(TeamFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tTeam);
        return (tTransferAmount, tTeam);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _getRValues(uint256 tAmount, uint256 tTeam, uint256 currentRate) private pure returns (uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rTeam);
        return (rAmount, rTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate =  _getRate();
        uint256 rTeam = tTeam.mul(currentRate);

        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }
    
    function initContract(address payable feeAddress) external onlyOwner() {
        require(!_initialized,"Contract has already been initialized");
        IUniswapV2Router02 uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());

        _uniswapV2Router = uniswapV2Router;

        _feeAddress = feeAddress;
        _isExcludedFromFee[_feeAddress] = true;

        _initialized = true;
    }

    function openTrading() external onlyOwner() {
        require(_initialized, "Contract must be initialized first");
        _tradingOpen = true;
        _launchTime = block.timestamp;
    }

    function setFeeWallet(address payable feeWalletAddress) external onlyOwner() {
        _isExcludedFromFee[_feeAddress] = false;

        _feeAddress = feeWalletAddress;
        _isExcludedFromFee[_feeAddress] = true;
    }

    function excludeFromFee(address payable ad) external onlyOwner() {
        _isExcludedFromFee[ad] = true;
    }
    
    function includeToFee(address payable ad) external onlyOwner() {
        _isExcludedFromFee[ad] = false;
    }
    
    function setNoTaxMode(bool onoff) external onlyOwner() {
        _noTaxMode = onoff;
    }
    
    function setTeamFee(uint256 fee) external onlyOwner() {
        require(fee <= 10, "Team fee cannot be larger than 10%");
        _teamFee = fee;
    }
    
    function setBots(address[] memory bots_) public onlyOwner() {
        for (uint i = 0; i < bots_.length; i++) {
            if (bots_[i] != _uniswapV2Pair && bots_[i] != address(_uniswapV2Router)) {
                _isBot[bots_[i]] = true;
            }
        }
    }
    
    function delBots(address[] memory bots_) public onlyOwner() {
        for (uint i = 0; i < bots_.length; i++) {
            _isBot[bots_[i]] = false;
        }
    }
    
    function isBot(address ad) public view returns (bool) {
        return _isBot[ad];
    }

    function isExcludedFromFee(address ad) public view returns (bool) {
        return _isExcludedFromFee[ad];
    }
    
    function swapFeesManual() external onlyOwner() {
        uint256 contractBalance = balanceOf(address(this));
        _swapTokensForEth(contractBalance);
    }
    
    function withdrawFees() external onlyOwner() {
        uint256 contractETHBalance = address(this).balance;
        _feeAddress.transfer(contractETHBalance);
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"ad","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"ad","type":"address"}],"name":"includeToFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"feeAddress","type":"address"}],"name":"initContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"ad","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"ad","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"feeWalletAddress","type":"address"}],"name":"setFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setNoTaxMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setTeamFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapFeesManual","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405267016345785d8a00006000196200001c91906200039c565b6000196200002b919062000403565b600655600a6008556008546009556000600c60146101000a81548160ff0219169083151502179055506000600c60156101000a81548160ff0219169083151502179055506000600c60166101000a81548160ff0219169083151502179055506000600c60176101000a81548160ff021916908315150217905550348015620000b257600080fd5b50620000d3620000c76200026e60201b60201c565b6200027660201b60201c565b60065460016000620000ea6200026e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600460006200013e6200033a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016004600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620001f96200026e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a00006040516200026091906200044f565b60405180910390a36200046c565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620003a98262000363565b9150620003b68362000363565b925082620003c957620003c86200036d565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620004108262000363565b91506200041d8362000363565b925082821015620004335762000432620003d4565b5b828203905092915050565b620004498162000363565b82525050565b60006020820190506200046660008301846200043e565b92915050565b613b58806200047c6000396000f3fe60806040526004361061016a5760003560e01c806370a08231116100d1578063b515566a1161008a578063cf9d4afa11610064578063cf9d4afa1461050d578063dd62ed3e14610536578063e6ec64ec14610573578063f2fde38b1461059c57610171565b8063b515566a146104a4578063c9567bf9146104cd578063cf0848f7146104e457610171565b806370a0823114610394578063715018a6146103d15780638da5cb5b146103e857806390d49b9d1461041357806395d89b411461043c578063a9059cbb1461046757610171565b806331c2d8471161012357806331c2d847146102885780633bbac579146102b1578063437823ec146102ee578063476343ee146103175780634b740b161461032e5780635342acb41461035757610171565b806306d8ea6b1461017657806306fdde031461018d578063095ea7b3146101b857806318160ddd146101f557806323b872dd14610220578063313ce5671461025d57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105c5565b005b34801561019957600080fd5b506101a261065a565b6040516101af9190612a2f565b60405180910390f35b3480156101c457600080fd5b506101df60048036038101906101da9190612af9565b610697565b6040516101ec9190612b54565b60405180910390f35b34801561020157600080fd5b5061020a6106b5565b6040516102179190612b7e565b60405180910390f35b34801561022c57600080fd5b5061024760048036038101906102429190612b99565b6106c5565b6040516102549190612b54565b60405180910390f35b34801561026957600080fd5b5061027261079e565b60405161027f9190612b7e565b60405180910390f35b34801561029457600080fd5b506102af60048036038101906102aa9190612d34565b6107a7565b005b3480156102bd57600080fd5b506102d860048036038101906102d39190612d7d565b6108b8565b6040516102e59190612b54565b60405180910390f35b3480156102fa57600080fd5b5061031560048036038101906103109190612de8565b61090e565b005b34801561032357600080fd5b5061032c6109e5565b005b34801561033a57600080fd5b5061035560048036038101906103509190612e41565b610ad2565b005b34801561036357600080fd5b5061037e60048036038101906103799190612d7d565b610b6b565b60405161038b9190612b54565b60405180910390f35b3480156103a057600080fd5b506103bb60048036038101906103b69190612d7d565b610bc1565b6040516103c89190612b7e565b60405180910390f35b3480156103dd57600080fd5b506103e6610c12565b005b3480156103f457600080fd5b506103fd610c9a565b60405161040a9190612e7d565b60405180910390f35b34801561041f57600080fd5b5061043a60048036038101906104359190612de8565b610cc3565b005b34801561044857600080fd5b50610451610e77565b60405161045e9190612a2f565b60405180910390f35b34801561047357600080fd5b5061048e60048036038101906104899190612af9565b610eb4565b60405161049b9190612b54565b60405180910390f35b3480156104b057600080fd5b506104cb60048036038101906104c69190612d34565b610ed2565b005b3480156104d957600080fd5b506104e26110c9565b005b3480156104f057600080fd5b5061050b60048036038101906105069190612de8565b6111b8565b005b34801561051957600080fd5b50610534600480360381019061052f9190612de8565b61128f565b005b34801561054257600080fd5b5061055d60048036038101906105589190612e98565b611629565b60405161056a9190612b7e565b60405180910390f35b34801561057f57600080fd5b5061059a60048036038101906105959190612ed8565b6116b0565b005b3480156105a857600080fd5b506105c360048036038101906105be9190612d7d565b61177a565b005b6105cd611872565b73ffffffffffffffffffffffffffffffffffffffff166105eb610c9a565b73ffffffffffffffffffffffffffffffffffffffff1614610641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063890612f51565b60405180910390fd5b600061064c30610bc1565b90506106578161187a565b50565b60606040518060400160405280600581526020017f5379726578000000000000000000000000000000000000000000000000000000815250905090565b60006106ab6106a4611872565b8484611af3565b6001905092915050565b600067016345785d8a0000905090565b60006106d2848484611cbe565b610793846106de611872565b61078e85604051806060016040528060288152602001613afb60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610744611872565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121ea9092919063ffffffff16565b611af3565b600190509392505050565b60006009905090565b6107af611872565b73ffffffffffffffffffffffffffffffffffffffff166107cd610c9a565b73ffffffffffffffffffffffffffffffffffffffff1614610823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081a90612f51565b60405180910390fd5b60005b81518110156108b45760006005600084848151811061084857610847612f71565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108ac90612fcf565b915050610826565b5050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610916611872565b73ffffffffffffffffffffffffffffffffffffffff16610934610c9a565b73ffffffffffffffffffffffffffffffffffffffff161461098a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098190612f51565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6109ed611872565b73ffffffffffffffffffffffffffffffffffffffff16610a0b610c9a565b73ffffffffffffffffffffffffffffffffffffffff1614610a61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5890612f51565b60405180910390fd5b6000479050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610ace573d6000803e3d6000fd5b5050565b610ada611872565b73ffffffffffffffffffffffffffffffffffffffff16610af8610c9a565b73ffffffffffffffffffffffffffffffffffffffff1614610b4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4590612f51565b60405180910390fd5b80600c60156101000a81548160ff02191690831515021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000610c0b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461224e565b9050919050565b610c1a611872565b73ffffffffffffffffffffffffffffffffffffffff16610c38610c9a565b73ffffffffffffffffffffffffffffffffffffffff1614610c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8590612f51565b60405180910390fd5b610c9860006122bc565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ccb611872565b73ffffffffffffffffffffffffffffffffffffffff16610ce9610c9a565b73ffffffffffffffffffffffffffffffffffffffff1614610d3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3690612f51565b60405180910390fd5b600060046000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60606040518060400160405280600381526020017f5352580000000000000000000000000000000000000000000000000000000000815250905090565b6000610ec8610ec1611872565b8484611cbe565b6001905092915050565b610eda611872565b73ffffffffffffffffffffffffffffffffffffffff16610ef8610c9a565b73ffffffffffffffffffffffffffffffffffffffff1614610f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4590612f51565b60405180910390fd5b60005b81518110156110c557600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16828281518110610fa657610fa5612f71565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415801561103a5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682828151811061101957611018612f71565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b156110b25760016005600084848151811061105857611057612f71565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b80806110bd90612fcf565b915050610f51565b5050565b6110d1611872565b73ffffffffffffffffffffffffffffffffffffffff166110ef610c9a565b73ffffffffffffffffffffffffffffffffffffffff1614611145576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113c90612f51565b60405180910390fd5b600c60149054906101000a900460ff16611194576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118b9061308a565b60405180910390fd5b6001600c60176101000a81548160ff02191690831515021790555042600d81905550565b6111c0611872565b73ffffffffffffffffffffffffffffffffffffffff166111de610c9a565b73ffffffffffffffffffffffffffffffffffffffff1614611234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122b90612f51565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611297611872565b73ffffffffffffffffffffffffffffffffffffffff166112b5610c9a565b73ffffffffffffffffffffffffffffffffffffffff161461130b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130290612f51565b60405180910390fd5b600c60149054906101000a900460ff161561135b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113529061311c565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e39190613151565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561144a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146e9190613151565b6040518363ffffffff1660e01b815260040161148b92919061317e565b6020604051808303816000875af11580156114aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ce9190613151565b600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60146101000a81548160ff0219169083151502179055505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6116b8611872565b73ffffffffffffffffffffffffffffffffffffffff166116d6610c9a565b73ffffffffffffffffffffffffffffffffffffffff161461172c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172390612f51565b60405180910390fd5b600a811115611770576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176790613219565b60405180910390fd5b8060088190555050565b611782611872565b73ffffffffffffffffffffffffffffffffffffffff166117a0610c9a565b73ffffffffffffffffffffffffffffffffffffffff16146117f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ed90612f51565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611866576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185d906132ab565b60405180910390fd5b61186f816122bc565b50565b600033905090565b6001600c60166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156118b2576118b1612bf1565b5b6040519080825280602002602001820160405280156118e05781602001602082028036833780820191505090505b50905030816000815181106118f8576118f7612f71565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561199f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c39190613151565b816001815181106119d7576119d6612f71565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611a3e30600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611af3565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611aa29594939291906133ce565b600060405180830381600087803b158015611abc57600080fd5b505af1158015611ad0573d6000803e3d6000fd5b50505050506000600c60166101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5a9061349a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bca9061352c565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611cb19190612b7e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d25906135be565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9590613650565b60405180910390fd5b60008111611de1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd8906136e2565b60405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611e6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e659061379a565b60405180910390fd5b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f145750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611f2d5750600c60159054906101000a900460ff16155b8015611fde5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611fdd5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b5b156121d857600c60179054906101000a900460ff16612032576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202990613806565b60405180910390fd5b60019050600d54421415612099576001600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60006120a430610bc1565b9050600c60169054906101000a900460ff161580156121115750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156121d65760008111156121d55761217060646121626005612154600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610bc1565b61238090919063ffffffff16565b6123fb90919063ffffffff16565b8111156121cb576121c860646121ba60056121ac600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610bc1565b61238090919063ffffffff16565b6123fb90919063ffffffff16565b90505b6121d48161187a565b5b5b505b6121e484848484612445565b50505050565b6000838311158290612232576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122299190612a2f565b60405180910390fd5b50600083856122419190613826565b9050809150509392505050565b6000600654821115612295576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228c906138cc565b60405180910390fd5b600061229f61261c565b90506122b481846123fb90919063ffffffff16565b915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008083141561239357600090506123f5565b600082846123a191906138ec565b90508284826123b09190613975565b146123f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e790613a18565b60405180910390fd5b809150505b92915050565b600061243d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612647565b905092915050565b8080612454576124536126aa565b5b600080600080612463876126cc565b93509350935093506124bd84600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461271b90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061255283600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461276590919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061259e816127c3565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125fb9190612b7e565b60405180910390a3505050508061261557612614612880565b5b5050505050565b600080600061262961288b565b9150915061264081836123fb90919063ffffffff16565b9250505090565b6000808311829061268e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126859190612a2f565b60405180910390fd5b506000838561269d9190613975565b9050809150509392505050565b6000600854116126b957600080fd5b6008546009819055506000600881905550565b6000806000806000806126e1876008546128ea565b9150915060006126ef61261c565b90506000806126ff8a858561293d565b9150915081818686985098509850985050505050509193509193565b600061275d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506121ea565b905092915050565b60008082846127749190613a38565b9050838110156127b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b090613ada565b60405180910390fd5b8091505092915050565b60006127cd61261c565b905060006127e4828461238090919063ffffffff16565b905061283881600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461276590919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b600954600881905550565b60008060006006549050600067016345785d8a000090506128bf67016345785d8a00006006546123fb90919063ffffffff16565b8210156128dd5760065467016345785d8a00009350935050506128e6565b81819350935050505b9091565b60008060006129156064612907868861238090919063ffffffff16565b6123fb90919063ffffffff16565b9050600061292c828761271b90919063ffffffff16565b905080829350935050509250929050565b6000806000612955848761238090919063ffffffff16565b9050600061296c858761238090919063ffffffff16565b90506000612983828461271b90919063ffffffff16565b9050828194509450505050935093915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129d05780820151818401526020810190506129b5565b838111156129df576000848401525b50505050565b6000601f19601f8301169050919050565b6000612a0182612996565b612a0b81856129a1565b9350612a1b8185602086016129b2565b612a24816129e5565b840191505092915050565b60006020820190508181036000830152612a4981846129f6565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a9082612a65565b9050919050565b612aa081612a85565b8114612aab57600080fd5b50565b600081359050612abd81612a97565b92915050565b6000819050919050565b612ad681612ac3565b8114612ae157600080fd5b50565b600081359050612af381612acd565b92915050565b60008060408385031215612b1057612b0f612a5b565b5b6000612b1e85828601612aae565b9250506020612b2f85828601612ae4565b9150509250929050565b60008115159050919050565b612b4e81612b39565b82525050565b6000602082019050612b696000830184612b45565b92915050565b612b7881612ac3565b82525050565b6000602082019050612b936000830184612b6f565b92915050565b600080600060608486031215612bb257612bb1612a5b565b5b6000612bc086828701612aae565b9350506020612bd186828701612aae565b9250506040612be286828701612ae4565b9150509250925092565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612c29826129e5565b810181811067ffffffffffffffff82111715612c4857612c47612bf1565b5b80604052505050565b6000612c5b612a51565b9050612c678282612c20565b919050565b600067ffffffffffffffff821115612c8757612c86612bf1565b5b602082029050602081019050919050565b600080fd5b6000612cb0612cab84612c6c565b612c51565b90508083825260208201905060208402830185811115612cd357612cd2612c98565b5b835b81811015612cfc5780612ce88882612aae565b845260208401935050602081019050612cd5565b5050509392505050565b600082601f830112612d1b57612d1a612bec565b5b8135612d2b848260208601612c9d565b91505092915050565b600060208284031215612d4a57612d49612a5b565b5b600082013567ffffffffffffffff811115612d6857612d67612a60565b5b612d7484828501612d06565b91505092915050565b600060208284031215612d9357612d92612a5b565b5b6000612da184828501612aae565b91505092915050565b6000612db582612a65565b9050919050565b612dc581612daa565b8114612dd057600080fd5b50565b600081359050612de281612dbc565b92915050565b600060208284031215612dfe57612dfd612a5b565b5b6000612e0c84828501612dd3565b91505092915050565b612e1e81612b39565b8114612e2957600080fd5b50565b600081359050612e3b81612e15565b92915050565b600060208284031215612e5757612e56612a5b565b5b6000612e6584828501612e2c565b91505092915050565b612e7781612a85565b82525050565b6000602082019050612e926000830184612e6e565b92915050565b60008060408385031215612eaf57612eae612a5b565b5b6000612ebd85828601612aae565b9250506020612ece85828601612aae565b9150509250929050565b600060208284031215612eee57612eed612a5b565b5b6000612efc84828501612ae4565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612f3b6020836129a1565b9150612f4682612f05565b602082019050919050565b60006020820190508181036000830152612f6a81612f2e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612fda82612ac3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561300d5761300c612fa0565b5b600182019050919050565b7f436f6e7472616374206d75737420626520696e697469616c697a65642066697260008201527f7374000000000000000000000000000000000000000000000000000000000000602082015250565b60006130746022836129a1565b915061307f82613018565b604082019050919050565b600060208201905081810360008301526130a381613067565b9050919050565b7f436f6e74726163742068617320616c7265616479206265656e20696e6974696160008201527f6c697a6564000000000000000000000000000000000000000000000000000000602082015250565b60006131066025836129a1565b9150613111826130aa565b604082019050919050565b60006020820190508181036000830152613135816130f9565b9050919050565b60008151905061314b81612a97565b92915050565b60006020828403121561316757613166612a5b565b5b60006131758482850161313c565b91505092915050565b60006040820190506131936000830185612e6e565b6131a06020830184612e6e565b9392505050565b7f5465616d206665652063616e6e6f74206265206c6172676572207468616e203160008201527f3025000000000000000000000000000000000000000000000000000000000000602082015250565b60006132036022836129a1565b915061320e826131a7565b604082019050919050565b60006020820190508181036000830152613232816131f6565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006132956026836129a1565b91506132a082613239565b604082019050919050565b600060208201905081810360008301526132c481613288565b9050919050565b6000819050919050565b6000819050919050565b60006132fa6132f56132f0846132cb565b6132d5565b612ac3565b9050919050565b61330a816132df565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61334581612a85565b82525050565b6000613357838361333c565b60208301905092915050565b6000602082019050919050565b600061337b82613310565b613385818561331b565b93506133908361332c565b8060005b838110156133c15781516133a8888261334b565b97506133b383613363565b925050600181019050613394565b5085935050505092915050565b600060a0820190506133e36000830188612b6f565b6133f06020830187613301565b81810360408301526134028186613370565b90506134116060830185612e6e565b61341e6080830184612b6f565b9695505050505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006134846024836129a1565b915061348f82613428565b604082019050919050565b600060208201905081810360008301526134b381613477565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006135166022836129a1565b9150613521826134ba565b604082019050919050565b6000602082019050818103600083015261354581613509565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006135a86025836129a1565b91506135b38261354c565b604082019050919050565b600060208201905081810360008301526135d78161359b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061363a6023836129a1565b9150613645826135de565b604082019050919050565b600060208201905081810360008301526136698161362d565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006136cc6029836129a1565b91506136d782613670565b604082019050919050565b600060208201905081810360008301526136fb816136bf565b9050919050565b7f596f7572206164647265737320686173206265656e206d61726b65642061732060008201527f6120626f742c20706c6561736520636f6e7461637420737461666620746f206160208201527f707065616c20796f757220636173652e00000000000000000000000000000000604082015250565b60006137846050836129a1565b915061378f82613702565b606082019050919050565b600060208201905081810360008301526137b381613777565b9050919050565b7f54726164696e6720686173206e6f7420796574206265656e206f70656e65642e600082015250565b60006137f06020836129a1565b91506137fb826137ba565b602082019050919050565b6000602082019050818103600083015261381f816137e3565b9050919050565b600061383182612ac3565b915061383c83612ac3565b92508282101561384f5761384e612fa0565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006138b6602a836129a1565b91506138c18261385a565b604082019050919050565b600060208201905081810360008301526138e5816138a9565b9050919050565b60006138f782612ac3565b915061390283612ac3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561393b5761393a612fa0565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061398082612ac3565b915061398b83612ac3565b92508261399b5761399a613946565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a026021836129a1565b9150613a0d826139a6565b604082019050919050565b60006020820190508181036000830152613a31816139f5565b9050919050565b6000613a4382612ac3565b9150613a4e83612ac3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a8357613a82612fa0565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613ac4601b836129a1565b9150613acf82613a8e565b602082019050919050565b60006020820190508181036000830152613af381613ab7565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122075ad8c6599ab52272d45598509928089c0d86e4390908970ecb8a7ddcbbfae0c64736f6c634300080a0033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c806370a08231116100d1578063b515566a1161008a578063cf9d4afa11610064578063cf9d4afa1461050d578063dd62ed3e14610536578063e6ec64ec14610573578063f2fde38b1461059c57610171565b8063b515566a146104a4578063c9567bf9146104cd578063cf0848f7146104e457610171565b806370a0823114610394578063715018a6146103d15780638da5cb5b146103e857806390d49b9d1461041357806395d89b411461043c578063a9059cbb1461046757610171565b806331c2d8471161012357806331c2d847146102885780633bbac579146102b1578063437823ec146102ee578063476343ee146103175780634b740b161461032e5780635342acb41461035757610171565b806306d8ea6b1461017657806306fdde031461018d578063095ea7b3146101b857806318160ddd146101f557806323b872dd14610220578063313ce5671461025d57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105c5565b005b34801561019957600080fd5b506101a261065a565b6040516101af9190612a2f565b60405180910390f35b3480156101c457600080fd5b506101df60048036038101906101da9190612af9565b610697565b6040516101ec9190612b54565b60405180910390f35b34801561020157600080fd5b5061020a6106b5565b6040516102179190612b7e565b60405180910390f35b34801561022c57600080fd5b5061024760048036038101906102429190612b99565b6106c5565b6040516102549190612b54565b60405180910390f35b34801561026957600080fd5b5061027261079e565b60405161027f9190612b7e565b60405180910390f35b34801561029457600080fd5b506102af60048036038101906102aa9190612d34565b6107a7565b005b3480156102bd57600080fd5b506102d860048036038101906102d39190612d7d565b6108b8565b6040516102e59190612b54565b60405180910390f35b3480156102fa57600080fd5b5061031560048036038101906103109190612de8565b61090e565b005b34801561032357600080fd5b5061032c6109e5565b005b34801561033a57600080fd5b5061035560048036038101906103509190612e41565b610ad2565b005b34801561036357600080fd5b5061037e60048036038101906103799190612d7d565b610b6b565b60405161038b9190612b54565b60405180910390f35b3480156103a057600080fd5b506103bb60048036038101906103b69190612d7d565b610bc1565b6040516103c89190612b7e565b60405180910390f35b3480156103dd57600080fd5b506103e6610c12565b005b3480156103f457600080fd5b506103fd610c9a565b60405161040a9190612e7d565b60405180910390f35b34801561041f57600080fd5b5061043a60048036038101906104359190612de8565b610cc3565b005b34801561044857600080fd5b50610451610e77565b60405161045e9190612a2f565b60405180910390f35b34801561047357600080fd5b5061048e60048036038101906104899190612af9565b610eb4565b60405161049b9190612b54565b60405180910390f35b3480156104b057600080fd5b506104cb60048036038101906104c69190612d34565b610ed2565b005b3480156104d957600080fd5b506104e26110c9565b005b3480156104f057600080fd5b5061050b60048036038101906105069190612de8565b6111b8565b005b34801561051957600080fd5b50610534600480360381019061052f9190612de8565b61128f565b005b34801561054257600080fd5b5061055d60048036038101906105589190612e98565b611629565b60405161056a9190612b7e565b60405180910390f35b34801561057f57600080fd5b5061059a60048036038101906105959190612ed8565b6116b0565b005b3480156105a857600080fd5b506105c360048036038101906105be9190612d7d565b61177a565b005b6105cd611872565b73ffffffffffffffffffffffffffffffffffffffff166105eb610c9a565b73ffffffffffffffffffffffffffffffffffffffff1614610641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063890612f51565b60405180910390fd5b600061064c30610bc1565b90506106578161187a565b50565b60606040518060400160405280600581526020017f5379726578000000000000000000000000000000000000000000000000000000815250905090565b60006106ab6106a4611872565b8484611af3565b6001905092915050565b600067016345785d8a0000905090565b60006106d2848484611cbe565b610793846106de611872565b61078e85604051806060016040528060288152602001613afb60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610744611872565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121ea9092919063ffffffff16565b611af3565b600190509392505050565b60006009905090565b6107af611872565b73ffffffffffffffffffffffffffffffffffffffff166107cd610c9a565b73ffffffffffffffffffffffffffffffffffffffff1614610823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081a90612f51565b60405180910390fd5b60005b81518110156108b45760006005600084848151811061084857610847612f71565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108ac90612fcf565b915050610826565b5050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610916611872565b73ffffffffffffffffffffffffffffffffffffffff16610934610c9a565b73ffffffffffffffffffffffffffffffffffffffff161461098a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098190612f51565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6109ed611872565b73ffffffffffffffffffffffffffffffffffffffff16610a0b610c9a565b73ffffffffffffffffffffffffffffffffffffffff1614610a61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5890612f51565b60405180910390fd5b6000479050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610ace573d6000803e3d6000fd5b5050565b610ada611872565b73ffffffffffffffffffffffffffffffffffffffff16610af8610c9a565b73ffffffffffffffffffffffffffffffffffffffff1614610b4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4590612f51565b60405180910390fd5b80600c60156101000a81548160ff02191690831515021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000610c0b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461224e565b9050919050565b610c1a611872565b73ffffffffffffffffffffffffffffffffffffffff16610c38610c9a565b73ffffffffffffffffffffffffffffffffffffffff1614610c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8590612f51565b60405180910390fd5b610c9860006122bc565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ccb611872565b73ffffffffffffffffffffffffffffffffffffffff16610ce9610c9a565b73ffffffffffffffffffffffffffffffffffffffff1614610d3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3690612f51565b60405180910390fd5b600060046000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60606040518060400160405280600381526020017f5352580000000000000000000000000000000000000000000000000000000000815250905090565b6000610ec8610ec1611872565b8484611cbe565b6001905092915050565b610eda611872565b73ffffffffffffffffffffffffffffffffffffffff16610ef8610c9a565b73ffffffffffffffffffffffffffffffffffffffff1614610f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4590612f51565b60405180910390fd5b60005b81518110156110c557600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16828281518110610fa657610fa5612f71565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415801561103a5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682828151811061101957611018612f71565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b156110b25760016005600084848151811061105857611057612f71565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b80806110bd90612fcf565b915050610f51565b5050565b6110d1611872565b73ffffffffffffffffffffffffffffffffffffffff166110ef610c9a565b73ffffffffffffffffffffffffffffffffffffffff1614611145576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113c90612f51565b60405180910390fd5b600c60149054906101000a900460ff16611194576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118b9061308a565b60405180910390fd5b6001600c60176101000a81548160ff02191690831515021790555042600d81905550565b6111c0611872565b73ffffffffffffffffffffffffffffffffffffffff166111de610c9a565b73ffffffffffffffffffffffffffffffffffffffff1614611234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122b90612f51565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611297611872565b73ffffffffffffffffffffffffffffffffffffffff166112b5610c9a565b73ffffffffffffffffffffffffffffffffffffffff161461130b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130290612f51565b60405180910390fd5b600c60149054906101000a900460ff161561135b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113529061311c565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e39190613151565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561144a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146e9190613151565b6040518363ffffffff1660e01b815260040161148b92919061317e565b6020604051808303816000875af11580156114aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ce9190613151565b600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60146101000a81548160ff0219169083151502179055505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6116b8611872565b73ffffffffffffffffffffffffffffffffffffffff166116d6610c9a565b73ffffffffffffffffffffffffffffffffffffffff161461172c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172390612f51565b60405180910390fd5b600a811115611770576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176790613219565b60405180910390fd5b8060088190555050565b611782611872565b73ffffffffffffffffffffffffffffffffffffffff166117a0610c9a565b73ffffffffffffffffffffffffffffffffffffffff16146117f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ed90612f51565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611866576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185d906132ab565b60405180910390fd5b61186f816122bc565b50565b600033905090565b6001600c60166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156118b2576118b1612bf1565b5b6040519080825280602002602001820160405280156118e05781602001602082028036833780820191505090505b50905030816000815181106118f8576118f7612f71565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561199f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c39190613151565b816001815181106119d7576119d6612f71565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611a3e30600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611af3565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611aa29594939291906133ce565b600060405180830381600087803b158015611abc57600080fd5b505af1158015611ad0573d6000803e3d6000fd5b50505050506000600c60166101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5a9061349a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bca9061352c565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611cb19190612b7e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d25906135be565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9590613650565b60405180910390fd5b60008111611de1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd8906136e2565b60405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611e6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e659061379a565b60405180910390fd5b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f145750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611f2d5750600c60159054906101000a900460ff16155b8015611fde5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611fdd5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b5b156121d857600c60179054906101000a900460ff16612032576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202990613806565b60405180910390fd5b60019050600d54421415612099576001600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60006120a430610bc1565b9050600c60169054906101000a900460ff161580156121115750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156121d65760008111156121d55761217060646121626005612154600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610bc1565b61238090919063ffffffff16565b6123fb90919063ffffffff16565b8111156121cb576121c860646121ba60056121ac600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610bc1565b61238090919063ffffffff16565b6123fb90919063ffffffff16565b90505b6121d48161187a565b5b5b505b6121e484848484612445565b50505050565b6000838311158290612232576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122299190612a2f565b60405180910390fd5b50600083856122419190613826565b9050809150509392505050565b6000600654821115612295576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228c906138cc565b60405180910390fd5b600061229f61261c565b90506122b481846123fb90919063ffffffff16565b915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008083141561239357600090506123f5565b600082846123a191906138ec565b90508284826123b09190613975565b146123f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e790613a18565b60405180910390fd5b809150505b92915050565b600061243d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612647565b905092915050565b8080612454576124536126aa565b5b600080600080612463876126cc565b93509350935093506124bd84600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461271b90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061255283600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461276590919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061259e816127c3565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125fb9190612b7e565b60405180910390a3505050508061261557612614612880565b5b5050505050565b600080600061262961288b565b9150915061264081836123fb90919063ffffffff16565b9250505090565b6000808311829061268e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126859190612a2f565b60405180910390fd5b506000838561269d9190613975565b9050809150509392505050565b6000600854116126b957600080fd5b6008546009819055506000600881905550565b6000806000806000806126e1876008546128ea565b9150915060006126ef61261c565b90506000806126ff8a858561293d565b9150915081818686985098509850985050505050509193509193565b600061275d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506121ea565b905092915050565b60008082846127749190613a38565b9050838110156127b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b090613ada565b60405180910390fd5b8091505092915050565b60006127cd61261c565b905060006127e4828461238090919063ffffffff16565b905061283881600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461276590919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b600954600881905550565b60008060006006549050600067016345785d8a000090506128bf67016345785d8a00006006546123fb90919063ffffffff16565b8210156128dd5760065467016345785d8a00009350935050506128e6565b81819350935050505b9091565b60008060006129156064612907868861238090919063ffffffff16565b6123fb90919063ffffffff16565b9050600061292c828761271b90919063ffffffff16565b905080829350935050509250929050565b6000806000612955848761238090919063ffffffff16565b9050600061296c858761238090919063ffffffff16565b90506000612983828461271b90919063ffffffff16565b9050828194509450505050935093915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129d05780820151818401526020810190506129b5565b838111156129df576000848401525b50505050565b6000601f19601f8301169050919050565b6000612a0182612996565b612a0b81856129a1565b9350612a1b8185602086016129b2565b612a24816129e5565b840191505092915050565b60006020820190508181036000830152612a4981846129f6565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a9082612a65565b9050919050565b612aa081612a85565b8114612aab57600080fd5b50565b600081359050612abd81612a97565b92915050565b6000819050919050565b612ad681612ac3565b8114612ae157600080fd5b50565b600081359050612af381612acd565b92915050565b60008060408385031215612b1057612b0f612a5b565b5b6000612b1e85828601612aae565b9250506020612b2f85828601612ae4565b9150509250929050565b60008115159050919050565b612b4e81612b39565b82525050565b6000602082019050612b696000830184612b45565b92915050565b612b7881612ac3565b82525050565b6000602082019050612b936000830184612b6f565b92915050565b600080600060608486031215612bb257612bb1612a5b565b5b6000612bc086828701612aae565b9350506020612bd186828701612aae565b9250506040612be286828701612ae4565b9150509250925092565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612c29826129e5565b810181811067ffffffffffffffff82111715612c4857612c47612bf1565b5b80604052505050565b6000612c5b612a51565b9050612c678282612c20565b919050565b600067ffffffffffffffff821115612c8757612c86612bf1565b5b602082029050602081019050919050565b600080fd5b6000612cb0612cab84612c6c565b612c51565b90508083825260208201905060208402830185811115612cd357612cd2612c98565b5b835b81811015612cfc5780612ce88882612aae565b845260208401935050602081019050612cd5565b5050509392505050565b600082601f830112612d1b57612d1a612bec565b5b8135612d2b848260208601612c9d565b91505092915050565b600060208284031215612d4a57612d49612a5b565b5b600082013567ffffffffffffffff811115612d6857612d67612a60565b5b612d7484828501612d06565b91505092915050565b600060208284031215612d9357612d92612a5b565b5b6000612da184828501612aae565b91505092915050565b6000612db582612a65565b9050919050565b612dc581612daa565b8114612dd057600080fd5b50565b600081359050612de281612dbc565b92915050565b600060208284031215612dfe57612dfd612a5b565b5b6000612e0c84828501612dd3565b91505092915050565b612e1e81612b39565b8114612e2957600080fd5b50565b600081359050612e3b81612e15565b92915050565b600060208284031215612e5757612e56612a5b565b5b6000612e6584828501612e2c565b91505092915050565b612e7781612a85565b82525050565b6000602082019050612e926000830184612e6e565b92915050565b60008060408385031215612eaf57612eae612a5b565b5b6000612ebd85828601612aae565b9250506020612ece85828601612aae565b9150509250929050565b600060208284031215612eee57612eed612a5b565b5b6000612efc84828501612ae4565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612f3b6020836129a1565b9150612f4682612f05565b602082019050919050565b60006020820190508181036000830152612f6a81612f2e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612fda82612ac3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561300d5761300c612fa0565b5b600182019050919050565b7f436f6e7472616374206d75737420626520696e697469616c697a65642066697260008201527f7374000000000000000000000000000000000000000000000000000000000000602082015250565b60006130746022836129a1565b915061307f82613018565b604082019050919050565b600060208201905081810360008301526130a381613067565b9050919050565b7f436f6e74726163742068617320616c7265616479206265656e20696e6974696160008201527f6c697a6564000000000000000000000000000000000000000000000000000000602082015250565b60006131066025836129a1565b9150613111826130aa565b604082019050919050565b60006020820190508181036000830152613135816130f9565b9050919050565b60008151905061314b81612a97565b92915050565b60006020828403121561316757613166612a5b565b5b60006131758482850161313c565b91505092915050565b60006040820190506131936000830185612e6e565b6131a06020830184612e6e565b9392505050565b7f5465616d206665652063616e6e6f74206265206c6172676572207468616e203160008201527f3025000000000000000000000000000000000000000000000000000000000000602082015250565b60006132036022836129a1565b915061320e826131a7565b604082019050919050565b60006020820190508181036000830152613232816131f6565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006132956026836129a1565b91506132a082613239565b604082019050919050565b600060208201905081810360008301526132c481613288565b9050919050565b6000819050919050565b6000819050919050565b60006132fa6132f56132f0846132cb565b6132d5565b612ac3565b9050919050565b61330a816132df565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61334581612a85565b82525050565b6000613357838361333c565b60208301905092915050565b6000602082019050919050565b600061337b82613310565b613385818561331b565b93506133908361332c565b8060005b838110156133c15781516133a8888261334b565b97506133b383613363565b925050600181019050613394565b5085935050505092915050565b600060a0820190506133e36000830188612b6f565b6133f06020830187613301565b81810360408301526134028186613370565b90506134116060830185612e6e565b61341e6080830184612b6f565b9695505050505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006134846024836129a1565b915061348f82613428565b604082019050919050565b600060208201905081810360008301526134b381613477565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006135166022836129a1565b9150613521826134ba565b604082019050919050565b6000602082019050818103600083015261354581613509565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006135a86025836129a1565b91506135b38261354c565b604082019050919050565b600060208201905081810360008301526135d78161359b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061363a6023836129a1565b9150613645826135de565b604082019050919050565b600060208201905081810360008301526136698161362d565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006136cc6029836129a1565b91506136d782613670565b604082019050919050565b600060208201905081810360008301526136fb816136bf565b9050919050565b7f596f7572206164647265737320686173206265656e206d61726b65642061732060008201527f6120626f742c20706c6561736520636f6e7461637420737461666620746f206160208201527f707065616c20796f757220636173652e00000000000000000000000000000000604082015250565b60006137846050836129a1565b915061378f82613702565b606082019050919050565b600060208201905081810360008301526137b381613777565b9050919050565b7f54726164696e6720686173206e6f7420796574206265656e206f70656e65642e600082015250565b60006137f06020836129a1565b91506137fb826137ba565b602082019050919050565b6000602082019050818103600083015261381f816137e3565b9050919050565b600061383182612ac3565b915061383c83612ac3565b92508282101561384f5761384e612fa0565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006138b6602a836129a1565b91506138c18261385a565b604082019050919050565b600060208201905081810360008301526138e5816138a9565b9050919050565b60006138f782612ac3565b915061390283612ac3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561393b5761393a612fa0565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061398082612ac3565b915061398b83612ac3565b92508261399b5761399a613946565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a026021836129a1565b9150613a0d826139a6565b604082019050919050565b60006020820190508181036000830152613a31816139f5565b9050919050565b6000613a4382612ac3565b9150613a4e83612ac3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a8357613a82612fa0565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613ac4601b836129a1565b9150613acf82613a8e565b602082019050919050565b60006020820190508181036000830152613af381613ab7565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122075ad8c6599ab52272d45598509928089c0d86e4390908970ecb8a7ddcbbfae0c64736f6c634300080a0033

Deployed Bytecode Sourcemap

3810:10467:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13899:161;;;;;;;;;;;;;:::i;:::-;;5477:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6329:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5753:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6498:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5663:82;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13494:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13675:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12688:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14072:165;;;;;;;;;;;;;:::i;:::-;;12937:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13773:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5856:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2801:105;;;;;;;;;;;;;:::i;:::-;;2578:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12453:227;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5568:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6003:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13207:275;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12253:192;;;;;;;;;;;;;:::i;:::-;;12813:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11696:549;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6178:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13041:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2914:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13899:161;2724:12;:10;:12::i;:::-;2713:23;;:7;:5;:7::i;:::-;:23;;;2705:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13957:23:::1;13983:24;14001:4;13983:9;:24::i;:::-;13957:50;;14018:34;14036:15;14018:17;:34::i;:::-;13946:114;13899:161::o:0;5477:83::-;5514:13;5547:5;;;;;;;;;;;;;;;;;5540:12;;5477:83;:::o;6329:161::-;6404:4;6421:39;6430:12;:10;:12::i;:::-;6444:7;6453:6;6421:8;:39::i;:::-;6478:4;6471:11;;6329:161;;;;:::o;5753:95::-;5806:7;4270:11;5826:14;;5753:95;:::o;6498:313::-;6596:4;6613:36;6623:6;6631:9;6642:6;6613:9;:36::i;:::-;6660:121;6669:6;6677:12;:10;:12::i;:::-;6691:89;6729:6;6691:89;;;;;;;;;;;;;;;;;:11;:19;6703:6;6691:19;;;;;;;;;;;;;;;:33;6711:12;:10;:12::i;:::-;6691:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6660:8;:121::i;:::-;6799:4;6792:11;;6498:313;;;;;:::o;5663:82::-;5704:4;4517:1;5721:16;;5663:82;:::o;13494:169::-;2724:12;:10;:12::i;:::-;2713:23;;:7;:5;:7::i;:::-;:23;;;2705:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13570:6:::1;13565:91;13586:5;:12;13582:1;:16;13565:91;;;13639:5;13620:6;:16;13627:5;13633:1;13627:8;;;;;;;;:::i;:::-;;;;;;;;13620:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;13600:3;;;;;:::i;:::-;;;;13565:91;;;;13494:169:::0;:::o;13675:90::-;13723:4;13747:6;:10;13754:2;13747:10;;;;;;;;;;;;;;;;;;;;;;;;;13740:17;;13675:90;;;:::o;12688:113::-;2724:12;:10;:12::i;:::-;2713:23;;:7;:5;:7::i;:::-;:23;;;2705:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12789:4:::1;12764:18;:22;12783:2;12764:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;12688:113:::0;:::o;14072:165::-;2724:12;:10;:12::i;:::-;2713:23;;:7;:5;:7::i;:::-;:23;;;2705:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14128:26:::1;14157:21;14128:50;;14189:11;;;;;;;;;;;:20;;:40;14210:18;14189:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;14117:120;14072:165::o:0;12937:92::-;2724:12;:10;:12::i;:::-;2713:23;;:7;:5;:7::i;:::-;:23;;;2705:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13016:5:::1;13003:10;;:18;;;;;;;;;;;;;;;;;;12937:92:::0;:::o;13773:114::-;13833:4;13857:18;:22;13876:2;13857:22;;;;;;;;;;;;;;;;;;;;;;;;;13850:29;;13773:114;;;:::o;5856:139::-;5922:7;5949:38;5970:7;:16;5978:7;5970:16;;;;;;;;;;;;;;;;5949:20;:38::i;:::-;5942:45;;5856:139;;;:::o;2801:105::-;2724:12;:10;:12::i;:::-;2713:23;;:7;:5;:7::i;:::-;:23;;;2705:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2868:30:::1;2895:1;2868:18;:30::i;:::-;2801:105::o:0;2578:87::-;2624:7;2651:6;;;;;;;;;;;2644:13;;2578:87;:::o;12453:227::-;2724:12;:10;:12::i;:::-;2713:23;;:7;:5;:7::i;:::-;:23;;;2705:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12575:5:::1;12541:18;:31;12560:11;;;;;;;;;;;12541:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;12607:16;12593:11;;:30;;;;;;;;;;;;;;;;;;12668:4;12634:18;:31;12653:11;;;;;;;;;;;12634:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;12453:227:::0;:::o;5568:87::-;5607:13;5640:7;;;;;;;;;;;;;;;;;5633:14;;5568:87;:::o;6003:167::-;6081:4;6098:42;6108:12;:10;:12::i;:::-;6122:9;6133:6;6098:9;:42::i;:::-;6158:4;6151:11;;6003:167;;;;:::o;13207:275::-;2724:12;:10;:12::i;:::-;2713:23;;:7;:5;:7::i;:::-;:23;;;2705:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13283:6:::1;13278:197;13299:5;:12;13295:1;:16;13278:197;;;13349:14;;;;;;;;;;;13337:26;;:5;13343:1;13337:8;;;;;;;;:::i;:::-;;;;;;;;:26;;;;:67;;;;;13387:16;;;;;;;;;;;13367:37;;:5;13373:1;13367:8;;;;;;;;:::i;:::-;;;;;;;;:37;;;;13337:67;13333:131;;;13444:4;13425:6;:16;13432:5;13438:1;13432:8;;;;;;;;:::i;:::-;;;;;;;;13425:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;13333:131;13313:3;;;;;:::i;:::-;;;;13278:197;;;;13207:275:::0;:::o;12253:192::-;2724:12;:10;:12::i;:::-;2713:23;;:7;:5;:7::i;:::-;:23;;;2705:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12316:12:::1;;;;;;;;;;;12308:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;12393:4;12378:12;;:19;;;;;;;;;;;;;;;;;;12422:15;12408:11;:29;;;;12253:192::o:0;12813:112::-;2724:12;:10;:12::i;:::-;2713:23;;:7;:5;:7::i;:::-;:23;;;2705:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12912:5:::1;12887:18;:22;12906:2;12887:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;12813:112:::0;:::o;11696:549::-;2724:12;:10;:12::i;:::-;2713:23;;:7;:5;:7::i;:::-;:23;;;2705:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11787:12:::1;;;;;;;;;;;11786:13;11778:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;11851:34;11907:42;11851:99;;11996:15;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11978:55;;;12042:4;12049:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11978:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11961:14;;:111;;;;;;;;;;;;;;;;;;12104:15;12085:16;;:34;;;;;;;;;;;;;;;;;;12146:10;12132:11;;:24;;;;;;;;;;;;;;;;;;12201:4;12167:18;:31;12186:11;;;;;;;;;;;12167:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;12233:4;12218:12;;:19;;;;;;;;;;;;;;;;;;11767:478;11696:549:::0;:::o;6178:143::-;6259:7;6286:11;:18;6298:5;6286:18;;;;;;;;;;;;;;;:27;6305:7;6286:27;;;;;;;;;;;;;;;;6279:34;;6178:143;;;;:::o;13041:154::-;2724:12;:10;:12::i;:::-;2713:23;;:7;:5;:7::i;:::-;:23;;;2705:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13121:2:::1;13114:3;:9;;13106:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;13184:3;13173:8;:14;;;;13041:154:::0;:::o;2914:203::-;2724:12;:10;:12::i;:::-;2713:23;;:7;:5;:7::i;:::-;:23;;;2705:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3025:1:::1;3005:22;;:8;:22;;;;2997:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3081:28;3100:8;3081:18;:28::i;:::-;2914:203:::0;:::o;101:98::-;154:7;181:10;174:17;;101:98;:::o;9071:489::-;5000:4;4990:7;;:14;;;;;;;;;;;;;;;;;;9152:21:::1;9190:1;9176:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9152:40;;9221:4;9203;9208:1;9203:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;9247:16;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9237:4;9242:1;9237:7;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;::::0;::::1;9281:63;9298:4;9313:16;;;;;;;;;;;9332:11;9281:8;:63::i;:::-;9355:16;;;;;;;;;;;:67;;;9437:11;9463:1;9479:4;9506;9526:15;9355:197;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9141:419;5037:5:::0;5027:7;;:15;;;;;;;;;;;;;;;;;;9071:489;:::o;7320:337::-;7430:1;7413:19;;:5;:19;;;;7405:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7511:1;7492:21;;:7;:21;;;;7484:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7595:6;7565:11;:18;7577:5;7565:18;;;;;;;;;;;;;;;:27;7584:7;7565:27;;;;;;;;;;;;;;;:36;;;;7633:7;7617:32;;7626:5;7617:32;;;7642:6;7617:32;;;;;;:::i;:::-;;;;;;;;7320:337;;;:::o;7669:1394::-;7773:1;7757:18;;:4;:18;;;;7749:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7850:1;7836:16;;:2;:16;;;;7828:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7920:1;7911:6;:10;7903:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7987:6;:12;7994:4;7987:12;;;;;;;;;;;;;;;;;;;;;;;;;7986:13;7978:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;8105:12;8155:18;:24;8174:4;8155:24;;;;;;;;;;;;;;;;;;;;;;;;;8154:25;:66;;;;;8198:18;:22;8217:2;8198:22;;;;;;;;;;;;;;;;;;;;;;;;;8197:23;8154:66;:95;;;;;8239:10;;;;;;;;;;;8238:11;8154:95;:161;;;;;8276:14;;;;;;;;;;;8268:22;;:4;:22;;;:46;;;;8300:14;;;;;;;;;;;8294:20;;:2;:20;;;8268:46;8154:161;8136:850;;;8350:12;;;;;;;;;;;8342:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;8424:4;8414:14;;8468:11;;8449:15;:30;8445:53;;;8494:4;8481:6;:10;8488:2;8481:10;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;8445:53;8515:28;8546:24;8564:4;8546:9;:24::i;:::-;8515:55;;8590:7;;;;;;;;;;;8589:8;:34;;;;;8609:14;;;;;;;;;;;8601:22;;:4;:22;;;;8589:34;8585:390;;;8671:1;8648:20;:24;8644:316;;;8724:41;8761:3;8724:32;8754:1;8724:25;8734:14;;;;;;;;;;;8724:9;:25::i;:::-;:29;;:32;;;;:::i;:::-;:36;;:41;;;;:::i;:::-;8701:20;:64;8697:159;;;8815:41;8852:3;8815:32;8845:1;8815:25;8825:14;;;;;;;;;;;8815:9;:25::i;:::-;:29;;:32;;;;:::i;:::-;:36;;:41;;;;:::i;:::-;8792:64;;8697:159;8901:39;8919:20;8901:17;:39::i;:::-;8644:316;8585:390;8327:659;8136:850;9014:41;9029:4;9035:2;9039:6;9047:7;9014:14;:41::i;:::-;7738:1325;7669:1394;;;:::o;1238:190::-;1324:7;1357:1;1352;:6;;1360:12;1344:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1384:9;1400:1;1396;:5;;;;:::i;:::-;1384:17;;1419:1;1412:8;;;1238:190;;;;;:::o;6819:255::-;6887:7;6926;;6915;:18;;6907:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6991:19;7014:10;:8;:10::i;:::-;6991:33;;7042:24;7054:11;7042:7;:11;;:24;;;;:::i;:::-;7035:31;;;6819:255;;;:::o;3125:191::-;3199:16;3218:6;;;;;;;;;;;3199:25;;3244:8;3235:6;;:17;;;;;;;;;;;;;;;;;;3299:8;3268:40;;3289:8;3268:40;;;;;;;;;;;;3188:128;3125:191;:::o;1436:246::-;1494:7;1523:1;1518;:6;1514:47;;;1548:1;1541:8;;;;1514:47;1571:9;1587:1;1583;:5;;;;:::i;:::-;1571:17;;1616:1;1611;1607;:5;;;;:::i;:::-;:10;1599:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1673:1;1666:8;;;1436:246;;;;;:::o;1690:132::-;1748:7;1775:39;1779:1;1782;1775:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1768:46;;1690:132;;;;:::o;9568:459::-;9677:7;5108;5103:30;;5117:16;:14;:16::i;:::-;5103:30;9698:15:::1;9715:23:::0;9740::::1;9765:13:::0;9782:19:::1;9793:7;9782:10;:19::i;:::-;9697:104;;;;;;;;9830:28;9850:7;9830;:15;9838:6;9830:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;9812:7;:15;9820:6;9812:15;;;;;;;;;;;;;;;:46;;;;9890:39;9913:15;9890:7;:18;9898:9;9890:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;9869:7;:18;9877:9;9869:18;;;;;;;;;;;;;;;:60;;;;9943:16;9953:5;9943:9;:16::i;:::-;9992:9;9975:44;;9984:6;9975:44;;;10003:15;9975:44;;;;;;:::i;:::-;;;;;;;;9686:341;;;;5161:7:::0;5156:31;;5170:17;:15;:17::i;:::-;5156:31;9568:459;;;;;:::o;10702:164::-;10744:7;10765:15;10782;10801:19;:17;:19::i;:::-;10764:56;;;;10838:20;10850:7;10838;:11;;:20;;;;:::i;:::-;10831:27;;;;10702:164;:::o;1830:189::-;1916:7;1948:1;1944;:5;1951:12;1936:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1975:9;1991:1;1987;:5;;;;:::i;:::-;1975:17;;2010:1;2003:8;;;1830:189;;;;;:::o;7082:137::-;7146:1;7135:8;;:12;7127:21;;;;;;7180:8;;7161:16;:27;;;;7210:1;7199:8;:12;;;;7082:137::o;10035:395::-;10094:7;10103;10112;10121;10142:23;10167:13;10184:30;10196:7;10205:8;;10184:11;:30::i;:::-;10141:73;;;;10225:19;10248:10;:8;:10::i;:::-;10225:33;;10270:15;10287:23;10314:40;10326:7;10335:5;10342:11;10314;:40::i;:::-;10269:85;;;;10373:7;10382:15;10399;10416:5;10365:57;;;;;;;;;;;;;10035:395;;;;;:::o;1094:136::-;1152:7;1179:43;1183:1;1186;1179:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1172:50;;1094:136;;;;:::o;907:179::-;965:7;985:9;1001:1;997;:5;;;;:::i;:::-;985:17;;1026:1;1021;:6;;1013:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1077:1;1070:8;;;907:179;;;;:::o;11470:214::-;11523:19;11546:10;:8;:10::i;:::-;11523:33;;11567:13;11583:22;11593:11;11583:5;:9;;:22;;;;:::i;:::-;11567:38;;11643:33;11670:5;11643:7;:22;11659:4;11643:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;11618:7;:22;11634:4;11618:22;;;;;;;;;;;;;;;:58;;;;11512:172;;11470:214;:::o;7231:81::-;7288:16;;7277:8;:27;;;;7231:81::o;10874:257::-;10925:7;10934;10954:15;10972:7;;10954:25;;10990:15;4270:11;10990:25;;11040:20;4270:11;11040:7;;:11;;:20;;;;:::i;:::-;11030:7;:30;11026:61;;;11070:7;;4270:11;11062:25;;;;;;;;11026:61;11106:7;11115;11098:25;;;;;;10874:257;;;:::o;10438:256::-;10515:7;10524;10544:13;10560:29;10585:3;10560:20;10572:7;10560;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;10544:45;;10600:23;10626:18;10638:5;10626:7;:11;;:18;;;;:::i;:::-;10600:44;;10663:15;10680:5;10655:31;;;;;;10438:256;;;;;:::o;11139:323::-;11235:7;11244;11264:15;11282:24;11294:11;11282:7;:11;;:24;;;;:::i;:::-;11264:42;;11317:13;11333:22;11343:11;11333:5;:9;;:22;;;;:::i;:::-;11317:38;;11366:23;11392:18;11404:5;11392:7;:11;;:18;;;;:::i;:::-;11366:44;;11429:7;11438:15;11421:33;;;;;;;11139:323;;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:117::-;4580:1;4577;4570:12;4594:180;4642:77;4639:1;4632:88;4739:4;4736:1;4729:15;4763:4;4760:1;4753:15;4780:281;4863:27;4885:4;4863:27;:::i;:::-;4855:6;4851:40;4993:6;4981:10;4978:22;4957:18;4945:10;4942:34;4939:62;4936:88;;;5004:18;;:::i;:::-;4936:88;5044:10;5040:2;5033:22;4823:238;4780:281;;:::o;5067:129::-;5101:6;5128:20;;:::i;:::-;5118:30;;5157:33;5185:4;5177:6;5157:33;:::i;:::-;5067:129;;;:::o;5202:311::-;5279:4;5369:18;5361:6;5358:30;5355:56;;;5391:18;;:::i;:::-;5355:56;5441:4;5433:6;5429:17;5421:25;;5501:4;5495;5491:15;5483:23;;5202:311;;;:::o;5519:117::-;5628:1;5625;5618:12;5659:710;5755:5;5780:81;5796:64;5853:6;5796:64;:::i;:::-;5780:81;:::i;:::-;5771:90;;5881:5;5910:6;5903:5;5896:21;5944:4;5937:5;5933:16;5926:23;;5997:4;5989:6;5985:17;5977:6;5973:30;6026:3;6018:6;6015:15;6012:122;;;6045:79;;:::i;:::-;6012:122;6160:6;6143:220;6177:6;6172:3;6169:15;6143:220;;;6252:3;6281:37;6314:3;6302:10;6281:37;:::i;:::-;6276:3;6269:50;6348:4;6343:3;6339:14;6332:21;;6219:144;6203:4;6198:3;6194:14;6187:21;;6143:220;;;6147:21;5761:608;;5659:710;;;;;:::o;6392:370::-;6463:5;6512:3;6505:4;6497:6;6493:17;6489:27;6479:122;;6520:79;;:::i;:::-;6479:122;6637:6;6624:20;6662:94;6752:3;6744:6;6737:4;6729:6;6725:17;6662:94;:::i;:::-;6653:103;;6469:293;6392:370;;;;:::o;6768:539::-;6852:6;6901:2;6889:9;6880:7;6876:23;6872:32;6869:119;;;6907:79;;:::i;:::-;6869:119;7055:1;7044:9;7040:17;7027:31;7085:18;7077:6;7074:30;7071:117;;;7107:79;;:::i;:::-;7071:117;7212:78;7282:7;7273:6;7262:9;7258:22;7212:78;:::i;:::-;7202:88;;6998:302;6768:539;;;;:::o;7313:329::-;7372:6;7421:2;7409:9;7400:7;7396:23;7392:32;7389:119;;;7427:79;;:::i;:::-;7389:119;7547:1;7572:53;7617:7;7608:6;7597:9;7593:22;7572:53;:::i;:::-;7562:63;;7518:117;7313:329;;;;:::o;7648:104::-;7693:7;7722:24;7740:5;7722:24;:::i;:::-;7711:35;;7648:104;;;:::o;7758:138::-;7839:32;7865:5;7839:32;:::i;:::-;7832:5;7829:43;7819:71;;7886:1;7883;7876:12;7819:71;7758:138;:::o;7902:155::-;7956:5;7994:6;7981:20;7972:29;;8010:41;8045:5;8010:41;:::i;:::-;7902:155;;;;:::o;8063:345::-;8130:6;8179:2;8167:9;8158:7;8154:23;8150:32;8147:119;;;8185:79;;:::i;:::-;8147:119;8305:1;8330:61;8383:7;8374:6;8363:9;8359:22;8330:61;:::i;:::-;8320:71;;8276:125;8063:345;;;;:::o;8414:116::-;8484:21;8499:5;8484:21;:::i;:::-;8477:5;8474:32;8464:60;;8520:1;8517;8510:12;8464:60;8414:116;:::o;8536:133::-;8579:5;8617:6;8604:20;8595:29;;8633:30;8657:5;8633:30;:::i;:::-;8536:133;;;;:::o;8675:323::-;8731:6;8780:2;8768:9;8759:7;8755:23;8751:32;8748:119;;;8786:79;;:::i;:::-;8748:119;8906:1;8931:50;8973:7;8964:6;8953:9;8949:22;8931:50;:::i;:::-;8921:60;;8877:114;8675:323;;;;:::o;9004:118::-;9091:24;9109:5;9091:24;:::i;:::-;9086:3;9079:37;9004:118;;:::o;9128:222::-;9221:4;9259:2;9248:9;9244:18;9236:26;;9272:71;9340:1;9329:9;9325:17;9316:6;9272:71;:::i;:::-;9128:222;;;;:::o;9356:474::-;9424:6;9432;9481:2;9469:9;9460:7;9456:23;9452:32;9449:119;;;9487:79;;:::i;:::-;9449:119;9607:1;9632:53;9677:7;9668:6;9657:9;9653:22;9632:53;:::i;:::-;9622:63;;9578:117;9734:2;9760:53;9805:7;9796:6;9785:9;9781:22;9760:53;:::i;:::-;9750:63;;9705:118;9356:474;;;;;:::o;9836:329::-;9895:6;9944:2;9932:9;9923:7;9919:23;9915:32;9912:119;;;9950:79;;:::i;:::-;9912:119;10070:1;10095:53;10140:7;10131:6;10120:9;10116:22;10095:53;:::i;:::-;10085:63;;10041:117;9836:329;;;;:::o;10171:182::-;10311:34;10307:1;10299:6;10295:14;10288:58;10171:182;:::o;10359:366::-;10501:3;10522:67;10586:2;10581:3;10522:67;:::i;:::-;10515:74;;10598:93;10687:3;10598:93;:::i;:::-;10716:2;10711:3;10707:12;10700:19;;10359:366;;;:::o;10731:419::-;10897:4;10935:2;10924:9;10920:18;10912:26;;10984:9;10978:4;10974:20;10970:1;10959:9;10955:17;10948:47;11012:131;11138:4;11012:131;:::i;:::-;11004:139;;10731:419;;;:::o;11156:180::-;11204:77;11201:1;11194:88;11301:4;11298:1;11291:15;11325:4;11322:1;11315:15;11342:180;11390:77;11387:1;11380:88;11487:4;11484:1;11477:15;11511:4;11508:1;11501:15;11528:233;11567:3;11590:24;11608:5;11590:24;:::i;:::-;11581:33;;11636:66;11629:5;11626:77;11623:103;;;11706:18;;:::i;:::-;11623:103;11753:1;11746:5;11742:13;11735:20;;11528:233;;;:::o;11767:221::-;11907:34;11903:1;11895:6;11891:14;11884:58;11976:4;11971:2;11963:6;11959:15;11952:29;11767:221;:::o;11994:366::-;12136:3;12157:67;12221:2;12216:3;12157:67;:::i;:::-;12150:74;;12233:93;12322:3;12233:93;:::i;:::-;12351:2;12346:3;12342:12;12335:19;;11994:366;;;:::o;12366:419::-;12532:4;12570:2;12559:9;12555:18;12547:26;;12619:9;12613:4;12609:20;12605:1;12594:9;12590:17;12583:47;12647:131;12773:4;12647:131;:::i;:::-;12639:139;;12366:419;;;:::o;12791:224::-;12931:34;12927:1;12919:6;12915:14;12908:58;13000:7;12995:2;12987:6;12983:15;12976:32;12791:224;:::o;13021:366::-;13163:3;13184:67;13248:2;13243:3;13184:67;:::i;:::-;13177:74;;13260:93;13349:3;13260:93;:::i;:::-;13378:2;13373:3;13369:12;13362:19;;13021:366;;;:::o;13393:419::-;13559:4;13597:2;13586:9;13582:18;13574:26;;13646:9;13640:4;13636:20;13632:1;13621:9;13617:17;13610:47;13674:131;13800:4;13674:131;:::i;:::-;13666:139;;13393:419;;;:::o;13818:143::-;13875:5;13906:6;13900:13;13891:22;;13922:33;13949:5;13922:33;:::i;:::-;13818:143;;;;:::o;13967:351::-;14037:6;14086:2;14074:9;14065:7;14061:23;14057:32;14054:119;;;14092:79;;:::i;:::-;14054:119;14212:1;14237:64;14293:7;14284:6;14273:9;14269:22;14237:64;:::i;:::-;14227:74;;14183:128;13967:351;;;;:::o;14324:332::-;14445:4;14483:2;14472:9;14468:18;14460:26;;14496:71;14564:1;14553:9;14549:17;14540:6;14496:71;:::i;:::-;14577:72;14645:2;14634:9;14630:18;14621:6;14577:72;:::i;:::-;14324:332;;;;;:::o;14662:221::-;14802:34;14798:1;14790:6;14786:14;14779:58;14871:4;14866:2;14858:6;14854:15;14847:29;14662:221;:::o;14889:366::-;15031:3;15052:67;15116:2;15111:3;15052:67;:::i;:::-;15045:74;;15128:93;15217:3;15128:93;:::i;:::-;15246:2;15241:3;15237:12;15230:19;;14889:366;;;:::o;15261:419::-;15427:4;15465:2;15454:9;15450:18;15442:26;;15514:9;15508:4;15504:20;15500:1;15489:9;15485:17;15478:47;15542:131;15668:4;15542:131;:::i;:::-;15534:139;;15261:419;;;:::o;15686:225::-;15826:34;15822:1;15814:6;15810:14;15803:58;15895:8;15890:2;15882:6;15878:15;15871:33;15686:225;:::o;15917:366::-;16059:3;16080:67;16144:2;16139:3;16080:67;:::i;:::-;16073:74;;16156:93;16245:3;16156:93;:::i;:::-;16274:2;16269:3;16265:12;16258:19;;15917:366;;;:::o;16289:419::-;16455:4;16493:2;16482:9;16478:18;16470:26;;16542:9;16536:4;16532:20;16528:1;16517:9;16513:17;16506:47;16570:131;16696:4;16570:131;:::i;:::-;16562:139;;16289:419;;;:::o;16714:85::-;16759:7;16788:5;16777:16;;16714:85;;;:::o;16805:60::-;16833:3;16854:5;16847:12;;16805:60;;;:::o;16871:158::-;16929:9;16962:61;16980:42;16989:32;17015:5;16989:32;:::i;:::-;16980:42;:::i;:::-;16962:61;:::i;:::-;16949:74;;16871:158;;;:::o;17035:147::-;17130:45;17169:5;17130:45;:::i;:::-;17125:3;17118:58;17035:147;;:::o;17188:114::-;17255:6;17289:5;17283:12;17273:22;;17188:114;;;:::o;17308:184::-;17407:11;17441:6;17436:3;17429:19;17481:4;17476:3;17472:14;17457:29;;17308:184;;;;:::o;17498:132::-;17565:4;17588:3;17580:11;;17618:4;17613:3;17609:14;17601:22;;17498:132;;;:::o;17636:108::-;17713:24;17731:5;17713:24;:::i;:::-;17708:3;17701:37;17636:108;;:::o;17750:179::-;17819:10;17840:46;17882:3;17874:6;17840:46;:::i;:::-;17918:4;17913:3;17909:14;17895:28;;17750:179;;;;:::o;17935:113::-;18005:4;18037;18032:3;18028:14;18020:22;;17935:113;;;:::o;18084:732::-;18203:3;18232:54;18280:5;18232:54;:::i;:::-;18302:86;18381:6;18376:3;18302:86;:::i;:::-;18295:93;;18412:56;18462:5;18412:56;:::i;:::-;18491:7;18522:1;18507:284;18532:6;18529:1;18526:13;18507:284;;;18608:6;18602:13;18635:63;18694:3;18679:13;18635:63;:::i;:::-;18628:70;;18721:60;18774:6;18721:60;:::i;:::-;18711:70;;18567:224;18554:1;18551;18547:9;18542:14;;18507:284;;;18511:14;18807:3;18800:10;;18208:608;;;18084:732;;;;:::o;18822:831::-;19085:4;19123:3;19112:9;19108:19;19100:27;;19137:71;19205:1;19194:9;19190:17;19181:6;19137:71;:::i;:::-;19218:80;19294:2;19283:9;19279:18;19270:6;19218:80;:::i;:::-;19345:9;19339:4;19335:20;19330:2;19319:9;19315:18;19308:48;19373:108;19476:4;19467:6;19373:108;:::i;:::-;19365:116;;19491:72;19559:2;19548:9;19544:18;19535:6;19491:72;:::i;:::-;19573:73;19641:3;19630:9;19626:19;19617:6;19573:73;:::i;:::-;18822:831;;;;;;;;:::o;19659:223::-;19799:34;19795:1;19787:6;19783:14;19776:58;19868:6;19863:2;19855:6;19851:15;19844:31;19659:223;:::o;19888:366::-;20030:3;20051:67;20115:2;20110:3;20051:67;:::i;:::-;20044:74;;20127:93;20216:3;20127:93;:::i;:::-;20245:2;20240:3;20236:12;20229:19;;19888:366;;;:::o;20260:419::-;20426:4;20464:2;20453:9;20449:18;20441:26;;20513:9;20507:4;20503:20;20499:1;20488:9;20484:17;20477:47;20541:131;20667:4;20541:131;:::i;:::-;20533:139;;20260:419;;;:::o;20685:221::-;20825:34;20821:1;20813:6;20809:14;20802:58;20894:4;20889:2;20881:6;20877:15;20870:29;20685:221;:::o;20912:366::-;21054:3;21075:67;21139:2;21134:3;21075:67;:::i;:::-;21068:74;;21151:93;21240:3;21151:93;:::i;:::-;21269:2;21264:3;21260:12;21253:19;;20912:366;;;:::o;21284:419::-;21450:4;21488:2;21477:9;21473:18;21465:26;;21537:9;21531:4;21527:20;21523:1;21512:9;21508:17;21501:47;21565:131;21691:4;21565:131;:::i;:::-;21557:139;;21284:419;;;:::o;21709:224::-;21849:34;21845:1;21837:6;21833:14;21826:58;21918:7;21913:2;21905:6;21901:15;21894:32;21709:224;:::o;21939:366::-;22081:3;22102:67;22166:2;22161:3;22102:67;:::i;:::-;22095:74;;22178:93;22267:3;22178:93;:::i;:::-;22296:2;22291:3;22287:12;22280:19;;21939:366;;;:::o;22311:419::-;22477:4;22515:2;22504:9;22500:18;22492:26;;22564:9;22558:4;22554:20;22550:1;22539:9;22535:17;22528:47;22592:131;22718:4;22592:131;:::i;:::-;22584:139;;22311:419;;;:::o;22736:222::-;22876:34;22872:1;22864:6;22860:14;22853:58;22945:5;22940:2;22932:6;22928:15;22921:30;22736:222;:::o;22964:366::-;23106:3;23127:67;23191:2;23186:3;23127:67;:::i;:::-;23120:74;;23203:93;23292:3;23203:93;:::i;:::-;23321:2;23316:3;23312:12;23305:19;;22964:366;;;:::o;23336:419::-;23502:4;23540:2;23529:9;23525:18;23517:26;;23589:9;23583:4;23579:20;23575:1;23564:9;23560:17;23553:47;23617:131;23743:4;23617:131;:::i;:::-;23609:139;;23336:419;;;:::o;23761:228::-;23901:34;23897:1;23889:6;23885:14;23878:58;23970:11;23965:2;23957:6;23953:15;23946:36;23761:228;:::o;23995:366::-;24137:3;24158:67;24222:2;24217:3;24158:67;:::i;:::-;24151:74;;24234:93;24323:3;24234:93;:::i;:::-;24352:2;24347:3;24343:12;24336:19;;23995:366;;;:::o;24367:419::-;24533:4;24571:2;24560:9;24556:18;24548:26;;24620:9;24614:4;24610:20;24606:1;24595:9;24591:17;24584:47;24648:131;24774:4;24648:131;:::i;:::-;24640:139;;24367:419;;;:::o;24792:304::-;24932:34;24928:1;24920:6;24916:14;24909:58;25001:34;24996:2;24988:6;24984:15;24977:59;25070:18;25065:2;25057:6;25053:15;25046:43;24792:304;:::o;25102:366::-;25244:3;25265:67;25329:2;25324:3;25265:67;:::i;:::-;25258:74;;25341:93;25430:3;25341:93;:::i;:::-;25459:2;25454:3;25450:12;25443:19;;25102:366;;;:::o;25474:419::-;25640:4;25678:2;25667:9;25663:18;25655:26;;25727:9;25721:4;25717:20;25713:1;25702:9;25698:17;25691:47;25755:131;25881:4;25755:131;:::i;:::-;25747:139;;25474:419;;;:::o;25899:182::-;26039:34;26035:1;26027:6;26023:14;26016:58;25899:182;:::o;26087:366::-;26229:3;26250:67;26314:2;26309:3;26250:67;:::i;:::-;26243:74;;26326:93;26415:3;26326:93;:::i;:::-;26444:2;26439:3;26435:12;26428:19;;26087:366;;;:::o;26459:419::-;26625:4;26663:2;26652:9;26648:18;26640:26;;26712:9;26706:4;26702:20;26698:1;26687:9;26683:17;26676:47;26740:131;26866:4;26740:131;:::i;:::-;26732:139;;26459:419;;;:::o;26884:191::-;26924:4;26944:20;26962:1;26944:20;:::i;:::-;26939:25;;26978:20;26996:1;26978:20;:::i;:::-;26973:25;;27017:1;27014;27011:8;27008:34;;;27022:18;;:::i;:::-;27008:34;27067:1;27064;27060:9;27052:17;;26884:191;;;;:::o;27081:229::-;27221:34;27217:1;27209:6;27205:14;27198:58;27290:12;27285:2;27277:6;27273:15;27266:37;27081:229;:::o;27316:366::-;27458:3;27479:67;27543:2;27538:3;27479:67;:::i;:::-;27472:74;;27555:93;27644:3;27555:93;:::i;:::-;27673:2;27668:3;27664:12;27657:19;;27316:366;;;:::o;27688:419::-;27854:4;27892:2;27881:9;27877:18;27869:26;;27941:9;27935:4;27931:20;27927:1;27916:9;27912:17;27905:47;27969:131;28095:4;27969:131;:::i;:::-;27961:139;;27688:419;;;:::o;28113:348::-;28153:7;28176:20;28194:1;28176:20;:::i;:::-;28171:25;;28210:20;28228:1;28210:20;:::i;:::-;28205:25;;28398:1;28330:66;28326:74;28323:1;28320:81;28315:1;28308:9;28301:17;28297:105;28294:131;;;28405:18;;:::i;:::-;28294:131;28453:1;28450;28446:9;28435:20;;28113:348;;;;:::o;28467:180::-;28515:77;28512:1;28505:88;28612:4;28609:1;28602:15;28636:4;28633:1;28626:15;28653:185;28693:1;28710:20;28728:1;28710:20;:::i;:::-;28705:25;;28744:20;28762:1;28744:20;:::i;:::-;28739:25;;28783:1;28773:35;;28788:18;;:::i;:::-;28773:35;28830:1;28827;28823:9;28818:14;;28653:185;;;;:::o;28844:220::-;28984:34;28980:1;28972:6;28968:14;28961:58;29053:3;29048:2;29040:6;29036:15;29029:28;28844:220;:::o;29070:366::-;29212:3;29233:67;29297:2;29292:3;29233:67;:::i;:::-;29226:74;;29309:93;29398:3;29309:93;:::i;:::-;29427:2;29422:3;29418:12;29411:19;;29070:366;;;:::o;29442:419::-;29608:4;29646:2;29635:9;29631:18;29623:26;;29695:9;29689:4;29685:20;29681:1;29670:9;29666:17;29659:47;29723:131;29849:4;29723:131;:::i;:::-;29715:139;;29442:419;;;:::o;29867:305::-;29907:3;29926:20;29944:1;29926:20;:::i;:::-;29921:25;;29960:20;29978:1;29960:20;:::i;:::-;29955:25;;30114:1;30046:66;30042:74;30039:1;30036:81;30033:107;;;30120:18;;:::i;:::-;30033:107;30164:1;30161;30157:9;30150:16;;29867:305;;;;:::o;30178:177::-;30318:29;30314:1;30306:6;30302:14;30295:53;30178:177;:::o;30361:366::-;30503:3;30524:67;30588:2;30583:3;30524:67;:::i;:::-;30517:74;;30600:93;30689:3;30600:93;:::i;:::-;30718:2;30713:3;30709:12;30702:19;;30361:366;;;:::o;30733:419::-;30899:4;30937:2;30926:9;30922:18;30914:26;;30986:9;30980:4;30976:20;30972:1;30961:9;30957:17;30950:47;31014:131;31140:4;31014:131;:::i;:::-;31006:139;;30733:419;;;:::o

Swarm Source

ipfs://75ad8c6599ab52272d45598509928089c0d86e4390908970ecb8a7ddcbbfae0c
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.