Source Code
Latest 25 from a total of 53 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Buy Token MSM | 19129878 | 755 days ago | IN | 0 ETH | 0.00429478 | ||||
| Buy Token MSM | 19120970 | 756 days ago | IN | 0 ETH | 0.00545792 | ||||
| Buy Token MSM | 19099720 | 759 days ago | IN | 0.03 ETH | 0.00198582 | ||||
| Buy Token MSM | 19066809 | 764 days ago | IN | 0.015 ETH | 0.00107469 | ||||
| Buy Token MSM | 19066785 | 764 days ago | IN | 0.048 ETH | 0.00150016 | ||||
| Buy Token MSM | 19020312 | 770 days ago | IN | 0.08 ETH | 0.00590895 | ||||
| Buy Token MSM | 19014388 | 771 days ago | IN | 0.021 ETH | 0.00213332 | ||||
| Buy Token MSM | 18870908 | 791 days ago | IN | 0.037 ETH | 0.00434443 | ||||
| Buy Token MSM | 18847588 | 794 days ago | IN | 0.08745 ETH | 0.00134554 | ||||
| Buy Token MSM | 18835998 | 796 days ago | IN | 0.05 ETH | 0.00390582 | ||||
| Buy Token MSM | 18835995 | 796 days ago | IN | 0.05 ETH | 0.00730292 | ||||
| Buy Token MSM | 18832289 | 797 days ago | IN | 0.027 ETH | 0.00251421 | ||||
| Buy Token MSM | 18815859 | 799 days ago | IN | 0.07 ETH | 0.00898935 | ||||
| Buy Token MSM | 18813763 | 799 days ago | IN | 0.464 ETH | 0.01621321 | ||||
| Buy Token MSM | 18803173 | 801 days ago | IN | 0.09023 ETH | 0.00204821 | ||||
| Buy Token MSM | 18760139 | 807 days ago | IN | 0.0446 ETH | 0.00602513 | ||||
| Buy Token MSM | 18744534 | 809 days ago | IN | 0.01 ETH | 0.00315752 | ||||
| Buy Token MSM | 18735691 | 810 days ago | IN | 0.007 ETH | 0.0051627 | ||||
| Buy Token MSM | 18735690 | 810 days ago | IN | 0.004 ETH | 0.00511503 | ||||
| Buy Token MSM | 18735689 | 810 days ago | IN | 0.006 ETH | 0.00966772 | ||||
| Buy Token MSM | 18717403 | 813 days ago | IN | 0.032 ETH | 0.00336635 | ||||
| Add Payable Toke... | 18653609 | 822 days ago | IN | 0 ETH | 0.00057958 | ||||
| Buy Token MSM | 18642994 | 823 days ago | IN | 0.02 ETH | 0.0029378 | ||||
| Buy Token MSM | 18624925 | 826 days ago | IN | 0.024386 ETH | 0.00191599 | ||||
| Buy Token MSM | 18621235 | 826 days ago | IN | 0.002944 ETH | 0.00739455 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 19099720 | 759 days ago | 0.0015 ETH | ||||
| Transfer | 19099720 | 759 days ago | 0.0285 ETH | ||||
| Transfer | 19066809 | 764 days ago | 0.00075 ETH | ||||
| Transfer | 19066809 | 764 days ago | 0.01425 ETH | ||||
| Transfer | 19066785 | 764 days ago | 0.0024 ETH | ||||
| Transfer | 19066785 | 764 days ago | 0.0456 ETH | ||||
| Transfer | 19020312 | 770 days ago | 0.004 ETH | ||||
| Transfer | 19020312 | 770 days ago | 0.076 ETH | ||||
| Transfer | 19014388 | 771 days ago | 0.00105 ETH | ||||
| Transfer | 19014388 | 771 days ago | 0.01995 ETH | ||||
| Transfer | 18870908 | 791 days ago | 0.00185 ETH | ||||
| Transfer | 18870908 | 791 days ago | 0.03515 ETH | ||||
| Transfer | 18847588 | 794 days ago | 0.0043725 ETH | ||||
| Transfer | 18847588 | 794 days ago | 0.0830775 ETH | ||||
| Transfer | 18835998 | 796 days ago | 0.0025 ETH | ||||
| Transfer | 18835998 | 796 days ago | 0.0475 ETH | ||||
| Transfer | 18835995 | 796 days ago | 0.0025 ETH | ||||
| Transfer | 18835995 | 796 days ago | 0.0475 ETH | ||||
| Transfer | 18832289 | 797 days ago | 0.00135 ETH | ||||
| Transfer | 18832289 | 797 days ago | 0.02565 ETH | ||||
| Transfer | 18815859 | 799 days ago | 0.0035 ETH | ||||
| Transfer | 18815859 | 799 days ago | 0.0665 ETH | ||||
| Transfer | 18813763 | 799 days ago | 0.0232 ETH | ||||
| Transfer | 18813763 | 799 days ago | 0.4408 ETH | ||||
| Transfer | 18803173 | 801 days ago | 0.0045115 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Presale
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2023-10-12
*/
pragma solidity ^0.8.0;
// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.
/**
* @dev Wrappers over Solidity's arithmetic operations.
*
* NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
* now has built in overflow checking.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
}
/**
* @dev Returns the substraction of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b > a) return (false, 0);
return (true, a - b);
}
}
/**
* @dev Returns the multiplication of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
}
/**
* @dev Returns the division of two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a / b);
}
}
/**
* @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a % b);
}
}
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
*
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
return a + b;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return a - b;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
*
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
return a * b;
}
/**
* @dev Returns the integer division of two unsigned integers, reverting on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator.
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return a / b;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return a % b;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {trySub}.
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b <= a, errorMessage);
return a - b;
}
}
/**
* @dev Returns the integer division of two unsigned integers, reverting with custom message on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a / b;
}
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting with custom message when dividing by zero.
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {tryMod}.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a % b;
}
}
}
// File @openzeppelin/contracts/token/ERC20/IERC20.sol@v4.4.2
// OpenZeppelin Contracts v4.4.1 (token/ERC20/IERC20.sol)
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/utils/Context.sol@v4.4.2
// OpenZeppelin Contracts v4.4.1 (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) {
return msg.data;
}
}
// File @openzeppelin/contracts/access/Ownable.sol@v4.4.2
// OpenZeppelin Contracts v4.4.1 (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 private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_transferOwnership(_msgSender());
}
/**
* @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 {
_transferOwnership(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");
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
// File contracts/OwnerWithdrawable.sol
pragma solidity ^0.8.0;
contract OwnerWithdrawable is Ownable {
using SafeMath for uint256;
using SafeERC20 for IERC20;
receive() external payable {}
fallback() external payable {}
function withdraw(address token, uint256 amt) public onlyOwner {
IERC20(token).safeTransfer(msg.sender, amt);
}
function withdrawAll(address token) public onlyOwner {
uint256 amt = IERC20(token).balanceOf(address(this));
withdraw(token, amt);
}
function withdrawCurrency(uint256 amt) public onlyOwner {
payable(msg.sender).transfer(amt);
}
// function deposit(address token, uint256 amt) public onlyOwner {
// uint256 allowance = IERC20(token).allowance(msg.sender, address(this));
// require(allowance >= amt, "Check the token allowance");
// IERC20(token).transferFrom(owner(), address(this), amt);
// }
}
// File @openzeppelin/contracts/utils/Address.sol@v4.4.2
// OpenZeppelin Contracts v4.4.1 (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;
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");
(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");
(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");
(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");
(bool success, bytes memory returndata) = target.delegatecall(data);
return verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
* revert reason using the provided one.
*
* _Available since v4.3._
*/
function verifyCallResult(
bool success,
bytes memory returndata,
string memory errorMessage
) internal 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
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
// File @openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol@v4.4.2
// OpenZeppelin Contracts v4.4.1 (token/ERC20/utils/SafeERC20.sol)
pragma solidity ^0.8.0;
/**
* @title SafeERC20
* @dev Wrappers around ERC20 operations that throw on failure (when the token
* contract returns false). Tokens that return no value (and instead revert or
* throw on failure) are also supported, non-reverting calls are assumed to be
* successful.
* To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,
* which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
*/
library SafeERC20 {
using Address for address;
function safeTransfer(
IERC20 token,
address to,
uint256 value
) internal {
_callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
}
function safeTransferFrom(
IERC20 token,
address from,
address to,
uint256 value
) internal {
_callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
}
/**
* @dev Deprecated. This function has issues similar to the ones found in
* {IERC20-approve}, and its usage is discouraged.
*
* Whenever possible, use {safeIncreaseAllowance} and
* {safeDecreaseAllowance} instead.
*/
function safeApprove(
IERC20 token,
address spender,
uint256 value
) internal {
// safeApprove should only be called when setting an initial allowance,
// or when resetting it to zero. To increase and decrease it, use
// 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
require(
(value == 0) || (token.allowance(address(this), spender) == 0),
"SafeERC20: approve from non-zero to non-zero allowance"
);
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
}
function safeIncreaseAllowance(
IERC20 token,
address spender,
uint256 value
) internal {
uint256 newAllowance = token.allowance(address(this), spender) + value;
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
function safeDecreaseAllowance(
IERC20 token,
address spender,
uint256 value
) internal {
unchecked {
uint256 oldAllowance = token.allowance(address(this), spender);
require(oldAllowance >= value, "SafeERC20: decreased allowance below zero");
uint256 newAllowance = oldAllowance - value;
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
}
/**
* @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
* on the return value: the return value is optional (but if data is returned, it must not be false).
* @param token The token targeted by the call.
* @param data The call data (encoded using abi.encode or one of its variants).
*/
function _callOptionalReturn(IERC20 token, bytes memory data) private {
// We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
// we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that
// the target address contains contract code and also asserts for success in the low-level call.
bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
if (returndata.length > 0) {
// Return data is optional
require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
}
}
}
// File @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol@v4.4.2
// OpenZeppelin Contracts v4.4.1 (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);
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract Presale is OwnerWithdrawable {
using SafeMath for uint256;
using SafeERC20 for IERC20;
using SafeERC20 for IERC20Metadata;
address private teamAddress;
uint256 public rate;
address public saleToken;
uint public saleTokenDec;
uint256 public totalTokensforSale;
uint256 public minBuyLimit;
mapping(address => bool) public payableTokens;
mapping(address => uint256) public tokenPrices;
bool public saleStatus;
address[] public buyers;
mapping(address => BuyerDetails) public buyersDetails;
uint256 public totalBuyers;
uint256 public totalTokensSold;
struct BuyerDetails {
uint amount;
bool exists;
}
struct BuyerAmount {
uint amount;
address buyer;
}
constructor(address _teamAddress) {
saleStatus = false;
teamAddress = _teamAddress;
}
modifier saleEnabled() {
require(saleStatus == true, "Presale: is not enabled");
_;
}
modifier saleStoped() {
require(saleStatus == false, "Presale: is not stopped");
_;
}
function setSaleToken(
uint256 _decimals,
uint256 _totalTokensforSale,
uint256 _rate,
bool _saleStatus
) external onlyOwner {
require(_rate != 0);
rate = _rate;
saleStatus = _saleStatus;
saleTokenDec = _decimals;
totalTokensforSale = _totalTokensforSale;
}
function stopSale() external onlyOwner saleEnabled {
saleStatus = false;
}
function resumeSale() external onlyOwner saleStoped {
saleStatus = true;
}
function addPayableTokens(
address[] memory _tokens,
uint256[] memory _prices
) external onlyOwner {
require(
_tokens.length == _prices.length,
"Presale: tokens & prices arrays length mismatch"
);
for (uint256 i = 0; i < _tokens.length; i++) {
require(_prices[i] != 0);
payableTokens[_tokens[i]] = true;
tokenPrices[_tokens[i]] = _prices[i];
}
}
function payableTokenStatus(
address _token,
bool _status
) external onlyOwner {
require(payableTokens[_token] != _status);
payableTokens[_token] = _status;
}
function updateTokenRate(
address[] memory _tokens,
uint256[] memory _prices,
uint256 _rate
) external onlyOwner {
require(
_tokens.length == _prices.length,
"Presale: tokens & prices arrays length mismatch"
);
if (_rate != 0) {
rate = _rate;
}
for (uint256 i = 0; i < _tokens.length; i += 1) {
require(payableTokens[_tokens[i]] == true);
require(_prices[i] != 0);
tokenPrices[_tokens[i]] = _prices[i];
}
}
function getTokenAmount(
address token,
uint256 amount
) public view returns (uint256) {
uint256 amtOut;
if (token != address(0)) {
require(payableTokens[token] == true, "Presale: Token not allowed");
uint256 price = tokenPrices[token];
amtOut = amount.mul(10 ** saleTokenDec).div(price);
} else {
amtOut = amount.mul(10 ** saleTokenDec).div(rate);
}
return amtOut;
}
function transferETH() private {
uint256 teamAmount = msg.value.mul(95).div(100);
payable(teamAddress).transfer(teamAmount);
payable(owner()).transfer(msg.value.sub(teamAmount));
}
function transferToken(address _token, uint256 _amount) private {
uint256 teamAmount = _amount.mul(95).div(100);
IERC20(_token).safeTransferFrom(msg.sender, teamAddress, teamAmount);
IERC20(_token).safeTransferFrom(
msg.sender,
owner(),
_amount.sub(teamAmount)
);
}
function buyTokenMSM(
address _token,
uint256 _amount
) external payable saleEnabled {
uint256 saleTokenAmt = _token != address(0)
? getTokenAmount(_token, _amount)
: getTokenAmount(address(0), msg.value);
require(saleTokenAmt != 0, "Presale: Amount is 0");
require(
(totalTokensSold + saleTokenAmt) < totalTokensforSale,
"Presale: Not enough tokens to be sale"
);
require(saleTokenAmt >= minBuyLimit, "Presale: Min buy limit not reached");
if (_token != address(0)) {
transferToken(_token, _amount);
} else {
transferETH();
}
totalTokensSold += saleTokenAmt;
if (!buyersDetails[msg.sender].exists) {
buyers.push(msg.sender);
buyersDetails[msg.sender].exists = true;
totalBuyers += 1;
}
buyersDetails[msg.sender].amount += saleTokenAmt;
}
function buyersAmountList(
uint _from,
uint _to
) external view returns (BuyerAmount[] memory) {
require(_from < _to, "Presale: _from should be less than _to");
uint to = _to > totalBuyers ? totalBuyers : _to;
uint from = _from > totalBuyers ? totalBuyers : _from;
BuyerAmount[] memory buyersAmt = new BuyerAmount[](to - from);
for (uint i = from; i < to; i += 1) {
buyersAmt[i].amount = buyersDetails[buyers[i]].amount;
buyersAmt[i].buyer = buyers[i];
}
return buyersAmt;
}
function setMinBuyLimit(uint _minBuyLimit) external onlyOwner {
minBuyLimit = _minBuyLimit;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_teamAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address[]","name":"_tokens","type":"address[]"},{"internalType":"uint256[]","name":"_prices","type":"uint256[]"}],"name":"addPayableTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"buyTokenMSM","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"buyers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_from","type":"uint256"},{"internalType":"uint256","name":"_to","type":"uint256"}],"name":"buyersAmountList","outputs":[{"components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"buyer","type":"address"}],"internalType":"struct Presale.BuyerAmount[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"buyersDetails","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"exists","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getTokenAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"payableTokenStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"payableTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resumeSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"saleToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"saleTokenDec","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minBuyLimit","type":"uint256"}],"name":"setMinBuyLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_decimals","type":"uint256"},{"internalType":"uint256","name":"_totalTokensforSale","type":"uint256"},{"internalType":"uint256","name":"_rate","type":"uint256"},{"internalType":"bool","name":"_saleStatus","type":"bool"}],"name":"setSaleToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokenPrices","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuyers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTokensSold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTokensforSale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_tokens","type":"address[]"},{"internalType":"uint256[]","name":"_prices","type":"uint256[]"},{"internalType":"uint256","name":"_rate","type":"uint256"}],"name":"updateTokenRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"withdrawAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"withdrawCurrency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60806040523480156200001157600080fd5b50604051620037f1380380620037f183398181016040528101906200003791906200019d565b620000576200004b620000ba60201b60201c565b620000c260201b60201c565b6000600960006101000a81548160ff02191690831515021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000217565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000815190506200019781620001fd565b92915050565b600060208284031215620001b057600080fd5b6000620001c08482850162000186565b91505092915050565b6000620001d682620001dd565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6200020881620001c9565b81146200021457600080fd5b50565b6135ca80620002276000396000f3fe6080604052600436106101bb5760003560e01c80638da5cb5b116100ec578063e985e3671161008a578063f3fef3a311610064578063f3fef3a3146105cd578063f4739ee3146105f6578063f9020e3314610634578063fa09e6301461065f576101c2565b8063e985e3671461053c578063f2aa821814610567578063f2fde38b146105a4576101c2565b8063b3319c7c116100c6578063b3319c7c146104a1578063b81df742146104bd578063c76a0f11146104e8578063e36b0b3714610525576101c2565b80638da5cb5b1461042257806399b770321461044d578063ace1741c14610476576101c2565b80633c00a36c116101595780636bcedf9c116101335780636bcedf9c1461037a578063715018a6146103a557806380655eef146103bc578063807ea425146103f9576101c2565b80633c00a36c146102fd5780635413c1c81461032657806363b201171461034f576101c2565b80632c4e722e116101955780632c4e722e146102675780633115329e1461029257806333e364cb146102bb5780633abd0136146102d2576101c2565b8063115ece4c146101c4578063204120bc1461020157806329d429a81461023e576101c2565b366101c257005b005b3480156101d057600080fd5b506101eb60048036038101906101e691906125ac565b610688565b6040516101f89190613022565b60405180910390f35b34801561020d57600080fd5b5061022860048036038101906102239190612547565b610813565b6040516102359190613022565b60405180910390f35b34801561024a57600080fd5b5061026560048036038101906102609190612570565b61082b565b005b34801561027357600080fd5b5061027c61095f565b6040516102899190613022565b60405180910390f35b34801561029e57600080fd5b506102b960048036038101906102b49190612654565b610965565b005b3480156102c757600080fd5b506102d0610c0a565b005b3480156102de57600080fd5b506102e7610cf9565b6040516102f49190613022565b60405180910390f35b34801561030957600080fd5b50610324600480360381019061031f91906126fc565b610cff565b005b34801561033257600080fd5b5061034d600480360381019061034891906125e8565b610dc5565b005b34801561035b57600080fd5b50610364611053565b6040516103719190613022565b60405180910390f35b34801561038657600080fd5b5061038f611059565b60405161039c9190613022565b60405180910390f35b3480156103b157600080fd5b506103ba61105f565b005b3480156103c857600080fd5b506103e360048036038101906103de9190612547565b6110e7565b6040516103f09190612e45565b60405180910390f35b34801561040557600080fd5b50610420600480360381019061041b919061278a565b611107565b005b34801561042e57600080fd5b506104376111c6565b6040516104449190612da8565b60405180910390f35b34801561045957600080fd5b50610474600480360381019061046f91906126fc565b6111ef565b005b34801561048257600080fd5b5061048b611275565b6040516104989190613022565b60405180910390f35b6104bb60048036038101906104b691906125ac565b61127b565b005b3480156104c957600080fd5b506104d26115ee565b6040516104df9190613022565b60405180910390f35b3480156104f457600080fd5b5061050f600480360381019061050a919061274e565b6115f4565b60405161051c9190612e23565b60405180910390f35b34801561053157600080fd5b5061053a6118ea565b005b34801561054857600080fd5b506105516119d9565b60405161055e9190612da8565b60405180910390f35b34801561057357600080fd5b5061058e600480360381019061058991906126fc565b6119ff565b60405161059b9190612da8565b60405180910390f35b3480156105b057600080fd5b506105cb60048036038101906105c69190612547565b611a3e565b005b3480156105d957600080fd5b506105f460048036038101906105ef91906125ac565b611b36565b005b34801561060257600080fd5b5061061d60048036038101906106189190612547565b611be1565b60405161062b92919061303d565b60405180910390f35b34801561064057600080fd5b50610649611c12565b6040516106569190612e45565b60405180910390f35b34801561066b57600080fd5b5061068660048036038101906106819190612547565b611c25565b005b600080600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146107d15760011515600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610752576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074990612ea2565b60405180910390fd5b6000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506107c9816107bb600454600a6107ac9190613234565b87611d3c90919063ffffffff16565b611d5290919063ffffffff16565b915050610809565b6108066002546107f8600454600a6107e99190613234565b86611d3c90919063ffffffff16565b611d5290919063ffffffff16565b90505b8091505092915050565b60086020528060005260406000206000915090505481565b610833611d68565b73ffffffffffffffffffffffffffffffffffffffff166108516111c6565b73ffffffffffffffffffffffffffffffffffffffff16146108a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089e90612f82565b60405180910390fd5b801515600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561090457600080fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60025481565b61096d611d68565b73ffffffffffffffffffffffffffffffffffffffff1661098b6111c6565b73ffffffffffffffffffffffffffffffffffffffff16146109e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d890612f82565b60405180910390fd5b8151835114610a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1c90612f22565b60405180910390fd5b60008114610a3557806002819055505b60005b8351811015610c04576001151560076000868481518110610a82577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610ade57600080fd5b6000838281518110610b19577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101511415610b2c57600080fd5b828181518110610b65577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015160086000868481518110610baa577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600181610bfd919061315a565b9050610a38565b50505050565b610c12611d68565b73ffffffffffffffffffffffffffffffffffffffff16610c306111c6565b73ffffffffffffffffffffffffffffffffffffffff1614610c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7d90612f82565b60405180910390fd5b60001515600960009054906101000a900460ff16151514610cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd390612ee2565b60405180910390fd5b6001600960006101000a81548160ff021916908315150217905550565b600c5481565b610d07611d68565b73ffffffffffffffffffffffffffffffffffffffff16610d256111c6565b73ffffffffffffffffffffffffffffffffffffffff1614610d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7290612f82565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610dc1573d6000803e3d6000fd5b5050565b610dcd611d68565b73ffffffffffffffffffffffffffffffffffffffff16610deb6111c6565b73ffffffffffffffffffffffffffffffffffffffff1614610e41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3890612f82565b60405180910390fd5b8051825114610e85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7c90612f22565b60405180910390fd5b60005b825181101561104e576000828281518110610ecc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101511415610edf57600080fd5b600160076000858481518110610f1e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550818181518110610fb0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015160086000858481518110610ff5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080806110469061345b565b915050610e88565b505050565b600d5481565b60055481565b611067611d68565b73ffffffffffffffffffffffffffffffffffffffff166110856111c6565b73ffffffffffffffffffffffffffffffffffffffff16146110db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d290612f82565b60405180910390fd5b6110e56000611d70565b565b60076020528060005260406000206000915054906101000a900460ff1681565b61110f611d68565b73ffffffffffffffffffffffffffffffffffffffff1661112d6111c6565b73ffffffffffffffffffffffffffffffffffffffff1614611183576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117a90612f82565b60405180910390fd5b600082141561119157600080fd5b8160028190555080600960006101000a81548160ff021916908315150217905550836004819055508260058190555050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6111f7611d68565b73ffffffffffffffffffffffffffffffffffffffff166112156111c6565b73ffffffffffffffffffffffffffffffffffffffff161461126b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126290612f82565b60405180910390fd5b8060068190555050565b60045481565b60011515600960009054906101000a900460ff161515146112d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c890612fc2565b60405180910390fd5b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561131757611312600034610688565b611322565b6113218383610688565b5b90506000811415611368576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135f90612f42565b60405180910390fd5b60055481600d54611379919061315a565b106113b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b090612f62565b60405180910390fd5b6006548110156113fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f590613002565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146114415761143c8383611e34565b61144a565b611449611ef9565b5b80600d600082825461145c919061315a565b92505081905550600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff1661159057600a339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001600c6000828254611588919061315a565b925050819055505b80600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282546115e2919061315a565b92505081905550505050565b60065481565b6060818310611638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162f90612ec2565b60405180910390fd5b6000600c548311611649578261164d565b600c545b90506000600c5485116116605784611664565b600c545b90506000818361167491906133ac565b67ffffffffffffffff8111156116b3577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156116ec57816020015b6116d9612382565b8152602001906001900390816116d15790505b50905060008290505b838110156118dd57600b6000600a838154811061173b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001548282815181106117dd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516000018181525050600a8181548110611827577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682828151811061188b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001816118d6919061315a565b90506116f5565b5080935050505092915050565b6118f2611d68565b73ffffffffffffffffffffffffffffffffffffffff166119106111c6565b73ffffffffffffffffffffffffffffffffffffffff1614611966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195d90612f82565b60405180910390fd5b60011515600960009054906101000a900460ff161515146119bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b390612fc2565b60405180910390fd5b6000600960006101000a81548160ff021916908315150217905550565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a8181548110611a0f57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a46611d68565b73ffffffffffffffffffffffffffffffffffffffff16611a646111c6565b73ffffffffffffffffffffffffffffffffffffffff1614611aba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab190612f82565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2190612e82565b60405180910390fd5b611b3381611d70565b50565b611b3e611d68565b73ffffffffffffffffffffffffffffffffffffffff16611b5c6111c6565b73ffffffffffffffffffffffffffffffffffffffff1614611bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba990612f82565b60405180910390fd5b611bdd33828473ffffffffffffffffffffffffffffffffffffffff16611ff09092919063ffffffff16565b5050565b600b6020528060005260406000206000915090508060000154908060010160009054906101000a900460ff16905082565b600960009054906101000a900460ff1681565b611c2d611d68565b73ffffffffffffffffffffffffffffffffffffffff16611c4b6111c6565b73ffffffffffffffffffffffffffffffffffffffff1614611ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9890612f82565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611cdc9190612da8565b60206040518083038186803b158015611cf457600080fd5b505afa158015611d08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2c9190612725565b9050611d388282611b36565b5050565b60008183611d4a9190613352565b905092915050565b60008183611d6091906131b0565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000611e5d6064611e4f605f85611d3c90919063ffffffff16565b611d5290919063ffffffff16565b9050611eae33600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838673ffffffffffffffffffffffffffffffffffffffff16612076909392919063ffffffff16565b611ef433611eba6111c6565b611ecd84866120ff90919063ffffffff16565b8673ffffffffffffffffffffffffffffffffffffffff16612076909392919063ffffffff16565b505050565b6000611f226064611f14605f34611d3c90919063ffffffff16565b611d5290919063ffffffff16565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f8c573d6000803e3d6000fd5b50611f956111c6565b73ffffffffffffffffffffffffffffffffffffffff166108fc611fc183346120ff90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611fec573d6000803e3d6000fd5b5050565b6120718363a9059cbb60e01b848460405160240161200f929190612dfa565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612115565b505050565b6120f9846323b872dd60e01b85858560405160240161209793929190612dc3565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612115565b50505050565b6000818361210d91906133ac565b905092915050565b6000612177826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166121dc9092919063ffffffff16565b90506000815111156121d7578080602001905181019061219791906126d3565b6121d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cd90612fe2565b60405180910390fd5b5b505050565b60606121eb84846000856121f4565b90509392505050565b606082471015612239576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223090612f02565b60405180910390fd5b61224285612308565b612281576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227890612fa2565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516122aa9190612d91565b60006040518083038185875af1925050503d80600081146122e7576040519150601f19603f3d011682016040523d82523d6000602084013e6122ec565b606091505b50915091506122fc82828661231b565b92505050949350505050565b600080823b905060008111915050919050565b6060831561232b5782905061237b565b60008351111561233e5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123729190612e60565b60405180910390fd5b9392505050565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b60006123c56123c084613097565b613066565b905080838252602082019050828560208602820111156123e457600080fd5b60005b8581101561241457816123fa888261248a565b8452602084019350602083019250506001810190506123e7565b5050509392505050565b600061243161242c846130c3565b613066565b9050808382526020820190508285602086028201111561245057600080fd5b60005b858110156124805781612466888261251d565b845260208401935060208301925050600181019050612453565b5050509392505050565b6000813590506124998161354f565b92915050565b600082601f8301126124b057600080fd5b81356124c08482602086016123b2565b91505092915050565b600082601f8301126124da57600080fd5b81356124ea84826020860161241e565b91505092915050565b60008135905061250281613566565b92915050565b60008151905061251781613566565b92915050565b60008135905061252c8161357d565b92915050565b6000815190506125418161357d565b92915050565b60006020828403121561255957600080fd5b60006125678482850161248a565b91505092915050565b6000806040838503121561258357600080fd5b60006125918582860161248a565b92505060206125a2858286016124f3565b9150509250929050565b600080604083850312156125bf57600080fd5b60006125cd8582860161248a565b92505060206125de8582860161251d565b9150509250929050565b600080604083850312156125fb57600080fd5b600083013567ffffffffffffffff81111561261557600080fd5b6126218582860161249f565b925050602083013567ffffffffffffffff81111561263e57600080fd5b61264a858286016124c9565b9150509250929050565b60008060006060848603121561266957600080fd5b600084013567ffffffffffffffff81111561268357600080fd5b61268f8682870161249f565b935050602084013567ffffffffffffffff8111156126ac57600080fd5b6126b8868287016124c9565b92505060406126c98682870161251d565b9150509250925092565b6000602082840312156126e557600080fd5b60006126f384828501612508565b91505092915050565b60006020828403121561270e57600080fd5b600061271c8482850161251d565b91505092915050565b60006020828403121561273757600080fd5b600061274584828501612532565b91505092915050565b6000806040838503121561276157600080fd5b600061276f8582860161251d565b92505060206127808582860161251d565b9150509250929050565b600080600080608085870312156127a057600080fd5b60006127ae8782880161251d565b94505060206127bf8782880161251d565b93505060406127d08782880161251d565b92505060606127e1878288016124f3565b91505092959194509250565b60006127f98383612d44565b60408301905092915050565b61280e816133e0565b82525050565b61281d816133e0565b82525050565b600061282e826130ff565b612838818561312d565b9350612843836130ef565b8060005b8381101561287457815161285b88826127ed565b975061286683613120565b925050600181019050612847565b5085935050505092915050565b61288a816133f2565b82525050565b600061289b8261310a565b6128a5818561313e565b93506128b5818560208601613428565b80840191505092915050565b60006128cc82613115565b6128d68185613149565b93506128e6818560208601613428565b6128ef81613531565b840191505092915050565b6000612907602683613149565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061296d601a83613149565b91507f50726573616c653a20546f6b656e206e6f7420616c6c6f7765640000000000006000830152602082019050919050565b60006129ad602683613149565b91507f50726573616c653a205f66726f6d2073686f756c64206265206c65737320746860008301527f616e205f746f00000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612a13601783613149565b91507f50726573616c653a206973206e6f742073746f707065640000000000000000006000830152602082019050919050565b6000612a53602683613149565b91507f416464726573733a20696e73756666696369656e742062616c616e636520666f60008301527f722063616c6c00000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612ab9602f83613149565b91507f50726573616c653a20746f6b656e73202620707269636573206172726179732060008301527f6c656e677468206d69736d6174636800000000000000000000000000000000006020830152604082019050919050565b6000612b1f601483613149565b91507f50726573616c653a20416d6f756e7420697320300000000000000000000000006000830152602082019050919050565b6000612b5f602583613149565b91507f50726573616c653a204e6f7420656e6f75676820746f6b656e7320746f20626560008301527f2073616c650000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612bc5602083613149565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612c05601d83613149565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b6000612c45601783613149565b91507f50726573616c653a206973206e6f7420656e61626c65640000000000000000006000830152602082019050919050565b6000612c85602a83613149565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b6000612ceb602283613149565b91507f50726573616c653a204d696e20627579206c696d6974206e6f7420726561636860008301527f65640000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b604082016000820151612d5a6000850182612d73565b506020820151612d6d6020850182612805565b50505050565b612d7c8161341e565b82525050565b612d8b8161341e565b82525050565b6000612d9d8284612890565b915081905092915050565b6000602082019050612dbd6000830184612814565b92915050565b6000606082019050612dd86000830186612814565b612de56020830185612814565b612df26040830184612d82565b949350505050565b6000604082019050612e0f6000830185612814565b612e1c6020830184612d82565b9392505050565b60006020820190508181036000830152612e3d8184612823565b905092915050565b6000602082019050612e5a6000830184612881565b92915050565b60006020820190508181036000830152612e7a81846128c1565b905092915050565b60006020820190508181036000830152612e9b816128fa565b9050919050565b60006020820190508181036000830152612ebb81612960565b9050919050565b60006020820190508181036000830152612edb816129a0565b9050919050565b60006020820190508181036000830152612efb81612a06565b9050919050565b60006020820190508181036000830152612f1b81612a46565b9050919050565b60006020820190508181036000830152612f3b81612aac565b9050919050565b60006020820190508181036000830152612f5b81612b12565b9050919050565b60006020820190508181036000830152612f7b81612b52565b9050919050565b60006020820190508181036000830152612f9b81612bb8565b9050919050565b60006020820190508181036000830152612fbb81612bf8565b9050919050565b60006020820190508181036000830152612fdb81612c38565b9050919050565b60006020820190508181036000830152612ffb81612c78565b9050919050565b6000602082019050818103600083015261301b81612cde565b9050919050565b60006020820190506130376000830184612d82565b92915050565b60006040820190506130526000830185612d82565b61305f6020830184612881565b9392505050565b6000604051905081810181811067ffffffffffffffff8211171561308d5761308c613502565b5b8060405250919050565b600067ffffffffffffffff8211156130b2576130b1613502565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156130de576130dd613502565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006131658261341e565b91506131708361341e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156131a5576131a46134a4565b5b828201905092915050565b60006131bb8261341e565b91506131c68361341e565b9250826131d6576131d56134d3565b5b828204905092915050565b6000808291508390505b600185111561322b57808604811115613207576132066134a4565b5b60018516156132165780820291505b808102905061322485613542565b94506131eb565b94509492505050565b600061323f8261341e565b915061324a8361341e565b92506132777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461327f565b905092915050565b60008261328f576001905061334b565b8161329d576000905061334b565b81600181146132b357600281146132bd576132ec565b600191505061334b565b60ff8411156132cf576132ce6134a4565b5b8360020a9150848211156132e6576132e56134a4565b5b5061334b565b5060208310610133831016604e8410600b84101617156133215782820a90508381111561331c5761331b6134a4565b5b61334b565b61332e84848460016131e1565b92509050818404811115613345576133446134a4565b5b81810290505b9392505050565b600061335d8261341e565b91506133688361341e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156133a1576133a06134a4565b5b828202905092915050565b60006133b78261341e565b91506133c28361341e565b9250828210156133d5576133d46134a4565b5b828203905092915050565b60006133eb826133fe565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101561344657808201518184015260208101905061342b565b83811115613455576000848401525b50505050565b60006134668261341e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613499576134986134a4565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b613558816133e0565b811461356357600080fd5b50565b61356f816133f2565b811461357a57600080fd5b50565b6135868161341e565b811461359157600080fd5b5056fea2646970667358221220a3734e393e38c0221527a97352ce6b34eacf995377bac1a51d62c5004e956ef864736f6c634300080000330000000000000000000000000a9e4b34790e79f5dde332d55bd1e84b94b5b02f
Deployed Bytecode
0x6080604052600436106101bb5760003560e01c80638da5cb5b116100ec578063e985e3671161008a578063f3fef3a311610064578063f3fef3a3146105cd578063f4739ee3146105f6578063f9020e3314610634578063fa09e6301461065f576101c2565b8063e985e3671461053c578063f2aa821814610567578063f2fde38b146105a4576101c2565b8063b3319c7c116100c6578063b3319c7c146104a1578063b81df742146104bd578063c76a0f11146104e8578063e36b0b3714610525576101c2565b80638da5cb5b1461042257806399b770321461044d578063ace1741c14610476576101c2565b80633c00a36c116101595780636bcedf9c116101335780636bcedf9c1461037a578063715018a6146103a557806380655eef146103bc578063807ea425146103f9576101c2565b80633c00a36c146102fd5780635413c1c81461032657806363b201171461034f576101c2565b80632c4e722e116101955780632c4e722e146102675780633115329e1461029257806333e364cb146102bb5780633abd0136146102d2576101c2565b8063115ece4c146101c4578063204120bc1461020157806329d429a81461023e576101c2565b366101c257005b005b3480156101d057600080fd5b506101eb60048036038101906101e691906125ac565b610688565b6040516101f89190613022565b60405180910390f35b34801561020d57600080fd5b5061022860048036038101906102239190612547565b610813565b6040516102359190613022565b60405180910390f35b34801561024a57600080fd5b5061026560048036038101906102609190612570565b61082b565b005b34801561027357600080fd5b5061027c61095f565b6040516102899190613022565b60405180910390f35b34801561029e57600080fd5b506102b960048036038101906102b49190612654565b610965565b005b3480156102c757600080fd5b506102d0610c0a565b005b3480156102de57600080fd5b506102e7610cf9565b6040516102f49190613022565b60405180910390f35b34801561030957600080fd5b50610324600480360381019061031f91906126fc565b610cff565b005b34801561033257600080fd5b5061034d600480360381019061034891906125e8565b610dc5565b005b34801561035b57600080fd5b50610364611053565b6040516103719190613022565b60405180910390f35b34801561038657600080fd5b5061038f611059565b60405161039c9190613022565b60405180910390f35b3480156103b157600080fd5b506103ba61105f565b005b3480156103c857600080fd5b506103e360048036038101906103de9190612547565b6110e7565b6040516103f09190612e45565b60405180910390f35b34801561040557600080fd5b50610420600480360381019061041b919061278a565b611107565b005b34801561042e57600080fd5b506104376111c6565b6040516104449190612da8565b60405180910390f35b34801561045957600080fd5b50610474600480360381019061046f91906126fc565b6111ef565b005b34801561048257600080fd5b5061048b611275565b6040516104989190613022565b60405180910390f35b6104bb60048036038101906104b691906125ac565b61127b565b005b3480156104c957600080fd5b506104d26115ee565b6040516104df9190613022565b60405180910390f35b3480156104f457600080fd5b5061050f600480360381019061050a919061274e565b6115f4565b60405161051c9190612e23565b60405180910390f35b34801561053157600080fd5b5061053a6118ea565b005b34801561054857600080fd5b506105516119d9565b60405161055e9190612da8565b60405180910390f35b34801561057357600080fd5b5061058e600480360381019061058991906126fc565b6119ff565b60405161059b9190612da8565b60405180910390f35b3480156105b057600080fd5b506105cb60048036038101906105c69190612547565b611a3e565b005b3480156105d957600080fd5b506105f460048036038101906105ef91906125ac565b611b36565b005b34801561060257600080fd5b5061061d60048036038101906106189190612547565b611be1565b60405161062b92919061303d565b60405180910390f35b34801561064057600080fd5b50610649611c12565b6040516106569190612e45565b60405180910390f35b34801561066b57600080fd5b5061068660048036038101906106819190612547565b611c25565b005b600080600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146107d15760011515600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610752576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074990612ea2565b60405180910390fd5b6000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506107c9816107bb600454600a6107ac9190613234565b87611d3c90919063ffffffff16565b611d5290919063ffffffff16565b915050610809565b6108066002546107f8600454600a6107e99190613234565b86611d3c90919063ffffffff16565b611d5290919063ffffffff16565b90505b8091505092915050565b60086020528060005260406000206000915090505481565b610833611d68565b73ffffffffffffffffffffffffffffffffffffffff166108516111c6565b73ffffffffffffffffffffffffffffffffffffffff16146108a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089e90612f82565b60405180910390fd5b801515600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561090457600080fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60025481565b61096d611d68565b73ffffffffffffffffffffffffffffffffffffffff1661098b6111c6565b73ffffffffffffffffffffffffffffffffffffffff16146109e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d890612f82565b60405180910390fd5b8151835114610a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1c90612f22565b60405180910390fd5b60008114610a3557806002819055505b60005b8351811015610c04576001151560076000868481518110610a82577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610ade57600080fd5b6000838281518110610b19577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101511415610b2c57600080fd5b828181518110610b65577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015160086000868481518110610baa577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600181610bfd919061315a565b9050610a38565b50505050565b610c12611d68565b73ffffffffffffffffffffffffffffffffffffffff16610c306111c6565b73ffffffffffffffffffffffffffffffffffffffff1614610c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7d90612f82565b60405180910390fd5b60001515600960009054906101000a900460ff16151514610cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd390612ee2565b60405180910390fd5b6001600960006101000a81548160ff021916908315150217905550565b600c5481565b610d07611d68565b73ffffffffffffffffffffffffffffffffffffffff16610d256111c6565b73ffffffffffffffffffffffffffffffffffffffff1614610d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7290612f82565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610dc1573d6000803e3d6000fd5b5050565b610dcd611d68565b73ffffffffffffffffffffffffffffffffffffffff16610deb6111c6565b73ffffffffffffffffffffffffffffffffffffffff1614610e41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3890612f82565b60405180910390fd5b8051825114610e85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7c90612f22565b60405180910390fd5b60005b825181101561104e576000828281518110610ecc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101511415610edf57600080fd5b600160076000858481518110610f1e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550818181518110610fb0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015160086000858481518110610ff5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080806110469061345b565b915050610e88565b505050565b600d5481565b60055481565b611067611d68565b73ffffffffffffffffffffffffffffffffffffffff166110856111c6565b73ffffffffffffffffffffffffffffffffffffffff16146110db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d290612f82565b60405180910390fd5b6110e56000611d70565b565b60076020528060005260406000206000915054906101000a900460ff1681565b61110f611d68565b73ffffffffffffffffffffffffffffffffffffffff1661112d6111c6565b73ffffffffffffffffffffffffffffffffffffffff1614611183576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117a90612f82565b60405180910390fd5b600082141561119157600080fd5b8160028190555080600960006101000a81548160ff021916908315150217905550836004819055508260058190555050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6111f7611d68565b73ffffffffffffffffffffffffffffffffffffffff166112156111c6565b73ffffffffffffffffffffffffffffffffffffffff161461126b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126290612f82565b60405180910390fd5b8060068190555050565b60045481565b60011515600960009054906101000a900460ff161515146112d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c890612fc2565b60405180910390fd5b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561131757611312600034610688565b611322565b6113218383610688565b5b90506000811415611368576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135f90612f42565b60405180910390fd5b60055481600d54611379919061315a565b106113b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b090612f62565b60405180910390fd5b6006548110156113fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f590613002565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146114415761143c8383611e34565b61144a565b611449611ef9565b5b80600d600082825461145c919061315a565b92505081905550600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff1661159057600a339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055506001600c6000828254611588919061315a565b925050819055505b80600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282546115e2919061315a565b92505081905550505050565b60065481565b6060818310611638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162f90612ec2565b60405180910390fd5b6000600c548311611649578261164d565b600c545b90506000600c5485116116605784611664565b600c545b90506000818361167491906133ac565b67ffffffffffffffff8111156116b3577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156116ec57816020015b6116d9612382565b8152602001906001900390816116d15790505b50905060008290505b838110156118dd57600b6000600a838154811061173b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001548282815181106117dd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516000018181525050600a8181548110611827577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682828151811061188b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516020019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001816118d6919061315a565b90506116f5565b5080935050505092915050565b6118f2611d68565b73ffffffffffffffffffffffffffffffffffffffff166119106111c6565b73ffffffffffffffffffffffffffffffffffffffff1614611966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195d90612f82565b60405180910390fd5b60011515600960009054906101000a900460ff161515146119bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b390612fc2565b60405180910390fd5b6000600960006101000a81548160ff021916908315150217905550565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a8181548110611a0f57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a46611d68565b73ffffffffffffffffffffffffffffffffffffffff16611a646111c6565b73ffffffffffffffffffffffffffffffffffffffff1614611aba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab190612f82565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2190612e82565b60405180910390fd5b611b3381611d70565b50565b611b3e611d68565b73ffffffffffffffffffffffffffffffffffffffff16611b5c6111c6565b73ffffffffffffffffffffffffffffffffffffffff1614611bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba990612f82565b60405180910390fd5b611bdd33828473ffffffffffffffffffffffffffffffffffffffff16611ff09092919063ffffffff16565b5050565b600b6020528060005260406000206000915090508060000154908060010160009054906101000a900460ff16905082565b600960009054906101000a900460ff1681565b611c2d611d68565b73ffffffffffffffffffffffffffffffffffffffff16611c4b6111c6565b73ffffffffffffffffffffffffffffffffffffffff1614611ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9890612f82565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611cdc9190612da8565b60206040518083038186803b158015611cf457600080fd5b505afa158015611d08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2c9190612725565b9050611d388282611b36565b5050565b60008183611d4a9190613352565b905092915050565b60008183611d6091906131b0565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000611e5d6064611e4f605f85611d3c90919063ffffffff16565b611d5290919063ffffffff16565b9050611eae33600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838673ffffffffffffffffffffffffffffffffffffffff16612076909392919063ffffffff16565b611ef433611eba6111c6565b611ecd84866120ff90919063ffffffff16565b8673ffffffffffffffffffffffffffffffffffffffff16612076909392919063ffffffff16565b505050565b6000611f226064611f14605f34611d3c90919063ffffffff16565b611d5290919063ffffffff16565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f8c573d6000803e3d6000fd5b50611f956111c6565b73ffffffffffffffffffffffffffffffffffffffff166108fc611fc183346120ff90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611fec573d6000803e3d6000fd5b5050565b6120718363a9059cbb60e01b848460405160240161200f929190612dfa565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612115565b505050565b6120f9846323b872dd60e01b85858560405160240161209793929190612dc3565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612115565b50505050565b6000818361210d91906133ac565b905092915050565b6000612177826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166121dc9092919063ffffffff16565b90506000815111156121d7578080602001905181019061219791906126d3565b6121d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cd90612fe2565b60405180910390fd5b5b505050565b60606121eb84846000856121f4565b90509392505050565b606082471015612239576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223090612f02565b60405180910390fd5b61224285612308565b612281576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227890612fa2565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516122aa9190612d91565b60006040518083038185875af1925050503d80600081146122e7576040519150601f19603f3d011682016040523d82523d6000602084013e6122ec565b606091505b50915091506122fc82828661231b565b92505050949350505050565b600080823b905060008111915050919050565b6060831561232b5782905061237b565b60008351111561233e5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123729190612e60565b60405180910390fd5b9392505050565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b60006123c56123c084613097565b613066565b905080838252602082019050828560208602820111156123e457600080fd5b60005b8581101561241457816123fa888261248a565b8452602084019350602083019250506001810190506123e7565b5050509392505050565b600061243161242c846130c3565b613066565b9050808382526020820190508285602086028201111561245057600080fd5b60005b858110156124805781612466888261251d565b845260208401935060208301925050600181019050612453565b5050509392505050565b6000813590506124998161354f565b92915050565b600082601f8301126124b057600080fd5b81356124c08482602086016123b2565b91505092915050565b600082601f8301126124da57600080fd5b81356124ea84826020860161241e565b91505092915050565b60008135905061250281613566565b92915050565b60008151905061251781613566565b92915050565b60008135905061252c8161357d565b92915050565b6000815190506125418161357d565b92915050565b60006020828403121561255957600080fd5b60006125678482850161248a565b91505092915050565b6000806040838503121561258357600080fd5b60006125918582860161248a565b92505060206125a2858286016124f3565b9150509250929050565b600080604083850312156125bf57600080fd5b60006125cd8582860161248a565b92505060206125de8582860161251d565b9150509250929050565b600080604083850312156125fb57600080fd5b600083013567ffffffffffffffff81111561261557600080fd5b6126218582860161249f565b925050602083013567ffffffffffffffff81111561263e57600080fd5b61264a858286016124c9565b9150509250929050565b60008060006060848603121561266957600080fd5b600084013567ffffffffffffffff81111561268357600080fd5b61268f8682870161249f565b935050602084013567ffffffffffffffff8111156126ac57600080fd5b6126b8868287016124c9565b92505060406126c98682870161251d565b9150509250925092565b6000602082840312156126e557600080fd5b60006126f384828501612508565b91505092915050565b60006020828403121561270e57600080fd5b600061271c8482850161251d565b91505092915050565b60006020828403121561273757600080fd5b600061274584828501612532565b91505092915050565b6000806040838503121561276157600080fd5b600061276f8582860161251d565b92505060206127808582860161251d565b9150509250929050565b600080600080608085870312156127a057600080fd5b60006127ae8782880161251d565b94505060206127bf8782880161251d565b93505060406127d08782880161251d565b92505060606127e1878288016124f3565b91505092959194509250565b60006127f98383612d44565b60408301905092915050565b61280e816133e0565b82525050565b61281d816133e0565b82525050565b600061282e826130ff565b612838818561312d565b9350612843836130ef565b8060005b8381101561287457815161285b88826127ed565b975061286683613120565b925050600181019050612847565b5085935050505092915050565b61288a816133f2565b82525050565b600061289b8261310a565b6128a5818561313e565b93506128b5818560208601613428565b80840191505092915050565b60006128cc82613115565b6128d68185613149565b93506128e6818560208601613428565b6128ef81613531565b840191505092915050565b6000612907602683613149565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061296d601a83613149565b91507f50726573616c653a20546f6b656e206e6f7420616c6c6f7765640000000000006000830152602082019050919050565b60006129ad602683613149565b91507f50726573616c653a205f66726f6d2073686f756c64206265206c65737320746860008301527f616e205f746f00000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612a13601783613149565b91507f50726573616c653a206973206e6f742073746f707065640000000000000000006000830152602082019050919050565b6000612a53602683613149565b91507f416464726573733a20696e73756666696369656e742062616c616e636520666f60008301527f722063616c6c00000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612ab9602f83613149565b91507f50726573616c653a20746f6b656e73202620707269636573206172726179732060008301527f6c656e677468206d69736d6174636800000000000000000000000000000000006020830152604082019050919050565b6000612b1f601483613149565b91507f50726573616c653a20416d6f756e7420697320300000000000000000000000006000830152602082019050919050565b6000612b5f602583613149565b91507f50726573616c653a204e6f7420656e6f75676820746f6b656e7320746f20626560008301527f2073616c650000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612bc5602083613149565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612c05601d83613149565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b6000612c45601783613149565b91507f50726573616c653a206973206e6f7420656e61626c65640000000000000000006000830152602082019050919050565b6000612c85602a83613149565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b6000612ceb602283613149565b91507f50726573616c653a204d696e20627579206c696d6974206e6f7420726561636860008301527f65640000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b604082016000820151612d5a6000850182612d73565b506020820151612d6d6020850182612805565b50505050565b612d7c8161341e565b82525050565b612d8b8161341e565b82525050565b6000612d9d8284612890565b915081905092915050565b6000602082019050612dbd6000830184612814565b92915050565b6000606082019050612dd86000830186612814565b612de56020830185612814565b612df26040830184612d82565b949350505050565b6000604082019050612e0f6000830185612814565b612e1c6020830184612d82565b9392505050565b60006020820190508181036000830152612e3d8184612823565b905092915050565b6000602082019050612e5a6000830184612881565b92915050565b60006020820190508181036000830152612e7a81846128c1565b905092915050565b60006020820190508181036000830152612e9b816128fa565b9050919050565b60006020820190508181036000830152612ebb81612960565b9050919050565b60006020820190508181036000830152612edb816129a0565b9050919050565b60006020820190508181036000830152612efb81612a06565b9050919050565b60006020820190508181036000830152612f1b81612a46565b9050919050565b60006020820190508181036000830152612f3b81612aac565b9050919050565b60006020820190508181036000830152612f5b81612b12565b9050919050565b60006020820190508181036000830152612f7b81612b52565b9050919050565b60006020820190508181036000830152612f9b81612bb8565b9050919050565b60006020820190508181036000830152612fbb81612bf8565b9050919050565b60006020820190508181036000830152612fdb81612c38565b9050919050565b60006020820190508181036000830152612ffb81612c78565b9050919050565b6000602082019050818103600083015261301b81612cde565b9050919050565b60006020820190506130376000830184612d82565b92915050565b60006040820190506130526000830185612d82565b61305f6020830184612881565b9392505050565b6000604051905081810181811067ffffffffffffffff8211171561308d5761308c613502565b5b8060405250919050565b600067ffffffffffffffff8211156130b2576130b1613502565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156130de576130dd613502565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006131658261341e565b91506131708361341e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156131a5576131a46134a4565b5b828201905092915050565b60006131bb8261341e565b91506131c68361341e565b9250826131d6576131d56134d3565b5b828204905092915050565b6000808291508390505b600185111561322b57808604811115613207576132066134a4565b5b60018516156132165780820291505b808102905061322485613542565b94506131eb565b94509492505050565b600061323f8261341e565b915061324a8361341e565b92506132777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461327f565b905092915050565b60008261328f576001905061334b565b8161329d576000905061334b565b81600181146132b357600281146132bd576132ec565b600191505061334b565b60ff8411156132cf576132ce6134a4565b5b8360020a9150848211156132e6576132e56134a4565b5b5061334b565b5060208310610133831016604e8410600b84101617156133215782820a90508381111561331c5761331b6134a4565b5b61334b565b61332e84848460016131e1565b92509050818404811115613345576133446134a4565b5b81810290505b9392505050565b600061335d8261341e565b91506133688361341e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156133a1576133a06134a4565b5b828202905092915050565b60006133b78261341e565b91506133c28361341e565b9250828210156133d5576133d46134a4565b5b828203905092915050565b60006133eb826133fe565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101561344657808201518184015260208101905061342b565b83811115613455576000848401525b50505050565b60006134668261341e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613499576134986134a4565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b613558816133e0565b811461356357600080fd5b50565b61356f816133f2565b811461357a57600080fd5b50565b6135868161341e565b811461359157600080fd5b5056fea2646970667358221220a3734e393e38c0221527a97352ce6b34eacf995377bac1a51d62c5004e956ef864736f6c63430008000033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000a9e4b34790e79f5dde332d55bd1e84b94b5b02f
-----Decoded View---------------
Arg [0] : _teamAddress (address): 0x0a9e4B34790e79F5DDe332d55Bd1e84B94b5B02f
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000000a9e4b34790e79f5dde332d55bd1e84b94b5b02f
Deployed Bytecode Sourcemap
27171:5820:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30181:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27590:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29380:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27361:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29594:579;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28800:88;;;;;;;;;;;;;:::i;:::-;;27768:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13798:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28896:476;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27801:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27455:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12421:103;;;;;;;;;;;;;:::i;:::-;;27536:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28349:347;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11770:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32881:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27422:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31258:1004;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27497:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32270:599;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28704:88;;;;;;;;;;;;;:::i;:::-;;27389:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27676:23;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12679:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13502:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27706:53;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;27645:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13635:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30181:492;30282:7;30302:14;30348:1;30331:19;;:5;:19;;;30327:315;;30399:4;30375:28;;:13;:20;30389:5;30375:20;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;30367:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30449:13;30465:11;:18;30477:5;30465:18;;;;;;;;;;;;;;;;30449:34;;30507:41;30542:5;30507:30;30524:12;;30518:2;:18;;;;:::i;:::-;30507:6;:10;;:30;;;;:::i;:::-;:34;;:41;;;;:::i;:::-;30498:50;;30327:315;;;;30590:40;30625:4;;30590:30;30607:12;;30601:2;:18;;;;:::i;:::-;30590:6;:10;;:30;;;;:::i;:::-;:34;;:40;;;;:::i;:::-;30581:49;;30327:315;30659:6;30652:13;;;30181:492;;;;:::o;27590:46::-;;;;;;;;;;;;;;;;;:::o;29380:206::-;12001:12;:10;:12::i;:::-;11990:23;;:7;:5;:7::i;:::-;:23;;;11982:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29526:7:::1;29501:32;;:13;:21;29515:6;29501:21;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;29493:41;;;::::0;::::1;;29571:7;29547:13;:21;29561:6;29547:21;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;29380:206:::0;;:::o;27361:19::-;;;;:::o;29594:579::-;12001:12;:10;:12::i;:::-;11990:23;;:7;:5;:7::i;:::-;:23;;;11982:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29790:7:::1;:14;29772:7;:14;:32;29750:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;29905:1;29896:5;:10;29892:55;;29930:5;29923:4;:12;;;;29892:55;29964:9;29959:207;29983:7;:14;29979:1;:18;29959:207;;;30059:4;30030:33;;:13;:25;30044:7;30052:1;30044:10;;;;;;;;;;;;;;;;;;;;;;30030:25;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;30022:42;;;::::0;::::1;;30101:1;30087:7;30095:1;30087:10;;;;;;;;;;;;;;;;;;;;;;:15;;30079:24;;;::::0;::::1;;30144:7;30152:1;30144:10;;;;;;;;;;;;;;;;;;;;;;30118:11;:23;30130:7;30138:1;30130:10;;;;;;;;;;;;;;;;;;;;;;30118:23;;;;;;;;;;;;;;;:36;;;;30004:1;29999:6;;;;;:::i;:::-;;;29959:207;;;;29594:579:::0;;;:::o;28800:88::-;12001:12;:10;:12::i;:::-;11990:23;;:7;:5;:7::i;:::-;:23;;;11982:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28288:5:::1;28274:19;;:10;;;;;;;;;;;:19;;;28266:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;28876:4:::2;28863:10;;:17;;;;;;;;;;;;;;;;;;28800:88::o:0;27768:26::-;;;;:::o;13798:108::-;12001:12;:10;:12::i;:::-;11990:23;;:7;:5;:7::i;:::-;:23;;;11982:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13873:10:::1;13865:28;;:33;13894:3;13865:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;13798:108:::0;:::o;28896:476::-;12001:12;:10;:12::i;:::-;11990:23;;:7;:5;:7::i;:::-;:23;;;11982:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29069:7:::1;:14;29051:7;:14;:32;29029:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;29176:9;29171:194;29195:7;:14;29191:1;:18;29171:194;;;29253:1;29239:7;29247:1;29239:10;;;;;;;;;;;;;;;;;;;;;;:15;;29231:24;;;::::0;::::1;;29298:4;29270:13;:25;29284:7;29292:1;29284:10;;;;;;;;;;;;;;;;;;;;;;29270:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;29343:7;29351:1;29343:10;;;;;;;;;;;;;;;;;;;;;;29317:11;:23;29329:7;29337:1;29329:10;;;;;;;;;;;;;;;;;;;;;;29317:23;;;;;;;;;;;;;;;:36;;;;29211:3;;;;;:::i;:::-;;;;29171:194;;;;28896:476:::0;;:::o;27801:30::-;;;;:::o;27455:33::-;;;;:::o;12421:103::-;12001:12;:10;:12::i;:::-;11990:23;;:7;:5;:7::i;:::-;:23;;;11982:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12486:30:::1;12513:1;12486:18;:30::i;:::-;12421:103::o:0;27536:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;28349:347::-;12001:12;:10;:12::i;:::-;11990:23;;:7;:5;:7::i;:::-;:23;;;11982:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28542:1:::1;28533:5;:10;;28525:19;;;::::0;::::1;;28562:5;28555:4;:12;;;;28591:11;28578:10;;:24;;;;;;;;;;;;;;;;;;28628:9;28613:12;:24;;;;28669:19;28648:18;:40;;;;28349:347:::0;;;;:::o;11770:87::-;11816:7;11843:6;;;;;;;;;;;11836:13;;11770:87;:::o;32881:107::-;12001:12;:10;:12::i;:::-;11990:23;;:7;:5;:7::i;:::-;:23;;;11982:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32968:12:::1;32954:11;:26;;;;32881:107:::0;:::o;27422:24::-;;;;:::o;31258:1004::-;28173:4;28159:18;;:10;;;;;;;;;;;:18;;;28151:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;31377:20:::1;31418:1:::0;31400:20:::1;;:6;:20;;;;:120;;31483:37;31506:1;31510:9;31483:14;:37::i;:::-;31400:120;;;31436:31;31451:6;31459:7;31436:14;:31::i;:::-;31400:120;31377:143;;31557:1;31541:12;:17;;31533:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;31651:18;;31635:12;31617:15;;:30;;;;:::i;:::-;31616:53;31594:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;31769:11;;31753:12;:27;;31745:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;31857:1;31839:20;;:6;:20;;;31835:129;;31876:30;31890:6;31898:7;31876:13;:30::i;:::-;31835:129;;;31939:13;:11;:13::i;:::-;31835:129;31995:12;31976:15;;:31;;;;;;;:::i;:::-;;;;;;;;32025:13;:25;32039:10;32025:25;;;;;;;;;;;;;;;:32;;;;;;;;;;;;32020:174;;32074:6;32086:10;32074:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32147:4;32112:13;:25;32126:10;32112:25;;;;;;;;;;;;;;;:32;;;:39;;;;;;;;;;;;;;;;;;32181:1;32166:11;;:16;;;;;;;:::i;:::-;;;;;;;;32020:174;32242:12;32206:13;:25;32220:10;32206:25;;;;;;;;;;;;;;;:32;;;:48;;;;;;;:::i;:::-;;;;;;;;28216:1;31258:1004:::0;;:::o;27497:26::-;;;;:::o;32270:599::-;32366:20;32415:3;32407:5;:11;32399:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;32474:7;32490:11;;32484:3;:17;:37;;32518:3;32484:37;;;32504:11;;32484:37;32474:47;;32532:9;32552:11;;32544:5;:19;:41;;32580:5;32544:41;;;32566:11;;32544:41;32532:53;;32598:30;32654:4;32649:2;:9;;;;:::i;:::-;32631:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;32598:61;;32677:6;32686:4;32677:13;;32672:161;32696:2;32692:1;:6;32672:161;;;32745:13;:24;32759:6;32766:1;32759:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32745:24;;;;;;;;;;;;;;;:31;;;32723:9;32733:1;32723:12;;;;;;;;;;;;;;;;;;;;;;:19;;:53;;;;;32812:6;32819:1;32812:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32791;32801:1;32791:12;;;;;;;;;;;;;;;;;;;;;;:18;;:30;;;;;;;;;;;32705:1;32700:6;;;;;:::i;:::-;;;32672:161;;;;32852:9;32845:16;;;;;32270:599;;;;:::o;28704:88::-;12001:12;:10;:12::i;:::-;11990:23;;:7;:5;:7::i;:::-;:23;;;11982:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28173:4:::1;28159:18;;:10;;;;;;;;;;;:18;;;28151:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;28779:5:::2;28766:10;;:18;;;;;;;;;;;;;;;;;;28704:88::o:0;27389:24::-;;;;;;;;;;;;;:::o;27676:23::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12679:201::-;12001:12;:10;:12::i;:::-;11990:23;;:7;:5;:7::i;:::-;:23;;;11982:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12788:1:::1;12768:22;;:8;:22;;;;12760:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;12844:28;12863:8;12844:18;:28::i;:::-;12679:201:::0;:::o;13502:125::-;12001:12;:10;:12::i;:::-;11990:23;;:7;:5;:7::i;:::-;:23;;;11982:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13576:43:::1;13603:10;13615:3;13583:5;13576:26;;;;:43;;;;;:::i;:::-;13502:125:::0;;:::o;27706:53::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;27645:22::-;;;;;;;;;;;;;:::o;13635:155::-;12001:12;:10;:12::i;:::-;11990:23;;:7;:5;:7::i;:::-;:23;;;11982:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13699:11:::1;13720:5;13713:23;;;13745:4;13713:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13699:52;;13762:20;13771:5;13778:3;13762:8;:20::i;:::-;12061:1;13635:155:::0;:::o;3476:98::-;3534:7;3565:1;3561;:5;;;;:::i;:::-;3554:12;;3476:98;;;;:::o;3875:::-;3933:7;3964:1;3960;:5;;;;:::i;:::-;3953:12;;3875:98;;;;:::o;10490:::-;10543:7;10570:10;10563:17;;10490:98;:::o;13040:191::-;13114:16;13133:6;;;;;;;;;;;13114:25;;13159:8;13150:6;;:17;;;;;;;;;;;;;;;;;;13214:8;13183:40;;13204:8;13183:40;;;;;;;;;;;;13040:191;;:::o;30903:347::-;30978:18;30999:24;31019:3;30999:15;31011:2;30999:7;:11;;:15;;;;:::i;:::-;:19;;:24;;;;:::i;:::-;30978:45;;31036:68;31068:10;31080:11;;;;;;;;;;;31093:10;31043:6;31036:31;;;;:68;;;;;;:::i;:::-;31115:127;31161:10;31186:7;:5;:7::i;:::-;31208:23;31220:10;31208:7;:11;;:23;;;;:::i;:::-;31122:6;31115:31;;;;:127;;;;;;:::i;:::-;30903:347;;;:::o;30681:214::-;30723:18;30744:26;30766:3;30744:17;30758:2;30744:9;:13;;:17;;;;:::i;:::-;:21;;:26;;;;:::i;:::-;30723:47;;30791:11;;;;;;;;;;;30783:29;;:41;30813:10;30783:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30843:7;:5;:7::i;:::-;30835:25;;:52;30861:25;30875:10;30861:9;:13;;:25;;;;:::i;:::-;30835:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30681:214;:::o;23074:211::-;23191:86;23211:5;23241:23;;;23266:2;23270:5;23218:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23191:19;:86::i;:::-;23074:211;;;:::o;23293:248::-;23437:96;23457:5;23487:27;;;23516:4;23522:2;23526:5;23464:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23437:19;:96::i;:::-;23293:248;;;;:::o;3119:98::-;3177:7;3208:1;3204;:5;;;;:::i;:::-;3197:12;;3119:98;;;;:::o;25647:716::-;26071:23;26097:69;26125:4;26097:69;;;;;;;;;;;;;;;;;26105:5;26097:27;;;;:69;;;;;:::i;:::-;26071:95;;26201:1;26181:10;:17;:21;26177:179;;;26278:10;26267:30;;;;;;;;;;;;:::i;:::-;26259:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;26177:179;25647:716;;;:::o;17848:229::-;17985:12;18017:52;18039:6;18047:4;18053:1;18056:12;18017:21;:52::i;:::-;18010:59;;17848:229;;;;;:::o;18968:510::-;19138:12;19196:5;19171:21;:30;;19163:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;19263:18;19274:6;19263:10;:18::i;:::-;19255:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;19329:12;19343:23;19370:6;:11;;19389:5;19396:4;19370:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19328:73;;;;19419:51;19436:7;19445:10;19457:12;19419:16;:51::i;:::-;19412:58;;;;18968:510;;;;;;:::o;15042:387::-;15102:4;15310:12;15377:7;15365:20;15357:28;;15420:1;15413:4;:8;15406:15;;;15042:387;;;:::o;21654:712::-;21804:12;21833:7;21829:530;;;21864:10;21857:17;;;;21829:530;21998:1;21978:10;:17;:21;21974:374;;;22176:10;22170:17;22237:15;22224:10;22220:2;22216:19;22209:44;22124:148;22319:12;22312:20;;;;;;;;;;;:::i;:::-;;;;;;;;21654:712;;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;:::o;24:622:1:-;;145:80;160:64;217:6;160:64;:::i;:::-;145:80;:::i;:::-;136:89;;245:5;273:6;266:5;259:21;299:4;292:5;288:16;281:23;;324:6;374:3;366:4;358:6;354:17;349:3;345:27;342:36;339:2;;;391:1;388;381:12;339:2;419:1;404:236;429:6;426:1;423:13;404:236;;;496:3;524:37;557:3;545:10;524:37;:::i;:::-;519:3;512:50;591:4;586:3;582:14;575:21;;625:4;620:3;616:14;609:21;;464:176;451:1;448;444:9;439:14;;404:236;;;408:14;126:520;;;;;;;:::o;669:622::-;;790:80;805:64;862:6;805:64;:::i;:::-;790:80;:::i;:::-;781:89;;890:5;918:6;911:5;904:21;944:4;937:5;933:16;926:23;;969:6;1019:3;1011:4;1003:6;999:17;994:3;990:27;987:36;984:2;;;1036:1;1033;1026:12;984:2;1064:1;1049:236;1074:6;1071:1;1068:13;1049:236;;;1141:3;1169:37;1202:3;1190:10;1169:37;:::i;:::-;1164:3;1157:50;1236:4;1231:3;1227:14;1220:21;;1270:4;1265:3;1261:14;1254:21;;1109:176;1096:1;1093;1089:9;1084:14;;1049:236;;;1053:14;771:520;;;;;;;:::o;1297:139::-;;1381:6;1368:20;1359:29;;1397:33;1424:5;1397:33;:::i;:::-;1349:87;;;;:::o;1459:303::-;;1579:3;1572:4;1564:6;1560:17;1556:27;1546:2;;1597:1;1594;1587:12;1546:2;1637:6;1624:20;1662:94;1752:3;1744:6;1737:4;1729:6;1725:17;1662:94;:::i;:::-;1653:103;;1536:226;;;;;:::o;1785:303::-;;1905:3;1898:4;1890:6;1886:17;1882:27;1872:2;;1923:1;1920;1913:12;1872:2;1963:6;1950:20;1988:94;2078:3;2070:6;2063:4;2055:6;2051:17;1988:94;:::i;:::-;1979:103;;1862:226;;;;;:::o;2094:133::-;;2175:6;2162:20;2153:29;;2191:30;2215:5;2191:30;:::i;:::-;2143:84;;;;:::o;2233:137::-;;2318:6;2312:13;2303:22;;2334:30;2358:5;2334:30;:::i;:::-;2293:77;;;;:::o;2376:139::-;;2460:6;2447:20;2438:29;;2476:33;2503:5;2476:33;:::i;:::-;2428:87;;;;:::o;2521:143::-;;2609:6;2603:13;2594:22;;2625:33;2652:5;2625:33;:::i;:::-;2584:80;;;;:::o;2670:262::-;;2778:2;2766:9;2757:7;2753:23;2749:32;2746:2;;;2794:1;2791;2784:12;2746:2;2837:1;2862:53;2907:7;2898:6;2887:9;2883:22;2862:53;:::i;:::-;2852:63;;2808:117;2736:196;;;;:::o;2938:401::-;;;3060:2;3048:9;3039:7;3035:23;3031:32;3028:2;;;3076:1;3073;3066:12;3028:2;3119:1;3144:53;3189:7;3180:6;3169:9;3165:22;3144:53;:::i;:::-;3134:63;;3090:117;3246:2;3272:50;3314:7;3305:6;3294:9;3290:22;3272:50;:::i;:::-;3262:60;;3217:115;3018:321;;;;;:::o;3345:407::-;;;3470:2;3458:9;3449:7;3445:23;3441:32;3438:2;;;3486:1;3483;3476:12;3438:2;3529:1;3554:53;3599:7;3590:6;3579:9;3575:22;3554:53;:::i;:::-;3544:63;;3500:117;3656:2;3682:53;3727:7;3718:6;3707:9;3703:22;3682:53;:::i;:::-;3672:63;;3627:118;3428:324;;;;;:::o;3758:693::-;;;3933:2;3921:9;3912:7;3908:23;3904:32;3901:2;;;3949:1;3946;3939:12;3901:2;4020:1;4009:9;4005:17;3992:31;4050:18;4042:6;4039:30;4036:2;;;4082:1;4079;4072:12;4036:2;4110:78;4180:7;4171:6;4160:9;4156:22;4110:78;:::i;:::-;4100:88;;3963:235;4265:2;4254:9;4250:18;4237:32;4296:18;4288:6;4285:30;4282:2;;;4328:1;4325;4318:12;4282:2;4356:78;4426:7;4417:6;4406:9;4402:22;4356:78;:::i;:::-;4346:88;;4208:236;3891:560;;;;;:::o;4457:838::-;;;;4649:2;4637:9;4628:7;4624:23;4620:32;4617:2;;;4665:1;4662;4655:12;4617:2;4736:1;4725:9;4721:17;4708:31;4766:18;4758:6;4755:30;4752:2;;;4798:1;4795;4788:12;4752:2;4826:78;4896:7;4887:6;4876:9;4872:22;4826:78;:::i;:::-;4816:88;;4679:235;4981:2;4970:9;4966:18;4953:32;5012:18;5004:6;5001:30;4998:2;;;5044:1;5041;5034:12;4998:2;5072:78;5142:7;5133:6;5122:9;5118:22;5072:78;:::i;:::-;5062:88;;4924:236;5199:2;5225:53;5270:7;5261:6;5250:9;5246:22;5225:53;:::i;:::-;5215:63;;5170:118;4607:688;;;;;:::o;5301:278::-;;5417:2;5405:9;5396:7;5392:23;5388:32;5385:2;;;5433:1;5430;5423:12;5385:2;5476:1;5501:61;5554:7;5545:6;5534:9;5530:22;5501:61;:::i;:::-;5491:71;;5447:125;5375:204;;;;:::o;5585:262::-;;5693:2;5681:9;5672:7;5668:23;5664:32;5661:2;;;5709:1;5706;5699:12;5661:2;5752:1;5777:53;5822:7;5813:6;5802:9;5798:22;5777:53;:::i;:::-;5767:63;;5723:117;5651:196;;;;:::o;5853:284::-;;5972:2;5960:9;5951:7;5947:23;5943:32;5940:2;;;5988:1;5985;5978:12;5940:2;6031:1;6056:64;6112:7;6103:6;6092:9;6088:22;6056:64;:::i;:::-;6046:74;;6002:128;5930:207;;;;:::o;6143:407::-;;;6268:2;6256:9;6247:7;6243:23;6239:32;6236:2;;;6284:1;6281;6274:12;6236:2;6327:1;6352:53;6397:7;6388:6;6377:9;6373:22;6352:53;:::i;:::-;6342:63;;6298:117;6454:2;6480:53;6525:7;6516:6;6505:9;6501:22;6480:53;:::i;:::-;6470:63;;6425:118;6226:324;;;;;:::o;6556:692::-;;;;;6712:3;6700:9;6691:7;6687:23;6683:33;6680:2;;;6729:1;6726;6719:12;6680:2;6772:1;6797:53;6842:7;6833:6;6822:9;6818:22;6797:53;:::i;:::-;6787:63;;6743:117;6899:2;6925:53;6970:7;6961:6;6950:9;6946:22;6925:53;:::i;:::-;6915:63;;6870:118;7027:2;7053:53;7098:7;7089:6;7078:9;7074:22;7053:53;:::i;:::-;7043:63;;6998:118;7155:2;7181:50;7223:7;7214:6;7203:9;7199:22;7181:50;:::i;:::-;7171:60;;7126:115;6670:578;;;;;;;:::o;7254:295::-;;7402:104;7502:3;7494:6;7402:104;:::i;:::-;7538:4;7533:3;7529:14;7515:28;;7392:157;;;;:::o;7555:108::-;7632:24;7650:5;7632:24;:::i;:::-;7627:3;7620:37;7610:53;;:::o;7669:118::-;7756:24;7774:5;7756:24;:::i;:::-;7751:3;7744:37;7734:53;;:::o;7861:964::-;;8067:83;8144:5;8067:83;:::i;:::-;8166:115;8274:6;8269:3;8166:115;:::i;:::-;8159:122;;8305:85;8384:5;8305:85;:::i;:::-;8413:7;8444:1;8429:371;8454:6;8451:1;8448:13;8429:371;;;8530:6;8524:13;8557:121;8674:3;8659:13;8557:121;:::i;:::-;8550:128;;8701:89;8783:6;8701:89;:::i;:::-;8691:99;;8489:311;8476:1;8473;8469:9;8464:14;;8429:371;;;8433:14;8816:3;8809:10;;8043:782;;;;;;;:::o;8831:109::-;8912:21;8927:5;8912:21;:::i;:::-;8907:3;8900:34;8890:50;;:::o;8946:373::-;;9078:38;9110:5;9078:38;:::i;:::-;9132:88;9213:6;9208:3;9132:88;:::i;:::-;9125:95;;9229:52;9274:6;9269:3;9262:4;9255:5;9251:16;9229:52;:::i;:::-;9306:6;9301:3;9297:16;9290:23;;9054:265;;;;;:::o;9325:364::-;;9441:39;9474:5;9441:39;:::i;:::-;9496:71;9560:6;9555:3;9496:71;:::i;:::-;9489:78;;9576:52;9621:6;9616:3;9609:4;9602:5;9598:16;9576:52;:::i;:::-;9653:29;9675:6;9653:29;:::i;:::-;9648:3;9644:39;9637:46;;9417:272;;;;;:::o;9695:370::-;;9858:67;9922:2;9917:3;9858:67;:::i;:::-;9851:74;;9955:34;9951:1;9946:3;9942:11;9935:55;10021:8;10016:2;10011:3;10007:12;10000:30;10056:2;10051:3;10047:12;10040:19;;9841:224;;;:::o;10071:324::-;;10234:67;10298:2;10293:3;10234:67;:::i;:::-;10227:74;;10331:28;10327:1;10322:3;10318:11;10311:49;10386:2;10381:3;10377:12;10370:19;;10217:178;;;:::o;10401:370::-;;10564:67;10628:2;10623:3;10564:67;:::i;:::-;10557:74;;10661:34;10657:1;10652:3;10648:11;10641:55;10727:8;10722:2;10717:3;10713:12;10706:30;10762:2;10757:3;10753:12;10746:19;;10547:224;;;:::o;10777:321::-;;10940:67;11004:2;10999:3;10940:67;:::i;:::-;10933:74;;11037:25;11033:1;11028:3;11024:11;11017:46;11089:2;11084:3;11080:12;11073:19;;10923:175;;;:::o;11104:370::-;;11267:67;11331:2;11326:3;11267:67;:::i;:::-;11260:74;;11364:34;11360:1;11355:3;11351:11;11344:55;11430:8;11425:2;11420:3;11416:12;11409:30;11465:2;11460:3;11456:12;11449:19;;11250:224;;;:::o;11480:379::-;;11643:67;11707:2;11702:3;11643:67;:::i;:::-;11636:74;;11740:34;11736:1;11731:3;11727:11;11720:55;11806:17;11801:2;11796:3;11792:12;11785:39;11850:2;11845:3;11841:12;11834:19;;11626:233;;;:::o;11865:318::-;;12028:67;12092:2;12087:3;12028:67;:::i;:::-;12021:74;;12125:22;12121:1;12116:3;12112:11;12105:43;12174:2;12169:3;12165:12;12158:19;;12011:172;;;:::o;12189:369::-;;12352:67;12416:2;12411:3;12352:67;:::i;:::-;12345:74;;12449:34;12445:1;12440:3;12436:11;12429:55;12515:7;12510:2;12505:3;12501:12;12494:29;12549:2;12544:3;12540:12;12533:19;;12335:223;;;:::o;12564:330::-;;12727:67;12791:2;12786:3;12727:67;:::i;:::-;12720:74;;12824:34;12820:1;12815:3;12811:11;12804:55;12885:2;12880:3;12876:12;12869:19;;12710:184;;;:::o;12900:327::-;;13063:67;13127:2;13122:3;13063:67;:::i;:::-;13056:74;;13160:31;13156:1;13151:3;13147:11;13140:52;13218:2;13213:3;13209:12;13202:19;;13046:181;;;:::o;13233:321::-;;13396:67;13460:2;13455:3;13396:67;:::i;:::-;13389:74;;13493:25;13489:1;13484:3;13480:11;13473:46;13545:2;13540:3;13536:12;13529:19;;13379:175;;;:::o;13560:374::-;;13723:67;13787:2;13782:3;13723:67;:::i;:::-;13716:74;;13820:34;13816:1;13811:3;13807:11;13800:55;13886:12;13881:2;13876:3;13872:12;13865:34;13925:2;13920:3;13916:12;13909:19;;13706:228;;;:::o;13940:366::-;;14103:67;14167:2;14162:3;14103:67;:::i;:::-;14096:74;;14200:34;14196:1;14191:3;14187:11;14180:55;14266:4;14261:2;14256:3;14252:12;14245:26;14297:2;14292:3;14288:12;14281:19;;14086:220;;;:::o;14376:508::-;14521:4;14516:3;14512:14;14610:4;14603:5;14599:16;14593:23;14629:63;14686:4;14681:3;14677:14;14663:12;14629:63;:::i;:::-;14536:166;14785:4;14778:5;14774:16;14768:23;14804:63;14861:4;14856:3;14852:14;14838:12;14804:63;:::i;:::-;14712:165;14490:394;;;:::o;14890:108::-;14967:24;14985:5;14967:24;:::i;:::-;14962:3;14955:37;14945:53;;:::o;15004:118::-;15091:24;15109:5;15091:24;:::i;:::-;15086:3;15079:37;15069:53;;:::o;15128:271::-;;15280:93;15369:3;15360:6;15280:93;:::i;:::-;15273:100;;15390:3;15383:10;;15262:137;;;;:::o;15405:222::-;;15536:2;15525:9;15521:18;15513:26;;15549:71;15617:1;15606:9;15602:17;15593:6;15549:71;:::i;:::-;15503:124;;;;:::o;15633:442::-;;15820:2;15809:9;15805:18;15797:26;;15833:71;15901:1;15890:9;15886:17;15877:6;15833:71;:::i;:::-;15914:72;15982:2;15971:9;15967:18;15958:6;15914:72;:::i;:::-;15996;16064:2;16053:9;16049:18;16040:6;15996:72;:::i;:::-;15787:288;;;;;;:::o;16081:332::-;;16240:2;16229:9;16225:18;16217:26;;16253:71;16321:1;16310:9;16306:17;16297:6;16253:71;:::i;:::-;16334:72;16402:2;16391:9;16387:18;16378:6;16334:72;:::i;:::-;16207:206;;;;;:::o;16419:489::-;;16658:2;16647:9;16643:18;16635:26;;16707:9;16701:4;16697:20;16693:1;16682:9;16678:17;16671:47;16735:166;16896:4;16887:6;16735:166;:::i;:::-;16727:174;;16625:283;;;;:::o;16914:210::-;;17039:2;17028:9;17024:18;17016:26;;17052:65;17114:1;17103:9;17099:17;17090:6;17052:65;:::i;:::-;17006:118;;;;:::o;17130:313::-;;17281:2;17270:9;17266:18;17258:26;;17330:9;17324:4;17320:20;17316:1;17305:9;17301:17;17294:47;17358:78;17431:4;17422:6;17358:78;:::i;:::-;17350:86;;17248:195;;;;:::o;17449:419::-;;17653:2;17642:9;17638:18;17630:26;;17702:9;17696:4;17692:20;17688:1;17677:9;17673:17;17666:47;17730:131;17856:4;17730:131;:::i;:::-;17722:139;;17620:248;;;:::o;17874:419::-;;18078:2;18067:9;18063:18;18055:26;;18127:9;18121:4;18117:20;18113:1;18102:9;18098:17;18091:47;18155:131;18281:4;18155:131;:::i;:::-;18147:139;;18045:248;;;:::o;18299:419::-;;18503:2;18492:9;18488:18;18480:26;;18552:9;18546:4;18542:20;18538:1;18527:9;18523:17;18516:47;18580:131;18706:4;18580:131;:::i;:::-;18572:139;;18470:248;;;:::o;18724:419::-;;18928:2;18917:9;18913:18;18905:26;;18977:9;18971:4;18967:20;18963:1;18952:9;18948:17;18941:47;19005:131;19131:4;19005:131;:::i;:::-;18997:139;;18895:248;;;:::o;19149:419::-;;19353:2;19342:9;19338:18;19330:26;;19402:9;19396:4;19392:20;19388:1;19377:9;19373:17;19366:47;19430:131;19556:4;19430:131;:::i;:::-;19422:139;;19320:248;;;:::o;19574:419::-;;19778:2;19767:9;19763:18;19755:26;;19827:9;19821:4;19817:20;19813:1;19802:9;19798:17;19791:47;19855:131;19981:4;19855:131;:::i;:::-;19847:139;;19745:248;;;:::o;19999:419::-;;20203:2;20192:9;20188:18;20180:26;;20252:9;20246:4;20242:20;20238:1;20227:9;20223:17;20216:47;20280:131;20406:4;20280:131;:::i;:::-;20272:139;;20170:248;;;:::o;20424:419::-;;20628:2;20617:9;20613:18;20605:26;;20677:9;20671:4;20667:20;20663:1;20652:9;20648:17;20641:47;20705:131;20831:4;20705:131;:::i;:::-;20697:139;;20595:248;;;:::o;20849:419::-;;21053:2;21042:9;21038:18;21030:26;;21102:9;21096:4;21092:20;21088:1;21077:9;21073:17;21066:47;21130:131;21256:4;21130:131;:::i;:::-;21122:139;;21020:248;;;:::o;21274:419::-;;21478:2;21467:9;21463:18;21455:26;;21527:9;21521:4;21517:20;21513:1;21502:9;21498:17;21491:47;21555:131;21681:4;21555:131;:::i;:::-;21547:139;;21445:248;;;:::o;21699:419::-;;21903:2;21892:9;21888:18;21880:26;;21952:9;21946:4;21942:20;21938:1;21927:9;21923:17;21916:47;21980:131;22106:4;21980:131;:::i;:::-;21972:139;;21870:248;;;:::o;22124:419::-;;22328:2;22317:9;22313:18;22305:26;;22377:9;22371:4;22367:20;22363:1;22352:9;22348:17;22341:47;22405:131;22531:4;22405:131;:::i;:::-;22397:139;;22295:248;;;:::o;22549:419::-;;22753:2;22742:9;22738:18;22730:26;;22802:9;22796:4;22792:20;22788:1;22777:9;22773:17;22766:47;22830:131;22956:4;22830:131;:::i;:::-;22822:139;;22720:248;;;:::o;22974:222::-;;23105:2;23094:9;23090:18;23082:26;;23118:71;23186:1;23175:9;23171:17;23162:6;23118:71;:::i;:::-;23072:124;;;;:::o;23202:320::-;;23355:2;23344:9;23340:18;23332:26;;23368:71;23436:1;23425:9;23421:17;23412:6;23368:71;:::i;:::-;23449:66;23511:2;23500:9;23496:18;23487:6;23449:66;:::i;:::-;23322:200;;;;;:::o;23528:283::-;;23594:2;23588:9;23578:19;;23636:4;23628:6;23624:17;23743:6;23731:10;23728:22;23707:18;23695:10;23692:34;23689:62;23686:2;;;23754:18;;:::i;:::-;23686:2;23794:10;23790:2;23783:22;23568:243;;;;:::o;23817:311::-;;23984:18;23976:6;23973:30;23970:2;;;24006:18;;:::i;:::-;23970:2;24056:4;24048:6;24044:17;24036:25;;24116:4;24110;24106:15;24098:23;;23899:229;;;:::o;24134:311::-;;24301:18;24293:6;24290:30;24287:2;;;24323:18;;:::i;:::-;24287:2;24373:4;24365:6;24361:17;24353:25;;24433:4;24427;24423:15;24415:23;;24216:229;;;:::o;24451:161::-;;24570:3;24562:11;;24600:4;24595:3;24591:14;24583:22;;24552:60;;;:::o;24618:143::-;;24748:5;24742:12;24732:22;;24721:40;;;:::o;24767:98::-;;24852:5;24846:12;24836:22;;24825:40;;;:::o;24871:99::-;;24957:5;24951:12;24941:22;;24930:40;;;:::o;24976:142::-;;25107:4;25102:3;25098:14;25090:22;;25080:38;;;:::o;25124:213::-;;25286:6;25281:3;25274:19;25326:4;25321:3;25317:14;25302:29;;25264:73;;;;:::o;25343:147::-;;25481:3;25466:18;;25456:34;;;;:::o;25496:169::-;;25614:6;25609:3;25602:19;25654:4;25649:3;25645:14;25630:29;;25592:73;;;;:::o;25671:305::-;;25730:20;25748:1;25730:20;:::i;:::-;25725:25;;25764:20;25782:1;25764:20;:::i;:::-;25759:25;;25918:1;25850:66;25846:74;25843:1;25840:81;25837:2;;;25924:18;;:::i;:::-;25837:2;25968:1;25965;25961:9;25954:16;;25715:261;;;;:::o;25982:185::-;;26039:20;26057:1;26039:20;:::i;:::-;26034:25;;26073:20;26091:1;26073:20;:::i;:::-;26068:25;;26112:1;26102:2;;26117:18;;:::i;:::-;26102:2;26159:1;26156;26152:9;26147:14;;26024:143;;;;:::o;26173:848::-;;;26265:6;26256:15;;26289:5;26280:14;;26303:712;26324:1;26314:8;26311:15;26303:712;;;26419:4;26414:3;26410:14;26404:4;26401:24;26398:2;;;26428:18;;:::i;:::-;26398:2;26478:1;26468:8;26464:16;26461:2;;;26893:4;26886:5;26882:16;26873:25;;26461:2;26943:4;26937;26933:15;26925:23;;26973:32;26996:8;26973:32;:::i;:::-;26961:44;;26303:712;;;26246:775;;;;;;;:::o;27027:285::-;;27111:23;27129:4;27111:23;:::i;:::-;27103:31;;27155:27;27173:8;27155:27;:::i;:::-;27143:39;;27201:104;27238:66;27228:8;27222:4;27201:104;:::i;:::-;27192:113;;27093:219;;;;:::o;27318:1073::-;;27563:8;27553:2;;27584:1;27575:10;;27586:5;;27553:2;27612:4;27602:2;;27629:1;27620:10;;27631:5;;27602:2;27698:4;27746:1;27741:27;;;;27782:1;27777:191;;;;27691:277;;27741:27;27759:1;27750:10;;27761:5;;;27777:191;27822:3;27812:8;27809:17;27806:2;;;27829:18;;:::i;:::-;27806:2;27878:8;27875:1;27871:16;27862:25;;27913:3;27906:5;27903:14;27900:2;;;27920:18;;:::i;:::-;27900:2;27953:5;;;27691:277;;28077:2;28067:8;28064:16;28058:3;28052:4;28049:13;28045:36;28027:2;28017:8;28014:16;28009:2;28003:4;28000:12;27996:35;27980:111;27977:2;;;28133:8;28127:4;28123:19;28114:28;;28168:3;28161:5;28158:14;28155:2;;;28175:18;;:::i;:::-;28155:2;28208:5;;27977:2;28248:42;28286:3;28276:8;28270:4;28267:1;28248:42;:::i;:::-;28233:57;;;;28322:4;28317:3;28313:14;28306:5;28303:25;28300:2;;;28331:18;;:::i;:::-;28300:2;28380:4;28373:5;28369:16;28360:25;;27378:1013;;;;;;:::o;28397:348::-;;28460:20;28478:1;28460:20;:::i;:::-;28455:25;;28494:20;28512:1;28494:20;:::i;:::-;28489:25;;28682:1;28614:66;28610:74;28607:1;28604:81;28599:1;28592:9;28585:17;28581:105;28578:2;;;28689:18;;:::i;:::-;28578:2;28737:1;28734;28730:9;28719:20;;28445:300;;;;:::o;28751:191::-;;28811:20;28829:1;28811:20;:::i;:::-;28806:25;;28845:20;28863:1;28845:20;:::i;:::-;28840:25;;28884:1;28881;28878:8;28875:2;;;28889:18;;:::i;:::-;28875:2;28934:1;28931;28927:9;28919:17;;28796:146;;;;:::o;28948:96::-;;29014:24;29032:5;29014:24;:::i;:::-;29003:35;;28993:51;;;:::o;29050:90::-;;29127:5;29120:13;29113:21;29102:32;;29092:48;;;:::o;29146:126::-;;29223:42;29216:5;29212:54;29201:65;;29191:81;;;:::o;29278:77::-;;29344:5;29333:16;;29323:32;;;:::o;29361:307::-;29429:1;29439:113;29453:6;29450:1;29447:13;29439:113;;;29538:1;29533:3;29529:11;29523:18;29519:1;29514:3;29510:11;29503:39;29475:2;29472:1;29468:10;29463:15;;29439:113;;;29570:6;29567:1;29564:13;29561:2;;;29650:1;29641:6;29636:3;29632:16;29625:27;29561:2;29410:258;;;;:::o;29674:233::-;;29736:24;29754:5;29736:24;:::i;:::-;29727:33;;29782:66;29775:5;29772:77;29769:2;;;29852:18;;:::i;:::-;29769:2;29899:1;29892:5;29888:13;29881:20;;29717:190;;;:::o;29913:180::-;29961:77;29958:1;29951:88;30058:4;30055:1;30048:15;30082:4;30079:1;30072:15;30099:180;30147:77;30144:1;30137:88;30244:4;30241:1;30234:15;30268:4;30265:1;30258:15;30285:180;30333:77;30330:1;30323:88;30430:4;30427:1;30420:15;30454:4;30451:1;30444:15;30471:102;;30563:2;30559:7;30554:2;30547:5;30543:14;30539:28;30529:38;;30519:54;;;:::o;30579:102::-;;30668:5;30665:1;30661:13;30640:34;;30630:51;;;:::o;30687:122::-;30760:24;30778:5;30760:24;:::i;:::-;30753:5;30750:35;30740:2;;30799:1;30796;30789:12;30740:2;30730:79;:::o;30815:116::-;30885:21;30900:5;30885:21;:::i;:::-;30878:5;30875:32;30865:2;;30921:1;30918;30911:12;30865:2;30855:76;:::o;30937:122::-;31010:24;31028:5;31010:24;:::i;:::-;31003:5;31000:35;30990:2;;31049:1;31046;31039:12;30990:2;30980:79;:::o
Swarm Source
ipfs://a3734e393e38c0221527a97352ce6b34eacf995377bac1a51d62c5004e956ef8
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.