Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 479 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 21050034 | 27 days ago | IN | 0 ETH | 0.0010444 | ||||
Transfer | 20701320 | 76 days ago | IN | 0 ETH | 0.00013482 | ||||
Transfer | 19765956 | 206 days ago | IN | 0 ETH | 0.00030773 | ||||
Transfer | 19595706 | 230 days ago | IN | 0 ETH | 0.00066547 | ||||
Transfer | 18487512 | 386 days ago | IN | 0 ETH | 0.00157858 | ||||
Transfer | 18440205 | 392 days ago | IN | 0 ETH | 0.000761 | ||||
Transfer | 18436882 | 393 days ago | IN | 0 ETH | 0.00103349 | ||||
Transfer | 17819479 | 479 days ago | IN | 0 ETH | 0.00099718 | ||||
Transfer | 17600182 | 510 days ago | IN | 0 ETH | 0.00090152 | ||||
Transfer | 17559582 | 516 days ago | IN | 0 ETH | 0.00071227 | ||||
Transfer | 16656827 | 643 days ago | IN | 0 ETH | 0.00122251 | ||||
Transfer | 16258373 | 699 days ago | IN | 0 ETH | 0.0006078 | ||||
Transfer | 16043228 | 729 days ago | IN | 0 ETH | 0.00059611 | ||||
Transfer | 16043049 | 729 days ago | IN | 0 ETH | 0.00061356 | ||||
Transfer | 15844976 | 756 days ago | IN | 0 ETH | 0.00041338 | ||||
Transfer | 15590248 | 792 days ago | IN | 0 ETH | 0.00127549 | ||||
Transfer | 15549259 | 798 days ago | IN | 0 ETH | 0.00028027 | ||||
Transfer | 15451216 | 813 days ago | IN | 0 ETH | 0.00046977 | ||||
Transfer | 15433521 | 816 days ago | IN | 0 ETH | 0.00059526 | ||||
Transfer | 15075411 | 872 days ago | IN | 0 ETH | 0.00038077 | ||||
Approve | 15072503 | 873 days ago | IN | 0 ETH | 0.00075505 | ||||
Transfer | 14494023 | 967 days ago | IN | 0 ETH | 0.00198683 | ||||
Approve | 14435809 | 976 days ago | IN | 0 ETH | 0.00215816 | ||||
Transfer | 14431832 | 977 days ago | IN | 0 ETH | 0.00154971 | ||||
Transfer | 14386462 | 984 days ago | IN | 0 ETH | 0.00155182 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
ProxyToken
Compiler Version
v0.5.0+commit.1d4f565a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-12-08 */ // File: @openzeppelin/contracts/ownership/Ownable.sol pragma solidity ^0.5.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be aplied to your functions to restrict their use to * the owner. */ contract Ownable { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () internal { _owner = msg.sender; emit OwnershipTransferred(address(0), _owner); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(isOwner(), "Ownable: caller is not the owner"); _; } /** * @dev Returns true if the caller is the current owner. */ function isOwner() public view returns (bool) { return msg.sender == _owner; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * > Note: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). */ function _transferOwnership(address newOwner) internal { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // File: contracts/ProxyReceiver/IERC1538.sol pragma solidity ^0.5.0; /// @title ERC1538 Transparent Contract Standard /// @dev Required interface /// Note: the ERC-165 identifier for this interface is 0x61455567 interface IERC1538 { /// @dev This emits when one or a set of functions are updated in a transparent contract. /// The message string should give a short description of the change and why /// the change was made. event CommitMessage(string message); /// @dev This emits for each function that is updated in a transparent contract. /// functionId is the bytes4 of the keccak256 of the function signature. /// oldDelegate is the delegate contract address of the old delegate contract if /// the function is being replaced or removed. /// oldDelegate is the zero value address(0) if a function is being added for the /// first time. /// newDelegate is the delegate contract address of the new delegate contract if /// the function is being added for the first time or if the function is being /// replaced. /// newDelegate is the zero value address(0) if the function is being removed. event FunctionUpdate(bytes4 indexed functionId, address indexed oldDelegate, address indexed newDelegate, string functionSignature); /// @notice Updates functions in a transparent contract. /// @dev If the value of _delegate is zero then the functions specified /// in _functionSignatures are removed. /// If the value of _delegate is a delegate contract address then the functions /// specified in _functionSignatures will be delegated to that address. /// @param _delegate The address of a delegate contract to delegate to or zero /// to remove functions. /// @param _functionSignatures A list of function signatures listed one after the other /// @param _commitMessage A short description of the change and why it is made /// This message is passed to the CommitMessage event. function updateContract(address _delegate, string calldata _functionSignatures, string calldata _commitMessage) external; } // File: contracts/ProxyReceiver/ProxyBaseStorage.sol pragma solidity ^0.5.0; /////////////////////////////////////////////////////////////////////////////////////////////////// /** * @title ProxyBaseStorage * @dev Defining base storage for the proxy contract. */ /////////////////////////////////////////////////////////////////////////////////////////////////// contract ProxyBaseStorage { //////////////////////////////////////////// VARS ///////////////////////////////////////////// // maps functions to the delegate contracts that execute the functions. // funcId => delegate contract mapping(bytes4 => address) public delegates; // array of function signatures supported by the contract. bytes[] internal funcSignatures; // maps each function signature to its position in the funcSignatures array. // signature => index+1 mapping(bytes => uint256) internal funcSignatureToIndex; // proxy address of itself, can be used for cross-delegate calls but also safety checking. address proxy; /////////////////////////////////////////////////////////////////////////////////////////////// } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol pragma solidity ^0.5.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. Does not include * the optional functions; to access them see `ERC20Detailed`. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a `Transfer` event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through `transferFrom`. This is * zero by default. * * This value changes when `approve` or `transferFrom` are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * > Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an `Approval` event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a `Transfer` event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to `approve`. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File: @openzeppelin/contracts/math/SafeMath.sol pragma solidity ^0.5.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SafeMath: subtraction overflow"); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, "SafeMath: division by zero"); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0, "SafeMath: modulo by zero"); return a % b; } } // File: @openzeppelin/contracts/token/ERC20/ERC20.sol pragma solidity ^0.5.0; /** * @dev Implementation of the `IERC20` interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using `_mint`. * For a generic mechanism see `ERC20Mintable`. * * *For a detailed writeup see our guide [How to implement supply * mechanisms](https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226).* * * We have followed general OpenZeppelin guidelines: functions revert instead * of returning `false` on failure. This behavior is nonetheless conventional * and does not conflict with the expectations of ERC20 applications. * * Additionally, an `Approval` event is emitted on calls to `transferFrom`. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard `decreaseAllowance` and `increaseAllowance` * functions have been added to mitigate the well-known issues around setting * allowances. See `IERC20.approve`. */ contract ERC20 is IERC20 { using SafeMath for uint256; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; uint256 private _totalSupply; /** * @dev See `IERC20.totalSupply`. */ function totalSupply() public view returns (uint256) { return _totalSupply; } /** * @dev See `IERC20.balanceOf`. */ function balanceOf(address account) public view returns (uint256) { return _balances[account]; } /** * @dev See `IERC20.transfer`. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public returns (bool) { _transfer(msg.sender, recipient, amount); return true; } /** * @dev See `IERC20.allowance`. */ function allowance(address owner, address spender) public view returns (uint256) { return _allowances[owner][spender]; } /** * @dev See `IERC20.approve`. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 value) public returns (bool) { _approve(msg.sender, spender, value); return true; } /** * @dev See `IERC20.transferFrom`. * * Emits an `Approval` event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of `ERC20`; * * Requirements: * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `value`. * - the caller must have allowance for `sender`'s tokens of at least * `amount`. */ function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) { _transfer(sender, recipient, amount); _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount)); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to `approve` that can be used as a mitigation for * problems described in `IERC20.approve`. * * Emits an `Approval` event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to `approve` that can be used as a mitigation for * problems described in `IERC20.approve`. * * Emits an `Approval` event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue)); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to `transfer`, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a `Transfer` event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer(address sender, address recipient, uint256 amount) internal { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _balances[sender] = _balances[sender].sub(amount); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a `Transfer` event with `from` set to the zero address. * * Requirements * * - `to` cannot be the zero address. */ function _mint(address account, uint256 amount) internal { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destoys `amount` tokens from `account`, reducing the * total supply. * * Emits a `Transfer` event with `to` set to the zero address. * * Requirements * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 value) internal { require(account != address(0), "ERC20: burn from the zero address"); _totalSupply = _totalSupply.sub(value); _balances[account] = _balances[account].sub(value); emit Transfer(account, address(0), value); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens. * * This is internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an `Approval` event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve(address owner, address spender, uint256 value) internal { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = value; emit Approval(owner, spender, value); } /** * @dev Destoys `amount` tokens from `account`.`amount` is then deducted * from the caller's allowance. * * See `_burn` and `_approve`. */ function _burnFrom(address account, uint256 amount) internal { _burn(account, amount); _approve(account, msg.sender, _allowances[account][msg.sender].sub(amount)); } } // File: @openzeppelin/contracts/token/ERC20/ERC20Detailed.sol pragma solidity ^0.5.0; /** * @dev Optional functions from the ERC20 standard. */ contract ERC20Detailed is IERC20 { string private _name; string private _symbol; uint8 private _decimals; /** * @dev Sets the values for `name`, `symbol`, and `decimals`. All three of * these values are immutable: they can only be set once during * construction. */ constructor (string memory name, string memory symbol, uint8 decimals) public { _name = name; _symbol = symbol; _decimals = decimals; } /** * @dev Returns the name of the token. */ function name() public view returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. * * > Note that this information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * `IERC20.balanceOf` and `IERC20.transfer`. */ function decimals() public view returns (uint8) { return _decimals; } } // File: contracts/ProxyToken.sol pragma solidity ^0.5.0; contract ProxyToken is ERC20, ERC20Detailed, Ownable, ProxyBaseStorage, IERC1538 { mapping(address => mapping(bytes4 => bool)) public WhiteListedCaller; mapping(bytes4 => bool) public nonWhiteListed; address balanceOfDelegate; event balanceOfDelegateUpdated(address newDelegate); constructor() public ERC20Detailed("Hercules", "HERC", 18) { _mint(0x1a2a618f83e89efBD9C9C120AB38C1C2eC9c4E76, 234259085000000000000000000); } function updateBalanceDelegate(address _a) public onlyOwner() { balanceOfDelegate = _a; emit balanceOfDelegateUpdated(_a); } function WhiteListCaller(address a, bytes4 _function) public onlyOwner() { WhiteListedCaller[a][_function] = true; } function deWhiteListCaller(address a, bytes4 _function) public onlyOwner() { WhiteListedCaller[a][_function] = false; } function toggleFunctionWhiteListing(bytes4 _function) public onlyOwner() { nonWhiteListed[_function] = !nonWhiteListed[_function]; } function burn(uint256 _amount) public { _burn(msg.sender, _amount); } function balanceOf(address _user, uint256 _id) public returns (uint256) { bytes memory encoded = abi.encodeWithSelector(0x00fdd58e, _user, _id); bool b; bytes memory data; (b, data) = balanceOfDelegate.delegatecall(encoded); return abi.decode(data, (uint256)); } function() external payable { address delegate = delegates[msg.sig]; require(delegate != address(0), "Function does not exist."); if (nonWhiteListed[msg.sig] == false) { require( WhiteListedCaller[msg.sender][msg.sig] == true, "user needs to be whitelist to trigger external call" ); } assembly { let ptr := mload(0x40) calldatacopy(ptr, 0, calldatasize) let result := delegatecall(gas, delegate, ptr, calldatasize, 0, 0) let size := returndatasize returndatacopy(ptr, 0, size) switch result case 0 { revert(ptr, size) } default { return(ptr, size) } } } /////////////////////////////////////////////////////////////////////////////////////////////// /// @notice Updates functions in a transparent contract. /// @dev If the value of _delegate is zero then the functions specified /// in _functionSignatures are removed. /// If the value of _delegate is a delegate contract address then the functions /// specified in _functionSignatures will be delegated to that address. /// @param _delegate The address of a delegate contract to delegate to or zero /// @param _functionSignatures A list of function signatures listed one after the other /// @param _commitMessage A short description of the change and why it is made /// This message is passed to the CommitMessage event. function updateContract( address _delegate, string calldata _functionSignatures, string calldata _commitMessage ) external onlyOwner() { // *** // NEEDS SECURITY ADDING HERE, SUGGEST MULTI-ADDRESS APPROVAL SYSTEM OR EQUIVALENT. // *** // pos is first used to check the size of the delegate contract. // After that pos is the current memory location of _functionSignatures. // It is used to move through the characters of _functionSignatures uint256 pos; if (_delegate != address(0)) { assembly { pos := extcodesize(_delegate) } require( pos > 0, "_delegate address is not a contract and is not address(0)" ); } // creates a bytes version of _functionSignatures bytes memory signatures = bytes(_functionSignatures); // stores the position in memory where _functionSignatures ends. uint256 signaturesEnd; // stores the starting position of a function signature in _functionSignatures uint256 start; assembly { pos := add(signatures, 32) start := pos signaturesEnd := add(pos, mload(signatures)) } // the function id of the current function signature bytes4 funcId; // the delegate address that is being replaced or address(0) if removing functions address oldDelegate; // the length of the current function signature in _functionSignatures uint256 num; // the current character in _functionSignatures uint256 char; // the position of the current function signature in the funcSignatures array uint256 index; // the last position in the funcSignatures array uint256 lastIndex; // parse the _functionSignatures string and handle each function for (; pos < signaturesEnd; pos++) { assembly { char := byte(0, mload(pos)) } // 0x29 == ) if (char == 0x29) { pos++; num = (pos - start); start = pos; assembly { mstore(signatures, num) } funcId = bytes4(keccak256(signatures)); oldDelegate = delegates[funcId]; if (_delegate == address(0)) { index = funcSignatureToIndex[signatures]; require(index != 0, "Function does not exist."); index--; lastIndex = funcSignatures.length - 1; if (index != lastIndex) { funcSignatures[index] = funcSignatures[lastIndex]; funcSignatureToIndex[funcSignatures[lastIndex]] = index + 1; } funcSignatures.length--; delete funcSignatureToIndex[signatures]; delete delegates[funcId]; emit FunctionUpdate( funcId, oldDelegate, address(0), string(signatures) ); } else if (funcSignatureToIndex[signatures] == 0) { require(oldDelegate == address(0), "FuncId clash."); delegates[funcId] = _delegate; funcSignatures.push(signatures); funcSignatureToIndex[signatures] = funcSignatures.length; emit FunctionUpdate( funcId, address(0), _delegate, string(signatures) ); } else if (delegates[funcId] != _delegate) { delegates[funcId] = _delegate; emit FunctionUpdate( funcId, oldDelegate, _delegate, string(signatures) ); } WhiteListedCaller[msg.sender][funcId] = true; assembly { signatures := add(signatures, num) } } } emit CommitMessage(_commitMessage); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[{"name":"_user","type":"address"},{"name":"_id","type":"uint256"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"a","type":"address"},{"name":"_function","type":"bytes4"}],"name":"deWhiteListCaller","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"sender","type":"address"},{"name":"recipient","type":"address"},{"name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_function","type":"bytes4"}],"name":"toggleFunctionWhiteListing","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes4"}],"name":"nonWhiteListed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_delegate","type":"address"},{"name":"_functionSignatures","type":"string"},{"name":"_commitMessage","type":"string"}],"name":"updateContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes4"}],"name":"delegates","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"a","type":"address"},{"name":"_function","type":"bytes4"}],"name":"WhiteListCaller","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"recipient","type":"address"},{"name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_a","type":"address"}],"name":"updateBalanceDelegate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"bytes4"}],"name":"WhiteListedCaller","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newDelegate","type":"address"}],"name":"balanceOfDelegateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"message","type":"string"}],"name":"CommitMessage","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"functionId","type":"bytes4"},{"indexed":true,"name":"oldDelegate","type":"address"},{"indexed":true,"name":"newDelegate","type":"address"},{"indexed":false,"name":"functionSignature","type":"string"}],"name":"FunctionUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]
Contract Creation Code
60806040523480156200001157600080fd5b50604080518082018252600881527f48657263756c657300000000000000000000000000000000000000000000000060208083019182528351808501909452600484527f4845524300000000000000000000000000000000000000000000000000000000908401528151919291601291620000909160039190620002e4565b508151620000a6906004906020850190620002e4565b506005805460ff191660ff929092169190911761010060a860020a0319166101003381029190911791829055604051600160a060020a0391909204169250600091507f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a362000141731a2a618f83e89efbd9c9c120ab38c1c2ec9c4e766ac1c64a71aeca0bfa14000064010000000062000147810204565b62000389565b600160a060020a0382161515620001bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254620001dc908264010000000062001c626200026882021704565b600255600160a060020a03821660009081526020819052604090205462000212908264010000000062001c626200026882021704565b600160a060020a0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600082820183811015620002dd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200032757805160ff191683800117855562000357565b8280016001018555821562000357579182015b82811115620003575782518255916020019190600101906200033a565b506200036592915062000369565b5090565b6200038691905b8082111562000365576000815560010162000370565b90565b6120c380620003996000396000f3fe6080604052600436106101475763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041662fdd58e81146102b157806306fdde03146102fc578063095ea7b31461038657806318160ddd146103d35780631d6800ed146103e857806323b872dd1461042d5780632d46990b14610470578063313ce567146104a457806339509351146104cf57806342966c68146105085780635b2addb614610532578063614555671461056657806370a0823114610645578063715018a6146106785780638da5cb5b1461068d5780638f32d59b146106be57806395d89b41146106d3578063a0a2daf0146106e8578063a36c9f171461071c578063a457c2d71461075f578063a9059cbb14610798578063dd54993b146107d1578063dd62ed3e14610804578063e2b0afd31461083f578063f2fde38b14610882575b60008035600160e060020a031916815260066020526040902054600160a060020a03168015156101c1576040805160e560020a62461bcd02815260206004820152601860248201527f46756e6374696f6e20646f6573206e6f742065786973742e0000000000000000604482015290519081900360640190fd5b60008035600160e060020a0319168152600b602052604090205460ff16151561028c57336000908152600a60209081526040808320600160e060020a0319843516845290915290205460ff16151560011461028c576040805160e560020a62461bcd02815260206004820152603360248201527f75736572206e6565647320746f2062652077686974656c69737420746f20747260448201527f69676765722065787465726e616c2063616c6c00000000000000000000000000606482015290519081900360840190fd5b60405136600082376000803683855af43d806000843e8180156102ad578184f35b8184fd5b3480156102bd57600080fd5b506102ea600480360360408110156102d457600080fd5b50600160a060020a0381351690602001356108b5565b60408051918252519081900360200190f35b34801561030857600080fd5b506103116109db565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561034b578181015183820152602001610333565b50505050905090810190601f1680156103785780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561039257600080fd5b506103bf600480360360408110156103a957600080fd5b50600160a060020a038135169060200135610a72565b604080519115158252519081900360200190f35b3480156103df57600080fd5b506102ea610a88565b3480156103f457600080fd5b5061042b6004803603604081101561040b57600080fd5b508035600160a060020a03169060200135600160e060020a031916610a8e565b005b34801561043957600080fd5b506103bf6004803603606081101561045057600080fd5b50600160a060020a03813581169160208101359091169060400135610b12565b34801561047c57600080fd5b5061042b6004803603602081101561049357600080fd5b5035600160e060020a031916610b69565b3480156104b057600080fd5b506104b9610bdf565b6040805160ff9092168252519081900360200190f35b3480156104db57600080fd5b506103bf600480360360408110156104f257600080fd5b50600160a060020a038135169060200135610be8565b34801561051457600080fd5b5061042b6004803603602081101561052b57600080fd5b5035610c24565b34801561053e57600080fd5b506103bf6004803603602081101561055557600080fd5b5035600160e060020a031916610c31565b34801561057257600080fd5b5061042b6004803603606081101561058957600080fd5b600160a060020a0382351691908101906040810160208201356401000000008111156105b457600080fd5b8201836020820111156105c657600080fd5b803590602001918460018302840111640100000000831117156105e857600080fd5b91939092909160208101903564010000000081111561060657600080fd5b82018360208201111561061857600080fd5b8035906020019184600183028401116401000000008311171561063a57600080fd5b509092509050610c46565b34801561065157600080fd5b506102ea6004803603602081101561066857600080fd5b5035600160a060020a031661154a565b34801561068457600080fd5b5061042b611565565b34801561069957600080fd5b506106a261160e565b60408051600160a060020a039092168252519081900360200190f35b3480156106ca57600080fd5b506103bf611622565b3480156106df57600080fd5b50610311611638565b3480156106f457600080fd5b506106a26004803603602081101561070b57600080fd5b5035600160e060020a031916611699565b34801561072857600080fd5b5061042b6004803603604081101561073f57600080fd5b508035600160a060020a03169060200135600160e060020a0319166116b4565b34801561076b57600080fd5b506103bf6004803603604081101561078257600080fd5b50600160a060020a03813516906020013561173b565b3480156107a457600080fd5b506103bf600480360360408110156107bb57600080fd5b50600160a060020a038135169060200135611777565b3480156107dd57600080fd5b5061042b600480360360208110156107f457600080fd5b5035600160a060020a0316611784565b34801561081057600080fd5b506102ea6004803603604081101561082757600080fd5b50600160a060020a0381358116916020013516611831565b34801561084b57600080fd5b506103bf6004803603604081101561086257600080fd5b508035600160a060020a03169060200135600160e060020a03191661185c565b34801561088e57600080fd5b5061042b600480360360208110156108a557600080fd5b5035600160a060020a031661187c565b60408051600160a060020a03808516602483015260448083018590528351808403909101815260649092018352602082018051600160e060020a03167efdd58e00000000000000000000000000000000000000000000000000000000178152600c549351835160009586946060949116928692909182918083835b6020831061094f5780518252601f199092019160209182019101610930565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146109af576040519150601f19603f3d011682016040523d82523d6000602084013e6109b4565b606091505b5080519193509150602080830191908110156109cf57600080fd5b50519695505050505050565b60038054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a675780601f10610a3c57610100808354040283529160200191610a67565b820191906000526020600020905b815481529060010190602001808311610a4a57829003601f168201915b505050505090505b90565b6000610a7f3384846118d1565b50600192915050565b60025490565b610a96611622565b1515610ada576040805160e560020a62461bcd0281526020600482018190526024820152600080516020612078833981519152604482015290519081900360640190fd5b600160a060020a039091166000908152600a60209081526040808320600160e060020a0319909416835292905220805460ff19169055565b6000610b1f848484611a3e565b600160a060020a038416600090815260016020908152604080832033808552925290912054610b5f918691610b5a908663ffffffff611c0216565b6118d1565b5060019392505050565b610b71611622565b1515610bb5576040805160e560020a62461bcd0281526020600482018190526024820152600080516020612078833981519152604482015290519081900360640190fd5b600160e060020a0319166000908152600b60205260409020805460ff19811660ff90911615179055565b60055460ff1690565b336000818152600160209081526040808320600160a060020a03871684529091528120549091610a7f918590610b5a908663ffffffff611c6216565b610c2e3382611cc6565b50565b600b6020526000908152604090205460ff1681565b610c4e611622565b1515610c92576040805160e560020a62461bcd0281526020600482018190526024820152600080516020612078833981519152604482015290519081900360640190fd5b6000600160a060020a03861615610d245750843b60008111610d24576040805160e560020a62461bcd02815260206004820152603960248201527f5f64656c65676174652061646472657373206973206e6f74206120636f6e747260448201527f61637420616e64206973206e6f74206164647265737328302900000000000000606482015290519081900360840190fd5b606085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508451602080870198509596508601909401938693509150819050808080805b878a10156114d957895160001a925082602914156114ce576001968a038701808a526020808b01829020600160e060020a031981166000908152600690925260409091205498909b019a8b98909750600160a060020a0390811696509094508f161515611102576008896040518082805190602001908083835b60208310610e105780518252601f199092019160209182019101610df1565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205493505050811515610e97576040805160e560020a62461bcd02815260206004820152601860248201527f46756e6374696f6e20646f6573206e6f742065786973742e0000000000000000604482015290519081900360640190fd5b506007546000199182019101808214610f8a576007805482908110610eb857fe5b90600052602060002001600783815481101515610ed157fe5b906000526020600020019080546001816001161561010002031660029004610efa929190611eda565b50816001016008600783815481101515610f1057fe5b906000526020600020016040518082805460018160011615610100020316600290048015610f755780601f10610f53576101008083540402835291820191610f75565b820191906000526020600020905b815481529060010190602001808311610f61575b50509283525050604051908190036020019020555b6007805490610f9d906000198301611f5f565b506008896040518082805190602001908083835b60208310610fd05780518252601f199092019160209182019101610fb1565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600090556006600087600160e060020a031916600160e060020a031916815260200190815260200160002060006101000a815490600160a060020a0302191690556000600160a060020a031685600160a060020a031687600160e060020a0319167f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f53538c6040518080602001828103825283818151815260200191508051906020019080838360005b838110156110c35781810151838201526020016110ab565b50505050905090810190601f1680156110f05780820380516001836020036101000a031916815260200191505b509250505060405180910390a461149a565b6008896040518082805190602001908083835b602083106111345780518252601f199092019160209182019101611115565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205415159150611340905057600160a060020a038516156111c9576040805160e560020a62461bcd02815260206004820152600d60248201527f46756e63496420636c6173682e00000000000000000000000000000000000000604482015290519081900360640190fd5b8e6006600088600160e060020a031916600160e060020a031916815260200190815260200160002060006101000a815481600160a060020a030219169083600160a060020a031602179055506007899080600181540180825580915050906001820390600052602060002001600090919290919091509080519060200190611252929190611f88565b50506007546040518a516008918c91819060208401908083835b6020831061128b5780518252601f19909201916020918201910161126c565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020819055508e600160a060020a03166000600160a060020a031687600160e060020a0319167f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f53538c604051808060200182810382528381815181526020019150805190602001908083836000838110156110c35781810151838201526020016110ab565b8e600160a060020a03166006600088600160e060020a031916600160e060020a031916815260200190815260200160002060009054906101000a9004600160a060020a0316600160a060020a031614151561149a578e6006600088600160e060020a031916600160e060020a031916815260200190815260200160002060006101000a815481600160a060020a030219169083600160a060020a031602179055508e600160a060020a031685600160a060020a031687600160e060020a0319167f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f53538c6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561145f578181015183820152602001611447565b50505050905090810190601f16801561148c5780820380516001836020036101000a031916815260200191505b509250505060405180910390a45b336000908152600a60209081526040808320600160e060020a03198a1684529091529020805460ff19166001179055978301975b600190990198610d77565b7faa1c0a0a78cec2470f9652e5d29540752e7a64d70f926933cebf13afaeda45de8c8c60405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a1505050505050505050505050505050565b600160a060020a031660009081526020819052604090205490565b61156d611622565b15156115b1576040805160e560020a62461bcd0281526020600482018190526024820152600080516020612078833981519152604482015290519081900360640190fd5b6005546040516000916101009004600160a060020a0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36005805474ffffffffffffffffffffffffffffffffffffffff0019169055565b6005546101009004600160a060020a031690565b6005546101009004600160a060020a0316331490565b60048054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a675780601f10610a3c57610100808354040283529160200191610a67565b600660205260009081526040902054600160a060020a031681565b6116bc611622565b1515611700576040805160e560020a62461bcd0281526020600482018190526024820152600080516020612078833981519152604482015290519081900360640190fd5b600160a060020a039091166000908152600a60209081526040808320600160e060020a0319909416835292905220805460ff19166001179055565b336000818152600160209081526040808320600160a060020a03871684529091528120549091610a7f918590610b5a908663ffffffff611c0216565b6000610a7f338484611a3e565b61178c611622565b15156117d0576040805160e560020a62461bcd0281526020600482018190526024820152600080516020612078833981519152604482015290519081900360640190fd5b600c8054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517fc80ec255189b7b91d3801bdc57e87dfe3b41f3e5f283fca32d5ee295dc68c6239181900360200190a150565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b600a60209081526000928352604080842090915290825290205460ff1681565b611884611622565b15156118c8576040805160e560020a62461bcd0281526020600482018190526024820152600080516020612078833981519152604482015290519081900360640190fd5b610c2e81611de0565b600160a060020a0383161515611956576040805160e560020a62461bcd028152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a03821615156119dc576040805160e560020a62461bcd02815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600160a060020a0383161515611ac4576040805160e560020a62461bcd02815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0382161515611b4a576040805160e560020a62461bcd02815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a038316600090815260208190526040902054611b73908263ffffffff611c0216565b600160a060020a038085166000908152602081905260408082209390935590841681522054611ba8908263ffffffff611c6216565b600160a060020a038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600082821115611c5c576040805160e560020a62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015611cbf576040805160e560020a62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600160a060020a0382161515611d4c576040805160e560020a62461bcd02815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600254611d5f908263ffffffff611c0216565b600255600160a060020a038216600090815260208190526040902054611d8b908263ffffffff611c0216565b600160a060020a038316600081815260208181526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b600160a060020a0381161515611e66576040805160e560020a62461bcd02815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600554604051600160a060020a0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360058054600160a060020a039092166101000274ffffffffffffffffffffffffffffffffffffffff0019909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611f135780548555611f4f565b82800160010185558215611f4f57600052602060002091601f016020900482015b82811115611f4f578254825591600101919060010190611f34565b50611f5b929150611ff6565b5090565b815481835581811115611f8357600083815260209020611f83918101908301612010565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611fc957805160ff1916838001178555611f4f565b82800160010185558215611f4f579182015b82811115611f4f578251825591602001919060010190611fdb565b610a6f91905b80821115611f5b5760008155600101611ffc565b610a6f91905b80821115611f5b57600061202a8282612033565b50600101612016565b50805460018160011615610100020316600290046000825580601f106120595750610c2e565b601f016020900490600052602060002090810190610c2e9190611ff656fe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a165627a7a7230582028b8fc82feb2e9e69149cbfb325fd08956f995be40e29c985a7cce5ea75d34b10029
Deployed Bytecode
0x6080604052600436106101475763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041662fdd58e81146102b157806306fdde03146102fc578063095ea7b31461038657806318160ddd146103d35780631d6800ed146103e857806323b872dd1461042d5780632d46990b14610470578063313ce567146104a457806339509351146104cf57806342966c68146105085780635b2addb614610532578063614555671461056657806370a0823114610645578063715018a6146106785780638da5cb5b1461068d5780638f32d59b146106be57806395d89b41146106d3578063a0a2daf0146106e8578063a36c9f171461071c578063a457c2d71461075f578063a9059cbb14610798578063dd54993b146107d1578063dd62ed3e14610804578063e2b0afd31461083f578063f2fde38b14610882575b60008035600160e060020a031916815260066020526040902054600160a060020a03168015156101c1576040805160e560020a62461bcd02815260206004820152601860248201527f46756e6374696f6e20646f6573206e6f742065786973742e0000000000000000604482015290519081900360640190fd5b60008035600160e060020a0319168152600b602052604090205460ff16151561028c57336000908152600a60209081526040808320600160e060020a0319843516845290915290205460ff16151560011461028c576040805160e560020a62461bcd02815260206004820152603360248201527f75736572206e6565647320746f2062652077686974656c69737420746f20747260448201527f69676765722065787465726e616c2063616c6c00000000000000000000000000606482015290519081900360840190fd5b60405136600082376000803683855af43d806000843e8180156102ad578184f35b8184fd5b3480156102bd57600080fd5b506102ea600480360360408110156102d457600080fd5b50600160a060020a0381351690602001356108b5565b60408051918252519081900360200190f35b34801561030857600080fd5b506103116109db565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561034b578181015183820152602001610333565b50505050905090810190601f1680156103785780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561039257600080fd5b506103bf600480360360408110156103a957600080fd5b50600160a060020a038135169060200135610a72565b604080519115158252519081900360200190f35b3480156103df57600080fd5b506102ea610a88565b3480156103f457600080fd5b5061042b6004803603604081101561040b57600080fd5b508035600160a060020a03169060200135600160e060020a031916610a8e565b005b34801561043957600080fd5b506103bf6004803603606081101561045057600080fd5b50600160a060020a03813581169160208101359091169060400135610b12565b34801561047c57600080fd5b5061042b6004803603602081101561049357600080fd5b5035600160e060020a031916610b69565b3480156104b057600080fd5b506104b9610bdf565b6040805160ff9092168252519081900360200190f35b3480156104db57600080fd5b506103bf600480360360408110156104f257600080fd5b50600160a060020a038135169060200135610be8565b34801561051457600080fd5b5061042b6004803603602081101561052b57600080fd5b5035610c24565b34801561053e57600080fd5b506103bf6004803603602081101561055557600080fd5b5035600160e060020a031916610c31565b34801561057257600080fd5b5061042b6004803603606081101561058957600080fd5b600160a060020a0382351691908101906040810160208201356401000000008111156105b457600080fd5b8201836020820111156105c657600080fd5b803590602001918460018302840111640100000000831117156105e857600080fd5b91939092909160208101903564010000000081111561060657600080fd5b82018360208201111561061857600080fd5b8035906020019184600183028401116401000000008311171561063a57600080fd5b509092509050610c46565b34801561065157600080fd5b506102ea6004803603602081101561066857600080fd5b5035600160a060020a031661154a565b34801561068457600080fd5b5061042b611565565b34801561069957600080fd5b506106a261160e565b60408051600160a060020a039092168252519081900360200190f35b3480156106ca57600080fd5b506103bf611622565b3480156106df57600080fd5b50610311611638565b3480156106f457600080fd5b506106a26004803603602081101561070b57600080fd5b5035600160e060020a031916611699565b34801561072857600080fd5b5061042b6004803603604081101561073f57600080fd5b508035600160a060020a03169060200135600160e060020a0319166116b4565b34801561076b57600080fd5b506103bf6004803603604081101561078257600080fd5b50600160a060020a03813516906020013561173b565b3480156107a457600080fd5b506103bf600480360360408110156107bb57600080fd5b50600160a060020a038135169060200135611777565b3480156107dd57600080fd5b5061042b600480360360208110156107f457600080fd5b5035600160a060020a0316611784565b34801561081057600080fd5b506102ea6004803603604081101561082757600080fd5b50600160a060020a0381358116916020013516611831565b34801561084b57600080fd5b506103bf6004803603604081101561086257600080fd5b508035600160a060020a03169060200135600160e060020a03191661185c565b34801561088e57600080fd5b5061042b600480360360208110156108a557600080fd5b5035600160a060020a031661187c565b60408051600160a060020a03808516602483015260448083018590528351808403909101815260649092018352602082018051600160e060020a03167efdd58e00000000000000000000000000000000000000000000000000000000178152600c549351835160009586946060949116928692909182918083835b6020831061094f5780518252601f199092019160209182019101610930565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146109af576040519150601f19603f3d011682016040523d82523d6000602084013e6109b4565b606091505b5080519193509150602080830191908110156109cf57600080fd5b50519695505050505050565b60038054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a675780601f10610a3c57610100808354040283529160200191610a67565b820191906000526020600020905b815481529060010190602001808311610a4a57829003601f168201915b505050505090505b90565b6000610a7f3384846118d1565b50600192915050565b60025490565b610a96611622565b1515610ada576040805160e560020a62461bcd0281526020600482018190526024820152600080516020612078833981519152604482015290519081900360640190fd5b600160a060020a039091166000908152600a60209081526040808320600160e060020a0319909416835292905220805460ff19169055565b6000610b1f848484611a3e565b600160a060020a038416600090815260016020908152604080832033808552925290912054610b5f918691610b5a908663ffffffff611c0216565b6118d1565b5060019392505050565b610b71611622565b1515610bb5576040805160e560020a62461bcd0281526020600482018190526024820152600080516020612078833981519152604482015290519081900360640190fd5b600160e060020a0319166000908152600b60205260409020805460ff19811660ff90911615179055565b60055460ff1690565b336000818152600160209081526040808320600160a060020a03871684529091528120549091610a7f918590610b5a908663ffffffff611c6216565b610c2e3382611cc6565b50565b600b6020526000908152604090205460ff1681565b610c4e611622565b1515610c92576040805160e560020a62461bcd0281526020600482018190526024820152600080516020612078833981519152604482015290519081900360640190fd5b6000600160a060020a03861615610d245750843b60008111610d24576040805160e560020a62461bcd02815260206004820152603960248201527f5f64656c65676174652061646472657373206973206e6f74206120636f6e747260448201527f61637420616e64206973206e6f74206164647265737328302900000000000000606482015290519081900360840190fd5b606085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508451602080870198509596508601909401938693509150819050808080805b878a10156114d957895160001a925082602914156114ce576001968a038701808a526020808b01829020600160e060020a031981166000908152600690925260409091205498909b019a8b98909750600160a060020a0390811696509094508f161515611102576008896040518082805190602001908083835b60208310610e105780518252601f199092019160209182019101610df1565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205493505050811515610e97576040805160e560020a62461bcd02815260206004820152601860248201527f46756e6374696f6e20646f6573206e6f742065786973742e0000000000000000604482015290519081900360640190fd5b506007546000199182019101808214610f8a576007805482908110610eb857fe5b90600052602060002001600783815481101515610ed157fe5b906000526020600020019080546001816001161561010002031660029004610efa929190611eda565b50816001016008600783815481101515610f1057fe5b906000526020600020016040518082805460018160011615610100020316600290048015610f755780601f10610f53576101008083540402835291820191610f75565b820191906000526020600020905b815481529060010190602001808311610f61575b50509283525050604051908190036020019020555b6007805490610f9d906000198301611f5f565b506008896040518082805190602001908083835b60208310610fd05780518252601f199092019160209182019101610fb1565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020600090556006600087600160e060020a031916600160e060020a031916815260200190815260200160002060006101000a815490600160a060020a0302191690556000600160a060020a031685600160a060020a031687600160e060020a0319167f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f53538c6040518080602001828103825283818151815260200191508051906020019080838360005b838110156110c35781810151838201526020016110ab565b50505050905090810190601f1680156110f05780820380516001836020036101000a031916815260200191505b509250505060405180910390a461149a565b6008896040518082805190602001908083835b602083106111345780518252601f199092019160209182019101611115565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205415159150611340905057600160a060020a038516156111c9576040805160e560020a62461bcd02815260206004820152600d60248201527f46756e63496420636c6173682e00000000000000000000000000000000000000604482015290519081900360640190fd5b8e6006600088600160e060020a031916600160e060020a031916815260200190815260200160002060006101000a815481600160a060020a030219169083600160a060020a031602179055506007899080600181540180825580915050906001820390600052602060002001600090919290919091509080519060200190611252929190611f88565b50506007546040518a516008918c91819060208401908083835b6020831061128b5780518252601f19909201916020918201910161126c565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020819055508e600160a060020a03166000600160a060020a031687600160e060020a0319167f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f53538c604051808060200182810382528381815181526020019150805190602001908083836000838110156110c35781810151838201526020016110ab565b8e600160a060020a03166006600088600160e060020a031916600160e060020a031916815260200190815260200160002060009054906101000a9004600160a060020a0316600160a060020a031614151561149a578e6006600088600160e060020a031916600160e060020a031916815260200190815260200160002060006101000a815481600160a060020a030219169083600160a060020a031602179055508e600160a060020a031685600160a060020a031687600160e060020a0319167f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f53538c6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561145f578181015183820152602001611447565b50505050905090810190601f16801561148c5780820380516001836020036101000a031916815260200191505b509250505060405180910390a45b336000908152600a60209081526040808320600160e060020a03198a1684529091529020805460ff19166001179055978301975b600190990198610d77565b7faa1c0a0a78cec2470f9652e5d29540752e7a64d70f926933cebf13afaeda45de8c8c60405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a1505050505050505050505050505050565b600160a060020a031660009081526020819052604090205490565b61156d611622565b15156115b1576040805160e560020a62461bcd0281526020600482018190526024820152600080516020612078833981519152604482015290519081900360640190fd5b6005546040516000916101009004600160a060020a0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36005805474ffffffffffffffffffffffffffffffffffffffff0019169055565b6005546101009004600160a060020a031690565b6005546101009004600160a060020a0316331490565b60048054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a675780601f10610a3c57610100808354040283529160200191610a67565b600660205260009081526040902054600160a060020a031681565b6116bc611622565b1515611700576040805160e560020a62461bcd0281526020600482018190526024820152600080516020612078833981519152604482015290519081900360640190fd5b600160a060020a039091166000908152600a60209081526040808320600160e060020a0319909416835292905220805460ff19166001179055565b336000818152600160209081526040808320600160a060020a03871684529091528120549091610a7f918590610b5a908663ffffffff611c0216565b6000610a7f338484611a3e565b61178c611622565b15156117d0576040805160e560020a62461bcd0281526020600482018190526024820152600080516020612078833981519152604482015290519081900360640190fd5b600c8054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517fc80ec255189b7b91d3801bdc57e87dfe3b41f3e5f283fca32d5ee295dc68c6239181900360200190a150565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b600a60209081526000928352604080842090915290825290205460ff1681565b611884611622565b15156118c8576040805160e560020a62461bcd0281526020600482018190526024820152600080516020612078833981519152604482015290519081900360640190fd5b610c2e81611de0565b600160a060020a0383161515611956576040805160e560020a62461bcd028152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a03821615156119dc576040805160e560020a62461bcd02815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600160a060020a0383161515611ac4576040805160e560020a62461bcd02815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0382161515611b4a576040805160e560020a62461bcd02815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a038316600090815260208190526040902054611b73908263ffffffff611c0216565b600160a060020a038085166000908152602081905260408082209390935590841681522054611ba8908263ffffffff611c6216565b600160a060020a038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600082821115611c5c576040805160e560020a62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015611cbf576040805160e560020a62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600160a060020a0382161515611d4c576040805160e560020a62461bcd02815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600254611d5f908263ffffffff611c0216565b600255600160a060020a038216600090815260208190526040902054611d8b908263ffffffff611c0216565b600160a060020a038316600081815260208181526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b600160a060020a0381161515611e66576040805160e560020a62461bcd02815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600554604051600160a060020a0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360058054600160a060020a039092166101000274ffffffffffffffffffffffffffffffffffffffff0019909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611f135780548555611f4f565b82800160010185558215611f4f57600052602060002091601f016020900482015b82811115611f4f578254825591600101919060010190611f34565b50611f5b929150611ff6565b5090565b815481835581811115611f8357600083815260209020611f83918101908301612010565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611fc957805160ff1916838001178555611f4f565b82800160010185558215611f4f579182015b82811115611f4f578251825591602001919060010190611fdb565b610a6f91905b80821115611f5b5760008155600101611ffc565b610a6f91905b80821115611f5b57600061202a8282612033565b50600101612016565b50805460018160011615610100020316600290046000825580601f106120595750610c2e565b601f016020900490600052602060002090810190610c2e9190611ff656fe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a165627a7a7230582028b8fc82feb2e9e69149cbfb325fd08956f995be40e29c985a7cce5ea75d34b10029
Deployed Bytecode Sourcemap
22162:7722:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23697:16;23726:7;;-1:-1:-1;;;;;;23726:7:0;23716:18;;:9;:18;;;;;;-1:-1:-1;;;;;23716:18:0;23755:22;;;23747:59;;;;;-1:-1:-1;;;;;23747:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;23823:23;23838:7;;-1:-1:-1;;;;;;23838:7:0;23823:23;;:14;:23;;;;;;;;:32;;23819:224;;23916:10;23898:29;;;;:17;:29;;;;;;;;-1:-1:-1;;;;;;23928:7:0;;;23898:38;;;;;;;;;;:46;;:38;:46;23872:159;;;;;-1:-1:-1;;;;;23872:159:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24096:4;24090:11;24136:12;24133:1;24128:3;24115:34;24227:1;24224;24210:12;24205:3;24195:8;24190:3;24177:52;24255:14;24306:4;24303:1;24298:3;24283:28;24332:6;24356:66;;;;24483:4;24478:3;24471:17;24356:66;24398:4;24393:3;24386:17;23340:312;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23340:312:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;23340:312:0;;;;;;;;;;;;;;;;;;;;;;;;;21138:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21138:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;21138:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14916:148;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14916:148:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14916:148:0;;;;;;;;;;;;;;;;;;;;;;;;;;;13939:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13939:91:0;;;;22954:133;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22954:133:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22954:133:0;;-1:-1:-1;;;;;22954:133:0;;;;;-1:-1:-1;;;;;;22954:133:0;;;;;15535:256;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15535:256:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;15535:256:0;;;;;;;;;;;;;;;;;;23095:146;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23095:146:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23095:146:0;-1:-1:-1;;;;;;23095:146:0;;;21996:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21996:83:0;;;;;;;;;;;;;;;;;;;;;;;16200:206;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16200:206:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;16200:206:0;;;;;;;;;23249:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23249:83:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23249:83:0;;;22353:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22353:45:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22353:45:0;-1:-1:-1;;;;;;22353:45:0;;;25313:4568;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25313:4568:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;25313:4568:0;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;25313:4568:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;25313:4568:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;25313:4568:0;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;25313:4568:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;25313:4568:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;25313:4568:0;;-1:-1:-1;25313:4568:0;-1:-1:-1;25313:4568:0;;14093:110;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14093:110:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14093:110:0;-1:-1:-1;;;;;14093:110:0;;;1710:140;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1710:140:0;;;;899:79;;8:9:-1;5:2;;;30:1;27;20:12;5:2;899:79:0;;;;;;;;-1:-1:-1;;;;;899:79:0;;;;;;;;;;;;;;1265:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1265:92:0;;;;21340:87;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21340:87:0;;;;5266:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5266:43:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5266:43:0;-1:-1:-1;;;;;;5266:43:0;;;22818:130;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22818:130:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22818:130:0;;-1:-1:-1;;;;;22818:130:0;;;;;-1:-1:-1;;;;;;22818:130:0;;;16909:216;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16909:216:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;16909:216:0;;;;;;;;;14416:156;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14416:156:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14416:156:0;;;;;;;;;22665:147;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22665:147:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22665:147:0;-1:-1:-1;;;;;22665:147:0;;;14635:134;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14635:134:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14635:134:0;;;;;;;;;;;22276:68;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22276:68:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22276:68:0;;-1:-1:-1;;;;;22276:68:0;;;;;-1:-1:-1;;;;;;22276:68:0;;;2005:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2005:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2005:109:0;-1:-1:-1;;;;;2005:109:0;;;23340:312;23446:46;;;-1:-1:-1;;;;;23446:46:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;23446:46:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;23446:46:0;179:29:-1;160:49;;23560:17:0;;:39;;;;23403:7;;;;23423:20;;23560:17;;;23446:46;;23560:39;;;;;;25:18:-1;36:153;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;23560:39:0;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;23617:27:0;;23548:51;;-1:-1:-1;23548:51:0;-1:-1:-1;23617:27:0;;;;;;5:11:-1;;2:2;;;29:1;26;19:12;2:2;-1:-1;23617:27:0;;23340:312;-1:-1:-1;;;;;;23340:312:0:o;21138:83::-;21208:5;21201:12;;;;;;;;-1:-1:-1;;21201:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21175:13;;21201:12;;21208:5;;21201:12;;21208:5;21201:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21138:83;;:::o;14916:148::-;14981:4;14998:36;15007:10;15019:7;15028:5;14998:8;:36::i;:::-;-1:-1:-1;15052:4:0;14916:148;;;;:::o;13939:91::-;14010:12;;13939:91;:::o;22954:133::-;1111:9;:7;:9::i;:::-;1103:54;;;;;;;-1:-1:-1;;;;;1103:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1103:54:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;23040:20:0;;;23074:5;23040:20;;;:17;:20;;;;;;;;-1:-1:-1;;;;;;23040:31:0;;;;;;;;;:39;;-1:-1:-1;;23040:39:0;;;22954:133::o;15535:256::-;15624:4;15641:36;15651:6;15659:9;15670:6;15641:9;:36::i;:::-;-1:-1:-1;;;;;15717:19:0;;;;;;:11;:19;;;;;;;;15705:10;15717:31;;;;;;;;;15688:73;;15697:6;;15717:43;;15753:6;15717:43;:35;:43;:::i;:::-;15688:8;:73::i;:::-;-1:-1:-1;15779:4:0;15535:256;;;;;:::o;23095:146::-;1111:9;:7;:9::i;:::-;1103:54;;;;;;;-1:-1:-1;;;;;1103:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1103:54:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23208:25:0;;;;;:14;:25;;;;;;;-1:-1:-1;;23179:54:0;;23208:25;;;;23207:26;23179:54;;;23095:146::o;21996:83::-;22062:9;;;;21996:83;:::o;16200:206::-;16306:10;16280:4;16327:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;16327:32:0;;;;;;;;;;16280:4;;16297:79;;16318:7;;16327:48;;16364:10;16327:48;:36;:48;:::i;23249:83::-;23298:26;23304:10;23316:7;23298:5;:26::i;:::-;23249:83;:::o;22353:45::-;;;;;;;;;;;;;;;:::o;25313:4568::-;1111:9;:7;:9::i;:::-;1103:54;;;;;;;-1:-1:-1;;;;;1103:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1103:54:0;;;;;;;;;;;;;;;25851:11;-1:-1:-1;;;;;25879:23:0;;;25875:268;;-1:-1:-1;25954:22:0;;26037:1;26031:7;;26005:126;;;;;-1:-1:-1;;;;;26005:126:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26214:23;26246:19;;26214:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;-1:-1;26617:17:0;;26548:2;26532:19;;;;-1:-1:-1;26214:52:0;;-1:-1:-1;26608:27:0;;;;;;26532:19;;-1:-1:-1;99:1;-1:-1;99:1;;-1:-1;99:1;;;;27331:2498:0;27344:13;27338:3;:19;27331:2498;;;27431:3;27425:10;27422:1;27417:19;27409:27;;27495:4;27503;27495:12;27491:2327;;;27528:5;27559:11;;;;;27652:23;;;27728:21;;;;;;;-1:-1:-1;;;;;;27783:17:0;;;;;;:9;:17;;;;;;;;27528:5;;;;;;;27728:21;;-1:-1:-1;;;;;;27783:17:0;;;;-1:-1:-1;27559:11:0;;-1:-1:-1;27823:23:0;;;27819:1812;;;27879:20;27900:10;27879:32;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;27879:32:0;;;;;-1:-1:-1;27879:32:0;;;;;;;;;;;;-1:-1:-1;;;27942:10:0;;;27934:47;;;;;-1:-1:-1;;;;;27934:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28046:14:0;:21;-1:-1:-1;;28004:7:0;;;;28046:25;28098:18;;;28094:268;;28169:14;:25;;28184:9;;28169:25;;;;;;;;;;;;;28145:14;28160:5;28145:21;;;;;;;;;;;;;;;;;:49;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28300:5;28337:1;28300:38;28221:20;28242:14;28257:9;28242:25;;;;;;;;;;;;;;;;;28221:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;28221:47:0;;;-1:-1:-1;;28221:47:0;;;;;;;;;;:117;28094:268;28384:14;:23;;;;;-1:-1:-1;;28384:23:0;;;:::i;:::-;;28437:20;28458:10;28437:32;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;28437:32:0;;;;;;;;;;;;;;;;;;;;;28430:39;;;28499:9;:17;28509:6;-1:-1:-1;;;;;28499:17:0;;-1:-1:-1;;;;;28499:17:0;;;;;;;;;;;;;;28492:24;;;;;-1:-1:-1;;;;;28492:24:0;;;;;28664:1;-1:-1:-1;;;;;28544:190:0;28618:11;-1:-1:-1;;;;;28544:190:0;28585:6;-1:-1:-1;;;;;28544:190:0;;;28700:10;28544:190;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;28544:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27819:1812;;;28764:20;28785:10;28764:32;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;28764:32:0;;;;;-1:-1:-1;28764:32:0;;;;;;;;;;;:37;28760:871;;-1:-1:-1;28760:871:0;;-1:-1:-1;28760:871:0;-1:-1:-1;;;;;28834:25:0;;;28826:51;;;;;-1:-1:-1;;;;;28826:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;28920:9;28900;:17;28910:6;-1:-1:-1;;;;;28900:17:0;;-1:-1:-1;;;;;28900:17:0;;;;;;;;;;;;;;:29;;;;;-1:-1:-1;;;;;28900:29:0;;;;;-1:-1:-1;;;;;28900:29:0;;;;;;28952:14;28972:10;28952:31;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;28952:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;29041:14:0;:21;29006:32;;;;:20;;29027:10;;29006:32;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;29006:32:0;;;;;;;;;;;;;;;;;;;;;:56;;;;29201:9;-1:-1:-1;;;;;29090:188:0;29172:1;-1:-1:-1;;;;;29090:188:0;29131:6;-1:-1:-1;;;;;29090:188:0;;;29244:10;29090:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;28760:871:0;29329:9;-1:-1:-1;;;;;29308:30:0;:9;:17;29318:6;-1:-1:-1;;;;;29308:17:0;;-1:-1:-1;;;;;29308:17:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;29308:17:0;-1:-1:-1;;;;;29308:30:0;;;29304:327;;;29383:9;29363;:17;29373:6;-1:-1:-1;;;;;29363:17:0;;-1:-1:-1;;;;;29363:17:0;;;;;;;;;;;;;;:29;;;;;-1:-1:-1;;;;;29363:29:0;;;;;-1:-1:-1;;;;;29363:29:0;;;;;;29532:9;-1:-1:-1;;;;;29420:189:0;29494:11;-1:-1:-1;;;;;29420:189:0;29461:6;-1:-1:-1;;;;;29420:189:0;;;29575:10;29420:189;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;29420:189:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29304:327;29669:10;29651:29;;;;:17;:29;;;;;;;;-1:-1:-1;;;;;;29651:37:0;;;;;;;;;:44;;-1:-1:-1;;29651:44:0;29691:4;29651:44;;;29762:20;;;;29725:76;27359:5;;;;;27331:2498;;;29844:29;29858:14;;29844:29;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;29844:29:0;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;29844:29:0;;;;-1:-1:-1;29844:29:0;;-1:-1:-1;;;;29844:29:0;1168:1;;;;;;;;;;25313:4568;;;;;:::o;14093:110::-;-1:-1:-1;;;;;14177:18:0;14150:7;14177:18;;;;;;;;;;;;14093:110::o;1710:140::-;1111:9;:7;:9::i;:::-;1103:54;;;;;;;-1:-1:-1;;;;;1103:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1103:54:0;;;;;;;;;;;;;;;1793:6;;1772:40;;1809:1;;1793:6;;;-1:-1:-1;;;;;1793:6:0;;1772:40;;1809:1;;1772:40;1823:6;:19;;-1:-1:-1;;1823:19:0;;;1710:140::o;899:79::-;964:6;;;;;-1:-1:-1;;;;;964:6:0;;899:79::o;1265:92::-;1343:6;;;;;-1:-1:-1;;;;;1343:6:0;1329:10;:20;;1265:92::o;21340:87::-;21412:7;21405:14;;;;;;;;-1:-1:-1;;21405:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21379:13;;21405:14;;21412:7;;21405:14;;21412:7;21405:14;;;;;;;;;;;;;;;;;;;;;;;;5266:43;;;;;;;;;;;;-1:-1:-1;;;;;5266:43:0;;:::o;22818:130::-;1111:9;:7;:9::i;:::-;1103:54;;;;;;;-1:-1:-1;;;;;1103:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1103:54:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;22902:20:0;;;;;;;:17;:20;;;;;;;;-1:-1:-1;;;;;;22902:31:0;;;;;;;;;:38;;-1:-1:-1;;22902:38:0;22936:4;22902:38;;;22818:130::o;16909:216::-;17020:10;16994:4;17041:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;17041:32:0;;;;;;;;;;16994:4;;17011:84;;17032:7;;17041:53;;17078:15;17041:53;:36;:53;:::i;14416:156::-;14485:4;14502:40;14512:10;14524:9;14535:6;14502:9;:40::i;22665:147::-;1111:9;:7;:9::i;:::-;1103:54;;;;;;;-1:-1:-1;;;;;1103:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1103:54:0;;;;;;;;;;;;;;;22738:17;:22;;-1:-1:-1;;;;;22738:22:0;;-1:-1:-1;;22738:22:0;;;;;;;;22776:28;;;;;;;;;;;;;;;;22665:147;:::o;14635:134::-;-1:-1:-1;;;;;14734:18:0;;;14707:7;14734:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;14635:134::o;22276:68::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2005:109::-;1111:9;:7;:9::i;:::-;1103:54;;;;;;;-1:-1:-1;;;;;1103:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1103:54:0;;;;;;;;;;;;;;;2078:28;2097:8;2078:18;:28::i;19711:335::-;-1:-1:-1;;;;;19804:19:0;;;;19796:68;;;;;-1:-1:-1;;;;;19796:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19883:21:0;;;;19875:68;;;;;-1:-1:-1;;;;;19875:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19956:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:35;;;20007:31;;;;;;;;;;;;;;;;;19711:335;;;:::o;17615:429::-;-1:-1:-1;;;;;17713:20:0;;;;17705:70;;;;;-1:-1:-1;;;;;17705:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17794:23:0;;;;17786:71;;;;;-1:-1:-1;;;;;17786:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17890:17:0;;:9;:17;;;;;;;;;;;:29;;17912:6;17890:29;:21;:29;:::i;:::-;-1:-1:-1;;;;;17870:17:0;;;:9;:17;;;;;;;;;;;:49;;;;17953:20;;;;;;;:32;;17978:6;17953:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;17930:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;18001:35;;;;;;;17930:20;;18001:35;;;;;;;;;;;;;17615:429;;;:::o;10061:184::-;10119:7;10147:6;;;;10139:49;;;;;-1:-1:-1;;;;;10139:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10211:5:0;;;10061:184::o;9605:181::-;9663:7;9695:5;;;9719:6;;;;9711:46;;;;;-1:-1:-1;;;;;9711:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9777:1;9605:181;-1:-1:-1;;;9605:181:0:o;18965:306::-;-1:-1:-1;;;;;19040:21:0;;;;19032:67;;;;;-1:-1:-1;;;;;19032:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19127:12;;:23;;19144:5;19127:23;:16;:23;:::i;:::-;19112:12;:38;-1:-1:-1;;;;;19182:18:0;;:9;:18;;;;;;;;;;;:29;;19205:5;19182:29;:22;:29;:::i;:::-;-1:-1:-1;;;;;19161:18:0;;:9;:18;;;;;;;;;;;:50;;;;19227:36;;;;;;;19161:9;;19227:36;;;;;;;;;;;18965:306;;:::o;2220:229::-;-1:-1:-1;;;;;2294:22:0;;;;2286:73;;;;;-1:-1:-1;;;;;2286:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2396:6;;2375:38;;-1:-1:-1;;;;;2375:38:0;;;;2396:6;;;;;2375:38;;;;;2424:6;:17;;-1:-1:-1;;;;;2424:17:0;;;;;-1:-1:-1;;2424:17:0;;;;;;;;;2220:229::o;22162:7722::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22162:7722:0;;;-1:-1:-1;22162:7722:0;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i
Swarm Source
bzzr://28b8fc82feb2e9e69149cbfb325fd08956f995be40e29c985a7cce5ea75d34b1
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.