Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Multi Chain
Multichain Addresses
2 addresses found via BlockscanLatest 25 from a total of 56 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 16164851 | 105 days 11 hrs ago | IN | 0 ETH | 0.00061717 | ||||
Transfer | 15317914 | 228 days 9 hrs ago | IN | 0 ETH | 0.00278869 | ||||
Transfer | 15172318 | 251 days 1 hr ago | IN | 0 ETH | 0.00035132 | ||||
Transfer | 15170674 | 251 days 7 hrs ago | IN | 0 ETH | 0.0009666 | ||||
Transfer | 14953675 | 287 days 8 hrs ago | IN | 0 ETH | 0.00328288 | ||||
Transfer | 14930938 | 291 days 5 hrs ago | IN | 0 ETH | 0.00277313 | ||||
Finish Minting | 14760140 | 319 days 2 hrs ago | IN | 0 ETH | 0.00816633 | ||||
Transfer | 14677183 | 332 days 6 hrs ago | IN | 0 ETH | 0.00182428 | ||||
Transfer | 14670735 | 333 days 7 hrs ago | IN | 0 ETH | 0.00268156 | ||||
Transfer | 14651945 | 336 days 6 hrs ago | IN | 0 ETH | 0.00097994 | ||||
Transfer | 14647617 | 336 days 22 hrs ago | IN | 0 ETH | 0.0012657 | ||||
Transfer | 14549550 | 352 days 6 hrs ago | IN | 0 ETH | 0.00160616 | ||||
Transfer | 14441204 | 369 days 4 hrs ago | IN | 0 ETH | 0.00067418 | ||||
Transfer | 14396435 | 376 days 3 hrs ago | IN | 0 ETH | 0.00092421 | ||||
Transfer | 14396411 | 376 days 3 hrs ago | IN | 0 ETH | 0.00115757 | ||||
Transfer | 14319171 | 388 days 3 hrs ago | IN | 0 ETH | 0.00068638 | ||||
Transfer | 14319142 | 388 days 3 hrs ago | IN | 0 ETH | 0.00122908 | ||||
Transfer | 14306275 | 390 days 3 hrs ago | IN | 0 ETH | 0.00143668 | ||||
Transfer | 14306275 | 390 days 3 hrs ago | IN | 0 ETH | 0.00143724 | ||||
Transfer | 14306260 | 390 days 3 hrs ago | IN | 0 ETH | 0.00267661 | ||||
Transfer | 14306250 | 390 days 3 hrs ago | IN | 0 ETH | 0.00274956 | ||||
Transfer | 14227790 | 402 days 7 hrs ago | IN | 0 ETH | 0.00186227 | ||||
Transfer | 14222537 | 403 days 3 hrs ago | IN | 0 ETH | 0.00160195 | ||||
Transfer | 14222512 | 403 days 3 hrs ago | IN | 0 ETH | 0.00297668 | ||||
Transfer | 14190614 | 408 days 1 hr ago | IN | 0 ETH | 0.00122063 |
Loading...
Loading
Contract Name:
CaelumToken
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-01-11 */ /** *Submitted for verification at Etherscan.io on 2022-01-11 */ /** *Submitted for verification at BscScan.com on 2021-01-11 */ // SPDX-License-Identifier: Unlicensed // Created by Mezorn LLC pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ 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. * * IMPORTANT: 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/token/ERC20/extensions/IERC20Metadata.sol pragma solidity ^0.8.0; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } // File: @openzeppelin/contracts/utils/Context.sol pragma solidity ^0.8.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // File: @openzeppelin/contracts/token/ERC20/ERC20.sol pragma solidity ^0.8.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 {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * 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 Context, IERC20, IERC20Metadata { mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The defaut value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor (string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override 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. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: 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 virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override 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 virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); 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 `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ 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"); _approve(sender, _msgSender(), currentAllowance - 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 virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + 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 virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); _approve(_msgSender(), spender, currentAllowance - 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 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"); _balances[sender] = senderBalance - amount; _balances[recipient] += 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 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); } /** * @dev Destroys `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 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"); _balances[account] = accountBalance - amount; _totalSupply -= amount; emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This 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 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); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { } } // File: @openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol pragma solidity ^0.8.0; /** * @dev Extension of {ERC20} that allows token holders to destroy both their own * tokens and those that they have an allowance for, in a way that can be * recognized off-chain (via event analysis). */ abstract contract ERC20Burnable is Context, ERC20 { /** * @dev Destroys `amount` tokens from the caller. * * See {ERC20-_burn}. */ function burn(uint256 amount) public virtual { _burn(_msgSender(), amount); } /** * @dev Destroys `amount` tokens from `account`, deducting from the caller's * allowance. * * See {ERC20-_burn} and {ERC20-allowance}. * * Requirements: * * - the caller must have allowance for ``accounts``'s tokens of at least * `amount`. */ function burnFrom(address account, uint256 amount) public virtual { uint256 currentAllowance = allowance(account, _msgSender()); require(currentAllowance >= amount, "ERC20: burn amount exceeds allowance"); _approve(account, _msgSender(), currentAllowance - amount); _burn(account, amount); } } // File: @openzeppelin/contracts/utils/Address.sol pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance!"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts/utils/introspection/IERC165.sol pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/contracts/utils/introspection/ERC165.sol pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File: erc-payable-token/contracts/token/ERC1363/IERC1363.sol pragma solidity ^0.8.0; /** * @title IERC1363 Interface * @dev Interface for a Payable Token contract as defined in * https://eips.ethereum.org/EIPS/eip-1363 */ interface IERC1363 is IERC20, IERC165 { /** * @notice Transfer tokens from `msg.sender` to another address and then call `onTransferReceived` on receiver * @param recipient address The address which you want to transfer to * @param amount uint256 The amount of tokens to be transferred * @return true unless throwing */ function transferAndCall(address recipient, uint256 amount) external returns (bool); /** * @notice Transfer tokens from `msg.sender` to another address and then call `onTransferReceived` on receiver * @param recipient address The address which you want to transfer to * @param amount uint256 The amount of tokens to be transferred * @param data bytes Additional data with no specified format, sent in call to `recipient` * @return true unless throwing */ function transferAndCall( address recipient, uint256 amount, bytes calldata data ) external returns (bool); /** * @notice Transfer tokens from one address to another and then call `onTransferReceived` on receiver * @param sender address The address which you want to send tokens from * @param recipient address The address which you want to transfer to * @param amount uint256 The amount of tokens to be transferred * @return true unless throwing */ function transferFromAndCall( address sender, address recipient, uint256 amount ) external returns (bool); /** * @notice Transfer tokens from one address to another and then call `onTransferReceived` on receiver * @param sender address The address which you want to send tokens from * @param recipient address The address which you want to transfer to * @param amount uint256 The amount of tokens to be transferred * @param data bytes Additional data with no specified format, sent in call to `recipient` * @return true unless throwing */ function transferFromAndCall( address sender, address recipient, uint256 amount, bytes calldata data ) external returns (bool); /** * @notice Approve the passed address to spend the specified amount of tokens on behalf of msg.sender * and then call `onApprovalReceived` on spender. * 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 * @param spender address The address which will spend the funds * @param amount uint256 The amount of tokens to be spent */ function approveAndCall(address spender, uint256 amount) external returns (bool); /** * @notice Approve the passed address to spend the specified amount of tokens on behalf of msg.sender * and then call `onApprovalReceived` on spender. * 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 * @param spender address The address which will spend the funds * @param amount uint256 The amount of tokens to be spent * @param data bytes Additional data with no specified format, sent in call to `spender` */ function approveAndCall( address spender, uint256 amount, bytes calldata data ) external returns (bool); } // File: erc-payable-token/contracts/token/ERC1363/IERC1363Receiver.sol pragma solidity ^0.8.0; /** * @title IERC1363Receiver Interface * @dev Interface for any contract that wants to support transferAndCall or transferFromAndCall * from ERC1363 token contracts as defined in * https://eips.ethereum.org/EIPS/eip-1363 */ interface IERC1363Receiver { /** * @notice Handle the receipt of ERC1363 tokens * @dev Any ERC1363 smart contract calls this function on the recipient * after a `transfer` or a `transferFrom`. This function MAY throw to revert and reject the * transfer. Return of other than the magic value MUST result in the * transaction being reverted. * Note: the token contract address is always the message sender. * @param operator address The address which called `transferAndCall` or `transferFromAndCall` function * @param sender address The address which are token transferred from * @param amount uint256 The amount of tokens transferred * @param data bytes Additional data with no specified format * @return `bytes4(keccak256("onTransferReceived(address,address,uint256,bytes)"))` unless throwing */ function onTransferReceived( address operator, address sender, uint256 amount, bytes calldata data ) external returns (bytes4); } // File: erc-payable-token/contracts/token/ERC1363/IERC1363Spender.sol pragma solidity ^0.8.0; /** * @title IERC1363Spender Interface * @dev Interface for any contract that wants to support approveAndCall * from ERC1363 token contracts as defined in * https://eips.ethereum.org/EIPS/eip-1363 */ interface IERC1363Spender { /** * @notice Handle the approval of ERC1363 tokens * @dev Any ERC1363 smart contract calls this function on the recipient * after an `approve`. This function MAY throw to revert and reject the * approval. Return of other than the magic value MUST result in the * transaction being reverted. * Note: the token contract address is always the message sender. * @param sender address The address which called `approveAndCall` function * @param amount uint256 The amount of tokens to be spent * @param data bytes Additional data with no specified format * @return `bytes4(keccak256("onApprovalReceived(address,uint256,bytes)"))` unless throwing */ function onApprovalReceived( address sender, uint256 amount, bytes calldata data ) external returns (bytes4); } // File: erc-payable-token/contracts/token/ERC1363/ERC1363.sol pragma solidity ^0.8.0; /** * @title ERC1363 * @dev Implementation of an ERC1363 interface */ abstract contract ERC1363 is ERC20, IERC1363, ERC165 { using Address for address; /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC1363).interfaceId || super.supportsInterface(interfaceId); } /** * @dev Transfer tokens to a specified address and then execute a callback on recipient. * @param recipient The address to transfer to. * @param amount The amount to be transferred. * @return A boolean that indicates if the operation was successful. */ function transferAndCall(address recipient, uint256 amount) public virtual override returns (bool) { return transferAndCall(recipient, amount, ""); } /** * @dev Transfer tokens to a specified address and then execute a callback on recipient. * @param recipient The address to transfer to * @param amount The amount to be transferred * @param data Additional data with no specified format * @return A boolean that indicates if the operation was successful. */ function transferAndCall( address recipient, uint256 amount, bytes memory data ) public virtual override returns (bool) { transfer(recipient, amount); require(_checkAndCallTransfer(_msgSender(), recipient, amount, data), "ERC1363: _checkAndCallTransfer reverts"); return true; } /** * @dev Transfer tokens from one address to another and then execute a callback on recipient. * @param sender The address which you want to send tokens from * @param recipient The address which you want to transfer to * @param amount The amount of tokens to be transferred * @return A boolean that indicates if the operation was successful. */ function transferFromAndCall( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { return transferFromAndCall(sender, recipient, amount, ""); } /** * @dev Transfer tokens from one address to another and then execute a callback on recipient. * @param sender The address which you want to send tokens from * @param recipient The address which you want to transfer to * @param amount The amount of tokens to be transferred * @param data Additional data with no specified format * @return A boolean that indicates if the operation was successful. */ function transferFromAndCall( address sender, address recipient, uint256 amount, bytes memory data ) public virtual override returns (bool) { transferFrom(sender, recipient, amount); require(_checkAndCallTransfer(sender, recipient, amount, data), "ERC1363: _checkAndCallTransfer reverts"); return true; } /** * @dev Approve spender to transfer tokens and then execute a callback on recipient. * @param spender The address allowed to transfer to * @param amount The amount allowed to be transferred * @return A boolean that indicates if the operation was successful. */ function approveAndCall(address spender, uint256 amount) public virtual override returns (bool) { return approveAndCall(spender, amount, ""); } /** * @dev Approve spender to transfer tokens and then execute a callback on recipient. * @param spender The address allowed to transfer to. * @param amount The amount allowed to be transferred. * @param data Additional data with no specified format. * @return A boolean that indicates if the operation was successful. */ function approveAndCall( address spender, uint256 amount, bytes memory data ) public virtual override returns (bool) { approve(spender, amount); require(_checkAndCallApprove(spender, amount, data), "ERC1363: _checkAndCallApprove reverts"); return true; } /** * @dev Internal function to invoke `onTransferReceived` on a target address * The call is not executed if the target address is not a contract * @param sender address Representing the previous owner of the given token value * @param recipient address Target address that will receive the tokens * @param amount uint256 The amount mount of tokens to be transferred * @param data bytes Optional data to send along with the call * @return whether the call correctly returned the expected magic value */ function _checkAndCallTransfer( address sender, address recipient, uint256 amount, bytes memory data ) internal virtual returns (bool) { if (!recipient.isContract()) { return false; } bytes4 retval = IERC1363Receiver(recipient).onTransferReceived(_msgSender(), sender, amount, data); return (retval == IERC1363Receiver(recipient).onTransferReceived.selector); } /** * @dev Internal function to invoke `onApprovalReceived` on a target address * The call is not executed if the target address is not a contract * @param spender address The address which will spend the funds * @param amount uint256 The amount of tokens to be spent * @param data bytes Optional data to send along with the call * @return whether the call correctly returned the expected magic value */ function _checkAndCallApprove( address spender, uint256 amount, bytes memory data ) internal virtual returns (bool) { if (!spender.isContract()) { return false; } bytes4 retval = IERC1363Spender(spender).onApprovalReceived(_msgSender(), amount, data); return (retval == IERC1363Spender(spender).onApprovalReceived.selector); } } // File: @openzeppelin/contracts/access/Ownable.sol pragma solidity ^0.8.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. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address public _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the 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 virtual 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 virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // File: eth-token-recover/contracts/TokenRecover.sol pragma solidity ^0.8.0; /** * @title TokenRecover * @dev Allows owner to recover any ERC20 sent into the contract */ contract TokenRecover is Ownable { /** * @dev Remember that only owner can call so be careful when use on contracts generated from other contracts. * @param tokenAddress The token contract address * @param tokenAmount Number of tokens to be sent */ function recoverERC20(address tokenAddress, uint256 tokenAmount) public virtual onlyOwner { IERC20(tokenAddress).transfer(owner(), tokenAmount); } } // File: contracts/token/ERC20/behaviours/ERC20Decimals.sol pragma solidity ^0.8.0; /** * @title ERC20Decimals * @dev Implementation of the ERC20Decimals. Extension of {ERC20} that adds decimals storage slot. */ abstract contract ERC20Decimals is ERC20 { uint8 private immutable _decimals; /** * @dev Sets the value of the `decimals`. This value is immutable, it can only be * set once during construction. */ constructor(uint8 decimals_) { _decimals = decimals_; } function decimals() public view virtual override returns (uint8) { return _decimals; } } // File: contracts/token/ERC20/behaviours/ERC20Mintable.sol pragma solidity ^0.8.0; /** * @title ERC20Mintable * @dev Implementation of the ERC20Mintable. Extension of {ERC20} that adds a minting behaviour. */ abstract contract ERC20Mintable is ERC20 { // indicates if minting is finished bool private _mintingFinished = false; /** * @dev Emitted during finish minting */ event MintFinished(); /** * @dev Tokens can be minted only before minting finished. */ modifier canMint() { require(!_mintingFinished, "ERC20Mintable: minting is finished"); _; } /** * @return if minting is finished or not. */ function mintingFinished() external view returns (bool) { return _mintingFinished; } /** * @dev Function to mint tokens. * * WARNING: it allows everyone to mint new tokens. Access controls MUST be defined in derived contracts. * * @param account The address that will receive the minted tokens * @param amount The amount of tokens to mint */ function mint(address account, uint256 amount) external canMint { _mint(account, amount); } /** * @dev Function to stop minting new tokens. * * WARNING: it allows everyone to finish minting. Access controls MUST be defined in derived contracts. */ function finishMinting() external canMint { _finishMinting(); } /** * @dev Function to stop minting new tokens. */ function _finishMinting() internal virtual { _mintingFinished = true; emit MintFinished(); } } pragma solidity ^0.8.0; contract CaelumToken is ERC20Decimals, ERC20Mintable, ERC20Burnable, ERC1363, TokenRecover { constructor( string memory name_, string memory symbol_, uint8 decimals_, uint256 initialBalance_, address tokenOwner ) payable ERC20(name_, symbol_) ERC20Decimals(decimals_) { _owner = tokenOwner; _mint(tokenOwner, initialBalance_*10**uint256(decimals_)); } function decimals() public view virtual override(ERC20, ERC20Decimals) returns (uint8) { return super.decimals(); } /** * @dev Function to mint tokens. * * NOTE: restricting access to addresses with MINTER role. See {ERC20Mintable-mint}. * * @param account The address that will receive the minted tokens * @param amount The amount of tokens to mint */ function _mint(address account, uint256 amount) internal override onlyOwner { super._mint(account, amount); } /** * @dev Function to stop minting new tokens. * * NOTE: restricting access to owner only. See {ERC20Mintable-finishMinting}. */ function _finishMinting() internal override onlyOwner { super._finishMinting(); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"},{"internalType":"uint256","name":"initialBalance_","type":"uint256"},{"internalType":"address","name":"tokenOwner","type":"address"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"MintFinished","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":"_owner","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":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"approveAndCall","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":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","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":[],"name":"finishMinting","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintingFinished","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"recoverERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"transferAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"transferFromAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFromAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a06040526000600560006101000a81548160ff02191690831515021790555060405162003b8538038062003b858339818101604052810190620000449190620004c2565b82858581600390805190602001906200005f9291906200034f565b508060049080519060200190620000789291906200034f565b5050508060ff1660808160ff1660f81b815250505080600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620000fe818460ff16600a620000e5919062000770565b84620000f29190620008ad565b6200010960201b60201c565b505050505062000b5a565b62000119620001b360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200013f620001bb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000198576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200018f90620005e7565b60405180910390fd5b620001af8282620001e560201b620012921760201c565b5050565b600033905090565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000258576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200024f9062000609565b60405180910390fd5b6200026c600083836200034a60201b60201c565b8060026000828254620002809190620006b8565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620002d79190620006b8565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200033e91906200062b565b60405180910390a35050565b505050565b8280546200035d906200098f565b90600052602060002090601f016020900481019282620003815760008555620003cd565b82601f106200039c57805160ff1916838001178555620003cd565b82800160010185558215620003cd579182015b82811115620003cc578251825591602001919060010190620003af565b5b509050620003dc9190620003e0565b5090565b5b80821115620003fb576000816000905550600101620003e1565b5090565b600062000416620004108462000671565b62000648565b90508281526020810184848401111562000435576200043462000a8d565b5b6200044284828562000959565b509392505050565b6000815190506200045b8162000b0c565b92915050565b600082601f83011262000479576200047862000a88565b5b81516200048b848260208601620003ff565b91505092915050565b600081519050620004a58162000b26565b92915050565b600081519050620004bc8162000b40565b92915050565b600080600080600060a08688031215620004e157620004e062000a97565b5b600086015167ffffffffffffffff81111562000502576200050162000a92565b5b620005108882890162000461565b955050602086015167ffffffffffffffff81111562000534576200053362000a92565b5b620005428882890162000461565b94505060406200055588828901620004ab565b9350506060620005688882890162000494565b92505060806200057b888289016200044a565b9150509295509295909350565b600062000597602083620006a7565b9150620005a48262000aba565b602082019050919050565b6000620005be601f83620006a7565b9150620005cb8262000ae3565b602082019050919050565b620005e18162000942565b82525050565b60006020820190508181036000830152620006028162000588565b9050919050565b600060208201905081810360008301526200062481620005af565b9050919050565b6000602082019050620006426000830184620005d6565b92915050565b60006200065462000667565b9050620006628282620009c5565b919050565b6000604051905090565b600067ffffffffffffffff8211156200068f576200068e62000a59565b5b6200069a8262000a9c565b9050602081019050919050565b600082825260208201905092915050565b6000620006c58262000942565b9150620006d28362000942565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200070a5762000709620009fb565b5b828201905092915050565b6000808291508390505b600185111562000767578086048111156200073f576200073e620009fb565b5b60018516156200074f5780820291505b80810290506200075f8562000aad565b94506200071f565b94509492505050565b60006200077d8262000942565b91506200078a8362000942565b9250620007b97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620007c1565b905092915050565b600082620007d35760019050620008a6565b81620007e35760009050620008a6565b8160018114620007fc576002811462000807576200083d565b6001915050620008a6565b60ff8411156200081c576200081b620009fb565b5b8360020a915084821115620008365762000835620009fb565b5b50620008a6565b5060208310610133831016604e8410600b8410161715620008775782820a905083811115620008715762000870620009fb565b5b620008a6565b62000886848484600162000715565b92509050818404811115620008a0576200089f620009fb565b5b81810290505b9392505050565b6000620008ba8262000942565b9150620008c78362000942565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620009035762000902620009fb565b5b828202905092915050565b60006200091b8262000922565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015620009795780820151818401526020810190506200095c565b8381111562000989576000848401525b50505050565b60006002820490506001821680620009a857607f821691505b60208210811415620009bf57620009be62000a2a565b5b50919050565b620009d08262000a9c565b810181811067ffffffffffffffff82111715620009f257620009f162000a59565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b62000b17816200090e565b811462000b2357600080fd5b50565b62000b318162000942565b811462000b3d57600080fd5b50565b62000b4b816200094c565b811462000b5757600080fd5b50565b60805160f81c61300c62000b7960003960006118a6015261300c6000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c8063715018a6116100f9578063a9059cbb11610097578063cae9ca5111610071578063cae9ca511461052f578063d8fbe9941461055f578063dd62ed3e1461058f578063f2fde38b146105bf576101c4565b8063a9059cbb146104b1578063b2bdfa7b146104e1578063c1d34b89146104ff576101c4565b80638980f11f116100d35780638980f11f146104295780638da5cb5b1461044557806395d89b4114610463578063a457c2d714610481576101c4565b8063715018a6146103f957806379cc6790146104035780637d64bcb41461041f576101c4565b8063313ce567116101665780634000aea0116101405780634000aea01461036157806340c10f191461039157806342966c68146103ad57806370a08231146103c9576101c4565b8063313ce567146102e35780633177029f146103015780633950935114610331576101c4565b8063095ea7b3116101a2578063095ea7b3146102355780631296ee621461026557806318160ddd1461029557806323b872dd146102b3576101c4565b806301ffc9a7146101c957806305d2035b146101f957806306fdde0314610217575b600080fd5b6101e360048036038101906101de9190612140565b6105db565b6040516101f09190612573565b60405180910390f35b610201610655565b60405161020e9190612573565b60405180910390f35b61021f61066c565b60405161022c919061258e565b60405180910390f35b61024f600480360381019061024a9190612064565b6106fe565b60405161025c9190612573565b60405180910390f35b61027f600480360381019061027a9190612064565b61071c565b60405161028c9190612573565b60405180910390f35b61029d610740565b6040516102aa91906127b0565b60405180910390f35b6102cd60048036038101906102c89190611f8e565b61074a565b6040516102da9190612573565b60405180910390f35b6102eb61084b565b6040516102f891906127cb565b60405180910390f35b61031b60048036038101906103169190612064565b61085a565b6040516103289190612573565b60405180910390f35b61034b60048036038101906103469190612064565b61087e565b6040516103589190612573565b60405180910390f35b61037b600480360381019061037691906120a4565b61092a565b6040516103889190612573565b60405180910390f35b6103ab60048036038101906103a69190612064565b610994565b005b6103c760048036038101906103c2919061219a565b6109f2565b005b6103e360048036038101906103de9190611f21565b610a06565b6040516103f091906127b0565b60405180910390f35b610401610a4e565b005b61041d60048036038101906104189190612064565b610b8b565b005b610427610c0f565b005b610443600480360381019061043e9190612064565b610c69565b005b61044d610d7e565b60405161045a91906124a5565b60405180910390f35b61046b610da8565b604051610478919061258e565b60405180910390f35b61049b60048036038101906104969190612064565b610e3a565b6040516104a89190612573565b60405180910390f35b6104cb60048036038101906104c69190612064565b610f2e565b6040516104d89190612573565b60405180910390f35b6104e9610f4c565b6040516104f691906124a5565b60405180910390f35b61051960048036038101906105149190611fe1565b610f72565b6040516105269190612573565b60405180910390f35b610549600480360381019061054491906120a4565b610fd7565b6040516105569190612573565b60405180910390f35b61057960048036038101906105749190611f8e565b611039565b6040516105869190612573565b60405180910390f35b6105a960048036038101906105a49190611f4e565b61105f565b6040516105b691906127b0565b60405180910390f35b6105d960048036038101906105d49190611f21565b6110e6565b005b60007fb0202a11000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061064e575061064d826113e6565b5b9050919050565b6000600560009054906101000a900460ff16905090565b60606003805461067b906129c1565b80601f01602080910402602001604051908101604052809291908181526020018280546106a7906129c1565b80156106f45780601f106106c9576101008083540402835291602001916106f4565b820191906000526020600020905b8154815290600101906020018083116106d757829003601f168201915b5050505050905090565b600061071261070b611450565b8484611458565b6001905092915050565b600061073883836040518060200160405280600081525061092a565b905092915050565b6000600254905090565b6000610757848484611623565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107a2611450565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610822576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081990612690565b60405180910390fd5b61083f8561082e611450565b858461083a91906128ca565b611458565b60019150509392505050565b60006108556118a2565b905090565b6000610876838360405180602001604052806000815250610fd7565b905092915050565b600061092061088b611450565b848460016000610899611450565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461091b9190612874565b611458565b6001905092915050565b60006109368484610f2e565b5061094a610942611450565b8585856118ca565b610989576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098090612670565b60405180910390fd5b600190509392505050565b600560009054906101000a900460ff16156109e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109db90612750565b60405180910390fd5b6109ee82826119e8565b5050565b610a036109fd611450565b82611a72565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a56611450565b73ffffffffffffffffffffffffffffffffffffffff16610a74610d7e565b73ffffffffffffffffffffffffffffffffffffffff1614610aca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac1906126b0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000610b9e83610b99611450565b61105f565b905081811015610be3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bda906126d0565b60405180910390fd5b610c0083610bef611450565b8484610bfb91906128ca565b611458565b610c0a8383611a72565b505050565b600560009054906101000a900460ff1615610c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5690612750565b60405180910390fd5b610c67611c46565b565b610c71611450565b73ffffffffffffffffffffffffffffffffffffffff16610c8f610d7e565b73ffffffffffffffffffffffffffffffffffffffff1614610ce5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdc906126b0565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610d09610d7e565b836040518363ffffffff1660e01b8152600401610d2792919061250c565b602060405180830381600087803b158015610d4157600080fd5b505af1158015610d55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d799190612113565b505050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610db7906129c1565b80601f0160208091040260200160405190810160405280929190818152602001828054610de3906129c1565b8015610e305780601f10610e0557610100808354040283529160200191610e30565b820191906000526020600020905b815481529060010190602001808311610e1357829003601f168201915b5050505050905090565b60008060016000610e49611450565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610f06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efd90612770565b60405180910390fd5b610f23610f11611450565b858584610f1e91906128ca565b611458565b600191505092915050565b6000610f42610f3b611450565b8484611623565b6001905092915050565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610f7f85858561074a565b50610f8c858585856118ca565b610fcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc290612670565b60405180910390fd5b60019050949350505050565b6000610fe384846106fe565b50610fef848484611ccc565b61102e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102590612630565b60405180910390fd5b600190509392505050565b600061105684848460405180602001604052806000815250610f72565b90509392505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6110ee611450565b73ffffffffffffffffffffffffffffffffffffffff1661110c610d7e565b73ffffffffffffffffffffffffffffffffffffffff1614611162576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611159906126b0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156111d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c9906125f0565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611302576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f990612790565b60405180910390fd5b61130e60008383611de7565b80600260008282546113209190612874565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113759190612874565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113da91906127b0565b60405180910390a35050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156114c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bf90612730565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152f90612610565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161161691906127b0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611693576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168a90612710565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fa906125b0565b60405180910390fd5b61170e838383611de7565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611794576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178b90612650565b60405180910390fd5b81816117a091906128ca565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118309190612874565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161189491906127b0565b60405180910390a350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b60006118eb8473ffffffffffffffffffffffffffffffffffffffff16611dec565b6118f857600090506119e0565b60008473ffffffffffffffffffffffffffffffffffffffff166388a7ca5c61191e611450565b8887876040518563ffffffff1660e01b815260040161194094939291906124c0565b602060405180830381600087803b15801561195a57600080fd5b505af115801561196e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611992919061216d565b90506388a7ca5c60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b6119f0611450565b73ffffffffffffffffffffffffffffffffffffffff16611a0e610d7e565b73ffffffffffffffffffffffffffffffffffffffff1614611a64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5b906126b0565b60405180910390fd5b611a6e8282611292565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ae2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad9906126f0565b60405180910390fd5b611aee82600083611de7565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6b906125d0565b60405180910390fd5b8181611b8091906128ca565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254611bd491906128ca565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c3991906127b0565b60405180910390a3505050565b611c4e611450565b73ffffffffffffffffffffffffffffffffffffffff16611c6c610d7e565b73ffffffffffffffffffffffffffffffffffffffff1614611cc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb9906126b0565b60405180910390fd5b611cca611dff565b565b6000611ced8473ffffffffffffffffffffffffffffffffffffffff16611dec565b611cfa5760009050611de0565b60008473ffffffffffffffffffffffffffffffffffffffff16637b04a2d0611d20611450565b86866040518463ffffffff1660e01b8152600401611d4093929190612535565b602060405180830381600087803b158015611d5a57600080fd5b505af1158015611d6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d92919061216d565b9050637b04a2d060e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b9392505050565b505050565b600080823b905060008111915050919050565b6001600560006101000a81548160ff0219169083151502179055507fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a1565b6000611e5b611e568461280b565b6127e6565b905082815260208101848484011115611e7757611e76612ab6565b5b611e8284828561297f565b509392505050565b600081359050611e9981612f7a565b92915050565b600081519050611eae81612f91565b92915050565b600081359050611ec381612fa8565b92915050565b600081519050611ed881612fa8565b92915050565b600082601f830112611ef357611ef2612ab1565b5b8135611f03848260208601611e48565b91505092915050565b600081359050611f1b81612fbf565b92915050565b600060208284031215611f3757611f36612ac0565b5b6000611f4584828501611e8a565b91505092915050565b60008060408385031215611f6557611f64612ac0565b5b6000611f7385828601611e8a565b9250506020611f8485828601611e8a565b9150509250929050565b600080600060608486031215611fa757611fa6612ac0565b5b6000611fb586828701611e8a565b9350506020611fc686828701611e8a565b9250506040611fd786828701611f0c565b9150509250925092565b60008060008060808587031215611ffb57611ffa612ac0565b5b600061200987828801611e8a565b945050602061201a87828801611e8a565b935050604061202b87828801611f0c565b925050606085013567ffffffffffffffff81111561204c5761204b612abb565b5b61205887828801611ede565b91505092959194509250565b6000806040838503121561207b5761207a612ac0565b5b600061208985828601611e8a565b925050602061209a85828601611f0c565b9150509250929050565b6000806000606084860312156120bd576120bc612ac0565b5b60006120cb86828701611e8a565b93505060206120dc86828701611f0c565b925050604084013567ffffffffffffffff8111156120fd576120fc612abb565b5b61210986828701611ede565b9150509250925092565b60006020828403121561212957612128612ac0565b5b600061213784828501611e9f565b91505092915050565b60006020828403121561215657612155612ac0565b5b600061216484828501611eb4565b91505092915050565b60006020828403121561218357612182612ac0565b5b600061219184828501611ec9565b91505092915050565b6000602082840312156121b0576121af612ac0565b5b60006121be84828501611f0c565b91505092915050565b6121d0816128fe565b82525050565b6121df81612910565b82525050565b60006121f08261283c565b6121fa8185612852565b935061220a81856020860161298e565b61221381612ac5565b840191505092915050565b600061222982612847565b6122338185612863565b935061224381856020860161298e565b61224c81612ac5565b840191505092915050565b6000612264602383612863565b915061226f82612ad6565b604082019050919050565b6000612287602283612863565b915061229282612b25565b604082019050919050565b60006122aa602683612863565b91506122b582612b74565b604082019050919050565b60006122cd602283612863565b91506122d882612bc3565b604082019050919050565b60006122f0602583612863565b91506122fb82612c12565b604082019050919050565b6000612313602683612863565b915061231e82612c61565b604082019050919050565b6000612336602683612863565b915061234182612cb0565b604082019050919050565b6000612359602883612863565b915061236482612cff565b604082019050919050565b600061237c602083612863565b915061238782612d4e565b602082019050919050565b600061239f602483612863565b91506123aa82612d77565b604082019050919050565b60006123c2602183612863565b91506123cd82612dc6565b604082019050919050565b60006123e5602583612863565b91506123f082612e15565b604082019050919050565b6000612408602483612863565b915061241382612e64565b604082019050919050565b600061242b602283612863565b915061243682612eb3565b604082019050919050565b600061244e602583612863565b915061245982612f02565b604082019050919050565b6000612471601f83612863565b915061247c82612f51565b602082019050919050565b61249081612968565b82525050565b61249f81612972565b82525050565b60006020820190506124ba60008301846121c7565b92915050565b60006080820190506124d560008301876121c7565b6124e260208301866121c7565b6124ef6040830185612487565b818103606083015261250181846121e5565b905095945050505050565b600060408201905061252160008301856121c7565b61252e6020830184612487565b9392505050565b600060608201905061254a60008301866121c7565b6125576020830185612487565b818103604083015261256981846121e5565b9050949350505050565b600060208201905061258860008301846121d6565b92915050565b600060208201905081810360008301526125a8818461221e565b905092915050565b600060208201905081810360008301526125c981612257565b9050919050565b600060208201905081810360008301526125e98161227a565b9050919050565b600060208201905081810360008301526126098161229d565b9050919050565b60006020820190508181036000830152612629816122c0565b9050919050565b60006020820190508181036000830152612649816122e3565b9050919050565b6000602082019050818103600083015261266981612306565b9050919050565b6000602082019050818103600083015261268981612329565b9050919050565b600060208201905081810360008301526126a98161234c565b9050919050565b600060208201905081810360008301526126c98161236f565b9050919050565b600060208201905081810360008301526126e981612392565b9050919050565b60006020820190508181036000830152612709816123b5565b9050919050565b60006020820190508181036000830152612729816123d8565b9050919050565b60006020820190508181036000830152612749816123fb565b9050919050565b600060208201905081810360008301526127698161241e565b9050919050565b6000602082019050818103600083015261278981612441565b9050919050565b600060208201905081810360008301526127a981612464565b9050919050565b60006020820190506127c56000830184612487565b92915050565b60006020820190506127e06000830184612496565b92915050565b60006127f0612801565b90506127fc82826129f3565b919050565b6000604051905090565b600067ffffffffffffffff82111561282657612825612a82565b5b61282f82612ac5565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061287f82612968565b915061288a83612968565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156128bf576128be612a24565b5b828201905092915050565b60006128d582612968565b91506128e083612968565b9250828210156128f3576128f2612a24565b5b828203905092915050565b600061290982612948565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b838110156129ac578082015181840152602081019050612991565b838111156129bb576000848401525b50505050565b600060028204905060018216806129d957607f821691505b602082108114156129ed576129ec612a53565b5b50919050565b6129fc82612ac5565b810181811067ffffffffffffffff82111715612a1b57612a1a612a82565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f455243313336333a205f636865636b416e6443616c6c417070726f766520726560008201527f7665727473000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f455243313336333a205f636865636b416e6443616c6c5472616e73666572207260008201527f6576657274730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f7760008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332304d696e7461626c653a206d696e74696e672069732066696e69736860008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b612f83816128fe565b8114612f8e57600080fd5b50565b612f9a81612910565b8114612fa557600080fd5b50565b612fb18161291c565b8114612fbc57600080fd5b50565b612fc881612968565b8114612fd357600080fd5b5056fea2646970667358221220bd87f91f10c33c0ebacc051c22d568ae52bb8cfabdae1ef8767d4d69a60c6eb464736f6c6343000807003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000e8d4a50fff0000000000000000000000005d7d79c6059bd553e2a375e23986baf9ba4ffca800000000000000000000000000000000000000000000000000000000000000064361656c756d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044341454c00000000000000000000000000000000000000000000000000000000
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000e8d4a50fff0000000000000000000000005d7d79c6059bd553e2a375e23986baf9ba4ffca800000000000000000000000000000000000000000000000000000000000000064361656c756d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044341454c00000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : name_ (string): Caelum
Arg [1] : symbol_ (string): CAEL
Arg [2] : decimals_ (uint8): 18
Arg [3] : initialBalance_ (uint256): 999999999999
Arg [4] : tokenOwner (address): 0x5D7D79c6059BD553e2A375E23986BAf9ba4fFCA8
-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 000000000000000000000000000000000000000000000000000000e8d4a50fff
Arg [4] : 0000000000000000000000005d7d79c6059bd553e2a375e23986baf9ba4ffca8
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [6] : 4361656c756d0000000000000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [8] : 4341454c00000000000000000000000000000000000000000000000000000000
Deployed ByteCode Sourcemap
44610:1258:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33640:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43582:98;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6645:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8812:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34154:163;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7765:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9463:422;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45059:129;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36783:157;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10294:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34675:342;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43992:105;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15907:91;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7936:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41015:148;;;:::i;:::-;;16317:332;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44290:77;;;:::i;:::-;;42044:160;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40364:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6864:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11012:377;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8276:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40167:21;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36099:377;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37311:318;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35413:229;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8514:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41318:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33640:215;33742:4;33781:26;33766:41;;;:11;:41;;;;:81;;;;33811:36;33835:11;33811:23;:36::i;:::-;33766:81;33759:88;;33640:215;;;:::o;43582:98::-;43632:4;43656:16;;;;;;;;;;;43649:23;;43582:98;:::o;6645:100::-;6699:13;6732:5;6725:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6645:100;:::o;8812:169::-;8895:4;8912:39;8921:12;:10;:12::i;:::-;8935:7;8944:6;8912:8;:39::i;:::-;8969:4;8962:11;;8812:169;;;;:::o;34154:163::-;34247:4;34271:38;34287:9;34298:6;34271:38;;;;;;;;;;;;:15;:38::i;:::-;34264:45;;34154:163;;;;:::o;7765:108::-;7826:7;7853:12;;7846:19;;7765:108;:::o;9463:422::-;9569:4;9586:36;9596:6;9604:9;9615:6;9586:9;:36::i;:::-;9635:24;9662:11;:19;9674:6;9662:19;;;;;;;;;;;;;;;:33;9682:12;:10;:12::i;:::-;9662:33;;;;;;;;;;;;;;;;9635:60;;9734:6;9714:16;:26;;9706:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9796:57;9805:6;9813:12;:10;:12::i;:::-;9846:6;9827:16;:25;;;;:::i;:::-;9796:8;:57::i;:::-;9873:4;9866:11;;;9463:422;;;;;:::o;45059:129::-;45139:5;45164:16;:14;:16::i;:::-;45157:23;;45059:129;:::o;36783:157::-;36873:4;36897:35;36912:7;36921:6;36897:35;;;;;;;;;;;;:14;:35::i;:::-;36890:42;;36783:157;;;;:::o;10294:215::-;10382:4;10399:80;10408:12;:10;:12::i;:::-;10422:7;10468:10;10431:11;:25;10443:12;:10;:12::i;:::-;10431:25;;;;;;;;;;;;;;;:34;10457:7;10431:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;10399:8;:80::i;:::-;10497:4;10490:11;;10294:215;;;;:::o;34675:342::-;34821:4;34838:27;34847:9;34858:6;34838:8;:27::i;:::-;;34884:60;34906:12;:10;:12::i;:::-;34920:9;34931:6;34939:4;34884:21;:60::i;:::-;34876:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;35005:4;34998:11;;34675:342;;;;;:::o;43992:105::-;43434:16;;;;;;;;;;;43433:17;43425:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;44067:22:::1;44073:7;44082:6;44067:5;:22::i;:::-;43992:105:::0;;:::o;15907:91::-;15963:27;15969:12;:10;:12::i;:::-;15983:6;15963:5;:27::i;:::-;15907:91;:::o;7936:127::-;8010:7;8037:9;:18;8047:7;8037:18;;;;;;;;;;;;;;;;8030:25;;7936:127;;;:::o;41015:148::-;40595:12;:10;:12::i;:::-;40584:23;;:7;:5;:7::i;:::-;:23;;;40576:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;41122:1:::1;41085:40;;41106:6;;;;;;;;;;;41085:40;;;;;;;;;;;;41153:1;41136:6;;:19;;;;;;;;;;;;;;;;;;41015:148::o:0;16317:332::-;16394:24;16421:32;16431:7;16440:12;:10;:12::i;:::-;16421:9;:32::i;:::-;16394:59;;16492:6;16472:16;:26;;16464:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;16550:58;16559:7;16568:12;:10;:12::i;:::-;16601:6;16582:16;:25;;;;:::i;:::-;16550:8;:58::i;:::-;16619:22;16625:7;16634:6;16619:5;:22::i;:::-;16383:266;16317:332;;:::o;44290:77::-;43434:16;;;;;;;;;;;43433:17;43425:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;44343:16:::1;:14;:16::i;:::-;44290:77::o:0;42044:160::-;40595:12;:10;:12::i;:::-;40584:23;;:7;:5;:7::i;:::-;:23;;;40576:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;42152:12:::1;42145:29;;;42175:7;:5;:7::i;:::-;42184:11;42145:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;42044:160:::0;;:::o;40364:87::-;40410:7;40437:6;;;;;;;;;;;40430:13;;40364:87;:::o;6864:104::-;6920:13;6953:7;6946:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6864:104;:::o;11012:377::-;11105:4;11122:24;11149:11;:25;11161:12;:10;:12::i;:::-;11149:25;;;;;;;;;;;;;;;:34;11175:7;11149:34;;;;;;;;;;;;;;;;11122:61;;11222:15;11202:16;:35;;11194:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;11290:67;11299:12;:10;:12::i;:::-;11313:7;11341:15;11322:16;:34;;;;:::i;:::-;11290:8;:67::i;:::-;11377:4;11370:11;;;11012:377;;;;:::o;8276:175::-;8362:4;8379:42;8389:12;:10;:12::i;:::-;8403:9;8414:6;8379:9;:42::i;:::-;8439:4;8432:11;;8276:175;;;;:::o;40167:21::-;;;;;;;;;;;;;:::o;36099:377::-;36274:4;36291:39;36304:6;36312:9;36323:6;36291:12;:39::i;:::-;;36349:54;36371:6;36379:9;36390:6;36398:4;36349:21;:54::i;:::-;36341:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;36464:4;36457:11;;36099:377;;;;;;:::o;37311:318::-;37454:4;37471:24;37479:7;37488:6;37471:7;:24::i;:::-;;37514:43;37535:7;37544:6;37552:4;37514:20;:43::i;:::-;37506:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;37617:4;37610:11;;37311:318;;;;;:::o;35413:229::-;35560:4;35584:50;35604:6;35612:9;35623:6;35584:50;;;;;;;;;;;;:19;:50::i;:::-;35577:57;;35413:229;;;;;:::o;8514:151::-;8603:7;8630:11;:18;8642:5;8630:18;;;;;;;;;;;;;;;:27;8649:7;8630:27;;;;;;;;;;;;;;;;8623:34;;8514:151;;;;:::o;41318:244::-;40595:12;:10;:12::i;:::-;40584:23;;:7;:5;:7::i;:::-;:23;;;40576:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;41427:1:::1;41407:22;;:8;:22;;;;41399:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;41517:8;41488:38;;41509:6;;;;;;;;;;;41488:38;;;;;;;;;;;;41546:8;41537:6;;:17;;;;;;;;;;;;;;;;;;41318:244:::0;:::o;12765:338::-;12868:1;12849:21;;:7;:21;;;;12841:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12919:49;12948:1;12952:7;12961:6;12919:20;:49::i;:::-;12997:6;12981:12;;:22;;;;;;;:::i;:::-;;;;;;;;13036:6;13014:9;:18;13024:7;13014:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;13079:7;13058:37;;13075:1;13058:37;;;13088:6;13058:37;;;;;;:::i;:::-;;;;;;;;12765:338;;:::o;26329:157::-;26414:4;26453:25;26438:40;;;:11;:40;;;;26431:47;;26329:157;;;:::o;4232:98::-;4285:7;4312:10;4305:17;;4232:98;:::o;14368:346::-;14487:1;14470:19;;:5;:19;;;;14462:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14568:1;14549:21;;:7;:21;;;;14541:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14652:6;14622:11;:18;14634:5;14622:18;;;;;;;;;;;;;;;:27;14641:7;14622:27;;;;;;;;;;;;;;;:36;;;;14690:7;14674:32;;14683:5;14674:32;;;14699:6;14674:32;;;;;;:::i;:::-;;;;;;;;14368:346;;;:::o;11879:604::-;12003:1;11985:20;;:6;:20;;;;11977:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12087:1;12066:23;;:9;:23;;;;12058:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12142:47;12163:6;12171:9;12182:6;12142:20;:47::i;:::-;12202:21;12226:9;:17;12236:6;12226:17;;;;;;;;;;;;;;;;12202:41;;12279:6;12262:13;:23;;12254:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12375:6;12359:13;:22;;;;:::i;:::-;12339:9;:17;12349:6;12339:17;;;;;;;;;;;;;;;:42;;;;12416:6;12392:9;:20;12402:9;12392:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;12457:9;12440:35;;12449:6;12440:35;;;12468:6;12440:35;;;;;;:::i;:::-;;;;;;;;11966:517;11879:604;;;:::o;42752:100::-;42810:5;42835:9;42828:16;;42752:100;:::o;38195:456::-;38365:4;38387:22;:9;:20;;;:22::i;:::-;38382:68;;38433:5;38426:12;;;;38382:68;38460:13;38493:9;38476:46;;;38523:12;:10;:12::i;:::-;38537:6;38545;38553:4;38476:82;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38460:98;;38587:55;;;38577:65;;;:6;:65;;;;38569:74;;;38195:456;;;;;;;:::o;45480:123::-;40595:12;:10;:12::i;:::-;40584:23;;:7;:5;:7::i;:::-;:23;;;40576:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;45567:28:::1;45579:7;45588:6;45567:11;:28::i;:::-;45480:123:::0;;:::o;13436:494::-;13539:1;13520:21;;:7;:21;;;;13512:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13592:49;13613:7;13630:1;13634:6;13592:20;:49::i;:::-;13654:22;13679:9;:18;13689:7;13679:18;;;;;;;;;;;;;;;;13654:43;;13734:6;13716:14;:24;;13708:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13828:6;13811:14;:23;;;;:::i;:::-;13790:9;:18;13800:7;13790:18;;;;;;;;;;;;;;;:44;;;;13861:6;13845:12;;:22;;;;;;;:::i;:::-;;;;;;;;13911:1;13885:37;;13894:7;13885:37;;;13915:6;13885:37;;;;;;:::i;:::-;;;;;;;;13501:429;13436:494;;:::o;45770:95::-;40595:12;:10;:12::i;:::-;40584:23;;:7;:5;:7::i;:::-;:23;;;40576:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;45835:22:::1;:20;:22::i;:::-;45770:95::o:0;39111:412::-;39253:4;39275:20;:7;:18;;;:20::i;:::-;39270:66;;39319:5;39312:12;;;;39270:66;39346:13;39378:7;39362:43;;;39406:12;:10;:12::i;:::-;39420:6;39428:4;39362:71;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39346:87;;39462:52;;;39452:62;;;:6;:62;;;;39444:71;;;39111:412;;;;;;:::o;15317:92::-;;;;:::o;17422:422::-;17482:4;17690:12;17801:7;17789:20;17781:28;;17835:1;17828:4;:8;17821:15;;;17422:422;;;:::o;44443:117::-;44516:4;44497:16;;:23;;;;;;;;;;;;;;;;;;44538:14;;;;;;;;;;44443:117::o;7:410:1:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:112;;;280:79;;:::i;:::-;249:112;370:41;404:6;399:3;394;370:41;:::i;:::-;90:327;7:410;;;;;:::o;423:139::-;469:5;507:6;494:20;485:29;;523:33;550:5;523:33;:::i;:::-;423:139;;;;:::o;568:137::-;622:5;653:6;647:13;638:22;;669:30;693:5;669:30;:::i;:::-;568:137;;;;:::o;711:::-;756:5;794:6;781:20;772:29;;810:32;836:5;810:32;:::i;:::-;711:137;;;;:::o;854:141::-;910:5;941:6;935:13;926:22;;957:32;983:5;957:32;:::i;:::-;854:141;;;;:::o;1014:338::-;1069:5;1118:3;1111:4;1103:6;1099:17;1095:27;1085:122;;1126:79;;:::i;:::-;1085:122;1243:6;1230:20;1268:78;1342:3;1334:6;1327:4;1319:6;1315:17;1268:78;:::i;:::-;1259:87;;1075:277;1014:338;;;;:::o;1358:139::-;1404:5;1442:6;1429:20;1420:29;;1458:33;1485:5;1458:33;:::i;:::-;1358:139;;;;:::o;1503:329::-;1562:6;1611:2;1599:9;1590:7;1586:23;1582:32;1579:119;;;1617:79;;:::i;:::-;1579:119;1737:1;1762:53;1807:7;1798:6;1787:9;1783:22;1762:53;:::i;:::-;1752:63;;1708:117;1503:329;;;;:::o;1838:474::-;1906:6;1914;1963:2;1951:9;1942:7;1938:23;1934:32;1931:119;;;1969:79;;:::i;:::-;1931:119;2089:1;2114:53;2159:7;2150:6;2139:9;2135:22;2114:53;:::i;:::-;2104:63;;2060:117;2216:2;2242:53;2287:7;2278:6;2267:9;2263:22;2242:53;:::i;:::-;2232:63;;2187:118;1838:474;;;;;:::o;2318:619::-;2395:6;2403;2411;2460:2;2448:9;2439:7;2435:23;2431:32;2428:119;;;2466:79;;:::i;:::-;2428:119;2586:1;2611:53;2656:7;2647:6;2636:9;2632:22;2611:53;:::i;:::-;2601:63;;2557:117;2713:2;2739:53;2784:7;2775:6;2764:9;2760:22;2739:53;:::i;:::-;2729:63;;2684:118;2841:2;2867:53;2912:7;2903:6;2892:9;2888:22;2867:53;:::i;:::-;2857:63;;2812:118;2318:619;;;;;:::o;2943:943::-;3038:6;3046;3054;3062;3111:3;3099:9;3090:7;3086:23;3082:33;3079:120;;;3118:79;;:::i;:::-;3079:120;3238:1;3263:53;3308:7;3299:6;3288:9;3284:22;3263:53;:::i;:::-;3253:63;;3209:117;3365:2;3391:53;3436:7;3427:6;3416:9;3412:22;3391:53;:::i;:::-;3381:63;;3336:118;3493:2;3519:53;3564:7;3555:6;3544:9;3540:22;3519:53;:::i;:::-;3509:63;;3464:118;3649:2;3638:9;3634:18;3621:32;3680:18;3672:6;3669:30;3666:117;;;3702:79;;:::i;:::-;3666:117;3807:62;3861:7;3852:6;3841:9;3837:22;3807:62;:::i;:::-;3797:72;;3592:287;2943:943;;;;;;;:::o;3892:474::-;3960:6;3968;4017:2;4005:9;3996:7;3992:23;3988:32;3985:119;;;4023:79;;:::i;:::-;3985:119;4143:1;4168:53;4213:7;4204:6;4193:9;4189:22;4168:53;:::i;:::-;4158:63;;4114:117;4270:2;4296:53;4341:7;4332:6;4321:9;4317:22;4296:53;:::i;:::-;4286:63;;4241:118;3892:474;;;;;:::o;4372:797::-;4458:6;4466;4474;4523:2;4511:9;4502:7;4498:23;4494:32;4491:119;;;4529:79;;:::i;:::-;4491:119;4649:1;4674:53;4719:7;4710:6;4699:9;4695:22;4674:53;:::i;:::-;4664:63;;4620:117;4776:2;4802:53;4847:7;4838:6;4827:9;4823:22;4802:53;:::i;:::-;4792:63;;4747:118;4932:2;4921:9;4917:18;4904:32;4963:18;4955:6;4952:30;4949:117;;;4985:79;;:::i;:::-;4949:117;5090:62;5144:7;5135:6;5124:9;5120:22;5090:62;:::i;:::-;5080:72;;4875:287;4372:797;;;;;:::o;5175:345::-;5242:6;5291:2;5279:9;5270:7;5266:23;5262:32;5259:119;;;5297:79;;:::i;:::-;5259:119;5417:1;5442:61;5495:7;5486:6;5475:9;5471:22;5442:61;:::i;:::-;5432:71;;5388:125;5175:345;;;;:::o;5526:327::-;5584:6;5633:2;5621:9;5612:7;5608:23;5604:32;5601:119;;;5639:79;;:::i;:::-;5601:119;5759:1;5784:52;5828:7;5819:6;5808:9;5804:22;5784:52;:::i;:::-;5774:62;;5730:116;5526:327;;;;:::o;5859:349::-;5928:6;5977:2;5965:9;5956:7;5952:23;5948:32;5945:119;;;5983:79;;:::i;:::-;5945:119;6103:1;6128:63;6183:7;6174:6;6163:9;6159:22;6128:63;:::i;:::-;6118:73;;6074:127;5859:349;;;;:::o;6214:329::-;6273:6;6322:2;6310:9;6301:7;6297:23;6293:32;6290:119;;;6328:79;;:::i;:::-;6290:119;6448:1;6473:53;6518:7;6509:6;6498:9;6494:22;6473:53;:::i;:::-;6463:63;;6419:117;6214:329;;;;:::o;6549:118::-;6636:24;6654:5;6636:24;:::i;:::-;6631:3;6624:37;6549:118;;:::o;6673:109::-;6754:21;6769:5;6754:21;:::i;:::-;6749:3;6742:34;6673:109;;:::o;6788:360::-;6874:3;6902:38;6934:5;6902:38;:::i;:::-;6956:70;7019:6;7014:3;6956:70;:::i;:::-;6949:77;;7035:52;7080:6;7075:3;7068:4;7061:5;7057:16;7035:52;:::i;:::-;7112:29;7134:6;7112:29;:::i;:::-;7107:3;7103:39;7096:46;;6878:270;6788:360;;;;:::o;7154:364::-;7242:3;7270:39;7303:5;7270:39;:::i;:::-;7325:71;7389:6;7384:3;7325:71;:::i;:::-;7318:78;;7405:52;7450:6;7445:3;7438:4;7431:5;7427:16;7405:52;:::i;:::-;7482:29;7504:6;7482:29;:::i;:::-;7477:3;7473:39;7466:46;;7246:272;7154:364;;;;:::o;7524:366::-;7666:3;7687:67;7751:2;7746:3;7687:67;:::i;:::-;7680:74;;7763:93;7852:3;7763:93;:::i;:::-;7881:2;7876:3;7872:12;7865:19;;7524:366;;;:::o;7896:::-;8038:3;8059:67;8123:2;8118:3;8059:67;:::i;:::-;8052:74;;8135:93;8224:3;8135:93;:::i;:::-;8253:2;8248:3;8244:12;8237:19;;7896:366;;;:::o;8268:::-;8410:3;8431:67;8495:2;8490:3;8431:67;:::i;:::-;8424:74;;8507:93;8596:3;8507:93;:::i;:::-;8625:2;8620:3;8616:12;8609:19;;8268:366;;;:::o;8640:::-;8782:3;8803:67;8867:2;8862:3;8803:67;:::i;:::-;8796:74;;8879:93;8968:3;8879:93;:::i;:::-;8997:2;8992:3;8988:12;8981:19;;8640:366;;;:::o;9012:::-;9154:3;9175:67;9239:2;9234:3;9175:67;:::i;:::-;9168:74;;9251:93;9340:3;9251:93;:::i;:::-;9369:2;9364:3;9360:12;9353:19;;9012:366;;;:::o;9384:::-;9526:3;9547:67;9611:2;9606:3;9547:67;:::i;:::-;9540:74;;9623:93;9712:3;9623:93;:::i;:::-;9741:2;9736:3;9732:12;9725:19;;9384:366;;;:::o;9756:::-;9898:3;9919:67;9983:2;9978:3;9919:67;:::i;:::-;9912:74;;9995:93;10084:3;9995:93;:::i;:::-;10113:2;10108:3;10104:12;10097:19;;9756:366;;;:::o;10128:::-;10270:3;10291:67;10355:2;10350:3;10291:67;:::i;:::-;10284:74;;10367:93;10456:3;10367:93;:::i;:::-;10485:2;10480:3;10476:12;10469:19;;10128:366;;;:::o;10500:::-;10642:3;10663:67;10727:2;10722:3;10663:67;:::i;:::-;10656:74;;10739:93;10828:3;10739:93;:::i;:::-;10857:2;10852:3;10848:12;10841:19;;10500:366;;;:::o;10872:::-;11014:3;11035:67;11099:2;11094:3;11035:67;:::i;:::-;11028:74;;11111:93;11200:3;11111:93;:::i;:::-;11229:2;11224:3;11220:12;11213:19;;10872:366;;;:::o;11244:::-;11386:3;11407:67;11471:2;11466:3;11407:67;:::i;:::-;11400:74;;11483:93;11572:3;11483:93;:::i;:::-;11601:2;11596:3;11592:12;11585:19;;11244:366;;;:::o;11616:::-;11758:3;11779:67;11843:2;11838:3;11779:67;:::i;:::-;11772:74;;11855:93;11944:3;11855:93;:::i;:::-;11973:2;11968:3;11964:12;11957:19;;11616:366;;;:::o;11988:::-;12130:3;12151:67;12215:2;12210:3;12151:67;:::i;:::-;12144:74;;12227:93;12316:3;12227:93;:::i;:::-;12345:2;12340:3;12336:12;12329:19;;11988:366;;;:::o;12360:::-;12502:3;12523:67;12587:2;12582:3;12523:67;:::i;:::-;12516:74;;12599:93;12688:3;12599:93;:::i;:::-;12717:2;12712:3;12708:12;12701:19;;12360:366;;;:::o;12732:::-;12874:3;12895:67;12959:2;12954:3;12895:67;:::i;:::-;12888:74;;12971:93;13060:3;12971:93;:::i;:::-;13089:2;13084:3;13080:12;13073:19;;12732:366;;;:::o;13104:::-;13246:3;13267:67;13331:2;13326:3;13267:67;:::i;:::-;13260:74;;13343:93;13432:3;13343:93;:::i;:::-;13461:2;13456:3;13452:12;13445:19;;13104:366;;;:::o;13476:118::-;13563:24;13581:5;13563:24;:::i;:::-;13558:3;13551:37;13476:118;;:::o;13600:112::-;13683:22;13699:5;13683:22;:::i;:::-;13678:3;13671:35;13600:112;;:::o;13718:222::-;13811:4;13849:2;13838:9;13834:18;13826:26;;13862:71;13930:1;13919:9;13915:17;13906:6;13862:71;:::i;:::-;13718:222;;;;:::o;13946:640::-;14141:4;14179:3;14168:9;14164:19;14156:27;;14193:71;14261:1;14250:9;14246:17;14237:6;14193:71;:::i;:::-;14274:72;14342:2;14331:9;14327:18;14318:6;14274:72;:::i;:::-;14356;14424:2;14413:9;14409:18;14400:6;14356:72;:::i;:::-;14475:9;14469:4;14465:20;14460:2;14449:9;14445:18;14438:48;14503:76;14574:4;14565:6;14503:76;:::i;:::-;14495:84;;13946:640;;;;;;;:::o;14592:332::-;14713:4;14751:2;14740:9;14736:18;14728:26;;14764:71;14832:1;14821:9;14817:17;14808:6;14764:71;:::i;:::-;14845:72;14913:2;14902:9;14898:18;14889:6;14845:72;:::i;:::-;14592:332;;;;;:::o;14930:529::-;15097:4;15135:2;15124:9;15120:18;15112:26;;15148:71;15216:1;15205:9;15201:17;15192:6;15148:71;:::i;:::-;15229:72;15297:2;15286:9;15282:18;15273:6;15229:72;:::i;:::-;15348:9;15342:4;15338:20;15333:2;15322:9;15318:18;15311:48;15376:76;15447:4;15438:6;15376:76;:::i;:::-;15368:84;;14930:529;;;;;;:::o;15465:210::-;15552:4;15590:2;15579:9;15575:18;15567:26;;15603:65;15665:1;15654:9;15650:17;15641:6;15603:65;:::i;:::-;15465:210;;;;:::o;15681:313::-;15794:4;15832:2;15821:9;15817:18;15809:26;;15881:9;15875:4;15871:20;15867:1;15856:9;15852:17;15845:47;15909:78;15982:4;15973:6;15909:78;:::i;:::-;15901:86;;15681:313;;;;:::o;16000:419::-;16166:4;16204:2;16193:9;16189:18;16181:26;;16253:9;16247:4;16243:20;16239:1;16228:9;16224:17;16217:47;16281:131;16407:4;16281:131;:::i;:::-;16273:139;;16000:419;;;:::o;16425:::-;16591:4;16629:2;16618:9;16614:18;16606:26;;16678:9;16672:4;16668:20;16664:1;16653:9;16649:17;16642:47;16706:131;16832:4;16706:131;:::i;:::-;16698:139;;16425:419;;;:::o;16850:::-;17016:4;17054:2;17043:9;17039:18;17031:26;;17103:9;17097:4;17093:20;17089:1;17078:9;17074:17;17067:47;17131:131;17257:4;17131:131;:::i;:::-;17123:139;;16850:419;;;:::o;17275:::-;17441:4;17479:2;17468:9;17464:18;17456:26;;17528:9;17522:4;17518:20;17514:1;17503:9;17499:17;17492:47;17556:131;17682:4;17556:131;:::i;:::-;17548:139;;17275:419;;;:::o;17700:::-;17866:4;17904:2;17893:9;17889:18;17881:26;;17953:9;17947:4;17943:20;17939:1;17928:9;17924:17;17917:47;17981:131;18107:4;17981:131;:::i;:::-;17973:139;;17700:419;;;:::o;18125:::-;18291:4;18329:2;18318:9;18314:18;18306:26;;18378:9;18372:4;18368:20;18364:1;18353:9;18349:17;18342:47;18406:131;18532:4;18406:131;:::i;:::-;18398:139;;18125:419;;;:::o;18550:::-;18716:4;18754:2;18743:9;18739:18;18731:26;;18803:9;18797:4;18793:20;18789:1;18778:9;18774:17;18767:47;18831:131;18957:4;18831:131;:::i;:::-;18823:139;;18550:419;;;:::o;18975:::-;19141:4;19179:2;19168:9;19164:18;19156:26;;19228:9;19222:4;19218:20;19214:1;19203:9;19199:17;19192:47;19256:131;19382:4;19256:131;:::i;:::-;19248:139;;18975:419;;;:::o;19400:::-;19566:4;19604:2;19593:9;19589:18;19581:26;;19653:9;19647:4;19643:20;19639:1;19628:9;19624:17;19617:47;19681:131;19807:4;19681:131;:::i;:::-;19673:139;;19400:419;;;:::o;19825:::-;19991:4;20029:2;20018:9;20014:18;20006:26;;20078:9;20072:4;20068:20;20064:1;20053:9;20049:17;20042:47;20106:131;20232:4;20106:131;:::i;:::-;20098:139;;19825:419;;;:::o;20250:::-;20416:4;20454:2;20443:9;20439:18;20431:26;;20503:9;20497:4;20493:20;20489:1;20478:9;20474:17;20467:47;20531:131;20657:4;20531:131;:::i;:::-;20523:139;;20250:419;;;:::o;20675:::-;20841:4;20879:2;20868:9;20864:18;20856:26;;20928:9;20922:4;20918:20;20914:1;20903:9;20899:17;20892:47;20956:131;21082:4;20956:131;:::i;:::-;20948:139;;20675:419;;;:::o;21100:::-;21266:4;21304:2;21293:9;21289:18;21281:26;;21353:9;21347:4;21343:20;21339:1;21328:9;21324:17;21317:47;21381:131;21507:4;21381:131;:::i;:::-;21373:139;;21100:419;;;:::o;21525:::-;21691:4;21729:2;21718:9;21714:18;21706:26;;21778:9;21772:4;21768:20;21764:1;21753:9;21749:17;21742:47;21806:131;21932:4;21806:131;:::i;:::-;21798:139;;21525:419;;;:::o;21950:::-;22116:4;22154:2;22143:9;22139:18;22131:26;;22203:9;22197:4;22193:20;22189:1;22178:9;22174:17;22167:47;22231:131;22357:4;22231:131;:::i;:::-;22223:139;;21950:419;;;:::o;22375:::-;22541:4;22579:2;22568:9;22564:18;22556:26;;22628:9;22622:4;22618:20;22614:1;22603:9;22599:17;22592:47;22656:131;22782:4;22656:131;:::i;:::-;22648:139;;22375:419;;;:::o;22800:222::-;22893:4;22931:2;22920:9;22916:18;22908:26;;22944:71;23012:1;23001:9;22997:17;22988:6;22944:71;:::i;:::-;22800:222;;;;:::o;23028:214::-;23117:4;23155:2;23144:9;23140:18;23132:26;;23168:67;23232:1;23221:9;23217:17;23208:6;23168:67;:::i;:::-;23028:214;;;;:::o;23248:129::-;23282:6;23309:20;;:::i;:::-;23299:30;;23338:33;23366:4;23358:6;23338:33;:::i;:::-;23248:129;;;:::o;23383:75::-;23416:6;23449:2;23443:9;23433:19;;23383:75;:::o;23464:307::-;23525:4;23615:18;23607:6;23604:30;23601:56;;;23637:18;;:::i;:::-;23601:56;23675:29;23697:6;23675:29;:::i;:::-;23667:37;;23759:4;23753;23749:15;23741:23;;23464:307;;;:::o;23777:98::-;23828:6;23862:5;23856:12;23846:22;;23777:98;;;:::o;23881:99::-;23933:6;23967:5;23961:12;23951:22;;23881:99;;;:::o;23986:168::-;24069:11;24103:6;24098:3;24091:19;24143:4;24138:3;24134:14;24119:29;;23986:168;;;;:::o;24160:169::-;24244:11;24278:6;24273:3;24266:19;24318:4;24313:3;24309:14;24294:29;;24160:169;;;;:::o;24335:305::-;24375:3;24394:20;24412:1;24394:20;:::i;:::-;24389:25;;24428:20;24446:1;24428:20;:::i;:::-;24423:25;;24582:1;24514:66;24510:74;24507:1;24504:81;24501:107;;;24588:18;;:::i;:::-;24501:107;24632:1;24629;24625:9;24618:16;;24335:305;;;;:::o;24646:191::-;24686:4;24706:20;24724:1;24706:20;:::i;:::-;24701:25;;24740:20;24758:1;24740:20;:::i;:::-;24735:25;;24779:1;24776;24773:8;24770:34;;;24784:18;;:::i;:::-;24770:34;24829:1;24826;24822:9;24814:17;;24646:191;;;;:::o;24843:96::-;24880:7;24909:24;24927:5;24909:24;:::i;:::-;24898:35;;24843:96;;;:::o;24945:90::-;24979:7;25022:5;25015:13;25008:21;24997:32;;24945:90;;;:::o;25041:149::-;25077:7;25117:66;25110:5;25106:78;25095:89;;25041:149;;;:::o;25196:126::-;25233:7;25273:42;25266:5;25262:54;25251:65;;25196:126;;;:::o;25328:77::-;25365:7;25394:5;25383:16;;25328:77;;;:::o;25411:86::-;25446:7;25486:4;25479:5;25475:16;25464:27;;25411:86;;;:::o;25503:154::-;25587:6;25582:3;25577;25564:30;25649:1;25640:6;25635:3;25631:16;25624:27;25503:154;;;:::o;25663:307::-;25731:1;25741:113;25755:6;25752:1;25749:13;25741:113;;;25840:1;25835:3;25831:11;25825:18;25821:1;25816:3;25812:11;25805:39;25777:2;25774:1;25770:10;25765:15;;25741:113;;;25872:6;25869:1;25866:13;25863:101;;;25952:1;25943:6;25938:3;25934:16;25927:27;25863:101;25712:258;25663:307;;;:::o;25976:320::-;26020:6;26057:1;26051:4;26047:12;26037:22;;26104:1;26098:4;26094:12;26125:18;26115:81;;26181:4;26173:6;26169:17;26159:27;;26115:81;26243:2;26235:6;26232:14;26212:18;26209:38;26206:84;;;26262:18;;:::i;:::-;26206:84;26027:269;25976:320;;;:::o;26302:281::-;26385:27;26407:4;26385:27;:::i;:::-;26377:6;26373:40;26515:6;26503:10;26500:22;26479:18;26467:10;26464:34;26461:62;26458:88;;;26526:18;;:::i;:::-;26458:88;26566:10;26562:2;26555:22;26345:238;26302:281;;:::o;26589:180::-;26637:77;26634:1;26627:88;26734:4;26731:1;26724:15;26758:4;26755:1;26748:15;26775:180;26823:77;26820:1;26813:88;26920:4;26917:1;26910:15;26944:4;26941:1;26934:15;26961:180;27009:77;27006:1;26999:88;27106:4;27103:1;27096:15;27130:4;27127:1;27120:15;27147:117;27256:1;27253;27246:12;27270:117;27379:1;27376;27369:12;27393:117;27502:1;27499;27492:12;27516:117;27625:1;27622;27615:12;27639:102;27680:6;27731:2;27727:7;27722:2;27715:5;27711:14;27707:28;27697:38;;27639:102;;;:::o;27747:222::-;27887:34;27883:1;27875:6;27871:14;27864:58;27956:5;27951:2;27943:6;27939:15;27932:30;27747:222;:::o;27975:221::-;28115:34;28111:1;28103:6;28099:14;28092:58;28184:4;28179:2;28171:6;28167:15;28160:29;27975:221;:::o;28202:225::-;28342:34;28338:1;28330:6;28326:14;28319:58;28411:8;28406:2;28398:6;28394:15;28387:33;28202:225;:::o;28433:221::-;28573:34;28569:1;28561:6;28557:14;28550:58;28642:4;28637:2;28629:6;28625:15;28618:29;28433:221;:::o;28660:224::-;28800:34;28796:1;28788:6;28784:14;28777:58;28869:7;28864:2;28856:6;28852:15;28845:32;28660:224;:::o;28890:225::-;29030:34;29026:1;29018:6;29014:14;29007:58;29099:8;29094:2;29086:6;29082:15;29075:33;28890:225;:::o;29121:::-;29261:34;29257:1;29249:6;29245:14;29238:58;29330:8;29325:2;29317:6;29313:15;29306:33;29121:225;:::o;29352:227::-;29492:34;29488:1;29480:6;29476:14;29469:58;29561:10;29556:2;29548:6;29544:15;29537:35;29352:227;:::o;29585:182::-;29725:34;29721:1;29713:6;29709:14;29702:58;29585:182;:::o;29773:223::-;29913:34;29909:1;29901:6;29897:14;29890:58;29982:6;29977:2;29969:6;29965:15;29958:31;29773:223;:::o;30002:220::-;30142:34;30138:1;30130:6;30126:14;30119:58;30211:3;30206:2;30198:6;30194:15;30187:28;30002:220;:::o;30228:224::-;30368:34;30364:1;30356:6;30352:14;30345:58;30437:7;30432:2;30424:6;30420:15;30413:32;30228:224;:::o;30458:223::-;30598:34;30594:1;30586:6;30582:14;30575:58;30667:6;30662:2;30654:6;30650:15;30643:31;30458:223;:::o;30687:221::-;30827:34;30823:1;30815:6;30811:14;30804:58;30896:4;30891:2;30883:6;30879:15;30872:29;30687:221;:::o;30914:224::-;31054:34;31050:1;31042:6;31038:14;31031:58;31123:7;31118:2;31110:6;31106:15;31099:32;30914:224;:::o;31144:181::-;31284:33;31280:1;31272:6;31268:14;31261:57;31144:181;:::o;31331:122::-;31404:24;31422:5;31404:24;:::i;:::-;31397:5;31394:35;31384:63;;31443:1;31440;31433:12;31384:63;31331:122;:::o;31459:116::-;31529:21;31544:5;31529:21;:::i;:::-;31522:5;31519:32;31509:60;;31565:1;31562;31555:12;31509:60;31459:116;:::o;31581:120::-;31653:23;31670:5;31653:23;:::i;:::-;31646:5;31643:34;31633:62;;31691:1;31688;31681:12;31633:62;31581:120;:::o;31707:122::-;31780:24;31798:5;31780:24;:::i;:::-;31773:5;31770:35;31760:63;;31819:1;31816;31809:12;31760:63;31707:122;:::o
Swarm Source
ipfs://bd87f91f10c33c0ebacc051c22d568ae52bb8cfabdae1ef8767d4d69a60c6eb4
Loading...
Loading
Loading...
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.
[ 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.