Token
Locked Hubble Protocol Shares (xHUBBLE)
ERC-20
Overview
Max Total Supply
1,436.45 xHUBBLE
Holders
38
Market
Price
-
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
20 xHUBBLELoading...
Loading
Loading...
Loading
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
LockedHubble
Compiler Version
v0.8.28+commit.7893614a
Contract Source Code (Solidity)
/** *Submitted for verification at testnet.sonicscan.org on 2025-02-21 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; 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); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } // OpenZeppelin Contracts (last updated v5.1.0) (utils/structs/EnumerableSet.sol) // This file was procedurally generated from scripts/generate/templates/EnumerableSet.js. pragma solidity ^0.8.20; /** * @dev Library for managing * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive * types. * * Sets have the following properties: * * - Elements are added, removed, and checked for existence in constant time * (O(1)). * - Elements are enumerated in O(n). No guarantees are made on the ordering. * * ```solidity * contract Example { * // Add the library methods * using EnumerableSet for EnumerableSet.AddressSet; * * // Declare a set state variable * EnumerableSet.AddressSet private mySet; * } * ``` * * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`) * and `uint256` (`UintSet`) are supported. * * [WARNING] * ==== * Trying to delete such a structure from storage will likely result in data corruption, rendering the structure * unusable. * See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info. * * In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an * array of EnumerableSet. * ==== */ library EnumerableSet { // To implement this library for multiple types with as little code // repetition as possible, we write it in terms of a generic Set type with // bytes32 values. // The Set implementation uses private functions, and user-facing // implementations (such as AddressSet) are just wrappers around the // underlying Set. // This means that we can only create new EnumerableSets for types that fit // in bytes32. struct Set { // Storage of set values bytes32[] _values; // Position is the index of the value in the `values` array plus 1. // Position 0 is used to mean a value is not in the set. mapping(bytes32 value => uint256) _positions; } /** * @dev Add a value to a set. O(1). * * Returns true if the value was added to the set, that is if it was not * already present. */ function _add(Set storage set, bytes32 value) private returns (bool) { if (!_contains(set, value)) { set._values.push(value); // The value is stored at length-1, but we add 1 to all indexes // and use 0 as a sentinel value set._positions[value] = set._values.length; return true; } else { return false; } } /** * @dev Removes a value from a set. O(1). * * Returns true if the value was removed from the set, that is if it was * present. */ function _remove(Set storage set, bytes32 value) private returns (bool) { // We cache the value's position to prevent multiple reads from the same storage slot uint256 position = set._positions[value]; if (position != 0) { // Equivalent to contains(set, value) // To delete an element from the _values array in O(1), we swap the element to delete with the last one in // the array, and then remove the last element (sometimes called as 'swap and pop'). // This modifies the order of the array, as noted in {at}. uint256 valueIndex = position - 1; uint256 lastIndex = set._values.length - 1; if (valueIndex != lastIndex) { bytes32 lastValue = set._values[lastIndex]; // Move the lastValue to the index where the value to delete is set._values[valueIndex] = lastValue; // Update the tracked position of the lastValue (that was just moved) set._positions[lastValue] = position; } // Delete the slot where the moved value was stored set._values.pop(); // Delete the tracked position for the deleted slot delete set._positions[value]; return true; } else { return false; } } /** * @dev Returns true if the value is in the set. O(1). */ function _contains(Set storage set, bytes32 value) private view returns (bool) { return set._positions[value] != 0; } /** * @dev Returns the number of values on the set. O(1). */ function _length(Set storage set) private view returns (uint256) { return set._values.length; } /** * @dev Returns the value stored at position `index` in the set. O(1). * * Note that there are no guarantees on the ordering of values inside the * array, and it may change when more values are added or removed. * * Requirements: * * - `index` must be strictly less than {length}. */ function _at(Set storage set, uint256 index) private view returns (bytes32) { return set._values[index]; } /** * @dev Return the entire set in an array * * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that * this function has an unbounded cost, and using it as part of a state-changing function may render the function * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. */ function _values(Set storage set) private view returns (bytes32[] memory) { return set._values; } // Bytes32Set struct Bytes32Set { Set _inner; } /** * @dev Add a value to a set. O(1). * * Returns true if the value was added to the set, that is if it was not * already present. */ function add(Bytes32Set storage set, bytes32 value) internal returns (bool) { return _add(set._inner, value); } /** * @dev Removes a value from a set. O(1). * * Returns true if the value was removed from the set, that is if it was * present. */ function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) { return _remove(set._inner, value); } /** * @dev Returns true if the value is in the set. O(1). */ function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) { return _contains(set._inner, value); } /** * @dev Returns the number of values in the set. O(1). */ function length(Bytes32Set storage set) internal view returns (uint256) { return _length(set._inner); } /** * @dev Returns the value stored at position `index` in the set. O(1). * * Note that there are no guarantees on the ordering of values inside the * array, and it may change when more values are added or removed. * * Requirements: * * - `index` must be strictly less than {length}. */ function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) { return _at(set._inner, index); } /** * @dev Return the entire set in an array * * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that * this function has an unbounded cost, and using it as part of a state-changing function may render the function * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. */ function values(Bytes32Set storage set) internal view returns (bytes32[] memory) { bytes32[] memory store = _values(set._inner); bytes32[] memory result; assembly ("memory-safe") { result := store } return result; } // AddressSet struct AddressSet { Set _inner; } /** * @dev Add a value to a set. O(1). * * Returns true if the value was added to the set, that is if it was not * already present. */ function add(AddressSet storage set, address value) internal returns (bool) { return _add(set._inner, bytes32(uint256(uint160(value)))); } /** * @dev Removes a value from a set. O(1). * * Returns true if the value was removed from the set, that is if it was * present. */ function remove(AddressSet storage set, address value) internal returns (bool) { return _remove(set._inner, bytes32(uint256(uint160(value)))); } /** * @dev Returns true if the value is in the set. O(1). */ function contains(AddressSet storage set, address value) internal view returns (bool) { return _contains(set._inner, bytes32(uint256(uint160(value)))); } /** * @dev Returns the number of values in the set. O(1). */ function length(AddressSet storage set) internal view returns (uint256) { return _length(set._inner); } /** * @dev Returns the value stored at position `index` in the set. O(1). * * Note that there are no guarantees on the ordering of values inside the * array, and it may change when more values are added or removed. * * Requirements: * * - `index` must be strictly less than {length}. */ function at(AddressSet storage set, uint256 index) internal view returns (address) { return address(uint160(uint256(_at(set._inner, index)))); } /** * @dev Return the entire set in an array * * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that * this function has an unbounded cost, and using it as part of a state-changing function may render the function * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. */ function values(AddressSet storage set) internal view returns (address[] memory) { bytes32[] memory store = _values(set._inner); address[] memory result; assembly ("memory-safe") { result := store } return result; } // UintSet struct UintSet { Set _inner; } /** * @dev Add a value to a set. O(1). * * Returns true if the value was added to the set, that is if it was not * already present. */ function add(UintSet storage set, uint256 value) internal returns (bool) { return _add(set._inner, bytes32(value)); } /** * @dev Removes a value from a set. O(1). * * Returns true if the value was removed from the set, that is if it was * present. */ function remove(UintSet storage set, uint256 value) internal returns (bool) { return _remove(set._inner, bytes32(value)); } /** * @dev Returns true if the value is in the set. O(1). */ function contains(UintSet storage set, uint256 value) internal view returns (bool) { return _contains(set._inner, bytes32(value)); } /** * @dev Returns the number of values in the set. O(1). */ function length(UintSet storage set) internal view returns (uint256) { return _length(set._inner); } /** * @dev Returns the value stored at position `index` in the set. O(1). * * Note that there are no guarantees on the ordering of values inside the * array, and it may change when more values are added or removed. * * Requirements: * * - `index` must be strictly less than {length}. */ function at(UintSet storage set, uint256 index) internal view returns (uint256) { return uint256(_at(set._inner, index)); } /** * @dev Return the entire set in an array * * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that * this function has an unbounded cost, and using it as part of a state-changing function may render the function * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block. */ function values(UintSet storage set) internal view returns (uint256[] memory) { bytes32[] memory store = _values(set._inner); uint256[] memory result; assembly ("memory-safe") { result := store } return result; } } contract LockedHubble is ERC20 { struct VestPosition { uint256 amount; uint256 start; uint256 maxEnd; uint256 vestID; } using EnumerableSet for EnumerableSet.AddressSet; // immutable IERC20 public immutable HUBBLE; // vars address public admiral; address public missionControl; address public xexStaking; uint256 public missionShare = 5000; uint256 public maxVest = 180 days; EnumerableSet.AddressSet exempt; EnumerableSet.AddressSet exemptTo; // constants uint256 public constant BASIS = 10_000; uint256 public constant SLASHING_PENALTY = 5000; uint256 public constant MIN_VEST = 14 days; // mappings mapping(address => VestPosition[]) public vestInfo; // modifiers modifier onlyAdmiral() { require(msg.sender == admiral, "Not the Admiral"); _; } modifier onlyMissionControl() { require(msg.sender == missionControl, "Not Mission Control"); _; } // errors error ZERO(); error NO_VEST(); error CANT_RESCUE(); error ARRAY_LENGTHS(); // events event Lock(address indexed user, uint256 amount); event Crash(address indexed user, uint256 amount); event Exemption(address indexed candidate, bool status, bool success); event NewVest( address indexed user, uint256 indexed vestId, uint256 indexed amount ); event CancelVesting( address indexed user, uint256 indexed vestId, uint256 amount ); event ExitVesting( address indexed user, uint256 indexed vestId, uint256 amount ); // constructor constructor ( address _hubble ) ERC20("Locked Hubble Protocol Shares", "xHUBBLE") { HUBBLE = IERC20(_hubble); admiral = msg.sender; } // mint xHUBBLE function lock(uint256 _amount) external { require(_amount != 0, ZERO()); HUBBLE.transferFrom(msg.sender, address(this), _amount); _mint(msg.sender, _amount); emit Lock(msg.sender, _amount); } // instantly exit xHUBBLE for HUBBLE function crash( uint256 _amount ) external returns (uint256 _exitedAmount) { require(_amount != 0, ZERO()); uint256 penalty = ((_amount * SLASHING_PENALTY) / BASIS); uint256 exitAmount = _amount - penalty; // burn the xHUBBLE _burn(msg.sender, _amount); //transfer the user their HUBBLE HUBBLE.transfer(msg.sender, exitAmount); //transfer mission control their portion _mint(missionControl, penalty * missionShare / BASIS); // transfer xEX staking their portion _mint(xexStaking, penalty - penalty * missionShare / BASIS); emit Crash(msg.sender, exitAmount); return exitAmount; } function createVest(uint256 _amount) external { require(_amount != 0, ZERO()); _burn(msg.sender, _amount); uint256 vestLength = vestInfo[msg.sender].length; vestInfo[msg.sender].push( VestPosition( _amount, block.timestamp, block.timestamp + maxVest, vestLength ) ); emit NewVest(msg.sender, vestLength, _amount); } function exitVest(uint256 _vestID) external { VestPosition storage _vest = vestInfo[msg.sender][_vestID]; require(_vest.amount != 0, NO_VEST()); uint256 _amount = _vest.amount; uint256 _start = _vest.start; _vest.amount = 0; if (block.timestamp < _start + MIN_VEST) { _mint(msg.sender, _amount); emit CancelVesting(msg.sender, _vestID, _amount); } else if (_vest.maxEnd <= block.timestamp) { HUBBLE.transfer(msg.sender, _amount); emit ExitVesting(msg.sender, _vestID, _amount); } else { uint256 base = (_amount * (SLASHING_PENALTY)) / BASIS; uint256 vestEarned = ((_amount * (BASIS - SLASHING_PENALTY) * (block.timestamp - _start)) / maxVest) / BASIS; uint256 exitedAmount = base + vestEarned; // transfer the hubble to the loser HUBBLE.transfer(msg.sender, exitedAmount); // mint xHUBBLE to mission control _mint(missionControl,(_amount - exitedAmount)*missionShare/BASIS); // mint remaining xHUBBLE to xEX Staking _mint(xexStaking,(_amount - exitedAmount) - (_amount - exitedAmount)*missionShare/BASIS); emit ExitVesting(msg.sender, _vestID, _amount); } } function rescueTrappedTokens( address[] calldata _tokens, uint256[] calldata _amounts ) external onlyAdmiral { for (uint256 i = 0; i < _tokens.length; ++i) { /// @dev cant fetch the underlying require(_tokens[i] != address(HUBBLE), CANT_RESCUE()); IERC20(_tokens[i]).transfer(admiral, _amounts[i]); } } // -------------------------------------------------------------------- // ---- Exemptions (from xSHADOW contract) -------------- function setExemption( address[] calldata _exemptee, bool[] calldata _exempt ) external onlyAdmiral { require(_exemptee.length == _exempt.length, ARRAY_LENGTHS()); for (uint256 i = 0; i < _exempt.length; ++i) { bool success = _exempt[i] ? exempt.add(_exemptee[i]) : exempt.remove(_exemptee[i]); emit Exemption(_exemptee[i], _exempt[i], success); } } function setExemptionTo( address[] calldata _exemptee, bool[] calldata _exempt ) external onlyAdmiral { require(_exemptee.length == _exempt.length, ARRAY_LENGTHS()); for (uint256 i = 0; i < _exempt.length; ++i) { bool success = _exempt[i] ? exemptTo.add(_exemptee[i]) : exemptTo.remove(_exemptee[i]); emit Exemption(_exemptee[i], _exempt[i], success); } } // -- admin function reduceMaxVest() external onlyAdmiral { require(maxVest - 3 days >= 30 days, "min maxVest is 30 days"); maxVest -= 3 days; } function increaseMaxVest() external onlyAdmiral { require(maxVest + 3 days <= 180 days, "max maxVest is 180 days"); maxVest += 3 days; } function changeAdmiral ( address newAdmiral ) external onlyAdmiral { admiral = newAdmiral; } function changeMissionControl ( address newMissionControl ) external onlyAdmiral { exemptTo.add(newMissionControl); exempt.add(newMissionControl); missionControl = newMissionControl; } function changeXEXStaking ( address newStaking ) external onlyAdmiral { exemptTo.add(xexStaking); exempt.add(xexStaking); xexStaking = newStaking; } function usersTotalVests( address _who ) public view returns (uint256 _length) { return vestInfo[_who].length; } function getVestInfo( address _who, uint256 _vestID ) public view returns (VestPosition memory) { return vestInfo[_who][_vestID]; } function isExempt(address _who) external view returns (bool _exempt) { return exempt.contains(_who); } function _isExempted( address _from, address _to ) internal view returns (bool) { return (exempt.contains(_from) || _from == address(0) || _to == address(0) || exemptTo.contains(_to)); } function transfer(address to, uint256 amount) public virtual override returns (bool) { require(_isExempted(msg.sender,to), "NonTransferableERC20: not whitelisted"); return super.transfer(to, amount); } function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { require(_isExempted(from,to), "NonTransferableERC20: not whitelisted"); return super.transferFrom(from, to, amount); } }
[{"inputs":[{"internalType":"address","name":"_hubble","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ARRAY_LENGTHS","type":"error"},{"inputs":[],"name":"CANT_RESCUE","type":"error"},{"inputs":[],"name":"NO_VEST","type":"error"},{"inputs":[],"name":"ZERO","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"vestId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"CancelVesting","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Crash","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"candidate","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"},{"indexed":false,"internalType":"bool","name":"success","type":"bool"}],"name":"Exemption","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"vestId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ExitVesting","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Lock","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"vestId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"NewVest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"BASIS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"HUBBLE","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_VEST","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SLASHING_PENALTY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"admiral","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmiral","type":"address"}],"name":"changeAdmiral","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMissionControl","type":"address"}],"name":"changeMissionControl","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newStaking","type":"address"}],"name":"changeXEXStaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"crash","outputs":[{"internalType":"uint256","name":"_exitedAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"createVest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_vestID","type":"uint256"}],"name":"exitVest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_who","type":"address"},{"internalType":"uint256","name":"_vestID","type":"uint256"}],"name":"getVestInfo","outputs":[{"components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"maxEnd","type":"uint256"},{"internalType":"uint256","name":"vestID","type":"uint256"}],"internalType":"struct LockedHubble.VestPosition","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"increaseMaxVest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_who","type":"address"}],"name":"isExempt","outputs":[{"internalType":"bool","name":"_exempt","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxVest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"missionControl","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"missionShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reduceMaxVest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_tokens","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"rescueTrappedTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_exemptee","type":"address[]"},{"internalType":"bool[]","name":"_exempt","type":"bool[]"}],"name":"setExemption","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_exemptee","type":"address[]"},{"internalType":"bool[]","name":"_exempt","type":"bool[]"}],"name":"setExemptionTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_who","type":"address"}],"name":"usersTotalVests","outputs":[{"internalType":"uint256","name":"_length","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"vestInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"maxEnd","type":"uint256"},{"internalType":"uint256","name":"vestID","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"xexStaking","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60a060405261138860085562ed4e0060095534801561001c575f5ffd5b50604051612d85380380612d8583398101604081905261003b916100d3565b6040518060400160405280601d81526020017f4c6f636b656420487562626c652050726f746f636f6c205368617265730000008152506040518060400160405280600781526020016678485542424c4560c81b81525081600390816100a09190610198565b5060046100ad8282610198565b5050506001600160a01b0316608052600580546001600160a01b03191633179055610252565b5f602082840312156100e3575f5ffd5b81516001600160a01b03811681146100f9575f5ffd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061012857607f821691505b60208210810361014657634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561019357805f5260205f20601f840160051c810160208510156101715750805b601f840160051c820191505b81811015610190575f815560010161017d565b50505b505050565b81516001600160401b038111156101b1576101b1610100565b6101c5816101bf8454610114565b8461014c565b6020601f8211600181146101f7575f83156101e05750848201515b5f19600385901b1c1916600184901b178455610190565b5f84815260208120601f198516915b828110156102265787850151825560209485019460019092019101610206565b508482101561024357868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b608051612af861028d5f395f818161040d01528181610d9d0152818161160f0152818161176d01528181611a1f0152611c3b0152612af85ff3fe608060405234801561000f575f5ffd5b506004361061024f575f3560e01c80636c2fc02c1161013d578063a8ebc89c116100b8578063b387710311610088578063dd4670641161006e578063dd46706414610591578063dd62ed3e146105a4578063ef8f9595146105e9575f5ffd5b8063b38771031461056b578063beb7dc341461057e575f5ffd5b8063a8ebc89c14610512578063a9059cbb14610532578063ab95605414610545578063ad5dff7314610558575f5ffd5b8063894547fe1161010d57806394126bb1116100f357806394126bb1146104e457806395d89b41146104f7578063a457c2d7146104ff575f5ffd5b8063894547fe146104c957806393755319146104dc575f5ffd5b80636c2fc02c1461040857806370a08231146104545780637164b8bf1461048957806378683565146104a9575f5ffd5b80632cf53bd8116101cd578063418e51c61161019d578063528cfa9811610183578063528cfa98146103a657806355490ba1146103af5780635a8aed66146103c2575f5ffd5b8063418e51c61461039457806349e821931461039c575f5ffd5b80632cf53bd81461032a578063313ce5671461035f578063353140d01461036e5780633950935114610381575f5ffd5b806311147bd61161022257806323b872dd1161020857806323b872dd146102fb57806325d64f4b1461030e57806326d25b8014610317575f5ffd5b806311147bd6146102c057806318160ddd146102f3575f5ffd5b806306fdde031461025357806307af93e41461027157806308b4bd6314610288578063095ea7b31461029d575b5f5ffd5b61025b6105f2565b604051610268919061273d565b60405180910390f35b61027a60085481565b604051908152602001610268565b61029b610296366004612790565b610682565b005b6102b06102ab3660046127cf565b610775565b6040519015158152602001610268565b6102d36102ce3660046127cf565b61078b565b604080519485526020850193909352918301526060820152608001610268565b60025461027a565b6102b06103093660046127f7565b6107cd565b61027a61138881565b61029b610325366004612831565b61087c565b61027a610338366004612831565b73ffffffffffffffffffffffffffffffffffffffff165f908152600e602052604090205490565b60405160128152602001610268565b61029b61037c366004612892565b610990565b6102b061038f3660046127cf565b610b9a565b61029b610be2565b61027a6212750081565b61027a61271081565b61027a6103bd366004612790565b610cfb565b6103d56103d03660046127cf565b610eda565b60405161026891908151815260208083015190820152604080830151908201526060918201519181019190915260800190565b61042f7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610268565b61027a610462366004612831565b73ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205490565b60065461042f9073ffffffffffffffffffffffffffffffffffffffff1681565b60075461042f9073ffffffffffffffffffffffffffffffffffffffff1681565b61029b6104d7366004612831565b610f7d565b61029b61105d565b61029b6104f2366004612892565b61116f565b61025b611372565b6102b061050d3660046127cf565b611381565b60055461042f9073ffffffffffffffffffffffffffffffffffffffff1681565b6102b06105403660046127cf565b611458565b61029b610553366004612790565b611500565b6102b0610566366004612831565b6118be565b61029b610579366004612831565b6118ca565b61029b61058c366004612892565b611992565b61029b61059f366004612790565b611bc7565b61027a6105b23660046128fe565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260016020908152604080832093909416825291909152205490565b61027a60095481565b6060600380546106019061292f565b80601f016020809104026020016040519081016040528092919081815260200182805461062d9061292f565b80156106785780601f1061064f57610100808354040283529160200191610678565b820191905f5260205f20905b81548152906001019060200180831161065b57829003601f168201915b5050505050905090565b805f036106bb576040517f58fa63ca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106c53382611cfd565b335f908152600e60209081526040918290208054835160808101855285815242938101849052600954919492939092830191610700916129ad565b815260209081018490528254600181810185555f948552828520845160049093020191825591830151918101919091556040808301516002830155606090920151600390910155518391839133917f7d9230ebb47980ddc758fe4e69ea83a89dafbceb45bd45934798477baa57766891a45050565b5f610781338484611ee8565b5060015b92915050565b600e602052815f5260405f2081815481106107a4575f80fd5b5f9182526020909120600490910201805460018201546002830154600390930154919450925084565b5f6107d88484612092565b610869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4e6f6e5472616e7366657261626c6545524332303a206e6f742077686974656c60448201527f697374656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6108748484846120ed565b949350505050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146108fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f74207468652041646d6972616c00000000000000000000000000000000006044820152606401610860565b60075461092290600c9073ffffffffffffffffffffffffffffffffffffffff166121d1565b5060075461094890600a9073ffffffffffffffffffffffffffffffffffffffff166121d1565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60055473ffffffffffffffffffffffffffffffffffffffff163314610a11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f74207468652041646d6972616c00000000000000000000000000000000006044820152606401610860565b828114610a4a576040517f3d0084d400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b81811015610b93575f838383818110610a6757610a676129c0565b9050602002016020810190610a7c91906129fd565b610ab757610ab2868684818110610a9557610a956129c0565b9050602002016020810190610aaa9190612831565b600c906121f2565b610ae9565b610ae9868684818110610acc57610acc6129c0565b9050602002016020810190610ae19190612831565b600c906121d1565b9050858583818110610afd57610afd6129c0565b9050602002016020810190610b129190612831565b73ffffffffffffffffffffffffffffffffffffffff167f0c26de26c21d52b9af1eae2bc6d3c4f03cf66cf139d32166af29b8aed7135192858585818110610b5b57610b5b6129c0565b9050602002016020810190610b7091906129fd565b60408051911515825284151560208301520160405180910390a250600101610a4c565b5050505050565b335f81815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091610781918590610bdd9086906129ad565b611ee8565b60055473ffffffffffffffffffffffffffffffffffffffff163314610c63576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f74207468652041646d6972616c00000000000000000000000000000000006044820152606401610860565b62ed4e006009546203f480610c7891906129ad565b1115610ce0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f6d6178206d6178566573742069732031383020646179730000000000000000006044820152606401610860565b6203f48060095f828254610cf491906129ad565b9091555050565b5f815f03610d35576040517f58fa63ca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f612710610d4561138885612a18565b610d4f9190612a2f565b90505f610d5c8285612a67565b9050610d683385611cfd565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a9059cbb906044016020604051808303815f875af1158015610df8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e1c9190612a7a565b50600654600854610e5b9173ffffffffffffffffffffffffffffffffffffffff169061271090610e4c9086612a18565b610e569190612a2f565b612213565b600754600854610e9e9173ffffffffffffffffffffffffffffffffffffffff169061271090610e8a9086612a18565b610e949190612a2f565b610e569085612a67565b60405181815233907f553f2eb880ddef4ff8c4d97e35ed75df54b7ded4d99af2cf5bcc8880f408a5b19060200160405180910390a29392505050565b610f0160405180608001604052805f81526020015f81526020015f81526020015f81525090565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600e60205260409020805483908110610f3757610f376129c0565b905f5260205f2090600402016040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015481525050905092915050565b60055473ffffffffffffffffffffffffffffffffffffffff163314610ffe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f74207468652041646d6972616c00000000000000000000000000000000006044820152606401610860565b611009600c826121d1565b50611015600a826121d1565b50600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60055473ffffffffffffffffffffffffffffffffffffffff1633146110de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f74207468652041646d6972616c00000000000000000000000000000000006044820152606401610860565b62278d006203f4806009546110f39190612a67565b101561115b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6d696e206d6178566573742069732033302064617973000000000000000000006044820152606401610860565b6203f48060095f828254610cf49190612a67565b60055473ffffffffffffffffffffffffffffffffffffffff1633146111f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f74207468652041646d6972616c00000000000000000000000000000000006044820152606401610860565b828114611229576040517f3d0084d400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b81811015610b93575f838383818110611246576112466129c0565b905060200201602081019061125b91906129fd565b61129657611291868684818110611274576112746129c0565b90506020020160208101906112899190612831565b600a906121f2565b6112c8565b6112c88686848181106112ab576112ab6129c0565b90506020020160208101906112c09190612831565b600a906121d1565b90508585838181106112dc576112dc6129c0565b90506020020160208101906112f19190612831565b73ffffffffffffffffffffffffffffffffffffffff167f0c26de26c21d52b9af1eae2bc6d3c4f03cf66cf139d32166af29b8aed713519285858581811061133a5761133a6129c0565b905060200201602081019061134f91906129fd565b60408051911515825284151560208301520160405180910390a25060010161122b565b6060600480546106019061292f565b335f90815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915281205482811015611441576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610860565b61144e3385858403611ee8565b5060019392505050565b5f6114633384612092565b6114ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4e6f6e5472616e7366657261626c6545524332303a206e6f742077686974656c60448201527f69737465640000000000000000000000000000000000000000000000000000006064820152608401610860565b6114f98383612330565b9392505050565b335f908152600e60205260408120805483908110611520576115206129c0565b905f5260205f2090600402019050805f01545f0361156a576040517f2b5d497a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805460018201545f835561158162127500826129ad565b4210156115cf576115923383612213565b604051828152849033907fcda231b62bdbcfdebaec108470aea3eb3fcc5ebe00d79b6e252850d4bf5c60b5906020015b60405180910390a36118b8565b428360020154116116c3576040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a9059cbb906044016020604051808303815f875af115801561166a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061168e9190612a7a565b50604051828152849033907f902061c3e3f4d419563154f2c22ef4847f185919d82ff921a64559c1dc83bb76906020016115c2565b5f6127106116d361138885612a18565b6116dd9190612a2f565b90505f61271060095484426116f29190612a67565b611700611388612710612a67565b61170a9088612a18565b6117149190612a18565b61171e9190612a2f565b6117289190612a2f565b90505f61173582846129ad565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a9059cbb906044016020604051808303815f875af11580156117c8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117ec9190612a7a565b506006546008546118269173ffffffffffffffffffffffffffffffffffffffff16906127109061181c858a612a67565b610e4c9190612a18565b60075460085461187d9173ffffffffffffffffffffffffffffffffffffffff169061271090611855858a612a67565b61185f9190612a18565b6118699190612a2f565b6118738489612a67565b610e569190612a67565b604051858152879033907f902061c3e3f4d419563154f2c22ef4847f185919d82ff921a64559c1dc83bb769060200160405180910390a35050505b50505050565b5f610785600a8361233c565b60055473ffffffffffffffffffffffffffffffffffffffff16331461194b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f74207468652041646d6972616c00000000000000000000000000000000006044820152606401610860565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60055473ffffffffffffffffffffffffffffffffffffffff163314611a13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f74207468652041646d6972616c00000000000000000000000000000000006044820152606401610860565b5f5b83811015610b93577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16858583818110611a6657611a666129c0565b9050602002016020810190611a7b9190612831565b73ffffffffffffffffffffffffffffffffffffffff1603611ac8576040517f512428f900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b848482818110611ada57611ada6129c0565b9050602002016020810190611aef9190612831565b60055473ffffffffffffffffffffffffffffffffffffffff9182169163a9059cbb9116858585818110611b2457611b246129c0565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815273ffffffffffffffffffffffffffffffffffffffff909416600485015260200291909101356024830152506044016020604051808303815f875af1158015611b9a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bbe9190612a7a565b50600101611a15565b805f03611c00576040517f58fa63ca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906323b872dd906064016020604051808303815f875af1158015611c96573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cba9190612a7a565b50611cc53382612213565b60405181815233907f625fed9875dada8643f2418b838ae0bc78d9a148a18eee4ee1979ff0f3f5d4279060200160405180910390a250565b73ffffffffffffffffffffffffffffffffffffffff8216611da0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610860565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526020819052604090205481811015611e55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610860565b73ffffffffffffffffffffffffffffffffffffffff83165f908152602081905260408120838303905560028054849290611e90908490612a67565b90915550506040518281525f9073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610860565b73ffffffffffffffffffffffffffffffffffffffff821661202d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610860565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259101611edb565b5f61209e600a8461233c565b806120bd575073ffffffffffffffffffffffffffffffffffffffff8316155b806120dc575073ffffffffffffffffffffffffffffffffffffffff8216155b806114f957506114f9600c8361233c565b5f6120f984848461236a565b73ffffffffffffffffffffffffffffffffffffffff84165f908152600160209081526040808320338452909152902054828110156121b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e63650000000000000000000000000000000000000000000000006064820152608401610860565b6121c68533858403611ee8565b506001949350505050565b5f6114f98373ffffffffffffffffffffffffffffffffffffffff841661260e565b5f6114f98373ffffffffffffffffffffffffffffffffffffffff841661265a565b73ffffffffffffffffffffffffffffffffffffffff8216612290576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610860565b8060025f8282546122a191906129ad565b909155505073ffffffffffffffffffffffffffffffffffffffff82165f90815260208190526040812080548392906122da9084906129ad565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b5f61078133848461236a565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260018301602052604081205415156114f9565b73ffffffffffffffffffffffffffffffffffffffff831661240d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610860565b73ffffffffffffffffffffffffffffffffffffffff82166124b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610860565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526020819052604090205481811015612565576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610860565b73ffffffffffffffffffffffffffffffffffffffff8085165f908152602081905260408082208585039055918516815290812080548492906125a89084906129ad565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115c291815260200190565b5f81815260018301602052604081205461265357508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610785565b505f610785565b5f8181526001830160205260408120548015612734575f61267c600183612a67565b85549091505f9061268f90600190612a67565b90508082146126ee575f865f0182815481106126ad576126ad6129c0565b905f5260205f200154905080875f0184815481106126cd576126cd6129c0565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806126ff576126ff612a95565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050610785565b5f915050610785565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f602082840312156127a0575f5ffd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146127ca575f5ffd5b919050565b5f5f604083850312156127e0575f5ffd5b6127e9836127a7565b946020939093013593505050565b5f5f5f60608486031215612809575f5ffd5b612812846127a7565b9250612820602085016127a7565b929592945050506040919091013590565b5f60208284031215612841575f5ffd5b6114f9826127a7565b5f5f83601f84011261285a575f5ffd5b50813567ffffffffffffffff811115612871575f5ffd5b6020830191508360208260051b850101111561288b575f5ffd5b9250929050565b5f5f5f5f604085870312156128a5575f5ffd5b843567ffffffffffffffff8111156128bb575f5ffd5b6128c78782880161284a565b909550935050602085013567ffffffffffffffff8111156128e6575f5ffd5b6128f28782880161284a565b95989497509550505050565b5f5f6040838503121561290f575f5ffd5b612918836127a7565b9150612926602084016127a7565b90509250929050565b600181811c9082168061294357607f821691505b60208210810361297a577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561078557610785612980565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b80151581146129fa575f5ffd5b50565b5f60208284031215612a0d575f5ffd5b81356114f9816129ed565b808202811582820484141761078557610785612980565b5f82612a62577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b8181038181111561078557610785612980565b5f60208284031215612a8a575f5ffd5b81516114f9816129ed565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea26469706673582212203913aba3dbaaf0d945cbc40e331e9270b0c17276a5ea1258eb99c48459159e9064736f6c634300081c00330000000000000000000000009e769c46b392df80d5eb31a69434f38d59f40a5e
Deployed Bytecode
0x608060405234801561000f575f5ffd5b506004361061024f575f3560e01c80636c2fc02c1161013d578063a8ebc89c116100b8578063b387710311610088578063dd4670641161006e578063dd46706414610591578063dd62ed3e146105a4578063ef8f9595146105e9575f5ffd5b8063b38771031461056b578063beb7dc341461057e575f5ffd5b8063a8ebc89c14610512578063a9059cbb14610532578063ab95605414610545578063ad5dff7314610558575f5ffd5b8063894547fe1161010d57806394126bb1116100f357806394126bb1146104e457806395d89b41146104f7578063a457c2d7146104ff575f5ffd5b8063894547fe146104c957806393755319146104dc575f5ffd5b80636c2fc02c1461040857806370a08231146104545780637164b8bf1461048957806378683565146104a9575f5ffd5b80632cf53bd8116101cd578063418e51c61161019d578063528cfa9811610183578063528cfa98146103a657806355490ba1146103af5780635a8aed66146103c2575f5ffd5b8063418e51c61461039457806349e821931461039c575f5ffd5b80632cf53bd81461032a578063313ce5671461035f578063353140d01461036e5780633950935114610381575f5ffd5b806311147bd61161022257806323b872dd1161020857806323b872dd146102fb57806325d64f4b1461030e57806326d25b8014610317575f5ffd5b806311147bd6146102c057806318160ddd146102f3575f5ffd5b806306fdde031461025357806307af93e41461027157806308b4bd6314610288578063095ea7b31461029d575b5f5ffd5b61025b6105f2565b604051610268919061273d565b60405180910390f35b61027a60085481565b604051908152602001610268565b61029b610296366004612790565b610682565b005b6102b06102ab3660046127cf565b610775565b6040519015158152602001610268565b6102d36102ce3660046127cf565b61078b565b604080519485526020850193909352918301526060820152608001610268565b60025461027a565b6102b06103093660046127f7565b6107cd565b61027a61138881565b61029b610325366004612831565b61087c565b61027a610338366004612831565b73ffffffffffffffffffffffffffffffffffffffff165f908152600e602052604090205490565b60405160128152602001610268565b61029b61037c366004612892565b610990565b6102b061038f3660046127cf565b610b9a565b61029b610be2565b61027a6212750081565b61027a61271081565b61027a6103bd366004612790565b610cfb565b6103d56103d03660046127cf565b610eda565b60405161026891908151815260208083015190820152604080830151908201526060918201519181019190915260800190565b61042f7f0000000000000000000000009e769c46b392df80d5eb31a69434f38d59f40a5e81565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610268565b61027a610462366004612831565b73ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205490565b60065461042f9073ffffffffffffffffffffffffffffffffffffffff1681565b60075461042f9073ffffffffffffffffffffffffffffffffffffffff1681565b61029b6104d7366004612831565b610f7d565b61029b61105d565b61029b6104f2366004612892565b61116f565b61025b611372565b6102b061050d3660046127cf565b611381565b60055461042f9073ffffffffffffffffffffffffffffffffffffffff1681565b6102b06105403660046127cf565b611458565b61029b610553366004612790565b611500565b6102b0610566366004612831565b6118be565b61029b610579366004612831565b6118ca565b61029b61058c366004612892565b611992565b61029b61059f366004612790565b611bc7565b61027a6105b23660046128fe565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260016020908152604080832093909416825291909152205490565b61027a60095481565b6060600380546106019061292f565b80601f016020809104026020016040519081016040528092919081815260200182805461062d9061292f565b80156106785780601f1061064f57610100808354040283529160200191610678565b820191905f5260205f20905b81548152906001019060200180831161065b57829003601f168201915b5050505050905090565b805f036106bb576040517f58fa63ca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106c53382611cfd565b335f908152600e60209081526040918290208054835160808101855285815242938101849052600954919492939092830191610700916129ad565b815260209081018490528254600181810185555f948552828520845160049093020191825591830151918101919091556040808301516002830155606090920151600390910155518391839133917f7d9230ebb47980ddc758fe4e69ea83a89dafbceb45bd45934798477baa57766891a45050565b5f610781338484611ee8565b5060015b92915050565b600e602052815f5260405f2081815481106107a4575f80fd5b5f9182526020909120600490910201805460018201546002830154600390930154919450925084565b5f6107d88484612092565b610869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4e6f6e5472616e7366657261626c6545524332303a206e6f742077686974656c60448201527f697374656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6108748484846120ed565b949350505050565b60055473ffffffffffffffffffffffffffffffffffffffff1633146108fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f74207468652041646d6972616c00000000000000000000000000000000006044820152606401610860565b60075461092290600c9073ffffffffffffffffffffffffffffffffffffffff166121d1565b5060075461094890600a9073ffffffffffffffffffffffffffffffffffffffff166121d1565b50600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60055473ffffffffffffffffffffffffffffffffffffffff163314610a11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f74207468652041646d6972616c00000000000000000000000000000000006044820152606401610860565b828114610a4a576040517f3d0084d400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b81811015610b93575f838383818110610a6757610a676129c0565b9050602002016020810190610a7c91906129fd565b610ab757610ab2868684818110610a9557610a956129c0565b9050602002016020810190610aaa9190612831565b600c906121f2565b610ae9565b610ae9868684818110610acc57610acc6129c0565b9050602002016020810190610ae19190612831565b600c906121d1565b9050858583818110610afd57610afd6129c0565b9050602002016020810190610b129190612831565b73ffffffffffffffffffffffffffffffffffffffff167f0c26de26c21d52b9af1eae2bc6d3c4f03cf66cf139d32166af29b8aed7135192858585818110610b5b57610b5b6129c0565b9050602002016020810190610b7091906129fd565b60408051911515825284151560208301520160405180910390a250600101610a4c565b5050505050565b335f81815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091610781918590610bdd9086906129ad565b611ee8565b60055473ffffffffffffffffffffffffffffffffffffffff163314610c63576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f74207468652041646d6972616c00000000000000000000000000000000006044820152606401610860565b62ed4e006009546203f480610c7891906129ad565b1115610ce0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f6d6178206d6178566573742069732031383020646179730000000000000000006044820152606401610860565b6203f48060095f828254610cf491906129ad565b9091555050565b5f815f03610d35576040517f58fa63ca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f612710610d4561138885612a18565b610d4f9190612a2f565b90505f610d5c8285612a67565b9050610d683385611cfd565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290527f0000000000000000000000009e769c46b392df80d5eb31a69434f38d59f40a5e73ffffffffffffffffffffffffffffffffffffffff169063a9059cbb906044016020604051808303815f875af1158015610df8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e1c9190612a7a565b50600654600854610e5b9173ffffffffffffffffffffffffffffffffffffffff169061271090610e4c9086612a18565b610e569190612a2f565b612213565b600754600854610e9e9173ffffffffffffffffffffffffffffffffffffffff169061271090610e8a9086612a18565b610e949190612a2f565b610e569085612a67565b60405181815233907f553f2eb880ddef4ff8c4d97e35ed75df54b7ded4d99af2cf5bcc8880f408a5b19060200160405180910390a29392505050565b610f0160405180608001604052805f81526020015f81526020015f81526020015f81525090565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600e60205260409020805483908110610f3757610f376129c0565b905f5260205f2090600402016040518060800160405290815f82015481526020016001820154815260200160028201548152602001600382015481525050905092915050565b60055473ffffffffffffffffffffffffffffffffffffffff163314610ffe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f74207468652041646d6972616c00000000000000000000000000000000006044820152606401610860565b611009600c826121d1565b50611015600a826121d1565b50600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60055473ffffffffffffffffffffffffffffffffffffffff1633146110de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f74207468652041646d6972616c00000000000000000000000000000000006044820152606401610860565b62278d006203f4806009546110f39190612a67565b101561115b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6d696e206d6178566573742069732033302064617973000000000000000000006044820152606401610860565b6203f48060095f828254610cf49190612a67565b60055473ffffffffffffffffffffffffffffffffffffffff1633146111f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f74207468652041646d6972616c00000000000000000000000000000000006044820152606401610860565b828114611229576040517f3d0084d400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b81811015610b93575f838383818110611246576112466129c0565b905060200201602081019061125b91906129fd565b61129657611291868684818110611274576112746129c0565b90506020020160208101906112899190612831565b600a906121f2565b6112c8565b6112c88686848181106112ab576112ab6129c0565b90506020020160208101906112c09190612831565b600a906121d1565b90508585838181106112dc576112dc6129c0565b90506020020160208101906112f19190612831565b73ffffffffffffffffffffffffffffffffffffffff167f0c26de26c21d52b9af1eae2bc6d3c4f03cf66cf139d32166af29b8aed713519285858581811061133a5761133a6129c0565b905060200201602081019061134f91906129fd565b60408051911515825284151560208301520160405180910390a25060010161122b565b6060600480546106019061292f565b335f90815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915281205482811015611441576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610860565b61144e3385858403611ee8565b5060019392505050565b5f6114633384612092565b6114ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4e6f6e5472616e7366657261626c6545524332303a206e6f742077686974656c60448201527f69737465640000000000000000000000000000000000000000000000000000006064820152608401610860565b6114f98383612330565b9392505050565b335f908152600e60205260408120805483908110611520576115206129c0565b905f5260205f2090600402019050805f01545f0361156a576040517f2b5d497a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805460018201545f835561158162127500826129ad565b4210156115cf576115923383612213565b604051828152849033907fcda231b62bdbcfdebaec108470aea3eb3fcc5ebe00d79b6e252850d4bf5c60b5906020015b60405180910390a36118b8565b428360020154116116c3576040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018390527f0000000000000000000000009e769c46b392df80d5eb31a69434f38d59f40a5e73ffffffffffffffffffffffffffffffffffffffff169063a9059cbb906044016020604051808303815f875af115801561166a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061168e9190612a7a565b50604051828152849033907f902061c3e3f4d419563154f2c22ef4847f185919d82ff921a64559c1dc83bb76906020016115c2565b5f6127106116d361138885612a18565b6116dd9190612a2f565b90505f61271060095484426116f29190612a67565b611700611388612710612a67565b61170a9088612a18565b6117149190612a18565b61171e9190612a2f565b6117289190612a2f565b90505f61173582846129ad565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290529091507f0000000000000000000000009e769c46b392df80d5eb31a69434f38d59f40a5e73ffffffffffffffffffffffffffffffffffffffff169063a9059cbb906044016020604051808303815f875af11580156117c8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117ec9190612a7a565b506006546008546118269173ffffffffffffffffffffffffffffffffffffffff16906127109061181c858a612a67565b610e4c9190612a18565b60075460085461187d9173ffffffffffffffffffffffffffffffffffffffff169061271090611855858a612a67565b61185f9190612a18565b6118699190612a2f565b6118738489612a67565b610e569190612a67565b604051858152879033907f902061c3e3f4d419563154f2c22ef4847f185919d82ff921a64559c1dc83bb769060200160405180910390a35050505b50505050565b5f610785600a8361233c565b60055473ffffffffffffffffffffffffffffffffffffffff16331461194b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f74207468652041646d6972616c00000000000000000000000000000000006044820152606401610860565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60055473ffffffffffffffffffffffffffffffffffffffff163314611a13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f74207468652041646d6972616c00000000000000000000000000000000006044820152606401610860565b5f5b83811015610b93577f0000000000000000000000009e769c46b392df80d5eb31a69434f38d59f40a5e73ffffffffffffffffffffffffffffffffffffffff16858583818110611a6657611a666129c0565b9050602002016020810190611a7b9190612831565b73ffffffffffffffffffffffffffffffffffffffff1603611ac8576040517f512428f900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b848482818110611ada57611ada6129c0565b9050602002016020810190611aef9190612831565b60055473ffffffffffffffffffffffffffffffffffffffff9182169163a9059cbb9116858585818110611b2457611b246129c0565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815273ffffffffffffffffffffffffffffffffffffffff909416600485015260200291909101356024830152506044016020604051808303815f875af1158015611b9a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bbe9190612a7a565b50600101611a15565b805f03611c00576040517f58fa63ca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018290527f0000000000000000000000009e769c46b392df80d5eb31a69434f38d59f40a5e73ffffffffffffffffffffffffffffffffffffffff16906323b872dd906064016020604051808303815f875af1158015611c96573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cba9190612a7a565b50611cc53382612213565b60405181815233907f625fed9875dada8643f2418b838ae0bc78d9a148a18eee4ee1979ff0f3f5d4279060200160405180910390a250565b73ffffffffffffffffffffffffffffffffffffffff8216611da0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610860565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526020819052604090205481811015611e55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610860565b73ffffffffffffffffffffffffffffffffffffffff83165f908152602081905260408120838303905560028054849290611e90908490612a67565b90915550506040518281525f9073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610860565b73ffffffffffffffffffffffffffffffffffffffff821661202d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610860565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259101611edb565b5f61209e600a8461233c565b806120bd575073ffffffffffffffffffffffffffffffffffffffff8316155b806120dc575073ffffffffffffffffffffffffffffffffffffffff8216155b806114f957506114f9600c8361233c565b5f6120f984848461236a565b73ffffffffffffffffffffffffffffffffffffffff84165f908152600160209081526040808320338452909152902054828110156121b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e63650000000000000000000000000000000000000000000000006064820152608401610860565b6121c68533858403611ee8565b506001949350505050565b5f6114f98373ffffffffffffffffffffffffffffffffffffffff841661260e565b5f6114f98373ffffffffffffffffffffffffffffffffffffffff841661265a565b73ffffffffffffffffffffffffffffffffffffffff8216612290576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610860565b8060025f8282546122a191906129ad565b909155505073ffffffffffffffffffffffffffffffffffffffff82165f90815260208190526040812080548392906122da9084906129ad565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b5f61078133848461236a565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260018301602052604081205415156114f9565b73ffffffffffffffffffffffffffffffffffffffff831661240d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610860565b73ffffffffffffffffffffffffffffffffffffffff82166124b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610860565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526020819052604090205481811015612565576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610860565b73ffffffffffffffffffffffffffffffffffffffff8085165f908152602081905260408082208585039055918516815290812080548492906125a89084906129ad565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115c291815260200190565b5f81815260018301602052604081205461265357508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610785565b505f610785565b5f8181526001830160205260408120548015612734575f61267c600183612a67565b85549091505f9061268f90600190612a67565b90508082146126ee575f865f0182815481106126ad576126ad6129c0565b905f5260205f200154905080875f0184815481106126cd576126cd6129c0565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806126ff576126ff612a95565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050610785565b5f915050610785565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f602082840312156127a0575f5ffd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146127ca575f5ffd5b919050565b5f5f604083850312156127e0575f5ffd5b6127e9836127a7565b946020939093013593505050565b5f5f5f60608486031215612809575f5ffd5b612812846127a7565b9250612820602085016127a7565b929592945050506040919091013590565b5f60208284031215612841575f5ffd5b6114f9826127a7565b5f5f83601f84011261285a575f5ffd5b50813567ffffffffffffffff811115612871575f5ffd5b6020830191508360208260051b850101111561288b575f5ffd5b9250929050565b5f5f5f5f604085870312156128a5575f5ffd5b843567ffffffffffffffff8111156128bb575f5ffd5b6128c78782880161284a565b909550935050602085013567ffffffffffffffff8111156128e6575f5ffd5b6128f28782880161284a565b95989497509550505050565b5f5f6040838503121561290f575f5ffd5b612918836127a7565b9150612926602084016127a7565b90509250929050565b600181811c9082168061294357607f821691505b60208210810361297a577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561078557610785612980565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b80151581146129fa575f5ffd5b50565b5f60208284031215612a0d575f5ffd5b81356114f9816129ed565b808202811582820484141761078557610785612980565b5f82612a62577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b8181038181111561078557610785612980565b5f60208284031215612a8a575f5ffd5b81516114f9816129ed565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea26469706673582212203913aba3dbaaf0d945cbc40e331e9270b0c17276a5ea1258eb99c48459159e9064736f6c634300081c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000009e769c46b392df80d5eb31a69434f38d59f40a5e
-----Decoded View---------------
Arg [0] : _hubble (address): 0x9e769C46b392dF80d5Eb31a69434F38d59f40a5e
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000009e769c46b392df80d5eb31a69434f38d59f40a5e
Deployed Bytecode Sourcemap
19507:8471:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1637:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19902:34;;;;;;;;;642:25:1;;;630:2;615:18;19902:34:0;496:177:1;22479:468:0;;;;;;:::i;:::-;;:::i;:::-;;2551:169;;;;;;:::i;:::-;;:::i;:::-;;;1580:14:1;;1573:22;1555:41;;1543:2;1528:18;2551:169:0;1415:187:1;20256:50:0;;;;;;:::i;:::-;;:::i;:::-;;;;1838:25:1;;;1894:2;1879:18;;1872:34;;;;1922:18;;;1915:34;1980:2;1965:18;;1958:34;1825:3;1810:19;20256:50:0;1607:391:1;1958:108:0;2046:12;;1958:108;;27695:280;;;;;;:::i;:::-;;:::i;20130:47::-;;20173:4;20130:47;;26539:198;;;;;;:::i;:::-;;:::i;26745:140::-;;;;;;:::i;:::-;26856:14;;26821:15;26856:14;;;:8;:14;;;;;:21;;26745:140;1857:93;;;1940:2;2715:36:1;;2703:2;2688:18;1857:93:0;2573:184:1;25349:470:0;;;;;;:::i;:::-;;:::i;3228:215::-;;;;;;:::i;:::-;;:::i;26005:159::-;;;:::i;20184:42::-;;20219:7;20184:42;;20085:38;;20117:6;20085:38;;21756:715;;;;;;:::i;:::-;;:::i;26893:168::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;4129:13:1;;4111:32;;4199:4;4187:17;;;4181:24;4159:20;;;4152:54;4262:4;4250:17;;;4244:24;4222:20;;;4215:54;4325:4;4313:17;;;4307:24;4285:20;;;4278:54;;;;4098:3;4083:19;;3904:434;19753:30:0;;;;;;;;4532:42:1;4520:55;;;4502:74;;4490:2;4475:18;19753:30:0;4343:239:1;2074:127:0;;;;;;:::i;:::-;2175:18;;2148:7;2175:18;;;;;;;;;;;;2074:127;19834:29;;;;;;;;;19870:25;;;;;;;;;26301:230;;;;;;:::i;:::-;;:::i;25842:155::-;;;:::i;24877:464::-;;;;;;:::i;:::-;;:::i;1745:104::-;;;:::i;3451:413::-;;;;;;:::i;:::-;;:::i;19805:22::-;;;;;;;;;27463:224;;;;;;:::i;:::-;;:::i;22955:1377::-;;;;;;:::i;:::-;;:::i;27069:116::-;;;;;;:::i;:::-;;:::i;26172:120::-;;;;;;:::i;:::-;;:::i;24340:387::-;;;;;;:::i;:::-;;:::i;21474:232::-;;;;;;:::i;:::-;;:::i;2392:151::-;;;;;;:::i;:::-;2508:18;;;;2481:7;2508:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2392:151;19943:33;;;;;;1637:100;1691:13;1724:5;1717:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1637:100;:::o;22479:468::-;22544:7;22555:1;22544:12;22536:29;;;;;;;;;;;;;;;;;22576:26;22582:10;22594:7;22576:5;:26::i;:::-;22643:10;22613:18;22634:20;;;:8;:20;;;;;;;;;:27;;22712:160;;;;;;;;;;22769:15;22712:160;;;;;;22821:7;;22634:27;;:20;;22712:160;;;;;22803:25;;;:::i;:::-;22712:160;;;;;;;;;22672:211;;;;;;;;-1:-1:-1;22672:211:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22899:40;22931:7;;22847:10;;22907;;22899:40;;;22525:422;22479:468;:::o;2551:169::-;2634:4;2651:39;1105:10;2674:7;2683:6;2651:8;:39::i;:::-;-1:-1:-1;2708:4:0;2551:169;;;;;:::o;20256:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20256:50:0;-1:-1:-1;20256:50:0;:::o;27695:280::-;27826:4;27851:20;27863:4;27868:2;27851:11;:20::i;:::-;27843:70;;;;;;;6819:2:1;27843:70:0;;;6801:21:1;6858:2;6838:18;;;6831:30;6897:34;6877:18;;;6870:62;6968:7;6948:18;;;6941:35;6993:19;;27843:70:0;;;;;;;;;27931:36;27950:4;27956:2;27960:6;27931:18;:36::i;:::-;27924:43;27695:280;-1:-1:-1;;;;27695:280:0:o;26539:198::-;20389:7;;;;20375:10;:21;20367:49;;;;;;;7225:2:1;20367:49:0;;;7207:21:1;7264:2;7244:18;;;7237:30;7303:17;7283:18;;;7276:45;7338:18;;20367:49:0;7023:339:1;20367:49:0;26651:10:::1;::::0;26638:24:::1;::::0;:8:::1;::::0;26651:10:::1;;26638:12;:24::i;:::-;-1:-1:-1::0;26684:10:0::1;::::0;26673:22:::1;::::0;:6:::1;::::0;26684:10:::1;;26673;:22::i;:::-;-1:-1:-1::0;26706:10:0::1;:23:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;26539:198::o;25349:470::-;20389:7;;;;20375:10;:21;20367:49;;;;;;;7225:2:1;20367:49:0;;;7207:21:1;7264:2;7244:18;;;7237:30;7303:17;7283:18;;;7276:45;7338:18;;20367:49:0;7023:339:1;20367:49:0;25493:34;;::::1;25485:60;;;;;;;;;;;;;;;;;25561:9;25556:256;25576:18:::0;;::::1;25556:256;;;25616:12;25631:7;;25639:1;25631:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;:105;;25707:29;25723:9;;25733:1;25723:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;25707:8;::::0;:15:::1;:29::i;:::-;25631:105;;;25661:26;25674:9;;25684:1;25674:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;25661:8;::::0;:12:::1;:26::i;:::-;25616:120;;25766:9;;25776:1;25766:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;25756:44;;;25780:7;;25788:1;25780:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;25756:44;::::0;;8112:14:1;;8105:22;8087:41;;8171:14;;8164:22;8159:2;8144:18;;8137:50;8060:18;25756:44:0::1;;;;;;;-1:-1:-1::0;25596:3:0::1;;25556:256;;;;25349:470:::0;;;;:::o;3228:215::-;1105:10;3316:4;3365:25;;;:11;:25;;;;;;;;;:34;;;;;;;;;;3316:4;;3333:80;;3356:7;;3365:47;;3402:10;;3365:47;:::i;:::-;3333:8;:80::i;26005:159::-;20389:7;;;;20375:10;:21;20367:49;;;;;;;7225:2:1;20367:49:0;;;7207:21:1;7264:2;7244:18;;;7237:30;7303:17;7283:18;;;7276:45;7338:18;;20367:49:0;7023:339:1;20367:49:0;26092:8:::1;26072:7;;26082:6;26072:16;;;;:::i;:::-;:28;;26064:64;;;::::0;::::1;::::0;;8400:2:1;26064:64:0::1;::::0;::::1;8382:21:1::0;8439:2;8419:18;;;8412:30;8478:25;8458:18;;;8451:53;8521:18;;26064:64:0::1;8198:347:1::0;26064:64:0::1;26150:6;26139:7;;:17;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;26005:159:0:o;21756:715::-;21822:21;21864:7;21875:1;21864:12;21856:29;;;;;;;;;;;;;;;;;21896:15;20117:6;21916:26;20173:4;21916:7;:26;:::i;:::-;21915:36;;;;:::i;:::-;21896:56;-1:-1:-1;21963:18:0;21984:17;21896:56;21984:7;:17;:::i;:::-;21963:38;;22041:26;22047:10;22059:7;22041:5;:26::i;:::-;22120:39;;;;;22136:10;22120:39;;;9309:74:1;9399:18;;;9392:34;;;22120:6:0;:15;;;;;9282:18:1;;22120:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;22226:14:0;;22252:12;;22220:53;;22226:14;;;20117:6;;22242:22;;:7;:22;:::i;:::-;:30;;;;:::i;:::-;22220:5;:53::i;:::-;22337:10;;22369:12;;22331:59;;22337:10;;;20117:6;;22359:22;;:7;:22;:::i;:::-;:30;;;;:::i;:::-;22349:40;;:7;:40;:::i;22331:59::-;22406:29;;642:25:1;;;22412:10:0;;22406:29;;630:2:1;615:18;22406:29:0;;;;;;;22453:10;21756:715;-1:-1:-1;;;21756:715:0:o;26893:168::-;26991:19;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26991:19:0;27030:14;;;;;;;:8;:14;;;;;:23;;27045:7;;27030:23;;;;;;:::i;:::-;;;;;;;;;;;27023:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26893:168;;;;:::o;26301:230::-;20389:7;;;;20375:10;:21;20367:49;;;;;;;7225:2:1;20367:49:0;;;7207:21:1;7264:2;7244:18;;;7237:30;7303:17;7283:18;;;7276:45;7338:18;;20367:49:0;7023:339:1;20367:49:0;26407:31:::1;:8;26420:17:::0;26407:12:::1;:31::i;:::-;-1:-1:-1::0;26449:29:0::1;:6;26460:17:::0;26449:10:::1;:29::i;:::-;-1:-1:-1::0;26489:14:0::1;:34:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;26301:230::o;25842:155::-;20389:7;;;;20375:10;:21;20367:49;;;;;;;7225:2:1;20367:49:0;;;7207:21:1;7264:2;7244:18;;;7237:30;7303:17;7283:18;;;7276:45;7338:18;;20367:49:0;7023:339:1;20367:49:0;25927:7:::1;25917:6;25907:7;;:16;;;;:::i;:::-;:27;;25899:62;;;::::0;::::1;::::0;;9889:2:1;25899:62:0::1;::::0;::::1;9871:21:1::0;9928:2;9908:18;;;9901:30;9967:24;9947:18;;;9940:52;10009:18;;25899:62:0::1;9687:346:1::0;25899:62:0::1;25983:6;25972:7;;:17;;;;;;;:::i;24877:464::-:0;20389:7;;;;20375:10;:21;20367:49;;;;;;;7225:2:1;20367:49:0;;;7207:21:1;7264:2;7244:18;;;7237:30;7303:17;7283:18;;;7276:45;7338:18;;20367:49:0;7023:339:1;20367:49:0;25019:34;;::::1;25011:60;;;;;;;;;;;;;;;;;25087:9;25082:252;25102:18:::0;;::::1;25082:252;;;25142:12;25157:7;;25165:1;25157:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;:101;;25231:27;25245:9;;25255:1;25245:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;25231:6;::::0;:13:::1;:27::i;:::-;25157:101;;;25187:24;25198:9;;25208:1;25198:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;25187:6;::::0;:10:::1;:24::i;:::-;25142:116;;25288:9;;25298:1;25288:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;25278:44;;;25302:7;;25310:1;25302:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;25278:44;::::0;;8112:14:1;;8105:22;8087:41;;8171:14;;8164:22;8159:2;8144:18;;8137:50;8060:18;25278:44:0::1;;;;;;;-1:-1:-1::0;25122:3:0::1;;25082:252;;1745:104:::0;1801:13;1834:7;1827:14;;;;;:::i;3451:413::-;1105:10;3544:4;3588:25;;;:11;:25;;;;;;;;;:34;;;;;;;;;;3641:35;;;;3633:85;;;;;;;10240:2:1;3633:85:0;;;10222:21:1;10279:2;10259:18;;;10252:30;10318:34;10298:18;;;10291:62;10389:7;10369:18;;;10362:35;10414:19;;3633:85:0;10038:401:1;3633:85:0;3754:67;1105:10;3777:7;3805:15;3786:16;:34;3754:8;:67::i;:::-;-1:-1:-1;3852:4:0;;3451:413;-1:-1:-1;;;3451:413:0:o;27463:224::-;27542:4;27567:26;27579:10;27590:2;27567:11;:26::i;:::-;27559:76;;;;;;;6819:2:1;27559:76:0;;;6801:21:1;6858:2;6838:18;;;6831:30;6897:34;6877:18;;;6870:62;6968:7;6948:18;;;6941:35;6993:19;;27559:76:0;6617:401:1;27559:76:0;27653:26;27668:2;27672:6;27653:14;:26::i;:::-;27646:33;27463:224;-1:-1:-1;;;27463:224:0:o;22955:1377::-;23048:10;23010:26;23039:20;;;:8;:20;;;;;:29;;23060:7;;23039:29;;;;;;:::i;:::-;;;;;;;;;;;23010:58;;23087:5;:12;;;23103:1;23087:17;23079:37;;;;;;;;;;;;;;;;;23145:12;;23185:11;;;;23127:15;23207:16;;23256:17;20219:7;23185:11;23256:17;:::i;:::-;23238:15;:35;23234:1091;;;23290:26;23296:10;23308:7;23290:5;:26::i;:::-;23336:43;;642:25:1;;;23362:7:0;;23350:10;;23336:43;;630:2:1;615:18;23336:43:0;;;;;;;;23234:1091;;;23426:15;23410:5;:12;;;:31;23406:919;;23458:36;;;;;23474:10;23458:36;;;9309:74:1;9399:18;;;9392:34;;;23458:6:0;:15;;;;;9282:18:1;;23458:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;23514:41:0;;642:25:1;;;23538:7:0;;23526:10;;23514:41;;630:2:1;615:18;23514:41:0;496:177:1;23406:919:0;23597:12;20117:6;23613:28;20173:4;23613:7;:28;:::i;:::-;23612:38;;;;:::i;:::-;23597:53;;23665:18;20117:6;23791:7;;23780:6;23762:15;:24;;;;:::i;:::-;23716;20173:4;20117:6;23716:24;:::i;:::-;23688:53;;:7;:53;:::i;:::-;:99;;;;:::i;:::-;23687:111;;;;:::i;:::-;23686:121;;;;:::i;:::-;23665:142;-1:-1:-1;23822:20:0;23845:17;23665:142;23845:4;:17;:::i;:::-;23926:41;;;;;23942:10;23926:41;;;9309:74:1;9399:18;;;9392:34;;;23822:40:0;;-1:-1:-1;23926:6:0;:15;;;;;9282:18:1;;23926:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;24036:14:0;;24076:12;;24030:65;;24036:14;;;20117:6;;24052:22;24062:12;24052:7;:22;:::i;:::-;24051:37;;;;:::i;24030:65::-;24170:10;;24233:12;;24164:88;;24170:10;;;20117:6;;24209:22;24219:12;24209:7;:22;:::i;:::-;24208:37;;;;:::i;:::-;:43;;;;:::i;:::-;24182:22;24192:12;24182:7;:22;:::i;:::-;24181:70;;;;:::i;24164:88::-;24272:41;;642:25:1;;;24296:7:0;;24284:10;;24272:41;;630:2:1;615:18;24272:41:0;;;;;;;23582:743;;;23406:919;22999:1333;;;22955:1377;:::o;27069:116::-;27124:12;27156:21;:6;27172:4;27156:15;:21::i;26172:120::-;20389:7;;;;20375:10;:21;20367:49;;;;;;;7225:2:1;20367:49:0;;;7207:21:1;7264:2;7244:18;;;7237:30;7303:17;7283:18;;;7276:45;7338:18;;20367:49:0;7023:339:1;20367:49:0;26264:7:::1;:20:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;26172:120::o;24340:387::-;20389:7;;;;20375:10;:21;20367:49;;;;;;;7225:2:1;20367:49:0;;;7207:21:1;7264:2;7244:18;;;7237:30;7303:17;7283:18;;;7276:45;7338:18;;20367:49:0;7023:339:1;20367:49:0;24488:9:::1;24483:237;24503:18:::0;;::::1;24483:237;;;24621:6;24599:29;;:7;;24607:1;24599:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;:29;;::::0;24591:53:::1;;;;;;;;;;;;;;;;;24666:7;;24674:1;24666:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;24687:7;::::0;24659:27:::1;::::0;;::::1;::::0;::::1;::::0;24687:7:::1;24696:8:::0;;24705:1;24696:11;;::::1;;;;;:::i;:::-;24659:49;::::0;;::::1;::::0;;;;;;9339:42:1;9327:55;;;24659:49:0::1;::::0;::::1;9309:74:1::0;24696:11:0::1;;::::0;;;::::1;;9399:18:1::0;;;9392:34;-1:-1:-1;9282:18:1;;24659:49:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;24523:3:0::1;;24483:237;;21474:232:::0;21533:7;21544:1;21533:12;21525:29;;;;;;;;;;;;;;;;;21565:55;;;;;21585:10;21565:55;;;10646:74:1;21605:4:0;10736:18:1;;;10729:83;10828:18;;;10821:34;;;21565:6:0;:19;;;;;10619:18:1;;21565:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21631:26;21637:10;21649:7;21631:5;:26::i;:::-;21673:25;;642::1;;;21678:10:0;;21673:25;;630:2:1;615:18;21673:25:0;;;;;;;21474:232;:::o;5020:591::-;5104:21;;;5096:67;;;;;;;11068:2:1;5096:67:0;;;11050:21:1;11107:2;11087:18;;;11080:30;11146:34;11126:18;;;11119:62;11217:3;11197:18;;;11190:31;11238:19;;5096:67:0;10866:397:1;5096:67:0;5263:18;;;5238:22;5263:18;;;;;;;;;;;5300:24;;;;5292:71;;;;;;;11470:2:1;5292:71:0;;;11452:21:1;11509:2;11489:18;;;11482:30;11548:34;11528:18;;;11521:62;11619:4;11599:18;;;11592:32;11641:19;;5292:71:0;11268:398:1;5292:71:0;5399:18;;;:9;:18;;;;;;;;;;5420:23;;;5399:44;;5465:12;:22;;5437:6;;5399:9;5465:22;;5437:6;;5465:22;:::i;:::-;;;;-1:-1:-1;;5505:37:0;;642:25:1;;;5531:1:0;;5505:37;;;;;;630:2:1;615:18;5505:37:0;;;;;;;;5085:526;5020:591;;:::o;5619:380::-;5755:19;;;5747:68;;;;;;;11873:2:1;5747:68:0;;;11855:21:1;11912:2;11892:18;;;11885:30;11951:34;11931:18;;;11924:62;12022:6;12002:18;;;11995:34;12046:19;;5747:68:0;11671:400:1;5747:68:0;5834:21;;;5826:68;;;;;;;12278:2:1;5826:68:0;;;12260:21:1;12317:2;12297:18;;;12290:30;12356:34;12336:18;;;12329:62;12427:4;12407:18;;;12400:32;12449:19;;5826:68:0;12076:398:1;5826:68:0;5907:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5959:32;;642:25:1;;;5959:32:0;;615:18:1;5959:32:0;496:177:1;27193:262:0;27290:4;27315:22;:6;27331:5;27315:15;:22::i;:::-;:58;;;-1:-1:-1;27354:19:0;;;;27315:58;:92;;;-1:-1:-1;27390:17:0;;;;27315:92;:131;;;-1:-1:-1;27424:22:0;:8;27442:3;27424:17;:22::i;2728:492::-;2868:4;2885:36;2895:6;2903:9;2914:6;2885:9;:36::i;:::-;2961:19;;;2934:24;2961:19;;;:11;:19;;;;;;;;1105:10;2961:33;;;;;;;;3013:26;;;;3005:79;;;;;;;12681:2:1;3005:79:0;;;12663:21:1;12720:2;12700:18;;;12693:30;12759:34;12739:18;;;12732:62;12830:10;12810:18;;;12803:38;12858:19;;3005:79:0;12479:404:1;3005:79:0;3120:57;3129:6;1105:10;3170:6;3151:16;:25;3120:8;:57::i;:::-;-1:-1:-1;3208:4:0;;2728:492;-1:-1:-1;;;;2728:492:0:o;14770:152::-;14840:4;14864:50;14869:3;14889:23;;;14864:4;:50::i;15098:158::-;15171:4;15195:53;15203:3;15223:23;;;15195:7;:53::i;4613:399::-;4697:21;;;4689:65;;;;;;;13090:2:1;4689:65:0;;;13072:21:1;13129:2;13109:18;;;13102:30;13168:33;13148:18;;;13141:61;13219:18;;4689:65:0;12888:355:1;4689:65:0;4845:6;4829:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;4862:18:0;;;:9;:18;;;;;;;;;;:28;;4884:6;;4862:9;:28;;4884:6;;4862:28;:::i;:::-;;;;-1:-1:-1;;4906:37:0;;642:25:1;;;4906:37:0;;;;4923:1;;4906:37;;630:2:1;615:18;4906:37:0;;;;;;;4613:399;;:::o;2209:175::-;2295:4;2312:42;1105:10;2336:9;2347:6;2312:9;:42::i;15342:167::-;15476:23;;;15422:4;10720:21;;;:14;;;:21;;;;;;:26;;15446:55;10623:131;3872:733;4012:20;;;4004:70;;;;;;;13450:2:1;4004:70:0;;;13432:21:1;13489:2;13469:18;;;13462:30;13528:34;13508:18;;;13501:62;13599:7;13579:18;;;13572:35;13624:19;;4004:70:0;13248:401:1;4004:70:0;4093:23;;;4085:71;;;;;;;13856:2:1;4085:71:0;;;13838:21:1;13895:2;13875:18;;;13868:30;13934:34;13914:18;;;13907:62;14005:5;13985:18;;;13978:33;14028:19;;4085:71:0;13654:399:1;4085:71:0;4253:17;;;4229:21;4253:17;;;;;;;;;;;4289:23;;;;4281:74;;;;;;;14260:2:1;4281:74:0;;;14242:21:1;14299:2;14279:18;;;14272:30;14338:34;14318:18;;;14311:62;14409:8;14389:18;;;14382:36;14435:19;;4281:74:0;14058:402:1;4281:74:0;4391:17;;;;:9;:17;;;;;;;;;;;4411:22;;;4391:42;;4455:20;;;;;;;;:30;;4427:6;;4391:9;4455:30;;4427:6;;4455:30;:::i;:::-;;;;;;;;4520:9;4503:35;;4512:6;4503:35;;;4531:6;4503:35;;;;642:25:1;;630:2;615:18;;496:177;8545:416:0;8608:4;10720:21;;;:14;;;:21;;;;;;8625:329;;-1:-1:-1;8668:23:0;;;;;;;;:11;:23;;;;;;;;;;;;;8853:18;;8829:21;;;:14;;;:21;;;;;;:42;;;;8886:11;;8625:329;-1:-1:-1;8937:5:0;8930:12;;9137:1400;9203:4;9334:21;;;:14;;;:21;;;;;;9372:13;;9368:1162;;9745:18;9766:12;9777:1;9766:8;:12;:::i;:::-;9813:18;;9745:33;;-1:-1:-1;9793:17:0;;9813:22;;9834:1;;9813:22;:::i;:::-;9793:42;;9870:9;9856:10;:23;9852:385;;9900:17;9920:3;:11;;9932:9;9920:22;;;;;;;;:::i;:::-;;;;;;;;;9900:42;;10070:9;10044:3;:11;;10056:10;10044:23;;;;;;;;:::i;:::-;;;;;;;;;;;;:35;;;;10185:25;;;:14;;;:25;;;;;:36;;;9852:385;10318:17;;:3;;:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;10424:3;:14;;:21;10439:5;10424:21;;;;;;;;;;;10417:28;;;10469:4;10462:11;;;;;;;9368:1162;10513:5;10506:12;;;;;14:477:1;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;482:2;412:66;407:2;399:6;395:15;391:88;380:9;376:104;372:113;364:121;;;14:477;;;;:::o;678:226::-;737:6;790:2;778:9;769:7;765:23;761:32;758:52;;;806:1;803;796:12;758:52;-1:-1:-1;851:23:1;;678:226;-1:-1:-1;678:226:1:o;909:196::-;977:20;;1037:42;1026:54;;1016:65;;1006:93;;1095:1;1092;1085:12;1006:93;909:196;;;:::o;1110:300::-;1178:6;1186;1239:2;1227:9;1218:7;1214:23;1210:32;1207:52;;;1255:1;1252;1245:12;1207:52;1278:29;1297:9;1278:29;:::i;:::-;1268:39;1376:2;1361:18;;;;1348:32;;-1:-1:-1;;;1110:300:1:o;2003:374::-;2080:6;2088;2096;2149:2;2137:9;2128:7;2124:23;2120:32;2117:52;;;2165:1;2162;2155:12;2117:52;2188:29;2207:9;2188:29;:::i;:::-;2178:39;;2236:38;2270:2;2259:9;2255:18;2236:38;:::i;:::-;2003:374;;2226:48;;-1:-1:-1;;;2343:2:1;2328:18;;;;2315:32;;2003:374::o;2382:186::-;2441:6;2494:2;2482:9;2473:7;2469:23;2465:32;2462:52;;;2510:1;2507;2500:12;2462:52;2533:29;2552:9;2533:29;:::i;2762:367::-;2825:8;2835:6;2889:3;2882:4;2874:6;2870:17;2866:27;2856:55;;2907:1;2904;2897:12;2856:55;-1:-1:-1;2930:20:1;;2973:18;2962:30;;2959:50;;;3005:1;3002;2995:12;2959:50;3042:4;3034:6;3030:17;3018:29;;3102:3;3095:4;3085:6;3082:1;3078:14;3070:6;3066:27;3062:38;3059:47;3056:67;;;3119:1;3116;3109:12;3056:67;2762:367;;;;;:::o;3134:765::-;3253:6;3261;3269;3277;3330:2;3318:9;3309:7;3305:23;3301:32;3298:52;;;3346:1;3343;3336:12;3298:52;3386:9;3373:23;3419:18;3411:6;3408:30;3405:50;;;3451:1;3448;3441:12;3405:50;3490:70;3552:7;3543:6;3532:9;3528:22;3490:70;:::i;:::-;3579:8;;-1:-1:-1;3464:96:1;-1:-1:-1;;3667:2:1;3652:18;;3639:32;3696:18;3683:32;;3680:52;;;3728:1;3725;3718:12;3680:52;3767:72;3831:7;3820:8;3809:9;3805:24;3767:72;:::i;:::-;3134:765;;;;-1:-1:-1;3858:8:1;-1:-1:-1;;;;3134:765:1:o;5591:260::-;5659:6;5667;5720:2;5708:9;5699:7;5695:23;5691:32;5688:52;;;5736:1;5733;5726:12;5688:52;5759:29;5778:9;5759:29;:::i;:::-;5749:39;;5807:38;5841:2;5830:9;5826:18;5807:38;:::i;:::-;5797:48;;5591:260;;;;;:::o;5856:437::-;5935:1;5931:12;;;;5978;;;5999:61;;6053:4;6045:6;6041:17;6031:27;;5999:61;6106:2;6098:6;6095:14;6075:18;6072:38;6069:218;;6143:77;6140:1;6133:88;6244:4;6241:1;6234:15;6272:4;6269:1;6262:15;6069:218;;5856:437;;;:::o;6298:184::-;6350:77;6347:1;6340:88;6447:4;6444:1;6437:15;6471:4;6468:1;6461:15;6487:125;6552:9;;;6573:10;;;6570:36;;;6586:18;;:::i;7367:184::-;7419:77;7416:1;7409:88;7516:4;7513:1;7506:15;7540:4;7537:1;7530:15;7556:118;7642:5;7635:13;7628:21;7621:5;7618:32;7608:60;;7664:1;7661;7654:12;7608:60;7556:118;:::o;7679:241::-;7735:6;7788:2;7776:9;7767:7;7763:23;7759:32;7756:52;;;7804:1;7801;7794:12;7756:52;7843:9;7830:23;7862:28;7884:5;7862:28;:::i;8550:168::-;8623:9;;;8654;;8671:15;;;8665:22;;8651:37;8641:71;;8692:18;;:::i;8723:274::-;8763:1;8789;8779:189;;8824:77;8821:1;8814:88;8925:4;8922:1;8915:15;8953:4;8950:1;8943:15;8779:189;-1:-1:-1;8982:9:1;;8723:274::o;9002:128::-;9069:9;;;9090:11;;;9087:37;;;9104:18;;:::i;9437:245::-;9504:6;9557:2;9545:9;9536:7;9532:23;9528:32;9525:52;;;9573:1;9570;9563:12;9525:52;9605:9;9599:16;9624:28;9646:5;9624:28;:::i;14465:184::-;14517:77;14514:1;14507:88;14614:4;14611:1;14604:15;14638:4;14635:1;14628:15
Swarm Source
ipfs://3913aba3dbaaf0d945cbc40e331e9270b0c17276a5ea1258eb99c48459159e90
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.