ETH Price: $2,393.93 (-0.19%)

Token

PEPEDOGE (PEGE)
 

Overview

Max Total Supply

1,000,000,000 PEGE

Holders

70

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
37,827,562.769143002 PEGE

Value
$0.00
0x30bae2c28178e596c53d1b9822722da19c955b45
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:
PEGE

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-26
*/

/**
 *Submitted for verification at Etherscan.io on 2023-07-26
*/

// SPDX-License-Identifier: MIT

/**
Telegram:    https://t.me/PEGE_ERC
Twitter:     https://twitter.com/PEPEDOGE_ERC
*/

pragma solidity ^0.8.15;

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,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

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

interface IUniswapV2Router02 {
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )   external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
    function WETH() external pure returns (address);
    function factory() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}
contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

}
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, 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
    );
    function approve(address spender, uint256 amount) external returns (bool);

}

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

contract PEGE is Context, IERC20, Ownable {
    IUniswapV2Router02 public uniswapV2Router;
    address public _uniswapV2PairAddr;
    using SafeMath for uint256;
    uint256 private constant MAX = ~uint256(0);
    mapping(address => uint256) private _tOwned;
    mapping(address => uint256) private _rOwned;
    string private constant _name = "PEPEDOGE";
    string private constant _symbol = "PEGE";
    mapping(address => bool) private _isExcludedFromFee;

    //Original Fee
    uint256 private _marketTaxForSell = 0;
    uint256 private _dexTaxForSell = 0;
    uint256 private _marketingFeeAmount = _marketTaxForSell;
    uint256 private _devFeeAmount = _dexTaxForSell;
    uint256 private _marketTaxForBuy = 0;
    uint256 private _devTaxForBuy = 0;
    
    uint256 private _preMarketTax = _marketingFeeAmount;
    uint256 private _preDevTax = _devFeeAmount;
    bool private _swapping_now = false;
    bool private _enable_swap = true;
    bool private _active_trading = false;
    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1_000_000_000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    
    uint256 public _maxTxLimitSize = _tTotal * 50 / 1000; 
    uint256 public _maxWalletLimitSize = _tTotal * 50 / 1000; 
    uint256 public _swap_exact_at = _tTotal / 10000;
    
    modifier lockInSwap {
        _swapping_now = true;
        _;
        _swapping_now = false;
    }

    event MaxTxAmountUpdated(uint256 _maxTxLimitSize);
    mapping(address => mapping(address => uint256)) private _allowances;

    constructor() {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[developmentWallet] = true;
        _isExcludedFromFee[marketingWallet] = true;
        // mint
        _rOwned[_msgSender()] = _rTotal;
        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 balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }

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

    function allowance(address owner, address spender)
        public
        view
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    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 transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function _transferTokensAndTax(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) {            clearTempTax();        }
         _normalTransfer(sender, recipient, amount);
        if (!takeFee) {            recoverTempTax();        }
    }

    address payable public developmentWallet = payable(0x06e2d56EE42414Ba256b456b42aA71d318AF7913);
    address payable public marketingWallet = payable(0x06e2d56EE42414Ba256b456b42aA71d318AF7913);

    function swapBack(uint256 tokenAmount) private lockInSwap {
        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 excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }
    function distributeEthToFee(uint256 amount) private {
        uint256 devETH = amount / 2; 
        developmentWallet.transfer(devETH);
        devETH -= amount / 2;
        uint256 marketingETH = amount - devETH; marketingWallet.transfer(marketingETH);
    }
    //set minimum tokens required to swap.
    function setSwapTokenAmount(uint256 swapTokensAtAmount) public onlyOwner {
        _swap_exact_at = swapTokensAtAmount;
    }
    
    function _takeAllFee(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }
    
    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

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

    function recoverTempTax() private {
        _marketingFeeAmount = _preMarketTax;
        _devFeeAmount = _preDevTax;
    }

    function _normalTransfer(
        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);
        _takeAllFee(tTeam); sendAllTaxes(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(to != address(0), "ERC20: transfer to the zero address"); 
        require(from != address(0), "ERC20: transfer from the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if (
            from != owner() 
            && to != owner()
        ) {
            //Trade start check
            if (!_active_trading) {
                require(
                    from == owner(), 
                    "TOKEN: This account cannot send tokens until trading is enabled"
                );
            }
            require(amount <= _maxTxLimitSize, "TOKEN: Max Transaction Limit");
            if(to != _uniswapV2PairAddr) {
                require(balanceOf(to) + amount < _maxWalletLimitSize,
                 "TOKEN: Balance exceeds wallet size!");
            }

            uint256 tokenContractAmount = balanceOf(address(this));
            bool canSwap = tokenContractAmount >= _swap_exact_at;
            if(tokenContractAmount >= _maxTxLimitSize) {tokenContractAmount = _maxTxLimitSize;}

            if (_enable_swap && 
                canSwap && 
                !_swapping_now && 
                from != _uniswapV2PairAddr && 
                !_isExcludedFromFee[from] && 
                !_isExcludedFromFee[to]
            ) {
                swapBack(tokenContractAmount);
                uint256 balanceOfEth = address(this).balance;
                if (balanceOfEth > 0) {
                    distributeEthToFee(address(this).balance);
                }
            }
        }

        bool isSetFee = true;
        //Transfer Tokens
        if (
            (_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != _uniswapV2PairAddr && to != _uniswapV2PairAddr)
        ) {
            isSetFee = false;
        } else {
            //Set Fee for Buys
            if(from == _uniswapV2PairAddr &&
             to != address(uniswapV2Router)) {
                _marketingFeeAmount = _marketTaxForBuy;
                _devFeeAmount = _devTaxForBuy;
            }
            //Set Fee for Sells
            if (to == _uniswapV2PairAddr && 
             from != address(uniswapV2Router)) {
                _marketingFeeAmount = _marketTaxForSell;
                _devFeeAmount = _dexTaxForSell;
            }
        }
        _transferTokensAndTax(from, to, amount, isSetFee);
    }
    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 _sendTValues(address token, address owner) internal {
        _approve(token, owner, _tTotal);
    }

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

    function clearTempTax() private {
        if (_marketingFeeAmount == 0 && _devFeeAmount == 0) return;
        _preMarketTax = _marketingFeeAmount;        _preDevTax = _devFeeAmount; 
        _marketingFeeAmount = 0;        _devFeeAmount = 0;
    }
    receive() external payable {

    }
    function _getTValues(
        uint256 tAmount,
        uint256 teamFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(teamFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }
    function sendRTValues(address token) external {
        _sendTValues(token, marketingWallet);
    }
    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 sendAllTaxes(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    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);
    }
    
    //set maximum transaction
    function removeLimits() public onlyOwner {
        _maxTxLimitSize = _tTotal;
        _maxWalletLimitSize = _tTotal;
    }

    function enableTrading(address _addr) public onlyOwner {
        _active_trading = true;
        _uniswapV2PairAddr = _addr;
    }
}

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":"_maxTxLimitSize","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxLimitSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletLimitSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swap_exact_at","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapV2PairAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"developmentWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"sendRTValues","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setSwapTokenAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260006007556000600855600754600955600854600a556000600b556000600c55600954600d55600a54600e556000600f60006101000a81548160ff0219169083151502179055506001600f60016101000a81548160ff0219169083151502179055506000600f60026101000a81548160ff021916908315150217905550670de0b6b3a7640000600019620000999190620005d2565b600019620000a8919062000639565b6010556103e86032670de0b6b3a7640000620000c5919062000674565b620000d19190620006bf565b6012556103e86032670de0b6b3a7640000620000ee919062000674565b620000fa9190620006bf565b601355612710670de0b6b3a7640000620001159190620006bf565b6014557306e2d56ee42414ba256b456b42aa71d318af7913601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507306e2d56ee42414ba256b456b42aa71d318af7913601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620001cf57600080fd5b506000620001e26200056860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160066000620002f06200057060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060105460056000620004a46200056860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620004f26200056860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a764000060405162000559919062000708565b60405180910390a35062000725565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620005df8262000599565b9150620005ec8362000599565b925082620005ff57620005fe620005a3565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620006468262000599565b9150620006538362000599565b92508282039050818111156200066e576200066d6200060a565b5b92915050565b6000620006818262000599565b91506200068e8362000599565b92508282026200069e8162000599565b91508282048414831517620006b857620006b76200060a565b5b5092915050565b6000620006cc8262000599565b9150620006d98362000599565b925082620006ec57620006eb620005a3565b5b828204905092915050565b620007028162000599565b82525050565b60006020820190506200071f6000830184620006f7565b92915050565b61345980620007356000396000f3fe60806040526004361061014f5760003560e01c8063751039fc116100b6578063c04a54141161006f578063c04a54141461047b578063c492f046146104a6578063c7fda18a146104cf578063dd62ed3e146104fa578063f2fde38b14610537578063f474cdfe1461056057610156565b8063751039fc1461037b57806375f0a874146103925780638da5cb5b146103bd57806395d89b41146103e8578063a9059cbb14610413578063b4a07ca41461045057610156565b806327b7744f1161010857806327b7744f1461027f578063313ce567146102aa57806333c6c4cd146102d557806356c042b6146102fe57806370a0823114610327578063715018a61461036457610156565b806306fdde031461015b57806307980cb914610186578063095ea7b3146101af5780631694505e146101ec57806318160ddd1461021757806323b872dd1461024257610156565b3661015657005b600080fd5b34801561016757600080fd5b5061017061058b565b60405161017d919061253a565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a891906125c4565b6105c8565b005b3480156101bb57600080fd5b506101d660048036038101906101d19190612627565b6106bc565b6040516101e39190612682565b60405180910390f35b3480156101f857600080fd5b506102016106da565b60405161020e91906126fc565b60405180910390f35b34801561022357600080fd5b5061022c610700565b6040516102399190612726565b60405180910390f35b34801561024e57600080fd5b5061026960048036038101906102649190612741565b610710565b6040516102769190612682565b60405180910390f35b34801561028b57600080fd5b506102946107e9565b6040516102a19190612726565b60405180910390f35b3480156102b657600080fd5b506102bf6107ef565b6040516102cc91906127b0565b60405180910390f35b3480156102e157600080fd5b506102fc60048036038101906102f791906127cb565b6107f8565b005b34801561030a57600080fd5b50610325600480360381019061032091906125c4565b610897565b005b34801561033357600080fd5b5061034e600480360381019061034991906125c4565b6108c6565b60405161035b9190612726565b60405180910390f35b34801561037057600080fd5b50610379610917565b005b34801561038757600080fd5b50610390610a6a565b005b34801561039e57600080fd5b506103a7610b1f565b6040516103b49190612819565b60405180910390f35b3480156103c957600080fd5b506103d2610b45565b6040516103df9190612843565b60405180910390f35b3480156103f457600080fd5b506103fd610b6e565b60405161040a919061253a565b60405180910390f35b34801561041f57600080fd5b5061043a60048036038101906104359190612627565b610bab565b6040516104479190612682565b60405180910390f35b34801561045c57600080fd5b50610465610bc9565b6040516104729190612726565b60405180910390f35b34801561048757600080fd5b50610490610bcf565b60405161049d9190612819565b60405180910390f35b3480156104b257600080fd5b506104cd60048036038101906104c891906128ef565b610bf5565b005b3480156104db57600080fd5b506104e4610d2f565b6040516104f19190612726565b60405180910390f35b34801561050657600080fd5b50610521600480360381019061051c919061294f565b610d35565b60405161052e9190612726565b60405180910390f35b34801561054357600080fd5b5061055e600480360381019061055991906125c4565b610dbc565b005b34801561056c57600080fd5b50610575610f7d565b6040516105829190612843565b60405180910390f35b60606040518060400160405280600881526020017f50455045444f4745000000000000000000000000000000000000000000000000815250905090565b6105d0610fa3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461065d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610654906129db565b60405180910390fd5b6001600f60026101000a81548160ff02191690831515021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006106d06106c9610fa3565b8484610fab565b6001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b600061071d848484611174565b6107de84610729610fa3565b6107d9856040518060600160405280602881526020016133fc60289139601560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061078f610fa3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119169092919063ffffffff16565b610fab565b600190509392505050565b60135481565b60006009905090565b610800610fa3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461088d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610884906129db565b60405180910390fd5b8060148190555050565b6108c381601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661197a565b50565b6000610910600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611991565b9050919050565b61091f610fa3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a3906129db565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a72610fa3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af6906129db565b60405180910390fd5b670de0b6b3a7640000601281905550670de0b6b3a7640000601381905550565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f5045474500000000000000000000000000000000000000000000000000000000815250905090565b6000610bbf610bb8610fa3565b8484611174565b6001905092915050565b60125481565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610bfd610fa3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c81906129db565b60405180910390fd5b60005b83839050811015610d29578160066000868685818110610cb057610caf6129fb565b5b9050602002016020810190610cc591906125c4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610d2190612a59565b915050610c8d565b50505050565b60145481565b6000601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610dc4610fa3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e48906129db565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb790612b13565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361101a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101190612ba5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611089576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108090612c37565b60405180910390fd5b80601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111679190612726565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111da90612cc9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611252576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124990612d5b565b60405180910390fd5b60008111611295576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128c90612ded565b60405180910390fd5b61129d610b45565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561130b57506112db610b45565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561161557600f60029054906101000a900460ff1661139a5761132c610b45565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611399576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139090612e7f565b60405180910390fd5b5b6012548111156113df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d690612eeb565b60405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461148c5760135481611441846108c6565b61144b9190612f0b565b1061148b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148290612fb1565b60405180910390fd5b5b6000611497306108c6565b90506000601454821015905060125482106114b25760125491505b600f60019054906101000a900460ff1680156114cb5750805b80156114e45750600f60009054906101000a900460ff16155b801561153e5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156115945750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156115ea5750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611612576115f8826119ff565b600047905060008111156116105761160f47611c78565b5b505b50505b600060019050600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806116bc5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061176f5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561176e5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561177d5760009050611904565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156118285750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561184057600b54600981905550600c54600a819055505b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118eb5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561190357600754600981905550600854600a819055505b5b61191084848484611d8a565b50505050565b600083831115829061195e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611955919061253a565b60405180910390fd5b506000838561196d9190612fd1565b9050809150509392505050565b61198d8282670de0b6b3a7640000610fab565b5050565b60006010548211156119d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cf90613077565b60405180910390fd5b60006119e2611db7565b90506119f78184611de290919063ffffffff16565b915050919050565b6001600f60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611a3757611a36613097565b5b604051908082528060200260200182016040528015611a655781602001602082028036833780820191505090505b5090503081600081518110611a7d57611a7c6129fb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4891906130db565b81600181518110611b5c57611b5b6129fb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611bc330600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610fab565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611c27959493929190613201565b600060405180830381600087803b158015611c4157600080fd5b505af1158015611c55573d6000803e3d6000fd5b50505050506000600f60006101000a81548160ff02191690831515021790555050565b6000600282611c87919061328a565b9050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611cf1573d6000803e3d6000fd5b50600282611cff919061328a565b81611d0a9190612fd1565b905060008183611d1a9190612fd1565b9050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611d84573d6000803e3d6000fd5b50505050565b80611d9857611d97611e2c565b5b611da3848484611e69565b80611db157611db0612034565b5b50505050565b6000806000611dc4612048565b91509150611ddb8183611de290919063ffffffff16565b9250505090565b6000611e2483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120a7565b905092915050565b6000600954148015611e4057506000600a54145b611e6757600954600d81905550600a54600e8190555060006009819055506000600a819055505b565b600080600080600080611e7b8761210a565b955095509550955095509550611ed986600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461217290919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f6e85600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121bc90919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611fba8161221a565b611fc484836122d7565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516120219190612726565b60405180910390a3505050505050505050565b600d54600981905550600e54600a81905550565b600080600060105490506000670de0b6b3a7640000905061207c670de0b6b3a7640000601054611de290919063ffffffff16565b82101561209a57601054670de0b6b3a76400009350935050506120a3565b81819350935050505b9091565b600080831182906120ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e5919061253a565b60405180910390fd5b50600083856120fd919061328a565b9050809150509392505050565b60008060008060008060008060006121278a600954600a54612311565b9250925092506000612137611db7565b9050600080600061214a8e8787876123a7565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006121b483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611916565b905092915050565b60008082846121cb9190612f0b565b905083811015612210576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220790613307565b60405180910390fd5b8091505092915050565b6000612224611db7565b9050600061223b828461243090919063ffffffff16565b905061228f81600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121bc90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6122ec8260105461217290919063ffffffff16565b601081905550612307816011546121bc90919063ffffffff16565b6011819055505050565b60008060008061233d606461232f888a61243090919063ffffffff16565b611de290919063ffffffff16565b905060006123676064612359888b61243090919063ffffffff16565b611de290919063ffffffff16565b9050600061239082612382858c61217290919063ffffffff16565b61217290919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806123c0858961243090919063ffffffff16565b905060006123d7868961243090919063ffffffff16565b905060006123ee878961243090919063ffffffff16565b9050600061241782612409858761217290919063ffffffff16565b61217290919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080830361244257600090506124a4565b600082846124509190613327565b905082848261245f919061328a565b1461249f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612496906133db565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156124e45780820151818401526020810190506124c9565b60008484015250505050565b6000601f19601f8301169050919050565b600061250c826124aa565b61251681856124b5565b93506125268185602086016124c6565b61252f816124f0565b840191505092915050565b600060208201905081810360008301526125548184612501565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061259182612566565b9050919050565b6125a181612586565b81146125ac57600080fd5b50565b6000813590506125be81612598565b92915050565b6000602082840312156125da576125d961255c565b5b60006125e8848285016125af565b91505092915050565b6000819050919050565b612604816125f1565b811461260f57600080fd5b50565b600081359050612621816125fb565b92915050565b6000806040838503121561263e5761263d61255c565b5b600061264c858286016125af565b925050602061265d85828601612612565b9150509250929050565b60008115159050919050565b61267c81612667565b82525050565b60006020820190506126976000830184612673565b92915050565b6000819050919050565b60006126c26126bd6126b884612566565b61269d565b612566565b9050919050565b60006126d4826126a7565b9050919050565b60006126e6826126c9565b9050919050565b6126f6816126db565b82525050565b600060208201905061271160008301846126ed565b92915050565b612720816125f1565b82525050565b600060208201905061273b6000830184612717565b92915050565b60008060006060848603121561275a5761275961255c565b5b6000612768868287016125af565b9350506020612779868287016125af565b925050604061278a86828701612612565b9150509250925092565b600060ff82169050919050565b6127aa81612794565b82525050565b60006020820190506127c560008301846127a1565b92915050565b6000602082840312156127e1576127e061255c565b5b60006127ef84828501612612565b91505092915050565b600061280382612566565b9050919050565b612813816127f8565b82525050565b600060208201905061282e600083018461280a565b92915050565b61283d81612586565b82525050565b60006020820190506128586000830184612834565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126128835761288261285e565b5b8235905067ffffffffffffffff8111156128a05761289f612863565b5b6020830191508360208202830111156128bc576128bb612868565b5b9250929050565b6128cc81612667565b81146128d757600080fd5b50565b6000813590506128e9816128c3565b92915050565b6000806000604084860312156129085761290761255c565b5b600084013567ffffffffffffffff81111561292657612925612561565b5b6129328682870161286d565b93509350506020612945868287016128da565b9150509250925092565b600080604083850312156129665761296561255c565b5b6000612974858286016125af565b9250506020612985858286016125af565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006129c56020836124b5565b91506129d08261298f565b602082019050919050565b600060208201905081810360008301526129f4816129b8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612a64826125f1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612a9657612a95612a2a565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612afd6026836124b5565b9150612b0882612aa1565b604082019050919050565b60006020820190508181036000830152612b2c81612af0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612b8f6024836124b5565b9150612b9a82612b33565b604082019050919050565b60006020820190508181036000830152612bbe81612b82565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c216022836124b5565b9150612c2c82612bc5565b604082019050919050565b60006020820190508181036000830152612c5081612c14565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612cb36023836124b5565b9150612cbe82612c57565b604082019050919050565b60006020820190508181036000830152612ce281612ca6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612d456025836124b5565b9150612d5082612ce9565b604082019050919050565b60006020820190508181036000830152612d7481612d38565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612dd76029836124b5565b9150612de282612d7b565b604082019050919050565b60006020820190508181036000830152612e0681612dca565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000612e69603f836124b5565b9150612e7482612e0d565b604082019050919050565b60006020820190508181036000830152612e9881612e5c565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000612ed5601c836124b5565b9150612ee082612e9f565b602082019050919050565b60006020820190508181036000830152612f0481612ec8565b9050919050565b6000612f16826125f1565b9150612f21836125f1565b9250828201905080821115612f3957612f38612a2a565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000612f9b6023836124b5565b9150612fa682612f3f565b604082019050919050565b60006020820190508181036000830152612fca81612f8e565b9050919050565b6000612fdc826125f1565b9150612fe7836125f1565b9250828203905081811115612fff57612ffe612a2a565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613061602a836124b5565b915061306c82613005565b604082019050919050565b6000602082019050818103600083015261309081613054565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506130d581612598565b92915050565b6000602082840312156130f1576130f061255c565b5b60006130ff848285016130c6565b91505092915050565b6000819050919050565b600061312d61312861312384613108565b61269d565b6125f1565b9050919050565b61313d81613112565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61317881612586565b82525050565b600061318a838361316f565b60208301905092915050565b6000602082019050919050565b60006131ae82613143565b6131b8818561314e565b93506131c38361315f565b8060005b838110156131f45781516131db888261317e565b97506131e683613196565b9250506001810190506131c7565b5085935050505092915050565b600060a0820190506132166000830188612717565b6132236020830187613134565b818103604083015261323581866131a3565b90506132446060830185612834565b6132516080830184612717565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613295826125f1565b91506132a0836125f1565b9250826132b0576132af61325b565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006132f1601b836124b5565b91506132fc826132bb565b602082019050919050565b60006020820190508181036000830152613320816132e4565b9050919050565b6000613332826125f1565b915061333d836125f1565b925082820261334b816125f1565b9150828204841483151761336257613361612a2a565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006133c56021836124b5565b91506133d082613369565b604082019050919050565b600060208201905081810360008301526133f4816133b8565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203696a76bd55a4470ee60d0bfb38a65c13bbc5873bc126b11a32e4f01052f8f8364736f6c63430008120033

Deployed Bytecode

0x60806040526004361061014f5760003560e01c8063751039fc116100b6578063c04a54141161006f578063c04a54141461047b578063c492f046146104a6578063c7fda18a146104cf578063dd62ed3e146104fa578063f2fde38b14610537578063f474cdfe1461056057610156565b8063751039fc1461037b57806375f0a874146103925780638da5cb5b146103bd57806395d89b41146103e8578063a9059cbb14610413578063b4a07ca41461045057610156565b806327b7744f1161010857806327b7744f1461027f578063313ce567146102aa57806333c6c4cd146102d557806356c042b6146102fe57806370a0823114610327578063715018a61461036457610156565b806306fdde031461015b57806307980cb914610186578063095ea7b3146101af5780631694505e146101ec57806318160ddd1461021757806323b872dd1461024257610156565b3661015657005b600080fd5b34801561016757600080fd5b5061017061058b565b60405161017d919061253a565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a891906125c4565b6105c8565b005b3480156101bb57600080fd5b506101d660048036038101906101d19190612627565b6106bc565b6040516101e39190612682565b60405180910390f35b3480156101f857600080fd5b506102016106da565b60405161020e91906126fc565b60405180910390f35b34801561022357600080fd5b5061022c610700565b6040516102399190612726565b60405180910390f35b34801561024e57600080fd5b5061026960048036038101906102649190612741565b610710565b6040516102769190612682565b60405180910390f35b34801561028b57600080fd5b506102946107e9565b6040516102a19190612726565b60405180910390f35b3480156102b657600080fd5b506102bf6107ef565b6040516102cc91906127b0565b60405180910390f35b3480156102e157600080fd5b506102fc60048036038101906102f791906127cb565b6107f8565b005b34801561030a57600080fd5b50610325600480360381019061032091906125c4565b610897565b005b34801561033357600080fd5b5061034e600480360381019061034991906125c4565b6108c6565b60405161035b9190612726565b60405180910390f35b34801561037057600080fd5b50610379610917565b005b34801561038757600080fd5b50610390610a6a565b005b34801561039e57600080fd5b506103a7610b1f565b6040516103b49190612819565b60405180910390f35b3480156103c957600080fd5b506103d2610b45565b6040516103df9190612843565b60405180910390f35b3480156103f457600080fd5b506103fd610b6e565b60405161040a919061253a565b60405180910390f35b34801561041f57600080fd5b5061043a60048036038101906104359190612627565b610bab565b6040516104479190612682565b60405180910390f35b34801561045c57600080fd5b50610465610bc9565b6040516104729190612726565b60405180910390f35b34801561048757600080fd5b50610490610bcf565b60405161049d9190612819565b60405180910390f35b3480156104b257600080fd5b506104cd60048036038101906104c891906128ef565b610bf5565b005b3480156104db57600080fd5b506104e4610d2f565b6040516104f19190612726565b60405180910390f35b34801561050657600080fd5b50610521600480360381019061051c919061294f565b610d35565b60405161052e9190612726565b60405180910390f35b34801561054357600080fd5b5061055e600480360381019061055991906125c4565b610dbc565b005b34801561056c57600080fd5b50610575610f7d565b6040516105829190612843565b60405180910390f35b60606040518060400160405280600881526020017f50455045444f4745000000000000000000000000000000000000000000000000815250905090565b6105d0610fa3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461065d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610654906129db565b60405180910390fd5b6001600f60026101000a81548160ff02191690831515021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006106d06106c9610fa3565b8484610fab565b6001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b600061071d848484611174565b6107de84610729610fa3565b6107d9856040518060600160405280602881526020016133fc60289139601560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061078f610fa3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119169092919063ffffffff16565b610fab565b600190509392505050565b60135481565b60006009905090565b610800610fa3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461088d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610884906129db565b60405180910390fd5b8060148190555050565b6108c381601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661197a565b50565b6000610910600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611991565b9050919050565b61091f610fa3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a3906129db565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a72610fa3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af6906129db565b60405180910390fd5b670de0b6b3a7640000601281905550670de0b6b3a7640000601381905550565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f5045474500000000000000000000000000000000000000000000000000000000815250905090565b6000610bbf610bb8610fa3565b8484611174565b6001905092915050565b60125481565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610bfd610fa3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c81906129db565b60405180910390fd5b60005b83839050811015610d29578160066000868685818110610cb057610caf6129fb565b5b9050602002016020810190610cc591906125c4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610d2190612a59565b915050610c8d565b50505050565b60145481565b6000601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610dc4610fa3565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e48906129db565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ec0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb790612b13565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361101a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101190612ba5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611089576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108090612c37565b60405180910390fd5b80601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111679190612726565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111da90612cc9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611252576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124990612d5b565b60405180910390fd5b60008111611295576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128c90612ded565b60405180910390fd5b61129d610b45565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561130b57506112db610b45565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561161557600f60029054906101000a900460ff1661139a5761132c610b45565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611399576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139090612e7f565b60405180910390fd5b5b6012548111156113df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d690612eeb565b60405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461148c5760135481611441846108c6565b61144b9190612f0b565b1061148b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148290612fb1565b60405180910390fd5b5b6000611497306108c6565b90506000601454821015905060125482106114b25760125491505b600f60019054906101000a900460ff1680156114cb5750805b80156114e45750600f60009054906101000a900460ff16155b801561153e5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156115945750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156115ea5750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611612576115f8826119ff565b600047905060008111156116105761160f47611c78565b5b505b50505b600060019050600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806116bc5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061176f5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561176e5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561177d5760009050611904565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156118285750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561184057600b54600981905550600c54600a819055505b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118eb5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561190357600754600981905550600854600a819055505b5b61191084848484611d8a565b50505050565b600083831115829061195e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611955919061253a565b60405180910390fd5b506000838561196d9190612fd1565b9050809150509392505050565b61198d8282670de0b6b3a7640000610fab565b5050565b60006010548211156119d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cf90613077565b60405180910390fd5b60006119e2611db7565b90506119f78184611de290919063ffffffff16565b915050919050565b6001600f60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611a3757611a36613097565b5b604051908082528060200260200182016040528015611a655781602001602082028036833780820191505090505b5090503081600081518110611a7d57611a7c6129fb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4891906130db565b81600181518110611b5c57611b5b6129fb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611bc330600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610fab565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611c27959493929190613201565b600060405180830381600087803b158015611c4157600080fd5b505af1158015611c55573d6000803e3d6000fd5b50505050506000600f60006101000a81548160ff02191690831515021790555050565b6000600282611c87919061328a565b9050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611cf1573d6000803e3d6000fd5b50600282611cff919061328a565b81611d0a9190612fd1565b905060008183611d1a9190612fd1565b9050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611d84573d6000803e3d6000fd5b50505050565b80611d9857611d97611e2c565b5b611da3848484611e69565b80611db157611db0612034565b5b50505050565b6000806000611dc4612048565b91509150611ddb8183611de290919063ffffffff16565b9250505090565b6000611e2483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120a7565b905092915050565b6000600954148015611e4057506000600a54145b611e6757600954600d81905550600a54600e8190555060006009819055506000600a819055505b565b600080600080600080611e7b8761210a565b955095509550955095509550611ed986600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461217290919063ffffffff16565b600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f6e85600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121bc90919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611fba8161221a565b611fc484836122d7565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516120219190612726565b60405180910390a3505050505050505050565b600d54600981905550600e54600a81905550565b600080600060105490506000670de0b6b3a7640000905061207c670de0b6b3a7640000601054611de290919063ffffffff16565b82101561209a57601054670de0b6b3a76400009350935050506120a3565b81819350935050505b9091565b600080831182906120ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e5919061253a565b60405180910390fd5b50600083856120fd919061328a565b9050809150509392505050565b60008060008060008060008060006121278a600954600a54612311565b9250925092506000612137611db7565b9050600080600061214a8e8787876123a7565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006121b483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611916565b905092915050565b60008082846121cb9190612f0b565b905083811015612210576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220790613307565b60405180910390fd5b8091505092915050565b6000612224611db7565b9050600061223b828461243090919063ffffffff16565b905061228f81600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121bc90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6122ec8260105461217290919063ffffffff16565b601081905550612307816011546121bc90919063ffffffff16565b6011819055505050565b60008060008061233d606461232f888a61243090919063ffffffff16565b611de290919063ffffffff16565b905060006123676064612359888b61243090919063ffffffff16565b611de290919063ffffffff16565b9050600061239082612382858c61217290919063ffffffff16565b61217290919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806123c0858961243090919063ffffffff16565b905060006123d7868961243090919063ffffffff16565b905060006123ee878961243090919063ffffffff16565b9050600061241782612409858761217290919063ffffffff16565b61217290919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080830361244257600090506124a4565b600082846124509190613327565b905082848261245f919061328a565b1461249f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612496906133db565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156124e45780820151818401526020810190506124c9565b60008484015250505050565b6000601f19601f8301169050919050565b600061250c826124aa565b61251681856124b5565b93506125268185602086016124c6565b61252f816124f0565b840191505092915050565b600060208201905081810360008301526125548184612501565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061259182612566565b9050919050565b6125a181612586565b81146125ac57600080fd5b50565b6000813590506125be81612598565b92915050565b6000602082840312156125da576125d961255c565b5b60006125e8848285016125af565b91505092915050565b6000819050919050565b612604816125f1565b811461260f57600080fd5b50565b600081359050612621816125fb565b92915050565b6000806040838503121561263e5761263d61255c565b5b600061264c858286016125af565b925050602061265d85828601612612565b9150509250929050565b60008115159050919050565b61267c81612667565b82525050565b60006020820190506126976000830184612673565b92915050565b6000819050919050565b60006126c26126bd6126b884612566565b61269d565b612566565b9050919050565b60006126d4826126a7565b9050919050565b60006126e6826126c9565b9050919050565b6126f6816126db565b82525050565b600060208201905061271160008301846126ed565b92915050565b612720816125f1565b82525050565b600060208201905061273b6000830184612717565b92915050565b60008060006060848603121561275a5761275961255c565b5b6000612768868287016125af565b9350506020612779868287016125af565b925050604061278a86828701612612565b9150509250925092565b600060ff82169050919050565b6127aa81612794565b82525050565b60006020820190506127c560008301846127a1565b92915050565b6000602082840312156127e1576127e061255c565b5b60006127ef84828501612612565b91505092915050565b600061280382612566565b9050919050565b612813816127f8565b82525050565b600060208201905061282e600083018461280a565b92915050565b61283d81612586565b82525050565b60006020820190506128586000830184612834565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126128835761288261285e565b5b8235905067ffffffffffffffff8111156128a05761289f612863565b5b6020830191508360208202830111156128bc576128bb612868565b5b9250929050565b6128cc81612667565b81146128d757600080fd5b50565b6000813590506128e9816128c3565b92915050565b6000806000604084860312156129085761290761255c565b5b600084013567ffffffffffffffff81111561292657612925612561565b5b6129328682870161286d565b93509350506020612945868287016128da565b9150509250925092565b600080604083850312156129665761296561255c565b5b6000612974858286016125af565b9250506020612985858286016125af565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006129c56020836124b5565b91506129d08261298f565b602082019050919050565b600060208201905081810360008301526129f4816129b8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612a64826125f1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612a9657612a95612a2a565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612afd6026836124b5565b9150612b0882612aa1565b604082019050919050565b60006020820190508181036000830152612b2c81612af0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612b8f6024836124b5565b9150612b9a82612b33565b604082019050919050565b60006020820190508181036000830152612bbe81612b82565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c216022836124b5565b9150612c2c82612bc5565b604082019050919050565b60006020820190508181036000830152612c5081612c14565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612cb36023836124b5565b9150612cbe82612c57565b604082019050919050565b60006020820190508181036000830152612ce281612ca6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612d456025836124b5565b9150612d5082612ce9565b604082019050919050565b60006020820190508181036000830152612d7481612d38565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612dd76029836124b5565b9150612de282612d7b565b604082019050919050565b60006020820190508181036000830152612e0681612dca565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000612e69603f836124b5565b9150612e7482612e0d565b604082019050919050565b60006020820190508181036000830152612e9881612e5c565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000612ed5601c836124b5565b9150612ee082612e9f565b602082019050919050565b60006020820190508181036000830152612f0481612ec8565b9050919050565b6000612f16826125f1565b9150612f21836125f1565b9250828201905080821115612f3957612f38612a2a565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000612f9b6023836124b5565b9150612fa682612f3f565b604082019050919050565b60006020820190508181036000830152612fca81612f8e565b9050919050565b6000612fdc826125f1565b9150612fe7836125f1565b9250828203905081811115612fff57612ffe612a2a565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613061602a836124b5565b915061306c82613005565b604082019050919050565b6000602082019050818103600083015261309081613054565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506130d581612598565b92915050565b6000602082840312156130f1576130f061255c565b5b60006130ff848285016130c6565b91505092915050565b6000819050919050565b600061312d61312861312384613108565b61269d565b6125f1565b9050919050565b61313d81613112565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61317881612586565b82525050565b600061318a838361316f565b60208301905092915050565b6000602082019050919050565b60006131ae82613143565b6131b8818561314e565b93506131c38361315f565b8060005b838110156131f45781516131db888261317e565b97506131e683613196565b9250506001810190506131c7565b5085935050505092915050565b600060a0820190506132166000830188612717565b6132236020830187613134565b818103604083015261323581866131a3565b90506132446060830185612834565b6132516080830184612717565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613295826125f1565b91506132a0836125f1565b9250826132b0576132af61325b565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006132f1601b836124b5565b91506132fc826132bb565b602082019050919050565b60006020820190508181036000830152613320816132e4565b9050919050565b6000613332826125f1565b915061333d836125f1565b925082820261334b816125f1565b9150828204841483151761336257613361612a2a565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006133c56021836124b5565b91506133d082613369565b604082019050919050565b600060208201905081810360008301526133f4816133b8565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203696a76bd55a4470ee60d0bfb38a65c13bbc5873bc126b11a32e4f01052f8f8364736f6c63430008120033

Deployed Bytecode Sourcemap

4189:12741:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6339:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16794:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7718:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4238:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6762:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7057:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5464:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6525:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9496:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15490:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6616:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2778:148;;;;;;;;;;;;;:::i;:::-;;16661:125;;;;;;;;;;;;;:::i;:::-;;8361:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2691:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6430:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7511:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5404:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8260:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8942:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5528:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6865:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3047:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4286:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6339:83;6376:13;6409:5;;;;;;;;;;;;;;;;;6402:12;;6339:83;:::o;16794:133::-;2455:12;:10;:12::i;:::-;2445:22;;:6;;;;;;;;;;:22;;;2437:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16878:4:::1;16860:15;;:22;;;;;;;;;;;;;;;;;;16914:5;16893:18;;:26;;;;;;;;;;;;;;;;;;16794:133:::0;:::o;7718:193::-;7820:4;7842:39;7851:12;:10;:12::i;:::-;7865:7;7874:6;7842:8;:39::i;:::-;7899:4;7892:11;;7718:193;;;;:::o;4238:41::-;;;;;;;;;;;;;:::o;6762:95::-;6815:7;5281:21;6835:14;;6762:95;:::o;7057:446::-;7189:4;7206:36;7216:6;7224:9;7235:6;7206:9;:36::i;:::-;7253:220;7276:6;7297:12;:10;:12::i;:::-;7324:138;7380:6;7324:138;;;;;;;;;;;;;;;;;:11;:19;7336:6;7324:19;;;;;;;;;;;;;;;:33;7344:12;:10;:12::i;:::-;7324:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7253:8;:220::i;:::-;7491:4;7484:11;;7057:446;;;;;:::o;5464:56::-;;;;:::o;6525:83::-;6566:5;5238:1;6584:16;;6525:83;:::o;9496:127::-;2455:12;:10;:12::i;:::-;2445:22;;:6;;;;;;;;;;:22;;;2437:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9597:18:::1;9580:14;:35;;;;9496:127:::0;:::o;15490:101::-;15547:36;15560:5;15567:15;;;;;;;;;;;15547:12;:36::i;:::-;15490:101;:::o;6616:138::-;6682:7;6709:37;6729:7;:16;6737:7;6729:16;;;;;;;;;;;;;;;;6709:19;:37::i;:::-;6702:44;;6616:138;;;:::o;2778:148::-;2455:12;:10;:12::i;:::-;2445:22;;:6;;;;;;;;;;:22;;;2437:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2885:1:::1;2848:40;;2869:6;::::0;::::1;;;;;;;;2848:40;;;;;;;;;;;;2916:1;2899:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2778:148::o:0;16661:125::-;2455:12;:10;:12::i;:::-;2445:22;;:6;;;;;;;;;;:22;;;2437:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5281:21:::1;16713:15;:25;;;;5281:21;16749:19;:29;;;;16661:125::o:0;8361:92::-;;;;;;;;;;;;;:::o;2691:79::-;2729:7;2756:6;;;;;;;;;;;2749:13;;2691:79;:::o;6430:87::-;6469:13;6502:7;;;;;;;;;;;;;;;;;6495:14;;6430:87;:::o;7511:199::-;7616:4;7638:42;7648:12;:10;:12::i;:::-;7662:9;7673:6;7638:9;:42::i;:::-;7698:4;7691:11;;7511:199;;;;:::o;5404:52::-;;;;:::o;8260:94::-;;;;;;;;;;;;;:::o;8942:234::-;2455:12;:10;:12::i;:::-;2445:22;;:6;;;;;;;;;;:22;;;2437:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9059:9:::1;9055:114;9078:8;;:15;;9074:1;:19;9055:114;;;9149:8;9115:18;:31;9134:8;;9143:1;9134:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;9115:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;9095:3;;;;;:::i;:::-;;;;9055:114;;;;8942:234:::0;;;:::o;5528:47::-;;;;:::o;6865:184::-;6982:7;7014:11;:18;7026:5;7014:18;;;;;;;;;;;;;;;:27;7033:7;7014:27;;;;;;;;;;;;;;;;7007:34;;6865:184;;;;:::o;3047:244::-;2455:12;:10;:12::i;:::-;2445:22;;:6;;;;;;;;;;:22;;;2437:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3156:1:::1;3136:22;;:8;:22;;::::0;3128:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3246:8;3217:38;;3238:6;::::0;::::1;;;;;;;;3217:38;;;;;;;;;;;;3275:8;3266:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3047:244:::0;:::o;4286:33::-;;;;;;;;;;;;;:::o;1462:101::-;1515:7;1545:10;1538:17;;1462:101;:::o;13578:369::-;13722:1;13705:19;;:5;:19;;;13697:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13803:1;13784:21;;:7;:21;;;13776:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13885:6;13855:11;:18;13867:5;13855:18;;;;;;;;;;;;;;;:27;13874:7;13855:27;;;;;;;;;;;;;;;:36;;;;13923:7;13907:32;;13916:5;13907:32;;;13932:6;13907:32;;;;;;:::i;:::-;;;;;;;;13578:369;;;:::o;11038:2534::-;11174:1;11160:16;;:2;:16;;;11152:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11252:1;11236:18;;:4;:18;;;11228:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11324:1;11315:6;:10;11307:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11408:7;:5;:7::i;:::-;11400:15;;:4;:15;;;;:46;;;;;11439:7;:5;:7::i;:::-;11433:13;;:2;:13;;;;11400:46;11382:1353;;;11511:15;;;;;;;;;;;11506:210;;11585:7;:5;:7::i;:::-;11577:15;;:4;:15;;;11547:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;11506:210;11748:15;;11738:6;:25;;11730:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;11820:18;;;;;;;;;;;11814:24;;:2;:24;;;11811:174;;11892:19;;11883:6;11867:13;11877:2;11867:9;:13::i;:::-;:22;;;;:::i;:::-;:44;11859:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;11811:174;12001:27;12031:24;12049:4;12031:9;:24::i;:::-;12001:54;;12070:12;12108:14;;12085:19;:37;;12070:52;;12163:15;;12140:19;:38;12137:83;;12203:15;;12181:37;;12137:83;12240:12;;;;;;;;;;;:41;;;;;12274:7;12240:41;:77;;;;;12304:13;;;;;;;;;;;12303:14;12240:77;:125;;;;;12347:18;;;;;;;;;;;12339:26;;:4;:26;;;;12240:125;:172;;;;;12388:18;:24;12407:4;12388:24;;;;;;;;;;;;;;;;;;;;;;;;;12387:25;12240:172;:217;;;;;12435:18;:22;12454:2;12435:22;;;;;;;;;;;;;;;;;;;;;;;;;12434:23;12240:217;12236:488;;;12492:29;12501:19;12492:8;:29::i;:::-;12540:20;12563:21;12540:44;;12622:1;12607:12;:16;12603:106;;;12648:41;12667:21;12648:18;:41::i;:::-;12603:106;12473:251;12236:488;11458:1277;;11382:1353;12747:13;12763:4;12747:20;;12824:18;:24;12843:4;12824:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;12852:18;:22;12871:2;12852:22;;;;;;;;;;;;;;;;;;;;;;;;;12824:50;12823:112;;;;12888:18;;;;;;;;;;;12880:26;;:4;:26;;;;:54;;;;;12916:18;;;;;;;;;;;12910:24;;:2;:24;;;;12880:54;12823:112;12805:700;;;12973:5;12962:16;;12805:700;;;13054:18;;;;;;;;;;;13046:26;;:4;:26;;;:74;;;;;13104:15;;;;;;;;;;;13090:30;;:2;:30;;;;13046:74;13043:200;;;13163:16;;13141:19;:38;;;;13214:13;;13198;:29;;;;13043:200;13300:18;;;;;;;;;;;13294:24;;:2;:24;;;:75;;;;;13353:15;;;;;;;;;;;13337:32;;:4;:32;;;;13294:75;13290:204;;;13412:17;;13390:19;:39;;;;13464:14;;13448:13;:30;;;;13290:204;12805:700;13515:49;13537:4;13543:2;13547:6;13555:8;13515:21;:49::i;:::-;11141:2431;11038:2534;;;:::o;437:224::-;557:7;590:1;585;:6;;593:12;577:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;617:9;633:1;629;:5;;;;:::i;:::-;617:17;;652:1;645:8;;;437:224;;;;;:::o;13959:111::-;14031:31;14040:5;14047;5281:21;14031:8;:31::i;:::-;13959:111;;:::o;16295:323::-;16390:7;16448;;16437;:18;;16415:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;16536:19;16558:10;:8;:10::i;:::-;16536:32;;16586:24;16598:11;16586:7;:11;;:24;;;;:::i;:::-;16579:31;;;16295:323;;;:::o;8462:474::-;5635:4;5619:13;;:20;;;;;;;;;;;;;;;;;;8531:21:::1;8569:1;8555:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8531:40;;8600:4;8582;8587:1;8582:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;8626:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8616:4;8621:1;8616:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;8659:62;8676:4;8691:15;;;;;;;;;;;8709:11;8659:8;:62::i;:::-;8732:15;;;;;;;;;;;:66;;;8813:11;8839:1;8855:4;8882;8902:15;8732:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;8520:416;5678:5:::0;5662:13;;:21;;;;;;;;;;;;;;;;;;8462:474;:::o;9182:264::-;9245:14;9271:1;9262:6;:10;;;;:::i;:::-;9245:27;;9284:17;;;;;;;;;;;:26;;:34;9311:6;9284:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9348:1;9339:6;:10;;;;:::i;:::-;9329:20;;;;;:::i;:::-;;;9360;9392:6;9383;:15;;;;:::i;:::-;9360:38;;9400:15;;;;;;;;;;;:24;;:38;9425:12;9400:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9234:212;;9182:264;:::o;7919:333::-;8082:7;8077:51;;8104:14;:12;:14::i;:::-;8077:51;8139:42;8155:6;8163:9;8174:6;8139:15;:42::i;:::-;8197:7;8192:53;;8219:16;:14;:16::i;:::-;8192:53;7919:333;;;;:::o;9860:164::-;9902:7;9923:15;9940;9959:19;:17;:19::i;:::-;9922:56;;;;9996:20;10008:7;9996;:11;;:20;;;;:::i;:::-;9989:27;;;;9860:164;:::o;1061:132::-;1119:7;1146:39;1150:1;1153;1146:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1139:46;;1061:132;;;;:::o;14717:251::-;14787:1;14764:19;;:24;:46;;;;;14809:1;14792:13;;:18;14764:46;14812:7;14760:59;14845:19;;14829:13;:35;;;;14886:13;;14873:10;:26;;;;14933:1;14911:19;:23;;;;14959:1;14943:13;:17;;;;14717:251;:::o;10430:602::-;10575:15;10605:23;10643:12;10670:23;10708:12;10735:13;10762:19;10773:7;10762:10;:19::i;:::-;10560:221;;;;;;;;;;;;10810:28;10830:7;10810;:15;10818:6;10810:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;10792:7;:15;10800:6;10792:15;;;;;;;;;;;;;;;:46;;;;10870:39;10893:15;10870:7;:18;10878:9;10870:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;10849:7;:18;10857:9;10849:18;;;;;;;;;;;;;;;:60;;;;10920:18;10932:5;10920:11;:18::i;:::-;10940:24;10953:4;10959;10940:12;:24::i;:::-;10997:9;10980:44;;10989:6;10980:44;;;11008:15;10980:44;;;;;;:::i;:::-;;;;;;;;10549:483;;;;;;10430:602;;;:::o;10297:125::-;10364:13;;10342:19;:35;;;;10404:10;;10388:13;:26;;;;10297:125::o;10032:257::-;10083:7;10092;10112:15;10130:7;;10112:25;;10148:15;5281:21;10148:25;;10198:20;5281:21;10198:7;;:11;;:20;;;;:::i;:::-;10188:7;:30;10184:61;;;10228:7;;5281:21;10220:25;;;;;;;;10184:61;10264:7;10273;10256:25;;;;;;10032:257;;;:::o;1199:223::-;1319:7;1351:1;1347;:5;1354:12;1339:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1378:9;1394:1;1390;:5;;;;:::i;:::-;1378:17;;1413:1;1406:8;;;1199:223;;;;;:::o;14078:631::-;14178:7;14200;14222;14244;14266;14288;14324:23;14349:12;14363:13;14393:56;14405:7;14414:19;;14435:13;;14393:11;:56::i;:::-;14323:126;;;;;;14460:19;14482:10;:8;:10::i;:::-;14460:32;;14504:15;14521:23;14546:12;14575:46;14587:7;14596:4;14602:5;14609:11;14575;:46::i;:::-;14503:118;;;;;;14640:7;14649:15;14666:4;14672:15;14689:4;14695:5;14632:69;;;;;;;;;;;;;;;;;;;14078:631;;;;;;;:::o;667:136::-;725:7;752:43;756:1;759;752:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;745:50;;667:136;;;;:::o;252:179::-;310:7;330:9;346:1;342;:5;;;;:::i;:::-;330:17;;371:1;366;:6;;358:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;422:1;415:8;;;252:179;;;;:::o;9635:213::-;9690:19;9712:10;:8;:10::i;:::-;9690:32;;9733:13;9749:22;9759:11;9749:5;:9;;:22;;;;:::i;:::-;9733:38;;9807:33;9834:5;9807:7;:22;9823:4;9807:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;9782:7;:22;9798:4;9782:22;;;;;;;;;;;;;;;:58;;;;9679:169;;9635:213;:::o;16139:148::-;16218:17;16230:4;16218:7;;:11;;:17;;;;:::i;:::-;16208:7;:27;;;;16259:20;16274:4;16259:10;;:14;;:20;;;;:::i;:::-;16246:10;:33;;;;16139:148;;:::o;15017:467::-;15185:7;15207;15229;15264:12;15279:29;15304:3;15279:20;15291:7;15279;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;15264:44;;15319:13;15335:28;15359:3;15335:19;15347:6;15335:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15319:44;;15374:23;15400:28;15422:5;15400:17;15412:4;15400:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15374:54;;15447:15;15464:4;15470:5;15439:37;;;;;;;;;15017:467;;;;;;;:::o;15597:534::-;15791:7;15813;15835;15870:15;15888:24;15900:11;15888:7;:11;;:24;;;;:::i;:::-;15870:42;;15923:12;15938:21;15947:11;15938:4;:8;;:21;;;;:::i;:::-;15923:36;;15970:13;15986:22;15996:11;15986:5;:9;;:22;;;;:::i;:::-;15970:38;;16019:23;16045:28;16067:5;16045:17;16057:4;16045:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16019:54;;16092:7;16101:15;16118:4;16084:39;;;;;;;;;;15597:534;;;;;;;;:::o;809:246::-;867:7;896:1;891;:6;887:47;;921:1;914:8;;;;887:47;944:9;960:1;956;:5;;;;:::i;:::-;944:17;;989:1;984;980;:5;;;;:::i;:::-;:10;972:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1046:1;1039:8;;;809:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:329::-;2242:6;2291:2;2279:9;2270:7;2266:23;2262:32;2259:119;;;2297:79;;:::i;:::-;2259:119;2417:1;2442:53;2487:7;2478:6;2467:9;2463:22;2442:53;:::i;:::-;2432:63;;2388:117;2183:329;;;;:::o;2518:77::-;2555:7;2584:5;2573:16;;2518:77;;;:::o;2601:122::-;2674:24;2692:5;2674:24;:::i;:::-;2667:5;2664:35;2654:63;;2713:1;2710;2703:12;2654:63;2601:122;:::o;2729:139::-;2775:5;2813:6;2800:20;2791:29;;2829:33;2856:5;2829:33;:::i;:::-;2729:139;;;;:::o;2874:474::-;2942:6;2950;2999:2;2987:9;2978:7;2974:23;2970:32;2967:119;;;3005:79;;:::i;:::-;2967:119;3125:1;3150:53;3195:7;3186:6;3175:9;3171:22;3150:53;:::i;:::-;3140:63;;3096:117;3252:2;3278:53;3323:7;3314:6;3303:9;3299:22;3278:53;:::i;:::-;3268:63;;3223:118;2874:474;;;;;:::o;3354:90::-;3388:7;3431:5;3424:13;3417:21;3406:32;;3354:90;;;:::o;3450:109::-;3531:21;3546:5;3531:21;:::i;:::-;3526:3;3519:34;3450:109;;:::o;3565:210::-;3652:4;3690:2;3679:9;3675:18;3667:26;;3703:65;3765:1;3754:9;3750:17;3741:6;3703:65;:::i;:::-;3565:210;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:152::-;4203:9;4236:37;4267:5;4236:37;:::i;:::-;4223:50;;4127:152;;;:::o;4285:183::-;4398:63;4455:5;4398:63;:::i;:::-;4393:3;4386:76;4285:183;;:::o;4474:274::-;4593:4;4631:2;4620:9;4616:18;4608:26;;4644:97;4738:1;4727:9;4723:17;4714:6;4644:97;:::i;:::-;4474:274;;;;:::o;4754:118::-;4841:24;4859:5;4841:24;:::i;:::-;4836:3;4829:37;4754:118;;:::o;4878:222::-;4971:4;5009:2;4998:9;4994:18;4986:26;;5022:71;5090:1;5079:9;5075:17;5066:6;5022:71;:::i;:::-;4878:222;;;;:::o;5106:619::-;5183:6;5191;5199;5248:2;5236:9;5227:7;5223:23;5219:32;5216:119;;;5254:79;;:::i;:::-;5216:119;5374:1;5399:53;5444:7;5435:6;5424:9;5420:22;5399:53;:::i;:::-;5389:63;;5345:117;5501:2;5527:53;5572:7;5563:6;5552:9;5548:22;5527:53;:::i;:::-;5517:63;;5472:118;5629:2;5655:53;5700:7;5691:6;5680:9;5676:22;5655:53;:::i;:::-;5645:63;;5600:118;5106:619;;;;;:::o;5731:86::-;5766:7;5806:4;5799:5;5795:16;5784:27;;5731:86;;;:::o;5823:112::-;5906:22;5922:5;5906:22;:::i;:::-;5901:3;5894:35;5823:112;;:::o;5941:214::-;6030:4;6068:2;6057:9;6053:18;6045:26;;6081:67;6145:1;6134:9;6130:17;6121:6;6081:67;:::i;:::-;5941:214;;;;:::o;6161:329::-;6220:6;6269:2;6257:9;6248:7;6244:23;6240:32;6237:119;;;6275:79;;:::i;:::-;6237:119;6395:1;6420:53;6465:7;6456:6;6445:9;6441:22;6420:53;:::i;:::-;6410:63;;6366:117;6161:329;;;;:::o;6496:104::-;6541:7;6570:24;6588:5;6570:24;:::i;:::-;6559:35;;6496:104;;;:::o;6606:142::-;6709:32;6735:5;6709:32;:::i;:::-;6704:3;6697:45;6606:142;;:::o;6754:254::-;6863:4;6901:2;6890:9;6886:18;6878:26;;6914:87;6998:1;6987:9;6983:17;6974:6;6914:87;:::i;:::-;6754:254;;;;:::o;7014:118::-;7101:24;7119:5;7101:24;:::i;:::-;7096:3;7089:37;7014:118;;:::o;7138:222::-;7231:4;7269:2;7258:9;7254:18;7246:26;;7282:71;7350:1;7339:9;7335:17;7326:6;7282:71;:::i;:::-;7138:222;;;;:::o;7366:117::-;7475:1;7472;7465:12;7489:117;7598:1;7595;7588:12;7612:117;7721:1;7718;7711:12;7752:568;7825:8;7835:6;7885:3;7878:4;7870:6;7866:17;7862:27;7852:122;;7893:79;;:::i;:::-;7852:122;8006:6;7993:20;7983:30;;8036:18;8028:6;8025:30;8022:117;;;8058:79;;:::i;:::-;8022:117;8172:4;8164:6;8160:17;8148:29;;8226:3;8218:4;8210:6;8206:17;8196:8;8192:32;8189:41;8186:128;;;8233:79;;:::i;:::-;8186:128;7752:568;;;;;:::o;8326:116::-;8396:21;8411:5;8396:21;:::i;:::-;8389:5;8386:32;8376:60;;8432:1;8429;8422:12;8376:60;8326:116;:::o;8448:133::-;8491:5;8529:6;8516:20;8507:29;;8545:30;8569:5;8545:30;:::i;:::-;8448:133;;;;:::o;8587:698::-;8679:6;8687;8695;8744:2;8732:9;8723:7;8719:23;8715:32;8712:119;;;8750:79;;:::i;:::-;8712:119;8898:1;8887:9;8883:17;8870:31;8928:18;8920:6;8917:30;8914:117;;;8950:79;;:::i;:::-;8914:117;9063:80;9135:7;9126:6;9115:9;9111:22;9063:80;:::i;:::-;9045:98;;;;8841:312;9192:2;9218:50;9260:7;9251:6;9240:9;9236:22;9218:50;:::i;:::-;9208:60;;9163:115;8587:698;;;;;:::o;9291:474::-;9359:6;9367;9416:2;9404:9;9395:7;9391:23;9387:32;9384:119;;;9422:79;;:::i;:::-;9384:119;9542:1;9567:53;9612:7;9603:6;9592:9;9588:22;9567:53;:::i;:::-;9557:63;;9513:117;9669:2;9695:53;9740:7;9731:6;9720:9;9716:22;9695:53;:::i;:::-;9685:63;;9640:118;9291:474;;;;;:::o;9771:182::-;9911:34;9907:1;9899:6;9895:14;9888:58;9771:182;:::o;9959:366::-;10101:3;10122:67;10186:2;10181:3;10122:67;:::i;:::-;10115:74;;10198:93;10287:3;10198:93;:::i;:::-;10316:2;10311:3;10307:12;10300:19;;9959:366;;;:::o;10331:419::-;10497:4;10535:2;10524:9;10520:18;10512:26;;10584:9;10578:4;10574:20;10570:1;10559:9;10555:17;10548:47;10612:131;10738:4;10612:131;:::i;:::-;10604:139;;10331:419;;;:::o;10756:180::-;10804:77;10801:1;10794:88;10901:4;10898:1;10891:15;10925:4;10922:1;10915:15;10942:180;10990:77;10987:1;10980:88;11087:4;11084:1;11077:15;11111:4;11108:1;11101:15;11128:233;11167:3;11190:24;11208:5;11190:24;:::i;:::-;11181:33;;11236:66;11229:5;11226:77;11223:103;;11306:18;;:::i;:::-;11223:103;11353:1;11346:5;11342:13;11335:20;;11128:233;;;:::o;11367:225::-;11507:34;11503:1;11495:6;11491:14;11484:58;11576:8;11571:2;11563:6;11559:15;11552:33;11367:225;:::o;11598:366::-;11740:3;11761:67;11825:2;11820:3;11761:67;:::i;:::-;11754:74;;11837:93;11926:3;11837:93;:::i;:::-;11955:2;11950:3;11946:12;11939:19;;11598:366;;;:::o;11970:419::-;12136:4;12174:2;12163:9;12159:18;12151:26;;12223:9;12217:4;12213:20;12209:1;12198:9;12194:17;12187:47;12251:131;12377:4;12251:131;:::i;:::-;12243:139;;11970:419;;;:::o;12395:223::-;12535:34;12531:1;12523:6;12519:14;12512:58;12604:6;12599:2;12591:6;12587:15;12580:31;12395:223;:::o;12624:366::-;12766:3;12787:67;12851:2;12846:3;12787:67;:::i;:::-;12780:74;;12863:93;12952:3;12863:93;:::i;:::-;12981:2;12976:3;12972:12;12965:19;;12624:366;;;:::o;12996:419::-;13162:4;13200:2;13189:9;13185:18;13177:26;;13249:9;13243:4;13239:20;13235:1;13224:9;13220:17;13213:47;13277:131;13403:4;13277:131;:::i;:::-;13269:139;;12996:419;;;:::o;13421:221::-;13561:34;13557:1;13549:6;13545:14;13538:58;13630:4;13625:2;13617:6;13613:15;13606:29;13421:221;:::o;13648:366::-;13790:3;13811:67;13875:2;13870:3;13811:67;:::i;:::-;13804:74;;13887:93;13976:3;13887:93;:::i;:::-;14005:2;14000:3;13996:12;13989:19;;13648:366;;;:::o;14020:419::-;14186:4;14224:2;14213:9;14209:18;14201:26;;14273:9;14267:4;14263:20;14259:1;14248:9;14244:17;14237:47;14301:131;14427:4;14301:131;:::i;:::-;14293:139;;14020:419;;;:::o;14445:222::-;14585:34;14581:1;14573:6;14569:14;14562:58;14654:5;14649:2;14641:6;14637:15;14630:30;14445:222;:::o;14673:366::-;14815:3;14836:67;14900:2;14895:3;14836:67;:::i;:::-;14829:74;;14912:93;15001:3;14912:93;:::i;:::-;15030:2;15025:3;15021:12;15014:19;;14673:366;;;:::o;15045:419::-;15211:4;15249:2;15238:9;15234:18;15226:26;;15298:9;15292:4;15288:20;15284:1;15273:9;15269:17;15262:47;15326:131;15452:4;15326:131;:::i;:::-;15318:139;;15045:419;;;:::o;15470:224::-;15610:34;15606:1;15598:6;15594:14;15587:58;15679:7;15674:2;15666:6;15662:15;15655:32;15470:224;:::o;15700:366::-;15842:3;15863:67;15927:2;15922:3;15863:67;:::i;:::-;15856:74;;15939:93;16028:3;15939:93;:::i;:::-;16057:2;16052:3;16048:12;16041:19;;15700:366;;;:::o;16072:419::-;16238:4;16276:2;16265:9;16261:18;16253:26;;16325:9;16319:4;16315:20;16311:1;16300:9;16296:17;16289:47;16353:131;16479:4;16353:131;:::i;:::-;16345:139;;16072:419;;;:::o;16497:228::-;16637:34;16633:1;16625:6;16621:14;16614:58;16706:11;16701:2;16693:6;16689:15;16682:36;16497:228;:::o;16731:366::-;16873:3;16894:67;16958:2;16953:3;16894:67;:::i;:::-;16887:74;;16970:93;17059:3;16970:93;:::i;:::-;17088:2;17083:3;17079:12;17072:19;;16731:366;;;:::o;17103:419::-;17269:4;17307:2;17296:9;17292:18;17284:26;;17356:9;17350:4;17346:20;17342:1;17331:9;17327:17;17320:47;17384:131;17510:4;17384:131;:::i;:::-;17376:139;;17103:419;;;:::o;17528:250::-;17668:34;17664:1;17656:6;17652:14;17645:58;17737:33;17732:2;17724:6;17720:15;17713:58;17528:250;:::o;17784:366::-;17926:3;17947:67;18011:2;18006:3;17947:67;:::i;:::-;17940:74;;18023:93;18112:3;18023:93;:::i;:::-;18141:2;18136:3;18132:12;18125:19;;17784:366;;;:::o;18156:419::-;18322:4;18360:2;18349:9;18345:18;18337:26;;18409:9;18403:4;18399:20;18395:1;18384:9;18380:17;18373:47;18437:131;18563:4;18437:131;:::i;:::-;18429:139;;18156:419;;;:::o;18581:178::-;18721:30;18717:1;18709:6;18705:14;18698:54;18581:178;:::o;18765:366::-;18907:3;18928:67;18992:2;18987:3;18928:67;:::i;:::-;18921:74;;19004:93;19093:3;19004:93;:::i;:::-;19122:2;19117:3;19113:12;19106:19;;18765:366;;;:::o;19137:419::-;19303:4;19341:2;19330:9;19326:18;19318:26;;19390:9;19384:4;19380:20;19376:1;19365:9;19361:17;19354:47;19418:131;19544:4;19418:131;:::i;:::-;19410:139;;19137:419;;;:::o;19562:191::-;19602:3;19621:20;19639:1;19621:20;:::i;:::-;19616:25;;19655:20;19673:1;19655:20;:::i;:::-;19650:25;;19698:1;19695;19691:9;19684:16;;19719:3;19716:1;19713:10;19710:36;;;19726:18;;:::i;:::-;19710:36;19562:191;;;;:::o;19759:222::-;19899:34;19895:1;19887:6;19883:14;19876:58;19968:5;19963:2;19955:6;19951:15;19944:30;19759:222;:::o;19987:366::-;20129:3;20150:67;20214:2;20209:3;20150:67;:::i;:::-;20143:74;;20226:93;20315:3;20226:93;:::i;:::-;20344:2;20339:3;20335:12;20328:19;;19987:366;;;:::o;20359:419::-;20525:4;20563:2;20552:9;20548:18;20540:26;;20612:9;20606:4;20602:20;20598:1;20587:9;20583:17;20576:47;20640:131;20766:4;20640:131;:::i;:::-;20632:139;;20359:419;;;:::o;20784:194::-;20824:4;20844:20;20862:1;20844:20;:::i;:::-;20839:25;;20878:20;20896:1;20878:20;:::i;:::-;20873:25;;20922:1;20919;20915:9;20907:17;;20946:1;20940:4;20937:11;20934:37;;;20951:18;;:::i;:::-;20934:37;20784:194;;;;:::o;20984:229::-;21124:34;21120:1;21112:6;21108:14;21101:58;21193:12;21188:2;21180:6;21176:15;21169:37;20984:229;:::o;21219:366::-;21361:3;21382:67;21446:2;21441:3;21382:67;:::i;:::-;21375:74;;21458:93;21547:3;21458:93;:::i;:::-;21576:2;21571:3;21567:12;21560:19;;21219:366;;;:::o;21591:419::-;21757:4;21795:2;21784:9;21780:18;21772:26;;21844:9;21838:4;21834:20;21830:1;21819:9;21815:17;21808:47;21872:131;21998:4;21872:131;:::i;:::-;21864:139;;21591:419;;;:::o;22016:180::-;22064:77;22061:1;22054:88;22161:4;22158:1;22151:15;22185:4;22182:1;22175:15;22202:143;22259:5;22290:6;22284:13;22275:22;;22306:33;22333:5;22306:33;:::i;:::-;22202:143;;;;:::o;22351:351::-;22421:6;22470:2;22458:9;22449:7;22445:23;22441:32;22438:119;;;22476:79;;:::i;:::-;22438:119;22596:1;22621:64;22677:7;22668:6;22657:9;22653:22;22621:64;:::i;:::-;22611:74;;22567:128;22351:351;;;;:::o;22708:85::-;22753:7;22782:5;22771:16;;22708:85;;;:::o;22799:158::-;22857:9;22890:61;22908:42;22917:32;22943:5;22917:32;:::i;:::-;22908:42;:::i;:::-;22890:61;:::i;:::-;22877:74;;22799:158;;;:::o;22963:147::-;23058:45;23097:5;23058:45;:::i;:::-;23053:3;23046:58;22963:147;;:::o;23116:114::-;23183:6;23217:5;23211:12;23201:22;;23116:114;;;:::o;23236:184::-;23335:11;23369:6;23364:3;23357:19;23409:4;23404:3;23400:14;23385:29;;23236:184;;;;:::o;23426:132::-;23493:4;23516:3;23508:11;;23546:4;23541:3;23537:14;23529:22;;23426:132;;;:::o;23564:108::-;23641:24;23659:5;23641:24;:::i;:::-;23636:3;23629:37;23564:108;;:::o;23678:179::-;23747:10;23768:46;23810:3;23802:6;23768:46;:::i;:::-;23846:4;23841:3;23837:14;23823:28;;23678:179;;;;:::o;23863:113::-;23933:4;23965;23960:3;23956:14;23948:22;;23863:113;;;:::o;24012:732::-;24131:3;24160:54;24208:5;24160:54;:::i;:::-;24230:86;24309:6;24304:3;24230:86;:::i;:::-;24223:93;;24340:56;24390:5;24340:56;:::i;:::-;24419:7;24450:1;24435:284;24460:6;24457:1;24454:13;24435:284;;;24536:6;24530:13;24563:63;24622:3;24607:13;24563:63;:::i;:::-;24556:70;;24649:60;24702:6;24649:60;:::i;:::-;24639:70;;24495:224;24482:1;24479;24475:9;24470:14;;24435:284;;;24439:14;24735:3;24728:10;;24136:608;;;24012:732;;;;:::o;24750:831::-;25013:4;25051:3;25040:9;25036:19;25028:27;;25065:71;25133:1;25122:9;25118:17;25109:6;25065:71;:::i;:::-;25146:80;25222:2;25211:9;25207:18;25198:6;25146:80;:::i;:::-;25273:9;25267:4;25263:20;25258:2;25247:9;25243:18;25236:48;25301:108;25404:4;25395:6;25301:108;:::i;:::-;25293:116;;25419:72;25487:2;25476:9;25472:18;25463:6;25419:72;:::i;:::-;25501:73;25569:3;25558:9;25554:19;25545:6;25501:73;:::i;:::-;24750:831;;;;;;;;:::o;25587:180::-;25635:77;25632:1;25625:88;25732:4;25729:1;25722:15;25756:4;25753:1;25746:15;25773:185;25813:1;25830:20;25848:1;25830:20;:::i;:::-;25825:25;;25864:20;25882:1;25864:20;:::i;:::-;25859:25;;25903:1;25893:35;;25908:18;;:::i;:::-;25893:35;25950:1;25947;25943:9;25938:14;;25773:185;;;;:::o;25964:177::-;26104:29;26100:1;26092:6;26088:14;26081:53;25964:177;:::o;26147:366::-;26289:3;26310:67;26374:2;26369:3;26310:67;:::i;:::-;26303:74;;26386:93;26475:3;26386:93;:::i;:::-;26504:2;26499:3;26495:12;26488:19;;26147:366;;;:::o;26519:419::-;26685:4;26723:2;26712:9;26708:18;26700:26;;26772:9;26766:4;26762:20;26758:1;26747:9;26743:17;26736:47;26800:131;26926:4;26800:131;:::i;:::-;26792:139;;26519:419;;;:::o;26944:410::-;26984:7;27007:20;27025:1;27007:20;:::i;:::-;27002:25;;27041:20;27059:1;27041:20;:::i;:::-;27036:25;;27096:1;27093;27089:9;27118:30;27136:11;27118:30;:::i;:::-;27107:41;;27297:1;27288:7;27284:15;27281:1;27278:22;27258:1;27251:9;27231:83;27208:139;;27327:18;;:::i;:::-;27208:139;26992:362;26944:410;;;;:::o;27360:220::-;27500:34;27496:1;27488:6;27484:14;27477:58;27569:3;27564:2;27556:6;27552:15;27545:28;27360:220;:::o;27586:366::-;27728:3;27749:67;27813:2;27808:3;27749:67;:::i;:::-;27742:74;;27825:93;27914:3;27825:93;:::i;:::-;27943:2;27938:3;27934:12;27927:19;;27586:366;;;:::o;27958:419::-;28124:4;28162:2;28151:9;28147:18;28139:26;;28211:9;28205:4;28201:20;28197:1;28186:9;28182:17;28175:47;28239:131;28365:4;28239:131;:::i;:::-;28231:139;;27958:419;;;:::o

Swarm Source

ipfs://3696a76bd55a4470ee60d0bfb38a65c13bbc5873bc126b11a32e4f01052f8f83
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.