ETH Price: $2,976.02 (+2.60%)
Gas: 2 Gwei

Token

BOOBIE COIN (BC)
 

Overview

Max Total Supply

1,000,000,000 BC

Holders

65

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
4,539,290.302371138 BC

Value
$0.00
0xf78c85912fb262adb80af75e207ac065bca029f1
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:
BOOBIECOIN

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-03
*/

// SPDX-License-Identifier: Unlicensed
/**

Boobie Coin (BC) is launched by the two community member who got rekt by Tale of Sphinx after the dev did his first call via a Nude celebrity caller and then abandon us. We lost our funds, as usual we get rugged every day. So we decided to launch a token ourselves and call it Boobie coin.

Taxes are 4/4 - used for marketing, dextools , recovering LP lock investment(as we can't afford, this is our hard earned money) and to pay ourselves and admins/mods for the effort . We want to make this the best community coin ever as this is the first token launched by the community for the community and to have some fun with Boobies.. We mean Boobie Coin :D

We also use this avenue to raise awareness about Breast Cancer with our mini project!

Tg: https://t.me/BoobieCoin_Portal
Twitter: https://twitter.com/BoobieCoin

Tax: 4/4


*/

pragma solidity ^0.8.9;

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

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

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

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

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

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

}

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

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

contract BOOBIECOIN is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "BOOBIE COIN";
    string private constant _symbol = "BC";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 4;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 4;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap;
    address payable private _developmentAddress = payable(0x04894A512653284B93473f315969e9E67594083B);
    address payable private _marketingAddress = payable(0x04894A512653284B93473f315969e9E67594083B);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount =   20000000 * 10**9;
    uint256 public _maxWalletSize = 20000000 * 10**9;
    uint256 public _swapTokensAtAmount = 1000000 * 10**9;

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

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;

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

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

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

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

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

    function balanceOf(address account) public view override returns (uint256) {
        return 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 removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

    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");

        if (from != owner() && to != owner()) {

            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: This account is approved");

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

        _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 sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }

    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

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

    function unblockBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

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

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

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

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","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":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052670de0b6b3a76400006000196200001c91906200073f565b6000196200002b9190620007a6565b600655600060085560046009556000600a556004600b55600a54600c55600b54600d55600c54600e55600d54600f557304894a512653284b93473f315969e9e67594083b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507304894a512653284b93473f315969e9e67594083b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555066470de4df82000060165566470de4df82000060175566038d7ea4c680006018553480156200016757600080fd5b5060006200017a620006d560201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600654600260006200022f620006d560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200030e57600080fd5b505afa15801562000323573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034991906200084b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003ac57600080fd5b505afa158015620003c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e791906200084b565b6040518363ffffffff1660e01b8152600401620004069291906200088e565b602060405180830381600087803b1580156200042157600080fd5b505af115801562000436573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200045c91906200084b565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004b2620006dd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200065f620006d560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620006c69190620008cc565b60405180910390a350620008e9565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200074c8262000706565b9150620007598362000706565b9250826200076c576200076b62000710565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007b38262000706565b9150620007c08362000706565b925082821015620007d657620007d562000777565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200081382620007e6565b9050919050565b620008258162000806565b81146200083157600080fd5b50565b60008151905062000845816200081a565b92915050565b600060208284031215620008645762000863620007e1565b5b6000620008748482850162000834565b91505092915050565b620008888162000806565b82525050565b6000604082019050620008a560008301856200087d565b620008b460208301846200087d565b9392505050565b620008c68162000706565b82525050565b6000602082019050620008e36000830184620008bb565b92915050565b61331380620008f96000396000f3fe6080604052600436106101385760003560e01c8063715018a6116100ab5780638f70ccf71161006f5780638f70ccf7146104105780638f9a55c01461043957806395d89b4114610464578063a9059cbb1461048f578063bfd79284146104cc578063dd62ed3e146105095761013f565b8063715018a61461034f578063751039fc146103665780637d1db4a51461037d5780637f2feddc146103a85780638da5cb5b146103e55761013f565b806323b872dd116100fd57806323b872dd1461022b5780632fd689e314610268578063313ce5671461029357806349bd5a5e146102be5780636b999053146102e957806370a08231146103125761013f565b8062b8cf2a1461014457806306fdde031461016d578063095ea7b3146101985780631694505e146101d557806318160ddd146102005761013f565b3661013f57005b600080fd5b34801561015057600080fd5b5061016b600480360381019061016691906124a6565b610546565b005b34801561017957600080fd5b50610182610670565b60405161018f9190612577565b60405180910390f35b3480156101a457600080fd5b506101bf60048036038101906101ba91906125cf565b6106ad565b6040516101cc919061262a565b60405180910390f35b3480156101e157600080fd5b506101ea6106cb565b6040516101f791906126a4565b60405180910390f35b34801561020c57600080fd5b506102156106f1565b60405161022291906126ce565b60405180910390f35b34801561023757600080fd5b50610252600480360381019061024d91906126e9565b610701565b60405161025f919061262a565b60405180910390f35b34801561027457600080fd5b5061027d6107da565b60405161028a91906126ce565b60405180910390f35b34801561029f57600080fd5b506102a86107e0565b6040516102b59190612758565b60405180910390f35b3480156102ca57600080fd5b506102d36107e9565b6040516102e09190612782565b60405180910390f35b3480156102f557600080fd5b50610310600480360381019061030b919061279d565b61080f565b005b34801561031e57600080fd5b506103396004803603810190610334919061279d565b6108ff565b60405161034691906126ce565b60405180910390f35b34801561035b57600080fd5b50610364610950565b005b34801561037257600080fd5b5061037b610aa3565b005b34801561038957600080fd5b50610392610b97565b60405161039f91906126ce565b60405180910390f35b3480156103b457600080fd5b506103cf60048036038101906103ca919061279d565b610b9d565b6040516103dc91906126ce565b60405180910390f35b3480156103f157600080fd5b506103fa610bb5565b6040516104079190612782565b60405180910390f35b34801561041c57600080fd5b50610437600480360381019061043291906127f6565b610bde565b005b34801561044557600080fd5b5061044e610c90565b60405161045b91906126ce565b60405180910390f35b34801561047057600080fd5b50610479610c96565b6040516104869190612577565b60405180910390f35b34801561049b57600080fd5b506104b660048036038101906104b191906125cf565b610cd3565b6040516104c3919061262a565b60405180910390f35b3480156104d857600080fd5b506104f360048036038101906104ee919061279d565b610cf1565b604051610500919061262a565b60405180910390f35b34801561051557600080fd5b50610530600480360381019061052b9190612823565b610d11565b60405161053d91906126ce565b60405180910390f35b61054e610d98565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d2906128af565b60405180910390fd5b60005b815181101561066c57600160106000848481518110610600576105ff6128cf565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806106649061292d565b9150506105de565b5050565b60606040518060400160405280600b81526020017f424f4f42494520434f494e000000000000000000000000000000000000000000815250905090565b60006106c16106ba610d98565b8484610da0565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b600061070e848484610f6b565b6107cf8461071a610d98565b6107ca856040518060600160405280602881526020016132b660289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610780610d98565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117f09092919063ffffffff16565b610da0565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610817610d98565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089b906128af565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610949600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611854565b9050919050565b610958610d98565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109dc906128af565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610aab610d98565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2f906128af565b60405180910390fd5b670de0b6b3a7640000601681905550670de0b6b3a76400006017819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf670de0b6b3a7640000604051610b8d91906126ce565b60405180910390a1565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610be6610d98565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6a906128af565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600281526020017f4243000000000000000000000000000000000000000000000000000000000000815250905090565b6000610ce7610ce0610d98565b8484610f6b565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e07906129e8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7790612a7a565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f5e91906126ce565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd290612b0c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561104b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104290612b9e565b60405180910390fd5b6000811161108e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108590612c30565b60405180910390fd5b611096610bb5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561110457506110d4610bb5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156114ef57601560149054906101000a900460ff1661119357611125610bb5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118990612cc2565b60405180910390fd5b5b6016548111156111d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cf90612d2e565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561127c5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6112bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b290612d9a565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611368576017548161131d846108ff565b6113279190612dba565b10611367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135e90612e82565b60405180910390fd5b5b6000611373306108ff565b905060006018548210159050601654821061138e5760165491505b8080156113a6575060158054906101000a900460ff16155b80156114005750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156114185750601560169054906101000a900460ff165b801561146e5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156114c45750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156114ec576114d2826118c2565b600047905060008111156114ea576114e947611b48565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806115965750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806116495750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156116485750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561165757600090506117de565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156117025750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561171a57600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156117c55750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156117dd57600a54600c81905550600b54600d819055505b5b6117ea84848484611bb4565b50505050565b6000838311158290611838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182f9190612577565b60405180910390fd5b50600083856118479190612ea2565b9050809150509392505050565b600060065482111561189b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189290612f48565b60405180910390fd5b60006118a5611be1565b90506118ba8184611c0c90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156118f9576118f8612305565b5b6040519080825280602002602001820160405280156119275781602001602082028036833780820191505090505b509050308160008151811061193f5761193e6128cf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156119e157600080fd5b505afa1580156119f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a199190612f7d565b81600181518110611a2d57611a2c6128cf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611a9430601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610da0565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611af89594939291906130a3565b600060405180830381600087803b158015611b1257600080fd5b505af1158015611b26573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611bb0573d6000803e3d6000fd5b5050565b80611bc257611bc1611c56565b5b611bcd848484611c99565b80611bdb57611bda611e64565b5b50505050565b6000806000611bee611e78565b91509150611c058183611c0c90919063ffffffff16565b9250505090565b6000611c4e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ed7565b905092915050565b6000600c54148015611c6a57506000600d54145b15611c7457611c97565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080611cab87611f3a565b955095509550955095509550611d0986600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fa290919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d9e85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fec90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611dea8161204a565b611df48483612107565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611e5191906126ce565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a76400009050611eac670de0b6b3a7640000600654611c0c90919063ffffffff16565b821015611eca57600654670de0b6b3a7640000935093505050611ed3565b81819350935050505b9091565b60008083118290611f1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f159190612577565b60405180910390fd5b5060008385611f2d919061312c565b9050809150509392505050565b6000806000806000806000806000611f578a600c54600d54612141565b9250925092506000611f67611be1565b90506000806000611f7a8e8787876121d7565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000611fe483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506117f0565b905092915050565b6000808284611ffb9190612dba565b905083811015612040576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612037906131a9565b60405180910390fd5b8091505092915050565b6000612054611be1565b9050600061206b828461226090919063ffffffff16565b90506120bf81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fec90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61211c82600654611fa290919063ffffffff16565b60068190555061213781600754611fec90919063ffffffff16565b6007819055505050565b60008060008061216d606461215f888a61226090919063ffffffff16565b611c0c90919063ffffffff16565b905060006121976064612189888b61226090919063ffffffff16565b611c0c90919063ffffffff16565b905060006121c0826121b2858c611fa290919063ffffffff16565b611fa290919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806121f0858961226090919063ffffffff16565b90506000612207868961226090919063ffffffff16565b9050600061221e878961226090919063ffffffff16565b90506000612247826122398587611fa290919063ffffffff16565b611fa290919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083141561227357600090506122d5565b6000828461228191906131c9565b9050828482612290919061312c565b146122d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c790613295565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61233d826122f4565b810181811067ffffffffffffffff8211171561235c5761235b612305565b5b80604052505050565b600061236f6122db565b905061237b8282612334565b919050565b600067ffffffffffffffff82111561239b5761239a612305565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006123dc826123b1565b9050919050565b6123ec816123d1565b81146123f757600080fd5b50565b600081359050612409816123e3565b92915050565b600061242261241d84612380565b612365565b90508083825260208201905060208402830185811115612445576124446123ac565b5b835b8181101561246e578061245a88826123fa565b845260208401935050602081019050612447565b5050509392505050565b600082601f83011261248d5761248c6122ef565b5b813561249d84826020860161240f565b91505092915050565b6000602082840312156124bc576124bb6122e5565b5b600082013567ffffffffffffffff8111156124da576124d96122ea565b5b6124e684828501612478565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561252957808201518184015260208101905061250e565b83811115612538576000848401525b50505050565b6000612549826124ef565b61255381856124fa565b935061256381856020860161250b565b61256c816122f4565b840191505092915050565b60006020820190508181036000830152612591818461253e565b905092915050565b6000819050919050565b6125ac81612599565b81146125b757600080fd5b50565b6000813590506125c9816125a3565b92915050565b600080604083850312156125e6576125e56122e5565b5b60006125f4858286016123fa565b9250506020612605858286016125ba565b9150509250929050565b60008115159050919050565b6126248161260f565b82525050565b600060208201905061263f600083018461261b565b92915050565b6000819050919050565b600061266a612665612660846123b1565b612645565b6123b1565b9050919050565b600061267c8261264f565b9050919050565b600061268e82612671565b9050919050565b61269e81612683565b82525050565b60006020820190506126b96000830184612695565b92915050565b6126c881612599565b82525050565b60006020820190506126e360008301846126bf565b92915050565b600080600060608486031215612702576127016122e5565b5b6000612710868287016123fa565b9350506020612721868287016123fa565b9250506040612732868287016125ba565b9150509250925092565b600060ff82169050919050565b6127528161273c565b82525050565b600060208201905061276d6000830184612749565b92915050565b61277c816123d1565b82525050565b60006020820190506127976000830184612773565b92915050565b6000602082840312156127b3576127b26122e5565b5b60006127c1848285016123fa565b91505092915050565b6127d38161260f565b81146127de57600080fd5b50565b6000813590506127f0816127ca565b92915050565b60006020828403121561280c5761280b6122e5565b5b600061281a848285016127e1565b91505092915050565b6000806040838503121561283a576128396122e5565b5b6000612848858286016123fa565b9250506020612859858286016123fa565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006128996020836124fa565b91506128a482612863565b602082019050919050565b600060208201905081810360008301526128c88161288c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061293882612599565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561296b5761296a6128fe565b5b600182019050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006129d26024836124fa565b91506129dd82612976565b604082019050919050565b60006020820190508181036000830152612a01816129c5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612a646022836124fa565b9150612a6f82612a08565b604082019050919050565b60006020820190508181036000830152612a9381612a57565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612af66025836124fa565b9150612b0182612a9a565b604082019050919050565b60006020820190508181036000830152612b2581612ae9565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612b886023836124fa565b9150612b9382612b2c565b604082019050919050565b60006020820190508181036000830152612bb781612b7b565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612c1a6029836124fa565b9150612c2582612bbe565b604082019050919050565b60006020820190508181036000830152612c4981612c0d565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000612cac603f836124fa565b9150612cb782612c50565b604082019050919050565b60006020820190508181036000830152612cdb81612c9f565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000612d18601c836124fa565b9150612d2382612ce2565b602082019050919050565b60006020820190508181036000830152612d4781612d0b565b9050919050565b7f544f4b454e3a2054686973206163636f756e7420697320617070726f76656400600082015250565b6000612d84601f836124fa565b9150612d8f82612d4e565b602082019050919050565b60006020820190508181036000830152612db381612d77565b9050919050565b6000612dc582612599565b9150612dd083612599565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612e0557612e046128fe565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000612e6c6023836124fa565b9150612e7782612e10565b604082019050919050565b60006020820190508181036000830152612e9b81612e5f565b9050919050565b6000612ead82612599565b9150612eb883612599565b925082821015612ecb57612eca6128fe565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000612f32602a836124fa565b9150612f3d82612ed6565b604082019050919050565b60006020820190508181036000830152612f6181612f25565b9050919050565b600081519050612f77816123e3565b92915050565b600060208284031215612f9357612f926122e5565b5b6000612fa184828501612f68565b91505092915050565b6000819050919050565b6000612fcf612fca612fc584612faa565b612645565b612599565b9050919050565b612fdf81612fb4565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61301a816123d1565b82525050565b600061302c8383613011565b60208301905092915050565b6000602082019050919050565b600061305082612fe5565b61305a8185612ff0565b935061306583613001565b8060005b8381101561309657815161307d8882613020565b975061308883613038565b925050600181019050613069565b5085935050505092915050565b600060a0820190506130b860008301886126bf565b6130c56020830187612fd6565b81810360408301526130d78186613045565b90506130e66060830185612773565b6130f360808301846126bf565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061313782612599565b915061314283612599565b925082613152576131516130fd565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613193601b836124fa565b915061319e8261315d565b602082019050919050565b600060208201905081810360008301526131c281613186565b9050919050565b60006131d482612599565b91506131df83612599565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613218576132176128fe565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061327f6021836124fa565b915061328a82613223565b604082019050919050565b600060208201905081810360008301526132ae81613272565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122052989835e7225497b7965c4806243da5921255d26467926d69eb026fa3204b2f64736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101385760003560e01c8063715018a6116100ab5780638f70ccf71161006f5780638f70ccf7146104105780638f9a55c01461043957806395d89b4114610464578063a9059cbb1461048f578063bfd79284146104cc578063dd62ed3e146105095761013f565b8063715018a61461034f578063751039fc146103665780637d1db4a51461037d5780637f2feddc146103a85780638da5cb5b146103e55761013f565b806323b872dd116100fd57806323b872dd1461022b5780632fd689e314610268578063313ce5671461029357806349bd5a5e146102be5780636b999053146102e957806370a08231146103125761013f565b8062b8cf2a1461014457806306fdde031461016d578063095ea7b3146101985780631694505e146101d557806318160ddd146102005761013f565b3661013f57005b600080fd5b34801561015057600080fd5b5061016b600480360381019061016691906124a6565b610546565b005b34801561017957600080fd5b50610182610670565b60405161018f9190612577565b60405180910390f35b3480156101a457600080fd5b506101bf60048036038101906101ba91906125cf565b6106ad565b6040516101cc919061262a565b60405180910390f35b3480156101e157600080fd5b506101ea6106cb565b6040516101f791906126a4565b60405180910390f35b34801561020c57600080fd5b506102156106f1565b60405161022291906126ce565b60405180910390f35b34801561023757600080fd5b50610252600480360381019061024d91906126e9565b610701565b60405161025f919061262a565b60405180910390f35b34801561027457600080fd5b5061027d6107da565b60405161028a91906126ce565b60405180910390f35b34801561029f57600080fd5b506102a86107e0565b6040516102b59190612758565b60405180910390f35b3480156102ca57600080fd5b506102d36107e9565b6040516102e09190612782565b60405180910390f35b3480156102f557600080fd5b50610310600480360381019061030b919061279d565b61080f565b005b34801561031e57600080fd5b506103396004803603810190610334919061279d565b6108ff565b60405161034691906126ce565b60405180910390f35b34801561035b57600080fd5b50610364610950565b005b34801561037257600080fd5b5061037b610aa3565b005b34801561038957600080fd5b50610392610b97565b60405161039f91906126ce565b60405180910390f35b3480156103b457600080fd5b506103cf60048036038101906103ca919061279d565b610b9d565b6040516103dc91906126ce565b60405180910390f35b3480156103f157600080fd5b506103fa610bb5565b6040516104079190612782565b60405180910390f35b34801561041c57600080fd5b50610437600480360381019061043291906127f6565b610bde565b005b34801561044557600080fd5b5061044e610c90565b60405161045b91906126ce565b60405180910390f35b34801561047057600080fd5b50610479610c96565b6040516104869190612577565b60405180910390f35b34801561049b57600080fd5b506104b660048036038101906104b191906125cf565b610cd3565b6040516104c3919061262a565b60405180910390f35b3480156104d857600080fd5b506104f360048036038101906104ee919061279d565b610cf1565b604051610500919061262a565b60405180910390f35b34801561051557600080fd5b50610530600480360381019061052b9190612823565b610d11565b60405161053d91906126ce565b60405180910390f35b61054e610d98565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d2906128af565b60405180910390fd5b60005b815181101561066c57600160106000848481518110610600576105ff6128cf565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806106649061292d565b9150506105de565b5050565b60606040518060400160405280600b81526020017f424f4f42494520434f494e000000000000000000000000000000000000000000815250905090565b60006106c16106ba610d98565b8484610da0565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b600061070e848484610f6b565b6107cf8461071a610d98565b6107ca856040518060600160405280602881526020016132b660289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610780610d98565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117f09092919063ffffffff16565b610da0565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610817610d98565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089b906128af565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610949600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611854565b9050919050565b610958610d98565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109dc906128af565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610aab610d98565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2f906128af565b60405180910390fd5b670de0b6b3a7640000601681905550670de0b6b3a76400006017819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf670de0b6b3a7640000604051610b8d91906126ce565b60405180910390a1565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610be6610d98565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6a906128af565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600281526020017f4243000000000000000000000000000000000000000000000000000000000000815250905090565b6000610ce7610ce0610d98565b8484610f6b565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e07906129e8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7790612a7a565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f5e91906126ce565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd290612b0c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561104b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104290612b9e565b60405180910390fd5b6000811161108e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108590612c30565b60405180910390fd5b611096610bb5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561110457506110d4610bb5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156114ef57601560149054906101000a900460ff1661119357611125610bb5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118990612cc2565b60405180910390fd5b5b6016548111156111d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cf90612d2e565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561127c5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6112bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b290612d9a565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611368576017548161131d846108ff565b6113279190612dba565b10611367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135e90612e82565b60405180910390fd5b5b6000611373306108ff565b905060006018548210159050601654821061138e5760165491505b8080156113a6575060158054906101000a900460ff16155b80156114005750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156114185750601560169054906101000a900460ff165b801561146e5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156114c45750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156114ec576114d2826118c2565b600047905060008111156114ea576114e947611b48565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806115965750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806116495750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156116485750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561165757600090506117de565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156117025750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561171a57600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156117c55750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156117dd57600a54600c81905550600b54600d819055505b5b6117ea84848484611bb4565b50505050565b6000838311158290611838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182f9190612577565b60405180910390fd5b50600083856118479190612ea2565b9050809150509392505050565b600060065482111561189b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189290612f48565b60405180910390fd5b60006118a5611be1565b90506118ba8184611c0c90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156118f9576118f8612305565b5b6040519080825280602002602001820160405280156119275781602001602082028036833780820191505090505b509050308160008151811061193f5761193e6128cf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156119e157600080fd5b505afa1580156119f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a199190612f7d565b81600181518110611a2d57611a2c6128cf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611a9430601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610da0565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611af89594939291906130a3565b600060405180830381600087803b158015611b1257600080fd5b505af1158015611b26573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611bb0573d6000803e3d6000fd5b5050565b80611bc257611bc1611c56565b5b611bcd848484611c99565b80611bdb57611bda611e64565b5b50505050565b6000806000611bee611e78565b91509150611c058183611c0c90919063ffffffff16565b9250505090565b6000611c4e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ed7565b905092915050565b6000600c54148015611c6a57506000600d54145b15611c7457611c97565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080611cab87611f3a565b955095509550955095509550611d0986600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fa290919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d9e85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fec90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611dea8161204a565b611df48483612107565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611e5191906126ce565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a76400009050611eac670de0b6b3a7640000600654611c0c90919063ffffffff16565b821015611eca57600654670de0b6b3a7640000935093505050611ed3565b81819350935050505b9091565b60008083118290611f1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f159190612577565b60405180910390fd5b5060008385611f2d919061312c565b9050809150509392505050565b6000806000806000806000806000611f578a600c54600d54612141565b9250925092506000611f67611be1565b90506000806000611f7a8e8787876121d7565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000611fe483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506117f0565b905092915050565b6000808284611ffb9190612dba565b905083811015612040576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612037906131a9565b60405180910390fd5b8091505092915050565b6000612054611be1565b9050600061206b828461226090919063ffffffff16565b90506120bf81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fec90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61211c82600654611fa290919063ffffffff16565b60068190555061213781600754611fec90919063ffffffff16565b6007819055505050565b60008060008061216d606461215f888a61226090919063ffffffff16565b611c0c90919063ffffffff16565b905060006121976064612189888b61226090919063ffffffff16565b611c0c90919063ffffffff16565b905060006121c0826121b2858c611fa290919063ffffffff16565b611fa290919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806121f0858961226090919063ffffffff16565b90506000612207868961226090919063ffffffff16565b9050600061221e878961226090919063ffffffff16565b90506000612247826122398587611fa290919063ffffffff16565b611fa290919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083141561227357600090506122d5565b6000828461228191906131c9565b9050828482612290919061312c565b146122d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c790613295565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61233d826122f4565b810181811067ffffffffffffffff8211171561235c5761235b612305565b5b80604052505050565b600061236f6122db565b905061237b8282612334565b919050565b600067ffffffffffffffff82111561239b5761239a612305565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006123dc826123b1565b9050919050565b6123ec816123d1565b81146123f757600080fd5b50565b600081359050612409816123e3565b92915050565b600061242261241d84612380565b612365565b90508083825260208201905060208402830185811115612445576124446123ac565b5b835b8181101561246e578061245a88826123fa565b845260208401935050602081019050612447565b5050509392505050565b600082601f83011261248d5761248c6122ef565b5b813561249d84826020860161240f565b91505092915050565b6000602082840312156124bc576124bb6122e5565b5b600082013567ffffffffffffffff8111156124da576124d96122ea565b5b6124e684828501612478565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561252957808201518184015260208101905061250e565b83811115612538576000848401525b50505050565b6000612549826124ef565b61255381856124fa565b935061256381856020860161250b565b61256c816122f4565b840191505092915050565b60006020820190508181036000830152612591818461253e565b905092915050565b6000819050919050565b6125ac81612599565b81146125b757600080fd5b50565b6000813590506125c9816125a3565b92915050565b600080604083850312156125e6576125e56122e5565b5b60006125f4858286016123fa565b9250506020612605858286016125ba565b9150509250929050565b60008115159050919050565b6126248161260f565b82525050565b600060208201905061263f600083018461261b565b92915050565b6000819050919050565b600061266a612665612660846123b1565b612645565b6123b1565b9050919050565b600061267c8261264f565b9050919050565b600061268e82612671565b9050919050565b61269e81612683565b82525050565b60006020820190506126b96000830184612695565b92915050565b6126c881612599565b82525050565b60006020820190506126e360008301846126bf565b92915050565b600080600060608486031215612702576127016122e5565b5b6000612710868287016123fa565b9350506020612721868287016123fa565b9250506040612732868287016125ba565b9150509250925092565b600060ff82169050919050565b6127528161273c565b82525050565b600060208201905061276d6000830184612749565b92915050565b61277c816123d1565b82525050565b60006020820190506127976000830184612773565b92915050565b6000602082840312156127b3576127b26122e5565b5b60006127c1848285016123fa565b91505092915050565b6127d38161260f565b81146127de57600080fd5b50565b6000813590506127f0816127ca565b92915050565b60006020828403121561280c5761280b6122e5565b5b600061281a848285016127e1565b91505092915050565b6000806040838503121561283a576128396122e5565b5b6000612848858286016123fa565b9250506020612859858286016123fa565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006128996020836124fa565b91506128a482612863565b602082019050919050565b600060208201905081810360008301526128c88161288c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061293882612599565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561296b5761296a6128fe565b5b600182019050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006129d26024836124fa565b91506129dd82612976565b604082019050919050565b60006020820190508181036000830152612a01816129c5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612a646022836124fa565b9150612a6f82612a08565b604082019050919050565b60006020820190508181036000830152612a9381612a57565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612af66025836124fa565b9150612b0182612a9a565b604082019050919050565b60006020820190508181036000830152612b2581612ae9565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612b886023836124fa565b9150612b9382612b2c565b604082019050919050565b60006020820190508181036000830152612bb781612b7b565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612c1a6029836124fa565b9150612c2582612bbe565b604082019050919050565b60006020820190508181036000830152612c4981612c0d565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000612cac603f836124fa565b9150612cb782612c50565b604082019050919050565b60006020820190508181036000830152612cdb81612c9f565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000612d18601c836124fa565b9150612d2382612ce2565b602082019050919050565b60006020820190508181036000830152612d4781612d0b565b9050919050565b7f544f4b454e3a2054686973206163636f756e7420697320617070726f76656400600082015250565b6000612d84601f836124fa565b9150612d8f82612d4e565b602082019050919050565b60006020820190508181036000830152612db381612d77565b9050919050565b6000612dc582612599565b9150612dd083612599565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612e0557612e046128fe565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000612e6c6023836124fa565b9150612e7782612e10565b604082019050919050565b60006020820190508181036000830152612e9b81612e5f565b9050919050565b6000612ead82612599565b9150612eb883612599565b925082821015612ecb57612eca6128fe565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000612f32602a836124fa565b9150612f3d82612ed6565b604082019050919050565b60006020820190508181036000830152612f6181612f25565b9050919050565b600081519050612f77816123e3565b92915050565b600060208284031215612f9357612f926122e5565b5b6000612fa184828501612f68565b91505092915050565b6000819050919050565b6000612fcf612fca612fc584612faa565b612645565b612599565b9050919050565b612fdf81612fb4565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61301a816123d1565b82525050565b600061302c8383613011565b60208301905092915050565b6000602082019050919050565b600061305082612fe5565b61305a8185612ff0565b935061306583613001565b8060005b8381101561309657815161307d8882613020565b975061308883613038565b925050600181019050613069565b5085935050505092915050565b600060a0820190506130b860008301886126bf565b6130c56020830187612fd6565b81810360408301526130d78186613045565b90506130e66060830185612773565b6130f360808301846126bf565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061313782612599565b915061314283612599565b925082613152576131516130fd565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613193601b836124fa565b915061319e8261315d565b602082019050919050565b600060208201905081810360008301526131c281613186565b9050919050565b60006131d482612599565b91506131df83612599565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613218576132176128fe565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061327f6021836124fa565b915061328a82613223565b604082019050919050565b600060208201905081810360008301526132ae81613272565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122052989835e7225497b7965c4806243da5921255d26467926d69eb026fa3204b2f64736f6c63430008090033

Deployed Bytecode Sourcemap

4669:12016:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12848:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7167:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8092:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6013:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7444:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8293:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6313:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7353:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6061:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13025:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7547:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2408:148;;;;;;;;;;;;;:::i;:::-;;16258:159;;;;;;;;;;;;;:::i;:::-;;6203:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5755:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2194:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12739:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6258:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7258:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7693:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5717:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7900:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12848:169;2331:12;:10;:12::i;:::-;2321:22;;:6;;;;;;;;;;:22;;;2313:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12924:9:::1;12919:91;12943:5;:12;12939:1;:16;12919:91;;;12994:4;12977;:14;12982:5;12988:1;12982:8;;;;;;;;:::i;:::-;;;;;;;;12977:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12957:3;;;;;:::i;:::-;;;;12919:91;;;;12848:169:::0;:::o;7167:83::-;7204:13;7237:5;;;;;;;;;;;;;;;;;7230:12;;7167:83;:::o;8092:193::-;8194:4;8216:39;8225:12;:10;:12::i;:::-;8239:7;8248:6;8216:8;:39::i;:::-;8273:4;8266:11;;8092:193;;;;:::o;6013:41::-;;;;;;;;;;;;;:::o;7444:95::-;7497:7;5219:18;7517:14;;7444:95;:::o;8293:446::-;8425:4;8442:36;8452:6;8460:9;8471:6;8442:9;:36::i;:::-;8489:220;8512:6;8533:12;:10;:12::i;:::-;8560:138;8616:6;8560:138;;;;;;;;;;;;;;;;;:11;:19;8572:6;8560:19;;;;;;;;;;;;;;;:33;8580:12;:10;:12::i;:::-;8560:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8489:8;:220::i;:::-;8727:4;8720:11;;8293:446;;;;;:::o;6313:52::-;;;;:::o;7353:83::-;7394:5;4893:1;7412:16;;7353:83;:::o;6061:28::-;;;;;;;;;;;;;:::o;13025:92::-;2331:12;:10;:12::i;:::-;2321:22;;:6;;;;;;;;;;:22;;;2313:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13104:5:::1;13089:4;:12;13094:6;13089:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13025:92:::0;:::o;7547:138::-;7613:7;7640:37;7660:7;:16;7668:7;7660:16;;;;;;;;;;;;;;;;7640:19;:37::i;:::-;7633:44;;7547:138;;;:::o;2408:148::-;2331:12;:10;:12::i;:::-;2321:22;;:6;;;;;;;;;;:22;;;2313:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2515:1:::1;2478:40;;2499:6;::::0;::::1;;;;;;;;2478:40;;;;;;;;;;;;2546:1;2529:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2408:148::o:0;16258:159::-;2331:12;:10;:12::i;:::-;2321:22;;:6;;;;;;;;;;:22;;;2313:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5219:18:::1;16311:12;:22;;;;5219:18;16344:14;:22;;;;16382:27;5219:18;16382:27;;;;;;:::i;:::-;;;;;;;;16258:159::o:0;6203:48::-;;;;:::o;5755:43::-;;;;;;;;;;;;;;;;;:::o;2194:79::-;2232:7;2259:6;;;;;;;;;;;2252:13;;2194:79;:::o;12739:101::-;2331:12;:10;:12::i;:::-;2321:22;;:6;;;;;;;;;;:22;;;2313:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12820:12:::1;12806:11;;:26;;;;;;;;;;;;;;;;;;12739:101:::0;:::o;6258:48::-;;;;:::o;7258:87::-;7297:13;7330:7;;;;;;;;;;;;;;;;;7323:14;;7258:87;:::o;7693:199::-;7798:4;7820:42;7830:12;:10;:12::i;:::-;7844:9;7855:6;7820:9;:42::i;:::-;7880:4;7873:11;;7693:199;;;;:::o;5717:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;7900:184::-;8017:7;8049:11;:18;8061:5;8049:18;;;;;;;;;;;;;;;:27;8068:7;8049:27;;;;;;;;;;;;;;;;8042:34;;7900:184;;;;:::o;953:98::-;1006:7;1033:10;1026:17;;953:98;:::o;9430:369::-;9574:1;9557:19;;:5;:19;;;;9549:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9655:1;9636:21;;:7;:21;;;;9628:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9737:6;9707:11;:18;9719:5;9707:18;;;;;;;;;;;;;;;:27;9726:7;9707:27;;;;;;;;;;;;;;;:36;;;;9775:7;9759:32;;9768:5;9759:32;;;9784:6;9759:32;;;;;;:::i;:::-;;;;;;;;9430:369;;;:::o;9807:2326::-;9945:1;9929:18;;:4;:18;;;;9921:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10022:1;10008:16;;:2;:16;;;;10000:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10092:1;10083:6;:10;10075:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10164:7;:5;:7::i;:::-;10156:15;;:4;:15;;;;:32;;;;;10181:7;:5;:7::i;:::-;10175:13;;:2;:13;;;;10156:32;10152:1255;;;10245:11;;;;;;;;;;;10240:144;;10293:7;:5;:7::i;:::-;10285:15;;:4;:15;;;10277:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;10240:144;10418:12;;10408:6;:22;;10400:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10487:4;:10;10492:4;10487:10;;;;;;;;;;;;;;;;;;;;;;;;;10486:11;:24;;;;;10502:4;:8;10507:2;10502:8;;;;;;;;;;;;;;;;;;;;;;;;;10501:9;10486:24;10478:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10572:13;;;;;;;;;;;10566:19;;:2;:19;;;10563:146;;10639:14;;10630:6;10614:13;10624:2;10614:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10606:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10563:146;10725:28;10756:24;10774:4;10756:9;:24::i;:::-;10725:55;;10795:12;10834:19;;10810:20;:43;;10795:58;;10897:12;;10873:20;:36;10870:124;;10966:12;;10943:35;;10870:124;11014:7;:18;;;;;11026:6;;;;;;;;;;11025:7;11014:18;:43;;;;;11044:13;;;;;;;;;;;11036:21;;:4;:21;;;;11014:43;:58;;;;;11061:11;;;;;;;;;;;11014:58;:87;;;;;11077:18;:24;11096:4;11077:24;;;;;;;;;;;;;;;;;;;;;;;;;11076:25;11014:87;:114;;;;;11106:18;:22;11125:2;11106:22;;;;;;;;;;;;;;;;;;;;;;;;;11105:23;11014:114;11010:386;;;11149:38;11166:20;11149:16;:38::i;:::-;11206:26;11235:21;11206:50;;11300:1;11279:18;:22;11275:106;;;11326:35;11339:21;11326:12;:35::i;:::-;11275:106;11130:266;11010:386;10190:1217;;10152:1255;11419:12;11434:4;11419:19;;11483:18;:24;11502:4;11483:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11511:18;:22;11530:2;11511:22;;;;;;;;;;;;;;;;;;;;;;;;;11483:50;11482:102;;;;11547:13;;;;;;;;;;;11539:21;;:4;:21;;;;:44;;;;;11570:13;;;;;;;;;;;11564:19;;:2;:19;;;;11539:44;11482:102;11478:594;;;11611:5;11601:15;;11478:594;;;11694:13;;;;;;;;;;;11686:21;;:4;:21;;;:55;;;;;11725:15;;;;;;;;;;;11711:30;;:2;:30;;;;11686:55;11683:162;;;11774:14;;11762:9;:26;;;;11817:12;;11807:7;:22;;;;11683:162;11904:13;;;;;;;;;;;11898:19;;:2;:19;;;:55;;;;;11937:15;;;;;;;;;;;11921:32;;:4;:32;;;;11898:55;11894:165;;;11986:15;;11974:9;:27;;;;12030:13;;12020:7;:23;;;;11894:165;11478:594;12084:41;12099:4;12105:2;12109:6;12117:7;12084:14;:41::i;:::-;9910:2223;9807:2326;;;:::o;2920:224::-;3040:7;3073:1;3068;:6;;3076:12;3060:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3100:9;3116:1;3112;:5;;;;:::i;:::-;3100:17;;3135:1;3128:8;;;2920:224;;;;;:::o;8747:323::-;8842:7;8900;;8889;:18;;8867:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8988:19;9010:10;:8;:10::i;:::-;8988:32;;9038:24;9050:11;9038:7;:11;;:24;;;;:::i;:::-;9031:31;;;8747:323;;;:::o;12141:483::-;6468:4;6459:6;;:13;;;;;;;;;;;;;;;;;;12219:21:::1;12257:1;12243:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12219:40;;12288:4;12270;12275:1;12270:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12314:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12304:4;12309:1;12304:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12347:62;12364:4;12379:15;;;;;;;;;;;12397:11;12347:8;:62::i;:::-;12420:15;;;;;;;;;;;:66;;;12501:11;12527:1;12543:4;12570;12590:15;12420:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12208:416;6504:5:::0;6495:6;;:14;;;;;;;;;;;;;;;;;;12141:483;:::o;12632:99::-;12689:17;;;;;;;;;;;:26;;:34;12716:6;12689:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12632:99;:::o;13125:282::-;13281:7;13276:28;;13290:14;:12;:14::i;:::-;13276:28;13315:44;13333:6;13341:9;13352:6;13315:17;:44::i;:::-;13375:7;13370:29;;13384:15;:13;:15::i;:::-;13370:29;13125:282;;;;:::o;16086:164::-;16128:7;16149:15;16166;16185:19;:17;:19::i;:::-;16148:56;;;;16222:20;16234:7;16222;:11;;:20;;;;:::i;:::-;16215:27;;;;16086:164;:::o;3406:132::-;3464:7;3491:39;3495:1;3498;3491:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3484:46;;3406:132;;;;:::o;9078:219::-;9138:1;9125:9;;:14;:30;;;;;9154:1;9143:7;;:12;9125:30;9121:43;;;9157:7;;9121:43;9196:9;;9176:17;:29;;;;9234:7;;9216:15;:25;;;;9266:1;9254:9;:13;;;;9288:1;9278:7;:11;;;;9078:219;:::o;13415:610::-;13562:15;13592:23;13630:12;13657:23;13695:12;13722:13;13749:19;13760:7;13749:10;:19::i;:::-;13547:221;;;;;;;;;;;;13797:28;13817:7;13797;:15;13805:6;13797:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13779:7;:15;13787:6;13779:15;;;;;;;;;;;;;;;:46;;;;13857:39;13880:15;13857:7;:18;13865:9;13857:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13836:7;:18;13844:9;13836:18;;;;;;;;;;;;;;;:60;;;;13907:16;13917:5;13907:9;:16::i;:::-;13934:23;13946:4;13952;13934:11;:23::i;:::-;13990:9;13973:44;;13982:6;13973:44;;;14001:15;13973:44;;;;;;:::i;:::-;;;;;;;;13536:489;;;;;;13415:610;;;:::o;9305:117::-;9361:17;;9349:9;:29;;;;9399:15;;9389:7;:25;;;;9305:117::o;16425:257::-;16476:7;16485;16505:15;16523:7;;16505:25;;16541:15;5219:18;16541:25;;16591:20;5219:18;16591:7;;:11;;:20;;;;:::i;:::-;16581:7;:30;16577:61;;;16621:7;;5219:18;16613:25;;;;;;;;16577:61;16657:7;16666;16649:25;;;;;;16425:257;;;:::o;3546:223::-;3666:7;3698:1;3694;:5;3701:12;3686:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3725:9;3741:1;3737;:5;;;;:::i;:::-;3725:17;;3760:1;3753:8;;;3546:223;;;;;:::o;14444:615::-;14544:7;14566;14588;14610;14632;14654;14690:23;14715:12;14729:13;14759:40;14771:7;14780:9;;14791:7;;14759:11;:40::i;:::-;14689:110;;;;;;14810:19;14832:10;:8;:10::i;:::-;14810:32;;14854:15;14871:23;14896:12;14925:46;14937:7;14946:4;14952:5;14959:11;14925;:46::i;:::-;14853:118;;;;;;14990:7;14999:15;15016:4;15022:15;15039:4;15045:5;14982:69;;;;;;;;;;;;;;;;;;;14444:615;;;;;;;:::o;2776:136::-;2834:7;2861:43;2865:1;2868;2861:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2854:50;;2776:136;;;;:::o;2589:179::-;2647:7;2667:9;2683:1;2679;:5;;;;:::i;:::-;2667:17;;2708:1;2703;:6;;2695:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2759:1;2752:8;;;2589:179;;;;:::o;14033:211::-;14086:19;14108:10;:8;:10::i;:::-;14086:32;;14129:13;14145:22;14155:11;14145:5;:9;;:22;;;;:::i;:::-;14129:38;;14203:33;14230:5;14203:7;:22;14219:4;14203:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14178:7;:22;14194:4;14178:22;;;;;;;;;;;;;;;:58;;;;14075:169;;14033:211;:::o;14252:147::-;14330:17;14342:4;14330:7;;:11;;:17;;;;:::i;:::-;14320:7;:27;;;;14371:20;14386:4;14371:10;;:14;;:20;;;;:::i;:::-;14358:10;:33;;;;14252:147;;:::o;15067:469::-;15236:7;15258;15280;15315:12;15330:30;15356:3;15330:21;15342:8;15330:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15315:45;;15371:13;15387:28;15411:3;15387:19;15399:6;15387:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15371:44;;15426:23;15452:28;15474:5;15452:17;15464:4;15452:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15426:54;;15499:15;15516:4;15522:5;15491:37;;;;;;;;;15067:469;;;;;;;:::o;15544:534::-;15738:7;15760;15782;15817:15;15835:24;15847:11;15835:7;:11;;:24;;;;:::i;:::-;15817:42;;15870:12;15885:21;15894:11;15885:4;:8;;:21;;;;:::i;:::-;15870:36;;15917:13;15933:22;15943:11;15933:5;:9;;:22;;;;:::i;:::-;15917:38;;15966:23;15992:28;16014:5;15992:17;16004:4;15992:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15966:54;;16039:7;16048:15;16065:4;16031:39;;;;;;;;;;15544:534;;;;;;;;:::o;3152:246::-;3210:7;3239:1;3234;:6;3230:47;;;3264:1;3257:8;;;;3230:47;3287:9;3303:1;3299;:5;;;;:::i;:::-;3287:17;;3332:1;3327;3323;:5;;;;:::i;:::-;:10;3315:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3389:1;3382:8;;;3152:246;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:307::-;4139:1;4149:113;4163:6;4160:1;4157:13;4149:113;;;4248:1;4243:3;4239:11;4233:18;4229:1;4224:3;4220:11;4213:39;4185:2;4182:1;4178:10;4173:15;;4149:113;;;4280:6;4277:1;4274:13;4271:101;;;4360:1;4351:6;4346:3;4342:16;4335:27;4271:101;4120:258;4071:307;;;:::o;4384:364::-;4472:3;4500:39;4533:5;4500:39;:::i;:::-;4555:71;4619:6;4614:3;4555:71;:::i;:::-;4548:78;;4635:52;4680:6;4675:3;4668:4;4661:5;4657:16;4635:52;:::i;:::-;4712:29;4734:6;4712:29;:::i;:::-;4707:3;4703:39;4696:46;;4476:272;4384:364;;;;:::o;4754:313::-;4867:4;4905:2;4894:9;4890:18;4882:26;;4954:9;4948:4;4944:20;4940:1;4929:9;4925:17;4918:47;4982:78;5055:4;5046:6;4982:78;:::i;:::-;4974:86;;4754:313;;;;:::o;5073:77::-;5110:7;5139:5;5128:16;;5073:77;;;:::o;5156:122::-;5229:24;5247:5;5229:24;:::i;:::-;5222:5;5219:35;5209:63;;5268:1;5265;5258:12;5209:63;5156:122;:::o;5284:139::-;5330:5;5368:6;5355:20;5346:29;;5384:33;5411:5;5384:33;:::i;:::-;5284:139;;;;:::o;5429:474::-;5497:6;5505;5554:2;5542:9;5533:7;5529:23;5525:32;5522:119;;;5560:79;;:::i;:::-;5522:119;5680:1;5705:53;5750:7;5741:6;5730:9;5726:22;5705:53;:::i;:::-;5695:63;;5651:117;5807:2;5833:53;5878:7;5869:6;5858:9;5854:22;5833:53;:::i;:::-;5823:63;;5778:118;5429:474;;;;;:::o;5909:90::-;5943:7;5986:5;5979:13;5972:21;5961:32;;5909:90;;;:::o;6005:109::-;6086:21;6101:5;6086:21;:::i;:::-;6081:3;6074:34;6005:109;;:::o;6120:210::-;6207:4;6245:2;6234:9;6230:18;6222:26;;6258:65;6320:1;6309:9;6305:17;6296:6;6258:65;:::i;:::-;6120:210;;;;:::o;6336:60::-;6364:3;6385:5;6378:12;;6336:60;;;:::o;6402:142::-;6452:9;6485:53;6503:34;6512:24;6530:5;6512:24;:::i;:::-;6503:34;:::i;:::-;6485:53;:::i;:::-;6472:66;;6402:142;;;:::o;6550:126::-;6600:9;6633:37;6664:5;6633:37;:::i;:::-;6620:50;;6550:126;;;:::o;6682:152::-;6758:9;6791:37;6822:5;6791:37;:::i;:::-;6778:50;;6682:152;;;:::o;6840:183::-;6953:63;7010:5;6953:63;:::i;:::-;6948:3;6941:76;6840:183;;:::o;7029:274::-;7148:4;7186:2;7175:9;7171:18;7163:26;;7199:97;7293:1;7282:9;7278:17;7269:6;7199:97;:::i;:::-;7029:274;;;;:::o;7309:118::-;7396:24;7414:5;7396:24;:::i;:::-;7391:3;7384:37;7309:118;;:::o;7433:222::-;7526:4;7564:2;7553:9;7549:18;7541:26;;7577:71;7645:1;7634:9;7630:17;7621:6;7577:71;:::i;:::-;7433:222;;;;:::o;7661:619::-;7738:6;7746;7754;7803:2;7791:9;7782:7;7778:23;7774:32;7771:119;;;7809:79;;:::i;:::-;7771:119;7929:1;7954:53;7999:7;7990:6;7979:9;7975:22;7954:53;:::i;:::-;7944:63;;7900:117;8056:2;8082:53;8127:7;8118:6;8107:9;8103:22;8082:53;:::i;:::-;8072:63;;8027:118;8184:2;8210:53;8255:7;8246:6;8235:9;8231:22;8210:53;:::i;:::-;8200:63;;8155:118;7661:619;;;;;:::o;8286:86::-;8321:7;8361:4;8354:5;8350:16;8339:27;;8286:86;;;:::o;8378:112::-;8461:22;8477:5;8461:22;:::i;:::-;8456:3;8449:35;8378:112;;:::o;8496:214::-;8585:4;8623:2;8612:9;8608:18;8600:26;;8636:67;8700:1;8689:9;8685:17;8676:6;8636:67;:::i;:::-;8496:214;;;;:::o;8716:118::-;8803:24;8821:5;8803:24;:::i;:::-;8798:3;8791:37;8716:118;;:::o;8840:222::-;8933:4;8971:2;8960:9;8956:18;8948:26;;8984:71;9052:1;9041:9;9037:17;9028:6;8984:71;:::i;:::-;8840:222;;;;:::o;9068:329::-;9127:6;9176:2;9164:9;9155:7;9151:23;9147:32;9144:119;;;9182:79;;:::i;:::-;9144:119;9302:1;9327:53;9372:7;9363:6;9352:9;9348:22;9327:53;:::i;:::-;9317:63;;9273:117;9068:329;;;;:::o;9403:116::-;9473:21;9488:5;9473:21;:::i;:::-;9466:5;9463:32;9453:60;;9509:1;9506;9499:12;9453:60;9403:116;:::o;9525:133::-;9568:5;9606:6;9593:20;9584:29;;9622:30;9646:5;9622:30;:::i;:::-;9525:133;;;;:::o;9664:323::-;9720:6;9769:2;9757:9;9748:7;9744:23;9740:32;9737:119;;;9775:79;;:::i;:::-;9737:119;9895:1;9920:50;9962:7;9953:6;9942:9;9938:22;9920:50;:::i;:::-;9910:60;;9866:114;9664:323;;;;:::o;9993:474::-;10061:6;10069;10118:2;10106:9;10097:7;10093:23;10089:32;10086:119;;;10124:79;;:::i;:::-;10086:119;10244:1;10269:53;10314:7;10305:6;10294:9;10290:22;10269:53;:::i;:::-;10259:63;;10215:117;10371:2;10397:53;10442:7;10433:6;10422:9;10418:22;10397:53;:::i;:::-;10387:63;;10342:118;9993:474;;;;;:::o;10473:182::-;10613:34;10609:1;10601:6;10597:14;10590:58;10473:182;:::o;10661:366::-;10803:3;10824:67;10888:2;10883:3;10824:67;:::i;:::-;10817:74;;10900:93;10989:3;10900:93;:::i;:::-;11018:2;11013:3;11009:12;11002:19;;10661:366;;;:::o;11033:419::-;11199:4;11237:2;11226:9;11222:18;11214:26;;11286:9;11280:4;11276:20;11272:1;11261:9;11257:17;11250:47;11314:131;11440:4;11314:131;:::i;:::-;11306:139;;11033:419;;;:::o;11458:180::-;11506:77;11503:1;11496:88;11603:4;11600:1;11593:15;11627:4;11624:1;11617:15;11644:180;11692:77;11689:1;11682:88;11789:4;11786:1;11779:15;11813:4;11810:1;11803:15;11830:233;11869:3;11892:24;11910:5;11892:24;:::i;:::-;11883:33;;11938:66;11931:5;11928:77;11925:103;;;12008:18;;:::i;:::-;11925:103;12055:1;12048:5;12044:13;12037:20;;11830:233;;;:::o;12069:223::-;12209:34;12205:1;12197:6;12193:14;12186:58;12278:6;12273:2;12265:6;12261:15;12254:31;12069:223;:::o;12298:366::-;12440:3;12461:67;12525:2;12520:3;12461:67;:::i;:::-;12454:74;;12537:93;12626:3;12537:93;:::i;:::-;12655:2;12650:3;12646:12;12639:19;;12298:366;;;:::o;12670:419::-;12836:4;12874:2;12863:9;12859:18;12851:26;;12923:9;12917:4;12913:20;12909:1;12898:9;12894:17;12887:47;12951:131;13077:4;12951:131;:::i;:::-;12943:139;;12670:419;;;:::o;13095:221::-;13235:34;13231:1;13223:6;13219:14;13212:58;13304:4;13299:2;13291:6;13287:15;13280:29;13095:221;:::o;13322:366::-;13464:3;13485:67;13549:2;13544:3;13485:67;:::i;:::-;13478:74;;13561:93;13650:3;13561:93;:::i;:::-;13679:2;13674:3;13670:12;13663:19;;13322:366;;;:::o;13694:419::-;13860:4;13898:2;13887:9;13883:18;13875:26;;13947:9;13941:4;13937:20;13933:1;13922:9;13918:17;13911:47;13975:131;14101:4;13975:131;:::i;:::-;13967:139;;13694:419;;;:::o;14119:224::-;14259:34;14255:1;14247:6;14243:14;14236:58;14328:7;14323:2;14315:6;14311:15;14304:32;14119:224;:::o;14349:366::-;14491:3;14512:67;14576:2;14571:3;14512:67;:::i;:::-;14505:74;;14588:93;14677:3;14588:93;:::i;:::-;14706:2;14701:3;14697:12;14690:19;;14349:366;;;:::o;14721:419::-;14887:4;14925:2;14914:9;14910:18;14902:26;;14974:9;14968:4;14964:20;14960:1;14949:9;14945:17;14938:47;15002:131;15128:4;15002:131;:::i;:::-;14994:139;;14721:419;;;:::o;15146:222::-;15286:34;15282:1;15274:6;15270:14;15263:58;15355:5;15350:2;15342:6;15338:15;15331:30;15146:222;:::o;15374:366::-;15516:3;15537:67;15601:2;15596:3;15537:67;:::i;:::-;15530:74;;15613:93;15702:3;15613:93;:::i;:::-;15731:2;15726:3;15722:12;15715:19;;15374:366;;;:::o;15746:419::-;15912:4;15950:2;15939:9;15935:18;15927:26;;15999:9;15993:4;15989:20;15985:1;15974:9;15970:17;15963:47;16027:131;16153:4;16027:131;:::i;:::-;16019:139;;15746:419;;;:::o;16171:228::-;16311:34;16307:1;16299:6;16295:14;16288:58;16380:11;16375:2;16367:6;16363:15;16356:36;16171:228;:::o;16405:366::-;16547:3;16568:67;16632:2;16627:3;16568:67;:::i;:::-;16561:74;;16644:93;16733:3;16644:93;:::i;:::-;16762:2;16757:3;16753:12;16746:19;;16405:366;;;:::o;16777:419::-;16943:4;16981:2;16970:9;16966:18;16958:26;;17030:9;17024:4;17020:20;17016:1;17005:9;17001:17;16994:47;17058:131;17184:4;17058:131;:::i;:::-;17050:139;;16777:419;;;:::o;17202:250::-;17342:34;17338:1;17330:6;17326:14;17319:58;17411:33;17406:2;17398:6;17394:15;17387:58;17202:250;:::o;17458:366::-;17600:3;17621:67;17685:2;17680:3;17621:67;:::i;:::-;17614:74;;17697:93;17786:3;17697:93;:::i;:::-;17815:2;17810:3;17806:12;17799:19;;17458:366;;;:::o;17830:419::-;17996:4;18034:2;18023:9;18019:18;18011:26;;18083:9;18077:4;18073:20;18069:1;18058:9;18054:17;18047:47;18111:131;18237:4;18111:131;:::i;:::-;18103:139;;17830:419;;;:::o;18255:178::-;18395:30;18391:1;18383:6;18379:14;18372:54;18255:178;:::o;18439:366::-;18581:3;18602:67;18666:2;18661:3;18602:67;:::i;:::-;18595:74;;18678:93;18767:3;18678:93;:::i;:::-;18796:2;18791:3;18787:12;18780:19;;18439:366;;;:::o;18811:419::-;18977:4;19015:2;19004:9;19000:18;18992:26;;19064:9;19058:4;19054:20;19050:1;19039:9;19035:17;19028:47;19092:131;19218:4;19092:131;:::i;:::-;19084:139;;18811:419;;;:::o;19236:181::-;19376:33;19372:1;19364:6;19360:14;19353:57;19236:181;:::o;19423:366::-;19565:3;19586:67;19650:2;19645:3;19586:67;:::i;:::-;19579:74;;19662:93;19751:3;19662:93;:::i;:::-;19780:2;19775:3;19771:12;19764:19;;19423:366;;;:::o;19795:419::-;19961:4;19999:2;19988:9;19984:18;19976:26;;20048:9;20042:4;20038:20;20034:1;20023:9;20019:17;20012:47;20076:131;20202:4;20076:131;:::i;:::-;20068:139;;19795:419;;;:::o;20220:305::-;20260:3;20279:20;20297:1;20279:20;:::i;:::-;20274:25;;20313:20;20331:1;20313:20;:::i;:::-;20308:25;;20467:1;20399:66;20395:74;20392:1;20389:81;20386:107;;;20473:18;;:::i;:::-;20386:107;20517:1;20514;20510:9;20503:16;;20220:305;;;;:::o;20531:222::-;20671:34;20667:1;20659:6;20655:14;20648:58;20740:5;20735:2;20727:6;20723:15;20716:30;20531:222;:::o;20759:366::-;20901:3;20922:67;20986:2;20981:3;20922:67;:::i;:::-;20915:74;;20998:93;21087:3;20998:93;:::i;:::-;21116:2;21111:3;21107:12;21100:19;;20759:366;;;:::o;21131:419::-;21297:4;21335:2;21324:9;21320:18;21312:26;;21384:9;21378:4;21374:20;21370:1;21359:9;21355:17;21348:47;21412:131;21538:4;21412:131;:::i;:::-;21404:139;;21131:419;;;:::o;21556:191::-;21596:4;21616:20;21634:1;21616:20;:::i;:::-;21611:25;;21650:20;21668:1;21650:20;:::i;:::-;21645:25;;21689:1;21686;21683:8;21680:34;;;21694:18;;:::i;:::-;21680:34;21739:1;21736;21732:9;21724:17;;21556:191;;;;:::o;21753:229::-;21893:34;21889:1;21881:6;21877:14;21870:58;21962:12;21957:2;21949:6;21945:15;21938:37;21753:229;:::o;21988:366::-;22130:3;22151:67;22215:2;22210:3;22151:67;:::i;:::-;22144:74;;22227:93;22316:3;22227:93;:::i;:::-;22345:2;22340:3;22336:12;22329:19;;21988:366;;;:::o;22360:419::-;22526:4;22564:2;22553:9;22549:18;22541:26;;22613:9;22607:4;22603:20;22599:1;22588:9;22584:17;22577:47;22641:131;22767:4;22641:131;:::i;:::-;22633:139;;22360:419;;;:::o;22785:143::-;22842:5;22873:6;22867:13;22858:22;;22889:33;22916:5;22889:33;:::i;:::-;22785:143;;;;:::o;22934:351::-;23004:6;23053:2;23041:9;23032:7;23028:23;23024:32;23021:119;;;23059:79;;:::i;:::-;23021:119;23179:1;23204:64;23260:7;23251:6;23240:9;23236:22;23204:64;:::i;:::-;23194:74;;23150:128;22934:351;;;;:::o;23291:85::-;23336:7;23365:5;23354:16;;23291:85;;;:::o;23382:158::-;23440:9;23473:61;23491:42;23500:32;23526:5;23500:32;:::i;:::-;23491:42;:::i;:::-;23473:61;:::i;:::-;23460:74;;23382:158;;;:::o;23546:147::-;23641:45;23680:5;23641:45;:::i;:::-;23636:3;23629:58;23546:147;;:::o;23699:114::-;23766:6;23800:5;23794:12;23784:22;;23699:114;;;:::o;23819:184::-;23918:11;23952:6;23947:3;23940:19;23992:4;23987:3;23983:14;23968:29;;23819:184;;;;:::o;24009:132::-;24076:4;24099:3;24091:11;;24129:4;24124:3;24120:14;24112:22;;24009:132;;;:::o;24147:108::-;24224:24;24242:5;24224:24;:::i;:::-;24219:3;24212:37;24147:108;;:::o;24261:179::-;24330:10;24351:46;24393:3;24385:6;24351:46;:::i;:::-;24429:4;24424:3;24420:14;24406:28;;24261:179;;;;:::o;24446:113::-;24516:4;24548;24543:3;24539:14;24531:22;;24446:113;;;:::o;24595:732::-;24714:3;24743:54;24791:5;24743:54;:::i;:::-;24813:86;24892:6;24887:3;24813:86;:::i;:::-;24806:93;;24923:56;24973:5;24923:56;:::i;:::-;25002:7;25033:1;25018:284;25043:6;25040:1;25037:13;25018:284;;;25119:6;25113:13;25146:63;25205:3;25190:13;25146:63;:::i;:::-;25139:70;;25232:60;25285:6;25232:60;:::i;:::-;25222:70;;25078:224;25065:1;25062;25058:9;25053:14;;25018:284;;;25022:14;25318:3;25311:10;;24719:608;;;24595:732;;;;:::o;25333:831::-;25596:4;25634:3;25623:9;25619:19;25611:27;;25648:71;25716:1;25705:9;25701:17;25692:6;25648:71;:::i;:::-;25729:80;25805:2;25794:9;25790:18;25781:6;25729:80;:::i;:::-;25856:9;25850:4;25846:20;25841:2;25830:9;25826:18;25819:48;25884:108;25987:4;25978:6;25884:108;:::i;:::-;25876:116;;26002:72;26070:2;26059:9;26055:18;26046:6;26002:72;:::i;:::-;26084:73;26152:3;26141:9;26137:19;26128:6;26084:73;:::i;:::-;25333:831;;;;;;;;:::o;26170:180::-;26218:77;26215:1;26208:88;26315:4;26312:1;26305:15;26339:4;26336:1;26329:15;26356:185;26396:1;26413:20;26431:1;26413:20;:::i;:::-;26408:25;;26447:20;26465:1;26447:20;:::i;:::-;26442:25;;26486:1;26476:35;;26491:18;;:::i;:::-;26476:35;26533:1;26530;26526:9;26521:14;;26356:185;;;;:::o;26547:177::-;26687:29;26683:1;26675:6;26671:14;26664:53;26547:177;:::o;26730:366::-;26872:3;26893:67;26957:2;26952:3;26893:67;:::i;:::-;26886:74;;26969:93;27058:3;26969:93;:::i;:::-;27087:2;27082:3;27078:12;27071:19;;26730:366;;;:::o;27102:419::-;27268:4;27306:2;27295:9;27291:18;27283:26;;27355:9;27349:4;27345:20;27341:1;27330:9;27326:17;27319:47;27383:131;27509:4;27383:131;:::i;:::-;27375:139;;27102:419;;;:::o;27527:348::-;27567:7;27590:20;27608:1;27590:20;:::i;:::-;27585:25;;27624:20;27642:1;27624:20;:::i;:::-;27619:25;;27812:1;27744:66;27740:74;27737:1;27734:81;27729:1;27722:9;27715:17;27711:105;27708:131;;;27819:18;;:::i;:::-;27708:131;27867:1;27864;27860:9;27849:20;;27527:348;;;;:::o;27881:220::-;28021:34;28017:1;28009:6;28005:14;27998:58;28090:3;28085:2;28077:6;28073:15;28066:28;27881:220;:::o;28107:366::-;28249:3;28270:67;28334:2;28329:3;28270:67;:::i;:::-;28263:74;;28346:93;28435:3;28346:93;:::i;:::-;28464:2;28459:3;28455:12;28448:19;;28107:366;;;:::o;28479:419::-;28645:4;28683:2;28672:9;28668:18;28660:26;;28732:9;28726:4;28722:20;28718:1;28707:9;28703:17;28696:47;28760:131;28886:4;28760:131;:::i;:::-;28752:139;;28479:419;;;:::o

Swarm Source

ipfs://52989835e7225497b7965c4806243da5921255d26467926d69eb026fa3204b2f
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.