ETH Price: $3,424.75 (+3.76%)

Contract

0x8e314D0Aa5aB999FcE48CB36A6cD290b0582ba7d
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Manual Swap198929982024-05-17 23:35:11189 days ago1715988911IN
0x8e314D0A...b0582ba7d
0 ETH0.000415693.04269293
Approve198929932024-05-17 23:34:11189 days ago1715988851IN
0x8e314D0A...b0582ba7d
0 ETH0.0008381817.99568072
Approve198929932024-05-17 23:34:11189 days ago1715988851IN
0x8e314D0A...b0582ba7d
0 ETH0.0008381817.99568072
Opentrade198929922024-05-17 23:33:59189 days ago1715988839IN
0x8e314D0A...b0582ba7d
0 ETH0.007577262.68131797
Transfer198929472024-05-17 23:24:59189 days ago1715988299IN
0x8e314D0A...b0582ba7d
0.5 ETH0.000057592.73544787
Transfer198929432024-05-17 23:24:11189 days ago1715988251IN
0x8e314D0A...b0582ba7d
0 ETH0.00016913.0964329
0x60806040198929222024-05-17 23:19:59189 days ago1715987999IN
 Create: Ducki
0 ETH0.005928383.02517573

Latest 3 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
198929982024-05-17 23:35:11189 days ago1715988911
0x8e314D0A...b0582ba7d
0.08661248 ETH
198929982024-05-17 23:35:11189 days ago1715988911
0x8e314D0A...b0582ba7d
0.08661248 ETH
198929922024-05-17 23:33:59189 days ago1715988839
0x8e314D0A...b0582ba7d
0.5 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Ducki

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-17
*/

/**

https://ducki.live
https://t.me/duckiportal
https://x.com/duckiishere

*/


// SPDX-License-Identifier: UNLICENSE

pragma solidity 0.8.25;

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

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

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

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

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

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

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

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

}

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

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

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

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

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

}

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

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

contract Ducki 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;
    address payable private _taxWallet;

    uint256 private _initialBuyTax=15;
    uint256 private _initialSellTax=20;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;
    uint256 private _reduceBuyTaxAt=15;
    uint256 private _reduceSellTaxAt=20;
    uint256 private _preventSwapBefore=20;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1000000000 * 10**_decimals;
    string private constant _name = unicode"Ducki";
    string private constant _symbol = unicode"DUCKI";
    uint256 public _maxTxAmount = 30000000 * 10**_decimals;
    uint256 public _maxWalletSize = 30000000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 20000000 * 10**_decimals;
    uint256 public _maxTaxSwap= 20000000 * 10**_decimals;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    event TransferTaxUpdated(uint _tax);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

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

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

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

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

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

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

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

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

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

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

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

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount=0;
        if (from != owner() && to != owner() && to != _taxWallet) {
            require(!bots[from] && !bots[to]);

            if(_buyCount==0){
                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.");
                taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);
                _buyCount++;
            }

            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) {
                if (block.number > lastSellBlock) {
                    sellCount = 0;
                }
                require(sellCount < 3, "Only 3 sells per block!");
                swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                sellCount++;
                lastSellBlock = block.number;
            }
        }

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


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

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

    function 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 isBot(address a) public view returns (bool){
      return bots[a];
    }

    function opentrade() 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,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
    }

    
    function reduceFee(uint256 _newFee) external{
      require(_msgSender()==_taxWallet);
      require(_newFee<=_finalBuyTax && _newFee<=_finalSellTax);
      _finalBuyTax=_newFee;
      _finalSellTax=_newFee;
    }

    receive() external payable {}

    function rescueERC20(address _address, uint256 percent) external onlyOwner {
        uint256 _amount = IERC20(_address).balanceOf(address(this)).mul(percent).div(100);
        IERC20(_address).transfer(_taxWallet, _amount);
    }

    function manualSwap() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0 && swapEnabled){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"TransferTaxUpdated","type":"event"},{"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":"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":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"opentrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueERC20","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"},{"stateMutability":"payable","type":"receive"}]

6080604052600f60065560146007555f6008555f600955600f600a556014600b556014600c555f600d556009600a6100379190610304565b610045906301c9c380610319565b600e556100546009600a610304565b610062906301c9c380610319565b600f556100716009600a610304565b61007f906301312d00610319565b60105561008e6009600a610304565b61009c906301312d00610319565b6011556013805461ffff60a81b191690555f60148190556015553480156100c1575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600580546001600160a01b031916331790556101206009600a610304565b61012e90633b9aca00610319565b335f9081526001602081905260408220929092556003906101565f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905530815260039093528183208054851660019081179091556005549091168352912080549092161790556101b33390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6101ea6009600a610304565b6101f890633b9aca00610319565b60405190815260200160405180910390a3610330565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561025c57815f19048211156102425761024261020e565b8085161561024f57918102915b93841c9390800290610227565b509250929050565b5f82610272575060016102fe565b8161027e57505f6102fe565b8160018114610294576002811461029e576102ba565b60019150506102fe565b60ff8411156102af576102af61020e565b50506001821b6102fe565b5060208310610133831016604e8410600b84101617156102dd575081810a6102fe565b6102e78383610222565b805f19048211156102fa576102fa61020e565b0290505b92915050565b5f61031260ff841683610264565b9392505050565b80820281158282048414176102fe576102fe61020e565b611c438061033d5f395ff3fe60806040526004361061013f575f3560e01c8063751039fc116100b357806395d89b411161006d57806395d89b4114610374578063a9059cbb146103a1578063bf474bed146103c0578063d34628cc146103d5578063dd62ed3e146103f4578063ec1f3f6314610438575f80fd5b8063751039fc146102dd5780637d1db4a5146102f15780638cd4426d146103065780638d0076d5146103255780638da5cb5b146103395780638f9a55c01461035f575f80fd5b8063313ce56711610104578063313ce5671461020e57806331c2d847146102295780633bbac5791461024a57806351bc3c851461028157806370a0823114610295578063715018a6146102c9575f80fd5b806306fdde031461014a578063095ea7b3146101895780630faee56f146101b857806318160ddd146101db57806323b872dd146101ef575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b506040805180820190915260058152644475636b6960d81b60208201525b6040516101809190611738565b60405180910390f35b348015610194575f80fd5b506101a86101a3366004611794565b610457565b6040519015158152602001610180565b3480156101c3575f80fd5b506101cd60115481565b604051908152602001610180565b3480156101e6575f80fd5b506101cd61046d565b3480156101fa575f80fd5b506101a86102093660046117be565b61048d565b348015610219575f80fd5b5060405160098152602001610180565b348015610234575f80fd5b50610248610243366004611810565b6104f4565b005b348015610255575f80fd5b506101a86102643660046118d0565b6001600160a01b03165f9081526004602052604090205460ff1690565b34801561028c575f80fd5b50610248610584565b3480156102a0575f80fd5b506101cd6102af3660046118d0565b6001600160a01b03165f9081526001602052604090205490565b3480156102d4575f80fd5b506102486105e8565b3480156102e8575f80fd5b50610248610659565b3480156102fc575f80fd5b506101cd600e5481565b348015610311575f80fd5b50610248610320366004611794565b61070a565b348015610330575f80fd5b50610248610830565b348015610344575f80fd5b505f546040516001600160a01b039091168152602001610180565b34801561036a575f80fd5b506101cd600f5481565b34801561037f575f80fd5b506040805180820190915260058152644455434b4960d81b6020820152610173565b3480156103ac575f80fd5b506101a86103bb366004611794565b610bd9565b3480156103cb575f80fd5b506101cd60105481565b3480156103e0575f80fd5b506102486103ef366004611810565b610be5565b3480156103ff575f80fd5b506101cd61040e3660046118eb565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610443575f80fd5b50610248610452366004611922565b610c69565b5f610463338484610cae565b5060015b92915050565b5f61047a6009600a611a2d565b61048890633b9aca00611a3b565b905090565b5f610499848484610dd1565b6104ea84336104e585604051806060016040528060288152602001611be6602891396001600160a01b038a165f90815260026020908152604080832033845290915290205491906113b4565b610cae565b5060019392505050565b5f546001600160a01b031633146105265760405162461bcd60e51b815260040161051d90611a52565b60405180910390fd5b5f5b8151811015610580575f60045f84848151811061054757610547611a87565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610528565b5050565b6005546001600160a01b0316336001600160a01b0316146105a3575f80fd5b305f9081526001602052604090205480158015906105ca5750601354600160b01b900460ff165b156105d8576105d8816113ec565b478015610580576105808161155c565b5f546001600160a01b031633146106115760405162461bcd60e51b815260040161051d90611a52565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146106825760405162461bcd60e51b815260040161051d90611a52565b61068e6009600a611a2d565b61069c90633b9aca00611a3b565b600e556106ab6009600a611a2d565b6106b990633b9aca00611a3b565b600f557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6106e96009600a611a2d565b6106f790633b9aca00611a3b565b60405190815260200160405180910390a1565b5f546001600160a01b031633146107335760405162461bcd60e51b815260040161051d90611a52565b6040516370a0823160e01b81523060048201525f906107b4906064906107ae9085906001600160a01b038816906370a0823190602401602060405180830381865afa158015610784573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107a89190611a9b565b90611593565b90611618565b60055460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303815f875af1158015610806573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061082a9190611ab2565b50505050565b5f546001600160a01b031633146108595760405162461bcd60e51b815260040161051d90611a52565b601354600160a01b900460ff16156108b35760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161051d565b601280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556108fc9030906108ee6009600a611a2d565b6104e590633b9aca00611a3b565b60125f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561094c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109709190611ad1565b6001600160a01b031663c9c653963060125f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109cf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109f39190611ad1565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610a3d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a619190611ad1565b601380546001600160a01b039283166001600160a01b03199091161790556012541663f305d7194730610aa8816001600160a01b03165f9081526001602052604090205490565b5f80610abb5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610b21573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610b469190611aec565b505060135460125460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610b9b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bbf9190611ab2565b506013805462ff00ff60a01b19166201000160a01b179055565b5f610463338484610dd1565b5f546001600160a01b03163314610c0e5760405162461bcd60e51b815260040161051d90611a52565b5f5b815181101561058057600160045f848481518110610c3057610c30611a87565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610c10565b6005546001600160a01b0316336001600160a01b031614610c88575f80fd5b6008548111158015610c9c57506009548111155b610ca4575f80fd5b6008819055600955565b6001600160a01b038316610d105760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161051d565b6001600160a01b038216610d715760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161051d565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e355760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161051d565b6001600160a01b038216610e975760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161051d565b5f8111610ef85760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161051d565b5f80546001600160a01b03858116911614801590610f2357505f546001600160a01b03848116911614155b8015610f3d57506005546001600160a01b03848116911614155b15611277576001600160a01b0384165f9081526004602052604090205460ff16158015610f8257506001600160a01b0383165f9081526004602052604090205460ff16155b610f8a575f80fd5b600d545f03610fbc57610fb960646107ae600a54600d5411610fae57600654610fb2565b6008545b8590611593565b90505b6013546001600160a01b038581169116148015610fe757506012546001600160a01b03848116911614155b801561100b57506001600160a01b0383165f9081526003602052604090205460ff16155b1561110e57600e548211156110625760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e00000000000000604482015260640161051d565b600f5482611084856001600160a01b03165f9081526001602052604090205490565b61108e9190611b17565b11156110dc5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161051d565b6110f760646107ae600a54600d5411610fae57600654610fb2565b600d80549192505f61110883611b2a565b91905055505b6013546001600160a01b03848116911614801561113457506001600160a01b0384163014155b156111615761115e60646107ae600b54600d541161115457600754610fb2565b6009548590611593565b90505b305f90815260016020526040902054601354600160a81b900460ff1615801561119757506013546001600160a01b038581169116145b80156111ac5750601354600160b01b900460ff165b80156111b9575060105481115b80156111c85750600c54600d54115b15611275576015544311156111dc575f6014555b60036014541061122e5760405162461bcd60e51b815260206004820152601760248201527f4f6e6c7920332073656c6c732070657220626c6f636b21000000000000000000604482015260640161051d565b61124b6112468461124184601154611659565b611659565b6113ec565b47801561125b5761125b4761155c565b60148054905f61126a83611b2a565b909155505043601555505b505b80156112ef57305f90815260016020526040902054611296908261166d565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112e69085815260200190565b60405180910390a35b6001600160a01b0384165f9081526001602052604090205461131190836116cb565b6001600160a01b0385165f9081526001602052604090205561135461133683836116cb565b6001600160a01b0385165f908152600160205260409020549061166d565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61139d85856116cb565b60405190815260200160405180910390a350505050565b5f81848411156113d75760405162461bcd60e51b815260040161051d9190611738565b505f6113e38486611b42565b95945050505050565b6013805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061143257611432611a87565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611489573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ad9190611ad1565b816001815181106114c0576114c0611a87565b6001600160a01b0392831660209182029290920101526012546114e69130911684610cae565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac9479061151e9085905f90869030904290600401611b55565b5f604051808303815f87803b158015611535575f80fd5b505af1158015611547573d5f803e3d5ffd5b50506013805460ff60a81b1916905550505050565b6005546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610580573d5f803e3d5ffd5b5f825f036115a257505f610467565b5f6115ad8385611a3b565b9050826115ba8583611bc6565b146116115760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161051d565b9392505050565b5f61161183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061170c565b5f8183116116675782611611565b50919050565b5f806116798385611b17565b9050838110156116115760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161051d565b5f61161183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113b4565b5f818361172c5760405162461bcd60e51b815260040161051d9190611738565b505f6113e38486611bc6565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114611781575f80fd5b50565b803561178f8161176d565b919050565b5f80604083850312156117a5575f80fd5b82356117b08161176d565b946020939093013593505050565b5f805f606084860312156117d0575f80fd5b83356117db8161176d565b925060208401356117eb8161176d565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f6020808385031215611821575f80fd5b823567ffffffffffffffff80821115611838575f80fd5b818501915085601f83011261184b575f80fd5b81358181111561185d5761185d6117fc565b8060051b604051601f19603f83011681018181108582111715611882576118826117fc565b60405291825284820192508381018501918883111561189f575f80fd5b938501935b828510156118c4576118b585611784565b845293850193928501926118a4565b98975050505050505050565b5f602082840312156118e0575f80fd5b81356116118161176d565b5f80604083850312156118fc575f80fd5b82356119078161176d565b915060208301356119178161176d565b809150509250929050565b5f60208284031215611932575f80fd5b5035919050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561198757815f190482111561196d5761196d611939565b8085161561197a57918102915b93841c9390800290611952565b509250929050565b5f8261199d57506001610467565b816119a957505f610467565b81600181146119bf57600281146119c9576119e5565b6001915050610467565b60ff8411156119da576119da611939565b50506001821b610467565b5060208310610133831016604e8410600b8410161715611a08575081810a610467565b611a12838361194d565b805f1904821115611a2557611a25611939565b029392505050565b5f61161160ff84168361198f565b808202811582820484141761046757610467611939565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611aab575f80fd5b5051919050565b5f60208284031215611ac2575f80fd5b81518015158114611611575f80fd5b5f60208284031215611ae1575f80fd5b81516116118161176d565b5f805f60608486031215611afe575f80fd5b8351925060208401519150604084015190509250925092565b8082018082111561046757610467611939565b5f60018201611b3b57611b3b611939565b5060010190565b8181038181111561046757610467611939565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611ba55784516001600160a01b031683529383019391830191600101611b80565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611be057634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200aaeefef8015bef8944e0e8593408208b85b0f97caaf5e8cc1ca0130b85a3fdb64736f6c63430008190033

Deployed Bytecode

0x60806040526004361061013f575f3560e01c8063751039fc116100b357806395d89b411161006d57806395d89b4114610374578063a9059cbb146103a1578063bf474bed146103c0578063d34628cc146103d5578063dd62ed3e146103f4578063ec1f3f6314610438575f80fd5b8063751039fc146102dd5780637d1db4a5146102f15780638cd4426d146103065780638d0076d5146103255780638da5cb5b146103395780638f9a55c01461035f575f80fd5b8063313ce56711610104578063313ce5671461020e57806331c2d847146102295780633bbac5791461024a57806351bc3c851461028157806370a0823114610295578063715018a6146102c9575f80fd5b806306fdde031461014a578063095ea7b3146101895780630faee56f146101b857806318160ddd146101db57806323b872dd146101ef575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b506040805180820190915260058152644475636b6960d81b60208201525b6040516101809190611738565b60405180910390f35b348015610194575f80fd5b506101a86101a3366004611794565b610457565b6040519015158152602001610180565b3480156101c3575f80fd5b506101cd60115481565b604051908152602001610180565b3480156101e6575f80fd5b506101cd61046d565b3480156101fa575f80fd5b506101a86102093660046117be565b61048d565b348015610219575f80fd5b5060405160098152602001610180565b348015610234575f80fd5b50610248610243366004611810565b6104f4565b005b348015610255575f80fd5b506101a86102643660046118d0565b6001600160a01b03165f9081526004602052604090205460ff1690565b34801561028c575f80fd5b50610248610584565b3480156102a0575f80fd5b506101cd6102af3660046118d0565b6001600160a01b03165f9081526001602052604090205490565b3480156102d4575f80fd5b506102486105e8565b3480156102e8575f80fd5b50610248610659565b3480156102fc575f80fd5b506101cd600e5481565b348015610311575f80fd5b50610248610320366004611794565b61070a565b348015610330575f80fd5b50610248610830565b348015610344575f80fd5b505f546040516001600160a01b039091168152602001610180565b34801561036a575f80fd5b506101cd600f5481565b34801561037f575f80fd5b506040805180820190915260058152644455434b4960d81b6020820152610173565b3480156103ac575f80fd5b506101a86103bb366004611794565b610bd9565b3480156103cb575f80fd5b506101cd60105481565b3480156103e0575f80fd5b506102486103ef366004611810565b610be5565b3480156103ff575f80fd5b506101cd61040e3660046118eb565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610443575f80fd5b50610248610452366004611922565b610c69565b5f610463338484610cae565b5060015b92915050565b5f61047a6009600a611a2d565b61048890633b9aca00611a3b565b905090565b5f610499848484610dd1565b6104ea84336104e585604051806060016040528060288152602001611be6602891396001600160a01b038a165f90815260026020908152604080832033845290915290205491906113b4565b610cae565b5060019392505050565b5f546001600160a01b031633146105265760405162461bcd60e51b815260040161051d90611a52565b60405180910390fd5b5f5b8151811015610580575f60045f84848151811061054757610547611a87565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610528565b5050565b6005546001600160a01b0316336001600160a01b0316146105a3575f80fd5b305f9081526001602052604090205480158015906105ca5750601354600160b01b900460ff165b156105d8576105d8816113ec565b478015610580576105808161155c565b5f546001600160a01b031633146106115760405162461bcd60e51b815260040161051d90611a52565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146106825760405162461bcd60e51b815260040161051d90611a52565b61068e6009600a611a2d565b61069c90633b9aca00611a3b565b600e556106ab6009600a611a2d565b6106b990633b9aca00611a3b565b600f557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6106e96009600a611a2d565b6106f790633b9aca00611a3b565b60405190815260200160405180910390a1565b5f546001600160a01b031633146107335760405162461bcd60e51b815260040161051d90611a52565b6040516370a0823160e01b81523060048201525f906107b4906064906107ae9085906001600160a01b038816906370a0823190602401602060405180830381865afa158015610784573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107a89190611a9b565b90611593565b90611618565b60055460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303815f875af1158015610806573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061082a9190611ab2565b50505050565b5f546001600160a01b031633146108595760405162461bcd60e51b815260040161051d90611a52565b601354600160a01b900460ff16156108b35760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161051d565b601280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556108fc9030906108ee6009600a611a2d565b6104e590633b9aca00611a3b565b60125f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561094c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109709190611ad1565b6001600160a01b031663c9c653963060125f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109cf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109f39190611ad1565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610a3d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a619190611ad1565b601380546001600160a01b039283166001600160a01b03199091161790556012541663f305d7194730610aa8816001600160a01b03165f9081526001602052604090205490565b5f80610abb5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610b21573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610b469190611aec565b505060135460125460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610b9b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bbf9190611ab2565b506013805462ff00ff60a01b19166201000160a01b179055565b5f610463338484610dd1565b5f546001600160a01b03163314610c0e5760405162461bcd60e51b815260040161051d90611a52565b5f5b815181101561058057600160045f848481518110610c3057610c30611a87565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610c10565b6005546001600160a01b0316336001600160a01b031614610c88575f80fd5b6008548111158015610c9c57506009548111155b610ca4575f80fd5b6008819055600955565b6001600160a01b038316610d105760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161051d565b6001600160a01b038216610d715760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161051d565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e355760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161051d565b6001600160a01b038216610e975760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161051d565b5f8111610ef85760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161051d565b5f80546001600160a01b03858116911614801590610f2357505f546001600160a01b03848116911614155b8015610f3d57506005546001600160a01b03848116911614155b15611277576001600160a01b0384165f9081526004602052604090205460ff16158015610f8257506001600160a01b0383165f9081526004602052604090205460ff16155b610f8a575f80fd5b600d545f03610fbc57610fb960646107ae600a54600d5411610fae57600654610fb2565b6008545b8590611593565b90505b6013546001600160a01b038581169116148015610fe757506012546001600160a01b03848116911614155b801561100b57506001600160a01b0383165f9081526003602052604090205460ff16155b1561110e57600e548211156110625760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e00000000000000604482015260640161051d565b600f5482611084856001600160a01b03165f9081526001602052604090205490565b61108e9190611b17565b11156110dc5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161051d565b6110f760646107ae600a54600d5411610fae57600654610fb2565b600d80549192505f61110883611b2a565b91905055505b6013546001600160a01b03848116911614801561113457506001600160a01b0384163014155b156111615761115e60646107ae600b54600d541161115457600754610fb2565b6009548590611593565b90505b305f90815260016020526040902054601354600160a81b900460ff1615801561119757506013546001600160a01b038581169116145b80156111ac5750601354600160b01b900460ff165b80156111b9575060105481115b80156111c85750600c54600d54115b15611275576015544311156111dc575f6014555b60036014541061122e5760405162461bcd60e51b815260206004820152601760248201527f4f6e6c7920332073656c6c732070657220626c6f636b21000000000000000000604482015260640161051d565b61124b6112468461124184601154611659565b611659565b6113ec565b47801561125b5761125b4761155c565b60148054905f61126a83611b2a565b909155505043601555505b505b80156112ef57305f90815260016020526040902054611296908261166d565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112e69085815260200190565b60405180910390a35b6001600160a01b0384165f9081526001602052604090205461131190836116cb565b6001600160a01b0385165f9081526001602052604090205561135461133683836116cb565b6001600160a01b0385165f908152600160205260409020549061166d565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61139d85856116cb565b60405190815260200160405180910390a350505050565b5f81848411156113d75760405162461bcd60e51b815260040161051d9190611738565b505f6113e38486611b42565b95945050505050565b6013805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061143257611432611a87565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611489573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ad9190611ad1565b816001815181106114c0576114c0611a87565b6001600160a01b0392831660209182029290920101526012546114e69130911684610cae565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac9479061151e9085905f90869030904290600401611b55565b5f604051808303815f87803b158015611535575f80fd5b505af1158015611547573d5f803e3d5ffd5b50506013805460ff60a81b1916905550505050565b6005546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610580573d5f803e3d5ffd5b5f825f036115a257505f610467565b5f6115ad8385611a3b565b9050826115ba8583611bc6565b146116115760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161051d565b9392505050565b5f61161183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061170c565b5f8183116116675782611611565b50919050565b5f806116798385611b17565b9050838110156116115760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161051d565b5f61161183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113b4565b5f818361172c5760405162461bcd60e51b815260040161051d9190611738565b505f6113e38486611bc6565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114611781575f80fd5b50565b803561178f8161176d565b919050565b5f80604083850312156117a5575f80fd5b82356117b08161176d565b946020939093013593505050565b5f805f606084860312156117d0575f80fd5b83356117db8161176d565b925060208401356117eb8161176d565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f6020808385031215611821575f80fd5b823567ffffffffffffffff80821115611838575f80fd5b818501915085601f83011261184b575f80fd5b81358181111561185d5761185d6117fc565b8060051b604051601f19603f83011681018181108582111715611882576118826117fc565b60405291825284820192508381018501918883111561189f575f80fd5b938501935b828510156118c4576118b585611784565b845293850193928501926118a4565b98975050505050505050565b5f602082840312156118e0575f80fd5b81356116118161176d565b5f80604083850312156118fc575f80fd5b82356119078161176d565b915060208301356119178161176d565b809150509250929050565b5f60208284031215611932575f80fd5b5035919050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561198757815f190482111561196d5761196d611939565b8085161561197a57918102915b93841c9390800290611952565b509250929050565b5f8261199d57506001610467565b816119a957505f610467565b81600181146119bf57600281146119c9576119e5565b6001915050610467565b60ff8411156119da576119da611939565b50506001821b610467565b5060208310610133831016604e8410600b8410161715611a08575081810a610467565b611a12838361194d565b805f1904821115611a2557611a25611939565b029392505050565b5f61161160ff84168361198f565b808202811582820484141761046757610467611939565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611aab575f80fd5b5051919050565b5f60208284031215611ac2575f80fd5b81518015158114611611575f80fd5b5f60208284031215611ae1575f80fd5b81516116118161176d565b5f805f60608486031215611afe575f80fd5b8351925060208401519150604084015190509250925092565b8082018082111561046757610467611939565b5f60018201611b3b57611b3b611939565b5060010190565b8181038181111561046757610467611939565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611ba55784516001600160a01b031683529383019391830191600101611b80565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611be057634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200aaeefef8015bef8944e0e8593408208b85b0f97caaf5e8cc1ca0130b85a3fdb64736f6c63430008190033

Deployed Bytecode Sourcemap

3569:8817:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5500:83;;;;;;;;;;-1:-1:-1;5570:5:0;;;;;;;;;;;;-1:-1:-1;;;5570:5:0;;;;5500:83;;;;;;;:::i;:::-;;;;;;;;6333:161;;;;;;;;;;-1:-1:-1;6333:161:0;;;;;:::i;:::-;;:::i;:::-;;;1197:14:1;;1190:22;1172:41;;1160:2;1145:18;6333:161:0;1032:187:1;4655:52:0;;;;;;;;;;;;;;;;;;;1370:25:1;;;1358:2;1343:18;4655:52:0;1224:177:1;5777:95:0;;;;;;;;;;;;;:::i;6502:313::-;;;;;;;;;;-1:-1:-1;6502:313:0;;;;;:::i;:::-;;:::i;5686:83::-;;;;;;;;;;-1:-1:-1;5686:83:0;;4282:1;2009:36:1;;1997:2;1982:18;5686:83:0;1867:184:1;10573:162:0;;;;;;;;;;-1:-1:-1;10573:162:0;;;;;:::i;:::-;;:::i;:::-;;10743:83;;;;;;;;;;-1:-1:-1;10743:83:0;;;;;:::i;:::-;-1:-1:-1;;;;;10811:7:0;10790:4;10811:7;;;:4;:7;;;;;;;;;10743:83;12020:363;;;;;;;;;;;;;:::i;5880:119::-;;;;;;;;;;-1:-1:-1;5880:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;5973:18:0;5946:7;5973:18;;;:9;:18;;;;;;;5880:119;2650:148;;;;;;;;;;;;;:::i;10134:159::-;;;;;;;;;;;;;:::i;4466:54::-;;;;;;;;;;;;;;;;11780:232;;;;;;;;;;-1:-1:-1;11780:232:0;;;;;:::i;:::-;;:::i;10834:669::-;;;;;;;;;;;;;:::i;2436:79::-;;;;;;;;;;-1:-1:-1;2474:7:0;2501:6;2436:79;;-1:-1:-1;;;;;2501:6:0;;;3712:51:1;;3700:2;3685:18;2436:79:0;3566:203:1;4527:56:0;;;;;;;;;;;;;;;;5591:87;;;;;;;;;;-1:-1:-1;5663:7:0;;;;;;;;;;;;-1:-1:-1;;;5663:7:0;;;;5591:87;;6007:167;;;;;;;;;;-1:-1:-1;6007:167:0;;;;;:::i;:::-;;:::i;4590:58::-;;;;;;;;;;;;;;;;10401:164;;;;;;;;;;-1:-1:-1;10401:164:0;;;;;:::i;:::-;;:::i;6182:143::-;;;;;;;;;;-1:-1:-1;6182:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6290:18:0;;;6263:7;6290:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6182:143;11517:218;;;;;;;;;;-1:-1:-1;11517:218:0;;;;;:::i;:::-;;:::i;6333:161::-;6408:4;6425:39;271:10;6448:7;6457:6;6425:8;:39::i;:::-;-1:-1:-1;6482:4:0;6333:161;;;;;:::o;5777:95::-;5830:7;4338:13;4282:1;4338:2;:13;:::i;:::-;4325:26;;:10;:26;:::i;:::-;5850:14;;5777:95;:::o;6502:313::-;6600:4;6617:36;6627:6;6635:9;6646:6;6617:9;:36::i;:::-;6664:121;6673:6;271:10;6695:89;6733:6;6695:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6695:19:0;;;;;;:11;:19;;;;;;;;271:10;6695:33;;;;;;;;;;:37;:89::i;:::-;6664:8;:121::i;:::-;-1:-1:-1;6803:4:0;6502:313;;;;;:::o;10573:162::-;2563:6;;-1:-1:-1;;;;;2563:6:0;271:10;2563:22;2555:67;;;;-1:-1:-1;;;2555:67:0;;;;;;;:::i;:::-;;;;;;;;;10646:6:::1;10641:87;10662:6;:13;10658:1;:17;10641:87;;;10713:5;10695:4;:15;10700:6;10707:1;10700:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;10695:15:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;10695:15:0;:23;;-1:-1:-1;;10695:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;10677:3:0::1;10641:87;;;;10573:162:::0;:::o;12020:363::-;12084:10;;-1:-1:-1;;;;;12084:10:0;271;-1:-1:-1;;;;;12070:24:0;;12062:33;;;;;;12145:4;12106:20;5973:18;;;:9;:18;;;;;;12165:14;;;;;:29;;-1:-1:-1;12183:11:0;;-1:-1:-1;;;12183:11:0;;;;12165:29;12162:88;;;12208:30;12225:12;12208:16;:30::i;:::-;12279:21;12314:12;;12311:65;;12340:24;12353:10;12340:12;:24::i;2650:148::-;2563:6;;-1:-1:-1;;;;;2563:6:0;271:10;2563:22;2555:67;;;;-1:-1:-1;;;2555:67:0;;;;;;;:::i;:::-;2757:1:::1;2741:6:::0;;2720:40:::1;::::0;-1:-1:-1;;;;;2741:6:0;;::::1;::::0;2720:40:::1;::::0;2757:1;;2720:40:::1;2788:1;2771:19:::0;;-1:-1:-1;;;;;;2771:19:0::1;::::0;;2650:148::o;10134:159::-;2563:6;;-1:-1:-1;;;;;2563:6:0;271:10;2563:22;2555:67;;;;-1:-1:-1;;;2555:67:0;;;;;;;:::i;:::-;4338:13:::1;4282:1;4338:2;:13;:::i;:::-;4325:26;::::0;:10:::1;:26;:::i;:::-;10187:12;:22:::0;4338:13:::1;4282:1;4338:2;:13;:::i;:::-;4325:26;::::0;:10:::1;:26;:::i;:::-;10220:14;:22:::0;10258:27:::1;4338:13;4282:1;4338:2;:13;:::i;:::-;4325:26;::::0;:10:::1;:26;:::i;:::-;10258:27;::::0;1370:25:1;;;1358:2;1343:18;10258:27:0::1;;;;;;;10134:159::o:0;11780:232::-;2563:6;;-1:-1:-1;;;;;2563:6:0;271:10;2563:22;2555:67;;;;-1:-1:-1;;;2555:67:0;;;;;;;:::i;:::-;11884:41:::1;::::0;-1:-1:-1;;;11884:41:0;;11919:4:::1;11884:41;::::0;::::1;3712:51:1::0;11866:15:0::1;::::0;11884:63:::1;::::0;11943:3:::1;::::0;11884:54:::1;::::0;11930:7;;-1:-1:-1;;;;;11884:26:0;::::1;::::0;::::1;::::0;3685:18:1;;11884:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45:::0;::::1;:54::i;:::-;:58:::0;::::1;:63::i;:::-;11984:10;::::0;11958:46:::1;::::0;-1:-1:-1;;;11958:46:0;;-1:-1:-1;;;;;11984:10:0;;::::1;11958:46;::::0;::::1;6898:51:1::0;6965:18;;;6958:34;;;11866:81:0;;-1:-1:-1;11958:25:0;::::1;::::0;::::1;::::0;6871:18:1;;11958:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11855:157;11780:232:::0;;:::o;10834:669::-;2563:6;;-1:-1:-1;;;;;2563:6:0;271:10;2563:22;2555:67;;;;-1:-1:-1;;;2555:67:0;;;;;;;:::i;:::-;10896:11:::1;::::0;-1:-1:-1;;;10896:11:0;::::1;;;10895:12;10887:47;;;::::0;-1:-1:-1;;;10887:47:0;;7487:2:1;10887:47:0::1;::::0;::::1;7469:21:1::0;7526:2;7506:18;;;7499:30;7565:25;7545:18;;;7538:53;7608:18;;10887:47:0::1;7285:347:1::0;10887:47:0::1;10945:15;:80:::0;;-1:-1:-1;;;;;;10945:80:0::1;10982:42;10945:80:::0;;::::1;::::0;;;11036:58:::1;::::0;11053:4:::1;::::0;4338:13:::1;4282:1;4338:2;:13;:::i;:::-;4325:26;::::0;:10:::1;:26;:::i;11036:58::-;11139:15;;;;;;;;;-1:-1:-1::0;;;;;11139:15:0::1;-1:-1:-1::0;;;;;11139:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11121:55:0::1;;11185:4;11192:15;;;;;;;;;-1:-1:-1::0;;;;;11192:15:0::1;-1:-1:-1::0;;;;;11192:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11121:94;::::0;-1:-1:-1;;;;;;11121:94:0::1;::::0;;;;;;-1:-1:-1;;;;;8123:15:1;;;11121:94:0::1;::::0;::::1;8105:34:1::0;8175:15;;8155:18;;;8148:43;8040:18;;11121:94:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11105:13;:110:::0;;-1:-1:-1;;;;;11105:110:0;;::::1;-1:-1:-1::0;;;;;;11105:110:0;;::::1;;::::0;;11226:15:::1;::::0;::::1;:31;11265:21;11296:4;11302:24;11296:4:::0;-1:-1:-1;;;;;5973:18:0;5946:7;5973:18;;;:9;:18;;;;;;;5880:119;11302:24:::1;11327:1;11329::::0;11331:7:::1;2474::::0;2501:6;-1:-1:-1;;;;;2501:6:0;;2436:79;11331:7:::1;11226:129;::::0;::::1;::::0;;;-1:-1:-1;;;;;;11226:129:0;;;-1:-1:-1;;;;;8561:15:1;;;11226:129:0::1;::::0;::::1;8543:34:1::0;8593:18;;;8586:34;;;;8636:18;;;8629:34;;;;8679:18;;;8672:34;8743:15;;;8722:19;;;8715:44;11339:15:0::1;8775:19:1::0;;;8768:35;8477:19;;11226:129:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;11373:13:0::1;::::0;11404:15:::1;::::0;11366:71:::1;::::0;-1:-1:-1;;;11366:71:0;;-1:-1:-1;;;;;11404:15:0;;::::1;11366:71;::::0;::::1;6898:51:1::0;-1:-1:-1;;6965:18:1;;;6958:34;11373:13:0;::::1;::::0;-1:-1:-1;11366:29:0::1;::::0;6871:18:1;;11366:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;11448:11:0::1;:18:::0;;-1:-1:-1;;;;11477:18:0;-1:-1:-1;;;11477:18:0;;;10834:669::o;6007:167::-;6085:4;6102:42;271:10;6126:9;6137:6;6102:9;:42::i;10401:164::-;2563:6;;-1:-1:-1;;;;;2563:6:0;271:10;2563:22;2555:67;;;;-1:-1:-1;;;2555:67:0;;;;;;;:::i;:::-;10475:6:::1;10470:88;10491:5;:12;10487:1;:16;10470:88;;;10542:4;10525;:14;10530:5;10536:1;10530:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;10525:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;10525:14:0;:21;;-1:-1:-1;;10525:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;10505:3:0::1;10470:88;;11517:218:::0;11592:10;;-1:-1:-1;;;;;11592:10:0;271;-1:-1:-1;;;;;11578:24:0;;11570:33;;;;;;11629:12;;11620:7;:21;;:47;;;;;11654:13;;11645:7;:22;;11620:47;11612:56;;;;;;11677:12;:20;;;11706:13;:21;11517:218::o;6823:335::-;-1:-1:-1;;;;;6916:19:0;;6908:68;;;;-1:-1:-1;;;6908:68:0;;9606:2:1;6908:68:0;;;9588:21:1;9645:2;9625:18;;;9618:30;9684:34;9664:18;;;9657:62;-1:-1:-1;;;9735:18:1;;;9728:34;9779:19;;6908:68:0;9404:400:1;6908:68:0;-1:-1:-1;;;;;6995:21:0;;6987:68;;;;-1:-1:-1;;;6987:68:0;;10011:2:1;6987:68:0;;;9993:21:1;10050:2;10030:18;;;10023:30;10089:34;10069:18;;;10062:62;-1:-1:-1;;;10140:18:1;;;10133:32;10182:19;;6987:68:0;9809:398:1;6987:68:0;-1:-1:-1;;;;;7066:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7118:32;;1370:25:1;;;7118:32:0;;1343:18:1;7118:32:0;;;;;;;6823:335;;;:::o;7166:2361::-;-1:-1:-1;;;;;7254:18:0;;7246:68;;;;-1:-1:-1;;;7246:68:0;;10414:2:1;7246:68:0;;;10396:21:1;10453:2;10433:18;;;10426:30;10492:34;10472:18;;;10465:62;-1:-1:-1;;;10543:18:1;;;10536:35;10588:19;;7246:68:0;10212:401:1;7246:68:0;-1:-1:-1;;;;;7333:16:0;;7325:64;;;;-1:-1:-1;;;7325:64:0;;10820:2:1;7325:64:0;;;10802:21:1;10859:2;10839:18;;;10832:30;10898:34;10878:18;;;10871:62;-1:-1:-1;;;10949:18:1;;;10942:33;10992:19;;7325:64:0;10618:399:1;7325:64:0;7417:1;7408:6;:10;7400:64;;;;-1:-1:-1;;;7400:64:0;;11224:2:1;7400:64:0;;;11206:21:1;11263:2;11243:18;;;11236:30;11302:34;11282:18;;;11275:62;-1:-1:-1;;;11353:18:1;;;11346:39;11402:19;;7400:64:0;11022:405:1;7400:64:0;7475:17;2501:6;;-1:-1:-1;;;;;7509:15:0;;;2501:6;;7509:15;;;;:32;;-1:-1:-1;2474:7:0;2501:6;-1:-1:-1;;;;;7528:13:0;;;2501:6;;7528:13;;7509:32;:52;;;;-1:-1:-1;7551:10:0;;-1:-1:-1;;;;;7545:16:0;;;7551:10;;7545:16;;7509:52;7505:1666;;;-1:-1:-1;;;;;7587:10:0;;;;;;:4;:10;;;;;;;;7586:11;:24;;;;-1:-1:-1;;;;;;7602:8:0;;;;;;:4;:8;;;;;;;;7601:9;7586:24;7578:33;;;;;;7631:9;;7642:1;7631:12;7628:139;;7675:76;7747:3;7675:67;7697:15;;7687:9;;:25;7686:55;;7727:14;;7686:55;;;7714:12;;7686:55;7675:6;;:10;:67::i;:76::-;7663:88;;7628:139;7797:13;;-1:-1:-1;;;;;7789:21:0;;;7797:13;;7789:21;:55;;;;-1:-1:-1;7828:15:0;;-1:-1:-1;;;;;7814:30:0;;;7828:15;;7814:30;;7789:55;:83;;;;-1:-1:-1;;;;;;7850:22:0;;;;;;:18;:22;;;;;;;;7848:24;7789:83;7785:420;;;7912:12;;7902:6;:22;;7894:60;;;;-1:-1:-1;;;7894:60:0;;11634:2:1;7894:60:0;;;11616:21:1;11673:2;11653:18;;;11646:30;11712:27;11692:18;;;11685:55;11757:18;;7894:60:0;11432:349:1;7894:60:0;8007:14;;7997:6;7981:13;7991:2;-1:-1:-1;;;;;5973:18:0;5946:7;5973:18;;;:9;:18;;;;;;;5880:119;7981:13;:22;;;;:::i;:::-;:40;;7973:79;;;;-1:-1:-1;;;7973:79:0;;12118:2:1;7973:79:0;;;12100:21:1;12157:2;12137:18;;;12130:30;12196:28;12176:18;;;12169:56;12242:18;;7973:79:0;11916:350:1;7973:79:0;8083:76;8155:3;8083:67;8105:15;;8095:9;;:25;8094:55;;8135:14;;8094:55;;8083:76;8178:9;:11;;8071:88;;-1:-1:-1;8178:9:0;:11;;;:::i;:::-;;;;;;7785:420;8230:13;;-1:-1:-1;;;;;8224:19:0;;;8230:13;;8224:19;:43;;;;-1:-1:-1;;;;;;8247:20:0;;8262:4;8247:20;;8224:43;8221:174;;;8300:79;8375:3;8300:70;8322:16;;8312:9;;:26;8311:58;;8354:15;;8311:58;;;8340:13;;8300:6;;:10;:70::i;:79::-;8288:91;;8221:174;8460:4;8411:28;5973:18;;;:9;:18;;;;;;8486:6;;-1:-1:-1;;;8486:6:0;;;;8485:7;:30;;;;-1:-1:-1;8502:13:0;;-1:-1:-1;;;;;8496:19:0;;;8502:13;;8496:19;8485:30;:45;;;;-1:-1:-1;8519:11:0;;-1:-1:-1;;;8519:11:0;;;;8485:45;:89;;;;;8557:17;;8534:20;:40;8485:89;:123;;;;;8590:18;;8578:9;;:30;8485:123;8481:679;;;8648:13;;8633:12;:28;8629:90;;;8698:1;8686:9;:13;8629:90;8757:1;8745:9;;:13;8737:49;;;;-1:-1:-1;;;8737:49:0;;12613:2:1;8737:49:0;;;12595:21:1;12652:2;12632:18;;;12625:30;12691:25;12671:18;;;12664:53;12734:18;;8737:49:0;12411:347:1;8737:49:0;8805:69;8822:51;8826:6;8834:38;8838:20;8860:11;;8834:3;:38::i;:::-;8822:3;:51::i;:::-;8805:16;:69::i;:::-;8922:21;8966:22;;8962:106;;9013:35;9026:21;9013:12;:35::i;:::-;9086:9;:11;;;:9;:11;;;:::i;:::-;;;;-1:-1:-1;;9132:12:0;9116:13;:28;-1:-1:-1;8481:679:0;7563:1608;7505:1666;9186:11;;9183:161;;9254:4;9236:24;;;;:9;:24;;;;;;:39;;9265:9;9236:28;:39::i;:::-;9229:4;9211:24;;;;:9;:24;;;;;;;:64;;;;9293:39;;-1:-1:-1;;;;;9293:39:0;;;;;;;9322:9;1370:25:1;;1358:2;1343:18;;1224:177;9293:39:0;;;;;;;;9183:161;-1:-1:-1;;;;;9370:15:0;;;;;;:9;:15;;;;;;:27;;9390:6;9370:19;:27::i;:::-;-1:-1:-1;;;;;9354:15:0;;;;;;:9;:15;;;;;:43;9422:40;9440:21;:6;9451:9;9440:10;:21::i;:::-;-1:-1:-1;;;;;9422:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;9408:13:0;;;;;;;:9;:13;;;;;:54;;;;9478:41;;;9497:21;:6;9508:9;9497:10;:21::i;:::-;9478:41;;1370:25:1;;;1358:2;1343:18;9478:41:0;;;;;;;7235:2292;7166:2361;;;:::o;1328:190::-;1414:7;1450:12;1442:6;;;;1434:29;;;;-1:-1:-1;;;1434:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1474:9:0;1486:5;1490:1;1486;:5;:::i;:::-;1474:17;1328:190;-1:-1:-1;;;;;1328:190:0:o;9643:483::-;5109:6;:13;;-1:-1:-1;;;;5109:13:0;-1:-1:-1;;;5109:13:0;;;9745:16:::1;::::0;;9759:1:::1;9745:16:::0;;;;;::::1;::::0;;-1:-1:-1;;9745:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;9745:16:0::1;9721:40;;9790:4;9772;9777:1;9772:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9772:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;9816:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;9816:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;9772:7;;9816:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9806:4;9811:1;9806:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9806:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;9881:15:::1;::::0;9849:62:::1;::::0;9866:4:::1;::::0;9881:15:::1;9899:11:::0;9849:8:::1;:62::i;:::-;9922:15;::::0;:196:::1;::::0;-1:-1:-1;;;9922:196:0;;-1:-1:-1;;;;;9922:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;10003:11;;9922:15:::1;::::0;10045:4;;10072::::1;::::0;10092:15:::1;::::0;9922:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5145:6:0;:14;;-1:-1:-1;;;;5145:14:0;;;-1:-1:-1;;;;9643:483:0:o;10301:92::-;10358:10;;:27;;-1:-1:-1;;;;;10358:10:0;;;;:27;;;;;10378:6;;10358:10;:27;:10;:27;10378:6;10358:10;:27;;;;;;;;;;;;;;;;;;;1526:246;1584:7;1608:1;1613;1608:6;1604:47;;-1:-1:-1;1638:1:0;1631:8;;1604:47;1661:9;1673:5;1677:1;1673;:5;:::i;:::-;1661:17;-1:-1:-1;1706:1:0;1697:5;1701:1;1661:17;1697:5;:::i;:::-;:10;1689:56;;;;-1:-1:-1;;;1689:56:0;;14305:2:1;1689:56:0;;;14287:21:1;14344:2;14324:18;;;14317:30;14383:34;14363:18;;;14356:62;-1:-1:-1;;;14434:18:1;;;14427:31;14475:19;;1689:56:0;14103:397:1;1689:56:0;1763:1;1526:246;-1:-1:-1;;;1526:246:0:o;1780:132::-;1838:7;1865:39;1869:1;1872;1865:39;;;;;;;;;;;;;;;;;:3;:39::i;9537:98::-;9594:7;9621:1;9619;:3;9618:9;;9626:1;9618:9;;;-1:-1:-1;9624:1:0;9537:98;-1:-1:-1;9537:98:0:o;997:179::-;1055:7;;1087:5;1091:1;1087;:5;:::i;:::-;1075:17;;1116:1;1111;:6;;1103:46;;;;-1:-1:-1;;;1103:46:0;;14707:2:1;1103:46:0;;;14689:21:1;14746:2;14726:18;;;14719:30;14785:29;14765:18;;;14758:57;14832:18;;1103:46:0;14505:351:1;1184:136:0;1242:7;1269:43;1273:1;1276;1269:43;;;;;;;;;;;;;;;;;:3;:43::i;1920:189::-;2006:7;2041:12;2034:5;2026:28;;;;-1:-1:-1;;;2026:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2065:9:0;2077:5;2081:1;2077;:5;:::i;14:418:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:131::-;-1:-1:-1;;;;;512:31:1;;502:42;;492:70;;558:1;555;548:12;492:70;437:131;:::o;573:134::-;641:20;;670:31;641:20;670:31;:::i;:::-;573:134;;;:::o;712:315::-;780:6;788;841:2;829:9;820:7;816:23;812:32;809:52;;;857:1;854;847:12;809:52;896:9;883:23;915:31;940:5;915:31;:::i;:::-;965:5;1017:2;1002:18;;;;989:32;;-1:-1:-1;;;712:315:1:o;1406:456::-;1483:6;1491;1499;1552:2;1540:9;1531:7;1527:23;1523:32;1520:52;;;1568:1;1565;1558:12;1520:52;1607:9;1594:23;1626:31;1651:5;1626:31;:::i;:::-;1676:5;-1:-1:-1;1733:2:1;1718:18;;1705:32;1746:33;1705:32;1746:33;:::i;:::-;1406:456;;1798:7;;-1:-1:-1;;;1852:2:1;1837:18;;;;1824:32;;1406:456::o;2056:127::-;2117:10;2112:3;2108:20;2105:1;2098:31;2148:4;2145:1;2138:15;2172:4;2169:1;2162:15;2188:1121;2272:6;2303:2;2346;2334:9;2325:7;2321:23;2317:32;2314:52;;;2362:1;2359;2352:12;2314:52;2402:9;2389:23;2431:18;2472:2;2464:6;2461:14;2458:34;;;2488:1;2485;2478:12;2458:34;2526:6;2515:9;2511:22;2501:32;;2571:7;2564:4;2560:2;2556:13;2552:27;2542:55;;2593:1;2590;2583:12;2542:55;2629:2;2616:16;2651:2;2647;2644:10;2641:36;;;2657:18;;:::i;:::-;2703:2;2700:1;2696:10;2735:2;2729:9;2798:2;2794:7;2789:2;2785;2781:11;2777:25;2769:6;2765:38;2853:6;2841:10;2838:22;2833:2;2821:10;2818:18;2815:46;2812:72;;;2864:18;;:::i;:::-;2900:2;2893:22;2950:18;;;2984:15;;;;-1:-1:-1;3026:11:1;;;3022:20;;;3054:19;;;3051:39;;;3086:1;3083;3076:12;3051:39;3110:11;;;;3130:148;3146:6;3141:3;3138:15;3130:148;;;3212:23;3231:3;3212:23;:::i;:::-;3200:36;;3163:12;;;;3256;;;;3130:148;;;3297:6;2188:1121;-1:-1:-1;;;;;;;;2188:1121:1:o;3314:247::-;3373:6;3426:2;3414:9;3405:7;3401:23;3397:32;3394:52;;;3442:1;3439;3432:12;3394:52;3481:9;3468:23;3500:31;3525:5;3500:31;:::i;3774:388::-;3842:6;3850;3903:2;3891:9;3882:7;3878:23;3874:32;3871:52;;;3919:1;3916;3909:12;3871:52;3958:9;3945:23;3977:31;4002:5;3977:31;:::i;:::-;4027:5;-1:-1:-1;4084:2:1;4069:18;;4056:32;4097:33;4056:32;4097:33;:::i;:::-;4149:7;4139:17;;;3774:388;;;;;:::o;4167:180::-;4226:6;4279:2;4267:9;4258:7;4254:23;4250:32;4247:52;;;4295:1;4292;4285:12;4247:52;-1:-1:-1;4318:23:1;;4167:180;-1:-1:-1;4167:180:1:o;4352:127::-;4413:10;4408:3;4404:20;4401:1;4394:31;4444:4;4441:1;4434:15;4468:4;4465:1;4458:15;4484:416;4573:1;4610:5;4573:1;4624:270;4645:7;4635:8;4632:21;4624:270;;;4704:4;4700:1;4696:6;4692:17;4686:4;4683:27;4680:53;;;4713:18;;:::i;:::-;4763:7;4753:8;4749:22;4746:55;;;4783:16;;;;4746:55;4862:22;;;;4822:15;;;;4624:270;;;4628:3;4484:416;;;;;:::o;4905:806::-;4954:5;4984:8;4974:80;;-1:-1:-1;5025:1:1;5039:5;;4974:80;5073:4;5063:76;;-1:-1:-1;5110:1:1;5124:5;;5063:76;5155:4;5173:1;5168:59;;;;5241:1;5236:130;;;;5148:218;;5168:59;5198:1;5189:10;;5212:5;;;5236:130;5273:3;5263:8;5260:17;5257:43;;;5280:18;;:::i;:::-;-1:-1:-1;;5336:1:1;5322:16;;5351:5;;5148:218;;5450:2;5440:8;5437:16;5431:3;5425:4;5422:13;5418:36;5412:2;5402:8;5399:16;5394:2;5388:4;5385:12;5381:35;5378:77;5375:159;;;-1:-1:-1;5487:19:1;;;5519:5;;5375:159;5566:34;5591:8;5585:4;5566:34;:::i;:::-;5636:6;5632:1;5628:6;5624:19;5615:7;5612:32;5609:58;;;5647:18;;:::i;:::-;5685:20;;4905:806;-1:-1:-1;;;4905:806:1:o;5716:140::-;5774:5;5803:47;5844:4;5834:8;5830:19;5824:4;5803:47;:::i;5861:168::-;5934:9;;;5965;;5982:15;;;5976:22;;5962:37;5952:71;;6003:18;;:::i;6034:356::-;6236:2;6218:21;;;6255:18;;;6248:30;6314:34;6309:2;6294:18;;6287:62;6381:2;6366:18;;6034:356::o;6395:127::-;6456:10;6451:3;6447:20;6444:1;6437:31;6487:4;6484:1;6477:15;6511:4;6508:1;6501:15;6527:184;6597:6;6650:2;6638:9;6629:7;6625:23;6621:32;6618:52;;;6666:1;6663;6656:12;6618:52;-1:-1:-1;6689:16:1;;6527:184;-1:-1:-1;6527:184:1:o;7003:277::-;7070:6;7123:2;7111:9;7102:7;7098:23;7094:32;7091:52;;;7139:1;7136;7129:12;7091:52;7171:9;7165:16;7224:5;7217:13;7210:21;7203:5;7200:32;7190:60;;7246:1;7243;7236:12;7637:251;7707:6;7760:2;7748:9;7739:7;7735:23;7731:32;7728:52;;;7776:1;7773;7766:12;7728:52;7808:9;7802:16;7827:31;7852:5;7827:31;:::i;8814:306::-;8902:6;8910;8918;8971:2;8959:9;8950:7;8946:23;8942:32;8939:52;;;8987:1;8984;8977:12;8939:52;9016:9;9010:16;9000:26;;9066:2;9055:9;9051:18;9045:25;9035:35;;9110:2;9099:9;9095:18;9089:25;9079:35;;8814:306;;;;;:::o;11786:125::-;11851:9;;;11872:10;;;11869:36;;;11885:18;;:::i;12271:135::-;12310:3;12331:17;;;12328:43;;12351:18;;:::i;:::-;-1:-1:-1;12398:1:1;12387:13;;12271:135::o;12763:128::-;12830:9;;;12851:11;;;12848:37;;;12865:18;;:::i;12896:980::-;13158:4;13206:3;13195:9;13191:19;13237:6;13226:9;13219:25;13263:2;13301:6;13296:2;13285:9;13281:18;13274:34;13344:3;13339:2;13328:9;13324:18;13317:31;13368:6;13403;13397:13;13434:6;13426;13419:22;13472:3;13461:9;13457:19;13450:26;;13511:2;13503:6;13499:15;13485:29;;13532:1;13542:195;13556:6;13553:1;13550:13;13542:195;;;13621:13;;-1:-1:-1;;;;;13617:39:1;13605:52;;13712:15;;;;13677:12;;;;13653:1;13571:9;13542:195;;;-1:-1:-1;;;;;;;13793:32:1;;;;13788:2;13773:18;;13766:60;-1:-1:-1;;;13857:3:1;13842:19;13835:35;13754:3;12896:980;-1:-1:-1;;;12896:980:1:o;13881:217::-;13921:1;13947;13937:132;;13991:10;13986:3;13982:20;13979:1;13972:31;14026:4;14023:1;14016:15;14054:4;14051:1;14044:15;13937:132;-1:-1:-1;14083:9:1;;13881:217::o

Swarm Source

ipfs://0aaeefef8015bef8944e0e8593408208b85b0f97caaf5e8cc1ca0130b85a3fdb

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ 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.