ETH Price: $3,333.22 (-3.37%)
Gas: 9.25 Gwei

Contract

0x5C84bc60a796534bfeC3439Af0E6dB616A966335
 
Transaction Hash
Method
Block
From
To
Approve212494122024-11-23 9:01:593 days ago1732352519IN
DogData: BONE Token
0 ETH0.0006208213.34424418
Approve212250262024-11-19 23:20:117 days ago1732058411IN
DogData: BONE Token
0 ETH0.000241779.97440551
Approve211703722024-11-12 8:21:1114 days ago1731399671IN
DogData: BONE Token
0 ETH0.0010703823.1745833
Transfer211701382024-11-12 7:33:5914 days ago1731396839IN
DogData: BONE Token
0 ETH0.0015685727.10703605
Approve210696102024-10-29 6:49:5928 days ago1730184599IN
DogData: BONE Token
0 ETH0.000176426.72366397
Approve210692982024-10-29 5:47:1128 days ago1730180831IN
DogData: BONE Token
0 ETH0.000163276.7356522
Transfer210214722024-10-22 13:39:2335 days ago1729604363IN
DogData: BONE Token
0 ETH0.0010808917.23868179
Transfer210079602024-10-20 16:23:4737 days ago1729441427IN
DogData: BONE Token
0 ETH0.0008546214.77215966
Transfer209773432024-10-16 9:51:3541 days ago1729072295IN
DogData: BONE Token
0 ETH0.0006095513.38089616
Approve209639402024-10-14 12:55:5943 days ago1728910559IN
DogData: BONE Token
0 ETH0.0008328434.35838451
Transfer209473372024-10-12 5:07:4745 days ago1728709667IN
DogData: BONE Token
0 ETH0.000264126.96128163
Transfer209431622024-10-11 15:06:2346 days ago1728659183IN
DogData: BONE Token
0 ETH0.0032691452.16773456
Approve209333762024-10-10 6:20:2347 days ago1728541223IN
DogData: BONE Token
0 ETH0.000252569.62515309
Approve209333752024-10-10 6:20:1147 days ago1728541211IN
DogData: BONE Token
0 ETH0.000237599.80191276
Transfer209127332024-10-07 9:17:4750 days ago1728292667IN
DogData: BONE Token
0 ETH0.000386158.47472355
Transfer209119802024-10-07 6:46:4750 days ago1728283607IN
DogData: BONE Token
0 ETH0.0004077810
Transfer209072832024-10-06 15:03:2351 days ago1728227003IN
DogData: BONE Token
0 ETH0.0027529643.92232721
Approve208854442024-10-03 13:59:5954 days ago1727963999IN
DogData: BONE Token
0 ETH0.000379618.15958832
Approve208852702024-10-03 13:24:4754 days ago1727961887IN
DogData: BONE Token
0 ETH0.0004803110.32397212
Transfer208765072024-10-02 8:05:5955 days ago1727856359IN
DogData: BONE Token
0 ETH0.000327727.19233692
Approve208481912024-09-28 9:19:1159 days ago1727515151IN
DogData: BONE Token
0 ETH0.000351347.59708379
Approve208308062024-09-25 23:08:5962 days ago1727305739IN
DogData: BONE Token
0 ETH0.0008775318.97463215
Transfer208307792024-09-25 23:03:3562 days ago1727305415IN
DogData: BONE Token
0 ETH0.0017402927.7656035
Approve208279092024-09-25 13:26:2362 days ago1727270783IN
DogData: BONE Token
0 ETH0.0009083119.52367726
Transfer208255432024-09-25 5:29:5962 days ago1727242199IN
DogData: BONE Token
0 ETH0.0007322811.6922563
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Bone

Compiler Version
v0.5.8+commit.23d335f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-07-04
*/

pragma solidity 0.5.8;

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


// File: node_modules\openzeppelin-solidity\contracts\math\SafeMath.sol

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, "SafeMath: division by zero");
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0, "SafeMath: modulo by zero");
        return a % b;
    }
}

// File: node_modules\openzeppelin-solidity\contracts\token\ERC20\ERC20.sol

/**
 * @dev Implementation of the `IERC20` interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using `_mint`.
 * For a generic mechanism see `ERC20Mintable`.
 *
 * *For a detailed writeup see our guide [How to implement supply
 * mechanisms](https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226).*
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of ERC20 applications.
 *
 * Additionally, an `Approval` event is emitted on calls to `transferFrom`.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard `decreaseAllowance` and `increaseAllowance`
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See `IERC20.approve`.
 */
contract ERC20 is IERC20 {
    using SafeMath for uint256;

    mapping (address => uint256) internal _balances;

    mapping (address => mapping (address => uint256)) private _allowances;

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

    /**
     * @dev See `IERC20.transfer`.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    /**
     * @dev See `IERC20.allowance`.
     */
    function allowance(address owner, address spender) public view returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See `IERC20.approve`.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 value) public returns (bool) {
        _approve(msg.sender, spender, value);
        return true;
    }

    /**
     * @dev See `IERC20.transferFrom`.
     *
     * Emits an `Approval` event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of `ERC20`;
     *
     * Requirements:
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `value`.
     * - the caller must have allowance for `sender`'s tokens of at least
     * `amount`.
     */
    function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount));
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to `approve` that can be used as a mitigation for
     * problems described in `IERC20.approve`.
     *
     * Emits an `Approval` event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue));
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to `approve` that can be used as a mitigation for
     * problems described in `IERC20.approve`.
     *
     * Emits an `Approval` event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue));
        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to `transfer`, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a `Transfer` event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(address sender, address recipient, uint256 amount) internal {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a `Transfer` event with `from` set to the zero address.
     *
     * Requirements
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

     /**
     * @dev Destoys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a `Transfer` event with `to` set to the zero address.
     *
     * Requirements
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 value) internal {
        require(account != address(0), "ERC20: burn from the zero address");

        _totalSupply = _totalSupply.sub(value);
        _balances[account] = _balances[account].sub(value);
        emit Transfer(account, address(0), value);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.
     *
     * This is internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an `Approval` event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(address owner, address spender, uint256 value) internal {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = value;
        emit Approval(owner, spender, value);
    }

    /**
     * @dev Destoys `amount` tokens from `account`.`amount` is then deducted
     * from the caller's allowance.
     *
     * See `_burn` and `_approve`.
     */
    function _burnFrom(address account, uint256 amount) internal {
        _burn(account, amount);
        _approve(account, msg.sender, _allowances[account][msg.sender].sub(amount));
    }
}



contract Bone is ERC20 {
    string public constant name = "Bone";
    string public constant symbol = "Bone";
    uint8 public constant decimals = 18;
    uint256 public constant initialSupply = 1000000000 * (10 ** uint256(decimals));
    bool public _lockStatus = false;
    bool private isValue;
    constructor() public {
        super._mint(msg.sender, initialSupply);
        owner = msg.sender;
    }
    mapping (address => uint256) private time;
    mapping (address => uint256) private _lockedAmount;

    //ownership
    address public owner;

    event OwnershipRenounced(address indexed previousOwner);
    event OwnershipTransferred(
     address indexed previousOwner,
     address indexed newOwner
    );

    modifier onlyOwner() {
        require(msg.sender == owner, "Not owner");
        _;
    }

  /**
   * @dev Allows the current owner to relinquish control of the contract.
   * @notice Renouncing to ownership will leave the contract without an owner.
   * It will not be possible to call the functions with the `onlyOwner`
   * modifier anymore.
   */
    function renounceOwnership() public onlyOwner {
        emit OwnershipRenounced(owner);
        owner = address(0);
    }

  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param _newOwner The address to transfer ownership to.
   */
    function transferOwnership(address _newOwner) public onlyOwner {
        _transferOwnership(_newOwner);
    }

  /**
   * @dev Transfers control of the contract to a newOwner.
   * @param _newOwner The address to transfer ownership to.
   */
    function _transferOwnership(address _newOwner) internal {
        require(_newOwner != address(0), "Already owner");
        emit OwnershipTransferred(owner, _newOwner);
        owner = _newOwner;
    }

    //pausable
    event Pause();
    event Unpause();

    bool public paused = false;

    /**
    * @dev Modifier to make a function callable only when the contract is not paused.
    */
    modifier whenNotPaused() {
        require(!paused, "Paused by owner");
        _;
    }

    /**
    * @dev Modifier to make a function callable only when the contract is paused.
    */
    modifier whenPaused() {
        require(paused, "Not paused now");
        _;
    }

    /**
    * @dev called by the owner to pause, triggers stopped state
    */
    function pause() public onlyOwner whenNotPaused {
        paused = true;
        emit Pause();
    }

    /**
    * @dev called by the owner to unpause, returns to normal state
    */
    function unpause() public onlyOwner whenPaused {
        paused = false;
        emit Unpause();
    }

    //freezable
    event Frozen(address target);
    event Unfrozen(address target);

    mapping(address => bool) internal freezes;

    modifier whenNotFrozen() {
        require(!freezes[msg.sender], "Sender account is locked.");
        _;
    }

    function freeze(address _target) public onlyOwner {
        freezes[_target] = true;
        emit Frozen(_target);
    }

    function unfreeze(address _target) public onlyOwner {
        freezes[_target] = false;
        emit Unfrozen(_target);
    }

    function isFrozen(address _target) public view returns (bool) {
        return freezes[_target];
    }


    /* ----------------------------------------------------------------------------
     * Locking functions
     * ----------------------------------------------------------------------------
     */

    /**
     * @dev Lock all transfer functions of the contract
     * @return request status
     */
    function setAllTransfersLockStatus(bool RunningStatusLock) external onlyOwner returns (bool)
    {
        _lockStatus = RunningStatusLock;
        return true;
    }

    /**
     * @dev check lock status of all transfers
     * @return lock status
     */
    function getAllTransfersLockStatus() public view returns (bool)
    {
        return _lockStatus;
    }

    /**
     * @dev time calculator for locked tokens
     */
     function addLockingTime(address lockingAddress,uint8 lockingTime, uint256 amount) internal returns (bool){
        time[lockingAddress] = now + (lockingTime * 1 days);
        _lockedAmount[lockingAddress] = amount;
        return true;
     }

       function transferByOwner(address to, uint256 value, uint8 lockingTime) public AllTransfersLockStatus onlyOwner returns (bool) {
        addLockingTime(to,lockingTime,value);
        _transfer(msg.sender, to, value);
        return true;
    }

     /**
      * @dev check for time based lock
      * @param _address address to check for locking time
      * @return time in block format
      */
      function checkLockingTimeByAddress(address _address) public view returns(uint256){
         return time[_address];
      }
      /**
       * @dev return locking status
       * @param userAddress address of to check
       * @return locking status in true or false
       */
       function getLockingStatus(address userAddress) public view returns(bool){
           if (now < time[userAddress]){
               return true;
           }
           else{
               return false;
           }
       }

    /**
     * @dev  Decreaese locking time
     * @param _affectiveAddress Address of the locked address
     * @param _decreasedTime Time in days to be affected
     */
    function decreaseLockingTimeByAddress(address _affectiveAddress, uint _decreasedTime) external onlyOwner returns(bool){
          require(_decreasedTime > 0 && time[_affectiveAddress] > now, "Please check address status or Incorrect input");
          time[_affectiveAddress] = time[_affectiveAddress] - (_decreasedTime * 1 days);
          return true;
      }

      /**
     * @dev Increase locking time
     * @param _affectiveAddress Address of the locked address
     * @param _increasedTime Time in days to be affected
     */
    function increaseLockingTimeByAddress(address _affectiveAddress, uint _increasedTime) external onlyOwner returns(bool){
          require(_increasedTime > 0 && time[_affectiveAddress] > now, "Please check address status or Incorrect input");
          time[_affectiveAddress] = time[_affectiveAddress] + (_increasedTime * 1 days);
          return true;
      }

    /**
     * @dev modifier to check validation of lock status of smart contract
     */
    modifier AllTransfersLockStatus()
    {
        require(_lockStatus == false,"All transactions are locked for this contract");
        _;
    }

    /**
     * @dev modifier to check locking amount
     * @param _address address to check
     * @param requestedAmount Amount to check
     * @return status
     */
     modifier checkLocking(address _address,uint256 requestedAmount){
         if(now < time[_address]){
         require(!( _balances[_address] - _lockedAmount[_address] < requestedAmount), "Insufficient unlocked balance");
         }
        else{
            require(1 == 1,"Transfer can not be processed");
        }
        _;
     }

    function transfer(
        address _to,
        uint256 _value
    )
      public
      AllTransfersLockStatus
      checkLocking(msg.sender,_value)
      whenNotFrozen
      whenNotPaused
      returns (bool)
    {
        releaseLock(msg.sender);
        return super.transfer(_to, _value);
    }

    function transferFrom(
        address _from,
        address _to,
        uint256 _value
    )
      public
      AllTransfersLockStatus
      checkLocking(_from,_value)
      whenNotPaused
      returns (bool)
     {
        require(!freezes[_from], "From account is locked.");
        releaseLock(_from);
        return super.transferFrom(_from, _to, _value);
     }

    //mintable
    event Mint(address indexed to, uint256 amount);

    function mint(
        address _to,
        uint256 _amount
    )
      public
      onlyOwner
      returns (bool)
    {
        super._mint(_to, _amount);
        emit Mint(_to, _amount);
        return true;
    }

    //burnable
    event Burn(address indexed burner, uint256 value);

    function burn(address _who, uint256 _value) public
    onlyOwner
    checkLocking(msg.sender,_value)
    {
        require(_value <= super.balanceOf(_who), "Balance is too small.");

        _burn(_who, _value);
        emit Burn(_who, _value);
    }

    //lockable
    struct LockInfo {
        uint256 releaseTime;
        uint256 balance;
    }
    mapping(address => LockInfo[]) internal lockInfo;

    event Lock(address indexed holder, uint256 value, uint256 releaseTime);
    event Unlock(address indexed holder, uint256 value);

    function balanceOf(address _holder) public view returns (uint256 balance) {
        uint256 lockedBalance = 0;
        for(uint256 i = 0; i < lockInfo[_holder].length ; i++ ) {
            lockedBalance = lockedBalance.add(lockInfo[_holder][i].balance);
        }
        return super.balanceOf(_holder).add(lockedBalance);
    }

    function releaseLock(address _holder) internal {

        for(uint256 i = 0; i < lockInfo[_holder].length ; i++ ) {
            if (lockInfo[_holder][i].releaseTime <= now) {
                _balances[_holder] = _balances[_holder].add(lockInfo[_holder][i].balance);
                emit Unlock(_holder, lockInfo[_holder][i].balance);
                lockInfo[_holder][i].balance = 0;

                if (i != lockInfo[_holder].length - 1) {
                    lockInfo[_holder][i] = lockInfo[_holder][lockInfo[_holder].length - 1];
                    i--;
                }
                lockInfo[_holder].length--;

            }
        }
    }
    function lockCount(address _holder) public view returns (uint256) {
        return lockInfo[_holder].length;
    }
    function lockState(address _holder, uint256 _idx) public view returns (uint256, uint256) {
        return (lockInfo[_holder][_idx].releaseTime, lockInfo[_holder][_idx].balance);
    }

    function lock(address _holder, uint256 _amount, uint256 _releaseTime) public onlyOwner {
        require(super.balanceOf(_holder) >= _amount, "Balance is too small.");
        _balances[_holder] = _balances[_holder].sub(_amount);
        lockInfo[_holder].push(
            LockInfo(_releaseTime, _amount)
        );
        emit Lock(_holder, _amount, _releaseTime);
    }


    function lockAfter(address _holder, uint256 _amount, uint256 _afterTime) public onlyOwner {
        require(super.balanceOf(_holder) >= _amount, "Balance is too small.");
        _balances[_holder] = _balances[_holder].sub(_amount);
        lockInfo[_holder].push(
            LockInfo(now + _afterTime, _amount)
        );
        emit Lock(_holder, _amount, now + _afterTime);
    }

    function unlock(address _holder, uint256 i) public onlyOwner {
        require(i < lockInfo[_holder].length, "No lock information.");

        _balances[_holder] = _balances[_holder].add(lockInfo[_holder][i].balance);
        emit Unlock(_holder, lockInfo[_holder][i].balance);
        lockInfo[_holder][i].balance = 0;

        if (i != lockInfo[_holder].length - 1) {
            lockInfo[_holder][i] = lockInfo[_holder][lockInfo[_holder].length - 1];
        }
        lockInfo[_holder].length--;
    }

    function transferLockedTokens(address from, address to, uint256 value) external onlyOwner returns (bool){
        require((_lockedAmount[from] >= value) && (now < time[from]), "Insufficient unlocked balance");
        require(from != address(0) && to != address(0), "Invalid address");
        _lockedAmount[from] = _lockedAmount[from] - value;
        _transfer(from,to,value);
     }

    function transferWithLock(address _to, uint256 _value, uint256 _releaseTime) public onlyOwner returns (bool) {
        require(_to != address(0), "wrong address");
        require(_value <= super.balanceOf(owner), "Not enough balance");

        _balances[owner] = _balances[owner].sub(_value);
        lockInfo[_to].push(
            LockInfo(_releaseTime, _value)
        );
        emit Transfer(owner, _to, _value);
        emit Lock(_to, _value, _releaseTime);

        return true;
    }

    function transferWithLockAfter(address _to, uint256 _value, uint256 _afterTime) public onlyOwner returns (bool) {
        require(_to != address(0), "wrong address");
        require(_value <= super.balanceOf(owner), "Not enough balance");

        _balances[owner] = _balances[owner].sub(_value);
        lockInfo[_to].push(
            LockInfo(now + _afterTime, _value)
        );
        emit Transfer(owner, _to, _value);
        emit Lock(_to, _value, now + _afterTime);

        return true;
    }

    function currentTime() public view returns (uint256) {
        return now;
    }

    function afterTime(uint256 _value) public view returns (uint256) {
        return now + _value;
    }

    //airdrop
    mapping (address => uint256) public airDropHistory;
    event AirDrop(address _receiver, uint256 _amount);

    function airdropByOwner(address[] memory receivers, uint256[] memory values) public AllTransfersLockStatus onlyOwner {
    require(receivers.length != 0);
    require(receivers.length == values.length);

    for (uint256 i = 0; i < receivers.length; i++) {
      address receiver = receivers[i];
      uint256 amount = values[i];

      transfer(receiver, amount);
      airDropHistory[receiver] += amount;

      emit AirDrop(receiver, amount);
    }
  }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"_value","type":"uint256"}],"name":"afterTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"initialSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"},{"name":"lockingTime","type":"uint8"}],"name":"transferByOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_target","type":"address"}],"name":"unfreeze","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_holder","type":"address"},{"name":"_idx","type":"uint256"}],"name":"lockState","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"RunningStatusLock","type":"bool"}],"name":"setAllTransfersLockStatus","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_holder","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_affectiveAddress","type":"address"},{"name":"_decreasedTime","type":"uint256"}],"name":"decreaseLockingTimeByAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_holder","type":"address"},{"name":"i","type":"uint256"}],"name":"unlock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"checkLockingTimeByAddress","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_holder","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_afterTime","type":"uint256"}],"name":"lockAfter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_target","type":"address"}],"name":"freeze","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_afterTime","type":"uint256"}],"name":"transferWithLockAfter","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_affectiveAddress","type":"address"},{"name":"_increasedTime","type":"uint256"}],"name":"increaseLockingTimeByAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getAllTransfersLockStatus","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_who","type":"address"},{"name":"_value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"_lockStatus","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferLockedTokens","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"userAddress","type":"address"}],"name":"getLockingStatus","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"airDropHistory","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"currentTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_releaseTime","type":"uint256"}],"name":"transferWithLock","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"receivers","type":"address[]"},{"name":"values","type":"uint256[]"}],"name":"airdropByOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_holder","type":"address"}],"name":"lockCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_holder","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_releaseTime","type":"uint256"}],"name":"lock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_target","type":"address"}],"name":"isFrozen","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"target","type":"address"}],"name":"Frozen","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"target","type":"address"}],"name":"Unfrozen","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"holder","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"releaseTime","type":"uint256"}],"name":"Lock","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"holder","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Unlock","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_receiver","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"AirDrop","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]

60806040526003805460ff1916905560068054600160a01b60ff02191690553480156200002b57600080fd5b5062000050336b033b2e3c9fd0803ce800000062000068602090811b62002a8117901c565b600680546001600160a01b03191633179055620001ff565b6001600160a01b038216620000de57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b620000fa816002546200018360201b620028b11790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200012d918390620028b162000183821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600082820183811015620001f857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b612f4c806200020f6000396000f3fe608060405234801561001057600080fd5b50600436106102695760003560e01c80638a57af6b11610151578063c2fb97f8116100c3578063de6baccb11610087578063de6baccb146107c1578063defcf51f146107f3578063df0345861461091a578063e2ab691d14610940578063e583983614610972578063f2fde38b1461099857610269565b8063c2fb97f814610709578063cb9bd15a1461073f578063ccd28a4c14610765578063d18e81b31461078b578063dd62ed3e1461079357610269565b806395d89b411161011557806395d89b411461029d5780639b9843df146106755780639dc29fac1461067d578063a02619e4146106a9578063a457c2d7146106b1578063a9059cbb146106dd57610269565b80638a57af6b1461059b5780638d1fdf2f146105cd5780638da5cb5b146105f3578063927a4a7b1461061757806394a6b7121461064957610269565b806340c10f19116101ea57806370a08231116101ae57806370a08231146104e7578063715018a61461050d5780637338e39d146105155780637eee288d146105415780638456cb591461056d578063894f879e1461057557610269565b806340c10f191461042957806345c8b1a61461045557806346cf1bb51461047b5780635c975abb146104c05780636b180d69146104c857610269565b8063313ce56711610231578063313ce56714610398578063378dc3dc146103b657806339509351146103be5780633ec45d89146103ea5780633f4ba83a1461041f57610269565b806304859ceb1461026e57806306fdde031461029d578063095ea7b31461031a57806318160ddd1461035a57806323b872dd14610362575b600080fd5b61028b6004803603602081101561028457600080fd5b50356109be565b60408051918252519081900360200190f35b6102a56109c7565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102df5781810151838201526020016102c7565b50505050905090810190601f16801561030c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103466004803603604081101561033057600080fd5b506001600160a01b0381351690602001356109ea565b604080519115158252519081900360200190f35b61028b610a00565b6103466004803603606081101561037857600080fd5b506001600160a01b03813581169160208101359091169060400135610a07565b6103a0610bc3565b6040805160ff9092168252519081900360200190f35b61028b610bc8565b610346600480360360408110156103d457600080fd5b506001600160a01b038135169060200135610bd8565b6103466004803603606081101561040057600080fd5b5080356001600160a01b0316906020810135906040013560ff16610c19565b610427610cd4565b005b6103466004803603604081101561043f57600080fd5b506001600160a01b038135169060200135610dc1565b6104276004803603602081101561046b57600080fd5b50356001600160a01b0316610e67565b6104a76004803603604081101561049157600080fd5b506001600160a01b038135169060200135610f10565b6040805192835260208301919091528051918290030190f35b610346610f89565b610346600480360360208110156104de57600080fd5b50351515610f99565b61028b600480360360208110156104fd57600080fd5b50356001600160a01b0316611004565b610427611097565b6103466004803603604081101561052b57600080fd5b506001600160a01b038135169060200135611132565b6104276004803603604081101561055757600080fd5b506001600160a01b038135169060200135611218565b6104276114c6565b61028b6004803603602081101561058b57600080fd5b50356001600160a01b03166115af565b610427600480360360608110156105b157600080fd5b506001600160a01b0381351690602081013590604001356115ca565b610427600480360360208110156105e357600080fd5b50356001600160a01b0316611729565b6105fb6117d5565b604080516001600160a01b039092168252519081900360200190f35b6103466004803603606081101561062d57600080fd5b506001600160a01b0381351690602081013590604001356117e4565b6103466004803603604081101561065f57600080fd5b506001600160a01b0381351690602001356119dd565b610346611ac2565b6104276004803603604081101561069357600080fd5b506001600160a01b038135169060200135611acb565b610346611c49565b610346600480360360408110156106c757600080fd5b506001600160a01b038135169060200135611c52565b610346600480360360408110156106f357600080fd5b506001600160a01b038135169060200135611c8e565b6103466004803603606081101561071f57600080fd5b506001600160a01b03813581169160208101359091169060400135611e34565b6103466004803603602081101561075557600080fd5b50356001600160a01b0316611fa7565b61028b6004803603602081101561077b57600080fd5b50356001600160a01b0316611fd7565b61028b611fe9565b61028b600480360360408110156107a957600080fd5b506001600160a01b0381358116916020013516611fed565b610346600480360360608110156107d757600080fd5b506001600160a01b038135169060208101359060400135612018565b6104276004803603604081101561080957600080fd5b81019060208101813564010000000081111561082457600080fd5b82018360208201111561083657600080fd5b8035906020019184602083028401116401000000008311171561085857600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156108a857600080fd5b8201836020820111156108ba57600080fd5b803590602001918460208302840111640100000000831117156108dc57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061220e945050505050565b61028b6004803603602081101561093057600080fd5b50356001600160a01b0316612366565b6104276004803603606081101561095657600080fd5b506001600160a01b038135169060208101359060400135612381565b6103466004803603602081101561098857600080fd5b50356001600160a01b03166124d9565b610427600480360360208110156109ae57600080fd5b50356001600160a01b03166124f7565b4281015b919050565b604051806040016040528060048152602001600160e01b63426f6e650281525081565b60006109f7338484612554565b50600192915050565b6002545b90565b60035460009060ff1615610a4f57604051600160e51b62461bcd02815260040180806020018281038252602d815260200180612e2a602d913960400191505060405180910390fd5b6001600160a01b03841660009081526004602052604090205484908390421015610add576001600160a01b038216600090815260056020908152604080832054918390529091205403811115610add5760408051600160e51b62461bcd02815260206004820152601d6024820152600080516020612e57833981519152604482015290519081900360640190fd5b600654600160a01b900460ff1615610b345760408051600160e51b62461bcd02815260206004820152600f6024820152600160891b6e2830bab9b2b210313c9037bbb732b902604482015290519081900360640190fd5b6001600160a01b03861660009081526007602052604090205460ff1615610ba55760408051600160e51b62461bcd02815260206004820152601760248201527f46726f6d206163636f756e74206973206c6f636b65642e000000000000000000604482015290519081900360640190fd5b610bae86612646565b610bb9868686612869565b9695505050505050565b601281565b6b033b2e3c9fd0803ce800000081565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109f7918590610c14908663ffffffff6128b116565b612554565b60035460009060ff1615610c6157604051600160e51b62461bcd02815260040180806020018281038252602d815260200180612e2a602d913960400191505060405180910390fd5b6006546001600160a01b03163314610cb25760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b610cbd84838561290e565b50610cc933858561294b565b5060015b9392505050565b6006546001600160a01b03163314610d255760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b600654600160a01b900460ff16610d865760408051600160e51b62461bcd02815260206004820152600e60248201527f4e6f7420706175736564206e6f77000000000000000000000000000000000000604482015290519081900360640190fd5b60068054600160a01b60ff02191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b6006546000906001600160a01b03163314610e155760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b610e1f8383612a81565b6040805183815290516001600160a01b038516917f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885919081900360200190a250600192915050565b6006546001600160a01b03163314610eb85760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b6001600160a01b038116600081815260076020908152604091829020805460ff19169055815192835290517f4feb53e305297ab8fb8f3420c95ea04737addc254a7270d8fc4605d2b9c61dba9281900390910190a150565b6001600160a01b0382166000908152600860205260408120805482919084908110610f3757fe5b600091825260208083206002909202909101546001600160a01b038716835260089091526040909120805485908110610f6c57fe5b906000526020600020906002020160010154915091509250929050565b600654600160a01b900460ff1681565b6006546000906001600160a01b03163314610fed5760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b506003805460ff1916911515919091179055600190565b600080805b6001600160a01b03841660009081526008602052604090205481101561107d576001600160a01b0384166000908152600860205260409020805461107391908390811061105257fe5b906000526020600020906002020160010154836128b190919063ffffffff16565b9150600101611009565b50610ccd8161108b85612b62565b9063ffffffff6128b116565b6006546001600160a01b031633146110e85760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b6006546040516001600160a01b03909116907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a2600680546001600160a01b0319169055565b6006546000906001600160a01b031633146111865760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b6000821180156111ad57506001600160a01b03831660009081526004602052604090205442105b6111eb57604051600160e51b62461bcd02815260040180806020018281038252602e815260200180612dfc602e913960400191505060405180910390fd5b506001600160a01b0382166000908152600460205260409020805462015180830290039055600192915050565b6006546001600160a01b031633146112695760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b6001600160a01b03821660009081526008602052604090205481106112d85760408051600160e51b62461bcd02815260206004820152601460248201527f4e6f206c6f636b20696e666f726d6174696f6e2e000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0382166000908152600860205260409020805461133a91908390811061130157fe5b60009182526020808320600160029093020191909101546001600160a01b0386168352908290526040909120549063ffffffff6128b116565b6001600160a01b03831660008181526020818152604080832094909455600890529190912080547f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f191908490811061138e57fe5b9060005260206000209060020201600101546040518082815260200191505060405180910390a26001600160a01b03821660009081526008602052604081208054839081106113d957fe5b60009182526020808320600160029093020191909101929092556001600160a01b038416815260089091526040902054600019018114611498576001600160a01b03821660009081526008602052604090208054600019810190811061143b57fe5b906000526020600020906002020160086000846001600160a01b03166001600160a01b03168152602001908152602001600020828154811061147957fe5b6000918252602090912082546002909202019081556001918201549101555b6001600160a01b03821660009081526008602052604090208054906114c1906000198301612d6e565b505050565b6006546001600160a01b031633146115175760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b600654600160a01b900460ff161561156e5760408051600160e51b62461bcd02815260206004820152600f6024820152600160891b6e2830bab9b2b210313c9037bbb732b902604482015290519081900360640190fd5b60068054600160a01b60ff021916600160a01b1790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b6001600160a01b031660009081526004602052604090205490565b6006546001600160a01b0316331461161b5760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b8161162584612b62565b10156116765760408051600160e51b62461bcd0281526020600482015260156024820152600160591b742130b630b731b29034b9903a37b79039b6b0b6361702604482015290519081900360640190fd5b6001600160a01b03831660009081526020819052604090205461169f908363ffffffff612b7d16565b6001600160a01b03841660008181526020818152604080832094909455600881528382208451808601865242870180825281840189815283546001818101865594875295859020925160029096029092019485559051939091019290925583518681529081019190915282519192600080516020612eb883398151915292918290030190a2505050565b6006546001600160a01b0316331461177a5760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b6001600160a01b038116600081815260076020908152604091829020805460ff19166001179055815192835290517f8a5c4736a33c7b7f29a2c34ea9ff9608afc5718d56f6fd6dcbd2d3711a1a49139281900390910190a150565b6006546001600160a01b031681565b6006546000906001600160a01b031633146118385760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b6001600160a01b0384166118895760408051600160e51b62461bcd02815260206004820152600d6024820152600160981b6c77726f6e67206164647265737302604482015290519081900360640190fd5b60065461189e906001600160a01b0316612b62565b8311156118ed5760408051600160e51b62461bcd0281526020600482015260126024820152600160701b714e6f7420656e6f7567682062616c616e636502604482015290519081900360640190fd5b6006546001600160a01b0316600090815260208190526040902054611918908463ffffffff612b7d16565b600680546001600160a01b03908116600090815260208181526040808320959095558883168083526008825285832086518088018852428a0181528084018b81528254600181810185559387529585902091516002909602909101948555519301929092559254845188815294519194921692600080516020612e77833981519152928290030190a360408051848152428401602082015281516001600160a01b03871692600080516020612eb8833981519152928290030190a25060019392505050565b6006546000906001600160a01b03163314611a315760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b600082118015611a5857506001600160a01b03831660009081526004602052604090205442105b611a9657604051600160e51b62461bcd02815260040180806020018281038252602e815260200180612dfc602e913960400191505060405180910390fd5b506001600160a01b03821660009081526004602052604090208054620151808302019055600192915050565b60035460ff1690565b6006546001600160a01b03163314611b1c5760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b336000818152600460205260409020548290421015611b9f576001600160a01b038216600090815260056020908152604080832054918390529091205403811115611b9f5760408051600160e51b62461bcd02815260206004820152601d6024820152600080516020612e57833981519152604482015290519081900360640190fd5b611ba884612b62565b831115611bfa5760408051600160e51b62461bcd0281526020600482015260156024820152600160591b742130b630b731b29034b9903a37b79039b6b0b6361702604482015290519081900360640190fd5b611c048484612bdd565b6040805184815290516001600160a01b038616917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a250505050565b60035460ff1681565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109f7918590610c14908663ffffffff612b7d16565b60035460009060ff1615611cd657604051600160e51b62461bcd02815260040180806020018281038252602d815260200180612e2a602d913960400191505060405180910390fd5b336000818152600460205260409020548390421015611d59576001600160a01b038216600090815260056020908152604080832054918390529091205403811115611d595760408051600160e51b62461bcd02815260206004820152601d6024820152600080516020612e57833981519152604482015290519081900360640190fd5b3360009081526007602052604090205460ff1615611dc15760408051600160e51b62461bcd02815260206004820152601960248201527f53656e646572206163636f756e74206973206c6f636b65642e00000000000000604482015290519081900360640190fd5b600654600160a01b900460ff1615611e185760408051600160e51b62461bcd02815260206004820152600f6024820152600160891b6e2830bab9b2b210313c9037bbb732b902604482015290519081900360640190fd5b611e2133612646565b611e2b8585612ca7565b95945050505050565b6006546000906001600160a01b03163314611e885760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b6001600160a01b0384166000908152600560205260409020548211801590611ec757506001600160a01b03841660009081526004602052604090205442105b611f095760408051600160e51b62461bcd02815260206004820152601d6024820152600080516020612e57833981519152604482015290519081900360640190fd5b6001600160a01b03841615801590611f2957506001600160a01b03831615155b611f7d5760408051600160e51b62461bcd02815260206004820152600f60248201527f496e76616c696420616464726573730000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038416600090815260056020526040902080548390039055610ccd84848461294b565b6001600160a01b038116600090815260046020526040812054421015611fcf575060016109c2565b5060006109c2565b60096020526000908152604090205481565b4290565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6006546000906001600160a01b0316331461206c5760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b6001600160a01b0384166120bd5760408051600160e51b62461bcd02815260206004820152600d6024820152600160981b6c77726f6e67206164647265737302604482015290519081900360640190fd5b6006546120d2906001600160a01b0316612b62565b8311156121215760408051600160e51b62461bcd0281526020600482015260126024820152600160701b714e6f7420656e6f7567682062616c616e636502604482015290519081900360640190fd5b6006546001600160a01b031660009081526020819052604090205461214c908463ffffffff612b7d16565b600680546001600160a01b039081166000908152602081815260408083209590955588831680835260088252858320865180880188528981528084018b81528254600181810185559387529585902091516002909602909101948555519301929092559254845188815294519194921692600080516020612e77833981519152928290030190a3604080518481526020810184905281516001600160a01b03871692600080516020612eb8833981519152928290030190a25060019392505050565b60035460ff161561225357604051600160e51b62461bcd02815260040180806020018281038252602d815260200180612e2a602d913960400191505060405180910390fd5b6006546001600160a01b031633146122a45760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b81516122af57600080fd5b80518251146122bd57600080fd5b60005b82518110156114c15760008382815181106122d757fe5b6020026020010151905060008383815181106122ef57fe5b602002602001015190506123038282611c8e565b506001600160a01b0382166000818152600960209081526040918290208054850190558151928352820183905280517f2a2f3a6f457f222229acc6b14376a5d3f4344fae935675150a096e2f1056bd989281900390910190a150506001016122c0565b6001600160a01b031660009081526008602052604090205490565b6006546001600160a01b031633146123d25760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b816123dc84612b62565b101561242d5760408051600160e51b62461bcd0281526020600482015260156024820152600160591b742130b630b731b29034b9903a37b79039b6b0b6361702604482015290519081900360640190fd5b6001600160a01b038316600090815260208190526040902054612456908363ffffffff612b7d16565b6001600160a01b038416600081815260208181526040808320949094556008815283822084518086018652868152808301888152825460018181018555938652948490209151600290950290910193845551920191909155825185815290810184905282519192600080516020612eb883398151915292918290030190a2505050565b6001600160a01b031660009081526007602052604090205460ff1690565b6006546001600160a01b031633146125485760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b61255181612cb4565b50565b6001600160a01b03831661259c57604051600160e51b62461bcd028152600401808060200182810382526024815260200180612efd6024913960400191505060405180910390fd5b6001600160a01b0382166125e457604051600160e51b62461bcd028152600401808060200182810382526022815260200180612dda6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b60005b6001600160a01b038216600090815260086020526040902054811015612865576001600160a01b038216600090815260086020526040902080544291908390811061269057fe5b9060005260206000209060020201600001541161285d576001600160a01b038216600090815260086020526040902080546126d091908390811061130157fe5b6001600160a01b03831660008181526020818152604080832094909455600890529190912080547f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f191908490811061272457fe5b9060005260206000209060020201600101546040518082815260200191505060405180910390a26001600160a01b038216600090815260086020526040812080548390811061276f57fe5b60009182526020808320600160029093020191909101929092556001600160a01b038416815260089091526040902054600019018114612832576001600160a01b0382166000908152600860205260409020805460001981019081106127d157fe5b906000526020600020906002020160086000846001600160a01b03166001600160a01b03168152602001908152602001600020828154811061280f57fe5b600091825260209091208254600290920201908155600191820154910155600019015b6001600160a01b038216600090815260086020526040902080549061285b906000198301612d6e565b505b600101612649565b5050565b600061287684848461294b565b6001600160a01b038416600090815260016020908152604080832033808552925290912054610cc9918691610c14908663ffffffff612b7d16565b600082820183811015610ccd5760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b0392909216600090815260046020908152604080832060ff94909416620151800262ffffff164201909355600590522055600190565b6001600160a01b03831661299357604051600160e51b62461bcd028152600401808060200182810382526025815260200180612ed86025913960400191505060405180910390fd5b6001600160a01b0382166129db57604051600160e51b62461bcd028152600401808060200182810382526023815260200180612db76023913960400191505060405180910390fd5b6001600160a01b038316600090815260208190526040902054612a04908263ffffffff612b7d16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054612a39908263ffffffff6128b116565b6001600160a01b03808416600081815260208181526040918290209490945580518581529051919392871692600080516020612e7783398151915292918290030190a3505050565b6001600160a01b038216612adf5760408051600160e51b62461bcd02815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254612af2908263ffffffff6128b116565b6002556001600160a01b038216600090815260208190526040902054612b1e908263ffffffff6128b116565b6001600160a01b038316600081815260208181526040808320949094558351858152935192939192600080516020612e778339815191529281900390910190a35050565b6001600160a01b031660009081526020819052604090205490565b600082821115612bd75760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216612c2557604051600160e51b62461bcd028152600401808060200182810382526021815260200180612e976021913960400191505060405180910390fd5b600254612c38908263ffffffff612b7d16565b6002556001600160a01b038216600090815260208190526040902054612c64908263ffffffff612b7d16565b6001600160a01b03831660008181526020818152604080832094909455835185815293519193600080516020612e77833981519152929081900390910190a35050565b60006109f733848461294b565b6001600160a01b038116612d125760408051600160e51b62461bcd02815260206004820152600d60248201527f416c7265616479206f776e657200000000000000000000000000000000000000604482015290519081900360640190fd5b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b8154818355818111156114c1576000838152602090206114c191610a049160029182028101918502015b80821115612db25760008082556001820155600201612d98565b509056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373506c6561736520636865636b206164647265737320737461747573206f7220496e636f727265637420696e707574416c6c207472616e73616374696f6e7320617265206c6f636b656420666f72207468697320636f6e7472616374496e73756666696369656e7420756e6c6f636b65642062616c616e6365000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f206164647265737349eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a723058205a8a4e178444ca57894ebd5f881622e62e13e09ca7613573ea91783d6d3ebfc60029

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102695760003560e01c80638a57af6b11610151578063c2fb97f8116100c3578063de6baccb11610087578063de6baccb146107c1578063defcf51f146107f3578063df0345861461091a578063e2ab691d14610940578063e583983614610972578063f2fde38b1461099857610269565b8063c2fb97f814610709578063cb9bd15a1461073f578063ccd28a4c14610765578063d18e81b31461078b578063dd62ed3e1461079357610269565b806395d89b411161011557806395d89b411461029d5780639b9843df146106755780639dc29fac1461067d578063a02619e4146106a9578063a457c2d7146106b1578063a9059cbb146106dd57610269565b80638a57af6b1461059b5780638d1fdf2f146105cd5780638da5cb5b146105f3578063927a4a7b1461061757806394a6b7121461064957610269565b806340c10f19116101ea57806370a08231116101ae57806370a08231146104e7578063715018a61461050d5780637338e39d146105155780637eee288d146105415780638456cb591461056d578063894f879e1461057557610269565b806340c10f191461042957806345c8b1a61461045557806346cf1bb51461047b5780635c975abb146104c05780636b180d69146104c857610269565b8063313ce56711610231578063313ce56714610398578063378dc3dc146103b657806339509351146103be5780633ec45d89146103ea5780633f4ba83a1461041f57610269565b806304859ceb1461026e57806306fdde031461029d578063095ea7b31461031a57806318160ddd1461035a57806323b872dd14610362575b600080fd5b61028b6004803603602081101561028457600080fd5b50356109be565b60408051918252519081900360200190f35b6102a56109c7565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102df5781810151838201526020016102c7565b50505050905090810190601f16801561030c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103466004803603604081101561033057600080fd5b506001600160a01b0381351690602001356109ea565b604080519115158252519081900360200190f35b61028b610a00565b6103466004803603606081101561037857600080fd5b506001600160a01b03813581169160208101359091169060400135610a07565b6103a0610bc3565b6040805160ff9092168252519081900360200190f35b61028b610bc8565b610346600480360360408110156103d457600080fd5b506001600160a01b038135169060200135610bd8565b6103466004803603606081101561040057600080fd5b5080356001600160a01b0316906020810135906040013560ff16610c19565b610427610cd4565b005b6103466004803603604081101561043f57600080fd5b506001600160a01b038135169060200135610dc1565b6104276004803603602081101561046b57600080fd5b50356001600160a01b0316610e67565b6104a76004803603604081101561049157600080fd5b506001600160a01b038135169060200135610f10565b6040805192835260208301919091528051918290030190f35b610346610f89565b610346600480360360208110156104de57600080fd5b50351515610f99565b61028b600480360360208110156104fd57600080fd5b50356001600160a01b0316611004565b610427611097565b6103466004803603604081101561052b57600080fd5b506001600160a01b038135169060200135611132565b6104276004803603604081101561055757600080fd5b506001600160a01b038135169060200135611218565b6104276114c6565b61028b6004803603602081101561058b57600080fd5b50356001600160a01b03166115af565b610427600480360360608110156105b157600080fd5b506001600160a01b0381351690602081013590604001356115ca565b610427600480360360208110156105e357600080fd5b50356001600160a01b0316611729565b6105fb6117d5565b604080516001600160a01b039092168252519081900360200190f35b6103466004803603606081101561062d57600080fd5b506001600160a01b0381351690602081013590604001356117e4565b6103466004803603604081101561065f57600080fd5b506001600160a01b0381351690602001356119dd565b610346611ac2565b6104276004803603604081101561069357600080fd5b506001600160a01b038135169060200135611acb565b610346611c49565b610346600480360360408110156106c757600080fd5b506001600160a01b038135169060200135611c52565b610346600480360360408110156106f357600080fd5b506001600160a01b038135169060200135611c8e565b6103466004803603606081101561071f57600080fd5b506001600160a01b03813581169160208101359091169060400135611e34565b6103466004803603602081101561075557600080fd5b50356001600160a01b0316611fa7565b61028b6004803603602081101561077b57600080fd5b50356001600160a01b0316611fd7565b61028b611fe9565b61028b600480360360408110156107a957600080fd5b506001600160a01b0381358116916020013516611fed565b610346600480360360608110156107d757600080fd5b506001600160a01b038135169060208101359060400135612018565b6104276004803603604081101561080957600080fd5b81019060208101813564010000000081111561082457600080fd5b82018360208201111561083657600080fd5b8035906020019184602083028401116401000000008311171561085857600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156108a857600080fd5b8201836020820111156108ba57600080fd5b803590602001918460208302840111640100000000831117156108dc57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061220e945050505050565b61028b6004803603602081101561093057600080fd5b50356001600160a01b0316612366565b6104276004803603606081101561095657600080fd5b506001600160a01b038135169060208101359060400135612381565b6103466004803603602081101561098857600080fd5b50356001600160a01b03166124d9565b610427600480360360208110156109ae57600080fd5b50356001600160a01b03166124f7565b4281015b919050565b604051806040016040528060048152602001600160e01b63426f6e650281525081565b60006109f7338484612554565b50600192915050565b6002545b90565b60035460009060ff1615610a4f57604051600160e51b62461bcd02815260040180806020018281038252602d815260200180612e2a602d913960400191505060405180910390fd5b6001600160a01b03841660009081526004602052604090205484908390421015610add576001600160a01b038216600090815260056020908152604080832054918390529091205403811115610add5760408051600160e51b62461bcd02815260206004820152601d6024820152600080516020612e57833981519152604482015290519081900360640190fd5b600654600160a01b900460ff1615610b345760408051600160e51b62461bcd02815260206004820152600f6024820152600160891b6e2830bab9b2b210313c9037bbb732b902604482015290519081900360640190fd5b6001600160a01b03861660009081526007602052604090205460ff1615610ba55760408051600160e51b62461bcd02815260206004820152601760248201527f46726f6d206163636f756e74206973206c6f636b65642e000000000000000000604482015290519081900360640190fd5b610bae86612646565b610bb9868686612869565b9695505050505050565b601281565b6b033b2e3c9fd0803ce800000081565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109f7918590610c14908663ffffffff6128b116565b612554565b60035460009060ff1615610c6157604051600160e51b62461bcd02815260040180806020018281038252602d815260200180612e2a602d913960400191505060405180910390fd5b6006546001600160a01b03163314610cb25760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b610cbd84838561290e565b50610cc933858561294b565b5060015b9392505050565b6006546001600160a01b03163314610d255760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b600654600160a01b900460ff16610d865760408051600160e51b62461bcd02815260206004820152600e60248201527f4e6f7420706175736564206e6f77000000000000000000000000000000000000604482015290519081900360640190fd5b60068054600160a01b60ff02191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b6006546000906001600160a01b03163314610e155760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b610e1f8383612a81565b6040805183815290516001600160a01b038516917f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885919081900360200190a250600192915050565b6006546001600160a01b03163314610eb85760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b6001600160a01b038116600081815260076020908152604091829020805460ff19169055815192835290517f4feb53e305297ab8fb8f3420c95ea04737addc254a7270d8fc4605d2b9c61dba9281900390910190a150565b6001600160a01b0382166000908152600860205260408120805482919084908110610f3757fe5b600091825260208083206002909202909101546001600160a01b038716835260089091526040909120805485908110610f6c57fe5b906000526020600020906002020160010154915091509250929050565b600654600160a01b900460ff1681565b6006546000906001600160a01b03163314610fed5760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b506003805460ff1916911515919091179055600190565b600080805b6001600160a01b03841660009081526008602052604090205481101561107d576001600160a01b0384166000908152600860205260409020805461107391908390811061105257fe5b906000526020600020906002020160010154836128b190919063ffffffff16565b9150600101611009565b50610ccd8161108b85612b62565b9063ffffffff6128b116565b6006546001600160a01b031633146110e85760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b6006546040516001600160a01b03909116907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a2600680546001600160a01b0319169055565b6006546000906001600160a01b031633146111865760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b6000821180156111ad57506001600160a01b03831660009081526004602052604090205442105b6111eb57604051600160e51b62461bcd02815260040180806020018281038252602e815260200180612dfc602e913960400191505060405180910390fd5b506001600160a01b0382166000908152600460205260409020805462015180830290039055600192915050565b6006546001600160a01b031633146112695760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b6001600160a01b03821660009081526008602052604090205481106112d85760408051600160e51b62461bcd02815260206004820152601460248201527f4e6f206c6f636b20696e666f726d6174696f6e2e000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0382166000908152600860205260409020805461133a91908390811061130157fe5b60009182526020808320600160029093020191909101546001600160a01b0386168352908290526040909120549063ffffffff6128b116565b6001600160a01b03831660008181526020818152604080832094909455600890529190912080547f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f191908490811061138e57fe5b9060005260206000209060020201600101546040518082815260200191505060405180910390a26001600160a01b03821660009081526008602052604081208054839081106113d957fe5b60009182526020808320600160029093020191909101929092556001600160a01b038416815260089091526040902054600019018114611498576001600160a01b03821660009081526008602052604090208054600019810190811061143b57fe5b906000526020600020906002020160086000846001600160a01b03166001600160a01b03168152602001908152602001600020828154811061147957fe5b6000918252602090912082546002909202019081556001918201549101555b6001600160a01b03821660009081526008602052604090208054906114c1906000198301612d6e565b505050565b6006546001600160a01b031633146115175760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b600654600160a01b900460ff161561156e5760408051600160e51b62461bcd02815260206004820152600f6024820152600160891b6e2830bab9b2b210313c9037bbb732b902604482015290519081900360640190fd5b60068054600160a01b60ff021916600160a01b1790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b6001600160a01b031660009081526004602052604090205490565b6006546001600160a01b0316331461161b5760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b8161162584612b62565b10156116765760408051600160e51b62461bcd0281526020600482015260156024820152600160591b742130b630b731b29034b9903a37b79039b6b0b6361702604482015290519081900360640190fd5b6001600160a01b03831660009081526020819052604090205461169f908363ffffffff612b7d16565b6001600160a01b03841660008181526020818152604080832094909455600881528382208451808601865242870180825281840189815283546001818101865594875295859020925160029096029092019485559051939091019290925583518681529081019190915282519192600080516020612eb883398151915292918290030190a2505050565b6006546001600160a01b0316331461177a5760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b6001600160a01b038116600081815260076020908152604091829020805460ff19166001179055815192835290517f8a5c4736a33c7b7f29a2c34ea9ff9608afc5718d56f6fd6dcbd2d3711a1a49139281900390910190a150565b6006546001600160a01b031681565b6006546000906001600160a01b031633146118385760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b6001600160a01b0384166118895760408051600160e51b62461bcd02815260206004820152600d6024820152600160981b6c77726f6e67206164647265737302604482015290519081900360640190fd5b60065461189e906001600160a01b0316612b62565b8311156118ed5760408051600160e51b62461bcd0281526020600482015260126024820152600160701b714e6f7420656e6f7567682062616c616e636502604482015290519081900360640190fd5b6006546001600160a01b0316600090815260208190526040902054611918908463ffffffff612b7d16565b600680546001600160a01b03908116600090815260208181526040808320959095558883168083526008825285832086518088018852428a0181528084018b81528254600181810185559387529585902091516002909602909101948555519301929092559254845188815294519194921692600080516020612e77833981519152928290030190a360408051848152428401602082015281516001600160a01b03871692600080516020612eb8833981519152928290030190a25060019392505050565b6006546000906001600160a01b03163314611a315760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b600082118015611a5857506001600160a01b03831660009081526004602052604090205442105b611a9657604051600160e51b62461bcd02815260040180806020018281038252602e815260200180612dfc602e913960400191505060405180910390fd5b506001600160a01b03821660009081526004602052604090208054620151808302019055600192915050565b60035460ff1690565b6006546001600160a01b03163314611b1c5760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b336000818152600460205260409020548290421015611b9f576001600160a01b038216600090815260056020908152604080832054918390529091205403811115611b9f5760408051600160e51b62461bcd02815260206004820152601d6024820152600080516020612e57833981519152604482015290519081900360640190fd5b611ba884612b62565b831115611bfa5760408051600160e51b62461bcd0281526020600482015260156024820152600160591b742130b630b731b29034b9903a37b79039b6b0b6361702604482015290519081900360640190fd5b611c048484612bdd565b6040805184815290516001600160a01b038616917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a250505050565b60035460ff1681565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109f7918590610c14908663ffffffff612b7d16565b60035460009060ff1615611cd657604051600160e51b62461bcd02815260040180806020018281038252602d815260200180612e2a602d913960400191505060405180910390fd5b336000818152600460205260409020548390421015611d59576001600160a01b038216600090815260056020908152604080832054918390529091205403811115611d595760408051600160e51b62461bcd02815260206004820152601d6024820152600080516020612e57833981519152604482015290519081900360640190fd5b3360009081526007602052604090205460ff1615611dc15760408051600160e51b62461bcd02815260206004820152601960248201527f53656e646572206163636f756e74206973206c6f636b65642e00000000000000604482015290519081900360640190fd5b600654600160a01b900460ff1615611e185760408051600160e51b62461bcd02815260206004820152600f6024820152600160891b6e2830bab9b2b210313c9037bbb732b902604482015290519081900360640190fd5b611e2133612646565b611e2b8585612ca7565b95945050505050565b6006546000906001600160a01b03163314611e885760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b6001600160a01b0384166000908152600560205260409020548211801590611ec757506001600160a01b03841660009081526004602052604090205442105b611f095760408051600160e51b62461bcd02815260206004820152601d6024820152600080516020612e57833981519152604482015290519081900360640190fd5b6001600160a01b03841615801590611f2957506001600160a01b03831615155b611f7d5760408051600160e51b62461bcd02815260206004820152600f60248201527f496e76616c696420616464726573730000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038416600090815260056020526040902080548390039055610ccd84848461294b565b6001600160a01b038116600090815260046020526040812054421015611fcf575060016109c2565b5060006109c2565b60096020526000908152604090205481565b4290565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6006546000906001600160a01b0316331461206c5760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b6001600160a01b0384166120bd5760408051600160e51b62461bcd02815260206004820152600d6024820152600160981b6c77726f6e67206164647265737302604482015290519081900360640190fd5b6006546120d2906001600160a01b0316612b62565b8311156121215760408051600160e51b62461bcd0281526020600482015260126024820152600160701b714e6f7420656e6f7567682062616c616e636502604482015290519081900360640190fd5b6006546001600160a01b031660009081526020819052604090205461214c908463ffffffff612b7d16565b600680546001600160a01b039081166000908152602081815260408083209590955588831680835260088252858320865180880188528981528084018b81528254600181810185559387529585902091516002909602909101948555519301929092559254845188815294519194921692600080516020612e77833981519152928290030190a3604080518481526020810184905281516001600160a01b03871692600080516020612eb8833981519152928290030190a25060019392505050565b60035460ff161561225357604051600160e51b62461bcd02815260040180806020018281038252602d815260200180612e2a602d913960400191505060405180910390fd5b6006546001600160a01b031633146122a45760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b81516122af57600080fd5b80518251146122bd57600080fd5b60005b82518110156114c15760008382815181106122d757fe5b6020026020010151905060008383815181106122ef57fe5b602002602001015190506123038282611c8e565b506001600160a01b0382166000818152600960209081526040918290208054850190558151928352820183905280517f2a2f3a6f457f222229acc6b14376a5d3f4344fae935675150a096e2f1056bd989281900390910190a150506001016122c0565b6001600160a01b031660009081526008602052604090205490565b6006546001600160a01b031633146123d25760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b816123dc84612b62565b101561242d5760408051600160e51b62461bcd0281526020600482015260156024820152600160591b742130b630b731b29034b9903a37b79039b6b0b6361702604482015290519081900360640190fd5b6001600160a01b038316600090815260208190526040902054612456908363ffffffff612b7d16565b6001600160a01b038416600081815260208181526040808320949094556008815283822084518086018652868152808301888152825460018181018555938652948490209151600290950290910193845551920191909155825185815290810184905282519192600080516020612eb883398151915292918290030190a2505050565b6001600160a01b031660009081526007602052604090205460ff1690565b6006546001600160a01b031633146125485760408051600160e51b62461bcd0281526020600482015260096024820152600160b91b682737ba1037bbb732b902604482015290519081900360640190fd5b61255181612cb4565b50565b6001600160a01b03831661259c57604051600160e51b62461bcd028152600401808060200182810382526024815260200180612efd6024913960400191505060405180910390fd5b6001600160a01b0382166125e457604051600160e51b62461bcd028152600401808060200182810382526022815260200180612dda6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b60005b6001600160a01b038216600090815260086020526040902054811015612865576001600160a01b038216600090815260086020526040902080544291908390811061269057fe5b9060005260206000209060020201600001541161285d576001600160a01b038216600090815260086020526040902080546126d091908390811061130157fe5b6001600160a01b03831660008181526020818152604080832094909455600890529190912080547f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f191908490811061272457fe5b9060005260206000209060020201600101546040518082815260200191505060405180910390a26001600160a01b038216600090815260086020526040812080548390811061276f57fe5b60009182526020808320600160029093020191909101929092556001600160a01b038416815260089091526040902054600019018114612832576001600160a01b0382166000908152600860205260409020805460001981019081106127d157fe5b906000526020600020906002020160086000846001600160a01b03166001600160a01b03168152602001908152602001600020828154811061280f57fe5b600091825260209091208254600290920201908155600191820154910155600019015b6001600160a01b038216600090815260086020526040902080549061285b906000198301612d6e565b505b600101612649565b5050565b600061287684848461294b565b6001600160a01b038416600090815260016020908152604080832033808552925290912054610cc9918691610c14908663ffffffff612b7d16565b600082820183811015610ccd5760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b0392909216600090815260046020908152604080832060ff94909416620151800262ffffff164201909355600590522055600190565b6001600160a01b03831661299357604051600160e51b62461bcd028152600401808060200182810382526025815260200180612ed86025913960400191505060405180910390fd5b6001600160a01b0382166129db57604051600160e51b62461bcd028152600401808060200182810382526023815260200180612db76023913960400191505060405180910390fd5b6001600160a01b038316600090815260208190526040902054612a04908263ffffffff612b7d16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054612a39908263ffffffff6128b116565b6001600160a01b03808416600081815260208181526040918290209490945580518581529051919392871692600080516020612e7783398151915292918290030190a3505050565b6001600160a01b038216612adf5760408051600160e51b62461bcd02815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254612af2908263ffffffff6128b116565b6002556001600160a01b038216600090815260208190526040902054612b1e908263ffffffff6128b116565b6001600160a01b038316600081815260208181526040808320949094558351858152935192939192600080516020612e778339815191529281900390910190a35050565b6001600160a01b031660009081526020819052604090205490565b600082821115612bd75760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216612c2557604051600160e51b62461bcd028152600401808060200182810382526021815260200180612e976021913960400191505060405180910390fd5b600254612c38908263ffffffff612b7d16565b6002556001600160a01b038216600090815260208190526040902054612c64908263ffffffff612b7d16565b6001600160a01b03831660008181526020818152604080832094909455835185815293519193600080516020612e77833981519152929081900390910190a35050565b60006109f733848461294b565b6001600160a01b038116612d125760408051600160e51b62461bcd02815260206004820152600d60248201527f416c7265616479206f776e657200000000000000000000000000000000000000604482015290519081900360640190fd5b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b8154818355818111156114c1576000838152602090206114c191610a049160029182028101918502015b80821115612db25760008082556001820155600201612d98565b509056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373506c6561736520636865636b206164647265737320737461747573206f7220496e636f727265637420696e707574416c6c207472616e73616374696f6e7320617265206c6f636b656420666f72207468697320636f6e7472616374496e73756666696369656e7420756e6c6f636b65642062616c616e6365000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f206164647265737349eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a723058205a8a4e178444ca57894ebd5f881622e62e13e09ca7613573ea91783d6d3ebfc60029

Deployed Bytecode Sourcemap

10659:13774:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10659:13774:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23721:103;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23721:103:0;;:::i;:::-;;;;;;;;;;;;;;;;10689:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;10689:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5145:148;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5145:148:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;4225:91;;;:::i;18219:383::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;18219:383:0;;;;;;;;;;;;;;;;;:::i;10777:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10819:78;;;:::i;6429:206::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6429:206:0;;;;;;;;:::i;15087:246::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15087:246:0;;-1:-1:-1;;;;;15087:246:0;;;;;;;;;;;;;:::i;13307:105::-;;;:::i;:::-;;18681:227;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;18681:227:0;;;;;;;;:::i;13814:128::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13814:128:0;-1:-1:-1;;;;;13814:128:0;;:::i;20690:185::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;20690:185:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12597:26;;;:::i;14377:170::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14377:170:0;;;;:::i;19552:335::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19552:335:0;-1:-1:-1;;;;;19552:335:0;;:::i;11775:124::-;;;:::i;16205:365::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;16205:365:0;;;;;;;;:::i;21672:516::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;21672:516:0;;;;;;;;:::i;13111:103::-;;;:::i;15500:124::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15500:124:0;-1:-1:-1;;;;;15500:124:0;;:::i;21273:391::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;21273:391:0;;;;;;;;;;;;;:::i;13683:123::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13683:123:0;-1:-1:-1;;;;;13683:123:0;;:::i;11206:20::-;;;:::i;:::-;;;;-1:-1:-1;;;;;11206:20:0;;;;;;;;;;;;;;23107:516;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;23107:516:0;;;;;;;;;;;;;:::i;16754:365::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;16754:365:0;;;;;;;;:::i;14649:106::-;;;:::i;18990:258::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;18990:258:0;;;;;;;;:::i;10904:31::-;;;:::i;7138:216::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7138:216:0;;;;;;;;:::i;17900:311::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;17900:311:0;;;;;;;;:::i;22196:390::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;22196:390:0;;;;;;;;;;;;;;;;;:::i;15791:230::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15791:230:0;-1:-1:-1;;;;;15791:230:0;;:::i;23847:50::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23847:50:0;-1:-1:-1;;;;;23847:50:0;;:::i;23631:82::-;;;:::i;4864:134::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4864:134:0;;;;;;;;;;:::i;22594:505::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;22594:505:0;;;;;;;;;;;;;:::i;23962:468::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;23962:468:0;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;23962:468:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;23962:468:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;23962:468:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;23962:468:0;;;;;;;;-1:-1:-1;23962:468:0;;-1:-1:-1;;21:11;5:28;;2:2;;;46:1;43;36:12;2:2;23962:468:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;23962:468:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;23962:468:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;23962:468:0;;-1:-1:-1;23962:468:0;;-1:-1:-1;;;;;23962:468:0:i;20568:116::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20568:116:0;-1:-1:-1;;;;;20568:116:0;;:::i;20883:380::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;20883:380:0;;;;;;;;;;;;;:::i;13950:104::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13950:104:0;-1:-1:-1;;;;;13950:104:0;;:::i;12069:111::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12069:111:0;-1:-1:-1;;;;;12069:111:0;;:::i;23721:103::-;23804:3;:12;;23721:103;;;;:::o;10689:36::-;;;;;;;;;;;;;;-1:-1:-1;;;;;10689:36:0;;;;:::o;5145:148::-;5210:4;5227:36;5236:10;5248:7;5257:5;5227:8;:36::i;:::-;-1:-1:-1;5281:4:0;5145:148;;;;:::o;4225:91::-;4296:12;;4225:91;;:::o;18219:383::-;17278:11;;18434:4;;17278:11;;:20;17270:77;;;;-1:-1:-1;;;;;17270:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17635:14:0;;;;;;:4;:14;;;;;;18383:5;;18389:6;;17629:3;:20;17626:246;;;-1:-1:-1;;;;;17695:23:0;;;;;;:13;:23;;;;;;;;;17673:19;;;;;;;;:45;:63;-1:-1:-1;17670:67:0;17662:109;;;;;-1:-1:-1;;;;;17662:109:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17662:109:0;;;;;;;;;;;;;;;12781:6;;-1:-1:-1;;;12781:6:0;;;;12780:7;12772:35;;;;;-1:-1:-1;;;;;12772:35:0;;;;;;;;;;;;-1:-1:-1;;;;;12772:35:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;18466:14:0;;;;;;:7;:14;;;;;;;;18465:15;18457:51;;;;;-1:-1:-1;;;;;18457:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;18519:18;18531:5;18519:11;:18::i;:::-;18555:38;18574:5;18581:3;18586:6;18555:18;:38::i;:::-;18548:45;18219:383;-1:-1:-1;;;;;;18219:383:0:o;10777:35::-;10810:2;10777:35;:::o;10819:78::-;10859:38;10819:78;:::o;6429:206::-;6535:10;6509:4;6556:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;6556:32:0;;;;;;;;;;6509:4;;6526:79;;6547:7;;6556:48;;6593:10;6556:48;:36;:48;:::i;:::-;6526:8;:79::i;15087:246::-;17278:11;;15207:4;;17278:11;;:20;17270:77;;;;-1:-1:-1;;;;;17270:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11462:5;;-1:-1:-1;;;;;11462:5:0;11448:10;:19;11440:41;;;;;-1:-1:-1;;;;;11440:41:0;;;;;;;;;;;;-1:-1:-1;;;;;11440:41:0;;;;;;;;;;;;;;;15224:36;15239:2;15242:11;15254:5;15224:14;:36::i;:::-;;15271:32;15281:10;15293:2;15297:5;15271:9;:32::i;:::-;-1:-1:-1;15321:4:0;11492:1;15087:246;;;;;:::o;13307:105::-;11462:5;;-1:-1:-1;;;;;11462:5:0;11448:10;:19;11440:41;;;;;-1:-1:-1;;;;;11440:41:0;;;;;;;;;;;;-1:-1:-1;;;;;11440:41:0;;;;;;;;;;;;;;;12976:6;;-1:-1:-1;;;12976:6:0;;;;12968:33;;;;;-1:-1:-1;;;;;12968:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13365:6;:14;;-1:-1:-1;;;;;;13365:14:0;;;13395:9;;;;13374:5;;13395:9;13307:105::o;18681:227::-;11462:5;;18797:4;;-1:-1:-1;;;;;11462:5:0;11448:10;:19;11440:41;;;;;-1:-1:-1;;;;;11440:41:0;;;;;;;;;;;;-1:-1:-1;;;;;11440:41:0;;;;;;;;;;;;;;;18819:25;18831:3;18836:7;18819:11;:25::i;:::-;18860:18;;;;;;;;-1:-1:-1;;;;;18860:18:0;;;;;;;;;;;;;-1:-1:-1;18896:4:0;18681:227;;;;:::o;13814:128::-;11462:5;;-1:-1:-1;;;;;11462:5:0;11448:10;:19;11440:41;;;;;-1:-1:-1;;;;;11440:41:0;;;;;;;;;;;;-1:-1:-1;;;;;11440:41:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;13877:16:0;;13896:5;13877:16;;;:7;:16;;;;;;;;;:24;;-1:-1:-1;;13877:24:0;;;13917:17;;;;;;;;;;;;;;;;;13814:128;:::o;20690:185::-;-1:-1:-1;;;;;20798:17:0;;20761:7;20798:17;;;:8;:17;;;;;:23;;20761:7;;20798:17;20816:4;;20798:23;;;;;;;;;;;;;;;;;;;;;:35;-1:-1:-1;;;;;20835:17:0;;;;:8;:17;;;;;;;:23;;20853:4;;20835:23;;;;;;;;;;;;;;;;:31;;;20790:77;;;;20690:185;;;;;:::o;12597:26::-;;;-1:-1:-1;;;12597:26:0;;;;;:::o;14377:170::-;11462:5;;14464:4;;-1:-1:-1;;;;;11462:5:0;11448:10;:19;11440:41;;;;;-1:-1:-1;;;;;11440:41:0;;;;;;;;;;;;-1:-1:-1;;;;;11440:41:0;;;;;;;;;;;;;;;-1:-1:-1;14486:11:0;:31;;-1:-1:-1;;14486:31:0;;;;;;;;;;-1:-1:-1;;14377:170:0:o;19552:335::-;19609:15;;;19673:146;-1:-1:-1;;;;;19696:17:0;;;;;;:8;:17;;;;;:24;19692:28;;19673:146;;;-1:-1:-1;;;;;19778:17:0;;;;;;:8;:17;;;;;:20;;19760:47;;19778:17;19796:1;;19778:20;;;;;;;;;;;;;;;;:28;;;19760:13;:17;;:47;;;;:::i;:::-;19744:63;-1:-1:-1;19723:3:0;;19673:146;;;;19836:43;19865:13;19836:24;19852:7;19836:15;:24::i;:::-;:28;:43;:28;:43;:::i;11775:124::-;11462:5;;-1:-1:-1;;;;;11462:5:0;11448:10;:19;11440:41;;;;;-1:-1:-1;;;;;11440:41:0;;;;;;;;;;;;-1:-1:-1;;;;;11440:41:0;;;;;;;;;;;;;;;11856:5;;11837:25;;-1:-1:-1;;;;;11856:5:0;;;;11837:25;;11856:5;;11837:25;11873:5;:18;;-1:-1:-1;;;;;;11873:18:0;;;11775:124::o;16205:365::-;11462:5;;16318:4;;-1:-1:-1;;;;;11462:5:0;11448:10;:19;11440:41;;;;;-1:-1:-1;;;;;11440:41:0;;;;;;;;;;;;-1:-1:-1;;;;;11440:41:0;;;;;;;;;;;;;;;16361:1;16344:14;:18;:51;;;;-1:-1:-1;;;;;;16366:23:0;;;;;;:4;:23;;;;;;16392:3;-1:-1:-1;16344:51:0;16336:110;;;;-1:-1:-1;;;;;16336:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16485:23:0;;;;;;:4;:23;;;;;;;16529:6;16512:23;;16485:51;;16459:77;;-1:-1:-1;16205:365:0;;;;:::o;21672:516::-;11462:5;;-1:-1:-1;;;;;11462:5:0;11448:10;:19;11440:41;;;;;-1:-1:-1;;;;;11440:41:0;;;;;;;;;;;;-1:-1:-1;;;;;11440:41:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;21756:17:0;;;;;;:8;:17;;;;;:24;21752:28;;21744:61;;;;;-1:-1:-1;;;;;21744:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21862:17:0;;;;;;:8;:17;;;;;:20;;21839:52;;21862:17;21880:1;;21862:20;;;;;;;;;;;;;;:28;:20;;;;;:28;;;;;-1:-1:-1;;;;;21839:18:0;;;;;;;;;;;;;;:52;:22;:52;:::i;:::-;-1:-1:-1;;;;;21818:18:0;;:9;:18;;;;;;;;;;;:73;;;;21923:8;:17;;;;;;:20;;21907:45;;21923:17;21941:1;;21923:20;;;;;;;;;;;;;;;;:28;;;21907:45;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21963:17:0;;21994:1;21963:17;;;:8;:17;;;;;:20;;21981:1;;21963:20;;;;;;;;;;;;;;:28;:20;;;;;:28;;;;:32;;;;-1:-1:-1;;;;;22017:17:0;;;;:8;:17;;;;;;:24;-1:-1:-1;;22017:28:0;22012:33;;22008:136;;-1:-1:-1;;;;;22085:17:0;;;;;;:8;:17;;;;;22103:24;;-1:-1:-1;;22103:28:0;;;22085:47;;;;;;;;;;;;;;;;22062:8;:17;22071:7;-1:-1:-1;;;;;22062:17:0;-1:-1:-1;;;;;22062:17:0;;;;;;;;;;;;22080:1;22062:20;;;;;;;;;;;;;;;;:70;;:20;;;;;:70;;;;;;;;;;;22008:136;-1:-1:-1;;;;;22154:17:0;;;;;;:8;:17;;;;;:26;;;;;-1:-1:-1;;22154:26:0;;;:::i;:::-;;21672:516;;:::o;13111:103::-;11462:5;;-1:-1:-1;;;;;11462:5:0;11448:10;:19;11440:41;;;;;-1:-1:-1;;;;;11440:41:0;;;;;;;;;;;;-1:-1:-1;;;;;11440:41:0;;;;;;;;;;;;;;;12781:6;;-1:-1:-1;;;12781:6:0;;;;12780:7;12772:35;;;;;-1:-1:-1;;;;;12772:35:0;;;;;;;;;;;;-1:-1:-1;;;;;12772:35:0;;;;;;;;;;;;;;;13170:6;:13;;-1:-1:-1;;;;;;13170:13:0;-1:-1:-1;;;13170:13:0;;;13199:7;;;;13170:13;;13199:7;13111:103::o;15500:124::-;-1:-1:-1;;;;;15600:14:0;15573:7;15600:14;;;:4;:14;;;;;;;15500:124::o;21273:391::-;11462:5;;-1:-1:-1;;;;;11462:5:0;11448:10;:19;11440:41;;;;;-1:-1:-1;;;;;11440:41:0;;;;;;;;;;;;-1:-1:-1;;;;;11440:41:0;;;;;;;;;;;;;;;21410:7;21382:24;21398:7;21382:15;:24::i;:::-;:35;;21374:69;;;;;-1:-1:-1;;;;;21374:69:0;;;;;;;;;;;;-1:-1:-1;;;;;21374:69:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;21475:18:0;;:9;:18;;;;;;;;;;;:31;;21498:7;21475:31;:22;:31;:::i;:::-;-1:-1:-1;;;;;21454:18:0;;:9;:18;;;;;;;;;;;:52;;;;21517:8;:17;;;;;21554:35;;;;;;;21563:3;:16;;21554:35;;;;;;;;;27:10:-1;;39:1;23:18;;;45:23;;21517:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21616:40;;;;;;;;;;;;;;21454:18;;-1:-1:-1;;;;;;;;;;;21616:40:0;;;;;;;;21273:391;;;:::o;13683:123::-;11462:5;;-1:-1:-1;;;;;11462:5:0;11448:10;:19;11440:41;;;;;-1:-1:-1;;;;;11440:41:0;;;;;;;;;;;;-1:-1:-1;;;;;11440:41:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;13744:16:0;;;;;;:7;:16;;;;;;;;;:23;;-1:-1:-1;;13744:23:0;13763:4;13744:23;;;13783:15;;;;;;;;;;;;;;;;;13683:123;:::o;11206:20::-;;;-1:-1:-1;;;;;11206:20:0;;:::o;23107:516::-;11462:5;;23213:4;;-1:-1:-1;;;;;11462:5:0;11448:10;:19;11440:41;;;;;-1:-1:-1;;;;;11440:41:0;;;;;;;;;;;;-1:-1:-1;;;;;11440:41:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;23238:17:0;;23230:43;;;;;-1:-1:-1;;;;;23230:43:0;;;;;;;;;;;;-1:-1:-1;;;;;23230:43:0;;;;;;;;;;;;;;;23318:5;;23302:22;;-1:-1:-1;;;;;23318:5:0;23302:15;:22::i;:::-;23292:6;:32;;23284:63;;;;;-1:-1:-1;;;;;23284:63:0;;;;;;;;;;;;-1:-1:-1;;;;;23284:63:0;;;;;;;;;;;;;;;23389:5;;-1:-1:-1;;;;;23389:5:0;23379:9;:16;;;;;;;;;;;:28;;23400:6;23379:28;:20;:28;:::i;:::-;23370:5;;;-1:-1:-1;;;;;23370:5:0;;;23360:9;:16;;;;;;;;;;;:47;;;;23418:13;;;;;;:8;:13;;;;;23451:34;;;;;;;23460:3;:16;;23451:34;;;;;;;;27:10:-1;;23370:5:0;23:18:-1;;;45:23;;23418:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;23521:5;;23512:28;;;;;;;23418:13;;23521:5;;;-1:-1:-1;;;;;;;;;;;23512:28:0;;;;;;;23556:35;;;;;;23574:3;:16;;23556:35;;;;;;-1:-1:-1;;;;;23556:35:0;;;-1:-1:-1;;;;;;;;;;;23556:35:0;;;;;;;-1:-1:-1;23611:4:0;23107:516;;;;;:::o;16754:365::-;11462:5;;16867:4;;-1:-1:-1;;;;;11462:5:0;11448:10;:19;11440:41;;;;;-1:-1:-1;;;;;11440:41:0;;;;;;;;;;;;-1:-1:-1;;;;;11440:41:0;;;;;;;;;;;;;;;16910:1;16893:14;:18;:51;;;;-1:-1:-1;;;;;;16915:23:0;;;;;;:4;:23;;;;;;16941:3;-1:-1:-1;16893:51:0;16885:110;;;;-1:-1:-1;;;;;16885:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17034:23:0;;;;;;:4;:23;;;;;;;17078:6;17061:23;;17034:51;17008:77;;-1:-1:-1;16754:365:0;;;;:::o;14649:106::-;14736:11;;;;14649:106;:::o;18990:258::-;11462:5;;-1:-1:-1;;;;;11462:5:0;11448:10;:19;11440:41;;;;;-1:-1:-1;;;;;11440:41:0;;;;;;;;;;;;-1:-1:-1;;;;;11440:41:0;;;;;;;;;;;;;;;19074:10;17635:14;;;;:4;:14;;;;;;19085:6;;17629:3;:20;17626:246;;;-1:-1:-1;;;;;17695:23:0;;;;;;:13;:23;;;;;;;;;17673:19;;;;;;;;:45;:63;-1:-1:-1;17670:67:0;17662:109;;;;;-1:-1:-1;;;;;17662:109:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17662:109:0;;;;;;;;;;;;;;;19127:21;19143:4;19127:15;:21::i;:::-;19117:6;:31;;19109:65;;;;;-1:-1:-1;;;;;19109:65:0;;;;;;;;;;;;-1:-1:-1;;;;;19109:65:0;;;;;;;;;;;;;;;19187:19;19193:4;19199:6;19187:5;:19::i;:::-;19222:18;;;;;;;;-1:-1:-1;;;;;19222:18:0;;;;;;;;;;;;;11492:1;;18990:258;;:::o;10904:31::-;;;;;;:::o;7138:216::-;7249:10;7223:4;7270:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;7270:32:0;;;;;;;;;;7223:4;;7240:84;;7261:7;;7270:53;;7307:15;7270:53;:36;:53;:::i;17900:311::-;17278:11;;18113:4;;17278:11;;:20;17270:77;;;;-1:-1:-1;;;;;17270:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18036:10;17635:14;;;;:4;:14;;;;;;18047:6;;17629:3;:20;17626:246;;;-1:-1:-1;;;;;17695:23:0;;;;;;:13;:23;;;;;;;;;17673:19;;;;;;;;:45;:63;-1:-1:-1;17670:67:0;17662:109;;;;;-1:-1:-1;;;;;17662:109:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17662:109:0;;;;;;;;;;;;;;;13614:10;13606:19;;;;:7;:19;;;;;;;;13605:20;13597:58;;;;;-1:-1:-1;;;;;13597:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12781:6;;-1:-1:-1;;;12781:6:0;;;;12780:7;12772:35;;;;;-1:-1:-1;;;;;12772:35:0;;;;;;;;;;;;-1:-1:-1;;;;;12772:35:0;;;;;;;;;;;;;;;18135:23;18147:10;18135:11;:23::i;:::-;18176:27;18191:3;18196:6;18176:14;:27::i;:::-;18169:34;17900:311;-1:-1:-1;;;;;17900:311:0:o;22196:390::-;11462:5;;22295:4;;-1:-1:-1;;;;;11462:5:0;11448:10;:19;11440:41;;;;;-1:-1:-1;;;;;11440:41:0;;;;;;;;;;;;-1:-1:-1;;;;;11440:41:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;22320:19:0;;;;;;:13;:19;;;;;;:28;-1:-1:-1;22320:28:0;;;22319:52;;-1:-1:-1;;;;;;22360:10:0;;;;;;:4;:10;;;;;;22354:3;:16;22319:52;22311:94;;;;;-1:-1:-1;;;;;22311:94:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;22311:94:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;22424:18:0;;;;;;:38;;-1:-1:-1;;;;;;22446:16:0;;;;22424:38;22416:66;;;;;-1:-1:-1;;;;;22416:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22515:19:0;;;;;;:13;:19;;;;;;;:27;;;22493:49;;22553:24;22529:4;22568:2;22537:5;22553:9;:24::i;15791:230::-;-1:-1:-1;;;;;15887:17:0;;15858:4;15887:17;;;:4;:17;;;;;;15881:3;:23;15877:134;;;-1:-1:-1;15930:4:0;15923:11;;15877:134;-1:-1:-1;15991:5:0;15984:12;;23847:50;;;;;;;;;;;;;:::o;23631:82::-;23702:3;23631:82;:::o;4864:134::-;-1:-1:-1;;;;;4963:18:0;;;4936:7;4963:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4864:134::o;22594:505::-;11462:5;;22697:4;;-1:-1:-1;;;;;11462:5:0;11448:10;:19;11440:41;;;;;-1:-1:-1;;;;;11440:41:0;;;;;;;;;;;;-1:-1:-1;;;;;11440:41:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;22722:17:0;;22714:43;;;;;-1:-1:-1;;;;;22714:43:0;;;;;;;;;;;;-1:-1:-1;;;;;22714:43:0;;;;;;;;;;;;;;;22802:5;;22786:22;;-1:-1:-1;;;;;22802:5:0;22786:15;:22::i;:::-;22776:6;:32;;22768:63;;;;;-1:-1:-1;;;;;22768:63:0;;;;;;;;;;;;-1:-1:-1;;;;;22768:63:0;;;;;;;;;;;;;;;22873:5;;-1:-1:-1;;;;;22873:5:0;22863:9;:16;;;;;;;;;;;:28;;22884:6;22863:28;:20;:28;:::i;:::-;22854:5;;;-1:-1:-1;;;;;22854:5:0;;;22844:9;:16;;;;;;;;;;;:47;;;;22902:13;;;;;;:8;:13;;;;;22935:30;;;;;;;;;;;;;;;;27:10:-1;;22854:5:0;23:18:-1;;;45:23;;22902:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;23001:5;;22992:28;;;;;;;22902:13;;23001:5;;;-1:-1:-1;;;;;;;;;;;22992:28:0;;;;;;;23036:31;;;;;;;;;;;;;;-1:-1:-1;;;;;23036:31:0;;;-1:-1:-1;;;;;;;;;;;23036:31:0;;;;;;;-1:-1:-1;23087:4:0;22594:505;;;;;:::o;23962:468::-;17278:11;;;;:20;17270:77;;;;-1:-1:-1;;;;;17270:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11462:5;;-1:-1:-1;;;;;11462:5:0;11448:10;:19;11440:41;;;;;-1:-1:-1;;;;;11440:41:0;;;;;;;;;;;;-1:-1:-1;;;;;11440:41:0;;;;;;;;;;;;;;;24094:16;;24086:30;;;;;;24151:6;:13;24131:9;:16;:33;24123:42;;;;;;24179:9;24174:251;24198:9;:16;24194:1;:20;24174:251;;;24230:16;24249:9;24259:1;24249:12;;;;;;;;;;;;;;24230:31;;24270:14;24287:6;24294:1;24287:9;;;;;;;;;;;;;;24270:26;;24307;24316:8;24326:6;24307:8;:26::i;:::-;-1:-1:-1;;;;;;24342:24:0;;;;;;:14;:24;;;;;;;;;:34;;;;;;24392:25;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24216:3:0;;24174:251;;20568:116;-1:-1:-1;;;;;20652:17:0;20625:7;20652:17;;;:8;:17;;;;;:24;;20568:116::o;20883:380::-;11462:5;;-1:-1:-1;;;;;11462:5:0;11448:10;:19;11440:41;;;;;-1:-1:-1;;;;;11440:41:0;;;;;;;;;;;;-1:-1:-1;;;;;11440:41:0;;;;;;;;;;;;;;;21017:7;20989:24;21005:7;20989:15;:24::i;:::-;:35;;20981:69;;;;;-1:-1:-1;;;;;20981:69:0;;;;;;;;;;;;-1:-1:-1;;;;;20981:69:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;21082:18:0;;:9;:18;;;;;;;;;;;:31;;21105:7;21082:31;:22;:31;:::i;:::-;-1:-1:-1;;;;;21061:18:0;;:9;:18;;;;;;;;;;;:52;;;;21124:8;:17;;;;;21161:31;;;;;;;;;;;;;;;;27:10:-1;;39:1;23:18;;;45:23;;21124:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;21219:36;;;;;;;;;;;;;21061:18;;-1:-1:-1;;;;;;;;;;;21219:36:0;;;;;;;;20883:380;;;:::o;13950:104::-;-1:-1:-1;;;;;14030:16:0;14006:4;14030:16;;;:7;:16;;;;;;;;;13950:104::o;12069:111::-;11462:5;;-1:-1:-1;;;;;11462:5:0;11448:10;:19;11440:41;;;;;-1:-1:-1;;;;;11440:41:0;;;;;;;;;;;;-1:-1:-1;;;;;11440:41:0;;;;;;;;;;;;;;;12143:29;12162:9;12143:18;:29::i;:::-;12069:111;:::o;9940:335::-;-1:-1:-1;;;;;10033:19:0;;10025:68;;;;-1:-1:-1;;;;;10025:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10112:21:0;;10104:68;;;;-1:-1:-1;;;;;10104:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10185:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:35;;;10236:31;;;;;;;;;;;;;;;;;9940:335;;;:::o;19895:667::-;19959:9;19955:600;-1:-1:-1;;;;;19978:17:0;;;;;;:8;:17;;;;;:24;19974:28;;19955:600;;;-1:-1:-1;;;;;20030:17:0;;;;;;:8;:17;;;;;:20;;20066:3;;20030:17;20048:1;;20030:20;;;;;;;;;;;;;;;;:32;;;:39;20026:518;;-1:-1:-1;;;;;20134:17:0;;;;;;:8;:17;;;;;:20;;20111:52;;20134:17;20152:1;;20134:20;;;;;20111:52;-1:-1:-1;;;;;20090:18:0;;:9;:18;;;;;;;;;;;:73;;;;20203:8;:17;;;;;;:20;;20187:45;;20203:17;20221:1;;20203:20;;;;;;;;;;;;;;;;:28;;;20187:45;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20251:17:0;;20282:1;20251:17;;;:8;:17;;;;;:20;;20269:1;;20251:20;;;;;;;;;;;;;;:28;:20;;;;;:28;;;;:32;;;;-1:-1:-1;;;;;20313:17:0;;;;:8;:17;;;;;;:24;-1:-1:-1;;20313:28:0;20308:33;;20304:178;;-1:-1:-1;;;;;20389:17:0;;;;;;:8;:17;;;;;20407:24;;-1:-1:-1;;20407:28:0;;;20389:47;;;;;;;;;;;;;;;;20366:8;:17;20375:7;-1:-1:-1;;;;;20366:17:0;-1:-1:-1;;;;;20366:17:0;;;;;;;;;;;;20384:1;20366:20;;;;;;;;;;;;;;;;:70;;:20;;;;;:70;;;;;;;;;;;-1:-1:-1;;20459:3:0;20304:178;-1:-1:-1;;;;;20500:17:0;;;;;;:8;:17;;;;;:26;;;;;-1:-1:-1;;20500:26:0;;;:::i;:::-;;20026:518;20005:3;;19955:600;;;;19895:667;:::o;5764:256::-;5853:4;5870:36;5880:6;5888:9;5899:6;5870:9;:36::i;:::-;-1:-1:-1;;;;;5946:19:0;;;;;;:11;:19;;;;;;;;5934:10;5946:31;;;;;;;;;5917:73;;5926:6;;5946:43;;5982:6;5946:43;:35;:43;:::i;1381:181::-;1439:7;1471:5;;;1495:6;;;;1487:46;;;;;-1:-1:-1;;;;;1487:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;14829:247;-1:-1:-1;;;;;14945:20:0;;;;14929:4;14945:20;;;:4;:20;;;;;;;;14975;;;;;14989:6;14975:20;14968:28;;:3;:28;14945:51;;;15007:13;:29;;;:38;15063:4;;14829:247::o;7844:429::-;-1:-1:-1;;;;;7942:20:0;;7934:70;;;;-1:-1:-1;;;;;7934:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8023:23:0;;8015:71;;;;-1:-1:-1;;;;;8015:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8119:17:0;;:9;:17;;;;;;;;;;;:29;;8141:6;8119:29;:21;:29;:::i;:::-;-1:-1:-1;;;;;8099:17:0;;;:9;:17;;;;;;;;;;;:49;;;;8182:20;;;;;;;:32;;8207:6;8182:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;8159:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;8230:35;;;;;;;8159:20;;8230:35;;;;-1:-1:-1;;;;;;;;;;;8230:35:0;;;;;;;;7844:429;;;:::o;8554:308::-;-1:-1:-1;;;;;8630:21:0;;8622:65;;;;;-1:-1:-1;;;;;8622:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8715:12;;:24;;8732:6;8715:24;:16;:24;:::i;:::-;8700:12;:39;-1:-1:-1;;;;;8771:18:0;;:9;:18;;;;;;;;;;;:30;;8794:6;8771:30;:22;:30;:::i;:::-;-1:-1:-1;;;;;8750:18:0;;:9;:18;;;;;;;;;;;:51;;;;8817:37;;;;;;;8750:18;;:9;;-1:-1:-1;;;;;;;;;;;8817:37:0;;;;;;;;;8554:308;;:::o;4322:110::-;-1:-1:-1;;;;;4406:18:0;4379:7;4406:18;;;;;;;;;;;;4322:110::o;1570:184::-;1628:7;1661:1;1656;:6;;1648:49;;;;;-1:-1:-1;;;;;1648:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1720:5:0;;;1570:184::o;9194:306::-;-1:-1:-1;;;;;9269:21:0;;9261:67;;;;-1:-1:-1;;;;;9261:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9356:12;;:23;;9373:5;9356:23;:16;:23;:::i;:::-;9341:12;:38;-1:-1:-1;;;;;9411:18:0;;:9;:18;;;;;;;;;;;:29;;9434:5;9411:29;:22;:29;:::i;:::-;-1:-1:-1;;;;;9390:18:0;;:9;:18;;;;;;;;;;;:50;;;;9456:36;;;;;;;9390:9;;-1:-1:-1;;;;;;;;;;;9456:36:0;;;;;;;;;;9194:306;;:::o;4645:156::-;4714:4;4731:40;4741:10;4753:9;4764:6;4731:9;:40::i;12323:206::-;-1:-1:-1;;;;;12398:23:0;;12390:49;;;;;-1:-1:-1;;;;;12390:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12476:5;;12455:38;;-1:-1:-1;;;;;12455:38:0;;;;12476:5;;12455:38;;12476:5;;12455:38;12504:5;:17;;-1:-1:-1;;;;;;12504:17:0;-1:-1:-1;;;;;12504:17:0;;;;;;;;;;12323:206::o;10659:13774::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Swarm Source

bzzr://5a8a4e178444ca57894ebd5f881622e62e13e09ca7613573ea91783d6d3ebfc6

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

DogData is about improving dog welfare and saving dog owners money. DogData leverages the knowledge and experience of dogs breeders using technology and a gamified system to make dog welfare rewarding. Bone coins are used as an exchange mechanism representing the value of the Dog’s Life Data.

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.