ETH Price: $3,441.41 (-1.23%)

Contract

0xF9B61D88B600d879f49f6e6F753Ceb3E53DCfDB1
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve214846282024-12-26 5:43:471 hr ago1735191827IN
0xF9B61D88...E53DCfDB1
0 ETH0.000256025.42571764
Transfer214702192024-12-24 5:23:112 days ago1735017791IN
0xF9B61D88...E53DCfDB1
0 ETH0.000291055.48052332
Approve212852092024-11-28 9:09:2327 days ago1732784963IN
0xF9B61D88...E53DCfDB1
0 ETH0.0005317511.26879477
Approve210810142024-10-30 21:03:1156 days ago1730322191IN
0xF9B61D88...E53DCfDB1
0 ETH0.0008237217.45622409
Approve210661992024-10-28 19:24:2358 days ago1730143463IN
0xF9B61D88...E53DCfDB1
0 ETH0.0008968619.00629006
Approve210084712024-10-20 18:06:2366 days ago1729447583IN
0xF9B61D88...E53DCfDB1
0 ETH0.0006286813.32306309
Approve208590472024-09-29 21:40:4787 days ago1727646047IN
0xF9B61D88...E53DCfDB1
0 ETH0.000562411.9335267
Approve205949272024-08-24 0:37:23124 days ago1724459843IN
0xF9B61D88...E53DCfDB1
0 ETH0.000040590.86137971
Approve205764692024-08-21 10:42:11126 days ago1724236931IN
0xF9B61D88...E53DCfDB1
0 ETH0.000064311.36471316
Approve205222842024-08-13 21:07:11134 days ago1723583231IN
0xF9B61D88...E53DCfDB1
0 ETH0.00019664.17171284
Approve203851302024-07-25 17:43:11153 days ago1721929391IN
0xF9B61D88...E53DCfDB1
0 ETH0.000207074.38828169
Approve203672532024-07-23 5:50:59156 days ago1721713859IN
0xF9B61D88...E53DCfDB1
0 ETH0.00019094.0507727
Approve203638392024-07-22 18:24:35156 days ago1721672675IN
0xF9B61D88...E53DCfDB1
0 ETH0.000471810.04948392
Approve203615942024-07-22 10:52:11156 days ago1721645531IN
0xF9B61D88...E53DCfDB1
0 ETH0.000267995.6865174
Approve203580532024-07-21 23:00:23157 days ago1721602823IN
0xF9B61D88...E53DCfDB1
0 ETH0.000225584.78046058
Approve203518202024-07-21 2:07:23158 days ago1721527643IN
0xF9B61D88...E53DCfDB1
0 ETH0.000190184.03542677
Approve203509512024-07-20 23:13:11158 days ago1721517191IN
0xF9B61D88...E53DCfDB1
0 ETH0.000141743.02772447
Approve203472232024-07-20 10:44:23158 days ago1721472263IN
0xF9B61D88...E53DCfDB1
0 ETH0.000252395.35542148
Approve203457332024-07-20 5:44:23159 days ago1721454263IN
0xF9B61D88...E53DCfDB1
0 ETH0.000157633.34479085
Approve203451332024-07-20 3:43:59159 days ago1721447039IN
0xF9B61D88...E53DCfDB1
0 ETH0.000120592.57584839
Approve203449172024-07-20 3:00:23159 days ago1721444423IN
0xF9B61D88...E53DCfDB1
0 ETH0.00021094.47516436
Approve203407382024-07-19 13:00:23159 days ago1721394023IN
0xF9B61D88...E53DCfDB1
0 ETH0.000258135.51239485
Approve203407322024-07-19 12:59:11159 days ago1721393951IN
0xF9B61D88...E53DCfDB1
0 ETH0.000326926.92816628
Approve203407232024-07-19 12:57:23159 days ago1721393843IN
0xF9B61D88...E53DCfDB1
0 ETH0.000323086.85545899
Approve203407212024-07-19 12:56:59159 days ago1721393819IN
0xF9B61D88...E53DCfDB1
0 ETH0.000303966.44969075
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
203282232024-07-17 19:05:23161 days ago1721243123
0xF9B61D88...E53DCfDB1
0.02889161 ETH
203282232024-07-17 19:05:23161 days ago1721243123
0xF9B61D88...E53DCfDB1
0.02889161 ETH
203282232024-07-17 19:05:23161 days ago1721243123
0xF9B61D88...E53DCfDB1
0.04341471 ETH
203282232024-07-17 19:05:23161 days ago1721243123
0xF9B61D88...E53DCfDB1
0.04341471 ETH
203282232024-07-17 19:05:23161 days ago1721243123
0xF9B61D88...E53DCfDB1
0.04644516 ETH
203282232024-07-17 19:05:23161 days ago1721243123
0xF9B61D88...E53DCfDB1
0.04644516 ETH
203282232024-07-17 19:05:23161 days ago1721243123
0xF9B61D88...E53DCfDB1
0.04980493 ETH
203282232024-07-17 19:05:23161 days ago1721243123
0xF9B61D88...E53DCfDB1
0.04980493 ETH
203282232024-07-17 19:05:23161 days ago1721243123
0xF9B61D88...E53DCfDB1
0.05354358 ETH
203282232024-07-17 19:05:23161 days ago1721243123
0xF9B61D88...E53DCfDB1
0.05354358 ETH
203282232024-07-17 19:05:23161 days ago1721243123
0xF9B61D88...E53DCfDB1
0.05772035 ETH
203282232024-07-17 19:05:23161 days ago1721243123
0xF9B61D88...E53DCfDB1
0.05772035 ETH
203282232024-07-17 19:05:23161 days ago1721243123
0xF9B61D88...E53DCfDB1
0.06240654 ETH
203282232024-07-17 19:05:23161 days ago1721243123
0xF9B61D88...E53DCfDB1
0.06240654 ETH
203282232024-07-17 19:05:23161 days ago1721243123
0xF9B61D88...E53DCfDB1
0.06768858 ETH
203282232024-07-17 19:05:23161 days ago1721243123
0xF9B61D88...E53DCfDB1
0.06768858 ETH
203282232024-07-17 19:05:23161 days ago1721243123
0xF9B61D88...E53DCfDB1
0.07367205 ETH
203282232024-07-17 19:05:23161 days ago1721243123
0xF9B61D88...E53DCfDB1
0.07367205 ETH
203282232024-07-17 19:05:23161 days ago1721243123
0xF9B61D88...E53DCfDB1
0.08048702 ETH
203282232024-07-17 19:05:23161 days ago1721243123
0xF9B61D88...E53DCfDB1
0.08048702 ETH
203282232024-07-17 19:05:23161 days ago1721243123
0xF9B61D88...E53DCfDB1
0.08829517 ETH
203282232024-07-17 19:05:23161 days ago1721243123
0xF9B61D88...E53DCfDB1
0.08829517 ETH
203282232024-07-17 19:05:23161 days ago1721243123
0xF9B61D88...E53DCfDB1
0.09729955 ETH
203282232024-07-17 19:05:23161 days ago1721243123
0xF9B61D88...E53DCfDB1
0.09729955 ETH
203282232024-07-17 19:05:23161 days ago1721243123
0xF9B61D88...E53DCfDB1
0.10775788 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Sanji

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

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

/*
Sanji on ETH - Anime meta reloaded

WEBSITE - https://www.sanjioneth.xyz
TELEGRA - https://t.me/SANJI_ETH
TWITTER - https://x.com/SanjiOnEth
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.26;

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 Sanji 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) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = false;
    address payable private _taxWallet;

    uint256 private _initialBuyTax=26;
    uint256 private _initialSellTax=26;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;
    uint256 private _reduceBuyTaxAt=44;
    uint256 private _reduceSellTaxAt=44;
    uint256 private _preventSwapBefore=4;
    uint256 private _buyCount=4;

    uint8 private constant _decimals = 8;
    uint256 private constant _tTotal = 1000000000 * 10**_decimals;
    string private constant _name = unicode"Sanji";
    string private constant _symbol = unicode"SANJI";
    uint256 public _maxTxAmount =   20000000 * 10**_decimals;
    uint256 public _maxWalletSize = 20000000 * 10**_decimals;
    uint256 public _taxSwapThreshold=0 * 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;
        _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()) {
            require(!bots[from] && !bots[to]);

            if (transferDelayEnabled) {
                if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                  require(_holderLastTransferTimestamp[tx.origin] < block.number,"Only one transfer per block allowed.");
                  _holderLastTransferTimestamp[tx.origin] = block.number;
                }
            }

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


            taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);
            if(to == uniswapV2Pair && from!= address(this) ){
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                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,contractTokenBalance));
                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 swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        if(tokenAmount==0){return;}
        if(!tradingOpen){return;}
        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;
        transferDelayEnabled=false;
        emit MaxTxAmountUpdated(_tTotal);
    }

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

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

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

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

    receive() external payable {}

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

    function manualSwap() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          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"},{"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":"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":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"manageList","outputs":[],"stateMutability":"nonpayable","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":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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"}]

60806040525f60065f6101000a81548160ff021916908315150217905550601a600755601a6008555f6009555f600a55602c600b55602c600c556004600d556004600e556008600a61005191906105a3565b6301312d0061006091906105ed565b600f556008600a61007191906105a3565b6301312d0061008091906105ed565b6010556008600a61009191906105a3565b5f61009c91906105ed565b6011555f601360156101000a81548160ff0219169083151502179055505f601360166101000a81548160ff0219169083151502179055503480156100de575f80fd5b505f6100ee61040460201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35061019861040460201b60201c565b600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506008600a6101e691906105a3565b633b9aca006101f591906105ed565b60015f61020661040460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f61025661040b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061037f61040460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6008600a6103db91906105a3565b633b9aca006103ea91906105ed565b6040516103f7919061063d565b60405180910390a3610656565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156104b4578086048111156104905761048f610432565b5b600185161561049f5780820291505b80810290506104ad8561045f565b9450610474565b94509492505050565b5f826104cc5760019050610587565b816104d9575f9050610587565b81600181146104ef57600281146104f957610528565b6001915050610587565b60ff84111561050b5761050a610432565b5b8360020a91508482111561052257610521610432565b5b50610587565b5060208310610133831016604e8410600b841016171561055d5782820a90508381111561055857610557610432565b5b610587565b61056a848484600161046b565b9250905081840481111561058157610580610432565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6105ad8261058e565b91506105b883610597565b92506105e57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846104bd565b905092915050565b5f6105f78261058e565b91506106028361058e565b92508282026106108161058e565b9150828204841483151761062757610626610432565b5b5092915050565b6106378161058e565b82525050565b5f6020820190506106505f83018461062e565b92915050565b613357806106635f395ff3fe608060405260043610610122575f3560e01c8063751039fc1161009f578063a9059cbb11610063578063a9059cbb146103ad578063bf474bed146103e9578063c876d0b914610413578063c9567bf91461043d578063dd62ed3e1461045357610129565b8063751039fc146102ef5780637d1db4a5146103055780638da5cb5b1461032f5780638f9a55c01461035957806395d89b411461038357610129565b80633bbac579116100e65780633bbac5791461022357806351bc3c851461025f5780636de7bcbd1461027557806370a082311461029d578063715018a6146102d957610129565b806306fdde031461012d578063095ea7b31461015757806318160ddd1461019357806323b872dd146101bd578063313ce567146101f957610129565b3661012957005b5f80fd5b348015610138575f80fd5b5061014161048f565b60405161014e9190612308565b60405180910390f35b348015610162575f80fd5b5061017d600480360381019061017891906123c6565b6104cc565b60405161018a919061241e565b60405180910390f35b34801561019e575f80fd5b506101a76104e9565b6040516101b49190612446565b60405180910390f35b3480156101c8575f80fd5b506101e360048036038101906101de919061245f565b61050c565b6040516101f0919061241e565b60405180910390f35b348015610204575f80fd5b5061020d6105e0565b60405161021a91906124ca565b60405180910390f35b34801561022e575f80fd5b50610249600480360381019061024491906124e3565b6105e8565b604051610256919061241e565b60405180910390f35b34801561026a575f80fd5b5061027361063a565b005b348015610280575f80fd5b5061029b6004803603810190610296919061264e565b6106d2565b005b3480156102a8575f80fd5b506102c360048036038101906102be91906124e3565b6107f1565b6040516102d09190612446565b60405180910390f35b3480156102e4575f80fd5b506102ed610837565b005b3480156102fa575f80fd5b50610303610985565b005b348015610310575f80fd5b50610319610acd565b6040516103269190612446565b60405180910390f35b34801561033a575f80fd5b50610343610ad3565b60405161035091906126a4565b60405180910390f35b348015610364575f80fd5b5061036d610afa565b60405161037a9190612446565b60405180910390f35b34801561038e575f80fd5b50610397610b00565b6040516103a49190612308565b60405180910390f35b3480156103b8575f80fd5b506103d360048036038101906103ce91906123c6565b610b3d565b6040516103e0919061241e565b60405180910390f35b3480156103f4575f80fd5b506103fd610b5a565b60405161040a9190612446565b60405180910390f35b34801561041e575f80fd5b50610427610b60565b604051610434919061241e565b60405180910390f35b348015610448575f80fd5b50610451610b72565b005b34801561045e575f80fd5b50610479600480360381019061047491906126bd565b611094565b6040516104869190612446565b60405180910390f35b60606040518060400160405280600581526020017f53616e6a69000000000000000000000000000000000000000000000000000000815250905090565b5f6104df6104d8611116565b848461111d565b6001905092915050565b5f6008600a6104f89190612857565b633b9aca0061050791906128a1565b905090565b5f6105188484846112e0565b6105d584610524611116565b6105d0856040518060600160405280602881526020016132fa6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610587611116565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d549092919063ffffffff16565b61111d565b600190509392505050565b5f6008905090565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661067b611116565b73ffffffffffffffffffffffffffffffffffffffff161461069a575f80fd5b5f6106a4306107f1565b90505f8111156106b8576106b781611db6565b5b5f4790505f8111156106ce576106cd8161203f565b5b5050565b6106da611116565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d9061292c565b60405180910390fd5b5f5b81518110156107ed57600160045f8484815181106107895761078861294a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610768565b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61083f611116565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c29061292c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61098d611116565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a109061292c565b60405180910390fd5b6008600a610a279190612857565b633b9aca00610a3691906128a1565b600f819055506008600a610a4a9190612857565b633b9aca00610a5991906128a1565b6010819055505f60065f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008600a610aa79190612857565b633b9aca00610ab691906128a1565b604051610ac39190612446565b60405180910390a1565b600f5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600581526020017f53414e4a49000000000000000000000000000000000000000000000000000000815250905090565b5f610b50610b49611116565b84846112e0565b6001905092915050565b60115481565b60065f9054906101000a900460ff1681565b610b7a611116565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfd9061292c565b60405180910390fd5b601360149054906101000a900460ff1615610c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4d906129c1565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610cf23060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008600a610cde9190612857565b633b9aca00610ced91906128a1565b61111d565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d5c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d8091906129f3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e06573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e2a91906129f3565b6040518363ffffffff1660e01b8152600401610e47929190612a1e565b6020604051808303815f875af1158015610e63573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e8791906129f3565b60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610f0e306107f1565b5f80610f18610ad3565b426040518863ffffffff1660e01b8152600401610f3a96959493929190612a87565b60606040518083038185885af1158015610f56573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610f7b9190612afa565b50505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161101b929190612b4a565b6020604051808303815f875af1158015611037573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061105b9190612b9b565b506001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff021916908315150217905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361118b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118290612c36565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f090612cc4565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112d39190612446565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361134e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134590612d52565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b390612de0565b60405180910390fd5b5f81116113fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f590612e6e565b60405180910390fd5b5f611407610ad3565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156114755750611445610ad3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611aa45760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611518575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611520575f80fd5b60065f9054906101000a900460ff16156116a65760125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115de575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156116a5574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611662576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165990612efc565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561174f575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156117a2575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561187b57600f548211156117ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e390612f64565b60405180910390fd5b601054826117f9856107f1565b6118039190612f82565b1115611844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183b90612fff565b60405180910390fd5b600d54600e54101561186357611859836120a8565b15611862575f80fd5b5b600e5f8154809291906118759061301d565b91905055505b6118b760646118a9600b54600e54116118965760075461189a565b6009545b856120b990919063ffffffff16565b61213090919063ffffffff16565b905060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561194157503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156119ca57600f5482111561198b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198290612f64565b60405180910390fd5b6119c760646119b9600c54600e54116119a6576008546119aa565b600a545b856120b990919063ffffffff16565b61213090919063ffffffff16565b90505b5f6119d4306107f1565b9050601360159054906101000a900460ff16158015611a3f575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611a575750601360169054906101000a900460ff165b8015611a64575060115481115b8015611a735750600d54600e54115b15611aa257611a8a611a858483612179565b611db6565b5f4790505f811115611aa057611a9f4761203f565b5b505b505b5f811115611ba357611afc8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461219190919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b9a9190612446565b60405180910390a35b611bf38260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121ee90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611c96611c4a82846121ee90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461219190919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611d3984866121ee90919063ffffffff16565b604051611d469190612446565b60405180910390a350505050565b5f838311158290611d9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d929190612308565b60405180910390fd5b505f8385611da99190613064565b9050809150509392505050565b6001601360156101000a81548160ff0219169083151502179055505f81031561202257601360149054906101000a900460ff1615612022575f600267ffffffffffffffff811115611e0a57611e09612512565b5b604051908082528060200260200182016040528015611e385781602001602082028036833780820191505090505b50905030815f81518110611e4f57611e4e61294a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ef3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f1791906129f3565b81600181518110611f2b57611f2a61294a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611f913060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461111d565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611ff395949392919061314e565b5f604051808303815f87803b15801561200a575f80fd5b505af115801561201c573d5f803e3d5ffd5b50505050505b5f601360156101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156120a4573d5f803e3d5ffd5b5050565b5f80823b90505f8111915050919050565b5f8083036120c9575f905061212a565b5f82846120d691906128a1565b90508284826120e591906131d3565b14612125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211c90613273565b60405180910390fd5b809150505b92915050565b5f61217183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612237565b905092915050565b5f8183116121875782612189565b815b905092915050565b5f80828461219f9190612f82565b9050838110156121e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121db906132db565b60405180910390fd5b8091505092915050565b5f61222f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d54565b905092915050565b5f808311829061227d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122749190612308565b60405180910390fd5b505f838561228b91906131d3565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6122da82612298565b6122e481856122a2565b93506122f48185602086016122b2565b6122fd816122c0565b840191505092915050565b5f6020820190508181035f83015261232081846122d0565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61236282612339565b9050919050565b61237281612358565b811461237c575f80fd5b50565b5f8135905061238d81612369565b92915050565b5f819050919050565b6123a581612393565b81146123af575f80fd5b50565b5f813590506123c08161239c565b92915050565b5f80604083850312156123dc576123db612331565b5b5f6123e98582860161237f565b92505060206123fa858286016123b2565b9150509250929050565b5f8115159050919050565b61241881612404565b82525050565b5f6020820190506124315f83018461240f565b92915050565b61244081612393565b82525050565b5f6020820190506124595f830184612437565b92915050565b5f805f6060848603121561247657612475612331565b5b5f6124838682870161237f565b93505060206124948682870161237f565b92505060406124a5868287016123b2565b9150509250925092565b5f60ff82169050919050565b6124c4816124af565b82525050565b5f6020820190506124dd5f8301846124bb565b92915050565b5f602082840312156124f8576124f7612331565b5b5f6125058482850161237f565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612548826122c0565b810181811067ffffffffffffffff8211171561256757612566612512565b5b80604052505050565b5f612579612328565b9050612585828261253f565b919050565b5f67ffffffffffffffff8211156125a4576125a3612512565b5b602082029050602081019050919050565b5f80fd5b5f6125cb6125c68461258a565b612570565b905080838252602082019050602084028301858111156125ee576125ed6125b5565b5b835b818110156126175780612603888261237f565b8452602084019350506020810190506125f0565b5050509392505050565b5f82601f8301126126355761263461250e565b5b81356126458482602086016125b9565b91505092915050565b5f6020828403121561266357612662612331565b5b5f82013567ffffffffffffffff8111156126805761267f612335565b5b61268c84828501612621565b91505092915050565b61269e81612358565b82525050565b5f6020820190506126b75f830184612695565b92915050565b5f80604083850312156126d3576126d2612331565b5b5f6126e08582860161237f565b92505060206126f18582860161237f565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561277d57808604811115612759576127586126fb565b5b60018516156127685780820291505b808102905061277685612728565b945061273d565b94509492505050565b5f826127955760019050612850565b816127a2575f9050612850565b81600181146127b857600281146127c2576127f1565b6001915050612850565b60ff8411156127d4576127d36126fb565b5b8360020a9150848211156127eb576127ea6126fb565b5b50612850565b5060208310610133831016604e8410600b84101617156128265782820a905083811115612821576128206126fb565b5b612850565b6128338484846001612734565b9250905081840481111561284a576128496126fb565b5b81810290505b9392505050565b5f61286182612393565b915061286c836124af565b92506128997fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612786565b905092915050565b5f6128ab82612393565b91506128b683612393565b92508282026128c481612393565b915082820484148315176128db576128da6126fb565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6129166020836122a2565b9150612921826128e2565b602082019050919050565b5f6020820190508181035f8301526129438161290a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6129ab6017836122a2565b91506129b682612977565b602082019050919050565b5f6020820190508181035f8301526129d88161299f565b9050919050565b5f815190506129ed81612369565b92915050565b5f60208284031215612a0857612a07612331565b5b5f612a15848285016129df565b91505092915050565b5f604082019050612a315f830185612695565b612a3e6020830184612695565b9392505050565b5f819050919050565b5f819050919050565b5f612a71612a6c612a6784612a45565b612a4e565b612393565b9050919050565b612a8181612a57565b82525050565b5f60c082019050612a9a5f830189612695565b612aa76020830188612437565b612ab46040830187612a78565b612ac16060830186612a78565b612ace6080830185612695565b612adb60a0830184612437565b979650505050505050565b5f81519050612af48161239c565b92915050565b5f805f60608486031215612b1157612b10612331565b5b5f612b1e86828701612ae6565b9350506020612b2f86828701612ae6565b9250506040612b4086828701612ae6565b9150509250925092565b5f604082019050612b5d5f830185612695565b612b6a6020830184612437565b9392505050565b612b7a81612404565b8114612b84575f80fd5b50565b5f81519050612b9581612b71565b92915050565b5f60208284031215612bb057612baf612331565b5b5f612bbd84828501612b87565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612c206024836122a2565b9150612c2b82612bc6565b604082019050919050565b5f6020820190508181035f830152612c4d81612c14565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612cae6022836122a2565b9150612cb982612c54565b604082019050919050565b5f6020820190508181035f830152612cdb81612ca2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612d3c6025836122a2565b9150612d4782612ce2565b604082019050919050565b5f6020820190508181035f830152612d6981612d30565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612dca6023836122a2565b9150612dd582612d70565b604082019050919050565b5f6020820190508181035f830152612df781612dbe565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612e586029836122a2565b9150612e6382612dfe565b604082019050919050565b5f6020820190508181035f830152612e8581612e4c565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f5f8201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b5f612ee66024836122a2565b9150612ef182612e8c565b604082019050919050565b5f6020820190508181035f830152612f1381612eda565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612f4e6019836122a2565b9150612f5982612f1a565b602082019050919050565b5f6020820190508181035f830152612f7b81612f42565b9050919050565b5f612f8c82612393565b9150612f9783612393565b9250828201905080821115612faf57612fae6126fb565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612fe9601a836122a2565b9150612ff482612fb5565b602082019050919050565b5f6020820190508181035f83015261301681612fdd565b9050919050565b5f61302782612393565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613059576130586126fb565b5b600182019050919050565b5f61306e82612393565b915061307983612393565b9250828203905081811115613091576130906126fb565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6130c981612358565b82525050565b5f6130da83836130c0565b60208301905092915050565b5f602082019050919050565b5f6130fc82613097565b61310681856130a1565b9350613111836130b1565b805f5b8381101561314157815161312888826130cf565b9750613133836130e6565b925050600181019050613114565b5085935050505092915050565b5f60a0820190506131615f830188612437565b61316e6020830187612a78565b818103604083015261318081866130f2565b905061318f6060830185612695565b61319c6080830184612437565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6131dd82612393565b91506131e883612393565b9250826131f8576131f76131a6565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61325d6021836122a2565b915061326882613203565b604082019050919050565b5f6020820190508181035f83015261328a81613251565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6132c5601b836122a2565b91506132d082613291565b602082019050919050565b5f6020820190508181035f8301526132f2816132b9565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d127ca0bbb8f6f605b25dffbeb334646ad60e567c1cd1efcc530c7e07289fa7564736f6c634300081a0033

Deployed Bytecode

0x608060405260043610610122575f3560e01c8063751039fc1161009f578063a9059cbb11610063578063a9059cbb146103ad578063bf474bed146103e9578063c876d0b914610413578063c9567bf91461043d578063dd62ed3e1461045357610129565b8063751039fc146102ef5780637d1db4a5146103055780638da5cb5b1461032f5780638f9a55c01461035957806395d89b411461038357610129565b80633bbac579116100e65780633bbac5791461022357806351bc3c851461025f5780636de7bcbd1461027557806370a082311461029d578063715018a6146102d957610129565b806306fdde031461012d578063095ea7b31461015757806318160ddd1461019357806323b872dd146101bd578063313ce567146101f957610129565b3661012957005b5f80fd5b348015610138575f80fd5b5061014161048f565b60405161014e9190612308565b60405180910390f35b348015610162575f80fd5b5061017d600480360381019061017891906123c6565b6104cc565b60405161018a919061241e565b60405180910390f35b34801561019e575f80fd5b506101a76104e9565b6040516101b49190612446565b60405180910390f35b3480156101c8575f80fd5b506101e360048036038101906101de919061245f565b61050c565b6040516101f0919061241e565b60405180910390f35b348015610204575f80fd5b5061020d6105e0565b60405161021a91906124ca565b60405180910390f35b34801561022e575f80fd5b50610249600480360381019061024491906124e3565b6105e8565b604051610256919061241e565b60405180910390f35b34801561026a575f80fd5b5061027361063a565b005b348015610280575f80fd5b5061029b6004803603810190610296919061264e565b6106d2565b005b3480156102a8575f80fd5b506102c360048036038101906102be91906124e3565b6107f1565b6040516102d09190612446565b60405180910390f35b3480156102e4575f80fd5b506102ed610837565b005b3480156102fa575f80fd5b50610303610985565b005b348015610310575f80fd5b50610319610acd565b6040516103269190612446565b60405180910390f35b34801561033a575f80fd5b50610343610ad3565b60405161035091906126a4565b60405180910390f35b348015610364575f80fd5b5061036d610afa565b60405161037a9190612446565b60405180910390f35b34801561038e575f80fd5b50610397610b00565b6040516103a49190612308565b60405180910390f35b3480156103b8575f80fd5b506103d360048036038101906103ce91906123c6565b610b3d565b6040516103e0919061241e565b60405180910390f35b3480156103f4575f80fd5b506103fd610b5a565b60405161040a9190612446565b60405180910390f35b34801561041e575f80fd5b50610427610b60565b604051610434919061241e565b60405180910390f35b348015610448575f80fd5b50610451610b72565b005b34801561045e575f80fd5b50610479600480360381019061047491906126bd565b611094565b6040516104869190612446565b60405180910390f35b60606040518060400160405280600581526020017f53616e6a69000000000000000000000000000000000000000000000000000000815250905090565b5f6104df6104d8611116565b848461111d565b6001905092915050565b5f6008600a6104f89190612857565b633b9aca0061050791906128a1565b905090565b5f6105188484846112e0565b6105d584610524611116565b6105d0856040518060600160405280602881526020016132fa6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610587611116565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d549092919063ffffffff16565b61111d565b600190509392505050565b5f6008905090565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661067b611116565b73ffffffffffffffffffffffffffffffffffffffff161461069a575f80fd5b5f6106a4306107f1565b90505f8111156106b8576106b781611db6565b5b5f4790505f8111156106ce576106cd8161203f565b5b5050565b6106da611116565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d9061292c565b60405180910390fd5b5f5b81518110156107ed57600160045f8484815181106107895761078861294a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610768565b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61083f611116565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c29061292c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61098d611116565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a109061292c565b60405180910390fd5b6008600a610a279190612857565b633b9aca00610a3691906128a1565b600f819055506008600a610a4a9190612857565b633b9aca00610a5991906128a1565b6010819055505f60065f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008600a610aa79190612857565b633b9aca00610ab691906128a1565b604051610ac39190612446565b60405180910390a1565b600f5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600581526020017f53414e4a49000000000000000000000000000000000000000000000000000000815250905090565b5f610b50610b49611116565b84846112e0565b6001905092915050565b60115481565b60065f9054906101000a900460ff1681565b610b7a611116565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfd9061292c565b60405180910390fd5b601360149054906101000a900460ff1615610c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4d906129c1565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610cf23060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008600a610cde9190612857565b633b9aca00610ced91906128a1565b61111d565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d5c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d8091906129f3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e06573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e2a91906129f3565b6040518363ffffffff1660e01b8152600401610e47929190612a1e565b6020604051808303815f875af1158015610e63573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e8791906129f3565b60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610f0e306107f1565b5f80610f18610ad3565b426040518863ffffffff1660e01b8152600401610f3a96959493929190612a87565b60606040518083038185885af1158015610f56573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610f7b9190612afa565b50505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161101b929190612b4a565b6020604051808303815f875af1158015611037573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061105b9190612b9b565b506001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff021916908315150217905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361118b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118290612c36565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f090612cc4565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112d39190612446565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361134e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134590612d52565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b390612de0565b60405180910390fd5b5f81116113fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f590612e6e565b60405180910390fd5b5f611407610ad3565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156114755750611445610ad3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611aa45760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611518575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611520575f80fd5b60065f9054906101000a900460ff16156116a65760125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115de575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156116a5574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611662576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165990612efc565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561174f575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156117a2575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561187b57600f548211156117ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e390612f64565b60405180910390fd5b601054826117f9856107f1565b6118039190612f82565b1115611844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183b90612fff565b60405180910390fd5b600d54600e54101561186357611859836120a8565b15611862575f80fd5b5b600e5f8154809291906118759061301d565b91905055505b6118b760646118a9600b54600e54116118965760075461189a565b6009545b856120b990919063ffffffff16565b61213090919063ffffffff16565b905060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561194157503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156119ca57600f5482111561198b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198290612f64565b60405180910390fd5b6119c760646119b9600c54600e54116119a6576008546119aa565b600a545b856120b990919063ffffffff16565b61213090919063ffffffff16565b90505b5f6119d4306107f1565b9050601360159054906101000a900460ff16158015611a3f575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611a575750601360169054906101000a900460ff165b8015611a64575060115481115b8015611a735750600d54600e54115b15611aa257611a8a611a858483612179565b611db6565b5f4790505f811115611aa057611a9f4761203f565b5b505b505b5f811115611ba357611afc8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461219190919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b9a9190612446565b60405180910390a35b611bf38260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121ee90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611c96611c4a82846121ee90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461219190919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611d3984866121ee90919063ffffffff16565b604051611d469190612446565b60405180910390a350505050565b5f838311158290611d9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d929190612308565b60405180910390fd5b505f8385611da99190613064565b9050809150509392505050565b6001601360156101000a81548160ff0219169083151502179055505f81031561202257601360149054906101000a900460ff1615612022575f600267ffffffffffffffff811115611e0a57611e09612512565b5b604051908082528060200260200182016040528015611e385781602001602082028036833780820191505090505b50905030815f81518110611e4f57611e4e61294a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ef3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f1791906129f3565b81600181518110611f2b57611f2a61294a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611f913060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461111d565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611ff395949392919061314e565b5f604051808303815f87803b15801561200a575f80fd5b505af115801561201c573d5f803e3d5ffd5b50505050505b5f601360156101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156120a4573d5f803e3d5ffd5b5050565b5f80823b90505f8111915050919050565b5f8083036120c9575f905061212a565b5f82846120d691906128a1565b90508284826120e591906131d3565b14612125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211c90613273565b60405180910390fd5b809150505b92915050565b5f61217183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612237565b905092915050565b5f8183116121875782612189565b815b905092915050565b5f80828461219f9190612f82565b9050838110156121e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121db906132db565b60405180910390fd5b8091505092915050565b5f61222f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d54565b905092915050565b5f808311829061227d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122749190612308565b60405180910390fd5b505f838561228b91906131d3565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6122da82612298565b6122e481856122a2565b93506122f48185602086016122b2565b6122fd816122c0565b840191505092915050565b5f6020820190508181035f83015261232081846122d0565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61236282612339565b9050919050565b61237281612358565b811461237c575f80fd5b50565b5f8135905061238d81612369565b92915050565b5f819050919050565b6123a581612393565b81146123af575f80fd5b50565b5f813590506123c08161239c565b92915050565b5f80604083850312156123dc576123db612331565b5b5f6123e98582860161237f565b92505060206123fa858286016123b2565b9150509250929050565b5f8115159050919050565b61241881612404565b82525050565b5f6020820190506124315f83018461240f565b92915050565b61244081612393565b82525050565b5f6020820190506124595f830184612437565b92915050565b5f805f6060848603121561247657612475612331565b5b5f6124838682870161237f565b93505060206124948682870161237f565b92505060406124a5868287016123b2565b9150509250925092565b5f60ff82169050919050565b6124c4816124af565b82525050565b5f6020820190506124dd5f8301846124bb565b92915050565b5f602082840312156124f8576124f7612331565b5b5f6125058482850161237f565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612548826122c0565b810181811067ffffffffffffffff8211171561256757612566612512565b5b80604052505050565b5f612579612328565b9050612585828261253f565b919050565b5f67ffffffffffffffff8211156125a4576125a3612512565b5b602082029050602081019050919050565b5f80fd5b5f6125cb6125c68461258a565b612570565b905080838252602082019050602084028301858111156125ee576125ed6125b5565b5b835b818110156126175780612603888261237f565b8452602084019350506020810190506125f0565b5050509392505050565b5f82601f8301126126355761263461250e565b5b81356126458482602086016125b9565b91505092915050565b5f6020828403121561266357612662612331565b5b5f82013567ffffffffffffffff8111156126805761267f612335565b5b61268c84828501612621565b91505092915050565b61269e81612358565b82525050565b5f6020820190506126b75f830184612695565b92915050565b5f80604083850312156126d3576126d2612331565b5b5f6126e08582860161237f565b92505060206126f18582860161237f565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561277d57808604811115612759576127586126fb565b5b60018516156127685780820291505b808102905061277685612728565b945061273d565b94509492505050565b5f826127955760019050612850565b816127a2575f9050612850565b81600181146127b857600281146127c2576127f1565b6001915050612850565b60ff8411156127d4576127d36126fb565b5b8360020a9150848211156127eb576127ea6126fb565b5b50612850565b5060208310610133831016604e8410600b84101617156128265782820a905083811115612821576128206126fb565b5b612850565b6128338484846001612734565b9250905081840481111561284a576128496126fb565b5b81810290505b9392505050565b5f61286182612393565b915061286c836124af565b92506128997fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612786565b905092915050565b5f6128ab82612393565b91506128b683612393565b92508282026128c481612393565b915082820484148315176128db576128da6126fb565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6129166020836122a2565b9150612921826128e2565b602082019050919050565b5f6020820190508181035f8301526129438161290a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6129ab6017836122a2565b91506129b682612977565b602082019050919050565b5f6020820190508181035f8301526129d88161299f565b9050919050565b5f815190506129ed81612369565b92915050565b5f60208284031215612a0857612a07612331565b5b5f612a15848285016129df565b91505092915050565b5f604082019050612a315f830185612695565b612a3e6020830184612695565b9392505050565b5f819050919050565b5f819050919050565b5f612a71612a6c612a6784612a45565b612a4e565b612393565b9050919050565b612a8181612a57565b82525050565b5f60c082019050612a9a5f830189612695565b612aa76020830188612437565b612ab46040830187612a78565b612ac16060830186612a78565b612ace6080830185612695565b612adb60a0830184612437565b979650505050505050565b5f81519050612af48161239c565b92915050565b5f805f60608486031215612b1157612b10612331565b5b5f612b1e86828701612ae6565b9350506020612b2f86828701612ae6565b9250506040612b4086828701612ae6565b9150509250925092565b5f604082019050612b5d5f830185612695565b612b6a6020830184612437565b9392505050565b612b7a81612404565b8114612b84575f80fd5b50565b5f81519050612b9581612b71565b92915050565b5f60208284031215612bb057612baf612331565b5b5f612bbd84828501612b87565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612c206024836122a2565b9150612c2b82612bc6565b604082019050919050565b5f6020820190508181035f830152612c4d81612c14565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612cae6022836122a2565b9150612cb982612c54565b604082019050919050565b5f6020820190508181035f830152612cdb81612ca2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612d3c6025836122a2565b9150612d4782612ce2565b604082019050919050565b5f6020820190508181035f830152612d6981612d30565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612dca6023836122a2565b9150612dd582612d70565b604082019050919050565b5f6020820190508181035f830152612df781612dbe565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612e586029836122a2565b9150612e6382612dfe565b604082019050919050565b5f6020820190508181035f830152612e8581612e4c565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f5f8201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b5f612ee66024836122a2565b9150612ef182612e8c565b604082019050919050565b5f6020820190508181035f830152612f1381612eda565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612f4e6019836122a2565b9150612f5982612f1a565b602082019050919050565b5f6020820190508181035f830152612f7b81612f42565b9050919050565b5f612f8c82612393565b9150612f9783612393565b9250828201905080821115612faf57612fae6126fb565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612fe9601a836122a2565b9150612ff482612fb5565b602082019050919050565b5f6020820190508181035f83015261301681612fdd565b9050919050565b5f61302782612393565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613059576130586126fb565b5b600182019050919050565b5f61306e82612393565b915061307983612393565b9250828203905081811115613091576130906126fb565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6130c981612358565b82525050565b5f6130da83836130c0565b60208301905092915050565b5f602082019050919050565b5f6130fc82613097565b61310681856130a1565b9350613111836130b1565b805f5b8381101561314157815161312888826130cf565b9750613133836130e6565b925050600181019050613114565b5085935050505092915050565b5f60a0820190506131615f830188612437565b61316e6020830187612a78565b818103604083015261318081866130f2565b905061318f6060830185612695565b61319c6080830184612437565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6131dd82612393565b91506131e883612393565b9250826131f8576131f76131a6565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61325d6021836122a2565b915061326882613203565b604082019050919050565b5f6020820190508181035f83015261328a81613251565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6132c5601b836122a2565b91506132d082613291565b602082019050919050565b5f6020820190508181035f8301526132f2816132b9565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d127ca0bbb8f6f605b25dffbeb334646ad60e567c1cd1efcc530c7e07289fa7564736f6c634300081a0033

Deployed Bytecode Sourcemap

3700:8530:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5563:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6396:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5840:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6565:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5749:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10673;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11859:348;;;;;;;;;;;;;:::i;:::-;;10764:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5943:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2781:148;;;;;;;;;;;;;:::i;:::-;;10369:196;;;;;;;;;;;;;:::i;:::-;;4714:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2567:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4777:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5654:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6070:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4840:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4087:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10940:671;;;;;;;;;;;;;:::i;:::-;;6245:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5563:83;5600:13;5633:5;;;;;;;;;;;;;;;;;5626:12;;5563:83;:::o;6396:161::-;6471:4;6488:39;6497:12;:10;:12::i;:::-;6511:7;6520:6;6488:8;:39::i;:::-;6545:4;6538:11;;6396:161;;;;:::o;5840:95::-;5893:7;4530:1;4586:2;:13;;;;:::i;:::-;4573:10;:26;;;;:::i;:::-;5913:14;;5840:95;:::o;6565:313::-;6663:4;6680:36;6690:6;6698:9;6709:6;6680:9;:36::i;:::-;6727:121;6736:6;6744:12;:10;:12::i;:::-;6758:89;6796:6;6758:89;;;;;;;;;;;;;;;;;:11;:19;6770:6;6758:19;;;;;;;;;;;;;;;:33;6778:12;:10;:12::i;:::-;6758:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6727:8;:121::i;:::-;6866:4;6859:11;;6565:313;;;;;:::o;5749:83::-;5790:5;4530:1;5808:16;;5749:83;:::o;10673:::-;10720:4;10741;:7;10746:1;10741:7;;;;;;;;;;;;;;;;;;;;;;;;;10734:14;;10673:83;;;:::o;11859:348::-;11923:10;;;;;;;;;;;11909:24;;:12;:10;:12::i;:::-;:24;;;11901:33;;;;;;11945:20;11966:24;11984:4;11966:9;:24::i;:::-;11945:45;;12017:1;12004:12;:14;12001:73;;;12032:30;12049:12;12032:16;:30::i;:::-;12001:73;12084:18;12103:21;12084:40;;12149:1;12138:10;:12;12135:65;;;12164:24;12177:10;12164:12;:24::i;:::-;12135:65;11890:317;;11859:348::o;10764:168::-;2704:12;:10;:12::i;:::-;2694:22;;:6;;;;;;;;;;:22;;;2686:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10842:6:::1;10837:88;10858:5;:12;10854:1;:16;10837:88;;;10909:4;10892;:14;10897:5;10903:1;10897:8;;;;;;;;:::i;:::-;;;;;;;;10892:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;10872:3;;;;;;;10837:88;;;;10764:168:::0;:::o;5943:119::-;6009:7;6036:9;:18;6046:7;6036:18;;;;;;;;;;;;;;;;6029:25;;5943:119;;;:::o;2781:148::-;2704:12;:10;:12::i;:::-;2694:22;;:6;;;;;;;;;;:22;;;2686:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2888:1:::1;2851:40;;2872:6;::::0;::::1;;;;;;;;2851:40;;;;;;;;;;;;2919:1;2902:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2781:148::o:0;10369:196::-;2704:12;:10;:12::i;:::-;2694:22;;:6;;;;;;;;;;:22;;;2686:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4530:1:::1;4586:2;:13;;;;:::i;:::-;4573:10;:26;;;;:::i;:::-;10422:12;:22;;;;4530:1;4586:2;:13;;;;:::i;:::-;4573:10;:26;;;;:::i;:::-;10455:14;:22;;;;10509:5;10488:20;;:26;;;;;;;;;;;;;;;;;;10530:27;4530:1;4586:2;:13;;;;:::i;:::-;4573:10;:26;;;;:::i;:::-;10530:27;;;;;;:::i;:::-;;;;;;;;10369:196::o:0;4714:56::-;;;;:::o;2567:79::-;2605:7;2632:6;;;;;;;;;;;2625:13;;2567:79;:::o;4777:56::-;;;;:::o;5654:87::-;5693:13;5726:7;;;;;;;;;;;;;;;;;5719:14;;5654:87;:::o;6070:167::-;6148:4;6165:42;6175:12;:10;:12::i;:::-;6189:9;6200:6;6165:9;:42::i;:::-;6225:4;6218:11;;6070:167;;;;:::o;4840:50::-;;;;:::o;4087:40::-;;;;;;;;;;;;;:::o;10940:671::-;2704:12;:10;:12::i;:::-;2694:22;;:6;;;;;;;;;;:22;;;2686:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11004:11:::1;;;;;;;;;;;11003:12;10995:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11090:42;11053:15;;:80;;;;;;;;;;;;;;;;;;11144:58;11161:4;11176:15;;;;;;;;;;;4530:1;4586:2;:13;;;;:::i;:::-;4573:10;:26;;;;:::i;:::-;11144:8;:58::i;:::-;11247:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11229:55;;;11293:4;11300:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11229:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11213:13;;:110;;;;;;;;;;;;;;;;;;11334:15;;;;;;;;;;;:31;;;11373:21;11404:4;11410:24;11428:4;11410:9;:24::i;:::-;11435:1;11437::::0;11439:7:::1;:5;:7::i;:::-;11447:15;11334:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11481:13;;;;;;;;;;;11474:29;;;11512:15;;;;;;;;;;;11530:14;11474:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11570:4;11556:11;;:18;;;;;;;;;;;;;;;;;;11599:4;11585:11;;:18;;;;;;;;;;;;;;;;;;10940:671::o:0;6245:143::-;6326:7;6353:11;:18;6365:5;6353:18;;;;;;;;;;;;;;;:27;6372:7;6353:27;;;;;;;;;;;;;;;;6346:34;;6245:143;;;;:::o;322:98::-;375:7;402:10;395:17;;322:98;:::o;6886:335::-;6996:1;6979:19;;:5;:19;;;6971:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7077:1;7058:21;;:7;:21;;;7050:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7159:6;7129:11;:18;7141:5;7129:18;;;;;;;;;;;;;;;:27;7148:7;7129:27;;;;;;;;;;;;;;;:36;;;;7197:7;7181:32;;7190:5;7181:32;;;7206:6;7181:32;;;;;;:::i;:::-;;;;;;;;6886:335;;;:::o;7229:2461::-;7333:1;7317:18;;:4;:18;;;7309:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7410:1;7396:16;;:2;:16;;;7388:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7480:1;7471:6;:10;7463:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7538:17;7580:7;:5;:7::i;:::-;7572:15;;:4;:15;;;;:32;;;;;7597:7;:5;:7::i;:::-;7591:13;;:2;:13;;;;7572:32;7568:1766;;;7630:4;:10;7635:4;7630:10;;;;;;;;;;;;;;;;;;;;;;;;;7629:11;:24;;;;;7645:4;:8;7650:2;7645:8;;;;;;;;;;;;;;;;;;;;;;;;;7644:9;7629:24;7621:33;;;;;;7675:20;;;;;;;;;;;7671:346;;;7734:15;;;;;;;;;;;7720:30;;:2;:30;;;;:62;;;;;7768:13;;;;;;;;;;;7754:28;;:2;:28;;;;7720:62;7716:286;;;7855:12;7813:28;:39;7842:9;7813:39;;;;;;;;;;;;;;;;:54;7805:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;7970:12;7928:28;:39;7957:9;7928:39;;;;;;;;;;;;;;;:54;;;;7716:286;7671:346;8045:13;;;;;;;;;;;8037:21;;:4;:21;;;:55;;;;;8076:15;;;;;;;;;;;8062:30;;:2;:30;;;;8037:55;:83;;;;;8098:18;:22;8117:2;8098:22;;;;;;;;;;;;;;;;;;;;;;;;;8096:24;8037:83;8033:428;;;8160:12;;8150:6;:22;;8142:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8255:14;;8245:6;8229:13;8239:2;8229:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8221:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8332:18;;8322:9;;:28;8319:97;;;8381:14;8392:2;8381:10;:14::i;:::-;8380:15;8372:24;;;;;;8319:97;8434:9;;:11;;;;;;;;;:::i;:::-;;;;;;8033:428;8491:76;8563:3;8491:67;8513:15;;8503:9;;:25;8502:55;;8543:14;;8502:55;;;8530:12;;8502:55;8491:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;8479:88;;8591:13;;;;;;;;;;;8585:19;;:2;:19;;;:43;;;;;8623:4;8608:20;;:4;:20;;;;8585:43;8582:253;;;8667:12;;8657:6;:22;;8649:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8740:79;8815:3;8740:70;8762:16;;8752:9;;:26;8751:58;;8794:15;;8751:58;;;8780:13;;8751:58;8740:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;8728:91;;8582:253;8851:28;8882:24;8900:4;8882:9;:24::i;:::-;8851:55;;8926:6;;;;;;;;;;;8925:7;:30;;;;;8942:13;;;;;;;;;;;8936:19;;:2;:19;;;8925:30;:45;;;;;8959:11;;;;;;;;;;;8925:45;:87;;;;;8995:17;;8974:20;:38;8925:87;:119;;;;;9026:18;;9016:9;;:28;8925:119;8921:402;;;9065:50;9082:32;9086:6;9093:20;9082:3;:32::i;:::-;9065:16;:50::i;:::-;9134:26;9163:21;9134:50;;9227:1;9206:18;:22;9203:105;;;9253:35;9266:21;9253:12;:35::i;:::-;9203:105;9046:277;8921:402;7606:1728;7568:1766;9359:1;9349:9;:11;9346:161;;;9399:39;9428:9;9399;:24;9417:4;9399:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9374:9;:24;9392:4;9374:24;;;;;;;;;;;;;;;:64;;;;9479:4;9456:39;;9465:4;9456:39;;;9485:9;9456:39;;;;;;:::i;:::-;;;;;;;;9346:161;9533:27;9553:6;9533:9;:15;9543:4;9533:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9517:9;:15;9527:4;9517:15;;;;;;;;;;;;;;;:43;;;;9585:40;9603:21;9614:9;9603:6;:10;;:21;;;;:::i;:::-;9585:9;:13;9595:2;9585:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;9571:9;:13;9581:2;9571:13;;;;;;;;;;;;;;;:54;;;;9656:2;9641:41;;9650:4;9641:41;;;9660:21;9671:9;9660:6;:10;;:21;;;;:::i;:::-;9641:41;;;;;;:::i;:::-;;;;;;;;7298:2392;7229:2461;;;:::o;1459:190::-;1545:7;1578:1;1573;:6;;1581:12;1565:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1605:9;1621:1;1617;:5;;;;:::i;:::-;1605:17;;1640:1;1633:8;;;1459:190;;;;;:::o;9806:555::-;5181:4;5172:6;;:13;;;;;;;;;;;;;;;;;;9900:1:::1;9887:11;:14:::0;9884:27;9903:7:::1;9884:27;9925:11;;;;;;;;;;;9921:25:::0;9938:7:::1;9921:25;9956:21;9994:1;9980:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9956:40;;10025:4;10007;10012:1;10007:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10051:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10041:4;10046:1;10041:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10084:62;10101:4;10116:15;;;;;;;;;;;10134:11;10084:8;:62::i;:::-;10157:15;;;;;;;;;;;:66;;;10238:11;10264:1;10280:4;10307;10327:15;10157:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9873:488;5196:1;5217:5:::0;5208:6;;:14;;;;;;;;;;;;;;;;;;9806:555;:::o;10573:92::-;10630:10;;;;;;;;;;;:19;;:27;10650:6;10630:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10573:92;:::o;11656:195::-;11715:4;11732:12;11799:7;11787:20;11779:28;;11842:1;11835:4;:8;11828:15;;;11656:195;;;:::o;1657:246::-;1715:7;1744:1;1739;:6;1735:47;;1769:1;1762:8;;;;1735:47;1792:9;1808:1;1804;:5;;;;:::i;:::-;1792:17;;1837:1;1832;1828;:5;;;;:::i;:::-;:10;1820:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1894:1;1887:8;;;1657:246;;;;;:::o;1911:132::-;1969:7;1996:39;2000:1;2003;1996:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1989:46;;1911:132;;;;:::o;9700:98::-;9757:7;9784:1;9782;:3;9781:9;;9789:1;9781:9;;;9787:1;9781:9;9774:16;;9700:98;;;;:::o;1128:179::-;1186:7;1206:9;1222:1;1218;:5;;;;:::i;:::-;1206:17;;1247:1;1242;:6;;1234:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1298:1;1291:8;;;1128:179;;;;:::o;1315:136::-;1373:7;1400:43;1404:1;1407;1400:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1393:50;;1315:136;;;;:::o;2051:189::-;2137:7;2169:1;2165;:5;2172:12;2157:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2196:9;2212:1;2208;:5;;;;:::i;:::-;2196:17;;2231:1;2224:8;;;2051:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1242:75::-;1275:6;1308:2;1302:9;1292:19;;1242:75;:::o;1323:117::-;1432:1;1429;1422:12;1446:117;1555:1;1552;1545:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:329::-;4805:6;4854:2;4842:9;4833:7;4829:23;4825:32;4822:119;;;4860:79;;:::i;:::-;4822:119;4980:1;5005:53;5050:7;5041:6;5030:9;5026:22;5005:53;:::i;:::-;4995:63;;4951:117;4746:329;;;;:::o;5081:117::-;5190:1;5187;5180:12;5204:180;5252:77;5249:1;5242:88;5349:4;5346:1;5339:15;5373:4;5370:1;5363:15;5390:281;5473:27;5495:4;5473:27;:::i;:::-;5465:6;5461:40;5603:6;5591:10;5588:22;5567:18;5555:10;5552:34;5549:62;5546:88;;;5614:18;;:::i;:::-;5546:88;5654:10;5650:2;5643:22;5433:238;5390:281;;:::o;5677:129::-;5711:6;5738:20;;:::i;:::-;5728:30;;5767:33;5795:4;5787:6;5767:33;:::i;:::-;5677:129;;;:::o;5812:311::-;5889:4;5979:18;5971:6;5968:30;5965:56;;;6001:18;;:::i;:::-;5965:56;6051:4;6043:6;6039:17;6031:25;;6111:4;6105;6101:15;6093:23;;5812:311;;;:::o;6129:117::-;6238:1;6235;6228:12;6269:710;6365:5;6390:81;6406:64;6463:6;6406:64;:::i;:::-;6390:81;:::i;:::-;6381:90;;6491:5;6520:6;6513:5;6506:21;6554:4;6547:5;6543:16;6536:23;;6607:4;6599:6;6595:17;6587:6;6583:30;6636:3;6628:6;6625:15;6622:122;;;6655:79;;:::i;:::-;6622:122;6770:6;6753:220;6787:6;6782:3;6779:15;6753:220;;;6862:3;6891:37;6924:3;6912:10;6891:37;:::i;:::-;6886:3;6879:50;6958:4;6953:3;6949:14;6942:21;;6829:144;6813:4;6808:3;6804:14;6797:21;;6753:220;;;6757:21;6371:608;;6269:710;;;;;:::o;7002:370::-;7073:5;7122:3;7115:4;7107:6;7103:17;7099:27;7089:122;;7130:79;;:::i;:::-;7089:122;7247:6;7234:20;7272:94;7362:3;7354:6;7347:4;7339:6;7335:17;7272:94;:::i;:::-;7263:103;;7079:293;7002:370;;;;:::o;7378:539::-;7462:6;7511:2;7499:9;7490:7;7486:23;7482:32;7479:119;;;7517:79;;:::i;:::-;7479:119;7665:1;7654:9;7650:17;7637:31;7695:18;7687:6;7684:30;7681:117;;;7717:79;;:::i;:::-;7681:117;7822:78;7892:7;7883:6;7872:9;7868:22;7822:78;:::i;:::-;7812:88;;7608:302;7378:539;;;;:::o;7923:118::-;8010:24;8028:5;8010:24;:::i;:::-;8005:3;7998:37;7923:118;;:::o;8047:222::-;8140:4;8178:2;8167:9;8163:18;8155:26;;8191:71;8259:1;8248:9;8244:17;8235:6;8191:71;:::i;:::-;8047:222;;;;:::o;8275:474::-;8343:6;8351;8400:2;8388:9;8379:7;8375:23;8371:32;8368:119;;;8406:79;;:::i;:::-;8368:119;8526:1;8551:53;8596:7;8587:6;8576:9;8572:22;8551:53;:::i;:::-;8541:63;;8497:117;8653:2;8679:53;8724:7;8715:6;8704:9;8700:22;8679:53;:::i;:::-;8669:63;;8624:118;8275:474;;;;;:::o;8755:180::-;8803:77;8800:1;8793:88;8900:4;8897:1;8890:15;8924:4;8921:1;8914:15;8941:102;8983:8;9030:5;9027:1;9023:13;9002:34;;8941:102;;;:::o;9049:848::-;9110:5;9117:4;9141:6;9132:15;;9165:5;9156:14;;9179:712;9200:1;9190:8;9187:15;9179:712;;;9295:4;9290:3;9286:14;9280:4;9277:24;9274:50;;;9304:18;;:::i;:::-;9274:50;9354:1;9344:8;9340:16;9337:451;;;9769:4;9762:5;9758:16;9749:25;;9337:451;9819:4;9813;9809:15;9801:23;;9849:32;9872:8;9849:32;:::i;:::-;9837:44;;9179:712;;;9049:848;;;;;;;:::o;9903:1073::-;9957:5;10148:8;10138:40;;10169:1;10160:10;;10171:5;;10138:40;10197:4;10187:36;;10214:1;10205:10;;10216:5;;10187:36;10283:4;10331:1;10326:27;;;;10367:1;10362:191;;;;10276:277;;10326:27;10344:1;10335:10;;10346:5;;;10362:191;10407:3;10397:8;10394:17;10391:43;;;10414:18;;:::i;:::-;10391:43;10463:8;10460:1;10456:16;10447:25;;10498:3;10491:5;10488:14;10485:40;;;10505:18;;:::i;:::-;10485:40;10538:5;;;10276:277;;10662:2;10652:8;10649:16;10643:3;10637:4;10634:13;10630:36;10612:2;10602:8;10599:16;10594:2;10588:4;10585:12;10581:35;10565:111;10562:246;;;10718:8;10712:4;10708:19;10699:28;;10753:3;10746:5;10743:14;10740:40;;;10760:18;;:::i;:::-;10740:40;10793:5;;10562:246;10833:42;10871:3;10861:8;10855:4;10852:1;10833:42;:::i;:::-;10818:57;;;;10907:4;10902:3;10898:14;10891:5;10888:25;10885:51;;;10916:18;;:::i;:::-;10885:51;10965:4;10958:5;10954:16;10945:25;;9903:1073;;;;;;:::o;10982:281::-;11040:5;11064:23;11082:4;11064:23;:::i;:::-;11056:31;;11108:25;11124:8;11108:25;:::i;:::-;11096:37;;11152:104;11189:66;11179:8;11173:4;11152:104;:::i;:::-;11143:113;;10982:281;;;;:::o;11269:410::-;11309:7;11332:20;11350:1;11332:20;:::i;:::-;11327:25;;11366:20;11384:1;11366:20;:::i;:::-;11361:25;;11421:1;11418;11414:9;11443:30;11461:11;11443:30;:::i;:::-;11432:41;;11622:1;11613:7;11609:15;11606:1;11603:22;11583:1;11576:9;11556:83;11533:139;;11652:18;;:::i;:::-;11533:139;11317:362;11269:410;;;;:::o;11685:182::-;11825:34;11821:1;11813:6;11809:14;11802:58;11685:182;:::o;11873:366::-;12015:3;12036:67;12100:2;12095:3;12036:67;:::i;:::-;12029:74;;12112:93;12201:3;12112:93;:::i;:::-;12230:2;12225:3;12221:12;12214:19;;11873:366;;;:::o;12245:419::-;12411:4;12449:2;12438:9;12434:18;12426:26;;12498:9;12492:4;12488:20;12484:1;12473:9;12469:17;12462:47;12526:131;12652:4;12526:131;:::i;:::-;12518:139;;12245:419;;;:::o;12670:180::-;12718:77;12715:1;12708:88;12815:4;12812:1;12805:15;12839:4;12836:1;12829:15;12856:173;12996:25;12992:1;12984:6;12980:14;12973:49;12856:173;:::o;13035:366::-;13177:3;13198:67;13262:2;13257:3;13198:67;:::i;:::-;13191:74;;13274:93;13363:3;13274:93;:::i;:::-;13392:2;13387:3;13383:12;13376:19;;13035:366;;;:::o;13407:419::-;13573:4;13611:2;13600:9;13596:18;13588:26;;13660:9;13654:4;13650:20;13646:1;13635:9;13631:17;13624:47;13688:131;13814:4;13688:131;:::i;:::-;13680:139;;13407:419;;;:::o;13832:143::-;13889:5;13920:6;13914:13;13905:22;;13936:33;13963:5;13936:33;:::i;:::-;13832:143;;;;:::o;13981:351::-;14051:6;14100:2;14088:9;14079:7;14075:23;14071:32;14068:119;;;14106:79;;:::i;:::-;14068:119;14226:1;14251:64;14307:7;14298:6;14287:9;14283:22;14251:64;:::i;:::-;14241:74;;14197:128;13981:351;;;;:::o;14338:332::-;14459:4;14497:2;14486:9;14482:18;14474:26;;14510:71;14578:1;14567:9;14563:17;14554:6;14510:71;:::i;:::-;14591:72;14659:2;14648:9;14644:18;14635:6;14591:72;:::i;:::-;14338:332;;;;;:::o;14676:85::-;14721:7;14750:5;14739:16;;14676:85;;;:::o;14767:60::-;14795:3;14816:5;14809:12;;14767:60;;;:::o;14833:158::-;14891:9;14924:61;14942:42;14951:32;14977:5;14951:32;:::i;:::-;14942:42;:::i;:::-;14924:61;:::i;:::-;14911:74;;14833:158;;;:::o;14997:147::-;15092:45;15131:5;15092:45;:::i;:::-;15087:3;15080:58;14997:147;;:::o;15150:807::-;15399:4;15437:3;15426:9;15422:19;15414:27;;15451:71;15519:1;15508:9;15504:17;15495:6;15451:71;:::i;:::-;15532:72;15600:2;15589:9;15585:18;15576:6;15532:72;:::i;:::-;15614:80;15690:2;15679:9;15675:18;15666:6;15614:80;:::i;:::-;15704;15780:2;15769:9;15765:18;15756:6;15704:80;:::i;:::-;15794:73;15862:3;15851:9;15847:19;15838:6;15794:73;:::i;:::-;15877;15945:3;15934:9;15930:19;15921:6;15877:73;:::i;:::-;15150:807;;;;;;;;;:::o;15963:143::-;16020:5;16051:6;16045:13;16036:22;;16067:33;16094:5;16067:33;:::i;:::-;15963:143;;;;:::o;16112:663::-;16200:6;16208;16216;16265:2;16253:9;16244:7;16240:23;16236:32;16233:119;;;16271:79;;:::i;:::-;16233:119;16391:1;16416:64;16472:7;16463:6;16452:9;16448:22;16416:64;:::i;:::-;16406:74;;16362:128;16529:2;16555:64;16611:7;16602:6;16591:9;16587:22;16555:64;:::i;:::-;16545:74;;16500:129;16668:2;16694:64;16750:7;16741:6;16730:9;16726:22;16694:64;:::i;:::-;16684:74;;16639:129;16112:663;;;;;:::o;16781:332::-;16902:4;16940:2;16929:9;16925:18;16917:26;;16953:71;17021:1;17010:9;17006:17;16997:6;16953:71;:::i;:::-;17034:72;17102:2;17091:9;17087:18;17078:6;17034:72;:::i;:::-;16781:332;;;;;:::o;17119:116::-;17189:21;17204:5;17189:21;:::i;:::-;17182:5;17179:32;17169:60;;17225:1;17222;17215:12;17169:60;17119:116;:::o;17241:137::-;17295:5;17326:6;17320:13;17311:22;;17342:30;17366:5;17342:30;:::i;:::-;17241:137;;;;:::o;17384:345::-;17451:6;17500:2;17488:9;17479:7;17475:23;17471:32;17468:119;;;17506:79;;:::i;:::-;17468:119;17626:1;17651:61;17704:7;17695:6;17684:9;17680:22;17651:61;:::i;:::-;17641:71;;17597:125;17384:345;;;;:::o;17735:223::-;17875:34;17871:1;17863:6;17859:14;17852:58;17944:6;17939:2;17931:6;17927:15;17920:31;17735:223;:::o;17964:366::-;18106:3;18127:67;18191:2;18186:3;18127:67;:::i;:::-;18120:74;;18203:93;18292:3;18203:93;:::i;:::-;18321:2;18316:3;18312:12;18305:19;;17964:366;;;:::o;18336:419::-;18502:4;18540:2;18529:9;18525:18;18517:26;;18589:9;18583:4;18579:20;18575:1;18564:9;18560:17;18553:47;18617:131;18743:4;18617:131;:::i;:::-;18609:139;;18336:419;;;:::o;18761:221::-;18901:34;18897:1;18889:6;18885:14;18878:58;18970:4;18965:2;18957:6;18953:15;18946:29;18761:221;:::o;18988:366::-;19130:3;19151:67;19215:2;19210:3;19151:67;:::i;:::-;19144:74;;19227:93;19316:3;19227:93;:::i;:::-;19345:2;19340:3;19336:12;19329:19;;18988:366;;;:::o;19360:419::-;19526:4;19564:2;19553:9;19549:18;19541:26;;19613:9;19607:4;19603:20;19599:1;19588:9;19584:17;19577:47;19641:131;19767:4;19641:131;:::i;:::-;19633:139;;19360:419;;;:::o;19785:224::-;19925:34;19921:1;19913:6;19909:14;19902:58;19994:7;19989:2;19981:6;19977:15;19970:32;19785:224;:::o;20015:366::-;20157:3;20178:67;20242:2;20237:3;20178:67;:::i;:::-;20171:74;;20254:93;20343:3;20254:93;:::i;:::-;20372:2;20367:3;20363:12;20356:19;;20015:366;;;:::o;20387:419::-;20553:4;20591:2;20580:9;20576:18;20568:26;;20640:9;20634:4;20630:20;20626:1;20615:9;20611:17;20604:47;20668:131;20794:4;20668:131;:::i;:::-;20660:139;;20387:419;;;:::o;20812:222::-;20952:34;20948:1;20940:6;20936:14;20929:58;21021:5;21016:2;21008:6;21004:15;20997:30;20812:222;:::o;21040:366::-;21182:3;21203:67;21267:2;21262:3;21203:67;:::i;:::-;21196:74;;21279:93;21368:3;21279:93;:::i;:::-;21397:2;21392:3;21388:12;21381:19;;21040:366;;;:::o;21412:419::-;21578:4;21616:2;21605:9;21601:18;21593:26;;21665:9;21659:4;21655:20;21651:1;21640:9;21636:17;21629:47;21693:131;21819:4;21693:131;:::i;:::-;21685:139;;21412:419;;;:::o;21837:228::-;21977:34;21973:1;21965:6;21961:14;21954:58;22046:11;22041:2;22033:6;22029:15;22022:36;21837:228;:::o;22071:366::-;22213:3;22234:67;22298:2;22293:3;22234:67;:::i;:::-;22227:74;;22310:93;22399:3;22310:93;:::i;:::-;22428:2;22423:3;22419:12;22412:19;;22071:366;;;:::o;22443:419::-;22609:4;22647:2;22636:9;22632:18;22624:26;;22696:9;22690:4;22686:20;22682:1;22671:9;22667:17;22660:47;22724:131;22850:4;22724:131;:::i;:::-;22716:139;;22443:419;;;:::o;22868:223::-;23008:34;23004:1;22996:6;22992:14;22985:58;23077:6;23072:2;23064:6;23060:15;23053:31;22868:223;:::o;23097:366::-;23239:3;23260:67;23324:2;23319:3;23260:67;:::i;:::-;23253:74;;23336:93;23425:3;23336:93;:::i;:::-;23454:2;23449:3;23445:12;23438:19;;23097:366;;;:::o;23469:419::-;23635:4;23673:2;23662:9;23658:18;23650:26;;23722:9;23716:4;23712:20;23708:1;23697:9;23693:17;23686:47;23750:131;23876:4;23750:131;:::i;:::-;23742:139;;23469:419;;;:::o;23894:175::-;24034:27;24030:1;24022:6;24018:14;24011:51;23894:175;:::o;24075:366::-;24217:3;24238:67;24302:2;24297:3;24238:67;:::i;:::-;24231:74;;24314:93;24403:3;24314:93;:::i;:::-;24432:2;24427:3;24423:12;24416:19;;24075:366;;;:::o;24447:419::-;24613:4;24651:2;24640:9;24636:18;24628:26;;24700:9;24694:4;24690:20;24686:1;24675:9;24671:17;24664:47;24728:131;24854:4;24728:131;:::i;:::-;24720:139;;24447:419;;;:::o;24872:191::-;24912:3;24931:20;24949:1;24931:20;:::i;:::-;24926:25;;24965:20;24983:1;24965:20;:::i;:::-;24960:25;;25008:1;25005;25001:9;24994:16;;25029:3;25026:1;25023:10;25020:36;;;25036:18;;:::i;:::-;25020:36;24872:191;;;;:::o;25069:176::-;25209:28;25205:1;25197:6;25193:14;25186:52;25069:176;:::o;25251:366::-;25393:3;25414:67;25478:2;25473:3;25414:67;:::i;:::-;25407:74;;25490:93;25579:3;25490:93;:::i;:::-;25608:2;25603:3;25599:12;25592:19;;25251:366;;;:::o;25623:419::-;25789:4;25827:2;25816:9;25812:18;25804:26;;25876:9;25870:4;25866:20;25862:1;25851:9;25847:17;25840:47;25904:131;26030:4;25904:131;:::i;:::-;25896:139;;25623:419;;;:::o;26048:233::-;26087:3;26110:24;26128:5;26110:24;:::i;:::-;26101:33;;26156:66;26149:5;26146:77;26143:103;;26226:18;;:::i;:::-;26143:103;26273:1;26266:5;26262:13;26255:20;;26048:233;;;:::o;26287:194::-;26327:4;26347:20;26365:1;26347:20;:::i;:::-;26342:25;;26381:20;26399:1;26381:20;:::i;:::-;26376:25;;26425:1;26422;26418:9;26410:17;;26449:1;26443:4;26440:11;26437:37;;;26454:18;;:::i;:::-;26437:37;26287:194;;;;:::o;26487:114::-;26554:6;26588:5;26582:12;26572:22;;26487:114;;;:::o;26607:184::-;26706:11;26740:6;26735:3;26728:19;26780:4;26775:3;26771:14;26756:29;;26607:184;;;;:::o;26797:132::-;26864:4;26887:3;26879:11;;26917:4;26912:3;26908:14;26900:22;;26797:132;;;:::o;26935:108::-;27012:24;27030:5;27012:24;:::i;:::-;27007:3;27000:37;26935:108;;:::o;27049:179::-;27118:10;27139:46;27181:3;27173:6;27139:46;:::i;:::-;27217:4;27212:3;27208:14;27194:28;;27049:179;;;;:::o;27234:113::-;27304:4;27336;27331:3;27327:14;27319:22;;27234:113;;;:::o;27383:732::-;27502:3;27531:54;27579:5;27531:54;:::i;:::-;27601:86;27680:6;27675:3;27601:86;:::i;:::-;27594:93;;27711:56;27761:5;27711:56;:::i;:::-;27790:7;27821:1;27806:284;27831:6;27828:1;27825:13;27806:284;;;27907:6;27901:13;27934:63;27993:3;27978:13;27934:63;:::i;:::-;27927:70;;28020:60;28073:6;28020:60;:::i;:::-;28010:70;;27866:224;27853:1;27850;27846:9;27841:14;;27806:284;;;27810:14;28106:3;28099:10;;27507:608;;;27383:732;;;;:::o;28121:831::-;28384:4;28422:3;28411:9;28407:19;28399:27;;28436:71;28504:1;28493:9;28489:17;28480:6;28436:71;:::i;:::-;28517:80;28593:2;28582:9;28578:18;28569:6;28517:80;:::i;:::-;28644:9;28638:4;28634:20;28629:2;28618:9;28614:18;28607:48;28672:108;28775:4;28766:6;28672:108;:::i;:::-;28664:116;;28790:72;28858:2;28847:9;28843:18;28834:6;28790:72;:::i;:::-;28872:73;28940:3;28929:9;28925:19;28916:6;28872:73;:::i;:::-;28121:831;;;;;;;;:::o;28958:180::-;29006:77;29003:1;28996:88;29103:4;29100:1;29093:15;29127:4;29124:1;29117:15;29144:185;29184:1;29201:20;29219:1;29201:20;:::i;:::-;29196:25;;29235:20;29253:1;29235:20;:::i;:::-;29230:25;;29274:1;29264:35;;29279:18;;:::i;:::-;29264:35;29321:1;29318;29314:9;29309:14;;29144:185;;;;:::o;29335:220::-;29475:34;29471:1;29463:6;29459:14;29452:58;29544:3;29539:2;29531:6;29527:15;29520:28;29335:220;:::o;29561:366::-;29703:3;29724:67;29788:2;29783:3;29724:67;:::i;:::-;29717:74;;29800:93;29889:3;29800:93;:::i;:::-;29918:2;29913:3;29909:12;29902:19;;29561:366;;;:::o;29933:419::-;30099:4;30137:2;30126:9;30122:18;30114:26;;30186:9;30180:4;30176:20;30172:1;30161:9;30157:17;30150:47;30214:131;30340:4;30214:131;:::i;:::-;30206:139;;29933:419;;;:::o;30358:177::-;30498:29;30494:1;30486:6;30482:14;30475:53;30358:177;:::o;30541:366::-;30683:3;30704:67;30768:2;30763:3;30704:67;:::i;:::-;30697:74;;30780:93;30869:3;30780:93;:::i;:::-;30898:2;30893:3;30889:12;30882:19;;30541:366;;;:::o;30913:419::-;31079:4;31117:2;31106:9;31102:18;31094:26;;31166:9;31160:4;31156:20;31152:1;31141:9;31137:17;31130:47;31194:131;31320:4;31194:131;:::i;:::-;31186:139;;30913:419;;;:::o

Swarm Source

ipfs://d127ca0bbb8f6f605b25dffbeb334646ad60e567c1cd1efcc530c7e07289fa75

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.