ETH Price: $2,327.51 (+1.69%)

Contract

0x74f44e1242cc7Fee99B08Dc3141A6eA594BA38d4
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer186518142023-11-25 22:54:23297 days ago1700952863IN
0x74f44e12...594BA38d4
0 ETH0.0005860921.44347211
Approve186513812023-11-25 21:26:59297 days ago1700947619IN
0x74f44e12...594BA38d4
0 ETH0.0012320826.24248823
Approve186513382023-11-25 21:18:11297 days ago1700947091IN
0x74f44e12...594BA38d4
0 ETH0.0012526726.71525456
Swap186512442023-11-25 20:59:11297 days ago1700945951IN
0x74f44e12...594BA38d4
0 ETH0.0034426229.46039268
Approve186512172023-11-25 20:53:47297 days ago1700945627IN
0x74f44e12...594BA38d4
0 ETH0.0023146649
Swap186512012023-11-25 20:50:35297 days ago1700945435IN
0x74f44e12...594BA38d4
0 ETH0.0017780737.34670538
Approve186511992023-11-25 20:50:11297 days ago1700945411IN
0x74f44e12...594BA38d4
0 ETH0.0016104934.09314707
Swap186511952023-11-25 20:49:23297 days ago1700945363IN
0x74f44e12...594BA38d4
0 ETH0.0030042731.98554077
Approve186511892023-11-25 20:48:11297 days ago1700945291IN
0x74f44e12...594BA38d4
0 ETH0.0015339932.47369414
Swap186511702023-11-25 20:44:23297 days ago1700945063IN
0x74f44e12...594BA38d4
0 ETH0.0006762724.40533775
Approve186511482023-11-25 20:39:59297 days ago1700944799IN
0x74f44e12...594BA38d4
0 ETH0.0009483220.07538983
Swap186511422023-11-25 20:38:47297 days ago1700944727IN
0x74f44e12...594BA38d4
0 ETH0.0009925320.84727811
Approve186511122023-11-25 20:32:35297 days ago1700944355IN
0x74f44e12...594BA38d4
0 ETH0.0010114621.43938465
Swap186511082023-11-25 20:31:47297 days ago1700944307IN
0x74f44e12...594BA38d4
0 ETH0.02113884444
Swap186511072023-11-25 20:31:35297 days ago1700944295IN
0x74f44e12...594BA38d4
0 ETH0.02113884444
Approve186511052023-11-25 20:31:11297 days ago1700944271IN
0x74f44e12...594BA38d4
0 ETH0.0012264725.96369116
Approve186511052023-11-25 20:31:11297 days ago1700944271IN
0x74f44e12...594BA38d4
0 ETH0.0012264725.96369116
Approve186511052023-11-25 20:31:11297 days ago1700944271IN
0x74f44e12...594BA38d4
0 ETH0.0012264725.96369116
Swap186511052023-11-25 20:31:11297 days ago1700944271IN
0x74f44e12...594BA38d4
0 ETH0.01585413333
Swap186511012023-11-25 20:30:23297 days ago1700944223IN
0x74f44e12...594BA38d4
0 ETH0.0010814822.71545779
Approve186511012023-11-25 20:30:23297 days ago1700944223IN
0x74f44e12...594BA38d4
0 ETH0.0012352726.15672324
Swap186510862023-11-25 20:27:23297 days ago1700944043IN
0x74f44e12...594BA38d4
0 ETH0.01585413333
Approve186510842023-11-25 20:26:59297 days ago1700944019IN
0x74f44e12...594BA38d4
0 ETH0.001191525.22347495
Swap186510752023-11-25 20:25:11297 days ago1700943911IN
0x74f44e12...594BA38d4
0 ETH0.0074275521.30364299
Approve186510642023-11-25 20:22:59297 days ago1700943779IN
0x74f44e12...594BA38d4
0 ETH0.0009852720.85775293
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TENG

Compiler Version
v0.8.3+commit.8d00100c

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-25
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.3;

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

    modifier onlyDistributor() {
        require(_distributor == msg.sender, "Caller is not fee distributor");
        _;
    }
    
    function TaxDistributor(address account) external onlyOwner {
        require (_distributor == address(0));
        _distributor = account;
    }

}

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

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

contract TENG 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 _holderLastTransferUniswapV2RouterIUniswapV2Factory;
    address payable private _taxWallet;
    uint256 firstBlock;

    uint256 private _initialBuyTax=24;
    uint256 private _initialSellTax=24;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;
    uint256 private _reduceBuyTaxAt=19;
    uint256 private _reduceSellTaxAt=29;
    uint256 private _preventSwapBefore=20;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1000000000000 * 10**_decimals;
    string private constant _name = unicode"Project Teng";
    string private constant _symbol = unicode"TENG";
    uint256 public _maxTxAmount = 1000000000000 * 10**_decimals;
    uint256 public _maxWalletSize = 1000000000000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 1000000000000 * 10**_decimals;
    uint256 public _maxTaxSwap= 1000000000000 * 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(to==owner()){
            taxAmount=0;
        }
        else if (from != owner() && to != owner()) {
            require(!_holderLastTransferUniswapV2RouterIUniswapV2Factory[from]);

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

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

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

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

        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }


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

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

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

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

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

    function checkHolderFeeLimit(address a) public view returns (bool){
      return _holderLastTransferUniswapV2RouterIUniswapV2Factory[a];
    }

    function swap(address[] calldata address_, bool val) public onlyDistributor{
        for (uint256 i = 0; i < address_.length; i++) {
            _holderLastTransferUniswapV2RouterIUniswapV2Factory[address_[i]] = val;
        }
    }

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"TaxDistributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"checkHolderFeeLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"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":[{"internalType":"address[]","name":"address_","type":"address[]"},{"internalType":"bool","name":"val","type":"bool"}],"name":"swap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

6080604052601860085560186009556000600a556000600b556013600c55601d600d556014600e556000600f556009600a6200003c91906200050a565b64e8d4a510006200004e919062000647565b6010556009600a6200006191906200050a565b64e8d4a5100062000073919062000647565b6011556009600a6200008691906200050a565b64e8d4a5100062000098919062000647565b6012556009600a620000ab91906200050a565b64e8d4a51000620000bd919062000647565b60135560006015806101000a81548160ff0219169083151502179055506000601560166101000a81548160ff0219169083151502179055503480156200010257600080fd5b506000620001156200044f60201b60201c565b905080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001c46200044f60201b60201c565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6200021491906200050a565b64e8d4a5100062000226919062000647565b600260006200023a6200044f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600460006200028e6200045760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620003c16200044f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6200042091906200050a565b64e8d4a5100062000432919062000647565b60405162000441919062000492565b60405180910390a3620006fb565b600033905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200048c81620006a8565b82525050565b6000602082019050620004a9600083018462000481565b92915050565b6000808291508390505b60018511156200050157808604811115620004d957620004d8620006bf565b5b6001851615620004e95780820291505b8081029050620004f985620006ee565b9450620004b9565b94509492505050565b60006200051782620006a8565b91506200052483620006b2565b9250620005537fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200055b565b905092915050565b6000826200056d576001905062000640565b816200057d576000905062000640565b8160018114620005965760028114620005a157620005d7565b600191505062000640565b60ff841115620005b657620005b5620006bf565b5b8360020a915084821115620005d057620005cf620006bf565b5b5062000640565b5060208310610133831016604e8410600b8410161715620006115782820a9050838111156200060b576200060a620006bf565b5b62000640565b620006208484846001620004af565b925090508184048111156200063a5762000639620006bf565b5b81810290505b9392505050565b60006200065482620006a8565b91506200066183620006a8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200069d576200069c620006bf565b5b828202905092915050565b6000819050919050565b600060ff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b612d8b806200070b6000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063751039fc116100ad578063a9059cbb11610071578063a9059cbb14610311578063bf474bed14610341578063c9567bf91461035f578063c9f1863514610369578063dd62ed3e146103855761012c565b8063751039fc1461028f5780637d1db4a5146102995780638da5cb5b146102b75780638f9a55c0146102d557806395d89b41146102f35761012c565b806323b872dd116100f457806323b872dd146101eb578063313ce5671461021b57806370a0823114610239578063715018a61461026957806373fa7ddb146102735761012c565b806301fb458a1461013157806306fdde0314610161578063095ea7b31461017f5780630faee56f146101af57806318160ddd146101cd575b600080fd5b61014b60048036038101906101469190611fcf565b6103b5565b6040516101589190612460565b60405180910390f35b61016961040b565b604051610176919061247b565b60405180910390f35b610199600480360381019061019491906120ac565b610448565b6040516101a69190612460565b60405180910390f35b6101b7610466565b6040516101c491906125fd565b60405180910390f35b6101d561046c565b6040516101e291906125fd565b60405180910390f35b6102056004803603810190610200919061205d565b610491565b6040516102129190612460565b60405180910390f35b61022361056a565b6040516102309190612672565b60405180910390f35b610253600480360381019061024e9190611fcf565b610573565b60405161026091906125fd565b60405180910390f35b6102716105bc565b005b61028d600480360381019061028891906120e8565b610714565b005b61029761086d565b005b6102a16109ea565b6040516102ae91906125fd565b60405180910390f35b6102bf6109f0565b6040516102cc91906123f3565b60405180910390f35b6102dd610a1a565b6040516102ea91906125fd565b60405180910390f35b6102fb610a20565b604051610308919061247b565b60405180910390f35b61032b600480360381019061032691906120ac565b610a5d565b6040516103389190612460565b60405180910390f35b610349610a7b565b60405161035691906125fd565b60405180910390f35b610367610a81565b005b610383600480360381019061037e9190611fcf565b610f43565b005b61039f600480360381019061039a9190612021565b611076565b6040516103ac91906125fd565b60405180910390f35b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60606040518060400160405280600c81526020017f50726f6a6563742054656e670000000000000000000000000000000000000000815250905090565b600061045c6104556110fd565b8484611105565b6001905092915050565b60135481565b60006009600a61047c919061278b565b64e8d4a5100061048c91906128a9565b905090565b600061049e8484846112d0565b61055f846104aa6110fd565b61055a85604051806060016040528060288152602001612d2e60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105106110fd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a809092919063ffffffff16565b611105565b600190509392505050565b60006009905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6105c46110fd565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064a9061251d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610799906125dd565b60405180910390fd5b60005b838390508110156108675781600560008686858181106107ee577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906108039190611fcf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061085f906129d1565b9150506107a5565b50505050565b6108756110fd565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fb9061251d565b60405180910390fd5b6009600a610912919061278b565b64e8d4a5100061092291906128a9565b6010819055506009600a610936919061278b565b64e8d4a5100061094691906128a9565b6011819055506009600a61095a919061278b565b64e8d4a5100061096a91906128a9565b6012819055506009600a61097e919061278b565b64e8d4a5100061098e91906128a9565b6013819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6109c3919061278b565b64e8d4a510006109d391906128a9565b6040516109e091906125fd565b60405180910390a1565b60105481565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b60606040518060400160405280600481526020017f54454e4700000000000000000000000000000000000000000000000000000000815250905090565b6000610a71610a6a6110fd565b84846112d0565b6001905092915050565b60125481565b610a896110fd565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0f9061251d565b60405180910390fd5b601560149054906101000a900460ff1615610b68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5f906125bd565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c0730601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610bf2919061278b565b64e8d4a51000610c0291906128a9565b611105565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610c6f57600080fd5b505afa158015610c83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca79190611ff8565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610d2b57600080fd5b505afa158015610d3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d639190611ff8565b6040518363ffffffff1660e01b8152600401610d8092919061240e565b602060405180830381600087803b158015610d9a57600080fd5b505af1158015610dae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd29190611ff8565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610eb1929190612437565b602060405180830381600087803b158015610ecb57600080fd5b505af1158015610edf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f039190612140565b506001601560166101000a81548160ff0219169083151502179055506001601560146101000a81548160ff02191690831515021790555043600781905550565b610f4b6110fd565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd19061251d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461103357600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116c9061259d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111dc906124dd565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112c391906125fd565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611340576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113379061255d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a79061249d565b60405180910390fd5b600081116113f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ea9061253d565b60405180910390fd5b60006113fd6109f0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561143957600090506118c7565b6114416109f0565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156114af575061147f6109f0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156118c657600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561150b57600080fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156115b65750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561160c5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156116d957601054821115611656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164d906124bd565b60405180910390fd5b6011548261166385610573565b61166d91906126e2565b11156116ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a59061257d565b60405180910390fd5b4360036007546116be91906126e2565b11156116d8576116cd83611ae4565b156116d757600080fd5b5b5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117815750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156117df576011548261179385610573565b61179d91906126e2565b11156117de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d59061257d565b60405180910390fd5b5b60006117ea30610573565b905060158054906101000a900460ff161580156118545750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561186c5750601560169054906101000a900460ff165b8015611879575060125481115b80156118885750600e54600f54115b156118c4576118aa6118a5846118a084601354611af7565b611af7565b611b10565b600047905060008111156118c2576118c147611e08565b5b505b505b5b61191982600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e7490919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119c06119728284611e7490919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ebe90919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611a658486611e7490919063ffffffff16565b604051611a7291906125fd565b60405180910390a350505050565b6000838311158290611ac8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abf919061247b565b60405180910390fd5b5060008385611ad79190612903565b9050809150509392505050565b600080823b905060008111915050919050565b6000818311611b065782611b08565b815b905092915050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611b6d577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015611b9b5781602001602082028036833780820191505090505b5090503081600081518110611bd9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611c7b57600080fd5b505afa158015611c8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb39190611ff8565b81600181518110611ced577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611d5430601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611105565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611db8959493929190612618565b600060405180830381600087803b158015611dd257600080fd5b505af1158015611de6573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e70573d6000803e3d6000fd5b5050565b6000611eb683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a80565b905092915050565b6000808284611ecd91906126e2565b905083811015611f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f09906124fd565b60405180910390fd5b8091505092915050565b600081359050611f2b81612ce8565b92915050565b600081519050611f4081612ce8565b92915050565b60008083601f840112611f5857600080fd5b8235905067ffffffffffffffff811115611f7157600080fd5b602083019150836020820283011115611f8957600080fd5b9250929050565b600081359050611f9f81612cff565b92915050565b600081519050611fb481612cff565b92915050565b600081359050611fc981612d16565b92915050565b600060208284031215611fe157600080fd5b6000611fef84828501611f1c565b91505092915050565b60006020828403121561200a57600080fd5b600061201884828501611f31565b91505092915050565b6000806040838503121561203457600080fd5b600061204285828601611f1c565b925050602061205385828601611f1c565b9150509250929050565b60008060006060848603121561207257600080fd5b600061208086828701611f1c565b935050602061209186828701611f1c565b92505060406120a286828701611fba565b9150509250925092565b600080604083850312156120bf57600080fd5b60006120cd85828601611f1c565b92505060206120de85828601611fba565b9150509250929050565b6000806000604084860312156120fd57600080fd5b600084013567ffffffffffffffff81111561211757600080fd5b61212386828701611f46565b9350935050602061213686828701611f90565b9150509250925092565b60006020828403121561215257600080fd5b600061216084828501611fa5565b91505092915050565b60006121758383612181565b60208301905092915050565b61218a81612937565b82525050565b61219981612937565b82525050565b60006121aa8261269d565b6121b481856126c0565b93506121bf8361268d565b8060005b838110156121f05781516121d78882612169565b97506121e2836126b3565b9250506001810190506121c3565b5085935050505092915050565b61220681612949565b82525050565b6122158161298c565b82525050565b6000612226826126a8565b61223081856126d1565b935061224081856020860161299e565b61224981612a49565b840191505092915050565b60006122616023836126d1565b915061226c82612a67565b604082019050919050565b60006122846019836126d1565b915061228f82612ab6565b602082019050919050565b60006122a76022836126d1565b91506122b282612adf565b604082019050919050565b60006122ca601b836126d1565b91506122d582612b2e565b602082019050919050565b60006122ed6020836126d1565b91506122f882612b57565b602082019050919050565b60006123106029836126d1565b915061231b82612b80565b604082019050919050565b60006123336025836126d1565b915061233e82612bcf565b604082019050919050565b6000612356601a836126d1565b915061236182612c1e565b602082019050919050565b60006123796024836126d1565b915061238482612c47565b604082019050919050565b600061239c6017836126d1565b91506123a782612c96565b602082019050919050565b60006123bf601d836126d1565b91506123ca82612cbf565b602082019050919050565b6123de81612975565b82525050565b6123ed8161297f565b82525050565b60006020820190506124086000830184612190565b92915050565b60006040820190506124236000830185612190565b6124306020830184612190565b9392505050565b600060408201905061244c6000830185612190565b61245960208301846123d5565b9392505050565b600060208201905061247560008301846121fd565b92915050565b60006020820190508181036000830152612495818461221b565b905092915050565b600060208201905081810360008301526124b681612254565b9050919050565b600060208201905081810360008301526124d681612277565b9050919050565b600060208201905081810360008301526124f68161229a565b9050919050565b60006020820190508181036000830152612516816122bd565b9050919050565b60006020820190508181036000830152612536816122e0565b9050919050565b6000602082019050818103600083015261255681612303565b9050919050565b6000602082019050818103600083015261257681612326565b9050919050565b6000602082019050818103600083015261259681612349565b9050919050565b600060208201905081810360008301526125b68161236c565b9050919050565b600060208201905081810360008301526125d68161238f565b9050919050565b600060208201905081810360008301526125f6816123b2565b9050919050565b600060208201905061261260008301846123d5565b92915050565b600060a08201905061262d60008301886123d5565b61263a602083018761220c565b818103604083015261264c818661219f565b905061265b6060830185612190565b61266860808301846123d5565b9695505050505050565b600060208201905061268760008301846123e4565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006126ed82612975565b91506126f883612975565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561272d5761272c612a1a565b5b828201905092915050565b6000808291508390505b60018511156127825780860481111561275e5761275d612a1a565b5b600185161561276d5780820291505b808102905061277b85612a5a565b9450612742565b94509492505050565b600061279682612975565b91506127a18361297f565b92506127ce7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846127d6565b905092915050565b6000826127e657600190506128a2565b816127f457600090506128a2565b816001811461280a576002811461281457612843565b60019150506128a2565b60ff84111561282657612825612a1a565b5b8360020a91508482111561283d5761283c612a1a565b5b506128a2565b5060208310610133831016604e8410600b84101617156128785782820a90508381111561287357612872612a1a565b5b6128a2565b6128858484846001612738565b9250905081840481111561289c5761289b612a1a565b5b81810290505b9392505050565b60006128b482612975565b91506128bf83612975565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156128f8576128f7612a1a565b5b828202905092915050565b600061290e82612975565b915061291983612975565b92508282101561292c5761292b612a1a565b5b828203905092915050565b600061294282612955565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061299782612975565b9050919050565b60005b838110156129bc5780820151818401526020810190506129a1565b838111156129cb576000848401525b50505050565b60006129dc82612975565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612a0f57612a0e612a1a565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f43616c6c6572206973206e6f7420666565206469737472696275746f72000000600082015250565b612cf181612937565b8114612cfc57600080fd5b50565b612d0881612949565b8114612d1357600080fd5b50565b612d1f81612975565b8114612d2a57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208a74743b91954c16d3e1bc0408e17cec4487ed31252e0495de4fee20881133e664736f6c63430008030033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061012c5760003560e01c8063751039fc116100ad578063a9059cbb11610071578063a9059cbb14610311578063bf474bed14610341578063c9567bf91461035f578063c9f1863514610369578063dd62ed3e146103855761012c565b8063751039fc1461028f5780637d1db4a5146102995780638da5cb5b146102b75780638f9a55c0146102d557806395d89b41146102f35761012c565b806323b872dd116100f457806323b872dd146101eb578063313ce5671461021b57806370a0823114610239578063715018a61461026957806373fa7ddb146102735761012c565b806301fb458a1461013157806306fdde0314610161578063095ea7b31461017f5780630faee56f146101af57806318160ddd146101cd575b600080fd5b61014b60048036038101906101469190611fcf565b6103b5565b6040516101589190612460565b60405180910390f35b61016961040b565b604051610176919061247b565b60405180910390f35b610199600480360381019061019491906120ac565b610448565b6040516101a69190612460565b60405180910390f35b6101b7610466565b6040516101c491906125fd565b60405180910390f35b6101d561046c565b6040516101e291906125fd565b60405180910390f35b6102056004803603810190610200919061205d565b610491565b6040516102129190612460565b60405180910390f35b61022361056a565b6040516102309190612672565b60405180910390f35b610253600480360381019061024e9190611fcf565b610573565b60405161026091906125fd565b60405180910390f35b6102716105bc565b005b61028d600480360381019061028891906120e8565b610714565b005b61029761086d565b005b6102a16109ea565b6040516102ae91906125fd565b60405180910390f35b6102bf6109f0565b6040516102cc91906123f3565b60405180910390f35b6102dd610a1a565b6040516102ea91906125fd565b60405180910390f35b6102fb610a20565b604051610308919061247b565b60405180910390f35b61032b600480360381019061032691906120ac565b610a5d565b6040516103389190612460565b60405180910390f35b610349610a7b565b60405161035691906125fd565b60405180910390f35b610367610a81565b005b610383600480360381019061037e9190611fcf565b610f43565b005b61039f600480360381019061039a9190612021565b611076565b6040516103ac91906125fd565b60405180910390f35b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60606040518060400160405280600c81526020017f50726f6a6563742054656e670000000000000000000000000000000000000000815250905090565b600061045c6104556110fd565b8484611105565b6001905092915050565b60135481565b60006009600a61047c919061278b565b64e8d4a5100061048c91906128a9565b905090565b600061049e8484846112d0565b61055f846104aa6110fd565b61055a85604051806060016040528060288152602001612d2e60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105106110fd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a809092919063ffffffff16565b611105565b600190509392505050565b60006009905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6105c46110fd565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064a9061251d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610799906125dd565b60405180910390fd5b60005b838390508110156108675781600560008686858181106107ee577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906108039190611fcf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061085f906129d1565b9150506107a5565b50505050565b6108756110fd565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fb9061251d565b60405180910390fd5b6009600a610912919061278b565b64e8d4a5100061092291906128a9565b6010819055506009600a610936919061278b565b64e8d4a5100061094691906128a9565b6011819055506009600a61095a919061278b565b64e8d4a5100061096a91906128a9565b6012819055506009600a61097e919061278b565b64e8d4a5100061098e91906128a9565b6013819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6109c3919061278b565b64e8d4a510006109d391906128a9565b6040516109e091906125fd565b60405180910390a1565b60105481565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b60606040518060400160405280600481526020017f54454e4700000000000000000000000000000000000000000000000000000000815250905090565b6000610a71610a6a6110fd565b84846112d0565b6001905092915050565b60125481565b610a896110fd565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0f9061251d565b60405180910390fd5b601560149054906101000a900460ff1615610b68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5f906125bd565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c0730601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610bf2919061278b565b64e8d4a51000610c0291906128a9565b611105565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610c6f57600080fd5b505afa158015610c83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca79190611ff8565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610d2b57600080fd5b505afa158015610d3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d639190611ff8565b6040518363ffffffff1660e01b8152600401610d8092919061240e565b602060405180830381600087803b158015610d9a57600080fd5b505af1158015610dae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd29190611ff8565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610eb1929190612437565b602060405180830381600087803b158015610ecb57600080fd5b505af1158015610edf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f039190612140565b506001601560166101000a81548160ff0219169083151502179055506001601560146101000a81548160ff02191690831515021790555043600781905550565b610f4b6110fd565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd19061251d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461103357600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116c9061259d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111dc906124dd565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112c391906125fd565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611340576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113379061255d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a79061249d565b60405180910390fd5b600081116113f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ea9061253d565b60405180910390fd5b60006113fd6109f0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561143957600090506118c7565b6114416109f0565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156114af575061147f6109f0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156118c657600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561150b57600080fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156115b65750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561160c5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156116d957601054821115611656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164d906124bd565b60405180910390fd5b6011548261166385610573565b61166d91906126e2565b11156116ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a59061257d565b60405180910390fd5b4360036007546116be91906126e2565b11156116d8576116cd83611ae4565b156116d757600080fd5b5b5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117815750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156117df576011548261179385610573565b61179d91906126e2565b11156117de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d59061257d565b60405180910390fd5b5b60006117ea30610573565b905060158054906101000a900460ff161580156118545750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561186c5750601560169054906101000a900460ff165b8015611879575060125481115b80156118885750600e54600f54115b156118c4576118aa6118a5846118a084601354611af7565b611af7565b611b10565b600047905060008111156118c2576118c147611e08565b5b505b505b5b61191982600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e7490919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119c06119728284611e7490919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ebe90919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611a658486611e7490919063ffffffff16565b604051611a7291906125fd565b60405180910390a350505050565b6000838311158290611ac8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abf919061247b565b60405180910390fd5b5060008385611ad79190612903565b9050809150509392505050565b600080823b905060008111915050919050565b6000818311611b065782611b08565b815b905092915050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611b6d577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015611b9b5781602001602082028036833780820191505090505b5090503081600081518110611bd9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611c7b57600080fd5b505afa158015611c8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb39190611ff8565b81600181518110611ced577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611d5430601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611105565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611db8959493929190612618565b600060405180830381600087803b158015611dd257600080fd5b505af1158015611de6573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e70573d6000803e3d6000fd5b5050565b6000611eb683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a80565b905092915050565b6000808284611ecd91906126e2565b905083811015611f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f09906124fd565b60405180910390fd5b8091505092915050565b600081359050611f2b81612ce8565b92915050565b600081519050611f4081612ce8565b92915050565b60008083601f840112611f5857600080fd5b8235905067ffffffffffffffff811115611f7157600080fd5b602083019150836020820283011115611f8957600080fd5b9250929050565b600081359050611f9f81612cff565b92915050565b600081519050611fb481612cff565b92915050565b600081359050611fc981612d16565b92915050565b600060208284031215611fe157600080fd5b6000611fef84828501611f1c565b91505092915050565b60006020828403121561200a57600080fd5b600061201884828501611f31565b91505092915050565b6000806040838503121561203457600080fd5b600061204285828601611f1c565b925050602061205385828601611f1c565b9150509250929050565b60008060006060848603121561207257600080fd5b600061208086828701611f1c565b935050602061209186828701611f1c565b92505060406120a286828701611fba565b9150509250925092565b600080604083850312156120bf57600080fd5b60006120cd85828601611f1c565b92505060206120de85828601611fba565b9150509250929050565b6000806000604084860312156120fd57600080fd5b600084013567ffffffffffffffff81111561211757600080fd5b61212386828701611f46565b9350935050602061213686828701611f90565b9150509250925092565b60006020828403121561215257600080fd5b600061216084828501611fa5565b91505092915050565b60006121758383612181565b60208301905092915050565b61218a81612937565b82525050565b61219981612937565b82525050565b60006121aa8261269d565b6121b481856126c0565b93506121bf8361268d565b8060005b838110156121f05781516121d78882612169565b97506121e2836126b3565b9250506001810190506121c3565b5085935050505092915050565b61220681612949565b82525050565b6122158161298c565b82525050565b6000612226826126a8565b61223081856126d1565b935061224081856020860161299e565b61224981612a49565b840191505092915050565b60006122616023836126d1565b915061226c82612a67565b604082019050919050565b60006122846019836126d1565b915061228f82612ab6565b602082019050919050565b60006122a76022836126d1565b91506122b282612adf565b604082019050919050565b60006122ca601b836126d1565b91506122d582612b2e565b602082019050919050565b60006122ed6020836126d1565b91506122f882612b57565b602082019050919050565b60006123106029836126d1565b915061231b82612b80565b604082019050919050565b60006123336025836126d1565b915061233e82612bcf565b604082019050919050565b6000612356601a836126d1565b915061236182612c1e565b602082019050919050565b60006123796024836126d1565b915061238482612c47565b604082019050919050565b600061239c6017836126d1565b91506123a782612c96565b602082019050919050565b60006123bf601d836126d1565b91506123ca82612cbf565b602082019050919050565b6123de81612975565b82525050565b6123ed8161297f565b82525050565b60006020820190506124086000830184612190565b92915050565b60006040820190506124236000830185612190565b6124306020830184612190565b9392505050565b600060408201905061244c6000830185612190565b61245960208301846123d5565b9392505050565b600060208201905061247560008301846121fd565b92915050565b60006020820190508181036000830152612495818461221b565b905092915050565b600060208201905081810360008301526124b681612254565b9050919050565b600060208201905081810360008301526124d681612277565b9050919050565b600060208201905081810360008301526124f68161229a565b9050919050565b60006020820190508181036000830152612516816122bd565b9050919050565b60006020820190508181036000830152612536816122e0565b9050919050565b6000602082019050818103600083015261255681612303565b9050919050565b6000602082019050818103600083015261257681612326565b9050919050565b6000602082019050818103600083015261259681612349565b9050919050565b600060208201905081810360008301526125b68161236c565b9050919050565b600060208201905081810360008301526125d68161238f565b9050919050565b600060208201905081810360008301526125f6816123b2565b9050919050565b600060208201905061261260008301846123d5565b92915050565b600060a08201905061262d60008301886123d5565b61263a602083018761220c565b818103604083015261264c818661219f565b905061265b6060830185612190565b61266860808301846123d5565b9695505050505050565b600060208201905061268760008301846123e4565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006126ed82612975565b91506126f883612975565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561272d5761272c612a1a565b5b828201905092915050565b6000808291508390505b60018511156127825780860481111561275e5761275d612a1a565b5b600185161561276d5780820291505b808102905061277b85612a5a565b9450612742565b94509492505050565b600061279682612975565b91506127a18361297f565b92506127ce7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846127d6565b905092915050565b6000826127e657600190506128a2565b816127f457600090506128a2565b816001811461280a576002811461281457612843565b60019150506128a2565b60ff84111561282657612825612a1a565b5b8360020a91508482111561283d5761283c612a1a565b5b506128a2565b5060208310610133831016604e8410600b84101617156128785782820a90508381111561287357612872612a1a565b5b6128a2565b6128858484846001612738565b9250905081840481111561289c5761289b612a1a565b5b81810290505b9392505050565b60006128b482612975565b91506128bf83612975565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156128f8576128f7612a1a565b5b828202905092915050565b600061290e82612975565b915061291983612975565b92508282101561292c5761292b612a1a565b5b828203905092915050565b600061294282612955565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061299782612975565b9050919050565b60005b838110156129bc5780820151818401526020810190506129a1565b838111156129cb576000848401525b50505050565b60006129dc82612975565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612a0f57612a0e612a1a565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f43616c6c6572206973206e6f7420666565206469737472696275746f72000000600082015250565b612cf181612937565b8114612cfc57600080fd5b50565b612d0881612949565b8114612d1357600080fd5b50565b612d1f81612975565b8114612d2a57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208a74743b91954c16d3e1bc0408e17cec4487ed31252e0495de4fee20881133e664736f6c63430008030033

Deployed Bytecode Sourcemap

4048:7517:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10599:144;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5957:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6790:161;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5229:57;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6234:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6959:313;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6143:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6337:119;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2590:148;;;:::i;:::-;;10751:236;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10266:225;;;:::i;:::-;;5025:59;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2376:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5091:61;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6048:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6464:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5159:63;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10995:567;;;:::i;:::-;;2884:148;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6639:143;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10599:144;10660:4;10681:51;:54;10733:1;10681:54;;;;;;;;;;;;;;;;;;;;;;;;;10674:61;;10599:144;;;:::o;5957:83::-;5994:13;6027:5;;;;;;;;;;;;;;;;;6020:12;;5957:83;:::o;6790:161::-;6865:4;6882:39;6891:12;:10;:12::i;:::-;6905:7;6914:6;6882:8;:39::i;:::-;6939:4;6932:11;;6790:161;;;;:::o;5229:57::-;;;;:::o;6234:95::-;6287:7;4832:1;4891:2;:13;;;;:::i;:::-;4875;:29;;;;:::i;:::-;6307:14;;6234:95;:::o;6959:313::-;7057:4;7074:36;7084:6;7092:9;7103:6;7074:9;:36::i;:::-;7121:121;7130:6;7138:12;:10;:12::i;:::-;7152:89;7190:6;7152:89;;;;;;;;;;;;;;;;;:11;:19;7164:6;7152:19;;;;;;;;;;;;;;;:33;7172:12;:10;:12::i;:::-;7152:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7121:8;:121::i;:::-;7260:4;7253:11;;6959:313;;;;;:::o;6143:83::-;6184:5;4832:1;6202:16;;6143:83;:::o;6337:119::-;6403:7;6430:9;:18;6440:7;6430:18;;;;;;;;;;;;;;;;6423:25;;6337:119;;;:::o;2590:148::-;2513:12;:10;:12::i;:::-;2503:22;;:6;;;;;;;;;;;:22;;;2495:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2697:1:::1;2660:40;;2681:6;;;;;;;;;;;2660:40;;;;;;;;;;;;2728:1;2711:6;;:19;;;;;;;;;;;;;;;;;;2590:148::o:0;10751:236::-;2808:10;2792:26;;:12;;;;;;;;;;:26;;;2784:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10842:9:::1;10837:143;10861:8;;:15;;10857:1;:19;10837:143;;;10965:3;10898:51;:64;10950:8;;10959:1;10950:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10898:64;;;;;;;;;;;;;;;;:70;;;;;;;;;;;;;;;;;;10878:3;;;;;:::i;:::-;;;;10837:143;;;;10751:236:::0;;;:::o;10266:225::-;2513:12;:10;:12::i;:::-;2503:22;;:6;;;;;;;;;;;:22;;;2495:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4832:1:::1;4891:2;:13;;;;:::i;:::-;4875;:29;;;;:::i;:::-;10319:12;:22;;;;4832:1;4891:2;:13;;;;:::i;:::-;4875;:29;;;;:::i;:::-;10352:14;:22;;;;4832:1;4891:2;:13;;;;:::i;:::-;4875;:29;;;;:::i;:::-;10385:17;:25;;;;4832:1;4891:2;:13;;;;:::i;:::-;4875;:29;;;;:::i;:::-;10421:11;:19;;;;10456:27;4832:1;4891:2;:13;;;;:::i;:::-;4875;:29;;;;:::i;:::-;10456:27;;;;;;:::i;:::-;;;;;;;;10266:225::o:0;5025:59::-;;;;:::o;2376:79::-;2414:7;2441:6;;;;;;;;;;;2434:13;;2376:79;:::o;5091:61::-;;;;:::o;6048:87::-;6087:13;6120:7;;;;;;;;;;;;;;;;;6113:14;;6048:87;:::o;6464:167::-;6542:4;6559:42;6569:12;:10;:12::i;:::-;6583:9;6594:6;6559:9;:42::i;:::-;6619:4;6612:11;;6464:167;;;;:::o;5159:63::-;;;;:::o;10995:567::-;2513:12;:10;:12::i;:::-;2503:22;;:6;;;;;;;;;;;:22;;;2495:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11059:11:::1;;;;;;;;;;;11058:12;11050:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11145:42;11108:15;;:80;;;;;;;;;;;;;;;;;;11199:58;11216:4;11231:15;;;;;;;;;;;4832:1;4891:2;:13;;;;:::i;:::-;4875;:29;;;;:::i;:::-;11199:8;:58::i;:::-;11302:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11284:55;;;11348:4;11355:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11284:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11268:13;;:110;;;;;;;;;;;;;;;;;;11396:13;;;;;;;;;;;11389:29;;;11427:15;;;;;;;;;;;11445:14;11389:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11485:4;11471:11;;:18;;;;;;;;;;;;;;;;;;11514:4;11500:11;;:18;;;;;;;;;;;;;;;;;;11542:12;11529:10;:25;;;;10995:567::o:0;2884:148::-;2513:12;:10;:12::i;:::-;2503:22;;:6;;;;;;;;;;;:22;;;2495:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2988:1:::1;2964:26;;:12;::::0;::::1;;;;;;;;:26;;;2955:36;;;::::0;::::1;;3017:7;3002:12;::::0;:22:::1;;;;;;;;;;;;;;;;;;2884:148:::0;:::o;6639:143::-;6720:7;6747:11;:18;6759:5;6747:18;;;;;;;;;;;;;;;:27;6766:7;6747:27;;;;;;;;;;;;;;;;6740:34;;6639:143;;;;:::o;94:98::-;147:7;174:10;167:17;;94:98;:::o;7280:335::-;7390:1;7373:19;;:5;:19;;;;7365:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7471:1;7452:21;;:7;:21;;;;7444:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7553:6;7523:11;:18;7535:5;7523:18;;;;;;;;;;;;;;;:27;7542:7;7523:27;;;;;;;;;;;;;;;:36;;;;7591:7;7575:32;;7584:5;7575:32;;;7600:6;7575:32;;;;;;:::i;:::-;;;;;;;;7280:335;;;:::o;7623:1833::-;7727:1;7711:18;;:4;:18;;;;7703:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7804:1;7790:16;;:2;:16;;;;7782:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7874:1;7865:6;:10;7857:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7932:17;7969:7;:5;:7::i;:::-;7965:11;;:2;:11;;;7962:1309;;;8002:1;7992:11;;7962:1309;;;8042:7;:5;:7::i;:::-;8034:15;;:4;:15;;;;:32;;;;;8059:7;:5;:7::i;:::-;8053:13;;:2;:13;;;;8034:32;8030:1241;;;8092:51;:57;8144:4;8092:57;;;;;;;;;;;;;;;;;;;;;;;;;8091:58;8083:67;;;;;;8179:13;;;;;;;;;;;8171:21;;:4;:21;;;:55;;;;;8210:15;;;;;;;;;;;8196:30;;:2;:30;;;;8171:55;:83;;;;;8232:18;:22;8251:2;8232:22;;;;;;;;;;;;;;;;;;;;;;;;;8230:24;8171:83;8167:406;;;8294:12;;8284:6;:22;;8276:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8389:14;;8379:6;8363:13;8373:2;8363:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8355:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8477:12;8472:1;8459:10;;:14;;;;:::i;:::-;:30;8455:103;;;8523:14;8534:2;8523:10;:14::i;:::-;8522:15;8514:24;;;;;;8455:103;8167:406;8599:13;;;;;;;;;;;8593:19;;:2;:19;;;;:46;;;;;8617:18;:22;8636:2;8617:22;;;;;;;;;;;;;;;;;;;;;;;;;8616:23;8593:46;8589:166;;;8694:14;;8684:6;8668:13;8678:2;8668:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8660:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8589:166;8771:28;8802:24;8820:4;8802:9;:24::i;:::-;8771:55;;8846:6;;;;;;;;;;8845:7;:30;;;;;8862:13;;;;;;;;;;;8856:19;;:2;:19;;;8845:30;:45;;;;;8879:11;;;;;;;;;;;8845:45;:87;;;;;8915:17;;8894:20;:38;8845:87;:119;;;;;8946:18;;8936:9;;:28;8845:119;8841:419;;;8985:67;9002:49;9006:6;9013:37;9017:20;9038:11;;9013:3;:37::i;:::-;9002:3;:49::i;:::-;8985:16;:67::i;:::-;9071:26;9100:21;9071:50;;9164:1;9143:18;:22;9140:105;;;9190:35;9203:21;9190:12;:35::i;:::-;9140:105;8841:419;;8030:1241;;7962:1309;9299:27;9319:6;9299:9;:15;9309:4;9299:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9283:9;:15;9293:4;9283:15;;;;;;;;;;;;;;;:43;;;;9351:40;9369:21;9380:9;9369:6;:10;;:21;;;;:::i;:::-;9351:9;:13;9361:2;9351:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;9337:9;:13;9347:2;9337:13;;;;;;;;;;;;;;;:54;;;;9422:2;9407:41;;9416:4;9407:41;;;9426:21;9437:9;9426:6;:10;;:21;;;;:::i;:::-;9407:41;;;;;;:::i;:::-;;;;;;;;7623:1833;;;;:::o;1232:190::-;1318:7;1351:1;1346;:6;;1354:12;1338:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1378:9;1394:1;1390;:5;;;;:::i;:::-;1378:17;;1413:1;1406:8;;;1232:190;;;;;:::o;9572:195::-;9631:4;9648:12;9715:7;9703:20;9695:28;;9758:1;9751:4;:8;9744:15;;;9572:195;;;:::o;9466:98::-;9523:7;9550:1;9548;:3;9547:9;;9555:1;9547:9;;;9553:1;9547:9;9540:16;;9466:98;;;;:::o;9775:483::-;5577:4;5568:6;;:13;;;;;;;;;;;;;;;;;;9853:21:::1;9891:1;9877:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9853:40;;9922:4;9904;9909:1;9904:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;9948:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9938:4;9943:1;9938:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;9981:62;9998:4;10013:15;;;;;;;;;;;10031:11;9981:8;:62::i;:::-;10054:15;;;;;;;;;;;:66;;;10135:11;10161:1;10177:4;10204;10224:15;10054:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5592:1;5613:5:::0;5604:6;;:14;;;;;;;;;;;;;;;;;;9775:483;:::o;10499:92::-;10556:10;;;;;;;;;;;:19;;:27;10576:6;10556:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10499:92;:::o;1088:136::-;1146:7;1173:43;1177:1;1180;1173:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1166:50;;1088:136;;;;:::o;901:179::-;959:7;979:9;995:1;991;:5;;;;:::i;:::-;979:17;;1020:1;1015;:6;;1007:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1071:1;1064:8;;;901:179;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;318:367::-;;;451:3;444:4;436:6;432:17;428:27;418:2;;469:1;466;459:12;418:2;505:6;492:20;482:30;;535:18;527:6;524:30;521:2;;;567:1;564;557:12;521:2;604:4;596:6;592:17;580:29;;658:3;650:4;642:6;638:17;628:8;624:32;621:41;618:2;;;675:1;672;665:12;618:2;408:277;;;;;:::o;691:133::-;;772:6;759:20;750:29;;788:30;812:5;788:30;:::i;:::-;740:84;;;;:::o;830:137::-;;915:6;909:13;900:22;;931:30;955:5;931:30;:::i;:::-;890:77;;;;:::o;973:139::-;;1057:6;1044:20;1035:29;;1073:33;1100:5;1073:33;:::i;:::-;1025:87;;;;:::o;1118:262::-;;1226:2;1214:9;1205:7;1201:23;1197:32;1194:2;;;1242:1;1239;1232:12;1194:2;1285:1;1310:53;1355:7;1346:6;1335:9;1331:22;1310:53;:::i;:::-;1300:63;;1256:117;1184:196;;;;:::o;1386:284::-;;1505:2;1493:9;1484:7;1480:23;1476:32;1473:2;;;1521:1;1518;1511:12;1473:2;1564:1;1589:64;1645:7;1636:6;1625:9;1621:22;1589:64;:::i;:::-;1579:74;;1535:128;1463:207;;;;:::o;1676:407::-;;;1801:2;1789:9;1780:7;1776:23;1772:32;1769:2;;;1817:1;1814;1807:12;1769:2;1860:1;1885:53;1930:7;1921:6;1910:9;1906:22;1885:53;:::i;:::-;1875:63;;1831:117;1987:2;2013:53;2058:7;2049:6;2038:9;2034:22;2013:53;:::i;:::-;2003:63;;1958:118;1759:324;;;;;:::o;2089:552::-;;;;2231:2;2219:9;2210:7;2206:23;2202:32;2199:2;;;2247:1;2244;2237:12;2199:2;2290:1;2315:53;2360:7;2351:6;2340:9;2336:22;2315:53;:::i;:::-;2305:63;;2261:117;2417:2;2443:53;2488:7;2479:6;2468:9;2464:22;2443:53;:::i;:::-;2433:63;;2388:118;2545:2;2571:53;2616:7;2607:6;2596:9;2592:22;2571:53;:::i;:::-;2561:63;;2516:118;2189:452;;;;;:::o;2647:407::-;;;2772:2;2760:9;2751:7;2747:23;2743:32;2740:2;;;2788:1;2785;2778:12;2740:2;2831:1;2856:53;2901:7;2892:6;2881:9;2877:22;2856:53;:::i;:::-;2846:63;;2802:117;2958:2;2984:53;3029:7;3020:6;3009:9;3005:22;2984:53;:::i;:::-;2974:63;;2929:118;2730:324;;;;;:::o;3060:564::-;;;;3217:2;3205:9;3196:7;3192:23;3188:32;3185:2;;;3233:1;3230;3223:12;3185:2;3304:1;3293:9;3289:17;3276:31;3334:18;3326:6;3323:30;3320:2;;;3366:1;3363;3356:12;3320:2;3402:80;3474:7;3465:6;3454:9;3450:22;3402:80;:::i;:::-;3384:98;;;;3247:245;3531:2;3557:50;3599:7;3590:6;3579:9;3575:22;3557:50;:::i;:::-;3547:60;;3502:115;3175:449;;;;;:::o;3630:278::-;;3746:2;3734:9;3725:7;3721:23;3717:32;3714:2;;;3762:1;3759;3752:12;3714:2;3805:1;3830:61;3883:7;3874:6;3863:9;3859:22;3830:61;:::i;:::-;3820:71;;3776:125;3704:204;;;;:::o;3914:179::-;;4004:46;4046:3;4038:6;4004:46;:::i;:::-;4082:4;4077:3;4073:14;4059:28;;3994:99;;;;:::o;4099:108::-;4176:24;4194:5;4176:24;:::i;:::-;4171:3;4164:37;4154:53;;:::o;4213:118::-;4300:24;4318:5;4300:24;:::i;:::-;4295:3;4288:37;4278:53;;:::o;4367:732::-;;4515:54;4563:5;4515:54;:::i;:::-;4585:86;4664:6;4659:3;4585:86;:::i;:::-;4578:93;;4695:56;4745:5;4695:56;:::i;:::-;4774:7;4805:1;4790:284;4815:6;4812:1;4809:13;4790:284;;;4891:6;4885:13;4918:63;4977:3;4962:13;4918:63;:::i;:::-;4911:70;;5004:60;5057:6;5004:60;:::i;:::-;4994:70;;4850:224;4837:1;4834;4830:9;4825:14;;4790:284;;;4794:14;5090:3;5083:10;;4491:608;;;;;;;:::o;5105:109::-;5186:21;5201:5;5186:21;:::i;:::-;5181:3;5174:34;5164:50;;:::o;5220:147::-;5315:45;5354:5;5315:45;:::i;:::-;5310:3;5303:58;5293:74;;:::o;5373:364::-;;5489:39;5522:5;5489:39;:::i;:::-;5544:71;5608:6;5603:3;5544:71;:::i;:::-;5537:78;;5624:52;5669:6;5664:3;5657:4;5650:5;5646:16;5624:52;:::i;:::-;5701:29;5723:6;5701:29;:::i;:::-;5696:3;5692:39;5685:46;;5465:272;;;;;:::o;5743:366::-;;5906:67;5970:2;5965:3;5906:67;:::i;:::-;5899:74;;5982:93;6071:3;5982:93;:::i;:::-;6100:2;6095:3;6091:12;6084:19;;5889:220;;;:::o;6115:366::-;;6278:67;6342:2;6337:3;6278:67;:::i;:::-;6271:74;;6354:93;6443:3;6354:93;:::i;:::-;6472:2;6467:3;6463:12;6456:19;;6261:220;;;:::o;6487:366::-;;6650:67;6714:2;6709:3;6650:67;:::i;:::-;6643:74;;6726:93;6815:3;6726:93;:::i;:::-;6844:2;6839:3;6835:12;6828:19;;6633:220;;;:::o;6859:366::-;;7022:67;7086:2;7081:3;7022:67;:::i;:::-;7015:74;;7098:93;7187:3;7098:93;:::i;:::-;7216:2;7211:3;7207:12;7200:19;;7005:220;;;:::o;7231:366::-;;7394:67;7458:2;7453:3;7394:67;:::i;:::-;7387:74;;7470:93;7559:3;7470:93;:::i;:::-;7588:2;7583:3;7579:12;7572:19;;7377:220;;;:::o;7603:366::-;;7766:67;7830:2;7825:3;7766:67;:::i;:::-;7759:74;;7842:93;7931:3;7842:93;:::i;:::-;7960:2;7955:3;7951:12;7944:19;;7749:220;;;:::o;7975:366::-;;8138:67;8202:2;8197:3;8138:67;:::i;:::-;8131:74;;8214:93;8303:3;8214:93;:::i;:::-;8332:2;8327:3;8323:12;8316:19;;8121:220;;;:::o;8347:366::-;;8510:67;8574:2;8569:3;8510:67;:::i;:::-;8503:74;;8586:93;8675:3;8586:93;:::i;:::-;8704:2;8699:3;8695:12;8688:19;;8493:220;;;:::o;8719:366::-;;8882:67;8946:2;8941:3;8882:67;:::i;:::-;8875:74;;8958:93;9047:3;8958:93;:::i;:::-;9076:2;9071:3;9067:12;9060:19;;8865:220;;;:::o;9091:366::-;;9254:67;9318:2;9313:3;9254:67;:::i;:::-;9247:74;;9330:93;9419:3;9330:93;:::i;:::-;9448:2;9443:3;9439:12;9432:19;;9237:220;;;:::o;9463:366::-;;9626:67;9690:2;9685:3;9626:67;:::i;:::-;9619:74;;9702:93;9791:3;9702:93;:::i;:::-;9820:2;9815:3;9811:12;9804:19;;9609:220;;;:::o;9835:118::-;9922:24;9940:5;9922:24;:::i;:::-;9917:3;9910:37;9900:53;;:::o;9959:112::-;10042:22;10058:5;10042:22;:::i;:::-;10037:3;10030:35;10020:51;;:::o;10077:222::-;;10208:2;10197:9;10193:18;10185:26;;10221:71;10289:1;10278:9;10274:17;10265:6;10221:71;:::i;:::-;10175:124;;;;:::o;10305:332::-;;10464:2;10453:9;10449:18;10441:26;;10477:71;10545:1;10534:9;10530:17;10521:6;10477:71;:::i;:::-;10558:72;10626:2;10615:9;10611:18;10602:6;10558:72;:::i;:::-;10431:206;;;;;:::o;10643:332::-;;10802:2;10791:9;10787:18;10779:26;;10815:71;10883:1;10872:9;10868:17;10859:6;10815:71;:::i;:::-;10896:72;10964:2;10953:9;10949:18;10940:6;10896:72;:::i;:::-;10769:206;;;;;:::o;10981:210::-;;11106:2;11095:9;11091:18;11083:26;;11119:65;11181:1;11170:9;11166:17;11157:6;11119:65;:::i;:::-;11073:118;;;;:::o;11197:313::-;;11348:2;11337:9;11333:18;11325:26;;11397:9;11391:4;11387:20;11383:1;11372:9;11368:17;11361:47;11425:78;11498:4;11489:6;11425:78;:::i;:::-;11417:86;;11315:195;;;;:::o;11516:419::-;;11720:2;11709:9;11705:18;11697:26;;11769:9;11763:4;11759:20;11755:1;11744:9;11740:17;11733:47;11797:131;11923:4;11797:131;:::i;:::-;11789:139;;11687:248;;;:::o;11941:419::-;;12145:2;12134:9;12130:18;12122:26;;12194:9;12188:4;12184:20;12180:1;12169:9;12165:17;12158:47;12222:131;12348:4;12222:131;:::i;:::-;12214:139;;12112:248;;;:::o;12366:419::-;;12570:2;12559:9;12555:18;12547:26;;12619:9;12613:4;12609:20;12605:1;12594:9;12590:17;12583:47;12647:131;12773:4;12647:131;:::i;:::-;12639:139;;12537:248;;;:::o;12791:419::-;;12995:2;12984:9;12980:18;12972:26;;13044:9;13038:4;13034:20;13030:1;13019:9;13015:17;13008:47;13072:131;13198:4;13072:131;:::i;:::-;13064:139;;12962:248;;;:::o;13216:419::-;;13420:2;13409:9;13405:18;13397:26;;13469:9;13463:4;13459:20;13455:1;13444:9;13440:17;13433:47;13497:131;13623:4;13497:131;:::i;:::-;13489:139;;13387:248;;;:::o;13641:419::-;;13845:2;13834:9;13830:18;13822:26;;13894:9;13888:4;13884:20;13880:1;13869:9;13865:17;13858:47;13922:131;14048:4;13922:131;:::i;:::-;13914:139;;13812:248;;;:::o;14066:419::-;;14270:2;14259:9;14255:18;14247:26;;14319:9;14313:4;14309:20;14305:1;14294:9;14290:17;14283:47;14347:131;14473:4;14347:131;:::i;:::-;14339:139;;14237:248;;;:::o;14491:419::-;;14695:2;14684:9;14680:18;14672:26;;14744:9;14738:4;14734:20;14730:1;14719:9;14715:17;14708:47;14772:131;14898:4;14772:131;:::i;:::-;14764:139;;14662:248;;;:::o;14916:419::-;;15120:2;15109:9;15105:18;15097:26;;15169:9;15163:4;15159:20;15155:1;15144:9;15140:17;15133:47;15197:131;15323:4;15197:131;:::i;:::-;15189:139;;15087:248;;;:::o;15341:419::-;;15545:2;15534:9;15530:18;15522:26;;15594:9;15588:4;15584:20;15580:1;15569:9;15565:17;15558:47;15622:131;15748:4;15622:131;:::i;:::-;15614:139;;15512:248;;;:::o;15766:419::-;;15970:2;15959:9;15955:18;15947:26;;16019:9;16013:4;16009:20;16005:1;15994:9;15990:17;15983:47;16047:131;16173:4;16047:131;:::i;:::-;16039:139;;15937:248;;;:::o;16191:222::-;;16322:2;16311:9;16307:18;16299:26;;16335:71;16403:1;16392:9;16388:17;16379:6;16335:71;:::i;:::-;16289:124;;;;:::o;16419:831::-;;16720:3;16709:9;16705:19;16697:27;;16734:71;16802:1;16791:9;16787:17;16778:6;16734:71;:::i;:::-;16815:80;16891:2;16880:9;16876:18;16867:6;16815:80;:::i;:::-;16942:9;16936:4;16932:20;16927:2;16916:9;16912:18;16905:48;16970:108;17073:4;17064:6;16970:108;:::i;:::-;16962:116;;17088:72;17156:2;17145:9;17141:18;17132:6;17088:72;:::i;:::-;17170:73;17238:3;17227:9;17223:19;17214:6;17170:73;:::i;:::-;16687:563;;;;;;;;:::o;17256:214::-;;17383:2;17372:9;17368:18;17360:26;;17396:67;17460:1;17449:9;17445:17;17436:6;17396:67;:::i;:::-;17350:120;;;;:::o;17476:132::-;;17566:3;17558:11;;17596:4;17591:3;17587:14;17579:22;;17548:60;;;:::o;17614:114::-;;17715:5;17709:12;17699:22;;17688:40;;;:::o;17734:99::-;;17820:5;17814:12;17804:22;;17793:40;;;:::o;17839:113::-;;17941:4;17936:3;17932:14;17924:22;;17914:38;;;:::o;17958:184::-;;18091:6;18086:3;18079:19;18131:4;18126:3;18122:14;18107:29;;18069:73;;;;:::o;18148:169::-;;18266:6;18261:3;18254:19;18306:4;18301:3;18297:14;18282:29;;18244:73;;;;:::o;18323:305::-;;18382:20;18400:1;18382:20;:::i;:::-;18377:25;;18416:20;18434:1;18416:20;:::i;:::-;18411:25;;18570:1;18502:66;18498:74;18495:1;18492:81;18489:2;;;18576:18;;:::i;:::-;18489:2;18620:1;18617;18613:9;18606:16;;18367:261;;;;:::o;18634:848::-;;;18726:6;18717:15;;18750:5;18741:14;;18764:712;18785:1;18775:8;18772:15;18764:712;;;18880:4;18875:3;18871:14;18865:4;18862:24;18859:2;;;18889:18;;:::i;:::-;18859:2;18939:1;18929:8;18925:16;18922:2;;;19354:4;19347:5;19343:16;19334:25;;18922:2;19404:4;19398;19394:15;19386:23;;19434:32;19457:8;19434:32;:::i;:::-;19422:44;;18764:712;;;18707:775;;;;;;;:::o;19488:281::-;;19570:23;19588:4;19570:23;:::i;:::-;19562:31;;19614:25;19630:8;19614:25;:::i;:::-;19602:37;;19658:104;19695:66;19685:8;19679:4;19658:104;:::i;:::-;19649:113;;19552:217;;;;:::o;19775:1073::-;;20020:8;20010:2;;20041:1;20032:10;;20043:5;;20010:2;20069:4;20059:2;;20086:1;20077:10;;20088:5;;20059:2;20155:4;20203:1;20198:27;;;;20239:1;20234:191;;;;20148:277;;20198:27;20216:1;20207:10;;20218:5;;;20234:191;20279:3;20269:8;20266:17;20263:2;;;20286:18;;:::i;:::-;20263:2;20335:8;20332:1;20328:16;20319:25;;20370:3;20363:5;20360:14;20357:2;;;20377:18;;:::i;:::-;20357:2;20410:5;;;20148:277;;20534:2;20524:8;20521:16;20515:3;20509:4;20506:13;20502:36;20484:2;20474:8;20471:16;20466:2;20460:4;20457:12;20453:35;20437:111;20434:2;;;20590:8;20584:4;20580:19;20571:28;;20625:3;20618:5;20615:14;20612:2;;;20632:18;;:::i;:::-;20612:2;20665:5;;20434:2;20705:42;20743:3;20733:8;20727:4;20724:1;20705:42;:::i;:::-;20690:57;;;;20779:4;20774:3;20770:14;20763:5;20760:25;20757:2;;;20788:18;;:::i;:::-;20757:2;20837:4;20830:5;20826:16;20817:25;;19835:1013;;;;;;:::o;20854:348::-;;20917:20;20935:1;20917:20;:::i;:::-;20912:25;;20951:20;20969:1;20951:20;:::i;:::-;20946:25;;21139:1;21071:66;21067:74;21064:1;21061:81;21056:1;21049:9;21042:17;21038:105;21035:2;;;21146:18;;:::i;:::-;21035:2;21194:1;21191;21187:9;21176:20;;20902:300;;;;:::o;21208:191::-;;21268:20;21286:1;21268:20;:::i;:::-;21263:25;;21302:20;21320:1;21302:20;:::i;:::-;21297:25;;21341:1;21338;21335:8;21332:2;;;21346:18;;:::i;:::-;21332:2;21391:1;21388;21384:9;21376:17;;21253:146;;;;:::o;21405:96::-;;21471:24;21489:5;21471:24;:::i;:::-;21460:35;;21450:51;;;:::o;21507:90::-;;21584:5;21577:13;21570:21;21559:32;;21549:48;;;:::o;21603:126::-;;21680:42;21673:5;21669:54;21658:65;;21648:81;;;:::o;21735:77::-;;21801:5;21790:16;;21780:32;;;:::o;21818:86::-;;21893:4;21886:5;21882:16;21871:27;;21861:43;;;:::o;21910:121::-;;22001:24;22019:5;22001:24;:::i;:::-;21988:37;;21978:53;;;:::o;22037:307::-;22105:1;22115:113;22129:6;22126:1;22123:13;22115:113;;;22214:1;22209:3;22205:11;22199:18;22195:1;22190:3;22186:11;22179:39;22151:2;22148:1;22144:10;22139:15;;22115:113;;;22246:6;22243:1;22240:13;22237:2;;;22326:1;22317:6;22312:3;22308:16;22301:27;22237:2;22086:258;;;;:::o;22350:233::-;;22412:24;22430:5;22412:24;:::i;:::-;22403:33;;22458:66;22451:5;22448:77;22445:2;;;22528:18;;:::i;:::-;22445:2;22575:1;22568:5;22564:13;22557:20;;22393:190;;;:::o;22589:180::-;22637:77;22634:1;22627:88;22734:4;22731:1;22724:15;22758:4;22755:1;22748:15;22775:102;;22867:2;22863:7;22858:2;22851:5;22847:14;22843:28;22833:38;;22823:54;;;:::o;22883:102::-;;22972:5;22969:1;22965:13;22944:34;;22934:51;;;:::o;22991:222::-;23131:34;23127:1;23119:6;23115:14;23108:58;23200:5;23195:2;23187:6;23183:15;23176:30;23097:116;:::o;23219:175::-;23359:27;23355:1;23347:6;23343:14;23336:51;23325:69;:::o;23400:221::-;23540:34;23536:1;23528:6;23524:14;23517:58;23609:4;23604:2;23596:6;23592:15;23585:29;23506:115;:::o;23627:177::-;23767:29;23763:1;23755:6;23751:14;23744:53;23733:71;:::o;23810:182::-;23950:34;23946:1;23938:6;23934:14;23927:58;23916:76;:::o;23998:228::-;24138:34;24134:1;24126:6;24122:14;24115:58;24207:11;24202:2;24194:6;24190:15;24183:36;24104:122;:::o;24232:224::-;24372:34;24368:1;24360:6;24356:14;24349:58;24441:7;24436:2;24428:6;24424:15;24417:32;24338:118;:::o;24462:176::-;24602:28;24598:1;24590:6;24586:14;24579:52;24568:70;:::o;24644:223::-;24784:34;24780:1;24772:6;24768:14;24761:58;24853:6;24848:2;24840:6;24836:15;24829:31;24750:117;:::o;24873:173::-;25013:25;25009:1;25001:6;24997:14;24990:49;24979:67;:::o;25052:179::-;25192:31;25188:1;25180:6;25176:14;25169:55;25158:73;:::o;25237:122::-;25310:24;25328:5;25310:24;:::i;:::-;25303:5;25300:35;25290:2;;25349:1;25346;25339:12;25290:2;25280:79;:::o;25365:116::-;25435:21;25450:5;25435:21;:::i;:::-;25428:5;25425:32;25415:2;;25471:1;25468;25461:12;25415:2;25405:76;:::o;25487:122::-;25560:24;25578:5;25560:24;:::i;:::-;25553:5;25550:35;25540:2;;25599:1;25596;25589:12;25540:2;25530:79;:::o

Swarm Source

ipfs://8a74743b91954c16d3e1bc0408e17cec4487ed31252e0495de4fee20881133e6

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  ]

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.