ETH Price: $2,953.85 (-0.09%)

Contract

0x5Ef30Ba3A27B92399A46EE86D2B810Ee7E9d8abC

Overview

ETH Balance

0 ETH

ETH Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Transfer245958732026-01-16 1:36:258 days ago1768527385IN
0x5Ef30Ba3...e7E9d8abC
0 ETH0.000000060.0012003
Withdraw Tokens244761422026-01-13 7:05:2311 days ago1768287923IN
0x5Ef30Ba3...e7E9d8abC
0 ETH00.00012025
Approve237294722025-12-27 0:16:2328 days ago1766794583IN
0x5Ef30Ba3...e7E9d8abC
0 ETH00.00000025
Transfer218497212025-11-13 11:58:0172 days ago1763035081IN
0x5Ef30Ba3...e7E9d8abC
0 ETH0.000000060.00100027
Transfer216163922025-11-08 2:20:2377 days ago1762568423IN
0x5Ef30Ba3...e7E9d8abC
0 ETH0.000000080.00150041
Transfer215702962025-11-07 0:43:5178 days ago1762476231IN
0x5Ef30Ba3...e7E9d8abC
0 ETH0.000000010.00010026
Approve211814122025-10-29 0:41:0387 days ago1761698463IN
0x5Ef30Ba3...e7E9d8abC
0 ETH0.000000070.00150047
Transfer202718432025-10-07 23:22:05108 days ago1759879325IN
0x5Ef30Ba3...e7E9d8abC
0 ETH00.00011938
Approve201818042025-10-05 21:20:47110 days ago1759699247IN
0x5Ef30Ba3...e7E9d8abC
0 ETH0.000000020.00100037
Transfer200133062025-10-01 23:44:11114 days ago1759362251IN
0x5Ef30Ba3...e7E9d8abC
0 ETH0.000000140.00210051
Transfer199402792025-09-30 7:09:57116 days ago1759216197IN
0x5Ef30Ba3...e7E9d8abC
0 ETH0.000000150.00228496
Transfer187709712025-09-03 5:33:01143 days ago1756877581IN
0x5Ef30Ba3...e7E9d8abC
0 ETH00.0001007
Transfer186635892025-08-31 17:53:37146 days ago1756662817IN
0x5Ef30Ba3...e7E9d8abC
0 ETH0.000000010.00010063
Approve186584412025-08-31 15:02:01146 days ago1756652521IN
0x5Ef30Ba3...e7E9d8abC
0 ETH0.000000070.00150166
Transfer184738282025-08-27 8:28:15150 days ago1756283295IN
0x5Ef30Ba3...e7E9d8abC
0 ETH0.000000110.00150103
Approve184556632025-08-26 22:22:45150 days ago1756246965IN
0x5Ef30Ba3...e7E9d8abC
0 ETH0.000000070.00150047
Transfer184054012025-08-25 18:27:21152 days ago1756146441IN
0x5Ef30Ba3...e7E9d8abC
0 ETH0.00000010.0015008
Transfer181976972025-08-20 23:03:53156 days ago1755731033IN
0x5Ef30Ba3...e7E9d8abC
0 ETH0.00000010.00150054
Transfer181835322025-08-20 15:11:43157 days ago1755702703IN
0x5Ef30Ba3...e7E9d8abC
0 ETH0.000000170.00150125
Transfer181818132025-08-20 14:14:25157 days ago1755699265IN
0x5Ef30Ba3...e7E9d8abC
0 ETH0.000000110.00150117
Approve181493532025-08-19 20:12:25157 days ago1755634345IN
0x5Ef30Ba3...e7E9d8abC
0 ETH0.000000010.00010041
Transfer180975872025-08-18 15:26:53159 days ago1755530813IN
0x5Ef30Ba3...e7E9d8abC
0 ETH0.000000110.00150148
Transfer180372432025-08-17 5:55:25160 days ago1755410125IN
0x5Ef30Ba3...e7E9d8abC
0 ETH0.000000010.0001207
Transfer180194522025-08-16 20:02:23160 days ago1755374543IN
0x5Ef30Ba3...e7E9d8abC
0 ETH0.00000010.00150056
Transfer180191182025-08-16 19:51:15160 days ago1755373875IN
0x5Ef30Ba3...e7E9d8abC
0 ETH0.000000070.00150058
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CoffeeCoin

Compiler Version
v0.8.30+commit.73712a01

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at worldscan.org on 2025-08-09
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

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

contract CoffeeCoin is IERC20 {
    string public name;
    string public symbol;
    uint8 public decimals;
    uint256 private _totalSupply;
    address public immutable owner;
    uint256 public constant TOKENS_PER_CLAIM = 10 * 10**18;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => uint256) public lockedBalance;
    mapping(address => uint256) public unlockTime;
    mapping(address => bool) public hasClaimed;

    address public feeWallet;
    uint256 public constant feeRate = 1; // 1% fee
    mapping(address => bool) private _isExcludedFromFee;

    event TokensLocked(address indexed user, uint256 amount, uint256 unlockTime);
    event TokensUnlocked(address indexed user, uint256 amount);
    event TokensMinted(address indexed to, uint256 amount);
    event Withdrawal(address indexed token, uint256 amount);
    event EthWithdrawal(uint256 amount);
    event FeeApplied(address indexed from, address indexed to, uint256 feeAmount);
    event BatchTokensMinted(address[] recipients, uint256 amount);

    modifier onlyOwner() {
        require(msg.sender == owner, "Only owner can call this function");
        _;
    }

    modifier onlyEOA() {
        require(msg.sender == tx.origin, "Only EOA can claim tokens");
        _;
    }

    constructor() {
        name = "CoffeeCoin";
        symbol = "Coffee";
        decimals = 18;
        owner = msg.sender;
        _totalSupply = 1000000 * 10**18;
        _balances[msg.sender] = _totalSupply;
        feeWallet = msg.sender;
        _isExcludedFromFee[owner] = true;
        _isExcludedFromFee[address(this)] = true;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

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

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

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

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

    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        _transfer(sender, recipient, amount);
        uint256 currentAllowance = _allowances[sender][msg.sender];
        require(currentAllowance >= amount, "Insufficient allowance");
        _approve(sender, msg.sender, currentAllowance - amount);
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal {
        require(sender != address(0), "Invalid sender address");
        require(recipient != address(0), "Invalid recipient address");

        uint256 availableBalance = _balances[sender] - lockedBalance[sender];

        if (_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]) {
            require(availableBalance >= amount, "Insufficient unlocked balance");
            _balances[sender] -= amount;
            _balances[recipient] += amount;
            emit Transfer(sender, recipient, amount);
            return;
        }

        uint256 fee = (amount * feeRate) / 100;
        uint256 amountAfterFee = amount - fee;

        require(availableBalance >= amount, "Insufficient unlocked balance");
        _balances[sender] -= amount;
        
        _balances[feeWallet] += fee;
        emit Transfer(sender, feeWallet, fee);
        emit FeeApplied(sender, feeWallet, fee);

        _balances[recipient] += amountAfterFee;
        emit Transfer(sender, recipient, amountAfterFee);
    }
    
    function _approve(address owner_, address spender, uint256 amount) internal {
        require(owner_ != address(0), "Invalid owner address");
        require(spender != address(0), "Invalid spender address");
        _allowances[owner_][spender] = amount;
        emit Approval(owner_, spender, amount);
    }
    
    function setFeeWallet(address _newWallet) external onlyOwner {
        require(_newWallet != address(0), "Invalid address");
        feeWallet = _newWallet;
    }

    function excludeFromFee(address account) external onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) external onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    // --- New batch mint function ---
    function batchMintToUsers(address[] calldata recipients, uint256 amount) external onlyOwner {
        require(recipients.length > 0, "Recipient list cannot be empty");
        
        for (uint i = 0; i < recipients.length; i++) {
            address recipient = recipients[i];
            require(recipient != address(0), "Invalid recipient address in list");
            
            _totalSupply += amount;
            _balances[recipient] += amount;
            emit TokensMinted(recipient, amount);
            emit Transfer(address(0), recipient, amount);
        }
        emit BatchTokensMinted(recipients, amount);
    }

    function mintToUser(address recipient, uint256 amount) external onlyOwner {
        require(recipient != address(0), "Invalid recipient address");
        require(amount > 0, "Amount must be greater than 0");
        _totalSupply += amount;
        _balances[recipient] += amount;
        emit TokensMinted(recipient, amount);
        emit Transfer(address(0), recipient, amount);
    }

    function lockTokens(address user, uint256 amount, uint256 _unlockTime) external onlyOwner {
        require(user != address(0), "Invalid user address");
        require(amount > 0, "Amount must be greater than 0");
        require(_unlockTime > block.timestamp, "Unlock time must be in the future");
        require(_balances[user] >= amount, "Insufficient balance to lock");
        lockedBalance[user] += amount;
        unlockTime[user] = _unlockTime;
        _balances[user] -= amount;
        _balances[address(this)] += amount;
        emit TokensLocked(user, amount, _unlockTime);
        emit Transfer(user, address(this), amount);
    }

    function unlockTokens(address user) external {
        require(lockedBalance[user] > 0, "No locked tokens");
        require(block.timestamp >= unlockTime[user], "Tokens are still locked");
        uint256 amount = lockedBalance[user];
        lockedBalance[user] = 0;
        unlockTime[user] = 0;
        _balances[address(this)] -= amount;
        _balances[user] += amount;
        emit TokensUnlocked(user, amount);
        emit Transfer(address(this), user, amount);
    }

    function withdrawTokens(address tokenAddress) external onlyOwner {
        IERC20 token = IERC20(tokenAddress);
        uint256 balance = token.balanceOf(address(this));
        require(balance > 0, "No tokens to withdraw");
        token.transfer(owner, balance);
        emit Withdrawal(tokenAddress, balance);
    }

    function withdrawETH() external onlyOwner {
        uint256 balance = address(this).balance;
        require(balance > 0, "No ETH to withdraw");
        (bool success, ) = owner.call{value: balance}("");
        require(success, "ETH withdrawal failed");
        emit EthWithdrawal(balance);
    }

    receive() external payable onlyEOA {
        require(!hasClaimed[msg.sender], "Wallet has already claimed tokens");
        uint256 amount = TOKENS_PER_CLAIM;
        _totalSupply += amount;
        _balances[msg.sender] += amount;
        hasClaimed[msg.sender] = true;
        emit TokensMinted(msg.sender, amount);
        emit Transfer(address(0), msg.sender, amount);
    }

    function claimTokensOnTokenReceipt(address tokenAddress) external onlyEOA {
        require(!hasClaimed[msg.sender], "Wallet has already claimed tokens");
        IERC20 token = IERC20(tokenAddress);
        require(token.balanceOf(address(this)) > 0, "No tokens received");
        uint256 amount = TOKENS_PER_CLAIM;
        _totalSupply += amount;
        _balances[msg.sender] += amount;
        hasClaimed[msg.sender] = true;
        emit TokensMinted(msg.sender, amount);
        emit Transfer(address(0), msg.sender, amount);
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"recipients","type":"address[]"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BatchTokensMinted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EthWithdrawal","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":"feeAmount","type":"uint256"}],"name":"FeeApplied","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"unlockTime","type":"uint256"}],"name":"TokensLocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokensMinted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokensUnlocked","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":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawal","type":"event"},{"inputs":[],"name":"TOKENS_PER_CLAIM","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":"recipients","type":"address[]"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"batchMintToUsers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"claimTokensOnTokenReceipt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"hasClaimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"_unlockTime","type":"uint256"}],"name":"lockTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lockedBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintToUser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setFeeWallet","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"unlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"unlockTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a060405234801561000f575f5ffd5b506040518060400160405280600a81526020017f436f66666565436f696e000000000000000000000000000000000000000000008152505f908161005391906104d2565b506040518060400160405280600681526020017f436f6666656500000000000000000000000000000000000000000000000000008152506001908161009891906104d2565b50601260025f6101000a81548160ff021916908360ff1602179055503373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505069d3c21bcecceda100000060038190555060035460045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503360095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a5f60805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60035460405161028891906105b0565b60405180910390a36105c9565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061031057607f821691505b602082108103610323576103226102cc565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026103857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261034a565b61038f868361034a565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6103d36103ce6103c9846103a7565b6103b0565b6103a7565b9050919050565b5f819050919050565b6103ec836103b9565b6104006103f8826103da565b848454610356565b825550505050565b5f5f905090565b610417610408565b6104228184846103e3565b505050565b5b818110156104455761043a5f8261040f565b600181019050610428565b5050565b601f82111561048a5761045b81610329565b6104648461033b565b81016020851015610473578190505b61048761047f8561033b565b830182610427565b50505b505050565b5f82821c905092915050565b5f6104aa5f198460080261048f565b1980831691505092915050565b5f6104c2838361049b565b9150826002028217905092915050565b6104db82610295565b67ffffffffffffffff8111156104f4576104f361029f565b5b6104fe82546102f9565b610509828285610449565b5f60209050601f83116001811461053a575f8415610528578287015190505b61053285826104b7565b865550610599565b601f19841661054886610329565b5f5b8281101561056f5784890151825560018201915060208501945060208101905061054a565b8683101561058c5784890151610588601f89168261049b565b8355505b6001600288020188555050505b505050505050565b6105aa816103a7565b82525050565b5f6020820190506105c35f8301846105a1565b92915050565b608051613ca66106275f395f8181610a5f01528181610d4801528181610e2e01528181610f990152818161141d015281816114410152818161158001528181611886015281816120400152818161211501526122170152613ca65ff3fe608060405260043610610184575f3560e01c806390d49b9d116100d0578063a9059cbb11610089578063dd62ed3e11610063578063dd62ed3e14610810578063e086e5ec1461084c578063ea2f0b3714610862578063f25f4b561461088a57610402565b8063a9059cbb14610782578063cb67f948146107be578063ccfff679146107e657610402565b806390d49b9d1461067a5780639533a384146106a257806395d89b41146106ca578063978bbdb9146106f45780639ae697bf1461071e578063a25983e51461075a57610402565b8063437823ec1161013d57806370a082311161011757806370a082311461059c57806373b2e80e146105d857806376b467b7146106145780638da5cb5b1461065057610402565b8063437823ec1461052457806349df728c1461054c578063647186441461057457610402565b806306fdde0314610406578063095ea7b31461043057806318160ddd1461046c57806323b872dd14610496578063313ce567146104d257806331f4fddb146104fc57610402565b36610402573273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ee90612b97565b60405180910390fd5b60085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610281576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027890612c25565b60405180910390fd5b5f678ac7230489e8000090508060035f82825461029e9190612c79565b925050819055508060045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546102f19190612c79565b92505081905550600160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff167f3f2c9d57c068687834f0de942a9babb9e5acab57d516d3480a3c16ee165a4273826040516103939190612cbb565b60405180910390a23373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516103f89190612cbb565b60405180910390a3005b5f5ffd5b348015610411575f5ffd5b5061041a6108b4565b6040516104279190612d34565b60405180910390f35b34801561043b575f5ffd5b5061045660048036038101906104519190612de0565b61093f565b6040516104639190612e38565b60405180910390f35b348015610477575f5ffd5b50610480610955565b60405161048d9190612cbb565b60405180910390f35b3480156104a1575f5ffd5b506104bc60048036038101906104b79190612e51565b61095e565b6040516104c99190612e38565b60405180910390f35b3480156104dd575f5ffd5b506104e6610a4b565b6040516104f39190612ebc565b60405180910390f35b348015610507575f5ffd5b50610522600480360381019061051d9190612f36565b610a5d565b005b34801561052f575f5ffd5b5061054a60048036038101906105459190612f93565b610d46565b005b348015610557575f5ffd5b50610572600480360381019061056d9190612f93565b610e2c565b005b34801561057f575f5ffd5b5061059a60048036038101906105959190612f93565b61106a565b005b3480156105a7575f5ffd5b506105c260048036038101906105bd9190612f93565b6113a3565b6040516105cf9190612cbb565b60405180910390f35b3480156105e3575f5ffd5b506105fe60048036038101906105f99190612f93565b6113e9565b60405161060b9190612e38565b60405180910390f35b34801561061f575f5ffd5b5061063a60048036038101906106359190612f93565b611406565b6040516106479190612cbb565b60405180910390f35b34801561065b575f5ffd5b5061066461141b565b6040516106719190612fcd565b60405180910390f35b348015610685575f5ffd5b506106a0600480360381019061069b9190612f93565b61143f565b005b3480156106ad575f5ffd5b506106c860048036038101906106c39190612de0565b61157e565b005b3480156106d5575f5ffd5b506106de6117de565b6040516106eb9190612d34565b60405180910390f35b3480156106ff575f5ffd5b5061070861186a565b6040516107159190612cbb565b60405180910390f35b348015610729575f5ffd5b50610744600480360381019061073f9190612f93565b61186f565b6040516107519190612cbb565b60405180910390f35b348015610765575f5ffd5b50610780600480360381019061077b9190612fe6565b611884565b005b34801561078d575f5ffd5b506107a860048036038101906107a39190612de0565b611c79565b6040516107b59190612e38565b60405180910390f35b3480156107c9575f5ffd5b506107e460048036038101906107df9190612f93565b611c8f565b005b3480156107f1575f5ffd5b506107fa611fb0565b6040516108079190612cbb565b60405180910390f35b34801561081b575f5ffd5b5061083660048036038101906108319190613036565b611fbc565b6040516108439190612cbb565b60405180910390f35b348015610857575f5ffd5b5061086061203e565b005b34801561086d575f5ffd5b5061088860048036038101906108839190612f93565b612215565b005b348015610895575f5ffd5b5061089e6122fa565b6040516108ab9190612fcd565b60405180910390f35b5f80546108c0906130a1565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec906130a1565b80156109375780601f1061090e57610100808354040283529160200191610937565b820191905f5260205f20905b81548152906001019060200180831161091a57829003601f168201915b505050505081565b5f61094b33848461231f565b6001905092915050565b5f600354905090565b5f61096a8484846124e2565b5f60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a209061311b565b60405180910390fd5b610a3f85338584610a3a9190613139565b61231f565b60019150509392505050565b60025f9054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae2906131dc565b60405180910390fd5b5f8383905011610b30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2790613244565b60405180910390fd5b5f5f90505b83839050811015610d05575f848483818110610b5457610b53613262565b5b9050602002016020810190610b699190612f93565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610bd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd0906132ff565b60405180910390fd5b8260035f828254610bea9190612c79565b925050819055508260045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610c3d9190612c79565b925050819055508073ffffffffffffffffffffffffffffffffffffffff167f3f2c9d57c068687834f0de942a9babb9e5acab57d516d3480a3c16ee165a427384604051610c8a9190612cbb565b60405180910390a28073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610cef9190612cbb565b60405180910390a3508080600101915050610b35565b507fae8b6d66a2ab74619fc50c6fb8b4db954510ab396d9833e67edee09adbcfe5e8838383604051610d39939291906133d9565b60405180910390a1505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcb906131dc565b60405180910390fd5b6001600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610eba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb1906131dc565b60405180910390fd5b5f8190505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610ef89190612fcd565b602060405180830381865afa158015610f13573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f37919061341d565b90505f8111610f7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7290613492565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb7f0000000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b8152600401610fd69291906134b0565b6020604051808303815f875af1158015610ff2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110169190613501565b508273ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b658260405161105d9190612cbb565b60405180910390a2505050565b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cf90612b97565b60405180910390fd5b60085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611162576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115990612c25565b60405180910390fd5b5f8190505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111a09190612fcd565b602060405180830381865afa1580156111bb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111df919061341d565b1161121f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121690613576565b60405180910390fd5b5f678ac7230489e8000090508060035f82825461123c9190612c79565b925050819055508060045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461128f9190612c79565b92505081905550600160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff167f3f2c9d57c068687834f0de942a9babb9e5acab57d516d3480a3c16ee165a4273826040516113319190612cbb565b60405180910390a23373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113969190612cbb565b60405180910390a3505050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6008602052805f5260405f205f915054906101000a900460ff1681565b6007602052805f5260405f205f915090505481565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c4906131dc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361153b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611532906135de565b60405180910390fd5b8060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461160c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611603906131dc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361167a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167190613646565b60405180910390fd5b5f81116116bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b3906136ae565b60405180910390fd5b8060035f8282546116cd9190612c79565b925050819055508060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546117209190612c79565b925050819055508173ffffffffffffffffffffffffffffffffffffffff167f3f2c9d57c068687834f0de942a9babb9e5acab57d516d3480a3c16ee165a42738260405161176d9190612cbb565b60405180910390a28173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516117d29190612cbb565b60405180910390a35050565b600180546117eb906130a1565b80601f0160208091040260200160405190810160405280929190818152602001828054611817906130a1565b80156118625780601f1061183957610100808354040283529160200191611862565b820191905f5260205f20905b81548152906001019060200180831161184557829003601f168201915b505050505081565b600181565b6006602052805f5260405f205f915090505481565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611912576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611909906131dc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611980576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197790613716565b60405180910390fd5b5f82116119c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b9906136ae565b60405180910390fd5b428111611a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fb906137a4565b60405180910390fd5b8160045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015611a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7b9061380c565b60405180910390fd5b8160065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611ad09190612c79565b925050819055508060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611b659190613139565b925050819055508160045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611bb89190612c79565b925050819055508273ffffffffffffffffffffffffffffffffffffffff167fd741e738a23fd18a03a26522320d9fc6cac1fed483e215ea9150fbc2fc43385d8383604051611c0792919061382a565b60405180910390a23073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c6c9190612cbb565b60405180910390a3505050565b5f611c853384846124e2565b6001905092915050565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411611d0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d059061389b565b60405180910390fd5b60075f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054421015611d8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8590613903565b60405180910390fd5b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611e9f9190613139565b925050819055508060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611ef29190612c79565b925050819055508173ffffffffffffffffffffffffffffffffffffffff167fe7b379c6c1fa169e9079c25e9143b127637eef8ec8c9d5c06ddb4ab3e119588882604051611f3f9190612cbb565b60405180910390a28173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fa49190612cbb565b60405180910390a35050565b678ac7230489e8000081565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146120cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c3906131dc565b60405180910390fd5b5f4790505f8111612112576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121099061396b565b60405180910390fd5b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1682604051612157906139b6565b5f6040518083038185875af1925050503d805f8114612191576040519150601f19603f3d011682016040523d82523d5f602084013e612196565b606091505b50509050806121da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d190613a14565b60405180910390fd5b7fa4e4b7031216965b449ed4f72176cb8d9fefc3ef42984463c7f4682481996dbf826040516122099190612cbb565b60405180910390a15050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146122a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229a906131dc565b60405180910390fd5b5f600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361238d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238490613a7c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f290613ae4565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516124d59190612cbb565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612550576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254790613b4c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b590613646565b60405180910390fd5b5f60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126459190613139565b9050600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806126e25750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561283b578181101561272a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272190613bb4565b60405180910390fd5b8160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546127769190613139565b925050819055508160045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546127c99190612c79565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161282d9190612cbb565b60405180910390a350612b38565b5f606460018461284b9190613bd2565b6128559190613c40565b90505f81846128649190613139565b9050838310156128a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a090613bb4565b60405180910390fd5b8360045f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546128f59190613139565b925050819055508160045f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546129699190612c79565b9250508190555060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516129ee9190612cbb565b60405180910390a360095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f26524f21d1c7ceb6cc1979fd1221fed9832c253689bed24158050d7450dcb35e84604051612a749190612cbb565b60405180910390a38060045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612ac89190612c79565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b2c9190612cbb565b60405180910390a35050505b505050565b5f82825260208201905092915050565b7f4f6e6c7920454f412063616e20636c61696d20746f6b656e73000000000000005f82015250565b5f612b81601983612b3d565b9150612b8c82612b4d565b602082019050919050565b5f6020820190508181035f830152612bae81612b75565b9050919050565b7f57616c6c65742068617320616c726561647920636c61696d656420746f6b656e5f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f612c0f602183612b3d565b9150612c1a82612bb5565b604082019050919050565b5f6020820190508181035f830152612c3c81612c03565b9050919050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612c8382612c43565b9150612c8e83612c43565b9250828201905080821115612ca657612ca5612c4c565b5b92915050565b612cb581612c43565b82525050565b5f602082019050612cce5f830184612cac565b92915050565b5f81519050919050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612d0682612cd4565b612d108185612b3d565b9350612d20818560208601612cde565b612d2981612cec565b840191505092915050565b5f6020820190508181035f830152612d4c8184612cfc565b905092915050565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612d8582612d5c565b9050919050565b612d9581612d7b565b8114612d9f575f5ffd5b50565b5f81359050612db081612d8c565b92915050565b612dbf81612c43565b8114612dc9575f5ffd5b50565b5f81359050612dda81612db6565b92915050565b5f5f60408385031215612df657612df5612d54565b5b5f612e0385828601612da2565b9250506020612e1485828601612dcc565b9150509250929050565b5f8115159050919050565b612e3281612e1e565b82525050565b5f602082019050612e4b5f830184612e29565b92915050565b5f5f5f60608486031215612e6857612e67612d54565b5b5f612e7586828701612da2565b9350506020612e8686828701612da2565b9250506040612e9786828701612dcc565b9150509250925092565b5f60ff82169050919050565b612eb681612ea1565b82525050565b5f602082019050612ecf5f830184612ead565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f840112612ef657612ef5612ed5565b5b8235905067ffffffffffffffff811115612f1357612f12612ed9565b5b602083019150836020820283011115612f2f57612f2e612edd565b5b9250929050565b5f5f5f60408486031215612f4d57612f4c612d54565b5b5f84013567ffffffffffffffff811115612f6a57612f69612d58565b5b612f7686828701612ee1565b93509350506020612f8986828701612dcc565b9150509250925092565b5f60208284031215612fa857612fa7612d54565b5b5f612fb584828501612da2565b91505092915050565b612fc781612d7b565b82525050565b5f602082019050612fe05f830184612fbe565b92915050565b5f5f5f60608486031215612ffd57612ffc612d54565b5b5f61300a86828701612da2565b935050602061301b86828701612dcc565b925050604061302c86828701612dcc565b9150509250925092565b5f5f6040838503121561304c5761304b612d54565b5b5f61305985828601612da2565b925050602061306a85828601612da2565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806130b857607f821691505b6020821081036130cb576130ca613074565b5b50919050565b7f496e73756666696369656e7420616c6c6f77616e6365000000000000000000005f82015250565b5f613105601683612b3d565b9150613110826130d1565b602082019050919050565b5f6020820190508181035f830152613132816130f9565b9050919050565b5f61314382612c43565b915061314e83612c43565b925082820390508181111561316657613165612c4c565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f5f8201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b5f6131c6602183612b3d565b91506131d18261316c565b604082019050919050565b5f6020820190508181035f8301526131f3816131ba565b9050919050565b7f526563697069656e74206c6973742063616e6e6f7420626520656d70747900005f82015250565b5f61322e601e83612b3d565b9150613239826131fa565b602082019050919050565b5f6020820190508181035f83015261325b81613222565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f496e76616c696420726563697069656e74206164647265737320696e206c69735f8201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132e9602183612b3d565b91506132f48261328f565b604082019050919050565b5f6020820190508181035f830152613316816132dd565b9050919050565b5f82825260208201905092915050565b5f819050919050565b61333f81612d7b565b82525050565b5f6133508383613336565b60208301905092915050565b5f61336a6020840184612da2565b905092915050565b5f602082019050919050565b5f613389838561331d565b93506133948261332d565b805f5b858110156133cc576133a9828461335c565b6133b38882613345565b97506133be83613372565b925050600181019050613397565b5085925050509392505050565b5f6040820190508181035f8301526133f281858761337e565b90506134016020830184612cac565b949350505050565b5f8151905061341781612db6565b92915050565b5f6020828403121561343257613431612d54565b5b5f61343f84828501613409565b91505092915050565b7f4e6f20746f6b656e7320746f20776974686472617700000000000000000000005f82015250565b5f61347c601583612b3d565b915061348782613448565b602082019050919050565b5f6020820190508181035f8301526134a981613470565b9050919050565b5f6040820190506134c35f830185612fbe565b6134d06020830184612cac565b9392505050565b6134e081612e1e565b81146134ea575f5ffd5b50565b5f815190506134fb816134d7565b92915050565b5f6020828403121561351657613515612d54565b5b5f613523848285016134ed565b91505092915050565b7f4e6f20746f6b656e7320726563656976656400000000000000000000000000005f82015250565b5f613560601283612b3d565b915061356b8261352c565b602082019050919050565b5f6020820190508181035f83015261358d81613554565b9050919050565b7f496e76616c6964206164647265737300000000000000000000000000000000005f82015250565b5f6135c8600f83612b3d565b91506135d382613594565b602082019050919050565b5f6020820190508181035f8301526135f5816135bc565b9050919050565b7f496e76616c696420726563697069656e742061646472657373000000000000005f82015250565b5f613630601983612b3d565b915061363b826135fc565b602082019050919050565b5f6020820190508181035f83015261365d81613624565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e20300000005f82015250565b5f613698601d83612b3d565b91506136a382613664565b602082019050919050565b5f6020820190508181035f8301526136c58161368c565b9050919050565b7f496e76616c6964207573657220616464726573730000000000000000000000005f82015250565b5f613700601483612b3d565b915061370b826136cc565b602082019050919050565b5f6020820190508181035f83015261372d816136f4565b9050919050565b7f556e6c6f636b2074696d65206d75737420626520696e207468652066757475725f8201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b5f61378e602183612b3d565b915061379982613734565b604082019050919050565b5f6020820190508181035f8301526137bb81613782565b9050919050565b7f496e73756666696369656e742062616c616e636520746f206c6f636b000000005f82015250565b5f6137f6601c83612b3d565b9150613801826137c2565b602082019050919050565b5f6020820190508181035f830152613823816137ea565b9050919050565b5f60408201905061383d5f830185612cac565b61384a6020830184612cac565b9392505050565b7f4e6f206c6f636b656420746f6b656e73000000000000000000000000000000005f82015250565b5f613885601083612b3d565b915061389082613851565b602082019050919050565b5f6020820190508181035f8301526138b281613879565b9050919050565b7f546f6b656e7320617265207374696c6c206c6f636b65640000000000000000005f82015250565b5f6138ed601783612b3d565b91506138f8826138b9565b602082019050919050565b5f6020820190508181035f83015261391a816138e1565b9050919050565b7f4e6f2045544820746f20776974686472617700000000000000000000000000005f82015250565b5f613955601283612b3d565b915061396082613921565b602082019050919050565b5f6020820190508181035f83015261398281613949565b9050919050565b5f81905092915050565b50565b5f6139a15f83613989565b91506139ac82613993565b5f82019050919050565b5f6139c082613996565b9150819050919050565b7f455448207769746864726177616c206661696c656400000000000000000000005f82015250565b5f6139fe601583612b3d565b9150613a09826139ca565b602082019050919050565b5f6020820190508181035f830152613a2b816139f2565b9050919050565b7f496e76616c6964206f776e6572206164647265737300000000000000000000005f82015250565b5f613a66601583612b3d565b9150613a7182613a32565b602082019050919050565b5f6020820190508181035f830152613a9381613a5a565b9050919050565b7f496e76616c6964207370656e64657220616464726573730000000000000000005f82015250565b5f613ace601783612b3d565b9150613ad982613a9a565b602082019050919050565b5f6020820190508181035f830152613afb81613ac2565b9050919050565b7f496e76616c69642073656e6465722061646472657373000000000000000000005f82015250565b5f613b36601683612b3d565b9150613b4182613b02565b602082019050919050565b5f6020820190508181035f830152613b6381613b2a565b9050919050565b7f496e73756666696369656e7420756e6c6f636b65642062616c616e63650000005f82015250565b5f613b9e601d83612b3d565b9150613ba982613b6a565b602082019050919050565b5f6020820190508181035f830152613bcb81613b92565b9050919050565b5f613bdc82612c43565b9150613be783612c43565b9250828202613bf581612c43565b91508282048414831517613c0c57613c0b612c4c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613c4a82612c43565b9150613c5583612c43565b925082613c6557613c64613c13565b5b82820490509291505056fea2646970667358221220b9c34d0746c6a10e88506a6f33520cc2e55e73c5f23463e0eb5e11ecae805e1164736f6c634300081e0033

Deployed Bytecode

0x608060405260043610610184575f3560e01c806390d49b9d116100d0578063a9059cbb11610089578063dd62ed3e11610063578063dd62ed3e14610810578063e086e5ec1461084c578063ea2f0b3714610862578063f25f4b561461088a57610402565b8063a9059cbb14610782578063cb67f948146107be578063ccfff679146107e657610402565b806390d49b9d1461067a5780639533a384146106a257806395d89b41146106ca578063978bbdb9146106f45780639ae697bf1461071e578063a25983e51461075a57610402565b8063437823ec1161013d57806370a082311161011757806370a082311461059c57806373b2e80e146105d857806376b467b7146106145780638da5cb5b1461065057610402565b8063437823ec1461052457806349df728c1461054c578063647186441461057457610402565b806306fdde0314610406578063095ea7b31461043057806318160ddd1461046c57806323b872dd14610496578063313ce567146104d257806331f4fddb146104fc57610402565b36610402573273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ee90612b97565b60405180910390fd5b60085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610281576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027890612c25565b60405180910390fd5b5f678ac7230489e8000090508060035f82825461029e9190612c79565b925050819055508060045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546102f19190612c79565b92505081905550600160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff167f3f2c9d57c068687834f0de942a9babb9e5acab57d516d3480a3c16ee165a4273826040516103939190612cbb565b60405180910390a23373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516103f89190612cbb565b60405180910390a3005b5f5ffd5b348015610411575f5ffd5b5061041a6108b4565b6040516104279190612d34565b60405180910390f35b34801561043b575f5ffd5b5061045660048036038101906104519190612de0565b61093f565b6040516104639190612e38565b60405180910390f35b348015610477575f5ffd5b50610480610955565b60405161048d9190612cbb565b60405180910390f35b3480156104a1575f5ffd5b506104bc60048036038101906104b79190612e51565b61095e565b6040516104c99190612e38565b60405180910390f35b3480156104dd575f5ffd5b506104e6610a4b565b6040516104f39190612ebc565b60405180910390f35b348015610507575f5ffd5b50610522600480360381019061051d9190612f36565b610a5d565b005b34801561052f575f5ffd5b5061054a60048036038101906105459190612f93565b610d46565b005b348015610557575f5ffd5b50610572600480360381019061056d9190612f93565b610e2c565b005b34801561057f575f5ffd5b5061059a60048036038101906105959190612f93565b61106a565b005b3480156105a7575f5ffd5b506105c260048036038101906105bd9190612f93565b6113a3565b6040516105cf9190612cbb565b60405180910390f35b3480156105e3575f5ffd5b506105fe60048036038101906105f99190612f93565b6113e9565b60405161060b9190612e38565b60405180910390f35b34801561061f575f5ffd5b5061063a60048036038101906106359190612f93565b611406565b6040516106479190612cbb565b60405180910390f35b34801561065b575f5ffd5b5061066461141b565b6040516106719190612fcd565b60405180910390f35b348015610685575f5ffd5b506106a0600480360381019061069b9190612f93565b61143f565b005b3480156106ad575f5ffd5b506106c860048036038101906106c39190612de0565b61157e565b005b3480156106d5575f5ffd5b506106de6117de565b6040516106eb9190612d34565b60405180910390f35b3480156106ff575f5ffd5b5061070861186a565b6040516107159190612cbb565b60405180910390f35b348015610729575f5ffd5b50610744600480360381019061073f9190612f93565b61186f565b6040516107519190612cbb565b60405180910390f35b348015610765575f5ffd5b50610780600480360381019061077b9190612fe6565b611884565b005b34801561078d575f5ffd5b506107a860048036038101906107a39190612de0565b611c79565b6040516107b59190612e38565b60405180910390f35b3480156107c9575f5ffd5b506107e460048036038101906107df9190612f93565b611c8f565b005b3480156107f1575f5ffd5b506107fa611fb0565b6040516108079190612cbb565b60405180910390f35b34801561081b575f5ffd5b5061083660048036038101906108319190613036565b611fbc565b6040516108439190612cbb565b60405180910390f35b348015610857575f5ffd5b5061086061203e565b005b34801561086d575f5ffd5b5061088860048036038101906108839190612f93565b612215565b005b348015610895575f5ffd5b5061089e6122fa565b6040516108ab9190612fcd565b60405180910390f35b5f80546108c0906130a1565b80601f01602080910402602001604051908101604052809291908181526020018280546108ec906130a1565b80156109375780601f1061090e57610100808354040283529160200191610937565b820191905f5260205f20905b81548152906001019060200180831161091a57829003601f168201915b505050505081565b5f61094b33848461231f565b6001905092915050565b5f600354905090565b5f61096a8484846124e2565b5f60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a209061311b565b60405180910390fd5b610a3f85338584610a3a9190613139565b61231f565b60019150509392505050565b60025f9054906101000a900460ff1681565b7f00000000000000000000000018a6d8bde3343170309ff78cfa4b6109a2a7a90273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae2906131dc565b60405180910390fd5b5f8383905011610b30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2790613244565b60405180910390fd5b5f5f90505b83839050811015610d05575f848483818110610b5457610b53613262565b5b9050602002016020810190610b699190612f93565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610bd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd0906132ff565b60405180910390fd5b8260035f828254610bea9190612c79565b925050819055508260045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610c3d9190612c79565b925050819055508073ffffffffffffffffffffffffffffffffffffffff167f3f2c9d57c068687834f0de942a9babb9e5acab57d516d3480a3c16ee165a427384604051610c8a9190612cbb565b60405180910390a28073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610cef9190612cbb565b60405180910390a3508080600101915050610b35565b507fae8b6d66a2ab74619fc50c6fb8b4db954510ab396d9833e67edee09adbcfe5e8838383604051610d39939291906133d9565b60405180910390a1505050565b7f00000000000000000000000018a6d8bde3343170309ff78cfa4b6109a2a7a90273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcb906131dc565b60405180910390fd5b6001600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b7f00000000000000000000000018a6d8bde3343170309ff78cfa4b6109a2a7a90273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610eba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb1906131dc565b60405180910390fd5b5f8190505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610ef89190612fcd565b602060405180830381865afa158015610f13573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f37919061341d565b90505f8111610f7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7290613492565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb7f00000000000000000000000018a6d8bde3343170309ff78cfa4b6109a2a7a902836040518363ffffffff1660e01b8152600401610fd69291906134b0565b6020604051808303815f875af1158015610ff2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110169190613501565b508273ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b658260405161105d9190612cbb565b60405180910390a2505050565b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cf90612b97565b60405180910390fd5b60085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611162576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115990612c25565b60405180910390fd5b5f8190505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111a09190612fcd565b602060405180830381865afa1580156111bb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111df919061341d565b1161121f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121690613576565b60405180910390fd5b5f678ac7230489e8000090508060035f82825461123c9190612c79565b925050819055508060045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461128f9190612c79565b92505081905550600160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff167f3f2c9d57c068687834f0de942a9babb9e5acab57d516d3480a3c16ee165a4273826040516113319190612cbb565b60405180910390a23373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113969190612cbb565b60405180910390a3505050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6008602052805f5260405f205f915054906101000a900460ff1681565b6007602052805f5260405f205f915090505481565b7f00000000000000000000000018a6d8bde3343170309ff78cfa4b6109a2a7a90281565b7f00000000000000000000000018a6d8bde3343170309ff78cfa4b6109a2a7a90273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c4906131dc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361153b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611532906135de565b60405180910390fd5b8060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b7f00000000000000000000000018a6d8bde3343170309ff78cfa4b6109a2a7a90273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461160c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611603906131dc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361167a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167190613646565b60405180910390fd5b5f81116116bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b3906136ae565b60405180910390fd5b8060035f8282546116cd9190612c79565b925050819055508060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546117209190612c79565b925050819055508173ffffffffffffffffffffffffffffffffffffffff167f3f2c9d57c068687834f0de942a9babb9e5acab57d516d3480a3c16ee165a42738260405161176d9190612cbb565b60405180910390a28173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516117d29190612cbb565b60405180910390a35050565b600180546117eb906130a1565b80601f0160208091040260200160405190810160405280929190818152602001828054611817906130a1565b80156118625780601f1061183957610100808354040283529160200191611862565b820191905f5260205f20905b81548152906001019060200180831161184557829003601f168201915b505050505081565b600181565b6006602052805f5260405f205f915090505481565b7f00000000000000000000000018a6d8bde3343170309ff78cfa4b6109a2a7a90273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611912576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611909906131dc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611980576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197790613716565b60405180910390fd5b5f82116119c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b9906136ae565b60405180910390fd5b428111611a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fb906137a4565b60405180910390fd5b8160045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015611a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7b9061380c565b60405180910390fd5b8160065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611ad09190612c79565b925050819055508060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611b659190613139565b925050819055508160045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611bb89190612c79565b925050819055508273ffffffffffffffffffffffffffffffffffffffff167fd741e738a23fd18a03a26522320d9fc6cac1fed483e215ea9150fbc2fc43385d8383604051611c0792919061382a565b60405180910390a23073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c6c9190612cbb565b60405180910390a3505050565b5f611c853384846124e2565b6001905092915050565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411611d0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d059061389b565b60405180910390fd5b60075f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054421015611d8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8590613903565b60405180910390fd5b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611e9f9190613139565b925050819055508060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611ef29190612c79565b925050819055508173ffffffffffffffffffffffffffffffffffffffff167fe7b379c6c1fa169e9079c25e9143b127637eef8ec8c9d5c06ddb4ab3e119588882604051611f3f9190612cbb565b60405180910390a28173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fa49190612cbb565b60405180910390a35050565b678ac7230489e8000081565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b7f00000000000000000000000018a6d8bde3343170309ff78cfa4b6109a2a7a90273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146120cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c3906131dc565b60405180910390fd5b5f4790505f8111612112576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121099061396b565b60405180910390fd5b5f7f00000000000000000000000018a6d8bde3343170309ff78cfa4b6109a2a7a90273ffffffffffffffffffffffffffffffffffffffff1682604051612157906139b6565b5f6040518083038185875af1925050503d805f8114612191576040519150601f19603f3d011682016040523d82523d5f602084013e612196565b606091505b50509050806121da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d190613a14565b60405180910390fd5b7fa4e4b7031216965b449ed4f72176cb8d9fefc3ef42984463c7f4682481996dbf826040516122099190612cbb565b60405180910390a15050565b7f00000000000000000000000018a6d8bde3343170309ff78cfa4b6109a2a7a90273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146122a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229a906131dc565b60405180910390fd5b5f600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361238d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238490613a7c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f290613ae4565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516124d59190612cbb565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612550576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254790613b4c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036125be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b590613646565b60405180910390fd5b5f60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126459190613139565b9050600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806126e25750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561283b578181101561272a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272190613bb4565b60405180910390fd5b8160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546127769190613139565b925050819055508160045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546127c99190612c79565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161282d9190612cbb565b60405180910390a350612b38565b5f606460018461284b9190613bd2565b6128559190613c40565b90505f81846128649190613139565b9050838310156128a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a090613bb4565b60405180910390fd5b8360045f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546128f59190613139565b925050819055508160045f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546129699190612c79565b9250508190555060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516129ee9190612cbb565b60405180910390a360095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f26524f21d1c7ceb6cc1979fd1221fed9832c253689bed24158050d7450dcb35e84604051612a749190612cbb565b60405180910390a38060045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612ac89190612c79565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b2c9190612cbb565b60405180910390a35050505b505050565b5f82825260208201905092915050565b7f4f6e6c7920454f412063616e20636c61696d20746f6b656e73000000000000005f82015250565b5f612b81601983612b3d565b9150612b8c82612b4d565b602082019050919050565b5f6020820190508181035f830152612bae81612b75565b9050919050565b7f57616c6c65742068617320616c726561647920636c61696d656420746f6b656e5f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f612c0f602183612b3d565b9150612c1a82612bb5565b604082019050919050565b5f6020820190508181035f830152612c3c81612c03565b9050919050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612c8382612c43565b9150612c8e83612c43565b9250828201905080821115612ca657612ca5612c4c565b5b92915050565b612cb581612c43565b82525050565b5f602082019050612cce5f830184612cac565b92915050565b5f81519050919050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612d0682612cd4565b612d108185612b3d565b9350612d20818560208601612cde565b612d2981612cec565b840191505092915050565b5f6020820190508181035f830152612d4c8184612cfc565b905092915050565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612d8582612d5c565b9050919050565b612d9581612d7b565b8114612d9f575f5ffd5b50565b5f81359050612db081612d8c565b92915050565b612dbf81612c43565b8114612dc9575f5ffd5b50565b5f81359050612dda81612db6565b92915050565b5f5f60408385031215612df657612df5612d54565b5b5f612e0385828601612da2565b9250506020612e1485828601612dcc565b9150509250929050565b5f8115159050919050565b612e3281612e1e565b82525050565b5f602082019050612e4b5f830184612e29565b92915050565b5f5f5f60608486031215612e6857612e67612d54565b5b5f612e7586828701612da2565b9350506020612e8686828701612da2565b9250506040612e9786828701612dcc565b9150509250925092565b5f60ff82169050919050565b612eb681612ea1565b82525050565b5f602082019050612ecf5f830184612ead565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f840112612ef657612ef5612ed5565b5b8235905067ffffffffffffffff811115612f1357612f12612ed9565b5b602083019150836020820283011115612f2f57612f2e612edd565b5b9250929050565b5f5f5f60408486031215612f4d57612f4c612d54565b5b5f84013567ffffffffffffffff811115612f6a57612f69612d58565b5b612f7686828701612ee1565b93509350506020612f8986828701612dcc565b9150509250925092565b5f60208284031215612fa857612fa7612d54565b5b5f612fb584828501612da2565b91505092915050565b612fc781612d7b565b82525050565b5f602082019050612fe05f830184612fbe565b92915050565b5f5f5f60608486031215612ffd57612ffc612d54565b5b5f61300a86828701612da2565b935050602061301b86828701612dcc565b925050604061302c86828701612dcc565b9150509250925092565b5f5f6040838503121561304c5761304b612d54565b5b5f61305985828601612da2565b925050602061306a85828601612da2565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806130b857607f821691505b6020821081036130cb576130ca613074565b5b50919050565b7f496e73756666696369656e7420616c6c6f77616e6365000000000000000000005f82015250565b5f613105601683612b3d565b9150613110826130d1565b602082019050919050565b5f6020820190508181035f830152613132816130f9565b9050919050565b5f61314382612c43565b915061314e83612c43565b925082820390508181111561316657613165612c4c565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f5f8201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b5f6131c6602183612b3d565b91506131d18261316c565b604082019050919050565b5f6020820190508181035f8301526131f3816131ba565b9050919050565b7f526563697069656e74206c6973742063616e6e6f7420626520656d70747900005f82015250565b5f61322e601e83612b3d565b9150613239826131fa565b602082019050919050565b5f6020820190508181035f83015261325b81613222565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f496e76616c696420726563697069656e74206164647265737320696e206c69735f8201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132e9602183612b3d565b91506132f48261328f565b604082019050919050565b5f6020820190508181035f830152613316816132dd565b9050919050565b5f82825260208201905092915050565b5f819050919050565b61333f81612d7b565b82525050565b5f6133508383613336565b60208301905092915050565b5f61336a6020840184612da2565b905092915050565b5f602082019050919050565b5f613389838561331d565b93506133948261332d565b805f5b858110156133cc576133a9828461335c565b6133b38882613345565b97506133be83613372565b925050600181019050613397565b5085925050509392505050565b5f6040820190508181035f8301526133f281858761337e565b90506134016020830184612cac565b949350505050565b5f8151905061341781612db6565b92915050565b5f6020828403121561343257613431612d54565b5b5f61343f84828501613409565b91505092915050565b7f4e6f20746f6b656e7320746f20776974686472617700000000000000000000005f82015250565b5f61347c601583612b3d565b915061348782613448565b602082019050919050565b5f6020820190508181035f8301526134a981613470565b9050919050565b5f6040820190506134c35f830185612fbe565b6134d06020830184612cac565b9392505050565b6134e081612e1e565b81146134ea575f5ffd5b50565b5f815190506134fb816134d7565b92915050565b5f6020828403121561351657613515612d54565b5b5f613523848285016134ed565b91505092915050565b7f4e6f20746f6b656e7320726563656976656400000000000000000000000000005f82015250565b5f613560601283612b3d565b915061356b8261352c565b602082019050919050565b5f6020820190508181035f83015261358d81613554565b9050919050565b7f496e76616c6964206164647265737300000000000000000000000000000000005f82015250565b5f6135c8600f83612b3d565b91506135d382613594565b602082019050919050565b5f6020820190508181035f8301526135f5816135bc565b9050919050565b7f496e76616c696420726563697069656e742061646472657373000000000000005f82015250565b5f613630601983612b3d565b915061363b826135fc565b602082019050919050565b5f6020820190508181035f83015261365d81613624565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e20300000005f82015250565b5f613698601d83612b3d565b91506136a382613664565b602082019050919050565b5f6020820190508181035f8301526136c58161368c565b9050919050565b7f496e76616c6964207573657220616464726573730000000000000000000000005f82015250565b5f613700601483612b3d565b915061370b826136cc565b602082019050919050565b5f6020820190508181035f83015261372d816136f4565b9050919050565b7f556e6c6f636b2074696d65206d75737420626520696e207468652066757475725f8201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b5f61378e602183612b3d565b915061379982613734565b604082019050919050565b5f6020820190508181035f8301526137bb81613782565b9050919050565b7f496e73756666696369656e742062616c616e636520746f206c6f636b000000005f82015250565b5f6137f6601c83612b3d565b9150613801826137c2565b602082019050919050565b5f6020820190508181035f830152613823816137ea565b9050919050565b5f60408201905061383d5f830185612cac565b61384a6020830184612cac565b9392505050565b7f4e6f206c6f636b656420746f6b656e73000000000000000000000000000000005f82015250565b5f613885601083612b3d565b915061389082613851565b602082019050919050565b5f6020820190508181035f8301526138b281613879565b9050919050565b7f546f6b656e7320617265207374696c6c206c6f636b65640000000000000000005f82015250565b5f6138ed601783612b3d565b91506138f8826138b9565b602082019050919050565b5f6020820190508181035f83015261391a816138e1565b9050919050565b7f4e6f2045544820746f20776974686472617700000000000000000000000000005f82015250565b5f613955601283612b3d565b915061396082613921565b602082019050919050565b5f6020820190508181035f83015261398281613949565b9050919050565b5f81905092915050565b50565b5f6139a15f83613989565b91506139ac82613993565b5f82019050919050565b5f6139c082613996565b9150819050919050565b7f455448207769746864726177616c206661696c656400000000000000000000005f82015250565b5f6139fe601583612b3d565b9150613a09826139ca565b602082019050919050565b5f6020820190508181035f830152613a2b816139f2565b9050919050565b7f496e76616c6964206f776e6572206164647265737300000000000000000000005f82015250565b5f613a66601583612b3d565b9150613a7182613a32565b602082019050919050565b5f6020820190508181035f830152613a9381613a5a565b9050919050565b7f496e76616c6964207370656e64657220616464726573730000000000000000005f82015250565b5f613ace601783612b3d565b9150613ad982613a9a565b602082019050919050565b5f6020820190508181035f830152613afb81613ac2565b9050919050565b7f496e76616c69642073656e6465722061646472657373000000000000000000005f82015250565b5f613b36601683612b3d565b9150613b4182613b02565b602082019050919050565b5f6020820190508181035f830152613b6381613b2a565b9050919050565b7f496e73756666696369656e7420756e6c6f636b65642062616c616e63650000005f82015250565b5f613b9e601d83612b3d565b9150613ba982613b6a565b602082019050919050565b5f6020820190508181035f830152613bcb81613b92565b9050919050565b5f613bdc82612c43565b9150613be783612c43565b9250828202613bf581612c43565b91508282048414831517613c0c57613c0b612c4c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613c4a82612c43565b9150613c5583612c43565b925082613c6557613c64613c13565b5b82820490509291505056fea2646970667358221220b9c34d0746c6a10e88506a6f33520cc2e55e73c5f23463e0eb5e11ecae805e1164736f6c634300081e0033

Deployed Bytecode Sourcemap

738:8651:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2061:9;2047:23;;:10;:23;;;2039:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;8500:10:::1;:22;8511:10;8500:22;;;;;;;;;;;;;;;;;;;;;;;;;8499:23;8491:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;8571:14;970:11;8571:33;;8631:6;8615:12;;:22;;;;;;;:::i;:::-;;;;;;;;8673:6;8648:9;:21;8658:10;8648:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;8715:4;8690:10;:22;8701:10;8690:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;8748:10;8735:32;;;8760:6;8735:32;;;;;;:::i;:::-;;;;;;;;8804:10;8783:40;;8800:1;8783:40;;;8816:6;8783:40;;;;;;:::i;:::-;;;;;;;;8480:351:::0;738:8651;;;;775:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3116:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2547:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3285:390;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;827:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5590:643;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5309:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7802:324;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8839:547;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2657:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1223:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1171:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;890:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5136:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6241:393;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;800:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1305:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1116:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6642:656;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2786:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7306:488;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;927:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2961:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8134:303;;;;;;;;;;;;;:::i;:::-;;5430:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1274:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;775:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3116:161::-;3193:4;3210:37;3219:10;3231:7;3240:6;3210:8;:37::i;:::-;3265:4;3258:11;;3116:161;;;;:::o;2547:102::-;2602:7;2629:12;;2622:19;;2547:102;:::o;3285:390::-;3385:4;3402:36;3412:6;3420:9;3431:6;3402:9;:36::i;:::-;3449:24;3476:11;:19;3488:6;3476:19;;;;;;;;;;;;;;;:31;3496:10;3476:31;;;;;;;;;;;;;;;;3449:58;;3546:6;3526:16;:26;;3518:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;3590:55;3599:6;3607:10;3638:6;3619:16;:25;;;;:::i;:::-;3590:8;:55::i;:::-;3663:4;3656:11;;;3285:390;;;;;:::o;827:21::-;;;;;;;;;;;;;:::o;5590:643::-;1938:5;1924:19;;:10;:19;;;1916:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;5721:1:::1;5701:10;;:17;;:21;5693:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;5783:6;5792:1;5783:10;;5778:395;5799:10;;:17;;5795:1;:21;5778:395;;;5838:17;5858:10;;5869:1;5858:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;5838:33;;5915:1;5894:23;;:9;:23;;::::0;5886:69:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6000:6;5984:12;;:22;;;;;;;:::i;:::-;;;;;;;;6045:6;6021:9;:20;6031:9;6021:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;6084:9;6071:31;;;6095:6;6071:31;;;;;;:::i;:::-;;;;;;;;6143:9;6122:39;;6139:1;6122:39;;;6154:6;6122:39;;;;;;:::i;:::-;;;;;;;;5823:350;5818:3;;;;;;;5778:395;;;;6188:37;6206:10;;6218:6;6188:37;;;;;;;;:::i;:::-;;;;;;;;5590:643:::0;;;:::o;5309:113::-;1938:5;1924:19;;:10;:19;;;1916:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;5410:4:::1;5380:18;:27;5399:7;5380:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;5309:113:::0;:::o;7802:324::-;1938:5;1924:19;;:10;:19;;;1916:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;7878:12:::1;7900;7878:35;;7924:15;7942:5;:15;;;7966:4;7942:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7924:48;;8001:1;7991:7;:11;7983:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;8039:5;:14;;;8054:5;8061:7;8039:30;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8096:12;8085:33;;;8110:7;8085:33;;;;;;:::i;:::-;;;;;;;;7867:259;;7802:324:::0;:::o;8839:547::-;2061:9;2047:23;;:10;:23;;;2039:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;8933:10:::1;:22;8944:10;8933:22;;;;;;;;;;;;;;;;;;;;;;;;;8932:23;8924:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;9004:12;9026;9004:35;;9091:1;9058:5;:15;;;9082:4;9058:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:34;9050:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;9126:14;970:11;9126:33;;9186:6;9170:12;;:22;;;;;;;:::i;:::-;;;;;;;;9228:6;9203:9;:21;9213:10;9203:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;9270:4;9245:10;:22;9256:10;9245:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;9303:10;9290:32;;;9315:6;9290:32;;;;;;:::i;:::-;;;;;;;;9359:10;9338:40;;9355:1;9338:40;;;9371:6;9338:40;;;;;;:::i;:::-;;;;;;;;8913:473;;8839:547:::0;:::o;2657:121::-;2725:7;2752:9;:18;2762:7;2752:18;;;;;;;;;;;;;;;;2745:25;;2657:121;;;:::o;1223:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;1171:45::-;;;;;;;;;;;;;;;;;:::o;890:30::-;;;:::o;5136:165::-;1938:5;1924:19;;:10;:19;;;1916:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;5238:1:::1;5216:24;;:10;:24;;::::0;5208:52:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;5283:10;5271:9;;:22;;;;;;;;;;;;;;;;;;5136:165:::0;:::o;6241:393::-;1938:5;1924:19;;:10;:19;;;1916:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;6355:1:::1;6334:23;;:9;:23;;::::0;6326:61:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6415:1;6406:6;:10;6398:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;6477:6;6461:12;;:22;;;;;;;:::i;:::-;;;;;;;;6518:6;6494:9;:20;6504:9;6494:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;6553:9;6540:31;;;6564:6;6540:31;;;;;;:::i;:::-;;;;;;;;6608:9;6587:39;;6604:1;6587:39;;;6619:6;6587:39;;;;;;:::i;:::-;;;;;;;;6241:393:::0;;:::o;800:20::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1305:35::-;1339:1;1305:35;:::o;1116:48::-;;;;;;;;;;;;;;;;;:::o;6642:656::-;1938:5;1924:19;;:10;:19;;;1916:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;6767:1:::1;6751:18;;:4;:18;;::::0;6743:51:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6822:1;6813:6;:10;6805:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;6890:15;6876:11;:29;6868:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;6981:6;6962:9;:15;6972:4;6962:15;;;;;;;;;;;;;;;;:25;;6954:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;7054:6;7031:13;:19;7045:4;7031:19;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;7090:11;7071:10;:16;7082:4;7071:16;;;;;;;;;;;;;;;:30;;;;7131:6;7112:9;:15;7122:4;7112:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;7176:6;7148:9;:24;7166:4;7148:24;;;;;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;;;;;7211:4;7198:39;;;7217:6;7225:11;7198:39;;;;;;;:::i;:::-;;;;;;;;7276:4;7253:37;;7262:4;7253:37;;;7283:6;7253:37;;;;;;:::i;:::-;;;;;;;;6642:656:::0;;;:::o;2786:167::-;2866:4;2883:40;2893:10;2905:9;2916:6;2883:9;:40::i;:::-;2941:4;2934:11;;2786:167;;;;:::o;7306:488::-;7392:1;7370:13;:19;7384:4;7370:19;;;;;;;;;;;;;;;;:23;7362:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;7452:10;:16;7463:4;7452:16;;;;;;;;;;;;;;;;7433:15;:35;;7425:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7507:14;7524:13;:19;7538:4;7524:19;;;;;;;;;;;;;;;;7507:36;;7576:1;7554:13;:19;7568:4;7554:19;;;;;;;;;;;;;;;:23;;;;7607:1;7588:10;:16;7599:4;7588:16;;;;;;;;;;;;;;;:20;;;;7647:6;7619:9;:24;7637:4;7619:24;;;;;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;;;;;7683:6;7664:9;:15;7674:4;7664:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;7720:4;7705:28;;;7726:6;7705:28;;;;;;:::i;:::-;;;;;;;;7773:4;7749:37;;7766:4;7749:37;;;7779:6;7749:37;;;;;;:::i;:::-;;;;;;;;7351:443;7306:488;:::o;927:54::-;970:11;927:54;:::o;2961:147::-;3045:7;3072:11;:19;3084:6;3072:19;;;;;;;;;;;;;;;:28;3092:7;3072:28;;;;;;;;;;;;;;;;3065:35;;2961:147;;;;:::o;8134:303::-;1938:5;1924:19;;:10;:19;;;1916:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;8187:15:::1;8205:21;8187:39;;8255:1;8245:7;:11;8237:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;8291:12;8309:5;:10;;8327:7;8309:30;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8290:49;;;8358:7;8350:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;8407:22;8421:7;8407:22;;;;;;:::i;:::-;;;;;;;;8176:261;;8134:303::o:0;5430:112::-;1938:5;1924:19;;:10;:19;;;1916:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;5529:5:::1;5499:18;:27;5518:7;5499:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;5430:112:::0;:::o;1274:24::-;;;;;;;;;;;;;:::o;4810:314::-;4923:1;4905:20;;:6;:20;;;4897:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;4989:1;4970:21;;:7;:21;;;4962:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;5061:6;5030:11;:19;5042:6;5030:19;;;;;;;;;;;;;;;:28;5050:7;5030:28;;;;;;;;;;;;;;;:37;;;;5100:7;5083:33;;5092:6;5083:33;;;5109:6;5083:33;;;;;;:::i;:::-;;;;;;;;4810:314;;;:::o;3683:1115::-;3799:1;3781:20;;:6;:20;;;3773:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;3868:1;3847:23;;:9;:23;;;3839:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;3913:24;3960:13;:21;3974:6;3960:21;;;;;;;;;;;;;;;;3940:9;:17;3950:6;3940:17;;;;;;;;;;;;;;;;:41;;;;:::i;:::-;3913:68;;3998:18;:26;4017:6;3998:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;4028:18;:29;4047:9;4028:29;;;;;;;;;;;;;;;;;;;;;;;;;3998:59;3994:323;;;4102:6;4082:16;:26;;4074:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4178:6;4157:9;:17;4167:6;4157:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;4223:6;4199:9;:20;4209:9;4199:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;4266:9;4249:35;;4258:6;4249:35;;;4277:6;4249:35;;;;;;:::i;:::-;;;;;;;;4299:7;;;3994:323;4329:11;4364:3;1339:1;4344:6;:16;;;;:::i;:::-;4343:24;;;;:::i;:::-;4329:38;;4378:22;4412:3;4403:6;:12;;;;:::i;:::-;4378:37;;4456:6;4436:16;:26;;4428:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4528:6;4507:9;:17;4517:6;4507:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;4579:3;4555:9;:20;4565:9;;;;;;;;;;;4555:20;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;4615:9;;;;;;;;;;;4598:32;;4607:6;4598:32;;;4626:3;4598:32;;;;;;:::i;:::-;;;;;;;;4665:9;;;;;;;;;;;4646:34;;4657:6;4646:34;;;4676:3;4646:34;;;;;;:::i;:::-;;;;;;;;4717:14;4693:9;:20;4703:9;4693:20;;;;;;;;;;;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;4764:9;4747:43;;4756:6;4747:43;;;4775:14;4747:43;;;;;;:::i;:::-;;;;;;;;3762:1036;;;3683:1115;;;;:::o;7:169:1:-;91:11;125:6;120:3;113:19;165:4;160:3;156:14;141:29;;7:169;;;;:::o;182:175::-;322:27;318:1;310:6;306:14;299:51;182:175;:::o;363:366::-;505:3;526:67;590:2;585:3;526:67;:::i;:::-;519:74;;602:93;691:3;602:93;:::i;:::-;720:2;715:3;711:12;704:19;;363:366;;;:::o;735:419::-;901:4;939:2;928:9;924:18;916:26;;988:9;982:4;978:20;974:1;963:9;959:17;952:47;1016:131;1142:4;1016:131;:::i;:::-;1008:139;;735:419;;;:::o;1160:220::-;1300:34;1296:1;1288:6;1284:14;1277:58;1369:3;1364:2;1356:6;1352:15;1345:28;1160:220;:::o;1386:366::-;1528:3;1549:67;1613:2;1608:3;1549:67;:::i;:::-;1542:74;;1625:93;1714:3;1625:93;:::i;:::-;1743:2;1738:3;1734:12;1727:19;;1386:366;;;:::o;1758:419::-;1924:4;1962:2;1951:9;1947:18;1939:26;;2011:9;2005:4;2001:20;1997:1;1986:9;1982:17;1975:47;2039:131;2165:4;2039:131;:::i;:::-;2031:139;;1758:419;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:180::-;2314:77;2311:1;2304:88;2411:4;2408:1;2401:15;2435:4;2432:1;2425:15;2452:191;2492:3;2511:20;2529:1;2511:20;:::i;:::-;2506:25;;2545:20;2563:1;2545:20;:::i;:::-;2540:25;;2588:1;2585;2581:9;2574:16;;2609:3;2606:1;2603:10;2600:36;;;2616:18;;:::i;:::-;2600:36;2452:191;;;;:::o;2649:118::-;2736:24;2754:5;2736:24;:::i;:::-;2731:3;2724:37;2649:118;;:::o;2773:222::-;2866:4;2904:2;2893:9;2889:18;2881:26;;2917:71;2985:1;2974:9;2970:17;2961:6;2917:71;:::i;:::-;2773:222;;;;:::o;3001:99::-;3053:6;3087:5;3081:12;3071:22;;3001:99;;;:::o;3106:139::-;3195:6;3190:3;3185;3179:23;3236:1;3227:6;3222:3;3218:16;3211:27;3106:139;;;:::o;3251:102::-;3292:6;3343:2;3339:7;3334:2;3327:5;3323:14;3319:28;3309:38;;3251:102;;;:::o;3359:377::-;3447:3;3475:39;3508:5;3475:39;:::i;:::-;3530:71;3594:6;3589:3;3530:71;:::i;:::-;3523:78;;3610:65;3668:6;3663:3;3656:4;3649:5;3645:16;3610:65;:::i;:::-;3700:29;3722:6;3700:29;:::i;:::-;3695:3;3691:39;3684:46;;3451:285;3359:377;;;;:::o;3742:313::-;3855:4;3893:2;3882:9;3878:18;3870:26;;3942:9;3936:4;3932:20;3928:1;3917:9;3913:17;3906:47;3970:78;4043:4;4034:6;3970:78;:::i;:::-;3962:86;;3742:313;;;;:::o;4142:117::-;4251:1;4248;4241:12;4265:117;4374:1;4371;4364:12;4388:126;4425:7;4465:42;4458:5;4454:54;4443:65;;4388:126;;;:::o;4520:96::-;4557:7;4586:24;4604:5;4586:24;:::i;:::-;4575:35;;4520:96;;;:::o;4622:122::-;4695:24;4713:5;4695:24;:::i;:::-;4688:5;4685:35;4675:63;;4734:1;4731;4724:12;4675:63;4622:122;:::o;4750:139::-;4796:5;4834:6;4821:20;4812:29;;4850:33;4877:5;4850:33;:::i;:::-;4750:139;;;;:::o;4895:122::-;4968:24;4986:5;4968:24;:::i;:::-;4961:5;4958:35;4948:63;;5007:1;5004;4997:12;4948:63;4895:122;:::o;5023:139::-;5069:5;5107:6;5094:20;5085:29;;5123:33;5150:5;5123:33;:::i;:::-;5023:139;;;;:::o;5168:474::-;5236:6;5244;5293:2;5281:9;5272:7;5268:23;5264:32;5261:119;;;5299:79;;:::i;:::-;5261:119;5419:1;5444:53;5489:7;5480:6;5469:9;5465:22;5444:53;:::i;:::-;5434:63;;5390:117;5546:2;5572:53;5617:7;5608:6;5597:9;5593:22;5572:53;:::i;:::-;5562:63;;5517:118;5168:474;;;;;:::o;5648:90::-;5682:7;5725:5;5718:13;5711:21;5700:32;;5648:90;;;:::o;5744:109::-;5825:21;5840:5;5825:21;:::i;:::-;5820:3;5813:34;5744:109;;:::o;5859:210::-;5946:4;5984:2;5973:9;5969:18;5961:26;;5997:65;6059:1;6048:9;6044:17;6035:6;5997:65;:::i;:::-;5859:210;;;;:::o;6075:619::-;6152:6;6160;6168;6217:2;6205:9;6196:7;6192:23;6188:32;6185:119;;;6223:79;;:::i;:::-;6185:119;6343:1;6368:53;6413:7;6404:6;6393:9;6389:22;6368:53;:::i;:::-;6358:63;;6314:117;6470:2;6496:53;6541:7;6532:6;6521:9;6517:22;6496:53;:::i;:::-;6486:63;;6441:118;6598:2;6624:53;6669:7;6660:6;6649:9;6645:22;6624:53;:::i;:::-;6614:63;;6569:118;6075:619;;;;;:::o;6700:86::-;6735:7;6775:4;6768:5;6764:16;6753:27;;6700:86;;;:::o;6792:112::-;6875:22;6891:5;6875:22;:::i;:::-;6870:3;6863:35;6792:112;;:::o;6910:214::-;6999:4;7037:2;7026:9;7022:18;7014:26;;7050:67;7114:1;7103:9;7099:17;7090:6;7050:67;:::i;:::-;6910:214;;;;:::o;7130:117::-;7239:1;7236;7229:12;7253:117;7362:1;7359;7352:12;7376:117;7485:1;7482;7475:12;7516:568;7589:8;7599:6;7649:3;7642:4;7634:6;7630:17;7626:27;7616:122;;7657:79;;:::i;:::-;7616:122;7770:6;7757:20;7747:30;;7800:18;7792:6;7789:30;7786:117;;;7822:79;;:::i;:::-;7786:117;7936:4;7928:6;7924:17;7912:29;;7990:3;7982:4;7974:6;7970:17;7960:8;7956:32;7953:41;7950:128;;;7997:79;;:::i;:::-;7950:128;7516:568;;;;;:::o;8090:704::-;8185:6;8193;8201;8250:2;8238:9;8229:7;8225:23;8221:32;8218:119;;;8256:79;;:::i;:::-;8218:119;8404:1;8393:9;8389:17;8376:31;8434:18;8426:6;8423:30;8420:117;;;8456:79;;:::i;:::-;8420:117;8569:80;8641:7;8632:6;8621:9;8617:22;8569:80;:::i;:::-;8551:98;;;;8347:312;8698:2;8724:53;8769:7;8760:6;8749:9;8745:22;8724:53;:::i;:::-;8714:63;;8669:118;8090:704;;;;;:::o;8800:329::-;8859:6;8908:2;8896:9;8887:7;8883:23;8879:32;8876:119;;;8914:79;;:::i;:::-;8876:119;9034:1;9059:53;9104:7;9095:6;9084:9;9080:22;9059:53;:::i;:::-;9049:63;;9005:117;8800:329;;;;:::o;9135:118::-;9222:24;9240:5;9222:24;:::i;:::-;9217:3;9210:37;9135:118;;:::o;9259:222::-;9352:4;9390:2;9379:9;9375:18;9367:26;;9403:71;9471:1;9460:9;9456:17;9447:6;9403:71;:::i;:::-;9259:222;;;;:::o;9487:619::-;9564:6;9572;9580;9629:2;9617:9;9608:7;9604:23;9600:32;9597:119;;;9635:79;;:::i;:::-;9597:119;9755:1;9780:53;9825:7;9816:6;9805:9;9801:22;9780:53;:::i;:::-;9770:63;;9726:117;9882:2;9908:53;9953:7;9944:6;9933:9;9929:22;9908:53;:::i;:::-;9898:63;;9853:118;10010:2;10036:53;10081:7;10072:6;10061:9;10057:22;10036:53;:::i;:::-;10026:63;;9981:118;9487:619;;;;;:::o;10112:474::-;10180:6;10188;10237:2;10225:9;10216:7;10212:23;10208:32;10205:119;;;10243:79;;:::i;:::-;10205:119;10363:1;10388:53;10433:7;10424:6;10413:9;10409:22;10388:53;:::i;:::-;10378:63;;10334:117;10490:2;10516:53;10561:7;10552:6;10541:9;10537:22;10516:53;:::i;:::-;10506:63;;10461:118;10112:474;;;;;:::o;10592:180::-;10640:77;10637:1;10630:88;10737:4;10734:1;10727:15;10761:4;10758:1;10751:15;10778:320;10822:6;10859:1;10853:4;10849:12;10839:22;;10906:1;10900:4;10896:12;10927:18;10917:81;;10983:4;10975:6;10971:17;10961:27;;10917:81;11045:2;11037:6;11034:14;11014:18;11011:38;11008:84;;11064:18;;:::i;:::-;11008:84;10829:269;10778:320;;;:::o;11104:172::-;11244:24;11240:1;11232:6;11228:14;11221:48;11104:172;:::o;11282:366::-;11424:3;11445:67;11509:2;11504:3;11445:67;:::i;:::-;11438:74;;11521:93;11610:3;11521:93;:::i;:::-;11639:2;11634:3;11630:12;11623:19;;11282:366;;;:::o;11654:419::-;11820:4;11858:2;11847:9;11843:18;11835:26;;11907:9;11901:4;11897:20;11893:1;11882:9;11878:17;11871:47;11935:131;12061:4;11935:131;:::i;:::-;11927:139;;11654:419;;;:::o;12079:194::-;12119:4;12139:20;12157:1;12139:20;:::i;:::-;12134:25;;12173:20;12191:1;12173:20;:::i;:::-;12168:25;;12217:1;12214;12210:9;12202:17;;12241:1;12235:4;12232:11;12229:37;;;12246:18;;:::i;:::-;12229:37;12079:194;;;;:::o;12279:220::-;12419:34;12415:1;12407:6;12403:14;12396:58;12488:3;12483:2;12475:6;12471:15;12464:28;12279:220;:::o;12505:366::-;12647:3;12668:67;12732:2;12727:3;12668:67;:::i;:::-;12661:74;;12744:93;12833:3;12744:93;:::i;:::-;12862:2;12857:3;12853:12;12846:19;;12505:366;;;:::o;12877:419::-;13043:4;13081:2;13070:9;13066:18;13058:26;;13130:9;13124:4;13120:20;13116:1;13105:9;13101:17;13094:47;13158:131;13284:4;13158:131;:::i;:::-;13150:139;;12877:419;;;:::o;13302:180::-;13442:32;13438:1;13430:6;13426:14;13419:56;13302:180;:::o;13488:366::-;13630:3;13651:67;13715:2;13710:3;13651:67;:::i;:::-;13644:74;;13727:93;13816:3;13727:93;:::i;:::-;13845:2;13840:3;13836:12;13829:19;;13488:366;;;:::o;13860:419::-;14026:4;14064:2;14053:9;14049:18;14041:26;;14113:9;14107:4;14103:20;14099:1;14088:9;14084:17;14077:47;14141:131;14267:4;14141:131;:::i;:::-;14133:139;;13860:419;;;:::o;14285:180::-;14333:77;14330:1;14323:88;14430:4;14427:1;14420:15;14454:4;14451:1;14444:15;14471:220;14611:34;14607:1;14599:6;14595:14;14588:58;14680:3;14675:2;14667:6;14663:15;14656:28;14471:220;:::o;14697:366::-;14839:3;14860:67;14924:2;14919:3;14860:67;:::i;:::-;14853:74;;14936:93;15025:3;14936:93;:::i;:::-;15054:2;15049:3;15045:12;15038:19;;14697:366;;;:::o;15069:419::-;15235:4;15273:2;15262:9;15258:18;15250:26;;15322:9;15316:4;15312:20;15308:1;15297:9;15293:17;15286:47;15350:131;15476:4;15350:131;:::i;:::-;15342:139;;15069:419;;;:::o;15494:184::-;15593:11;15627:6;15622:3;15615:19;15667:4;15662:3;15658:14;15643:29;;15494:184;;;;:::o;15684:102::-;15753:4;15776:3;15768:11;;15684:102;;;:::o;15792:108::-;15869:24;15887:5;15869:24;:::i;:::-;15864:3;15857:37;15792:108;;:::o;15906:179::-;15975:10;15996:46;16038:3;16030:6;15996:46;:::i;:::-;16074:4;16069:3;16065:14;16051:28;;15906:179;;;;:::o;16091:122::-;16143:5;16168:39;16203:2;16198:3;16194:12;16189:3;16168:39;:::i;:::-;16159:48;;16091:122;;;;:::o;16219:115::-;16291:4;16323;16318:3;16314:14;16306:22;;16219:115;;;:::o;16370:699::-;16499:3;16522:86;16601:6;16596:3;16522:86;:::i;:::-;16515:93;;16632:58;16684:5;16632:58;:::i;:::-;16713:7;16744:1;16729:315;16754:6;16751:1;16748:13;16729:315;;;16824:42;16859:6;16850:7;16824:42;:::i;:::-;16886:63;16945:3;16930:13;16886:63;:::i;:::-;16879:70;;16972:62;17027:6;16972:62;:::i;:::-;16962:72;;16789:255;16776:1;16773;16769:9;16764:14;;16729:315;;;16733:14;17060:3;17053:10;;16504:565;;16370:699;;;;;:::o;17075:503::-;17256:4;17294:2;17283:9;17279:18;17271:26;;17343:9;17337:4;17333:20;17329:1;17318:9;17314:17;17307:47;17371:118;17484:4;17475:6;17467;17371:118;:::i;:::-;17363:126;;17499:72;17567:2;17556:9;17552:18;17543:6;17499:72;:::i;:::-;17075:503;;;;;;:::o;17584:143::-;17641:5;17672:6;17666:13;17657:22;;17688:33;17715:5;17688:33;:::i;:::-;17584:143;;;;:::o;17733:351::-;17803:6;17852:2;17840:9;17831:7;17827:23;17823:32;17820:119;;;17858:79;;:::i;:::-;17820:119;17978:1;18003:64;18059:7;18050:6;18039:9;18035:22;18003:64;:::i;:::-;17993:74;;17949:128;17733:351;;;;:::o;18090:171::-;18230:23;18226:1;18218:6;18214:14;18207:47;18090:171;:::o;18267:366::-;18409:3;18430:67;18494:2;18489:3;18430:67;:::i;:::-;18423:74;;18506:93;18595:3;18506:93;:::i;:::-;18624:2;18619:3;18615:12;18608:19;;18267:366;;;:::o;18639:419::-;18805:4;18843:2;18832:9;18828:18;18820:26;;18892:9;18886:4;18882:20;18878:1;18867:9;18863:17;18856:47;18920:131;19046:4;18920:131;:::i;:::-;18912:139;;18639:419;;;:::o;19064:332::-;19185:4;19223:2;19212:9;19208:18;19200:26;;19236:71;19304:1;19293:9;19289:17;19280:6;19236:71;:::i;:::-;19317:72;19385:2;19374:9;19370:18;19361:6;19317:72;:::i;:::-;19064:332;;;;;:::o;19402:116::-;19472:21;19487:5;19472:21;:::i;:::-;19465:5;19462:32;19452:60;;19508:1;19505;19498:12;19452:60;19402:116;:::o;19524:137::-;19578:5;19609:6;19603:13;19594:22;;19625:30;19649:5;19625:30;:::i;:::-;19524:137;;;;:::o;19667:345::-;19734:6;19783:2;19771:9;19762:7;19758:23;19754:32;19751:119;;;19789:79;;:::i;:::-;19751:119;19909:1;19934:61;19987:7;19978:6;19967:9;19963:22;19934:61;:::i;:::-;19924:71;;19880:125;19667:345;;;;:::o;20018:168::-;20158:20;20154:1;20146:6;20142:14;20135:44;20018:168;:::o;20192:366::-;20334:3;20355:67;20419:2;20414:3;20355:67;:::i;:::-;20348:74;;20431:93;20520:3;20431:93;:::i;:::-;20549:2;20544:3;20540:12;20533:19;;20192:366;;;:::o;20564:419::-;20730:4;20768:2;20757:9;20753:18;20745:26;;20817:9;20811:4;20807:20;20803:1;20792:9;20788:17;20781:47;20845:131;20971:4;20845:131;:::i;:::-;20837:139;;20564:419;;;:::o;20989:165::-;21129:17;21125:1;21117:6;21113:14;21106:41;20989:165;:::o;21160:366::-;21302:3;21323:67;21387:2;21382:3;21323:67;:::i;:::-;21316:74;;21399:93;21488:3;21399:93;:::i;:::-;21517:2;21512:3;21508:12;21501:19;;21160:366;;;:::o;21532:419::-;21698:4;21736:2;21725:9;21721:18;21713:26;;21785:9;21779:4;21775:20;21771:1;21760:9;21756:17;21749:47;21813:131;21939:4;21813:131;:::i;:::-;21805:139;;21532:419;;;:::o;21957:175::-;22097:27;22093:1;22085:6;22081:14;22074:51;21957:175;:::o;22138:366::-;22280:3;22301:67;22365:2;22360:3;22301:67;:::i;:::-;22294:74;;22377:93;22466:3;22377:93;:::i;:::-;22495:2;22490:3;22486:12;22479:19;;22138:366;;;:::o;22510:419::-;22676:4;22714:2;22703:9;22699:18;22691:26;;22763:9;22757:4;22753:20;22749:1;22738:9;22734:17;22727:47;22791:131;22917:4;22791:131;:::i;:::-;22783:139;;22510:419;;;:::o;22935:179::-;23075:31;23071:1;23063:6;23059:14;23052:55;22935:179;:::o;23120:366::-;23262:3;23283:67;23347:2;23342:3;23283:67;:::i;:::-;23276:74;;23359:93;23448:3;23359:93;:::i;:::-;23477:2;23472:3;23468:12;23461:19;;23120:366;;;:::o;23492:419::-;23658:4;23696:2;23685:9;23681:18;23673:26;;23745:9;23739:4;23735:20;23731:1;23720:9;23716:17;23709:47;23773:131;23899:4;23773:131;:::i;:::-;23765:139;;23492:419;;;:::o;23917:170::-;24057:22;24053:1;24045:6;24041:14;24034:46;23917:170;:::o;24093:366::-;24235:3;24256:67;24320:2;24315:3;24256:67;:::i;:::-;24249:74;;24332:93;24421:3;24332:93;:::i;:::-;24450:2;24445:3;24441:12;24434:19;;24093:366;;;:::o;24465:419::-;24631:4;24669:2;24658:9;24654:18;24646:26;;24718:9;24712:4;24708:20;24704:1;24693:9;24689:17;24682:47;24746:131;24872:4;24746:131;:::i;:::-;24738:139;;24465:419;;;:::o;24890:220::-;25030:34;25026:1;25018:6;25014:14;25007:58;25099:3;25094:2;25086:6;25082:15;25075:28;24890:220;:::o;25116:366::-;25258:3;25279:67;25343:2;25338:3;25279:67;:::i;:::-;25272:74;;25355:93;25444:3;25355:93;:::i;:::-;25473:2;25468:3;25464:12;25457:19;;25116:366;;;:::o;25488:419::-;25654:4;25692:2;25681:9;25677:18;25669:26;;25741:9;25735:4;25731:20;25727:1;25716:9;25712:17;25705:47;25769:131;25895:4;25769:131;:::i;:::-;25761:139;;25488:419;;;:::o;25913:178::-;26053:30;26049:1;26041:6;26037:14;26030:54;25913:178;:::o;26097:366::-;26239:3;26260:67;26324:2;26319:3;26260:67;:::i;:::-;26253:74;;26336:93;26425:3;26336:93;:::i;:::-;26454:2;26449:3;26445:12;26438:19;;26097:366;;;:::o;26469:419::-;26635:4;26673:2;26662:9;26658:18;26650:26;;26722:9;26716:4;26712:20;26708:1;26697:9;26693:17;26686:47;26750:131;26876:4;26750:131;:::i;:::-;26742:139;;26469:419;;;:::o;26894:332::-;27015:4;27053:2;27042:9;27038:18;27030:26;;27066:71;27134:1;27123:9;27119:17;27110:6;27066:71;:::i;:::-;27147:72;27215:2;27204:9;27200:18;27191:6;27147:72;:::i;:::-;26894:332;;;;;:::o;27232:166::-;27372:18;27368:1;27360:6;27356:14;27349:42;27232:166;:::o;27404:366::-;27546:3;27567:67;27631:2;27626:3;27567:67;:::i;:::-;27560:74;;27643:93;27732:3;27643:93;:::i;:::-;27761:2;27756:3;27752:12;27745:19;;27404:366;;;:::o;27776:419::-;27942:4;27980:2;27969:9;27965:18;27957:26;;28029:9;28023:4;28019:20;28015:1;28004:9;28000:17;27993:47;28057:131;28183:4;28057:131;:::i;:::-;28049:139;;27776:419;;;:::o;28201:173::-;28341:25;28337:1;28329:6;28325:14;28318:49;28201:173;:::o;28380:366::-;28522:3;28543:67;28607:2;28602:3;28543:67;:::i;:::-;28536:74;;28619:93;28708:3;28619:93;:::i;:::-;28737:2;28732:3;28728:12;28721:19;;28380:366;;;:::o;28752:419::-;28918:4;28956:2;28945:9;28941:18;28933:26;;29005:9;28999:4;28995:20;28991:1;28980:9;28976:17;28969:47;29033:131;29159:4;29033:131;:::i;:::-;29025:139;;28752:419;;;:::o;29177:168::-;29317:20;29313:1;29305:6;29301:14;29294:44;29177:168;:::o;29351:366::-;29493:3;29514:67;29578:2;29573:3;29514:67;:::i;:::-;29507:74;;29590:93;29679:3;29590:93;:::i;:::-;29708:2;29703:3;29699:12;29692:19;;29351:366;;;:::o;29723:419::-;29889:4;29927:2;29916:9;29912:18;29904:26;;29976:9;29970:4;29966:20;29962:1;29951:9;29947:17;29940:47;30004:131;30130:4;30004:131;:::i;:::-;29996:139;;29723:419;;;:::o;30148:147::-;30249:11;30286:3;30271:18;;30148:147;;;;:::o;30301:114::-;;:::o;30421:398::-;30580:3;30601:83;30682:1;30677:3;30601:83;:::i;:::-;30594:90;;30693:93;30782:3;30693:93;:::i;:::-;30811:1;30806:3;30802:11;30795:18;;30421:398;;;:::o;30825:379::-;31009:3;31031:147;31174:3;31031:147;:::i;:::-;31024:154;;31195:3;31188:10;;30825:379;;;:::o;31210:171::-;31350:23;31346:1;31338:6;31334:14;31327:47;31210:171;:::o;31387:366::-;31529:3;31550:67;31614:2;31609:3;31550:67;:::i;:::-;31543:74;;31626:93;31715:3;31626:93;:::i;:::-;31744:2;31739:3;31735:12;31728:19;;31387:366;;;:::o;31759:419::-;31925:4;31963:2;31952:9;31948:18;31940:26;;32012:9;32006:4;32002:20;31998:1;31987:9;31983:17;31976:47;32040:131;32166:4;32040:131;:::i;:::-;32032:139;;31759:419;;;:::o;32184:171::-;32324:23;32320:1;32312:6;32308:14;32301:47;32184:171;:::o;32361:366::-;32503:3;32524:67;32588:2;32583:3;32524:67;:::i;:::-;32517:74;;32600:93;32689:3;32600:93;:::i;:::-;32718:2;32713:3;32709:12;32702:19;;32361:366;;;:::o;32733:419::-;32899:4;32937:2;32926:9;32922:18;32914:26;;32986:9;32980:4;32976:20;32972:1;32961:9;32957:17;32950:47;33014:131;33140:4;33014:131;:::i;:::-;33006:139;;32733:419;;;:::o;33158:173::-;33298:25;33294:1;33286:6;33282:14;33275:49;33158:173;:::o;33337:366::-;33479:3;33500:67;33564:2;33559:3;33500:67;:::i;:::-;33493:74;;33576:93;33665:3;33576:93;:::i;:::-;33694:2;33689:3;33685:12;33678:19;;33337:366;;;:::o;33709:419::-;33875:4;33913:2;33902:9;33898:18;33890:26;;33962:9;33956:4;33952:20;33948:1;33937:9;33933:17;33926:47;33990:131;34116:4;33990:131;:::i;:::-;33982:139;;33709:419;;;:::o;34134:172::-;34274:24;34270:1;34262:6;34258:14;34251:48;34134:172;:::o;34312:366::-;34454:3;34475:67;34539:2;34534:3;34475:67;:::i;:::-;34468:74;;34551:93;34640:3;34551:93;:::i;:::-;34669:2;34664:3;34660:12;34653:19;;34312:366;;;:::o;34684:419::-;34850:4;34888:2;34877:9;34873:18;34865:26;;34937:9;34931:4;34927:20;34923:1;34912:9;34908:17;34901:47;34965:131;35091:4;34965:131;:::i;:::-;34957:139;;34684:419;;;:::o;35109:179::-;35249:31;35245:1;35237:6;35233:14;35226:55;35109:179;:::o;35294:366::-;35436:3;35457:67;35521:2;35516:3;35457:67;:::i;:::-;35450:74;;35533:93;35622:3;35533:93;:::i;:::-;35651:2;35646:3;35642:12;35635:19;;35294:366;;;:::o;35666:419::-;35832:4;35870:2;35859:9;35855:18;35847:26;;35919:9;35913:4;35909:20;35905:1;35894:9;35890:17;35883:47;35947:131;36073:4;35947:131;:::i;:::-;35939:139;;35666:419;;;:::o;36091:410::-;36131:7;36154:20;36172:1;36154:20;:::i;:::-;36149:25;;36188:20;36206:1;36188:20;:::i;:::-;36183:25;;36243:1;36240;36236:9;36265:30;36283:11;36265:30;:::i;:::-;36254:41;;36444:1;36435:7;36431:15;36428:1;36425:22;36405:1;36398:9;36378:83;36355:139;;36474:18;;:::i;:::-;36355:139;36139:362;36091:410;;;;:::o;36507:180::-;36555:77;36552:1;36545:88;36652:4;36649:1;36642:15;36676:4;36673:1;36666:15;36693:185;36733:1;36750:20;36768:1;36750:20;:::i;:::-;36745:25;;36784:20;36802:1;36784:20;:::i;:::-;36779:25;;36823:1;36813:35;;36828:18;;:::i;:::-;36813:35;36870:1;36867;36863:9;36858:14;;36693:185;;;;:::o

Swarm Source

ipfs://b9c34d0746c6a10e88506a6f33520cc2e55e73c5f23463e0eb5e11ecae805e11

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.