ETH Price: $2,991.36 (-2.21%)
Gas: 2 Gwei

Token

UniBombV3 (UBOMB)
 

Overview

Max Total Supply

7,321,948.275066223938021022 UBOMB

Holders

322 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
9,378.483281600591405862 UBOMB

Value
$0.00
0xb7654a48ab7d151fd77feae7a147750a754f5284
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
UniBombV3

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-06-20
*/

//                          _
//                        /   \
//                       .     \
//                      /       \
//                 .BBBBB;     . | .
//               BBBBBBBBB      \|/
//              ;BBIBBBBb     `--+--'
//        .=YRBBBBBBBBBBB       /|\
//      =RBBBBBBBBBBBBBB;      . . .
//    ;BBBR=VBBBBBBBBBBBV.
//   tBBR::VBBBBBBBBBBBBBB:      _   _        ______                 _
//  tBBt ;BBBBBBBBBBBBBBBBB.    | | | |       | ___ \               | |
// ;BBY ;BBBBBBBBBBBBBBBBBBV    | | | |_ __  ♥| |_/ / ___  _ __ ___ | |_
// XBB .BBBBBBBBBBBBBBBBBBBB:   | | | |  _ \| | ___ \/ _ \|  _   _ \|  _ \
// BBI +BBBBBBBBBBBBBBBBBBBBi   | |_| | | | | | |_/ / (_) | | | | | | |_) |
//.BB= XBBBBBBBBBBBBBBBBBBBBY    \___/|_| |_|_\____/ \___/|_| |_| |_|____/
// BBt YBBBBBBBBBBBBBBBBBBBBi
// VBB +BBBBBBBBBBBBBBBBBBBB:
// ;BB+ BBBBBBBBBBBBBBBBBBBR     ██╗   ██╗██████╗   Created by Dorf and Mr Fahrenheit
//  tBBVBBBBBBBBBBBBBBBBBBB.     ██║   ██║╚════██╗
//   tBBBBBBBBBBBBBBBBBBBB:      ██║   ██║ █████╔╝    https://unibomb.it/ - created by Karl
//    ;BBBBBBBBBBBBBBBBBY        ╚██╗ ██╔╝ ╚═══██╗    https://t.me/UniBomb
//      +BBBBBBBBBBBBBY:          ╚████╔╝ ██████╔╝    https://discord.gg/Jmsbnsx
//        :+YRBBBRVt;
//
//-------------------------------------------------------------------------
//
//Contributions:
//~~~~~~~~~~ MrBlobby - UniPower, Proof of Liquidity concept:
// https://etherscan.io/address/0xF2f9A7e93f845b3ce154EfbeB64fB9346FCCE509#code
//
//~~~ Dorf - UniBomb V1 and V2, V3 migration
//~~~ Mr Fahrenheit - Most of V3 contract
//~~~ Zoma - Auditing
//~~~ Phil - Design
//~~~ V2 Community - Design and feedback

pragma solidity ^0.5.17;

interface ERC20 {
    function totalSupply() external view returns (uint);
    function balanceOf(address who) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function transfer(address to, uint value) external returns (bool);
    function approve(address spender, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint value);
    event Approval(address indexed owner, address indexed spender, uint value);
}

interface ApproveAndCallFallBack {
    function receiveApproval(address from, uint tokens, address token, bytes calldata data) external;
}

interface IUniswapV2Pair {
    function sync() external;
}

contract UniBombV3 is ERC20 {
    using SafeMath for uint;

    modifier initialPhaseOver() {
        require(now > initialPhaseEnd, 'Not yet');
        _;
    }

    modifier unclaimedRewards(address addr) {
        uint rewards = calculateRewards(addr);
        if (rewards > 0) {
            claimRewards(addr, rewards);
        }
        _;
    }

    modifier burnCheck() {
        if (lastPoolBalance != balanceOf(pool)) {
            burnUpdate();
        }
        _;
    }

    struct User {
        uint balance;
        mapping (address => uint) allowed;
        uint allTimeRewards;
        uint stakeBalance;
        int stakePayouts;
    }

    mapping (address => User) internal user;

    address pool;

    // ERC20 stuff
    string public constant name  = "UniBombV3";
    string public constant symbol = "UBOMB";
    uint8 public constant decimals = 18;

    // v2
    ERC20 private ubombv2;

    // burn stuff
    uint lastBurnTime;
    uint toBurn;
    uint day = 86400; // 86400 seconds in one day
    uint burnRate = 3; // 3% burn per day
    uint _totalSupply;
    uint startingSupply = 10000000 * (10 ** 18); // 10 million supply
    uint totalBurned;

    uint lastPoolBalance;

    uint constant private BURN_REWARD = 10;

    // staking stuff
    uint constant private STAKE_FEE = 10;
    uint constant private MAG = 2**64;

    uint internal initialPhaseEnd;
    uint internal totalStaked;
    uint internal divsPerShare;
    bool internal initialized;

    event Stake(address user, uint staked);
    event Unstake(address user, uint unstaked);
    event PoolBurn(address user, uint burned, uint newSupply, uint newPool);

    function() external payable {
        revert('No');
    }

    // For UI

    function allInfoFor(address addr) public view returns (uint, uint, uint, uint, uint, uint, uint, uint, uint, uint) {
        User memory _user = user[addr];
        return (
            _user.balance,
            _user.stakeBalance,
            calculateRewards(addr),
            _user.allTimeRewards,
            user[pool].balance,
            _totalSupply,
            totalStaked,
            totalBurned,
            toBurn,
            lastBurnTime
        );
    }

    // Migration

    function initialize(uint _initialPhaseEnd, uint _poolSupply, address _ubombv2, address _poolAddr) external {
        require(!initialized);
        initialPhaseEnd = _initialPhaseEnd;
        user[msg.sender].balance = _poolSupply;
        _totalSupply = _poolSupply;
        ubombv2 = ERC20(_ubombv2);
        totalBurned = startingSupply - ubombv2.totalSupply();
        pool = _poolAddr;
        lastBurnTime = now;
        initialized = true;
    }

    function receiveApproval(address from, uint tokens, address token, bytes memory data) public {
        require(ubombv2.transferFrom(from, address(this), tokens), 'Transfer failed');
        user[from].balance += tokens;
        _totalSupply += tokens;
        emit Transfer(address(0), msg.sender, tokens);
    }

    // Staking functions

    function distribute(uint amount) public {
        require(totalStaked > 0, 'Stake required');
        User memory _user = user[msg.sender];
        require(_user.balance >= amount, 'Not enough minerals');
        _user.balance = _user.balance.sub(amount);
        user[msg.sender] = _user;

        divsPerShare = divsPerShare.add((amount * MAG) / totalStaked);
    }

    function stake(address addr, uint amount) public unclaimedRewards(msg.sender) {
        require(user[msg.sender].balance >= amount, 'Not enough minerals');
        require(addr != pool, 'Pool cannot stake');
        User memory _user = user[addr];

        if (now < initialPhaseEnd) {
            totalStaked += amount;
            _user.stakeBalance += amount;
            _user.stakePayouts += (int)(divsPerShare.mul(amount));
            user[addr] = _user;
            user[msg.sender].balance = user[msg.sender].balance.sub(amount);
            return;
        }

        uint fee = (amount * STAKE_FEE) / 100;
        uint newStake = amount.sub(fee);
        totalStaked += newStake;
        uint userFeeShare = fee - (fee - (newStake * ((fee * MAG) / totalStaked)));
        divsPerShare = divsPerShare.add((fee * MAG) / totalStaked);

        _user.stakeBalance += newStake;
        _user.stakePayouts += (int)(divsPerShare.mul(newStake).sub(userFeeShare));

        user[addr] = _user;
        user[msg.sender].balance = user[msg.sender].balance.sub(amount);

        emit Stake(addr, amount);
    }

    function unstake(uint amount) public initialPhaseOver {
        address addr = msg.sender;
        User memory _user = user[addr];
        require(amount <= _user.stakeBalance, 'Not enough staked');

        uint fee = (amount * STAKE_FEE) / 100;
        uint received = amount.sub(fee);

        totalStaked = totalStaked.sub(amount);
        _user.stakeBalance -= amount;
        _user.stakePayouts -= (int)(divsPerShare.mul(amount));
        _user.balance += received;

        divsPerShare = divsPerShare.add((fee * MAG).div(totalStaked));

        user[addr] = _user;

        emit Unstake(addr, amount);
    }

    function calculateRewards(address addr) internal view returns (uint) {
        User memory _user = user[addr];
        return (uint)((int)(divsPerShare.mul(_user.stakeBalance)) - _user.stakePayouts) / MAG;
    }

    function claimRewards(address addr, uint rewards) internal {
        User memory _user = user[addr];
        _user.balance += rewards;
        _user.allTimeRewards += rewards;
        _user.stakePayouts += (int)(rewards * MAG);
        user[addr] = _user;
    }

    // ERC20 functions

    function totalSupply() public view returns (uint) {
       return _totalSupply.sub(toBurn + getBurnAmount());
    }

    function balanceOf(address addr) public view returns (uint) {
        return user[addr].balance + calculateRewards(addr);
    }

    function allowance(address addr, address spender) public view returns (uint) {
        return user[addr].allowed[spender];
    }

    function transfer(address to, uint value) public unclaimedRewards(msg.sender) burnCheck returns (bool) {
        User memory _user = user[msg.sender];
        require(_user.balance >= value, 'Not enough minerals');

        _user.balance = _user.balance.sub(value);
        user[msg.sender] = _user;
        user[to].balance += value;

        emit Transfer(msg.sender, to, value);
        return true;
    }

    function approve(address spender, uint value) public returns (bool) {
        user[msg.sender].allowed[spender] = value;
        emit Approval(msg.sender, spender, value);
        return true;
    }

    function approveAndCall(address spender, uint tokens, bytes calldata data) external unclaimedRewards(msg.sender) returns (bool) {
        user[msg.sender].allowed[spender] = tokens;
        emit Approval(msg.sender, spender, tokens);
        ApproveAndCallFallBack(spender).receiveApproval(msg.sender, tokens, address(this), data);
        return true;
    }

    function transferFrom(address from, address to, uint value) public unclaimedRewards(from) burnCheck returns (bool) {
        User storage _user = user[from];
        require(_user.balance >= value, 'Not enough minerals');
        require(_user.allowed[msg.sender] >= value, 'You require more vespene gas');

        _user.balance = _user.balance.sub(value);
        _user.allowed[msg.sender] = _user.allowed[msg.sender].sub(value);
        user[from] = _user;
        user[to].balance += value;

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

    function increaseAllowance(address spender, uint addedValue) public returns (bool) {
        user[msg.sender].allowed[spender] = user[msg.sender].allowed[spender].add(addedValue);
        emit Approval(msg.sender, spender, user[msg.sender].allowed[spender]);
        return true;
    }

    function decreaseAllowance(address spender, uint subtractedValue) public returns (bool) {
        user[msg.sender].allowed[spender] = user[msg.sender].allowed[spender].sub(subtractedValue);
        emit Approval(msg.sender, spender, user[msg.sender].allowed[spender]);
        return true;
    }

    // burn functions

    function burnPool() external {
        require(totalStaked > 0, 'Stake required');
        uint _burnAmount = getBurnAmount() + toBurn;
        require(_burnAmount >= 10, "Nothing to burn...");
        lastBurnTime = now;
        toBurn = 0;

        uint _userReward = _burnAmount * 10 / 100;
        uint _stakeReward = _burnAmount * 20 / 100;
        uint _finalBurn = _burnAmount - _userReward - _stakeReward;

        _totalSupply = _totalSupply.sub(_finalBurn);
        totalBurned += _finalBurn;
        user[msg.sender].balance += _userReward;
        divsPerShare = divsPerShare.add((_stakeReward * MAG) / totalStaked);
        user[pool].balance = user[pool].balance.sub(_finalBurn);

        IUniswapV2Pair(pool).sync();

        emit PoolBurn(msg.sender, _burnAmount, _totalSupply, balanceOf(pool));
    }

    function getBurnAmount() public view returns (uint) {
        uint _time = now - lastBurnTime;
        uint _poolAmount = balanceOf(pool);
        uint _burnAmount = (_poolAmount * burnRate * _time) / (day * 100);
        return _burnAmount;
    }

    function burnUpdate() internal {
        toBurn += getBurnAmount();
        lastBurnTime = now;
        lastPoolBalance = balanceOf(pool);
    }
}

library SafeMath {
    function mul(uint a, uint b) internal pure returns (uint) {
        if (a == 0) {
            return 0;
        }
        uint c = a * b;
        require(c / a == b, "safemath mul");
        return c;
    }
    function div(uint a, uint b) internal pure returns (uint) {
        uint c = a / b;
        return c;
    }
    function sub(uint a, uint b) internal pure returns (uint) {
        require(b <= a, "safemath sub");
        return a - b;
    }
    function add(uint a, uint b) internal pure returns (uint) {
        uint c = a + b;
        require(c >= a, "safemath add");
        return c;
    }
}

Contract Security Audit

Contract ABI

[{"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":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"burned","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSupply","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newPool","type":"uint256"}],"name":"PoolBurn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"staked","type":"uint256"}],"name":"Stake","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"unstaked","type":"uint256"}],"name":"Unstake","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":true,"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"allInfoFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"burnPool","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"distribute","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getBurnAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_initialPhaseEnd","type":"uint256"},{"internalType":"uint256","name":"_poolSupply","type":"uint256"},{"internalType":"address","name":"_ubombv2","type":"address"},{"internalType":"address","name":"_poolAddr","type":"address"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"},{"internalType":"address","name":"token","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"receiveApproval","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unstake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040526201518060055560036006556a084595161401484a00000060085534801561002b57600080fd5b506132368061003b6000396000f3fe60806040526004361061011f5760003560e01c80638f4ffcb1116100a0578063a9059cbb11610064578063a9059cbb14610822578063adc9772e14610895578063cae9ca51146108f0578063d0c5c585146109b8578063dd62ed3e146109e35761011f565b80638f4ffcb1146105bb57806391c05b0b146106cd57806395d89b4114610708578063a457c2d714610798578063a54b2a731461080b5761011f565b80632e17de78116100e75780632e17de78146103d3578063313ce5671461040e578063395093511461043f57806357f6b812146104b257806370a08231146105565761011f565b8063019e27291461018d57806306fdde0314610212578063095ea7b3146102a257806318160ddd1461031557806323b872dd14610340575b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260028152602001807f4e6f00000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b34801561019957600080fd5b50610210600480360360808110156101b057600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a68565b005b34801561021e57600080fd5b50610227610c2d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561026757808201518184015260208101905061024c565b50505050905090810190601f1680156102945780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102ae57600080fd5b506102fb600480360360408110156102c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c66565b604051808215151515815260200191505060405180910390f35b34801561032157600080fd5b5061032a610d5a565b6040518082815260200191505060405180910390f35b34801561034c57600080fd5b506103b96004803603606081101561036357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d81565b604051808215151515815260200191505060405180910390f35b3480156103df57600080fd5b5061040c600480360360208110156103f657600080fd5b8101908080359060200190929190505050611138565b005b34801561041a57600080fd5b50610423611447565b604051808260ff1660ff16815260200191505060405180910390f35b34801561044b57600080fd5b506104986004803603604081101561046257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061144c565b604051808215151515815260200191505060405180910390f35b3480156104be57600080fd5b50610501600480360360208110156104d557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061164e565b604051808b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019a505050505050505050505060405180910390f35b34801561056257600080fd5b506105a56004803603602081101561057957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611785565b6040518082815260200191505060405180910390f35b3480156105c757600080fd5b506106cb600480360360808110156105de57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561064557600080fd5b82018360208201111561065757600080fd5b8035906020019184600183028401116401000000008311171561067957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506117da565b005b3480156106d957600080fd5b50610706600480360360208110156106f057600080fd5b8101908080359060200190929190505050611a2f565b005b34801561071457600080fd5b5061071d611c5b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561075d578082015181840152602081019050610742565b50505050905090810190601f16801561078a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156107a457600080fd5b506107f1600480360360408110156107bb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c94565b604051808215151515815260200191505060405180910390f35b34801561081757600080fd5b50610820611e96565b005b34801561082e57600080fd5b5061087b6004803603604081101561084557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612288565b604051808215151515815260200191505060405180910390f35b3480156108a157600080fd5b506108ee600480360360408110156108b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612528565b005b3480156108fc57600080fd5b5061099e6004803603606081101561091357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561095a57600080fd5b82018360208201111561096c57600080fd5b8035906020019184600183028401116401000000008311171561098e57600080fd5b9091929391929390505050612ae1565b604051808215151515815260200191505060405180910390f35b3480156109c457600080fd5b506109cd612d02565b6040518082815260200191505060405180910390f35b3480156109ef57600080fd5b50610a5260048036036040811015610a0657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d5d565b6040518082815260200191505060405180910390f35b600e60009054906101000a900460ff1615610a8257600080fd5b83600b81905550826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508260078190555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b7f57600080fd5b505afa158015610b93573d6000803e3d6000fd5b505050506040513d6020811015610ba957600080fd5b81019080805190602001909291905050506008540360098190555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003819055506001600e60006101000a81548160ff02191690831515021790555050505050565b6040518060400160405280600981526020017f556e69426f6d625633000000000000000000000000000000000000000000000081525081565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000610d7c610d67612d02565b60045401600754612de690919063ffffffff16565b905090565b6000836000610d8f82612e69565b90506000811115610da557610da48282612f1f565b5b610dd0600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611785565b600a5414610de157610de0613044565b5b60008060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508481600001541015610e9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4e6f7420656e6f756768206d696e6572616c730000000000000000000000000081525060200191505060405180910390fd5b848160010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610f54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f596f752072657175697265206d6f72652076657370656e65206761730000000081525060200191505060405180910390fd5b610f6b858260000154612de690919063ffffffff16565b8160000181905550610fc7858260010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612de690919063ffffffff16565b8160010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201548160000155600282015481600201556003820154816003015560048201548160040155905050846000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600082825401925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3600193505050509392505050565b600b5442116111af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260078152602001807f4e6f74207965740000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60003390506111bc6131d9565b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806080016040529081600082015481526020016002820154815260200160038201548152602001600482015481525050905080604001518311156112a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4e6f7420656e6f756768207374616b656400000000000000000000000000000081525060200191505060405180910390fd5b60006064600a8502816112b857fe5b04905060006112d08286612de690919063ffffffff16565b90506112e785600c54612de690919063ffffffff16565b600c819055508483604001818151039150818152505061131285600d5461309590919063ffffffff16565b83606001818151039150818152505080836000018181510191508181525050611365611354600c5468010000000000000000850261313890919063ffffffff16565b600d5461315190919063ffffffff16565b600d81905550826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816002015560408201518160030155606082015181600401559050507f85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd8486604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050505050565b601281565b60006114df826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461315190919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000806000806000806000806000806116656131d9565b6000808d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060800160405290816000820154815260200160028201548152602001600382015481526020016004820154815250509050806000015181604001516116eb8e612e69565b8360200151600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600754600c546009546004546003549a509a509a509a509a509a509a509a509a509a50509193959799509193959799565b600061179082612e69565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154019050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd8530866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156118b757600080fd5b505af11580156118cb573d6000803e3d6000fd5b505050506040513d60208110156118e157600080fd5b8101908080519060200190929190505050611964576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f5472616e73666572206661696c6564000000000000000000000000000000000081525060200191505060405180910390fd5b826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282540192505081905550826007600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a350505050565b6000600c5411611aa7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f5374616b6520726571756972656400000000000000000000000000000000000081525060200191505060405180910390fd5b611aaf6131d9565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180608001604052908160008201548152602001600282015481526020016003820154815260200160048201548152505090508181600001511015611b9c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4e6f7420656e6f756768206d696e6572616c730000000000000000000000000081525060200191505060405180910390fd5b611bb3828260000151612de690919063ffffffff16565b816000018181525050806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000155602082015181600201556040820151816003015560608201518160040155905050611c51600c5468010000000000000000840281611c3f57fe5b04600d5461315190919063ffffffff16565b600d819055505050565b6040518060400160405280600581526020017f55424f4d4200000000000000000000000000000000000000000000000000000081525081565b6000611d27826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612de690919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600c5411611f0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f5374616b6520726571756972656400000000000000000000000000000000000081525060200191505060405180910390fd5b6000600454611f1b612d02565b019050600a811015611f95576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f7468696e6720746f206275726e2e2e2e000000000000000000000000000081525060200191505060405180910390fd5b42600381905550600060048190555060006064600a830281611fb357fe5b049050600060646014840281611fc557fe5b049050600081838503039050611fe681600754612de690919063ffffffff16565b60078190555080600960008282540192505081905550826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282540192505081905550612076600c546801000000000000000084028161206457fe5b04600d5461315190919063ffffffff16565b600d819055506120f281600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154612de690919063ffffffff16565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156121c357600080fd5b505af11580156121d7573d6000803e3d6000fd5b505050507f831805c5fd38642fe4d745d844a17f0a7ca5b24bd5937f5d4b39d141438690ea338560075461222c600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611785565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200194505050505060405180910390a150505050565b600033600061229682612e69565b905060008111156122ac576122ab8282612f1f565b5b6122d7600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611785565b600a54146122e8576122e7613044565b5b6122f06131d9565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806080016040529081600082015481526020016002820154815260200160038201548152602001600482015481525050905084816000015110156123dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4e6f7420656e6f756768206d696e6572616c730000000000000000000000000081525060200191505060405180910390fd5b6123f4858260000151612de690919063ffffffff16565b816000018181525050806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000155602082015181600201556040820151816003015560608201518160040155905050846000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600082825401925050819055508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a36001935050505092915050565b33600061253482612e69565b9050600081111561254a576125498282612f1f565b5b826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541015612601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4e6f7420656e6f756768206d696e6572616c730000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156126c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f506f6f6c2063616e6e6f74207374616b6500000000000000000000000000000081525060200191505060405180910390fd5b6126cd6131d9565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060800160405290816000820154815260200160028201548152602001600382015481526020016004820154815250509050600b544210156128975783600c600082825401925050819055508381604001818151019150818152505061277f84600d5461309590919063ffffffff16565b816060018181510191508181525050806000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160020155604082015181600301556060820151816004015590505061284c846000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154612de690919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555050612adb565b60006064600a8602816128a657fe5b04905060006128be8287612de690919063ffffffff16565b905080600c600082825401925050819055506000600c54680100000000000000008402816128e857fe5b04820283038303905061291c600c546801000000000000000085028161290a57fe5b04600d5461315190919063ffffffff16565b600d81905550818460400181815101915081815250506129598161294b84600d5461309590919063ffffffff16565b612de690919063ffffffff16565b846060018181510191508181525050836000808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000155602082015181600201556040820151816003015560608201518160040155905050612a26876000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154612de690919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055507febedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a8888604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1505050505b50505050565b6000336000612aef82612e69565b90506000811115612b0557612b048282612f1f565b5b856000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925886040518082815260200191505060405180910390a38673ffffffffffffffffffffffffffffffffffffffff16638f4ffcb133883089896040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015612cdc57600080fd5b505af1158015612cf0573d6000803e3d6000fd5b50505050600192505050949350505050565b600080600354420390506000612d39600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611785565b905060006064600554028360065484020281612d5157fe5b04905080935050505090565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600082821115612e5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f736166656d61746820737562000000000000000000000000000000000000000081525060200191505060405180910390fd5b818303905092915050565b6000612e736131d9565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060800160405290816000820154815260200160028201548152602001600382015481526020016004820154815250509050680100000000000000008160600151612f0e8360400151600d5461309590919063ffffffff16565b0381612f1657fe5b04915050919050565b612f276131d9565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180608001604052908160008201548152602001600282015481526020016003820154815260200160048201548152505090508181600001818151019150818152505081816020018181510191508181525050680100000000000000008202816060018181510191508181525050806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000155602082015181600201556040820151816003015560608201518160040155905050505050565b61304c612d02565b6004600082825401925050819055504260038190555061308d600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611785565b600a81905550565b6000808314156130a85760009050613132565b60008284029050828482816130b957fe5b041461312d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f736166656d617468206d756c000000000000000000000000000000000000000081525060200191505060405180910390fd5b809150505b92915050565b60008082848161314457fe5b0490508091505092915050565b6000808284019050838110156131cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f736166656d61746820616464000000000000000000000000000000000000000081525060200191505060405180910390fd5b8091505092915050565b604051806080016040528060008152602001600081526020016000815260200160008152509056fea265627a7a72315820b90ce3024a3024c01a6e7fd10b14a6a152a678698ea757754a3fab085031f5fc64736f6c63430005110032

Deployed Bytecode

0x60806040526004361061011f5760003560e01c80638f4ffcb1116100a0578063a9059cbb11610064578063a9059cbb14610822578063adc9772e14610895578063cae9ca51146108f0578063d0c5c585146109b8578063dd62ed3e146109e35761011f565b80638f4ffcb1146105bb57806391c05b0b146106cd57806395d89b4114610708578063a457c2d714610798578063a54b2a731461080b5761011f565b80632e17de78116100e75780632e17de78146103d3578063313ce5671461040e578063395093511461043f57806357f6b812146104b257806370a08231146105565761011f565b8063019e27291461018d57806306fdde0314610212578063095ea7b3146102a257806318160ddd1461031557806323b872dd14610340575b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260028152602001807f4e6f00000000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b34801561019957600080fd5b50610210600480360360808110156101b057600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a68565b005b34801561021e57600080fd5b50610227610c2d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561026757808201518184015260208101905061024c565b50505050905090810190601f1680156102945780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102ae57600080fd5b506102fb600480360360408110156102c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c66565b604051808215151515815260200191505060405180910390f35b34801561032157600080fd5b5061032a610d5a565b6040518082815260200191505060405180910390f35b34801561034c57600080fd5b506103b96004803603606081101561036357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d81565b604051808215151515815260200191505060405180910390f35b3480156103df57600080fd5b5061040c600480360360208110156103f657600080fd5b8101908080359060200190929190505050611138565b005b34801561041a57600080fd5b50610423611447565b604051808260ff1660ff16815260200191505060405180910390f35b34801561044b57600080fd5b506104986004803603604081101561046257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061144c565b604051808215151515815260200191505060405180910390f35b3480156104be57600080fd5b50610501600480360360208110156104d557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061164e565b604051808b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019a505050505050505050505060405180910390f35b34801561056257600080fd5b506105a56004803603602081101561057957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611785565b6040518082815260200191505060405180910390f35b3480156105c757600080fd5b506106cb600480360360808110156105de57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561064557600080fd5b82018360208201111561065757600080fd5b8035906020019184600183028401116401000000008311171561067957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506117da565b005b3480156106d957600080fd5b50610706600480360360208110156106f057600080fd5b8101908080359060200190929190505050611a2f565b005b34801561071457600080fd5b5061071d611c5b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561075d578082015181840152602081019050610742565b50505050905090810190601f16801561078a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156107a457600080fd5b506107f1600480360360408110156107bb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c94565b604051808215151515815260200191505060405180910390f35b34801561081757600080fd5b50610820611e96565b005b34801561082e57600080fd5b5061087b6004803603604081101561084557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612288565b604051808215151515815260200191505060405180910390f35b3480156108a157600080fd5b506108ee600480360360408110156108b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612528565b005b3480156108fc57600080fd5b5061099e6004803603606081101561091357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561095a57600080fd5b82018360208201111561096c57600080fd5b8035906020019184600183028401116401000000008311171561098e57600080fd5b9091929391929390505050612ae1565b604051808215151515815260200191505060405180910390f35b3480156109c457600080fd5b506109cd612d02565b6040518082815260200191505060405180910390f35b3480156109ef57600080fd5b50610a5260048036036040811015610a0657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d5d565b6040518082815260200191505060405180910390f35b600e60009054906101000a900460ff1615610a8257600080fd5b83600b81905550826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508260078190555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b7f57600080fd5b505afa158015610b93573d6000803e3d6000fd5b505050506040513d6020811015610ba957600080fd5b81019080805190602001909291905050506008540360098190555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003819055506001600e60006101000a81548160ff02191690831515021790555050505050565b6040518060400160405280600981526020017f556e69426f6d625633000000000000000000000000000000000000000000000081525081565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000610d7c610d67612d02565b60045401600754612de690919063ffffffff16565b905090565b6000836000610d8f82612e69565b90506000811115610da557610da48282612f1f565b5b610dd0600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611785565b600a5414610de157610de0613044565b5b60008060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508481600001541015610e9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4e6f7420656e6f756768206d696e6572616c730000000000000000000000000081525060200191505060405180910390fd5b848160010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610f54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f596f752072657175697265206d6f72652076657370656e65206761730000000081525060200191505060405180910390fd5b610f6b858260000154612de690919063ffffffff16565b8160000181905550610fc7858260010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612de690919063ffffffff16565b8160010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201548160000155600282015481600201556003820154816003015560048201548160040155905050846000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600082825401925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3600193505050509392505050565b600b5442116111af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260078152602001807f4e6f74207965740000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60003390506111bc6131d9565b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806080016040529081600082015481526020016002820154815260200160038201548152602001600482015481525050905080604001518311156112a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4e6f7420656e6f756768207374616b656400000000000000000000000000000081525060200191505060405180910390fd5b60006064600a8502816112b857fe5b04905060006112d08286612de690919063ffffffff16565b90506112e785600c54612de690919063ffffffff16565b600c819055508483604001818151039150818152505061131285600d5461309590919063ffffffff16565b83606001818151039150818152505080836000018181510191508181525050611365611354600c5468010000000000000000850261313890919063ffffffff16565b600d5461315190919063ffffffff16565b600d81905550826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816002015560408201518160030155606082015181600401559050507f85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd8486604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050505050565b601281565b60006114df826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461315190919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000806000806000806000806000806116656131d9565b6000808d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060800160405290816000820154815260200160028201548152602001600382015481526020016004820154815250509050806000015181604001516116eb8e612e69565b8360200151600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600754600c546009546004546003549a509a509a509a509a509a509a509a509a509a50509193959799509193959799565b600061179082612e69565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154019050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd8530866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156118b757600080fd5b505af11580156118cb573d6000803e3d6000fd5b505050506040513d60208110156118e157600080fd5b8101908080519060200190929190505050611964576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f5472616e73666572206661696c6564000000000000000000000000000000000081525060200191505060405180910390fd5b826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282540192505081905550826007600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a350505050565b6000600c5411611aa7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f5374616b6520726571756972656400000000000000000000000000000000000081525060200191505060405180910390fd5b611aaf6131d9565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180608001604052908160008201548152602001600282015481526020016003820154815260200160048201548152505090508181600001511015611b9c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4e6f7420656e6f756768206d696e6572616c730000000000000000000000000081525060200191505060405180910390fd5b611bb3828260000151612de690919063ffffffff16565b816000018181525050806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000155602082015181600201556040820151816003015560608201518160040155905050611c51600c5468010000000000000000840281611c3f57fe5b04600d5461315190919063ffffffff16565b600d819055505050565b6040518060400160405280600581526020017f55424f4d4200000000000000000000000000000000000000000000000000000081525081565b6000611d27826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612de690919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600c5411611f0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f5374616b6520726571756972656400000000000000000000000000000000000081525060200191505060405180910390fd5b6000600454611f1b612d02565b019050600a811015611f95576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f7468696e6720746f206275726e2e2e2e000000000000000000000000000081525060200191505060405180910390fd5b42600381905550600060048190555060006064600a830281611fb357fe5b049050600060646014840281611fc557fe5b049050600081838503039050611fe681600754612de690919063ffffffff16565b60078190555080600960008282540192505081905550826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282540192505081905550612076600c546801000000000000000084028161206457fe5b04600d5461315190919063ffffffff16565b600d819055506120f281600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154612de690919063ffffffff16565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156121c357600080fd5b505af11580156121d7573d6000803e3d6000fd5b505050507f831805c5fd38642fe4d745d844a17f0a7ca5b24bd5937f5d4b39d141438690ea338560075461222c600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611785565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200194505050505060405180910390a150505050565b600033600061229682612e69565b905060008111156122ac576122ab8282612f1f565b5b6122d7600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611785565b600a54146122e8576122e7613044565b5b6122f06131d9565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806080016040529081600082015481526020016002820154815260200160038201548152602001600482015481525050905084816000015110156123dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4e6f7420656e6f756768206d696e6572616c730000000000000000000000000081525060200191505060405180910390fd5b6123f4858260000151612de690919063ffffffff16565b816000018181525050806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000155602082015181600201556040820151816003015560608201518160040155905050846000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001600082825401925050819055508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a36001935050505092915050565b33600061253482612e69565b9050600081111561254a576125498282612f1f565b5b826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541015612601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4e6f7420656e6f756768206d696e6572616c730000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156126c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f506f6f6c2063616e6e6f74207374616b6500000000000000000000000000000081525060200191505060405180910390fd5b6126cd6131d9565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060800160405290816000820154815260200160028201548152602001600382015481526020016004820154815250509050600b544210156128975783600c600082825401925050819055508381604001818151019150818152505061277f84600d5461309590919063ffffffff16565b816060018181510191508181525050806000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160020155604082015181600301556060820151816004015590505061284c846000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154612de690919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555050612adb565b60006064600a8602816128a657fe5b04905060006128be8287612de690919063ffffffff16565b905080600c600082825401925050819055506000600c54680100000000000000008402816128e857fe5b04820283038303905061291c600c546801000000000000000085028161290a57fe5b04600d5461315190919063ffffffff16565b600d81905550818460400181815101915081815250506129598161294b84600d5461309590919063ffffffff16565b612de690919063ffffffff16565b846060018181510191508181525050836000808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000155602082015181600201556040820151816003015560608201518160040155905050612a26876000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154612de690919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055507febedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a8888604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1505050505b50505050565b6000336000612aef82612e69565b90506000811115612b0557612b048282612f1f565b5b856000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925886040518082815260200191505060405180910390a38673ffffffffffffffffffffffffffffffffffffffff16638f4ffcb133883089896040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015612cdc57600080fd5b505af1158015612cf0573d6000803e3d6000fd5b50505050600192505050949350505050565b600080600354420390506000612d39600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611785565b905060006064600554028360065484020281612d5157fe5b04905080935050505090565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600082821115612e5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f736166656d61746820737562000000000000000000000000000000000000000081525060200191505060405180910390fd5b818303905092915050565b6000612e736131d9565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060800160405290816000820154815260200160028201548152602001600382015481526020016004820154815250509050680100000000000000008160600151612f0e8360400151600d5461309590919063ffffffff16565b0381612f1657fe5b04915050919050565b612f276131d9565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180608001604052908160008201548152602001600282015481526020016003820154815260200160048201548152505090508181600001818151019150818152505081816020018181510191508181525050680100000000000000008202816060018181510191508181525050806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000155602082015181600201556040820151816003015560608201518160040155905050505050565b61304c612d02565b6004600082825401925050819055504260038190555061308d600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611785565b600a81905550565b6000808314156130a85760009050613132565b60008284029050828482816130b957fe5b041461312d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f736166656d617468206d756c000000000000000000000000000000000000000081525060200191505060405180910390fd5b809150505b92915050565b60008082848161314457fe5b0490508091505092915050565b6000808284019050838110156131cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f736166656d61746820616464000000000000000000000000000000000000000081525060200191505060405180910390fd5b8091505092915050565b604051806080016040528060008152602001600081526020016000815260200160008152509056fea265627a7a72315820b90ce3024a3024c01a6e7fd10b14a6a152a678698ea757754a3fab085031f5fc64736f6c63430005110032

Deployed Bytecode Sourcemap

2708:9712:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4473:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5032:462;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5032:462:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;5032:462:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3487:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3487:42:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3487:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9372:202;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9372:202:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9372:202:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8546:117;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8546:117:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9953:574;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9953:574:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9953:574:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7382:633;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7382:633:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7382:633:0;;;;;;;;;;;;;;;;;:::i;:::-;;3582:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3582:35:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10535:289;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10535:289:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10535:289:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4518:486;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4518:486:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4518:486:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8671:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8671:129:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8671:129:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5502:317;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5502:317:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;5502:317:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;5502:317:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5502:317:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5502:317:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;5502:317:0;;;;;;;;;;;;;;;:::i;:::-;;5855:375;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5855:375:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5855:375:0;;;;;;;;;;;;;;;;;:::i;:::-;;3536:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3536:39:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3536:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10832:299;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10832:299:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10832:299:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11164:837;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11164:837:0;;;:::i;:::-;;8946:418;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8946:418:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8946:418:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6238:1136;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6238:1136:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6238:1136:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9582:363;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9582:363:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9582:363:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;9582:363:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9582:363:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;9582:363:0;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12009:252;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12009:252:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8808:130;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8808:130:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8808:130:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5032:462;5159:11;;;;;;;;;;;5158:12;5150:21;;;;;;5200:16;5182:15;:34;;;;5254:11;5227:4;:16;5232:10;5227:16;;;;;;;;;;;;;;;:24;;:38;;;;5291:11;5276:12;:26;;;;5329:8;5313:7;;:25;;;;;;;;;;;;;;;;;;5380:7;;;;;;;;;;;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5380:21:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5380:21:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5380:21:0;;;;;;;;;;;;;;;;5363:14;;:38;5349:11;:52;;;;5419:9;5412:4;;:16;;;;;;;;;;;;;;;;;;5454:3;5439:12;:18;;;;5482:4;5468:11;;:18;;;;;;;;;;;;;;;;;;5032:462;;;;:::o;3487:42::-;;;;;;;;;;;;;;;;;;;:::o;9372:202::-;9434:4;9487:5;9451:4;:16;9456:10;9451:16;;;;;;;;;;;;;;;:24;;:33;9476:7;9451:33;;;;;;;;;;;;;;;:41;;;;9529:7;9508:36;;9517:10;9508:36;;;9538:5;9508:36;;;;;;;;;;;;;;;;;;9562:4;9555:11;;9372:202;;;;:::o;8546:117::-;8590:4;8613:42;8639:15;:13;:15::i;:::-;8630:6;;:24;8613:12;;:16;;:42;;;;:::i;:::-;8606:49;;8546:117;:::o;9953:574::-;10062:4;10037;2934:12;2949:22;2966:4;2949:16;:22::i;:::-;2934:37;;2996:1;2986:7;:11;2982:71;;;3014:27;3027:4;3033:7;3014:12;:27::i;:::-;2982:71;3135:15;3145:4;;;;;;;;;;;3135:9;:15::i;:::-;3116;;:34;3112:79;;3167:12;:10;:12::i;:::-;3112:79;10079:18;10100:4;:10;10105:4;10100:10;;;;;;;;;;;;;;;10079:31;;10146:5;10129;:13;;;:22;;10121:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10223:5;10194;:13;;:25;10208:10;10194:25;;;;;;;;;;;;;;;;:34;;10186:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10290:24;10308:5;10290;:13;;;:17;;:24;;;;:::i;:::-;10274:5;:13;;:40;;;;10353:36;10383:5;10353;:13;;:25;10367:10;10353:25;;;;;;;;;;;;;;;;:29;;:36;;;;:::i;:::-;10325:5;:13;;:25;10339:10;10325:25;;;;;;;;;;;;;;;:64;;;;10413:5;10400:4;:10;10405:4;10400:10;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10449:5;10429:4;:8;10434:2;10429:8;;;;;;;;;;;;;;;:16;;;:25;;;;;;;;;;;10487:2;10472:25;;10481:4;10472:25;;;10491:5;10472:25;;;;;;;;;;;;;;;;;;10515:4;10508:11;;;9953:574;;;;;;;:::o;7382:633::-;2828:15;;2822:3;:21;2814:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7447:12;7462:10;7447:25;;7483:17;;:::i;:::-;7503:4;:10;7508:4;7503:10;;;;;;;;;;;;;;;7483:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7542:5;:18;;;7532:6;:28;;7524:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7595:8;7629:3;4074:2;7607:6;:18;7606:26;;;;;;7595:37;;7643:13;7659:15;7670:3;7659:6;:10;;:15;;;;:::i;:::-;7643:31;;7701:23;7717:6;7701:11;;:15;;:23;;;;:::i;:::-;7687:11;:37;;;;7757:6;7735:5;:18;;:28;;;;;;;;;;;7802:24;7819:6;7802:12;;:16;;:24;;;;:::i;:::-;7774:5;:18;;:53;;;;;;;;;;;7855:8;7838:5;:13;;:25;;;;;;;;;;;7891:46;7908:28;7924:11;;4111:5;7909:3;:9;7908:15;;:28;;;;:::i;:::-;7891:12;;:16;;:46;;;;:::i;:::-;7876:12;:61;;;;7963:5;7950:4;:10;7955:4;7950:10;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7986:21;7994:4;8000:6;7986:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;2866:1;;;;7382:633;:::o;3582:35::-;3615:2;3582:35;:::o;10535:289::-;10612:4;10665:49;10703:10;10665:4;:16;10670:10;10665:16;;;;;;;;;;;;;;;:24;;:33;10690:7;10665:33;;;;;;;;;;;;;;;;:37;;:49;;;;:::i;:::-;10629:4;:16;10634:10;10629:16;;;;;;;;;;;;;;;:24;;:33;10654:7;10629:33;;;;;;;;;;;;;;;:85;;;;10751:7;10730:64;;10739:10;10730:64;;;10760:4;:16;10765:10;10760:16;;;;;;;;;;;;;;;:24;;:33;10785:7;10760:33;;;;;;;;;;;;;;;;10730:64;;;;;;;;;;;;;;;;;;10812:4;10805:11;;10535:289;;;;:::o;4518:486::-;4573:4;4579;4585;4591;4597;4603;4609;4615;4621;4627;4644:17;;:::i;:::-;4664:4;:10;4669:4;4664:10;;;;;;;;;;;;;;;4644:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4707:5;:13;;;4735:5;:18;;;4768:22;4785:4;4768:16;:22::i;:::-;4805:5;:20;;;4840:4;:10;4845:4;;;;;;;;;;;4840:10;;;;;;;;;;;;;;;:18;;;4873:12;;4900:11;;4926;;4952:6;;4973:12;;4685:311;;;;;;;;;;;;;;;;;;;;;4518:486;;;;;;;;;;;:::o;8671:129::-;8725:4;8770:22;8787:4;8770:16;:22::i;:::-;8749:4;:10;8754:4;8749:10;;;;;;;;;;;;;;;:18;;;:43;8742:50;;8671:129;;;:::o;5502:317::-;5614:7;;;;;;;;;;;:20;;;5635:4;5649;5656:6;5614:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5614:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5614:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5614:49:0;;;;;;;;;;;;;;;;5606:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5716:6;5694:4;:10;5699:4;5694:10;;;;;;;;;;;;;;;:18;;;:28;;;;;;;;;;;5749:6;5733:12;;:22;;;;;;;;;;;5792:10;5771:40;;5788:1;5771:40;;;5804:6;5771:40;;;;;;;;;;;;;;;;;;5502:317;;;;:::o;5855:375::-;5928:1;5914:11;;:15;5906:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5959:17;;:::i;:::-;5979:4;:16;5984:10;5979:16;;;;;;;;;;;;;;;5959:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6031:6;6014:5;:13;;;:23;;6006:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6088:25;6106:6;6088:5;:13;;;:17;;:25;;;;:::i;:::-;6072:5;:13;;:41;;;;;6143:5;6124:4;:16;6129:10;6124:16;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6176:46;6210:11;;4111:5;6194:6;:12;6193:28;;;;;;6176:12;;:16;;:46;;;;:::i;:::-;6161:12;:61;;;;5855:375;;:::o;3536:39::-;;;;;;;;;;;;;;;;;;;:::o;10832:299::-;10914:4;10967:54;11005:15;10967:4;:16;10972:10;10967:16;;;;;;;;;;;;;;;:24;;:33;10992:7;10967:33;;;;;;;;;;;;;;;;:37;;:54;;;;:::i;:::-;10931:4;:16;10936:10;10931:16;;;;;;;;;;;;;;;:24;;:33;10956:7;10931:33;;;;;;;;;;;;;;;:90;;;;11058:7;11037:64;;11046:10;11037:64;;;11067:4;:16;11072:10;11067:16;;;;;;;;;;;;;;;:24;;:33;11092:7;11067:33;;;;;;;;;;;;;;;;11037:64;;;;;;;;;;;;;;;;;;11119:4;11112:11;;10832:299;;;;:::o;11164:837::-;11226:1;11212:11;;:15;11204:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11257:16;11294:6;;11276:15;:13;:15::i;:::-;:24;11257:43;;11334:2;11319:11;:17;;11311:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11385:3;11370:12;:18;;;;11408:1;11399:6;:10;;;;11422:16;11460:3;11455:2;11441:11;:16;:22;;;;;;11422:41;;11474:17;11513:3;11508:2;11494:11;:16;:22;;;;;;11474:42;;11527:15;11573:12;11559:11;11545;:25;:40;11527:58;;11613:28;11630:10;11613:12;;:16;;:28;;;;:::i;:::-;11598:12;:43;;;;11667:10;11652:11;;:25;;;;;;;;;;;11716:11;11688:4;:16;11693:10;11688:16;;;;;;;;;;;;;;;:24;;;:39;;;;;;;;;;;11753:52;11793:11;;4111:5;11771:12;:18;11770:34;;;;;;11753:12;;:16;;:52;;;;:::i;:::-;11738:12;:67;;;;11837:34;11860:10;11837:4;:10;11842:4;;;;;;;;;;;11837:10;;;;;;;;;;;;;;;:18;;;:22;;:34;;;;:::i;:::-;11816:4;:10;11821:4;;;;;;;;;;;11816:10;;;;;;;;;;;;;;;:18;;:55;;;;11899:4;;;;;;;;;;;11884:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11884:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11884:27:0;;;;11929:64;11938:10;11950:11;11963:12;;11977:15;11987:4;;;;;;;;;;;11977:9;:15::i;:::-;11929:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11164:837;;;;:::o;8946:418::-;9043:4;9012:10;2934:12;2949:22;2966:4;2949:16;:22::i;:::-;2934:37;;2996:1;2986:7;:11;2982:71;;;3014:27;3027:4;3033:7;3014:12;:27::i;:::-;2982:71;3135:15;3145:4;;;;;;;;;;;3135:9;:15::i;:::-;3116;;:34;3112:79;;3167:12;:10;:12::i;:::-;3112:79;9060:17;;:::i;:::-;9080:4;:16;9085:10;9080:16;;;;;;;;;;;;;;;9060:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9132:5;9115;:13;;;:22;;9107:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9190:24;9208:5;9190;:13;;;:17;;:24;;;;:::i;:::-;9174:5;:13;;:40;;;;;9244:5;9225:4;:16;9230:10;9225:16;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9280:5;9260:4;:8;9265:2;9260:8;;;;;;;;;;;;;;;:16;;;:25;;;;;;;;;;;9324:2;9303:31;;9312:10;9303:31;;;9328:5;9303:31;;;;;;;;;;;;;;;;;;9352:4;9345:11;;;8946:418;;;;;;:::o;6238:1136::-;6304:10;2934:12;2949:22;2966:4;2949:16;:22::i;:::-;2934:37;;2996:1;2986:7;:11;2982:71;;;3014:27;3027:4;3033:7;3014:12;:27::i;:::-;2982:71;6363:6;6335:4;:16;6340:10;6335:16;;;;;;;;;;;;;;;:24;;;:34;;6327:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6420:4;;;;;;;;;;;6412:12;;:4;:12;;;;6404:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6457:17;;:::i;:::-;6477:4;:10;6482:4;6477:10;;;;;;;;;;;;;;;6457:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6510:15;;6504:3;:21;6500:318;;;6557:6;6542:11;;:21;;;;;;;;;;;6600:6;6578:5;:18;;:28;;;;;;;;;;;6649:24;6666:6;6649:12;;:16;;:24;;;;:::i;:::-;6621:5;:18;;:53;;;;;;;;;;;6702:5;6689:4;:10;6694:4;6689:10;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6749:36;6778:6;6749:4;:16;6754:10;6749:16;;;;;;;;;;;;;;;:24;;;:28;;:36;;;;:::i;:::-;6722:4;:16;6727:10;6722:16;;;;;;;;;;;;;;;:24;;:63;;;;6800:7;;;6500:318;6830:8;6864:3;4074:2;6842:6;:18;6841:26;;;;;;6830:37;;6878:13;6894:15;6905:3;6894:6;:10;;:15;;;;:::i;:::-;6878:31;;6935:8;6920:11;;:23;;;;;;;;;;;6954:17;7014:11;;4111:5;7001:3;:9;7000:25;;;;;;6988:8;:38;6981:3;:46;6974:3;:54;6954:74;;7054:43;7085:11;;4111:5;7072:3;:9;7071:25;;;;;;7054:12;;:16;;:43;;;;:::i;:::-;7039:12;:58;;;;7132:8;7110:5;:18;;:30;;;;;;;;;;;7179:44;7210:12;7179:26;7196:8;7179:12;;:16;;:26;;;;:::i;:::-;:30;;:44;;;;:::i;:::-;7151:5;:18;;:73;;;;;;;;;;;7250:5;7237:4;:10;7242:4;7237:10;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7293:36;7322:6;7293:4;:16;7298:10;7293:16;;;;;;;;;;;;;;;:24;;;:28;;:36;;;;:::i;:::-;7266:4;:16;7271:10;7266:16;;;;;;;;;;;;;;;:24;;:63;;;;7347:19;7353:4;7359:6;7347:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;3063:1;;;;;6238:1136;;;;:::o;9582:363::-;9704:4;9683:10;2934:12;2949:22;2966:4;2949:16;:22::i;:::-;2934:37;;2996:1;2986:7;:11;2982:71;;;3014:27;3027:4;3033:7;3014:12;:27::i;:::-;2982:71;9757:6;9721:4;:16;9726:10;9721:16;;;;;;;;;;;;;;;:24;;:33;9746:7;9721:33;;;;;;;;;;;;;;;:42;;;;9800:7;9779:37;;9788:10;9779:37;;;9809:6;9779:37;;;;;;;;;;;;;;;;;;9850:7;9827:47;;;9875:10;9887:6;9903:4;9910;;9827:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;9827:88:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9827:88:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9827:88:0;;;;9933:4;9926:11;;9582:363;;;;;;;;:::o;12009:252::-;12055:4;12072:10;12091:12;;12085:3;:18;12072:31;;12114:16;12133:15;12143:4;;;;;;;;;;;12133:9;:15::i;:::-;12114:34;;12159:16;12220:3;12214;;:9;12204:5;12193:8;;12179:11;:22;:30;12178:46;;;;;;12159:65;;12242:11;12235:18;;;;;12009:252;:::o;8808:130::-;8879:4;8903;:10;8908:4;8903:10;;;;;;;;;;;;;;;:18;;:27;8922:7;8903:27;;;;;;;;;;;;;;;;8896:34;;8808:130;;;;:::o;12783:131::-;12835:4;12865:1;12860;:6;;12852:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12905:1;12901;:5;12894:12;;12783:131;;;;:::o;8023:214::-;8086:4;8103:17;;:::i;:::-;8123:4;:10;8128:4;8123:10;;;;;;;;;;;;;;;8103:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4111:5;8204;:18;;;8164:36;8181:5;:18;;;8164:12;;:16;;:36;;;;:::i;:::-;8158:64;8151:78;;;;;;8144:85;;;8023:214;;;:::o;8245:267::-;8315:17;;:::i;:::-;8335:4;:10;8340:4;8335:10;;;;;;;;;;;;;;;8315:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8373:7;8356:5;:13;;:24;;;;;;;;;;;8415:7;8391:5;:20;;:31;;;;;;;;;;;4111:5;8461:7;:13;8433:5;:18;;:42;;;;;;;;;;;8499:5;8486:4;:10;8491:4;8486:10;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8245:267;;;:::o;12269:148::-;12321:15;:13;:15::i;:::-;12311:6;;:25;;;;;;;;;;;12362:3;12347:12;:18;;;;12394:15;12404:4;;;;;;;;;;;12394:9;:15::i;:::-;12376;:33;;;;12269:148::o;12448:213::-;12500:4;12526:1;12521;:6;12517:47;;;12551:1;12544:8;;;;12517:47;12574:6;12587:1;12583;:5;12574:14;;12616:1;12611;12607;:5;;;;;;:10;12599:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12652:1;12645:8;;;12448:213;;;;;:::o;12667:110::-;12719:4;12736:6;12749:1;12745;:5;;;;;;12736:14;;12768:1;12761:8;;;12667:110;;;;:::o;12920:152::-;12972:4;12989:6;13002:1;12998;:5;12989:14;;13027:1;13022;:6;;13014:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13063:1;13056:8;;;12920:152;;;;:::o;2708:9712::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

bzzr://b90ce3024a3024c01a6e7fd10b14a6a152a678698ea757754a3fab085031f5fc
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.