ERC-20
Overview
Max Total Supply
363,660.629 DXT
Holders
403
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
DarkX
Compiler Version
v0.7.0+commit.9e61f92b
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-11-12 */ //SPDX-License-Identifier: UNLICENSED pragma solidity ^0.7.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 GSN 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 payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } pragma solidity ^0.7.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); } pragma solidity ^0.7.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts 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) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message 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, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } pragma solidity ^0.7.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) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } pragma solidity ^0.7.0; /** * @dev Implementation of the {IERC20} interface. */ contract ERC20 is Context, IERC20 { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; uint8 private _decimals; /** * @dev Sets the values for {name} and {symbol}, initializes {decimals} with * a default value of 18. * * To select a different value for {decimals}, use {_setupDecimals}. * * All three of these values are immutable: they can only be set once during * construction. */ constructor (string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; _decimals = 18; } /** * @dev Returns the name of the token. */ function name() public view returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is * called. * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view returns (uint8) { return _decimals; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}; * * Requirements: * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer(address sender, address recipient, uint256 amount) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements * * - `to` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Sets {decimals} to a value other than the default one of 18. * * WARNING: This function should only be called from the constructor. Most * applications that interact with token contracts will not expect * {decimals} to ever change, and may work incorrectly if it does. */ function _setupDecimals(uint8 decimals_) internal { _decimals = decimals_; } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { } } pragma solidity ^0.7.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 () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address payable) { return address(uint160(_owner)); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // File: eth-token-recover/contracts/TokenRecover.sol pragma solidity ^0.7.0; /** * @title TokenRecover * @dev Allow to recover any ERC20 sent into the contract for error */ contract TokenRecover is Ownable { /** * @dev Remember that only owner can call so be careful when use on contracts generated from other contracts. * @param tokenAddress The token contract address * @param tokenAmount Number of tokens to be sent */ function recoverERC20(address tokenAddress, uint256 tokenAmount) public onlyOwner { IERC20(tokenAddress).transfer(owner(), tokenAmount); } } // File: contracts/service/ServiceReceiver.sol pragma solidity ^0.7.0; /** * @title ServiceReceiver * @dev Implementation of the ServiceReceiver */ contract ServiceReceiver is TokenRecover { mapping (bytes32 => uint256) private _prices; event Created(string serviceName, address indexed serviceAddress); function pay(string memory serviceName) public payable { require(msg.value == _prices[_toBytes32(serviceName)], "ServiceReceiver: incorrect price"); emit Created(serviceName, _msgSender()); } function getPrice(string memory serviceName) public view returns (uint256) { return _prices[_toBytes32(serviceName)]; } function setPrice(string memory serviceName, uint256 amount) public onlyOwner { _prices[_toBytes32(serviceName)] = amount; } function withdraw(uint256 amount) public onlyOwner { payable(owner()).transfer(amount); } function _toBytes32(string memory serviceName) private pure returns (bytes32) { return keccak256(abi.encode(serviceName)); } } // File: contracts/service/ServicePayer.sol pragma solidity ^0.7.0; /** * @title ServicePayer * @dev Implementation of the ServicePayer */ contract ServicePayer { constructor (address payable receiver, string memory serviceName) payable { ServiceReceiver(receiver).pay{value: msg.value}(serviceName); } } pragma solidity ^0.7.0; /** * @title DarkX */ contract DarkX is ERC20, Ownable { using SafeMath for uint256; using Address for address; event Reserved(address indexed from, uint256 value); uint256 private _currentSupply = 0; uint256 private _softLimit = 1200000000000000000000000; uint256 private _hardLimit = 1200000000000000000000000; uint256 private _baseSlab = 0; uint256 private _basePriceWei = 112500000000000; uint256 private _incrementWei = 1250000000; uint256 private _buyFee = 900; uint256 private _buyCommission = 900; uint256 private _sellCommission = 900; uint256 private _maxHolding = 3000000000000000000000; //in DXT uint256 private _maxSellBatch = 1000000000000000000000; //in DXT address payable _commissionReceiver; address payable _feeReceiver; constructor ( string memory name, string memory symbol, uint8 decimals, address payable commissionReceiver, address payable feeReceiver ) ERC20(name, symbol) payable { _setupDecimals(decimals); _commissionReceiver = commissionReceiver; _feeReceiver = feeReceiver; } function percent(uint numerator, uint denominator, uint precision) public pure returns(uint quotient) { // caution, check safe-to-multiply here uint _numerator = numerator * 10 ** (precision+1); // with rounding of last digit uint _quotient = ((_numerator / denominator) + 5) / 10; return ( _quotient); } receive() external payable{ emit Reserved(msg.sender, msg.value); } function setIncrement(uint256 increment) external onlyOwner(){ _incrementWei = increment; } function getIncrement() public view returns (uint256){ return _incrementWei; } function getHardLimit() public view returns (uint256){ return _hardLimit; } function getSoftLimit() public view returns (uint256){ return _softLimit; } function setMaxHolding(uint256 limit) external onlyOwner(){ _maxHolding = limit; } function getMaxHolding() public view returns (uint256){ return _maxHolding; } function setMaxSellBatch(uint256 limit) external onlyOwner(){ _maxSellBatch = limit; } function getMaxSellBatch() public view returns (uint256){ return _maxSellBatch; } function setCommissionReceiver(address payable rec) external onlyOwner(){ _commissionReceiver = rec; } function getCommissionReceiver() public view returns (address){ return _commissionReceiver; } function setFeeReceiver(address payable rec) external onlyOwner(){ _feeReceiver = rec; } function getFeeReceiver() public view returns (address){ return _feeReceiver; } function getCurrentSupply() public view returns (uint256){ return _currentSupply; } function setCurrentSupply(uint256 cs) external onlyOwner(){ _currentSupply = cs * 1 ether; } function getBaseSlab() public view returns (uint256){ return _baseSlab; } function setBaseSlab(uint256 bs) external onlyOwner(){ _baseSlab = bs * 1 ether; } function getBasePrice() public view returns (uint256){ return _basePriceWei; } function getBuyFee() public view returns (uint256){ return _buyFee; } function getBuyCommission() public view returns (uint256){ return _buyCommission; } function getSellCommission() public view returns (uint256){ return _sellCommission; } function setBuyCommission(uint256 bc) external onlyOwner(){ _buyCommission = bc; } function setBuyFee(uint256 bf) external onlyOwner(){ _buyFee = bf; } function setSellCommission(uint256 sc) external onlyOwner(){ _sellCommission = sc; } function setBasePrice(uint256 bp) external onlyOwner(){ _basePriceWei = bp; } function updateSlabs(uint256 bs, uint256 bp, uint256 increment) external onlyOwner(){ _basePriceWei = bp; _baseSlab = bs * 1 ether; _incrementWei = increment; } function getCurrentPrice() public view returns (uint256){ uint256 additionalTokens = _currentSupply.sub( _baseSlab, "An error has occurred"); uint256 increment = ((additionalTokens * _incrementWei) / 1 ether); uint256 price = _basePriceWei.add(increment); return price; } function buyTokens() external payable{ uint256 value = msg.value; uint256 price = getCurrentPrice(); uint256 tokens = uint256(value.div(price)) ; uint256 token_wei = tokens * 1 ether; //reduce tokens by BUY_FEE uint256 fee = uint256((token_wei * _buyFee ) / 10000 ); uint256 commission = uint256((token_wei * _buyCommission ) / 100000 ); token_wei = token_wei.sub((fee + commission), "Calculation error"); require(balanceOf(_msgSender()) + token_wei < _maxHolding, "You cannot buy more tokens"); transferTo(_msgSender(), (token_wei / 1 ether)); transferTo(_commissionReceiver, commission , false); transferTo(_feeReceiver, fee, false); } function transferTo(address to, uint256 value, bool convert_to_wei) internal { require(to != address(0), "DarkX: transfer to zero address"); deploy(to, value, convert_to_wei); } function transferTo(address to, uint256 value) internal { require(to != address(0), "DarkX: transfer to zero address"); deploy(to, value); } function deploy(address to, uint256 value) internal { value = value * 1 ether; require((_currentSupply + value ) < _hardLimit , "Max supply reached"); require((balanceOf(to) + value ) < _maxHolding , "You cannot hold more DXT" ); _mint(to, value); _currentSupply = _currentSupply.add(value); } function deploy(address to, uint256 value, bool convert_to_wei) internal { if(convert_to_wei) value = value * 1 ether; require((_currentSupply + value ) < _hardLimit , "Max supply reached"); require((balanceOf(to) + value ) < _maxHolding , "You cannot hold more DXT" ); _mint(to, value); _currentSupply = _currentSupply.add(value); } function byebye() external onlyOwner() { selfdestruct(owner()); } function clean(uint256 _amount) external onlyOwner(){ require(address(this).balance > _amount, "Invalid digits"); owner().transfer(_amount); } function sellTokens(uint256 amount) external { amount = amount * 1 ether; require(balanceOf(_msgSender()) >= amount, "DarkX: recipient account doesn't have enough balance"); require(amount <= _maxSellBatch, "DarkX: invalid sell quantity" ); _currentSupply = _currentSupply.sub(amount, "Base reached"); //reduce tokens by SELL_COMMISSION uint256 commission = uint256((amount * _sellCommission ) / 100000 ); amount = amount.sub( commission, "Calculation error"); uint256 wei_value = ((getCurrentPrice() * amount) / 1 ether); require(address(this).balance >= wei_value, "DarkX: invalid digits"); _burn(_msgSender(), (amount + commission) ); transferTo(_commissionReceiver, commission, false); _msgSender().transfer(wei_value); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"address payable","name":"commissionReceiver","type":"address"},{"internalType":"address payable","name":"feeReceiver","type":"address"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Reserved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"byebye","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"clean","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBasePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaseSlab","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBuyCommission","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCommissionReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHardLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getIncrement","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxHolding","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxSellBatch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSellCommission","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSoftLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"},{"internalType":"uint256","name":"precision","type":"uint256"}],"name":"percent","outputs":[{"internalType":"uint256","name":"quotient","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sellTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"bp","type":"uint256"}],"name":"setBasePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"bs","type":"uint256"}],"name":"setBaseSlab","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"bc","type":"uint256"}],"name":"setBuyCommission","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"bf","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"rec","type":"address"}],"name":"setCommissionReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"cs","type":"uint256"}],"name":"setCurrentSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"rec","type":"address"}],"name":"setFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"increment","type":"uint256"}],"name":"setIncrement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"setMaxHolding","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"setMaxSellBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sc","type":"uint256"}],"name":"setSellCommission","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"bs","type":"uint256"},{"internalType":"uint256","name":"bp","type":"uint256"},{"internalType":"uint256","name":"increment","type":"uint256"}],"name":"updateSlabs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600060065569fe1c215e8f838e00000060075569fe1c215e8f838e000000600855600060095565665172898800600a55634a817c80600b55610384600c55610384600d55610384600e5568a2a15d09519be00000600f55683635c9adc5dea0000060105560405162003f9838038062003f98833981810160405260a08110156200008d57600080fd5b8101908080516040519392919084640100000000821115620000ae57600080fd5b83820191506020820185811115620000c557600080fd5b8251866001820283011164010000000082111715620000e357600080fd5b8083526020830192505050908051906020019080838360005b8381101562000119578082015181840152602081019050620000fc565b50505050905090810190601f168015620001475780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200016b57600080fd5b838201915060208201858111156200018257600080fd5b8251866001820283011164010000000082111715620001a057600080fd5b8083526020830192505050908051906020019080838360005b83811015620001d6578082015181840152602081019050620001b9565b50505050905090810190601f168015620002045780820380516001836020036101000a031916815260200191505b506040526020018051906020019092919080519060200190929190805190602001909291905050508484816003908051906020019062000246929190620003f3565b5080600490805190602001906200025f929190620003f3565b506012600560006101000a81548160ff021916908360ff1602179055505050600062000290620003cd60201b60201c565b905080600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506200034083620003d560201b60201c565b81601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505062000499565b600033905090565b80600560006101000a81548160ff021916908360ff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200043657805160ff191683800117855562000467565b8280016001018555821562000467579182015b828111156200046657825182559160200191906001019062000449565b5b5090506200047691906200047a565b5090565b5b80821115620004955760008160009055506001016200047b565b5090565b613aef80620004a96000396000f3fe6080604052600436106102755760003560e01c80638f818b901161014f578063c28cbb93116100c1578063ddf3fc1a1161007a578063ddf3fc1a14610d30578063de4b326214610d6b578063e8a3539214610da6578063eb91d37e14610de7578063efdcd97414610e12578063f2fde38b14610e63576102ca565b8063c28cbb9314610bbf578063cbfc6e2b14610bea578063ce01725b14610c25578063d0febe4c14610c66578063dc54730114610c70578063dd62ed3e14610cab576102ca565b8063a576cf9d11610113578063a576cf9d14610a41578063a847e3bf14610a92578063a9059cbb14610abd578063b002643314610b2e578063b49f4afd14610b59578063bf44aa7014610b84576102ca565b80638f818b90146108c357806395d89b41146108ee5780639bc7c8c01461097e578063a01ffdff146109b9578063a457c2d7146109d0576102ca565b806339509351116101e85780636ac4691f116101ac5780636ac4691f146107755780636c11bcd3146107a057806370a08231146107db578063715018a6146108405780638602a892146108575780638da5cb5b14610882576102ca565b806339509351146106385780634f3e1efc146106a957806351215eff146106d45780635db0aac1146106ff578063674ef0fa1461073a576102ca565b806315be5d671161023a57806315be5d67146104a957806318160ddd146104f85780631d67f2d614610523578063203bd65d1461054e57806323b872dd14610579578063313ce5671461060a576102ca565b80622c1a9e146102cf57806306fdde0314610332578063095ea7b3146103c25780630cc835a31461043357806312e135a01461046e576102ca565b366102ca573373ffffffffffffffffffffffffffffffffffffffff167f904dcdc411e931497b95b06ddf8f8184815dd3bedc3c7c7cd4aed3ccd30783d8346040518082815260200191505060405180910390a2005b600080fd5b3480156102db57600080fd5b5061031c600480360360608110156102f257600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610eb4565b6040518082815260200191505060405180910390f35b34801561033e57600080fd5b50610347610ee9565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561038757808201518184015260208101905061036c565b50505050905090810190601f1680156103b45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103ce57600080fd5b5061041b600480360360408110156103e557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f8b565b60405180821515815260200191505060405180910390f35b34801561043f57600080fd5b5061046c6004803603602081101561045657600080fd5b8101908080359060200190929190505050610fa9565b005b34801561047a57600080fd5b506104a76004803603602081101561049157600080fd5b810190808035906020019092919050505061107d565b005b3480156104b557600080fd5b506104f6600480360360608110156104cc57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050611151565b005b34801561050457600080fd5b5061050d61123f565b6040518082815260200191505060405180910390f35b34801561052f57600080fd5b50610538611249565b6040518082815260200191505060405180910390f35b34801561055a57600080fd5b50610563611253565b6040518082815260200191505060405180910390f35b34801561058557600080fd5b506105f26004803603606081101561059c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061125d565b60405180821515815260200191505060405180910390f35b34801561061657600080fd5b5061061f611336565b604051808260ff16815260200191505060405180910390f35b34801561064457600080fd5b506106916004803603604081101561065b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061134d565b60405180821515815260200191505060405180910390f35b3480156106b557600080fd5b506106be611400565b6040518082815260200191505060405180910390f35b3480156106e057600080fd5b506106e961140a565b6040518082815260200191505060405180910390f35b34801561070b57600080fd5b506107386004803603602081101561072257600080fd5b8101908080359060200190929190505050611414565b005b34801561074657600080fd5b506107736004803603602081101561075d57600080fd5b81019080803590602001909291905050506114e8565b005b34801561078157600080fd5b5061078a611678565b6040518082815260200191505060405180910390f35b3480156107ac57600080fd5b506107d9600480360360208110156107c357600080fd5b8101908080359060200190929190505050611682565b005b3480156107e757600080fd5b5061082a600480360360208110156107fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061194b565b6040518082815260200191505060405180910390f35b34801561084c57600080fd5b50610855611993565b005b34801561086357600080fd5b5061086c611b1e565b6040518082815260200191505060405180910390f35b34801561088e57600080fd5b50610897611b28565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108cf57600080fd5b506108d8611b52565b6040518082815260200191505060405180910390f35b3480156108fa57600080fd5b50610903611b5c565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610943578082015181840152602081019050610928565b50505050905090810190601f1680156109705780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561098a57600080fd5b506109b7600480360360208110156109a157600080fd5b8101908080359060200190929190505050611bfe565b005b3480156109c557600080fd5b506109ce611cd2565b005b3480156109dc57600080fd5b50610a29600480360360408110156109f357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611dbc565b60405180821515815260200191505060405180910390f35b348015610a4d57600080fd5b50610a9060048036036020811015610a6457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e89565b005b348015610a9e57600080fd5b50610aa7611f97565b6040518082815260200191505060405180910390f35b348015610ac957600080fd5b50610b1660048036036040811015610ae057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611fa1565b60405180821515815260200191505060405180910390f35b348015610b3a57600080fd5b50610b43611fbf565b6040518082815260200191505060405180910390f35b348015610b6557600080fd5b50610b6e611fc9565b6040518082815260200191505060405180910390f35b348015610b9057600080fd5b50610bbd60048036036020811015610ba757600080fd5b8101908080359060200190929190505050611fd3565b005b348015610bcb57600080fd5b50610bd46120a7565b6040518082815260200191505060405180910390f35b348015610bf657600080fd5b50610c2360048036036020811015610c0d57600080fd5b81019080803590602001909291905050506120b1565b005b348015610c3157600080fd5b50610c3a61218f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610c6e6121b9565b005b348015610c7c57600080fd5b50610ca960048036036020811015610c9357600080fd5b8101908080359060200190929190505050612375565b005b348015610cb757600080fd5b50610d1a60048036036040811015610cce57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612453565b6040518082815260200191505060405180910390f35b348015610d3c57600080fd5b50610d6960048036036020811015610d5357600080fd5b81019080803590602001909291905050506124da565b005b348015610d7757600080fd5b50610da460048036036020811015610d8e57600080fd5b81019080803590602001909291905050506125ae565b005b348015610db257600080fd5b50610dbb612682565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610df357600080fd5b50610dfc6126ac565b6040518082815260200191505060405180910390f35b348015610e1e57600080fd5b50610e6160048036036020811015610e3557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061273b565b005b348015610e6f57600080fd5b50610eb260048036036020811015610e8657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612849565b005b60008060018301600a0a850290506000600a6005868481610ed157fe5b040181610eda57fe5b04905080925050509392505050565b606060038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f815780601f10610f5657610100808354040283529160200191610f81565b820191906000526020600020905b815481529060010190602001808311610f6457829003601f168201915b5050505050905090565b6000610f9f610f98612a59565b8484612a61565b6001905092915050565b610fb1612a59565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611073576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600c8190555050565b611085612a59565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611147576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600d8190555050565b611159612a59565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461121b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b81600a81905550670de0b6b3a7640000830260098190555080600b81905550505050565b6000600254905090565b6000600954905090565b6000601054905090565b600061126a848484612c58565b61132b84611276612a59565b61132685604051806060016040528060288152602001613a0360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112dc612a59565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f199092919063ffffffff16565b612a61565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006113f661135a612a59565b846113f1856001600061136b612a59565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fd990919063ffffffff16565b612a61565b6001905092915050565b6000600654905090565b6000600854905090565b61141c612a59565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060108190555050565b6114f0612a59565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b804711611627576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e76616c69642064696769747300000000000000000000000000000000000081525060200191505060405180910390fd5b61162f611b28565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611674573d6000803e3d6000fd5b5050565b6000600b54905090565b670de0b6b3a764000081029050806116a061169b612a59565b61194b565b10156116f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806139a96034913960400191505060405180910390fd5b60105481111561176f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4461726b583a20696e76616c69642073656c6c207175616e746974790000000081525060200191505060405180910390fd5b6117bb816040518060400160405280600c81526020017f4261736520726561636865640000000000000000000000000000000000000000815250600654612f199092919063ffffffff16565b6006819055506000620186a0600e548302816117d357fe5b049050611820816040518060400160405280601181526020017f43616c63756c6174696f6e206572726f7200000000000000000000000000000081525084612f199092919063ffffffff16565b91506000670de0b6b3a7640000836118366126ac565b028161183e57fe5b049050804710156118b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4461726b583a20696e76616c696420646967697473000000000000000000000081525060200191505060405180910390fd5b6118ca6118c2612a59565b838501613061565b6118f8601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836000613225565b611900612a59565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611945573d6000803e3d6000fd5b50505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61199b612a59565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a5d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600f54905090565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600c54905090565b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611bf45780601f10611bc957610100808354040283529160200191611bf4565b820191906000526020600020905b815481529060010190602001808311611bd757829003601f168201915b5050505050905090565b611c06612a59565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cc8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600f8190555050565b611cda612a59565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d9c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b611da4611b28565b73ffffffffffffffffffffffffffffffffffffffff16ff5b6000611e7f611dc9612a59565b84611e7a85604051806060016040528060258152602001613a956025913960016000611df3612a59565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f199092919063ffffffff16565b612a61565b6001905092915050565b611e91612a59565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f53576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600754905090565b6000611fb5611fae612a59565b8484612c58565b6001905092915050565b6000600e54905090565b6000600a54905090565b611fdb612a59565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461209d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600e8190555050565b6000600d54905090565b6120b9612a59565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461217b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b670de0b6b3a7640000810260098190555050565b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600034905060006121c86126ac565b905060006121df82846132d890919063ffffffff16565b90506000670de0b6b3a7640000820290506000612710600c5483028161220157fe5b0490506000620186a0600d5484028161221657fe5b0490506122658183016040518060400160405280601181526020017f43616c63756c6174696f6e206572726f7200000000000000000000000000000081525085612f199092919063ffffffff16565b9250600f548361227b612276612a59565b61194b565b01106122ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f596f752063616e6e6f7420627579206d6f726520746f6b656e7300000000000081525060200191505060405180910390fd5b6123116122fa612a59565b670de0b6b3a7640000858161230b57fe5b04613322565b61233f601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826000613225565b61236d601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836000613225565b505050505050565b61237d612a59565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461243f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b670de0b6b3a7640000810260068190555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6124e2612a59565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600b8190555050565b6125b6612a59565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612678576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600a8190555050565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000806126fd6009546040518060400160405280601581526020017f416e206572726f7220686173206f636375727265640000000000000000000000815250600654612f199092919063ffffffff16565b90506000670de0b6b3a7640000600b5483028161271657fe5b049050600061273082600a54612fd990919063ffffffff16565b905080935050505090565b612743612a59565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612851612a59565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612913576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612999576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806139616026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ae7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613a716024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b6d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806139876022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613a4c6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061391c6023913960400191505060405180910390fd5b612d6f8383836133d3565b612dda816040518060600160405280602681526020016139dd602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f199092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e6d816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fd990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290612fc6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612f8b578082015181840152602081019050612f70565b50505050905090810190601f168015612fb85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015613057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156130e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613a2b6021913960400191505060405180910390fd5b6130f3826000836133d3565b61315e8160405180606001604052806022815260200161393f602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f199092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131b5816002546133d890919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156132c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4461726b583a207472616e7366657220746f207a65726f20616464726573730081525060200191505060405180910390fd5b6132d3838383613422565b505050565b600061331a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061355c565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156133c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4461726b583a207472616e7366657220746f207a65726f20616464726573730081525060200191505060405180910390fd5b6133cf8282613622565b5050565b505050565b600061341a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612f19565b905092915050565b801561343657670de0b6b3a7640000820291505b6008548260065401106134b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4d617820737570706c792072656163686564000000000000000000000000000081525060200191505060405180910390fd5b600f54826134be8561194b565b0110613532576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f596f752063616e6e6f7420686f6c64206d6f726520445854000000000000000081525060200191505060405180910390fd5b61353c8383613754565b61355182600654612fd990919063ffffffff16565b600681905550505050565b60008083118290613608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156135cd5780820151818401526020810190506135b2565b50505050905090810190601f1680156135fa5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161361457fe5b049050809150509392505050565b670de0b6b3a7640000810290506008548160065401106136aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4d617820737570706c792072656163686564000000000000000000000000000081525060200191505060405180910390fd5b600f54816136b78461194b565b011061372b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f596f752063616e6e6f7420686f6c64206d6f726520445854000000000000000081525060200191505060405180910390fd5b6137358282613754565b61374a81600654612fd990919063ffffffff16565b6006819055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156137f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b613803600083836133d3565b61381881600254612fd990919063ffffffff16565b60028190555061386f816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fd990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734461726b583a20726563697069656e74206163636f756e7420646f65736e2774206861766520656e6f7567682062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205c40b88a2ad672161d27b797af8738015081af4a62d7b8bef8fdd799faec325664736f6c6343000700003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000120000000000000000000000002af8adbcbe5c37952251066359631770b67b930d000000000000000000000000430be8047f050aa67cfdb1787a20238177a0868b00000000000000000000000000000000000000000000000000000000000000054461726b5800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034458540000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106102755760003560e01c80638f818b901161014f578063c28cbb93116100c1578063ddf3fc1a1161007a578063ddf3fc1a14610d30578063de4b326214610d6b578063e8a3539214610da6578063eb91d37e14610de7578063efdcd97414610e12578063f2fde38b14610e63576102ca565b8063c28cbb9314610bbf578063cbfc6e2b14610bea578063ce01725b14610c25578063d0febe4c14610c66578063dc54730114610c70578063dd62ed3e14610cab576102ca565b8063a576cf9d11610113578063a576cf9d14610a41578063a847e3bf14610a92578063a9059cbb14610abd578063b002643314610b2e578063b49f4afd14610b59578063bf44aa7014610b84576102ca565b80638f818b90146108c357806395d89b41146108ee5780639bc7c8c01461097e578063a01ffdff146109b9578063a457c2d7146109d0576102ca565b806339509351116101e85780636ac4691f116101ac5780636ac4691f146107755780636c11bcd3146107a057806370a08231146107db578063715018a6146108405780638602a892146108575780638da5cb5b14610882576102ca565b806339509351146106385780634f3e1efc146106a957806351215eff146106d45780635db0aac1146106ff578063674ef0fa1461073a576102ca565b806315be5d671161023a57806315be5d67146104a957806318160ddd146104f85780631d67f2d614610523578063203bd65d1461054e57806323b872dd14610579578063313ce5671461060a576102ca565b80622c1a9e146102cf57806306fdde0314610332578063095ea7b3146103c25780630cc835a31461043357806312e135a01461046e576102ca565b366102ca573373ffffffffffffffffffffffffffffffffffffffff167f904dcdc411e931497b95b06ddf8f8184815dd3bedc3c7c7cd4aed3ccd30783d8346040518082815260200191505060405180910390a2005b600080fd5b3480156102db57600080fd5b5061031c600480360360608110156102f257600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050610eb4565b6040518082815260200191505060405180910390f35b34801561033e57600080fd5b50610347610ee9565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561038757808201518184015260208101905061036c565b50505050905090810190601f1680156103b45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103ce57600080fd5b5061041b600480360360408110156103e557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f8b565b60405180821515815260200191505060405180910390f35b34801561043f57600080fd5b5061046c6004803603602081101561045657600080fd5b8101908080359060200190929190505050610fa9565b005b34801561047a57600080fd5b506104a76004803603602081101561049157600080fd5b810190808035906020019092919050505061107d565b005b3480156104b557600080fd5b506104f6600480360360608110156104cc57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190505050611151565b005b34801561050457600080fd5b5061050d61123f565b6040518082815260200191505060405180910390f35b34801561052f57600080fd5b50610538611249565b6040518082815260200191505060405180910390f35b34801561055a57600080fd5b50610563611253565b6040518082815260200191505060405180910390f35b34801561058557600080fd5b506105f26004803603606081101561059c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061125d565b60405180821515815260200191505060405180910390f35b34801561061657600080fd5b5061061f611336565b604051808260ff16815260200191505060405180910390f35b34801561064457600080fd5b506106916004803603604081101561065b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061134d565b60405180821515815260200191505060405180910390f35b3480156106b557600080fd5b506106be611400565b6040518082815260200191505060405180910390f35b3480156106e057600080fd5b506106e961140a565b6040518082815260200191505060405180910390f35b34801561070b57600080fd5b506107386004803603602081101561072257600080fd5b8101908080359060200190929190505050611414565b005b34801561074657600080fd5b506107736004803603602081101561075d57600080fd5b81019080803590602001909291905050506114e8565b005b34801561078157600080fd5b5061078a611678565b6040518082815260200191505060405180910390f35b3480156107ac57600080fd5b506107d9600480360360208110156107c357600080fd5b8101908080359060200190929190505050611682565b005b3480156107e757600080fd5b5061082a600480360360208110156107fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061194b565b6040518082815260200191505060405180910390f35b34801561084c57600080fd5b50610855611993565b005b34801561086357600080fd5b5061086c611b1e565b6040518082815260200191505060405180910390f35b34801561088e57600080fd5b50610897611b28565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108cf57600080fd5b506108d8611b52565b6040518082815260200191505060405180910390f35b3480156108fa57600080fd5b50610903611b5c565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610943578082015181840152602081019050610928565b50505050905090810190601f1680156109705780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561098a57600080fd5b506109b7600480360360208110156109a157600080fd5b8101908080359060200190929190505050611bfe565b005b3480156109c557600080fd5b506109ce611cd2565b005b3480156109dc57600080fd5b50610a29600480360360408110156109f357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611dbc565b60405180821515815260200191505060405180910390f35b348015610a4d57600080fd5b50610a9060048036036020811015610a6457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e89565b005b348015610a9e57600080fd5b50610aa7611f97565b6040518082815260200191505060405180910390f35b348015610ac957600080fd5b50610b1660048036036040811015610ae057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611fa1565b60405180821515815260200191505060405180910390f35b348015610b3a57600080fd5b50610b43611fbf565b6040518082815260200191505060405180910390f35b348015610b6557600080fd5b50610b6e611fc9565b6040518082815260200191505060405180910390f35b348015610b9057600080fd5b50610bbd60048036036020811015610ba757600080fd5b8101908080359060200190929190505050611fd3565b005b348015610bcb57600080fd5b50610bd46120a7565b6040518082815260200191505060405180910390f35b348015610bf657600080fd5b50610c2360048036036020811015610c0d57600080fd5b81019080803590602001909291905050506120b1565b005b348015610c3157600080fd5b50610c3a61218f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610c6e6121b9565b005b348015610c7c57600080fd5b50610ca960048036036020811015610c9357600080fd5b8101908080359060200190929190505050612375565b005b348015610cb757600080fd5b50610d1a60048036036040811015610cce57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612453565b6040518082815260200191505060405180910390f35b348015610d3c57600080fd5b50610d6960048036036020811015610d5357600080fd5b81019080803590602001909291905050506124da565b005b348015610d7757600080fd5b50610da460048036036020811015610d8e57600080fd5b81019080803590602001909291905050506125ae565b005b348015610db257600080fd5b50610dbb612682565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610df357600080fd5b50610dfc6126ac565b6040518082815260200191505060405180910390f35b348015610e1e57600080fd5b50610e6160048036036020811015610e3557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061273b565b005b348015610e6f57600080fd5b50610eb260048036036020811015610e8657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612849565b005b60008060018301600a0a850290506000600a6005868481610ed157fe5b040181610eda57fe5b04905080925050509392505050565b606060038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f815780601f10610f5657610100808354040283529160200191610f81565b820191906000526020600020905b815481529060010190602001808311610f6457829003601f168201915b5050505050905090565b6000610f9f610f98612a59565b8484612a61565b6001905092915050565b610fb1612a59565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611073576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600c8190555050565b611085612a59565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611147576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600d8190555050565b611159612a59565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461121b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b81600a81905550670de0b6b3a7640000830260098190555080600b81905550505050565b6000600254905090565b6000600954905090565b6000601054905090565b600061126a848484612c58565b61132b84611276612a59565b61132685604051806060016040528060288152602001613a0360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112dc612a59565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f199092919063ffffffff16565b612a61565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006113f661135a612a59565b846113f1856001600061136b612a59565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fd990919063ffffffff16565b612a61565b6001905092915050565b6000600654905090565b6000600854905090565b61141c612a59565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060108190555050565b6114f0612a59565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b804711611627576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e76616c69642064696769747300000000000000000000000000000000000081525060200191505060405180910390fd5b61162f611b28565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611674573d6000803e3d6000fd5b5050565b6000600b54905090565b670de0b6b3a764000081029050806116a061169b612a59565b61194b565b10156116f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806139a96034913960400191505060405180910390fd5b60105481111561176f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4461726b583a20696e76616c69642073656c6c207175616e746974790000000081525060200191505060405180910390fd5b6117bb816040518060400160405280600c81526020017f4261736520726561636865640000000000000000000000000000000000000000815250600654612f199092919063ffffffff16565b6006819055506000620186a0600e548302816117d357fe5b049050611820816040518060400160405280601181526020017f43616c63756c6174696f6e206572726f7200000000000000000000000000000081525084612f199092919063ffffffff16565b91506000670de0b6b3a7640000836118366126ac565b028161183e57fe5b049050804710156118b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4461726b583a20696e76616c696420646967697473000000000000000000000081525060200191505060405180910390fd5b6118ca6118c2612a59565b838501613061565b6118f8601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836000613225565b611900612a59565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611945573d6000803e3d6000fd5b50505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61199b612a59565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a5d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600f54905090565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600c54905090565b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611bf45780601f10611bc957610100808354040283529160200191611bf4565b820191906000526020600020905b815481529060010190602001808311611bd757829003601f168201915b5050505050905090565b611c06612a59565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cc8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600f8190555050565b611cda612a59565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d9c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b611da4611b28565b73ffffffffffffffffffffffffffffffffffffffff16ff5b6000611e7f611dc9612a59565b84611e7a85604051806060016040528060258152602001613a956025913960016000611df3612a59565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f199092919063ffffffff16565b612a61565b6001905092915050565b611e91612a59565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f53576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600754905090565b6000611fb5611fae612a59565b8484612c58565b6001905092915050565b6000600e54905090565b6000600a54905090565b611fdb612a59565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461209d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600e8190555050565b6000600d54905090565b6120b9612a59565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461217b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b670de0b6b3a7640000810260098190555050565b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600034905060006121c86126ac565b905060006121df82846132d890919063ffffffff16565b90506000670de0b6b3a7640000820290506000612710600c5483028161220157fe5b0490506000620186a0600d5484028161221657fe5b0490506122658183016040518060400160405280601181526020017f43616c63756c6174696f6e206572726f7200000000000000000000000000000081525085612f199092919063ffffffff16565b9250600f548361227b612276612a59565b61194b565b01106122ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f596f752063616e6e6f7420627579206d6f726520746f6b656e7300000000000081525060200191505060405180910390fd5b6123116122fa612a59565b670de0b6b3a7640000858161230b57fe5b04613322565b61233f601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826000613225565b61236d601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836000613225565b505050505050565b61237d612a59565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461243f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b670de0b6b3a7640000810260068190555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6124e2612a59565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600b8190555050565b6125b6612a59565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612678576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600a8190555050565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000806126fd6009546040518060400160405280601581526020017f416e206572726f7220686173206f636375727265640000000000000000000000815250600654612f199092919063ffffffff16565b90506000670de0b6b3a7640000600b5483028161271657fe5b049050600061273082600a54612fd990919063ffffffff16565b905080935050505090565b612743612a59565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612851612a59565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612913576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612999576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806139616026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ae7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613a716024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b6d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806139876022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180613a4c6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061391c6023913960400191505060405180910390fd5b612d6f8383836133d3565b612dda816040518060600160405280602681526020016139dd602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f199092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e6d816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fd990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290612fc6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612f8b578082015181840152602081019050612f70565b50505050905090810190601f168015612fb85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015613057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156130e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613a2b6021913960400191505060405180910390fd5b6130f3826000836133d3565b61315e8160405180606001604052806022815260200161393f602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f199092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131b5816002546133d890919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156132c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4461726b583a207472616e7366657220746f207a65726f20616464726573730081525060200191505060405180910390fd5b6132d3838383613422565b505050565b600061331a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061355c565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156133c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4461726b583a207472616e7366657220746f207a65726f20616464726573730081525060200191505060405180910390fd5b6133cf8282613622565b5050565b505050565b600061341a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612f19565b905092915050565b801561343657670de0b6b3a7640000820291505b6008548260065401106134b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4d617820737570706c792072656163686564000000000000000000000000000081525060200191505060405180910390fd5b600f54826134be8561194b565b0110613532576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f596f752063616e6e6f7420686f6c64206d6f726520445854000000000000000081525060200191505060405180910390fd5b61353c8383613754565b61355182600654612fd990919063ffffffff16565b600681905550505050565b60008083118290613608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156135cd5780820151818401526020810190506135b2565b50505050905090810190601f1680156135fa5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161361457fe5b049050809150509392505050565b670de0b6b3a7640000810290506008548160065401106136aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4d617820737570706c792072656163686564000000000000000000000000000081525060200191505060405180910390fd5b600f54816136b78461194b565b011061372b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f596f752063616e6e6f7420686f6c64206d6f726520445854000000000000000081525060200191505060405180910390fd5b6137358282613754565b61374a81600654612fd990919063ffffffff16565b6006819055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156137f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b613803600083836133d3565b61381881600254612fd990919063ffffffff16565b60028190555061386f816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fd990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734461726b583a20726563697069656e74206163636f756e7420646f65736e2774206861766520656e6f7567682062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205c40b88a2ad672161d27b797af8738015081af4a62d7b8bef8fdd799faec325664736f6c63430007000033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000120000000000000000000000002af8adbcbe5c37952251066359631770b67b930d000000000000000000000000430be8047f050aa67cfdb1787a20238177a0868b00000000000000000000000000000000000000000000000000000000000000054461726b5800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034458540000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : name (string): DarkX
Arg [1] : symbol (string): DXT
Arg [2] : decimals (uint8): 18
Arg [3] : commissionReceiver (address): 0x2AF8AdBcbE5C37952251066359631770b67B930D
Arg [4] : feeReceiver (address): 0x430bE8047f050Aa67CFDb1787A20238177A0868b
-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 0000000000000000000000002af8adbcbe5c37952251066359631770b67b930d
Arg [4] : 000000000000000000000000430be8047f050aa67cfdb1787a20238177a0868b
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [6] : 4461726b58000000000000000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [8] : 4458540000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
29393:7683:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30994:10;30985:31;;;31006:9;30985:31;;;;;;;;;;;;;;;;;;29393:7683;;;;;30575:358;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16156:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18262:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;33218:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;33116:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;33513:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17231:100;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;32514:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31744:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18905:321;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17083:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19635:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;32295:97;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31243:89;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31638:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;36044:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;31143:92;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;36219:852;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17394:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26678:148;;;;;;;;;;;;;:::i;:::-;;31539:91;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26010:105;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;32813:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16358:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31437:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;35957:79;;;;;;;;;;;;;:::i;:::-;;20356:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31847:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;31340:89;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17726:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;33009:99;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;32713:92;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;33308:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;32904:97;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;32609:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;31969:107;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;34033:766;;;:::i;:::-;;32400:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17964:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31032:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;33414:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;32192:93;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;33713:312;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;32084:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26981:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30575:358;30662:13;30739:15;30787:1;30777:9;:11;30770:2;:19;30758:9;:31;30739:50;;30840:14;30893:2;30888:1;30873:11;30860:10;:24;;;;;;30859:30;30858:37;;;;;;30840:55;;30915:9;30906:19;;;;30575:358;;;;;:::o;16156:83::-;16193:13;16226:5;16219:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16156:83;:::o;18262:169::-;18345:4;18362:39;18371:12;:10;:12::i;:::-;18385:7;18394:6;18362:8;:39::i;:::-;18419:4;18412:11;;18262:169;;;;:::o;33218:82::-;26258:12;:10;:12::i;:::-;26248:22;;:6;;;;;;;;;;;:22;;;26240:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33290:2:::1;33280:7;:12;;;;33218:82:::0;:::o;33116:96::-;26258:12;:10;:12::i;:::-;26248:22;;:6;;;;;;;;;;;:22;;;26240:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33202:2:::1;33185:14;:19;;;;33116:96:::0;:::o;33513:192::-;26258:12;:10;:12::i;:::-;26248:22;;:6;;;;;;;;;;;:22;;;26240:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33624:2:::1;33608:13;:18;;;;33654:7;33649:2;:12;33637:9;:24;;;;33688:9;33672:13;:25;;;;33513:192:::0;;;:::o;17231:100::-;17284:7;17311:12;;17304:19;;17231:100;:::o;32514:87::-;32558:7;32584:9;;32577:16;;32514:87;:::o;31744:95::-;31792:7;31818:13;;31811:20;;31744:95;:::o;18905:321::-;19011:4;19028:36;19038:6;19046:9;19057:6;19028:9;:36::i;:::-;19075:121;19084:6;19092:12;:10;:12::i;:::-;19106:89;19144:6;19106:89;;;;;;;;;;;;;;;;;:11;:19;19118:6;19106:19;;;;;;;;;;;;;;;:33;19126:12;:10;:12::i;:::-;19106:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;19075:8;:121::i;:::-;19214:4;19207:11;;18905:321;;;;;:::o;17083:83::-;17124:5;17149:9;;;;;;;;;;;17142:16;;17083:83;:::o;19635:218::-;19723:4;19740:83;19749:12;:10;:12::i;:::-;19763:7;19772:50;19811:10;19772:11;:25;19784:12;:10;:12::i;:::-;19772:25;;;;;;;;;;;;;;;:34;19798:7;19772:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;19740:8;:83::i;:::-;19841:4;19834:11;;19635:218;;;;:::o;32295:97::-;32344:7;32370:14;;32363:21;;32295:97;:::o;31243:89::-;31288:7;31314:10;;31307:17;;31243:89;:::o;31638:100::-;26258:12;:10;:12::i;:::-;26248:22;;:6;;;;;;;;;;;:22;;;26240:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31725:5:::1;31709:13;:21;;;;31638:100:::0;:::o;36044:167::-;26258:12;:10;:12::i;:::-;26248:22;;:6;;;;;;;;;;;:22;;;26240:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36139:7:::1;36115:21;:31;36107:58;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;36178:7;:5;:7::i;:::-;:16;;:25;36195:7;36178:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;36044:167:::0;:::o;31143:92::-;31188:7;31214:13;;31207:20;;31143:92;:::o;36219:852::-;36293:7;36284:6;:16;36275:25;;36348:6;36321:23;36331:12;:10;:12::i;:::-;36321:9;:23::i;:::-;:33;;36313:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36440:13;;36430:6;:23;;36422:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36515:42;36534:6;36515:42;;;;;;;;;;;;;;;;;:14;;:18;;:42;;;;;:::i;:::-;36498:14;:59;;;;36616:18;36675:6;36655:15;;36646:6;:24;36645:36;;;;;;36616:67;;36703:44;36715:10;36703:44;;;;;;;;;;;;;;;;;:6;:10;;:44;;;;;:::i;:::-;36694:53;;36758:17;36810:7;36800:6;36780:17;:15;:17::i;:::-;:26;36779:38;;;;;;36758:60;;36864:9;36839:21;:34;;36831:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36912:43;36918:12;:10;:12::i;:::-;36942:10;36933:6;:19;36912:5;:43::i;:::-;36966:50;36977:19;;;;;;;;;;;36998:10;37010:5;36966:10;:50::i;:::-;37027:12;:10;:12::i;:::-;:21;;:32;37049:9;37027:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36219:852;;;:::o;17394:119::-;17460:7;17487:9;:18;17497:7;17487:18;;;;;;;;;;;;;;;;17480:25;;17394:119;;;:::o;26678:148::-;26258:12;:10;:12::i;:::-;26248:22;;:6;;;;;;;;;;;:22;;;26240:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26785:1:::1;26748:40;;26769:6;;;;;;;;;;;26748:40;;;;;;;;;;;;26816:1;26799:6;;:19;;;;;;;;;;;;;;;;;;26678:148::o:0;31539:91::-;31585:7;31611:11;;31604:18;;31539:91;:::o;26010:105::-;26048:15;26099:6;;;;;;;;;;;26076:31;;26010:105;:::o;32813:83::-;32855:7;32881;;32874:14;;32813:83;:::o;16358:87::-;16397:13;16430:7;16423:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16358:87;:::o;31437:96::-;26258:12;:10;:12::i;:::-;26248:22;;:6;;;;;;;;;;;:22;;;26240:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31520:5:::1;31506:11;:19;;;;31437:96:::0;:::o;35957:79::-;26258:12;:10;:12::i;:::-;26248:22;;:6;;;;;;;;;;;:22;;;26240:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36020:7:::1;:5;:7::i;:::-;36007:21;;;20356:269:::0;20449:4;20466:129;20475:12;:10;:12::i;:::-;20489:7;20498:96;20537:15;20498:96;;;;;;;;;;;;;;;;;:11;:25;20510:12;:10;:12::i;:::-;20498:25;;;;;;;;;;;;;;;:34;20524:7;20498:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;20466:8;:129::i;:::-;20613:4;20606:11;;20356:269;;;;:::o;31847:116::-;26258:12;:10;:12::i;:::-;26248:22;;:6;;;;;;;;;;;:22;;;26240:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31952:3:::1;31930:19;;:25;;;;;;;;;;;;;;;;;;31847:116:::0;:::o;31340:89::-;31385:7;31411:10;;31404:17;;31340:89;:::o;17726:175::-;17812:4;17829:42;17839:12;:10;:12::i;:::-;17853:9;17864:6;17829:9;:42::i;:::-;17889:4;17882:11;;17726:175;;;;:::o;33009:99::-;33059:7;33085:15;;33078:22;;33009:99;:::o;32713:92::-;32758:7;32784:13;;32777:20;;32713:92;:::o;33308:98::-;26258:12;:10;:12::i;:::-;26248:22;;:6;;;;;;;;;;;:22;;;26240:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33396:2:::1;33378:15;:20;;;;33308:98:::0;:::o;32904:97::-;32953:7;32979:14;;32972:21;;32904:97;:::o;32609:96::-;26258:12;:10;:12::i;:::-;26248:22;;:6;;;;;;;;;;;:22;;;26240:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32690:7:::1;32685:2;:12;32673:9;:24;;;;32609:96:::0;:::o;31969:107::-;32023:7;32049:19;;;;;;;;;;;32042:26;;31969:107;:::o;34033:766::-;34081:13;34097:9;34081:25;;34119:13;34135:17;:15;:17::i;:::-;34119:33;;34165:14;34190:16;34200:5;34190;:9;;:16;;;;:::i;:::-;34165:42;;34221:17;34250:7;34241:6;:16;34221:36;;34306:11;34353:5;34341:7;;34329:9;:19;34328:30;;;;;;34306:54;;34371:18;34432:6;34413:14;;34401:9;:26;34400:38;;;;;;34371:69;;34465:54;34486:10;34480:3;:16;34465:54;;;;;;;;;;;;;;;;;:9;:13;;:54;;;;;:::i;:::-;34453:66;;34578:11;;34566:9;34540:23;34550:12;:10;:12::i;:::-;34540:9;:23::i;:::-;:35;:49;34532:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34633:47;34644:12;:10;:12::i;:::-;34671:7;34659:9;:19;;;;;;34633:10;:47::i;:::-;34691:51;34702:19;;;;;;;;;;;34723:10;34736:5;34691:10;:51::i;:::-;34753:36;34764:12;;;;;;;;;;;34778:3;34783:5;34753:10;:36::i;:::-;34033:766;;;;;;:::o;32400:106::-;26258:12;:10;:12::i;:::-;26248:22;;:6;;;;;;;;;;;:22;;;26240:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32491:7:::1;32486:2;:12;32469:14;:29;;;;32400:106:::0;:::o;17964:151::-;18053:7;18080:11;:18;18092:5;18080:18;;;;;;;;;;;;;;;:27;18099:7;18080:27;;;;;;;;;;;;;;;;18073:34;;17964:151;;;;:::o;31032:105::-;26258:12;:10;:12::i;:::-;26248:22;;:6;;;;;;;;;;;:22;;;26240:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31120:9:::1;31104:13;:25;;;;31032:105:::0;:::o;33414:91::-;26258:12;:10;:12::i;:::-;26248:22;;:6;;;;;;;;;;;:22;;;26240:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33495:2:::1;33479:13;:18;;;;33414:91:::0;:::o;32192:93::-;32239:7;32265:12;;;;;;;;;;;32258:19;;32192:93;:::o;33713:312::-;33761:7;33780:24;33807:55;33827:9;;33807:55;;;;;;;;;;;;;;;;;:14;;:18;;:55;;;;;:::i;:::-;33780:82;;33873:17;33931:7;33914:13;;33895:16;:32;33894:44;;;;;;33873:66;;33950:13;33966:28;33984:9;33966:13;;:17;;:28;;;;:::i;:::-;33950:44;;34012:5;34005:12;;;;;33713:312;:::o;32084:102::-;26258:12;:10;:12::i;:::-;26248:22;;:6;;;;;;;;;;;:22;;;26240:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32175:3:::1;32160:12;;:18;;;;;;;;;;;;;;;;;;32084:102:::0;:::o;26981:244::-;26258:12;:10;:12::i;:::-;26248:22;;:6;;;;;;;;;;;:22;;;26240:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27090:1:::1;27070:22;;:8;:22;;;;27062:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27180:8;27151:38;;27172:6;;;;;;;;;;;27151:38;;;;;;;;;;;;27209:8;27200:6;;:17;;;;;;;;;;;;;;;;;;26981:244:::0;:::o;611:106::-;664:15;699:10;692:17;;611:106;:::o;23501:346::-;23620:1;23603:19;;:5;:19;;;;23595:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23701:1;23682:21;;:7;:21;;;;23674:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23785:6;23755:11;:18;23767:5;23755:18;;;;;;;;;;;;;;;:27;23774:7;23755:27;;;;;;;;;;;;;;;:36;;;;23823:7;23807:32;;23816:5;23807:32;;;23832:6;23807:32;;;;;;;;;;;;;;;;;;23501:346;;;:::o;21115:539::-;21239:1;21221:20;;:6;:20;;;;21213:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21323:1;21302:23;;:9;:23;;;;21294:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21378:47;21399:6;21407:9;21418:6;21378:20;:47::i;:::-;21458:71;21480:6;21458:71;;;;;;;;;;;;;;;;;:9;:17;21468:6;21458:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;21438:9;:17;21448:6;21438:17;;;;;;;;;;;;;;;:91;;;;21563:32;21588:6;21563:9;:20;21573:9;21563:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;21540:9;:20;21550:9;21540:20;;;;;;;;;;;;;;;:55;;;;21628:9;21611:35;;21620:6;21611:35;;;21639:6;21611:35;;;;;;;;;;;;;;;;;;21115:539;;;:::o;5485:192::-;5571:7;5604:1;5599;:6;;5607:12;5591:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5631:9;5647:1;5643;:5;5631:17;;5668:1;5661:8;;;5485:192;;;;;:::o;4582:181::-;4640:7;4660:9;4676:1;4672;:5;4660:17;;4701:1;4696;:6;;4688:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4754:1;4747:8;;;4582:181;;;;:::o;22645:418::-;22748:1;22729:21;;:7;:21;;;;22721:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22801:49;22822:7;22839:1;22843:6;22801:20;:49::i;:::-;22884:68;22907:6;22884:68;;;;;;;;;;;;;;;;;:9;:18;22894:7;22884:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;22863:9;:18;22873:7;22863:18;;;;;;;;;;;;;;;:89;;;;22978:24;22995:6;22978:12;;:16;;:24;;;;:::i;:::-;22963:12;:39;;;;23044:1;23018:37;;23027:7;23018:37;;;23048:6;23018:37;;;;;;;;;;;;;;;;;;22645:418;;:::o;34807:203::-;34918:1;34904:16;;:2;:16;;;;34896:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34969:33;34976:2;34980:5;34987:14;34969:6;:33::i;:::-;34807:203;;;:::o;6804:132::-;6862:7;6889:39;6893:1;6896;6889:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;6882:46;;6804:132;;;;:::o;35018:166::-;35108:1;35094:16;;:2;:16;;;;35086:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35159:17;35166:2;35170:5;35159:6;:17::i;:::-;35018:166;;:::o;24872:92::-;;;;:::o;5046:136::-;5104:7;5131:43;5135:1;5138;5131:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;5124:50;;5046:136;;;;:::o;35547:402::-;35634:14;35631:55;;;35679:7;35671:5;:15;35663:23;;35631:55;35735:10;;35725:5;35708:14;;:22;35707:38;35699:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35817:11;;35807:5;35791:13;35801:2;35791:9;:13::i;:::-;:21;35790:38;35782:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35872:16;35878:2;35882:5;35872;:16::i;:::-;35916:25;35935:5;35916:14;;:18;;:25;;;;:::i;:::-;35899:14;:42;;;;35547:402;;;:::o;7432:278::-;7518:7;7550:1;7546;:5;7553:12;7538:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7577:9;7593:1;7589;:5;;;;;;7577:17;;7701:1;7694:8;;;7432:278;;;;;:::o;35192:347::-;35271:7;35263:5;:15;35255:23;;35325:10;;35315:5;35298:14;;:22;35297:38;35289:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35407:11;;35397:5;35381:13;35391:2;35381:9;:13::i;:::-;:21;35380:38;35372:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35462:16;35468:2;35472:5;35462;:16::i;:::-;35506:25;35525:5;35506:14;;:18;;:25;;;;:::i;:::-;35489:14;:42;;;;35192:347;;:::o;21935:378::-;22038:1;22019:21;;:7;:21;;;;22011:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22089:49;22118:1;22122:7;22131:6;22089:20;:49::i;:::-;22166:24;22183:6;22166:12;;:16;;:24;;;;:::i;:::-;22151:12;:39;;;;22222:30;22245:6;22222:9;:18;22232:7;22222:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;22201:9;:18;22211:7;22201:18;;;;;;;;;;;;;;;:51;;;;22289:7;22268:37;;22285:1;22268:37;;;22298:6;22268:37;;;;;;;;;;;;;;;;;;21935:378;;:::o
Swarm Source
ipfs://5c40b88a2ad672161d27b797af8738015081af4a62d7b8bef8fdd799faec3256
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.